西门子PLC接收的ModbusRTU数据帧中IEEE754 格式4字节数据转为浮点数转换程序

一、需求

     在项目中遇到Smart S7-200PLC读取某厂家的涡街流量计的数据,通过ModbudsRTU协议得知,接收的流量计数据为:

              32单精度浮点数SINGLE格式为IEEE754,折合4字节,排列顺序为3-4-1-2

     因此PLC无法直接对数据字节的对调处理,求得流量计浮点数数据,而需要对接收的4字节数据进行解析处理,才能求得32位单精度浮点数。

二、IEEE754浮点数的表示方法

上述计算公式也可写为: (-1)\times S\times 2^{E-127}\times (1+M/2^{23}),其中S为最高位第31位,E为30-23位,M为22-0位;
在程序中特别需要注意的是要判断E是否大于127,根据比较结果分别计算

三、PLC程序

根据上述公式,编写例子程序如下:
将485通讯的ModbusRTU协议读取的数据0x38 0x1D 0x42 0x26放到VD2000寄存器中,再进行高低位互换,由于modbus发送的数据是先低位、后高位,而PLC数据在寄存器中存放是先高位,后低位,所以进行字节的互换,保证PLC寄存器中存放的顺序就先是高位数据,后是低位数据。
按照上述公式计算,特别注意判断E是否大于等于127,根据比较结果分别计算。
四、结果验证
1)验证0x4226381D=41.5548
2)验证0x3ED89375=0.423
通过PLC在线监视程序,运行结果与转换工具软件计算结果完全一致。
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值