摩尔信使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字节数据。
其他寄存器数据量的数据,字序、字节序默认为大端。

浙公网安备 33010602011771号