chenqiangme
工控小蚂蚁 天道酬勤
级别: 略有小成
精华主题: 0
发帖数量: 84 个
工控威望: 259 点
下载积分: 507 分
在线时间: 84(小时)
注册时间: 2007-08-28
最后登录: 2024-04-15
查看chenqiangme的 主题 / 回贴
楼主  发表于: 2020-03-04 22:22
大神们,智能仪表中收到IEEE-754标准的四个浮点字节,比如:D0 41;  D1  30;  D2 00 ;  D3 00
如何处理合并成一个字节。例如:0x41300000(11.0)
shandiange
努力,不死终会出头。
级别: 论坛先锋
精华主题: 0
发帖数量: 42 个
工控威望: 1019 点
下载积分: 13709 分
在线时间: 144(小时)
注册时间: 2019-08-24
最后登录: 2022-11-24
查看shandiange的 主题 / 回贴
1楼  发表于: 2020-03-05 10:32
顶一下。同惑
tingfenghu
级别: 工控侠客

精华主题: 0
发帖数量: 2793 个
工控威望: 3565 点
下载积分: 3409 分
在线时间: 3716(小时)
注册时间: 2007-11-04
最后登录: 2024-05-14
查看tingfenghu的 主题 / 回贴
2楼  发表于: 2020-03-05 12:33
抛砖引玉,
台达PLC,
字节保存8位,字保存16位,一个字节无法处理实数。
一个字只能保存HFFFF,实数要用2个字,

  

二手PLC,触摸屏,伺服驱动,各类气动设备
http://shop58129605.taobao.com/
wangnaizhi
级别: 论坛先锋
精华主题: 0
发帖数量: 1261 个
工控威望: 1437 点
下载积分: 5420 分
在线时间: 823(小时)
注册时间: 2015-08-31
最后登录: 2024-05-13
查看wangnaizhi的 主题 / 回贴
3楼  发表于: 2020-03-05 14:09
图片:
图片:
差不多就是这处理的
wanzhen2006
做工控人.不停学习.分享.交流.
级别: 论坛先锋
精华主题: 0
发帖数量: 253 个
工控威望: 1779 点
下载积分: 2406 分
在线时间: 592(小时)
注册时间: 2012-03-01
最后登录: 2024-05-14
查看wanzhen2006的 主题 / 回贴
4楼  发表于: 2020-03-06 10:46
例如:D0=A;  D1=B;  D2=C ;  D3=D.

西门子为例:解 VB0=A,VB1=B,VB2=C,VB3=D
                             VW0=AB=40001,VW2=CD=40002
                             VD0=ABCD

VB=字节=8bit(8进制),VW =字=16bit(16进制),VD=双字=32bit(32进制)

它结合了两个16位的Modbus寄存器。它可以以4种不同的字/字节顺序显示。如下交换
使用此命令以浮点格式显示数据。大端法。使用2个寄存器。
采用IEEE 754规范。
字节顺序:A B C D
浮点数123456.00或十六进制47 F1 20 00
在Modbus消息中通过电线时的顺序:47 F1 20 00

使用此命令以浮点格式显示数据。小端法。使用2个寄存器。
采用IEEE 754规范。
字节顺序:D C B A
浮点数123456.00或十六进制47 F1 20 00
在Modbus消息中通过电线订购:00 20 F1 47

使用此命令以浮点格式显示数据。大端字节交换。使用2个寄存器。
采用IEEE 754规范。
字节顺序:B A D C
浮点数123456.00或十六进制47 F1 20 00
在Modbus消息中通过电线时的顺序:F1 47 00 20

使用此命令以浮点格式显示数据。小端字节交换。使用2个寄存器。
采用IEEE 754规范。
字节顺序:C D A B
浮点数123456.00或十六进制47 F1 20 00
在Modbus消息中通过电线时订购:20 00 47 F1
[ 此帖被wanzhen2006在2020-03-06 22:44重新编辑 ]
做工控人.不停学习.分享.交流.
lvpretend
级别: 论坛先锋
精华主题: 0
发帖数量: 1255 个
工控威望: 1425 点
下载积分: 3674 分
在线时间: 322(小时)
注册时间: 2015-07-20
最后登录: 2024-02-20
查看lvpretend的 主题 / 回贴
5楼  发表于: 2020-03-07 09:44
你是不是需要,32位浮点数通过MODBUS-RTU分8位传送,到4个16位寄存器,然后组装成32位浮点数?
这个不同PLC会有不同的方法,有些PLC可以设置MODBUS传回来的数据格式,直接读就可以,有些不行。有些编程软件能够比较轻松的解决,比如西门子,有些就比较麻烦。
我这个例子你参考下:编程软件对变量定义为字节、字、浮点后就不允许混用操纵了,我使用了绝对地址来实现混用操纵。程序有漏洞,如果执行这段程序时有中断程序,且在中断程序里对这个绝对地址进行了更改就会出错,所以需要避免中断对绝对地址的数据更改。

方法只供参考。