Modbus 高低字节转换工具

支持 16/32/64 位整数 · IEEE 754 浮点数 · ABCD/BADC/CDAB/DCBA 四种字节序在线转换

工具实时在线运行 📅 数据更新于: ✅ 支持 PLC / 工业自动化 / 物联网开发 🔒 纯前端计算,数据不上传服务器

🔄 字节序转换器

什么是 Modbus 高低字节转换?

Modbus RTU / TCP 通信协议中,数据以寄存器(Register)为单位传输,每个寄存器存储 16 位(2 字节)数据。当传输 32 位整数或浮点数时,需要占用 2 个连续寄存器,此时就涉及到字节序(Endianness)的问题。

核心问题:不同厂商的 PLC、传感器、仪表对 32 位数据的字节排列方式可能不同,导致读取的数值解析错误。本工具可快速验证和转换四种常见字节序。

四种常见字节序格式

格式 名称 字节排列 典型应用场景
ABCD 大端序 (Big Endian) 高位字节在前 西门子 S7、标准 Modbus
BADC 大端交换 字内交换,字顺序不变 部分日系 PLC
CDAB 小端交换 字顺序交换,字内不变 施耐德、台达、汇川
DCBA 小端序 (Little Endian) 低位字节在前 Intel x86、部分国产 PLC

常见应用场景

使用示例

假设从 Modbus 寄存器读取到两个 16 位值:0x12340x5678

通过本工具输入 0x12345678,即可一键查看四种字节序对应的十进制结果,快速匹配设备实际输出。

技术原理与实现说明

本工具完全基于浏览器端 JavaScript 实现,所有计算在本地完成,不会将您的数据上传至服务器,保障工业现场数据安全。

整数转换原理

32 位有符号整数使用二进制补码表示。输入数值后,工具将其转换为 32 位无符号整数,然后通过位运算提取每个字节:

根据不同字节序重新组合字节,即可得到对应的数值。

IEEE 754 浮点转换

JavaScript 的 ArrayBufferDataView API 用于处理浮点数的二进制表示。32 位单精度浮点数使用 1 位符号位、8 位指数位和 23 位尾数位;64 位双精度则使用 1 位符号位、11 位指数位和 52 位尾数位。工具通过 Float32ArrayFloat64Array 完成底层二进制与浮点值的互转。

支持的数值范围

常见问题 (FAQ)

Q1:为什么 Modbus 通信中会出现字节序问题?

Modbus 协议本身只定义了 16 位寄存器的传输规范,对于 32 位或 64 位数据如何拆分到多个寄存器中,协议并未强制规定。因此不同厂商的实现方式不同,导致解析结果差异。

Q2:如何判断我的 PLC 使用哪种字节序?

最可靠的方法是查阅设备通信手册中的「数据格式」或「寄存器映射」章节。若没有手册,可写入一个已知的 32 位测试值(如 0x12345678),然后通过 Modbus 调试工具读取原始字节,对照本工具的转换结果即可确定。

Q3:CDAB 和 DCBA 有什么区别?

CDAB 是「字交换」模式:两个 16 位字的顺序互换,但每个字内部的高低字节不变。DCBA 是完整的小端序:所有字节完全倒序。在 32 位数据中,若原始为 [A,B,C,D],则 CDAB = [C,D,A,B],DCBA = [D,C,B,A]。

Q4:本工具支持批量转换吗?

当前版本支持单次单值转换,便于精确调试。如需批量处理多个寄存器值,建议将结果导出后使用 Excel 或 Python 脚本进行二次处理。