虹科干货 | 工业树莓派如何解析MODBUS中的浮点型数据?

前言

工业树莓派支持MODBUS TCP/RTU通讯协议,因此,在使用Modbus协议的温湿度传感器、电子天平、PLC等设备场景中应用十分广泛。当工业树莓派作为MODBUS TCP/RTU主站时,最多可以连接30个从站设备,由此可见,工业树莓派具有较好的可扩展性。

一、 面临的挑战

MODBUS从站设备有16位整型数据,但应用更多的是32位浮点型数据,这是因为32位浮点型数据能够在通讯过程中的控制更加精准,这类常应用于如电子天平的体重数据、温湿度传感器的温度/湿度数据、电机的转速等场景。

但在这个过程中会面临数据解析的问题:浮点型数据的应用需要遵循IEE745的数据转换规则,以实现与整型数据的转换和利用。

寄存器只能存放16位数据,所以浮点型数据会被拆分成两个数据部分,分别存放在相邻的两个寄存器中,具体如下:

1. 在进行数据读取的时候,需要把两个寄存器数据通过数据解析还原成浮点型数据(如图1中所示);

2. 在进行数据写入的时候,要通过数据解析把一个浮点型数据拆分成两个十六进制分别写入到相应的寄存器内(如图2中所示)。

图1. 寄存器数据合并成浮点型数据
图2. 浮点型数据写入到寄存器

二、解决方案

针对此类问题,虹科提供一种解析方法,具体如下:

1、读取两个寄存器数据,通过位操作把两个寄存器数据合并成浮点型数据。

2、写入一个浮点型数据,通过位运算把32位浮点型数据拆分成两个16位整型数据,分别写入到两个寄存器中。

三、总结

虹科工业树莓派采用Debian系统,开源性较高,可以通过C/C++、Java、C#、Python等方式进行编程。关于浮点型数据转换成16进制整型数据并进行数据解析可以使用的方法有很多,以上仅为其中一种数据解析方法,这种解析方法存在误差,误差范围为±0.01,可以适用于对浮点型数据精度要求不是特别高的情况。针对以上场景,如有其他解析方法,欢迎添加工程师微信进行交流。

四、方案简介

虹科工业树莓派产品具有实时Raspbian系统,内置Broadco多核处理器具备诸如图像处理类复杂任务处理能力。

此外,它小巧灵活,功耗低,支持用Python/Java/C/C++/C#、Node-RED可视化编程工具进行开发,还能实现CPDESYS软PLC功能,在数据采集和小型控制等场景可帮助用户快速创建应用,实现工业物联网和数字化生产。