scl 中 DW TO REAL 与 DW TO DINT 再 DINT TO REAL 数据为什么不一样?

scl 中 DW TO REAL  与  DW TO DINT 再 DINT TO REAL 数据为什么不一样?

最佳答案

BIT,BYTE,WORD,DOUBLE WORD 是位组合类型的数据。
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 类型的什么数字,需要你 自己根据IEEE754 32位浮点数的表示方法来解析(符号+阶码+尾数).根据这个规则算出来的REAL类型值


也就是 在位数据类型和数字型据类型之间转换时,PLC 仅仅是拷贝位内存。只有在数字型数据类型之间转换时,PLC才会根据IEEE标准对内存中的位进行改变。

提问者对于答案的评价:
谢谢你的指导。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc216102.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年11月23日 下午4:24
下一篇 2017年11月23日

相关推荐