ZX8533 RS485 ModbusRTU 指令速查工具
适用机型:ZX8533 系列;适用固件:V3.1.6 及以上版本(RS485 Modbus RTU 协议自 V3.1.6 起支持);其中多参数结果读取(寄存器 0x70)需 V3.1.11 及以上版本的多参数功能形态。本手册与《致新ZX8533系列RS485协议操作指南》配套使用,所有示例帧经仪器实际通讯逐条验证,可直接复制使用。
目录
1. 仪器设置与接线
- 系统设置页 → 总线方式 = RS485,总线地址 = 8(恢复出厂默认值,报文首字节为 0x08;范围 0x01~0x20);
- 串口参数(必须与 PLC/上位机一致):9600 bps(可调)、8 数据位、1 停止位、无校验;
- RS485 通讯时仪器键盘进入锁定状态(远程态),按 KEYLOCK 键解锁;
- 调试技巧:把页面停在「系统设置」页,仪器会把收到的命令码打印在屏幕下方;完全没显示则检查是否购买了 RS485 模块。
2. 握手流程与 T3.5 帧间隔
2.1 一次完整握手
主机(PLC/上位机) 仪器(从机)
│ │
│ ① 逐字节发送请求帧 │
│ ────────────────────────────────────────────►│
│ [地址][功能码][寄存器地址][数量/数据][CRC] │
│ │ ② 每收到一字节重启 T3.5 定时器
│ ③ 总线静默 ≥ T3.5(3.5个字符时间) │ ③ T3.5 到点 → 判定"一帧收完"
│ ═ ═ ═ ═ ═ 静默 ═ ═ ═ ═ ═ │ ④ 校验: 地址匹配? CRC正确? 帧完整?
│ │ 不匹配/不正确 → 丢弃, 不回应
│ │ ⑤ 执行动作(写参数/读数据)
│ ⑥ 返回响应帧 │
│ ◄────────────────────────────────────────────│
│ [地址][功能码][数据...][CRC] │
│ 或异常帧 [地址][0x80+功能码][错误码][CRC] │
│ │
│ ⑦ 主机也按 T3.5 判响应帧结束, 再发下一帧 │
│ (相邻两帧之间必须间隔 ≥ T3.5 静默) │
2.2 T3.5 是什么
- T3.5 = 3.5 个字符时间。Modbus RTU 帧没有起止标记,靠总线静默切帧:字节流中间静默超过 T3.5 就认为上一帧结束、下一帧开始;
- 一个字符 = 1 起始位 + 8 数据位 + 1 校验位 + 1 停止位 = 11 位(本机无校验也按 11 位计);
- 9600 bps:T3.5 = 3.5 × 11 / 9600 ≈ 4.01 ms;19200 bps ≈ 2.0 ms;>19200 时协议规定固定 1.75 ms;
- 仪器实现:内部定时器以 50µs 为计时单元,每收一字节重装计数,超时即判帧结束;T3.5 定时器中断优先级高于串口中断,保证长串口中断也挡不住帧切分;
- 配套还有 T1.5:同一帧内相邻字节间隔若超过 1.5 字符时间(9600 时 ≈ 1.72 ms),说明帧中断异常,接收方应丢弃该帧。所以上位机必须连续、不间断地发完一帧,禁止人工逐字节慢发。
给上位机程序员的时序要点:① 一帧必须连续发完(帧内间隔 < T1.5);② 帧与帧之间留 ≥ T3.5 静默(9600 时建议 ≥ 5 ms);③ 发完请求后要等响应(或异常帧/超时),收到完整响应帧(也按 T3.5 判尾)再发下一帧;④ 超时建议 ≥ 100 ms 无响应则重发或报错。
3. 帧格式(功能码 03 / 0x10 / 异常帧 / CRC16)
本机只启用两个功能码:0x03 读保持寄存器、0x10(16) 写多个保持寄存器。文档中的"03、10"就是十六进制 0x03、0x10。
3.1 读请求(主机发,功能码 0x03)
字节: 1 2 3 4 5 6 7 8
[地址] [0x03] [寄存器Hi][寄存器Lo][数量Hi ][数量Lo ][CRC Lo ][CRC Hi ]
3.2 读响应(从机回)
[地址] [0x03] [数据长度M][数据1..M ][CRC Lo][CRC Hi] 例: 08 03 04 42 F0 00 00 77 78 → 频率 120.0 Hz
3.3 写请求(主机发,功能码 0x10)
字节: 1 2 3 4 5 6 7 8..M+7 M+8 M+9
[地址] [0x10] [寄存器Hi][寄存器Lo][数量Hi ][数量Lo ][长度M ][数据1..M ][CRC Lo ][CRC Hi ]
例: 08 10 00 03 00 02 04 44 FA 00 00 A9 E7 → 设频率 2000Hz
从机正确执行后原样回显前 8 字节(地址+0x10+寄存器地址+数量+CRC),无数据区。
3.4 异常响应(从机回)
[地址] [0x80+功能码] [错误码] [CRC Lo] [CRC Hi]
例: 08 0x83 0x02 xx xx → 非法寄存器地址/数量(MB_ENOREG)
地址不匹配或 CRC 错误时从机不回应任何数据。
3.5 CRC16(Modbus 标准)
- 多项式 0xA001(x¹⁶+x¹⁵+x²+1 的反向),初值 0xFFFF;
- 对帧的第 1 字节~倒数第 3 字节计算;
- 发送顺序:低字节先发(CRC Lo, CRC Hi)。
在线 CRC16 计算(输入帧内容,自动算并拼好可发送的完整帧):
帧内容(空格分隔 HEX,不含 CRC):
帧内容(空格分隔 HEX,不含 CRC):
4. 浮点数大端序与在线转换工具
字节序:大端序,高字节在前。float 的 IEEE754 表示 MSB 先发,与 Modbus 寄存器的大端约定一致。
示例:2000.0 → 44 FA 00 00;1.2µF(1.2e-6) → 35 A1 0F B0;-1.0 → BF 80 00 00;340.0 → 43 AA 00 00。
单精度浮点 → HEX(大端序 4 字节)
浮点数值: 单位倍率:
浮点数值: 单位倍率:
HEX(大端序 4 字节)→ 单精度浮点
HEX 4 字节:
HEX 4 字节:
5. 寄存器地图与在线指令生成器
所有指令已按从机地址自动算好 CRC,点"复制"即可粘贴到串口助手。改数据区(如频率值)请用第 4 节工具生成新数据后替换,并用 3.5 节工具重算 CRC。
5.1 写参数(功能码 0x10)—— 数据区可编辑:数值行直接输入十进制数(可带 e 指数),选择项点下拉菜单,右侧指令实时重算 CRC
从机地址: (十六进制 01~20)
| 功能 | 寄存器 | 寄存器数 | 数据区内容 | 完整指令(HEX) | 复制 |
|---|
5.2 读参数/读结果(功能码 0x03)
从机地址: (十六进制 01~20)
| 功能 | 寄存器 | 寄存器数 | 返回数据 | 完整指令(HEX) | 复制 |
|---|
6. 读测量结果详解(0x64 / 0x68 / 0x6E / 0x70)
6.1 推荐的读取节拍
写 0x14 触发(0001) 或 等外部触发 → 轮询读 0x6E 状态(建议间隔 50~200ms) → bit4(0x0010)=1 表示"单点测量完成,数据已修正" → 读 0x64 / 0x68 / 0x70 取结果 → 0x6E 寄存器读后自动清零,下轮测量重新置位
6.2 寄存器 0x64:主/副参数结果(8 字节)
请求: 08 03 00 64 00 04 05 4F
响应: 08 03 08 [主参数4B][副参数4B] [CRC]
示例: 08 03 08 35 A0 25 69 39 84 0D 6D 0A 9E
→ 主参数 35A02569 = 1.19318e-6 (1.193µF), 副参数 39840D6D = 2.5e-4
6.3 寄存器 0x68:结果 + 系统状态 + 档号(12 字节)
请求: 08 03 00 68 00 06 44 8D
响应: 08 03 0C [主参数4B][副参数4B][sysStatus 2B][BinNo 2B] [CRC]
sysStatus: 0=正常, 5=接触检测H/L均不良, 6=高端不良(HNC), 7=低端不良(LNC)
BinNo : 分选档位号(0=OUT, 1~n=档号)
6.4 寄存器 0x6E:操作状态事件(2 字节,读后清零)
| 位 | 权重 | 含义 |
|---|---|---|
| bit0 | 0x0001 | 校正数据测量完成(OPEN/SHORT/LOAD) |
| bit2 | 0x0004 | 曲线扫描完成 |
| bit3 | 0x0008 | 列表扫描最后一点完成 |
| bit4 | 0x0010 | 单点测量完成(数据已修正)——"数据准备好"轮询就看它 |
| bit5 | 0x0020 | 变压器扫描完成 |
该寄存器读后自动清零。轮询时收到
08 03 02 00 10 65 89 即表示数据准备好。6.5 寄存器 0x70:多参数结果(26 字节,定制)
请求: 08 03 00 70 00 0D 85 4D
响应: 08 03 1A [行1 float][行2 float][行3 float][行4 float][行5 float][行6 float][总判 2B] [CRC]
未测量的行 = 00 00 00 00; 总判 MP_totCmpResult: 0=PASS
7. 枚举值速查
| 参数 | 寄存器 | 值(2 字节) | 含义 |
|---|---|---|---|
| 速度 | 0x01 | 00 00 / 00 01 / 00 02 | 快速 / 中速 / 慢速 |
| 触发模式 | 0x02 | 00 00 / 00 01 / 00 02 / 00 04 | 内部 / 手动 / 外部 / 自动 |
| 测量功能 | 0x04 | 00 00 ~ 00 16 | 0=Cp-D … 22=DCR(23 项,明细见下表);ZX6538 专有 27/28/29=Le-Q-Z / Le-Rs-Z / Ce-Rs-Le |
| 极限方式 | 0x05 | 00 00 / 00 04 | 00 00 = 百分比 %;00 04 = 直读 ABS |
| 量程 | 0x12 | 00 00 / 00 01 | 锁定 HOLD / 自动 AUTO |
| 内阻 | 0x13 | 00 00 / 00 01 / 00 02 | 30Ω / 100Ω / LOWZ |
| 触发指令 | 0x14(只写) | 00 01 | 触发测量一次(TrigFlag=1) |
| 偏置开关 | 0x17 | 00 00 / 00 01 | 偏置关 / 偏置开 |
| 页面 | 0x18 | 00 00 起 | 见下方页面枚举;写页面会同时保存测试条件 |
测量功能枚举(0x04 寄存器,23 项)
| 值 | 功能 | 值 | 功能 | 值 | 功能 |
|---|---|---|---|---|---|
| 0 | Cp-D | 1 | Cp-Q | 2 | Cp-G |
| 3 | Cp-Rp | 4 | Cs-D | 5 | Cs-Q |
| 6 | Cs-Rs | 7 | Lp-D | 8 | Lp-Q |
| 9 | Lp-G | 10 | Lp-Rp | 11 | Ls-D |
| 12 | Ls-Q | 13 | Ls-Rs | 14 | R-X |
| 15 | Z-θdeg | 16 | Z-θrad | 17 | Rs-Q |
| 18 | G-B | 19 | Y-θdeg | 20 | Y-θrad |
| 21 | Rp-Q | 22 | DCR |
页面枚举值
| 值 | 页面 | 值 | 页面 | 值 | 页面 |
|---|---|---|---|---|---|
| 0 | 测量显示 LcrMeasDisp | 1 | 档号显示 BinNoDisp | 2 | 档计数 BinCountDisp |
| 3 | 列表测量 ListSweepDisp | 4 | 测量设置 MeasSetup | 5 | 用户校正 Correction |
| 6 | 极限表设置 LimitTableSetup | 7 | 列表扫描设置 ListSweepSetup | 14 | 系统设置 SystemSetup |
8. 注意事项
- 写参数后即时生效到硬件(如频率写入后仪器立即重配模拟前端并刷新屏幕显示);
- 0x18 写页面会触发测试条件保存(EEPROM),频繁切页注意 EEPROM 寿命;
- 频率写入超 MINFREQ~MAXFREQ 范围会被忽略(不报错);电平/偏置写入超限时硬件侧钳位;
- 0x6E 读后清零——多主站/多点轮询时注意只有第一个读者能拿到事件;
- 触发模式写入接受 0/1/2/3/4/6,其余值忽略。
版本:V1.0(2026-10-16)| 本页所有示例帧 CRC 由页面内工具按 Modbus 标准实时计算,可直接复制使用