PLC 与场景 ModbusRTU 通讯
本教程演示如何让 PLC在线模拟器 通过 PLCAPI 与 iScene 场景进行 Modbus RTU 数据交换:场景中的通讯组件接管父 PLC 指定的逻辑口,把串口设备的数据映射到场景变量,或把场景操作写回寄存器。
通信架构
┌─────────────────── 父页面 ───────────────────┐
│ PLC在线模拟器(运行梯形图程序) │
│ ┌────────────────────────────┐ │
│ │ MBUS_CTRL / MBUS_INIT │ 逻辑口 │
│ │ (Port0 / Port1) │ Port0 │
│ └────────────┬───────────────┘ │
└────────────────┼────────────────────────────┘
│ postMessage(plc-variable-protocol)
┌────────────────┼────────────────────────────┐
│ iScene(iframe 内嵌) │
│ ┌────────────┴───────────────┐ │
│ │ PLCAPI 通讯组件 │ │
│ │ └─ API Modbus RTU 启用 │ │
│ │ 角色:从站 / 主站 │ │
│ │ 端口:Port0 / Port1 │ │
│ │ 变量 ↔ 寄存器 绑定 │ │
│ └────────────────────────────┘ │
└─────────────────────────────────────────────┘数据流向:
- 场景 → PLC:iScene 把"组件变量 ↔ 寄存器"的绑定数据,通过 PLCAPI 交给父 PLC 的指定逻辑口;
- PLC → 串口设备:由父 PLC 中对应的 Modbus 指令(
MBUS_CTRL/MBUS_MSG或MBUS_INIT/MBUS_SLAVE)完成实际收发。
第一步:在 iScene 中添加通讯组件
- 打开场景设置面板 → 📡 通信组件,点击"+"添加一个 PLCAPI 通讯组件;
- 在组件卡片中启用 API Modbus RTU,按你的场景选择:
| 配置 | 说明 |
|---|---|
| 角色 | 从站 / 主站(决定由哪一方发起通信) |
| 端口 | Port0 / Port1(须与父 PLC 指令中的逻辑口一致) |
| 从站地址 | 如 1,3,5~10(单地址、逗号分隔或区间) |
| 轮询(ms) | 主站模式生效,≥50 |
第二步:配置寄存器绑定
在 PLCAPI 通讯组件中点击添加绑定,把组件变量映射到寄存器:
| 绑定项 | 示例 | 说明 |
|---|---|---|
| 数据区 | holding | 保持寄存器(03 读 / 16 写) |
| 寄存器地址 | 0 | 0 起始地址 |
| 读写权限 | 读写 | 双向同步 |
| 组件变量 | 水箱1.液位 | 场景侧变量 |
例如:把 水箱1.液位 绑定到保持寄存器地址 0,PLC 写入寄存器 0 的数值就会驱动水箱液位变化;在面板输入框中修改液位,也会写回寄存器。
第三步:编写 PLC 程序
方式 A:父 PLC 作主站
父 PLC 使用主站指令轮询场景:
网络 1:MBUS_CTRL(每周期使能,Port0)
SM0.0
--| |------------------------------[MBUS_CTRL]--
Mode = 1
Baud = 2(9600)
Parity = 0
Port = 0
Timeout = 1000网络 2:MBUS_MSG 读写场景寄存器
- 读取:
RW = 0,读到的数据存放到 V 区变量,参与梯形图逻辑; - 写入:
RW = 1,把 PLC 计算结果写入指定寄存器,驱动场景组件。
方式 B:父 PLC 作从站
网络 1:MBUS_INIT(每周期使能,Port0)
SM0.0
--| |------------------------------[MBUS_INIT]--
Mode = 1
Addr = 2(从站地址)
Baud = 2(9600)
Parity = 0
Port = 0
Delay = 0
MaxIQ = 256
MaxAI = 56
MaxHold = 1000
HoldStart = &VB0网络 2:MBUS_SLAVE(每周期使能)
SM0.0
--| |------------------------------[MBUS_SLAVE]--此时 iScene 的 API Modbus RTU 组件以主站角色轮询父 PLC,读写其 V 区/保持寄存器。
第四步:运行验证
- 在 PLC在线模拟器 中启动仿真,确认梯形图正常运行;
- 在 iScene 中观察 PLCAPI 卡片状态:应显示已连接与绑定变量数;
- 写入测试值:在 PLC 侧给寄存器赋值,场景组件应立即响应;在场景中操作组件,PLC 侧变量同步更新;
- 若主站轮询无响应,检查:
- 端口是否一致(组件端口 = 指令 Port);
- 从站地址是否匹配;
- 主站模式下轮询周期 ≥ 50ms;
- 波特率/校验位是否一致。
典型应用
- 水箱液位监控:PLC 通过寄存器写入液位,场景水箱实时显示,配合高低位开关触发控制逻辑;
- 远程面板控制:场景面板按钮写回寄存器,PLC 读取后驱动梯形图逻辑(相当于 HMI 与 PLC 的通信);
- 多从站场景:一个场景模拟多个从站(地址区间),PLC 主站按地址分别读写。
进阶阅读
- 通讯组件完整配置见 通讯组件;
- 变量绑定与双向同步机制见 PLC 变量绑定与通信;
- Modbus 指令参数详解见 Modbus RTU 通信指令。