🏭 Modbus 工业点位采集与字节序
Modbus 是工业现场应用最广泛的通信协议之一。MzMedia 提供了高度可视化的 Modbus 点位采集配置器。
1. 核心采集参数解析
在 设备管理 -> Modbus 配置 中,每个从站设备可配置以下参数:
- 从站地址 (Slave ID):
1 ~ 247,区分同一总线上的不同仪器仪表; - 轮询周期 (Poll Interval):单位毫秒,支持从 100ms(高频工况)到数小时自由调节;
- 功能码 (Function Code):
01 Read Coils(读线圈,布尔量开关状态)02 Read Discrete Inputs(读离散输入,传感器开关量)03 Read Holding Registers(读保持寄存器,模拟量读写)04 Read Input Registers(读输入寄存器,模拟量只读)
- 寄存器起始地址 (Address):PLC 或仪表手册标注的寄存器起始偏移量(需注意 0-based 还是 1-based);
- 缩放系数 (Scale Factor):例如传感器采集电压乘以
0.1得到实际伏特数; - 数据类型:
int16,uint16,int32,uint32,float32,double64,bool。
2. 在线字节序转换与 CRC16 计算器
当现场仪表上传的浮点数出现异常(例如读取温度出现 1.23e-38 或超大负数),可通过本工具在线粘贴 4 字节 Hex 原始报文,直接对照四种模式的解析值与 CRC 校验:
⚡ Modbus 工业字节序换算与 CRC16 校验小工具实操工具箱
1. 输入 32 位 Hex 原始字节 (4 字节 / 8 个十六进制字符):
✓ 4 字节有效
大端模式 (ABCD)标准 / 西门子
41 A0 00 00
Float32:20
UInt32:1101004800
Int32:1101004800
字节交换 (BADC)部分国产仪表
A0 41 00 00
Float32:-0.0000
UInt32:2688614400
Int32:-1606352896
字交换 (CDAB)施耐德 / 中端模式
00 00 41 A0
Float32:0.0000
UInt32:16800
Int32:16800
小端模式 (DCBA)x86 / ARM 工控机
00 00 A0 41
Float32:0.0000
UInt32:41025
Int32:41025
2. Modbus RTU CRC16 校验计算:
CRC16 (低字节在前):
C4 0B完整发送报文:01 03 00 00 00 02 C4 0B3. 工业字节序 (Endianness) 调优指南
不同厂商的 PLC(西门子、施耐德、三菱、欧姆龙)对于 32 位及以上数据类型的存储字节顺序存在差异,MzMedia 内置了全套排列组合支持:
| 字节序名称 | 排列模式 | 典型代表厂商 | 说明 |
|---|---|---|---|
| Big-Endian (ABCD) | 高字节在前,高字在前 | 西门子 S7-1200/1500、标准 Modbus | 最常规的大端模式 |
| Little-Endian (DCBA) | 低字节在前,低字在前 | PC x86 工控机 | 纯粹的小端模式 |
| Big-Endian Byte Swap (BADC) | 字节交换 | 部分国产数显仪、流量计 | 单字内部高低字节调换 |
| Little-Endian Byte Swap (CDAB) | 字交换(中端模式) | 施耐德、Modicon PLC | 两个 16 位字的高低位置调换 |
提示:如果在平台中读取到的浮点数出现极大异常值,通常是因为选择了错误的字节序,只需在点位管理中切换为
CDAB或BADC即可即时纠正。
