屏作为 从站,等待 PLC 或上位机读写屏内寄存器。本节使用海岸泵站工程和 PLC 联调助手。
核心功能
在 工程 → 设置 → 工程设置 中配置通信参数。
波特率、数据位、校验位、停止位和接收回调统一见 6.1 DCBUS;本章串口联调使用 115200、8N1。

| 序号 | 参数 | 本例 | 作用 |
|---|---|---|---|
| 1 | 协议类型 | ModbusSlave | 选择当前工程使用的通信协议。 |
| 2 | 从站站点 | 1 | 屏在 Modbus 总线上的站号;本例 1,正常单播范围 1~247。 |
| 3 | 字符间隔 | 5 | 用于判断一帧接收结束的字符间隔。 |
| 4 | 延时应答ms | 20 | 收到请求后等待多久再应答;本例 20 ms。 |
| 5 | 同步画面 | 否 | 公共设置,见 6.3 Modbus 主站 的“公共参数”。 |
| 6 | 画面写入地址 | 未设置 | 公共设置,见 6.3 Modbus 主站 的“公共参数”。 |
| 7 | 画面取自地址 | 未设置 | 公共设置,见 6.3 Modbus 主站 的“公共参数”。 |
| 8 | 字节序 | 默认大端 | 公共设置,见 6.3 Modbus 主站 的“公共参数”。 |
| 控件 | 工程地址 | 协议数值地址 | 功能 |
|---|---|---|---|
| 水温 | 3X0064 |
100 | 输入寄存器,读 FC04 |
| 液位 | 3X0065 |
101 | 输入寄存器,读 FC04 |
| 转速 / 低速 / 高速 | 4X0064 |
100 | 保持寄存器,读 FC03,写 FC06/10 |
| 水泵 / 启动 / 停止 | 0X0224 |
548 | 线圈,读 FC01,写 FC05 |
地址换算: 工程地址后缀按十六进制填写,0064=十进制 100,0224=十进制 548。0/1 区的单地址为 1 位,3/4 区为 16 位字;40001 等手册标签须先按设备规则换算。

示例脚本每 500 ms 向屏内输入区更新水温 25、液位 65。保持寄存器由主站或画面操作修改,避免周期脚本覆盖设定值。
local INPUT, HOLDING = 5, 6
function on_init()
set_uint16(HOLDING, 100, 0)
start_timer(6, 500, 0, 0)
end
function on_timer(timer_id)
if timer_id ~= 6 then return end
set_uint16(INPUT, 100, 25)
set_uint16(INPUT, 101, 65)
end
1/3 区对外部主站只读,屏内部 Lua 可以更新这些数据。完整四区及脚本用法见 5.6 Modbus 读写。
以下报文字节为十六进制,末尾为 CRC 低字节、高字节。
| 操作 | 请求 | 正常应答 |
|---|---|---|
| 读取保持寄存器 100,值为 70 | 01 03 00 64 00 01 C5 D5 |
01 03 02 00 46 39 B6 |
| 写保持寄存器 100=70 | 01 06 00 64 00 46 49 E7 |
原报文回显 |
| 置位线圈 548 | 01 05 02 24 FF 00 CD 89 |
原报文回显 |
| 复位线圈 548 | 01 05 02 24 00 00 8C 79 |
原报文回显 |
| 现象 | 检查项 |
|---|---|
| 一直无应答 | 主从角色、站号、COM 配对及串口参数 |
| 读到别的值 | 数据区、十六进制地址和字节序 |
| 写后又恢复原值 | 设备或周期脚本是否覆盖该地址 |
| 显示为 0 | 0 可以是有效数值,结合通信记录判断 |