用途:本文件是综合平台编程器实现离线逻辑仿真和 XDH-60T4-E Modbus RTU 联机的开发速查资料。
本项目只实现简化梯形图仿真,不生成、编译或下载真实 PLC 程序。
项目统一使用以下范围:
| 区域 | 项目范围 | 含义 | 运行时类型 |
| --- | --- | --- |
| M 区 | M0~M4000 | 普通辅助继电器,用于开关命令和状态。 | 布尔值 |
| D 区 | D0~D4000 | 普通数据寄存器,用于数值、参数和设备状态。 | 16 位字 |
XDH 的实际软元件范围远大于项目范围:普通 M 区为 M0~M199999,普通 D 区为 D0~D499999。本项目固定使用较小的 0~4000 范围,足够演示,也便于变量管理和界面绑定。
M 是普通辅助继电器,不可直接驱动外部负载;真机设备是否动作由 PLC 内部程序决定。D 是数据寄存器,单个 D 默认按带符号 16 位数处理,范围为 -32768~32767。
32 位数据由两个相邻 D 寄存器组成:D0 为低字,D1 为高字,例如 D1D0 组成一个 32 位数。初版 HMI 数值控件默认处理单个 16 位 D;32 位和浮点显示作为后续扩展。
来源:基本指令篇印刷页 35、44。
厂商手册包含完整指令集,但本项目只需要模拟常见设备控制逻辑。初版逻辑执行器支持以下元素即可:
| 逻辑元素 | 语义 | 对应应用场景 |
|---|---|---|
| 常开触点 | 绑定位为 true 时导通。 |
启动条件、运行条件。 |
| 常闭触点 | 绑定位为 false 时导通。 |
停止、互锁、故障条件。 |
| 普通线圈 | 网络导通时写入目标 M 位。 | 运行状态。 |
| 置位/复位线圈 | 将目标 M 位锁存为开或关。 | 启动保持、故障复位。 |
| 数值比较 | 比较 D 值与常量。 | 水位、温度、剩余量判断。 |
离线仿真按固定扫描周期执行:读取当前 M/D 值,计算每条网络,提交写入,再刷新 HMI。该语义用于验证项目示例逻辑,不承诺与 XDH 的全部指令、扫描细节和固件行为完全一致。
定时器以及 D 寄存器之间的比较属于可选扩展,不在当前原始需求范围内。后续只有在需求明确时才扩展领域模型、编辑器和逻辑执行器,不能因为厂商手册提供相关指令就默认纳入项目范围。
对 XDH 系列 PLC,项目范围内的 M/D 地址与 Modbus 原始地址一一对应:
| PLC 软元件 | Modbus 对象 | 原始 Modbus 地址 | 项目中的用法 |
|---|---|---|---|
M0~M4000 |
线圈(Coil) | 0~4000 |
HMI 按钮写入、指示灯读取。 |
D0~D4000 |
保持寄存器(Holding Register) | 0~4000 |
HMI 数值显示、数值输入和参数读写。 |
代码内部必须使用上述 从 0 开始的原始 Modbus 地址。某些第三方上位机软件会以 1 或 400001 形式展示地址,这只是软件显示习惯,不应直接写进通信代码。
XDH 的 Modbus 可访问范围为 M0~M20479 和 D0~D20479,所以项目约定的 0~4000 全部在有效范围内。
来源:基本指令篇印刷页 255-256。
| 功能码 | 名称 | 目标数据 | 本项目用途 |
|---|---|---|---|
0x01 |
读线圈 | M 区 | 读取启动、运行、报警等位状态。 |
0x05 |
写单个线圈 | M 区 | HMI 按钮写一个 M 位。 |
0x0F |
写多个线圈 | M 区 | 后续批量写入使用,初版可不做 UI 入口。 |
0x03 |
读保持寄存器 | D 区 | 读取数值、参数和状态。 |
0x06 |
写单个保持寄存器 | D 区 | HMI 数值输入写一个 D。 |
0x10 |
写多个保持寄存器 | D 区 | 后续批量参数下发使用。 |
本期联机不使用 X、Y、S、SM、HD 等其他软元件,也不需要实现 PLC 作为 Modbus 主站的编程指令。
来源:基本指令篇印刷页 259-261。
每一帧格式如下:
站号(1 字节) + 功能码(1 字节) + 数据(0~252 字节) + CRC 低字节 + CRC 高字节
RTU 模式使用 CRC 校验。收到响应后必须校验站号、功能码、报文长度和 CRC;异常响应或校验失败不得更新 HMI 的寄存器缓存。
PLC 的 COM2 选择 Modbus RTU 模式,PC 与 PLC 的波特率、数据位、校验位、停止位必须完全一致。PLC 站号即 RTU 帧的第一个字节。
PLC 串口配置写入后需要断电重启。PC 轮询需要设置超时和间隔,不能在前一个请求还未完成时无限追加请求。
来源:基本指令篇印刷页 258、273-276。
PC HMI 控件
<-> 联机寄存器缓存(M/D)
<-> Modbus RTU 通信服务
<-> XDH-60T4-E COM2 RS-485
<-> PLC 内部控制程序
HMI 控件不直接收发串口数据。通信服务更新联机寄存器缓存,HMI 订阅缓存变化并刷新。这样通信超时不会阻塞界面。
0x01 批量读 M 区、0x03 批量读 D 区。0x05 写 M 区;提交数值时使用 0x06 写 D 区。| 模式 | 变量来源 | 图形逻辑执行器 |
|---|---|---|
| 离线仿真 | PC 内存中的 M/D | 运行。 |
| 真机联机 | PLC 读回的 M/D 缓存 | 停止。 |
真机联机时,PLC 内部程序是唯一控制源。PC 端不执行仿真梯形图,避免同时写入同一批 M/D 地址。
当前软件已实现串口参数配置、异步连接、地址收集、相邻地址合并轮询、PLC 缓存、单点写入、首次读取约束和错误反馈。自动化测试使用替身网关和缓存仓库验证,不等同于真实串口与 PLC 验证。
0x01 读取 M0,确认能得到合法 RTU 响应。0x03 读取 D0,确认寄存器解析正确。0x05 写 M0 和 0x06 写 D0,通过 PLC 监控或 HMI 页面确认写入结果。