文档中心
实例教程
PLC 与场景 ModbusRTU 通讯

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 中添加通讯组件

  1. 打开场景设置面板 → 📡 通信组件,点击"+"添加一个 PLCAPI 通讯组件;
  2. 在组件卡片中启用 API Modbus RTU,按你的场景选择:
配置说明
角色从站 / 主站(决定由哪一方发起通信)
端口Port0 / Port1(须与父 PLC 指令中的逻辑口一致)
从站地址如 1,3,5~10(单地址、逗号分隔或区间)
轮询(ms)主站模式生效,≥50

第二步:配置寄存器绑定

在 PLCAPI 通讯组件中点击添加绑定,把组件变量映射到寄存器:

绑定项示例说明
数据区holding保持寄存器(03 读 / 16 写)
寄存器地址00 起始地址
读写权限读写双向同步
组件变量水箱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 区/保持寄存器。

第四步:运行验证

  1. 在 PLC在线模拟器 中启动仿真,确认梯形图正常运行;
  2. 在 iScene 中观察 PLCAPI 卡片状态:应显示已连接与绑定变量数;
  3. 写入测试值:在 PLC 侧给寄存器赋值,场景组件应立即响应;在场景中操作组件,PLC 侧变量同步更新;
  4. 若主站轮询无响应,检查:
    • 端口是否一致(组件端口 = 指令 Port);
    • 从站地址是否匹配;
    • 主站模式下轮询周期 ≥ 50ms;
    • 波特率/校验位是否一致。

典型应用

  • 水箱液位监控:PLC 通过寄存器写入液位,场景水箱实时显示,配合高低位开关触发控制逻辑;
  • 远程面板控制:场景面板按钮写回寄存器,PLC 读取后驱动梯形图逻辑(相当于 HMI 与 PLC 的通信);
  • 多从站场景:一个场景模拟多个从站(地址区间),PLC 主站按地址分别读写。

进阶阅读