s7.net写存储区

Bit  	=> 	bool
Byte 	=> 	byte
word 	=> 	ushort
DWord 	=> 	uint
Int 	=> 	short
DInt 	=> 	int
Real 	=> 	float
LReal 	=> 	double
String 	=> 	string

第一种:字符串写入

1、bool可以直接写

plc.Write("DB3.DBX4.0", false);

2、Dint双字可以直接写,4个字节,64位,默认int

plc.Write("DB3.DBD0", 211);//"数据块_2".Dint01

3、数据块中的Uint、Int、Word,都是单字,2个字节32位,必须C#转ushort无符号整数类型才能写入

ushort Uint01 = 12;
plc.Write("DB3.DBW262", Uint01);//"数据块_2".Uint01
short val13 = 123;
plc.Write("DB3.DBW520", val13);//"数据块_2".Int01
ushort val14 = 1234;
plc.Write("DB3.DBW1036", val14);//"数据块_2".word01

如果赋值的长度大于本身长度,会赋值0,会同步影响后面数据

3、float

double是8个字节64位

float是4个字节32位

写float不能直接用26.5这样的double数字

float在数据块里面定义为Real,监视位浮点数

decimal后面加m,float后面加f,double不加字母
                    double double01 = 25.5;
                    decimal decimal01 = 25.5m;
                    float float01 = 25.5f;
                    plc.Write("DB3.DBD1054", float01);//"数据块_2".float01

 

第二种:Write方法多参数写入

Write(DataType,db,startAddr,value,[bitAddr]);

                    //DB1.DBX0.0
                    plc.Write(DataType.DataBlock, 1, 0, false, 0);

                    //QW1   180
                    ushort uVal = 180;
                    plc.Write(DataType.Output, 0, 1, uVal);

 

第三种:Write(DataItem)    Write(DataItem[]) 一次性写多个值

                    DataItem di = new DataItem();
                    di.DataType = DataType.Memory;
                    di.DB = 0;
                    di.StartByteAdr = 0;
                    di.BitAdr = 3;
                    di.Value = true;

                    int iVal = 88;
                    DataItem di1 = new DataItem();
                    di1.DataType = DataType.DataBlock;
                    di1.DB = 1;
                    di1.StartByteAdr = 16;
                    di1.Value = iVal;
                    plc.Write(di,di1);

 

posted on 2025-03-15 10:42  张彦山  阅读(210)  评论(0)    收藏  举报