谷动谷力

 找回密码
 立即注册
查看: 2462|回复: 0
打印 上一主题 下一主题
收起左侧

如何解析MODBUS中的浮点型数据

[复制链接]
跳转到指定楼层
楼主
发表于 2022-6-23 12:23:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如何解析MODBUS中的浮点型数据

获取更多IIoT干货

点击蓝字
关注我们
IIoT
工业树莓派如何解析MODBUS
中的浮点型数据
前言
工业树莓派支持MODBUS TCP/RTU通讯协议,因此,在使用Modbus协议的温湿度传感器、电子天平、PLC等设备场景中应用十分广泛。当工业树莓派作为MODBUS TCP/RTU主站时,最多可以连接30个从站设备,由此可见,工业树莓派具有较好的可扩展性。
HongKe Technology
/
/
/
01
面 临 的 挑 战

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

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

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

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

图2. 浮点型数据写入到寄存器

02
   解 决 方 案   

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

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

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

03
   总      结   

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

04
   方 案 简 介   

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

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



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-4-20 08:27 , Processed in 0.087182 second(s), 40 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表