找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
从你附图,我看到的是3个16位数据,应该是6个字节。不知道你说的12个字节,是什么意思?
通常,流量值是一个浮点数,32位单精度浮点数需要占用4个字节,可以分成2个字(MODBUS RTU保持性寄存器是字为单位)进行MODBUS RTU传输,然后将这两个字合并赋值给一个浮点型变量即可正确识别。
你的附图中,显然不是。而是对浮点数放大1000倍(即单位是0.001m3)整数化,而且把这个整数分成了3个字(6个节节)存在了保持性寄存器中,而且高字存在低地址编号的空间(大端存储,与西家PLC一致)。
以你读到的数据为例:01 10 01 B7 CA 33。实际流量应该是16#01 10 01 B7 CA 33/10#1000m3=1,168,259,926.579?m3
哪如何在PLC实现转换呢?PLC没有3个字的整数数据类型,最大也只是4个字节的双整数。浮点数只能与有符号DINT相互转换。因此建议:
1、把累计流量中16位、低16位这两个字,识别为一个无符号双整数UDINT,先转换为浮点数REAL,并乘以65536.0
2、把累计流量低16位,识别为无符号整数UINT,然后转换为实数Real。
3、把上述两个数相加,然后除以1000.0
这样就转换为一个4字节的浮点数了,直接可以在HMI定义实型变量对应了。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!