scl中DWTOReal与DWTODint再DINTTOREAL数据为什么不一样?
最佳答案
BIT,BYTE,WORD,DOUBLEWORD是位组合类型的数据。
REAL,INT,DINT是数字型数据。
DINT是有符号32位数,DWORD是无符号32位数。一个双子内存中如果值16#FFFFFFFF
DINT_TO_REAL,首先DINT类型所占的4个字节类容如果为FFFFFFFF,那么它就是代表DINT类型的值为-1.执行DINT_TO_REAL后,值就变为REAL类型的-1.0.
首先,在
DWORD_TO_DINT仅仅拷贝数据,不改变任何位类存,DINT所占的内存中的4个字节值任然为16#FFFFFFFF即DINT类型值为-1
DWORD_TO_REAL仅仅拷贝数据,不改变任何位类存,REAL类型所占的4个字节类容仍然为16#FFFFFFFF具体是代表REAL类型的什么数字,需要你自己根据IEEE75432位浮点数的表示方法来解析(符号+阶码+尾数).根据这个规则算出来的REAL类型值
也就是在位数据类型和数字型据类型之间转换时,PLC仅仅是拷贝位内存。只有在数字型数据类型之间转换时,PLC才会根据IEEE标准对内存中的位进行改变。
提问者对于答案的评价:
谢谢你的指导。