一、需求
在项目中遇到Smart S7-200PLC读取某厂家的涡街流量计的数据,通过ModbudsRTU协议得知,接收的流量计数据为:
32单精度浮点数SINGLE格式为IEEE754,折合4字节,排列顺序为3-4-1-2
因此PLC无法直接对数据字节的对调处理,求得流量计浮点数数据,而需要对接收的4字节数据进行解析处理,才能求得32位单精度浮点数。
二、IEEE754浮点数的表示方法
上述计算公式也可写为:
,其中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在线监视程序,运行结果与转换工具软件计算结果完全一致。
本文介绍了如何在SmartS7-200PLC中处理通过ModbusRTU协议接收的32位单精度浮点数数据。根据IEEE754标准,数据需要进行字节顺序调整和解析计算。文中提供了具体的PLC程序示例,解释了字节互换和浮点数计算的步骤,并通过两个验证示例展示了计算的正确性。
1万+

被折叠的 条评论
为什么被折叠?



