chenqiangme
工控小蚂蚁 天道酬勤
级别: 略有小成
精华主题: 0
发帖数量: 86 个
工控威望: 262 点
下载积分: 514 分
在线时间: 85(小时)
注册时间: 2007-08-28
最后登录: 2024-12-29
查看chenqiangme的 主题 / 回贴
楼主  发表于: 2020-03-04 22:22
大神们,智能仪表中收到IEEE-754标准的四个浮点字节,比如:D0 41;  D1  30;  D2 00 ;  D3 00
如何处理合并成一个字节。例如:0x41300000(11.0)
lvpretend
级别: 论坛先锋
精华主题: 0
发帖数量: 1264 个
工控威望: 1434 点
下载积分: 3699 分
在线时间: 324(小时)
注册时间: 2015-07-20
最后登录: 2024-11-29
查看lvpretend的 主题 / 回贴
1楼  发表于: 2020-03-07 09:44
你是不是需要,32位浮点数通过MODBUS-RTU分8位传送,到4个16位寄存器,然后组装成32位浮点数?
这个不同PLC会有不同的方法,有些PLC可以设置MODBUS传回来的数据格式,直接读就可以,有些不行。有些编程软件能够比较轻松的解决,比如西门子,有些就比较麻烦。
我这个例子你参考下:编程软件对变量定义为字节、字、浮点后就不允许混用操纵了,我使用了绝对地址来实现混用操纵。程序有漏洞,如果执行这段程序时有中断程序,且在中断程序里对这个绝对地址进行了更改就会出错,所以需要避免中断对绝对地址的数据更改。

方法只供参考。