200系列PLC里的双字和浮点数怎么处理。

双字和浮点数在200系列里地址是相同的VD格式,但是使用时候有很大区别。例如触摸屏上建的双字VD100,到PLC里就成了浮点数,就会出现运算错误,PLC里还需要再处理一次吗?

钻石用户推荐最佳答案

VD100,本质上只是存储空间类型,是一个32位的2进制序列的存储容器,是地址空间。
你定义有符号长整型变量位于VD100,那么它存储的内容8000 0000到7FFF FFFF表示的数据范围是:--2,147,483,648到+2,147,483,647。若你定义实数变量位于VD100则表示的数的范围是:+1.175495E--38到+3.402823E+38 (正数)。尽管VD100中存储的2进制序列相同(计算机的存储),你定义的变量数据类型不同,所表示的数的大小是完全不同的(人的理解)。反过来,大小相同的两个数,你定义的数据类型不同,在计算机上存储可能完全不同。
举例说明以上内容:
1)VD100=2#1 01111110 000 0000 0000 0000 0000 0000=16#BF000000
若定义实数变量k =(VD100),则k= - 2^(2#0111 1110-127)*(2#1.000 0000 0000 0000 0000 000)=-0.5。
若定义为无符号长整型变量J=(VD100),则J=3204448256.
2)整数1与实数1.0完全相等。但在计算机上的存储完全不同。1赋值给int型变量,占用两个字节16#0001,若赋值给Dint型变量,则占用4个字节16#00 00 00 01,但1.0只能赋值给实数型变量,则存储结果是2#0 0111 1111 000 0000 0000 0000 0000 0000=16#3F 80 00 00。
    通信本身传递的是二进制序列,无关数的大小。这个二进制数必须在计算机内部(PC、ARM、MCU、PLC、嵌入式的触摸屏都是广义的计算机)结合变量类型来理解。
   你的问题应该是HMI上的变量类型定义与PLC不一致造成的。完全可以定义一致,自然也就用不到转换了。

提问者对于答案的评价:

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日 下午10:00
下一篇 2020年10月30日 下午10:00

相关推荐