自己尝试读取PLC数据时发现PLC中的INT和WORD数据类型在读取时不正确,数值较小时正常,给负数时S7net读的值 是其对应的无符号值,例如PLC给3,上位机读取为253,请问怎么才能在读取时事先确定INT或WORD是有符号还是无符号呢?
1、C#语言声明一个unsigned int n存储这个数,这个数就是无符号数,声明一个int n存储这个数那么它就是有符号的。
2、转帖:PLC的事:
因数据类型的定义规范的存在,MWO被机器理解成的变量类型不一样,则所代表的数字大小不-样:
若定义为word类型,则MW0=W#16#8001=32769, 无关符号。
若定义为int类型,则MW0=W#16#8001=-32767, 为负数
MW0被机器识别为何种数据类型,则要看MW0参与了何种运算。例如参与比较、转换、整数运算、整数右移,则会被机器理解会int型数据,若参与字逻辑、字移位, 会被机器理解为word.
例如MW0=W#16#8001用move指令直接赋值给MD2,这里不涉及类型识别,则MD2= DW#16#00008001,则无论后续参与何种运算怎么样理解, MD2= +32769,若使用l _DI指令,将MW0赋值给MD2,则MD=DW#16
#FFF8001,该指令将MW0自动识别为int型数据。