双字和浮点数在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