摩尔信使MThings系列教程37——字节序&字序

通信调试中,字节序是个常见概念,比如本地字节序、网络字节序。MODBUS协议中同时存在字序概念。
字节序和字序都代表数据在报文中的存储机制,其分为两种:大端(Big-Endian)和小端(Little-Endian)。
 
MODBUS数据帧中对关键字段(例如寄存器地址)都定义为大端字节序,
但是数据部分在不同厂家的定义方式可能不同,甚至同一厂家某一型号设备中,对不同数据的字节序定义也不统一。
 
基于MODBUS报文的字节排序,大端字节序即数据高字节在前,低字节在后,小端字节序相反。例如:
01 03 04 12 34 56 78 81 07 (读保持寄存器响应报文)
其中,回复数据长度4Bytes, 如原始数据即为0X12345678,从报文看,其字节序即为大端,字序为大端。
 
但是,MODBUS寄存器数据在传输4字节浮点型数据时,有些设备厂家同时给出字序要求,
并且明确声明字序为小端,即当原始数据是0X12345678时,传输它的报文字节流应该这样:
01 03 04 56 78 12 34 66 D5
 
软件为了支撑更好的适配不同厂家数据协议的定义方式,对字节序和字序做出如下处理:
每个数据都可以独立配置其字节序和字序。
寄存器数量为1、2、4时,支持字节序可配置,涵盖2、4、8字节数据。
寄存器数据量为2、4时,支持字序可配置,涵盖4字节、8字节数据。
其他寄存器数据量的数据,字序、字节序默认为大端。
字节顺序
寄存器个数
字节序
字序
AB
1
大端
--
BA
1
小端
--
AB CD
2
大端
大端
BA DC
2
小端
大端
CD AB
2
大端
小端
DC BA
2
小端
小端
AB CD EF GH
4
大端
大端
BA DC FE HG
4
小端
大端
GH EF CD AB
4
大端
小端
 
posted @ 2025-11-17 12:23  摩尔信使MThings  阅读(2)  评论(0)    收藏  举报