跳到主要内容

远程 IO 系统

概述

远程 IO (Remote IO) 是将现场 IO 模块分散部署在设备附近, 通过工业以太网或现场总线与 PLC 控制柜通讯的架构。Darra PLC 支持三种远程 IO 接入方式:

方式实时性拓扑典型场景
EtherCAT 从站 IO硬实时 (≤ 1 ms)菊花链 / 星型高速运动控制、伺服驱动
Modbus 远程 IO软实时 (10~100 ms)星型 / 线型仪表、阀门、温控器
PROFINET IO准实时 (1~10 ms)星型西门子生态、汽车产线

远程 IO 的核心价值: 减少长距离传感器电缆, 降低布线成本, 提高维护便捷性。

远程 IO 站配置

通用步骤

所有远程 IO 设备在 IDE 中的配置流程一致:

  1. 项目树 → IO 设备 → 添加远程站
  2. 选择协议类型 (EtherCAT / Modbus / PROFINET)
  3. 选择设备型号 (从厂商 ESI/GSDML 文件导入)
  4. 配置网络参数 (IP / 站号 / 总线位置)
  5. 映射 IO 数据到 PLC 地址空间
  6. 编译下载

设备模板

IDE 内置常见远程 IO 模块的配置模板, 缩短手动配置时间:

远程 IO 站模板:
├─ Beckhoff EK1100 + ELxxxx 系列
├─ Wago 750 系列 (EtherCAT 耦合器)
├─ Advantech ADAM-6000 系列 (Modbus TCP)
├─ Siemens ET 200SP (PROFINET)
├─ Rockwell 1734 Point I/O (EtherNet/IP)
└─ 定制: 从 ESI / GSDML 导入

远程站参数

参数EtherCATModbusPROFINET
设备标识从站号 (1~65535)从站 ID (1~247)设备名称 (IO 系统唯一)
网络地址总线位置IP:PortIP + 设备名称
数据映射PDO 映射寄存器映射槽/子槽映射
周期同步DC (分布式时钟)轮询RT Class 1
诊断AL Status, 端口状态超时计数模块状态
断线行为可配置 (Freeze/Safe)可配置IOPS 评价

三种远程 IO 的比较

EtherCAT 远程 IO

  • 周期: 250 μs ~ 2 ms, 确定性最高
  • 拓扑: 菊花链, 线缆节约, 无需交换机
  • 适用: 伺服驱动、高速 IO、运动控制
  • 从站: Beckhoff EL 系列、Wago 750、Panasonic MINAS 伺服

Modbus 远程 IO

  • 周期: 10 ms ~ 100 ms, 取决于轮询节点数
  • 拓扑: 星型通过交换机, 或 RS-485 总线
  • 适用: 温控器、电磁阀、传感器
  • 从站: ADVANTECH ADAM、Moxa ioLogik、EtherCAT 网关透传

PROFINET IO

  • 周期: 1 ms ~ 10 ms, RT Class 1
  • 拓扑: 星型, 需交换机
  • 适用: 西门子生态、汽车产线
  • 设备: ET 200SP、SINAMICS 驱动、第三方 GSDML 设备

与本地 IO 的混合使用

Darra PLC 的 IO 地址空间统一管理, 远程 IO 与本地 IO 共享同一地址空间:

IO 地址空间规划:
%IX0 ~ %IX31 —— 本地 EtherCAT 从站 DI
%IX32 ~ %IX63 —— 远程 EtherCAT 从站 DI
%IX64 ~ %IX95 —— Modbus 远程 IO DI
%IX96 ~ %IX127 —— PROFINET 远程 IO DI
%IW200 ~ %IW299 —— 模拟输入 (本地 + 远程混合)
%QX0 ~ %QX31 —— 本地 EtherCAT 从站 DO
%QX32 ~ %QX63 —— 远程 EtherCAT 从站 DO
...

混合使用的好处

  • 统一编程: SCL 代码里 %IX100.0 不管对应哪个协议, 直接使用
  • 灵活扩展: 产线扩容时只需要加远程站, 不改 PLC 程序
  • 故障隔离: 本地 IO 不受远程网络影响, 远程某站断线不影响其他站
  • 分层响应: 急停类信号接本地 IO (硬实时), 监控类信号接远程 IO (非实时)

混合使用示例: 包装产线

描码站 (远程 Modbus IO):
- 光电传感器 × 4 → %IX32.0~%IX32.3
- 气缸电磁阀 × 2 → %QX32.0~%QX32.1

封箱站 (远程 EtherCAT IO):
- 热封温度 AI × 2 → %IW210, %IW212
- 热封加热器 AO → %QW210

输送带 (本地 EtherCAT IO):
- 急停按钮 × 2 → %IX0.0, %IX0.1
- 伺服驱动器 × 1 → EtherCAT PDO 映射

远程 IO 诊断

IDE 的远程 IO 诊断面板提供统一的设备状态视图:

诊断概览

指标说明
在线状态在线 / 离线 / 警告
通讯延迟当前往返时间 (RTT)
丢包率通讯失败的比例
错误计数自启动以来的通讯错误数
最后通讯最后成功通讯的时间戳

按协议诊断

EtherCAT 远程 IO:

  • AL Status 码 (从站当前状态: INIT/PREOP/SAFEOP/OP)
  • 端口状态 (A 口/B 口/C 口/D 口, 链接质量)
  • 工作计数器 WKC (确认期望 WKC 与实际 WKC 一致)
  • DC 同步偏差 (各从站时钟偏移量)

Modbus 远程 IO:

  • 响应时间直方图 (最近 100 次请求的响应时间分布)
  • 功能码错误统计 (非法功能码 / 非法地址 / 设备故障)
  • 轮询超时记录 (哪台设备、哪组寄存器经常超时)

PROFINET IO:

  • 设备状态 (正常运行 / 故障 / 不可用)
  • IOPS 评价 (Provider/Consumer 状态)
  • 数据交换周期 (与设定周期对比偏差)
  • 端口链路状态 (链路速度 / 双工模式)

断线保护策略

远程 IO 断线时, 每个 IO 设备可独立配置保护行为:

// 在 IDE 中配置 (属性面板)
remoteDevice.OnTimeout = IOTimeoutBehavior.FreezeLast; // 保持最后值
// 或
remoteDevice.OnTimeout = IOTimeoutBehavior.SetToSafe; // 设为安全值
// 或
remoteDevice.OnTimeout = IOTimeoutBehavior.Passthrough; // 不干预, 由程序处理

推荐做法:

  • 安全相关输出 (急停、安全门) → SetToSafe (输出 0)
  • 过程值输出 (温度、压力) → FreezeLast (保持最后正常值)
  • 纯输入 (传感器状态) → 由 PLC 程序判断通讯状态后走安全分支

远程 IO 网络拓扑

星型拓扑 (Modbus / PROFINET)

          ┌─────────────┐
│ PLC 控制柜 │
│ Darra PLC │
└─────────────┘
│ 交换机
┌─────┼──┬─────┐
│ │ │ │
┌─┴─┐ ┌─┴─┐ ┌─┴─┐
│IO │ │IO │ │IO │
│站1│ │站2│ │站3│
└───┘ └───┘ └───┘
Modbus PROFINET
TCP RTU IO

菊花链拓扑 (EtherCAT)

  ┌─────────────┐
│ PLC 控制柜 │
│ DarraRT_Eth │
└──────┬──────┘
│ EtherCAT
┌────┴────┐
│ IO 站 1 │ ← 本地从站
└────┬────┘
┌────┴────┐
│ IO 站 2 │ ← 远程从站 1
└────┬────┘
┌────┴────┐
│ IO 站 3 │ ← 远程从站 2
└─────────┘

混合拓扑

  ┌─────────────┐
│ PLC 控制柜 │
│ Darra PLC │
└──────┬──────┘

┌──────┴──────┐
│ 交换机 │
└──┬──┬──┬───┘
│ │ │
┌──┴┐ │ │ ┌──────────────┐
│Mod│ │ └──│ PROFINET 网关 │
│bus│ │ └──────┬───────┘
│IO │ │ ┌──────┴───────┐
└───┘ │ │ ET 200SP 机架 │
│ │ DI×16 DO×8 │
┌─────┴┐ └──────────────┘
│EtherCAT │
│ 菊花链 │
│ IO 站 1~4 │
└────────────┘

带宽与延迟估算

大远程 IO 网络需关注通讯带宽:

EtherCAT

总线帧率 = 1000 Hz (1 ms 周期)
每帧长度 ≈ 44 + Σ(每站数据长度) 字节
所需带宽 ≈ 帧率 × 帧长度 × 8 × 1.2 (开销)

例: 20 站, 每站 32 字节 PDO 数据
每帧 = 44 + 20 × 32 = 684 字节
带宽 = 1000 × 684 × 8 × 1.2 ≈ 6.6 Mbps
100 Mbps 以太网绰绰有余 (< 10%)

Modbus TCP

轮询周期 = 10 ms / 站 (单站, 125 寄存器一次)
20 站轮流: 周期 = 20 × 10 = 200 ms
带宽 = 20 × (帧头 12 + 数据 250) × 8 / 0.2 ≈ 210 kbps

PROFINET IO

RT Class 1 周期 = 1 ms (典型)
每站每周期 128 字节 IO 数据
10 站: 带宽 = 1000 × 10 × 128 × 8 × 1.1 ≈ 11.3 Mbps

远程 IO 扩展建议

场景推荐方案理由
新设备 10 m 内本地 EtherCAT 菊花链成本最低, 实时性最高
分散 > 50 m远程 EtherCAT 光纤扩展距离远, 需实时
已经有 Modbus 仪表Modbus 远程 IO 网关兼容现有设备
西门子 PLC 改造PROFINET 远程 IO兼容现有 IO 模块
纯 IO 监控, 无运动Modbus TCP 远程 IO成本低, 配置简单

远程 IO 配置流程 (IDE 操作)

1. 添加远程站

在项目树中右键 "IO 设备" → "添加远程站":

选择协议: [EtherCAT] [Modbus] [PROFINET]
选择设备: [从模板选择] [从 ESI 导入] [从 GSDML 导入]
网络参数: [按协议填写]
IO 映射: [自动分配 / 手动分配]

2. 自动地址分配

启用自动分配, IDE 按远程站添加顺序分配连续地址:

远程站 1 (EtherCAT, 16 DI + 8 DO):
→ %IX100.0~%IX115.7, %QX100.0~%QX107.7

远程站 2 (Modbus, 32 保持寄存器):
→ %MW200~%MW231

手动分配可在自动分配基础上微调。

3. 编译验证

IDE 编译时自动检查:

  • 地址空间是否重叠
  • 参数是否超出范围
  • 驱动是否可用
  • 远程站拓扑是否可达

限制

  • 远程 IO 总延迟 = 网络延迟 + 设备处理时间 + 通讯周期, 不适合要求 < 1 ms 确定性响应的安全 IO
  • 远程 IO 站的断线诊断依赖于心跳/超时, 心跳间隔影响检测速度 (通常 2~3 × 心跳间隔)
  • 混合拓扑需要确保交换机 QoS 配置合理, 避免 EtherCAT 帧被非实时流量阻塞
  • 远程 IO 站数量受协议限制 (EtherCAT 理论 65535, Modbus 247, PROFINET 约 256)