利用Modbus协议来实现不同设备之间的通讯,操作简便,适用性强,通讯速度快。因此,在各种工控系统中,Modbus是极为常见的一种通讯协议。同时,Modbus也是一种实力较强的现场总线,在工业控制实现真正的网络化过程中,Modbus将发挥更大的作用。
在Modbus总线中,数据传输时是低位字节先传送,传送过来后如果不进行交换,二进制的数值排列是反向的,即原来的低字节在高位,高字节在低位,所以得到的数据和原数据相差甚远。只要将数据的高低位字节进行交换(swap位置1),就可解决此问题。
Modbus协议是一种通用工业标准,国家标准位GB/T19582-2008。只要遵循Modbus协议,不同厂商生产的设备可以连成工业网络,进行互相通信。
Modbus协议中规定寄存器是16位长度,但是随着芯片处理能力的加强及现场要求的提高,32位数据在各类工业设备上使用日渐增多,因此本文主要梳理Modbus RTU协议与32位数据之间的关系,给产品开发提供理论支持。为行文方便,下面将Modbus RTU协议简称为协议。
协议中规定16位数据排列顺序位先高后低,例如ushort数据
0x0102,字节01为高字节,02为低字节。这个顺序我个人理解是按照人的书写阅读顺序习惯定义的,从左到右,高字节在前,低字节在后。 数据传输帧如下:

下面看32位数据,例如ulong数据0x01020304。由于协议中寄存器大小为16位,该数据需要两个寄存器才能存储,因此将该数据拆分为两个16位数据0x0102与0x0304。这两个16位数据在寄存器中的顺序没有疑问,先高后低排列,但是关键问题是协议未规定这两个寄存器的先后顺序,因此在实际使用中会有2种情况出现,先0x0102后0x0304,或者先0x0304后0x0102,这2种排列顺序都是允许的,根据协议内容,建议首选先0x0102后0x0304,协议标准测试软件Modscan提供交换选项。但是绝对不会出现0x0201或0x0403的排列,违反了协议先高后低的规范,是不标准的。数据传输帧如下:

或

最后来看32位浮点数,同样我们需要定义浮点数的书写阅读顺序,根据IEEEE754标准,浮点数的书写顺序为:符号、阶码、尾数。例如-4.00,编码顺序为0xC0800000,得出2个寄存器内容分别为0xC080与0x0000,这2个寄存器同样可以交换,但寄存器内部数据顺序不能变动。数据传输帧如下:

或

总结,根据Modbus RTU标准协议,对于32位数据,只存在寄存器交换与不交换2种选项,当有涉及到寄存器内部字节交换的时候,都是非标准的。
在Modbus现场总线系统中,浮点数的数据传输一般有两种办法,一种是将浮点数按照量程映射到一个寄存器中(2个字节),例如0到65535对应0到100%,还有一种就是采用两个寄存器四个字节传输浮点数。
视频服务器的基本特性与十大选择理由
时间:2026-03-06
Windows2003 中怎样配置NAT服务器?
时间:2026-03-06
什么是SPEC基准测试(服务器知识)
时间:2026-03-06
Linux系统下VPN服务器配置方法介绍
时间:2026-03-06
服务器性能的基准测试
时间:2026-03-06
打造SQL Server2000的安全策略教程
时间:2026-03-06
发现并防止对WEB应用服务器的三种攻击
时间:2026-03-06
专家谈如何提高服务器利用率
时间:2026-03-06
剖析Windows系统中的VSS存储技术
时间:2026-03-06
深入优化DB2 数据库的五个最佳实践
时间:2026-03-06
瞬间抑制二极管(TVS)/瞬间抑制二极管(TVS)是...
时间:2026-03-04
什么是霍尔传感器
时间:2026-03-05
半导体材料的主要种类有哪些?
时间:2026-03-04
高级封装,高级封装是什么意思
时间:2026-03-04
数字比较器,数字比较器是什么意思
时间:2026-03-04
常用整流二极管型号大全
时间:2026-03-04
S/HS固态继电器原理简介
时间:2026-03-04
稳压二极管的选用和代换
时间:2026-03-04
TVS器件的电特性有哪些
时间:2026-03-04
TVS二极管的分类/应用,TVS二极管的特点/选用...
时间:2026-03-04