找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
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不一致造成的。完全可以定义一致,自然也就用不到转换了。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!