跳到主要内容

EtherCAT IO

EtherCAT 是 Darra PLC 的主要实时 IO 总线,支持 CiA 401 数字/模拟 IO 模块和 CiA 402 伺服驱动。通过 PDO 映射实现确定性数据交换,典型周期时间 1ms。

架构

PDO 映射

PDO (Process Data Object) 是 EtherCAT 实时数据交换的基本单元。每个从站通过 ESI 文件定义其 PDO 内容。

TxPDO (从站 → 主站)

典型内容CiA 索引数据类型说明
数字输入0x6000BOOL/BYTEDI 状态
模拟输入0x6000INT16ADC 原始值
状态字0x6041UINT16伺服状态 (CiA 402)
实际位置0x6064INT32编码器反馈 (counts)

RxPDO (主站 → 从站)

典型内容CiA 索引数据类型说明
数字输出0x7000BOOL/BYTEDO 控制
模拟输出0x7000INT16DAC 目标值
控制字0x6040UINT16伺服控制 (CiA 402)
目标位置0x607AINT32位置指令 (counts)

ESI 导入

通过 ESI (EtherCAT Slave Information) XML 文件自动配置从站:

var esiParser = new ESIParser();
var slaveInfo = esiParser.Parse("Beckhoff_EL1008.xml");

// 自动生成 PDO 映射
foreach (var pdo in slaveInfo.TxPDOs)
{
Console.WriteLine($"TxPDO: 0x{pdo.Index:X4} - {pdo.Name}");
foreach (var entry in pdo.Entries)
{
Console.WriteLine($" 0x{entry.Index:X4}:{entry.SubIndex:X2} " +
$"{entry.DataType} {entry.BitLength}bit");
}
}
ESI 文件来源

ESI 文件通常由从站厂商提供,也可从 ETG 官网下载。Darra PLC 安装目录的 ESI/ 文件夹包含常见从站的 ESI 文件。

CiA 401 — 数字/模拟 IO

CiA 401 设备配置文件定义了标准 IO 模块的对象字典:

对象索引说明
数字输入0x6000-0x6007最多 256 个 DI
数字输出0x7000-0x7007最多 256 个 DO
模拟输入0x600016 位 ADC 值
模拟输出0x700016 位 DAC 值

模拟量缩放

模拟输入/输出需要从原始值转换为工程单位:

// 原始值 (0-32767) → 工程值 (0-10V)
double voltage = rawValue * 10.0 / 32767.0;

// 或使用 IOMapping 的 ScaleFactor
mapping.Add(new IOPoint {
Address = "%IW100",
ScaleFactor = 10.0 / 32767.0,
Unit = "V"
});

CiA 402 — 伺服驱动

CiA 402 定义了伺服驱动的标准状态机和控制模式。Darra PLC 主要使用 CSP (Cyclic Synchronous Position) 模式。

伺服状态机

位置单位转换

伺服位置数据从 PDO 的脉冲计数自动转为 PLC 里的弧度/角度:

PDO (int32 counts) × 缩放因子 → 关节位置 (double rad)

缩放因子在添加伺服从站时由向导自动填好,常见型号预置,无需手工改。如需自定义,打开从站属性 → 轴参数 → 脉冲/圈 和 齿轮比。

IO 地址映射示例

将 EtherCAT 从站映射到 PLC 地址:

PLC 地址EtherCAT 从站PDO说明
%IX0.0~0.7Slave 1 (EL1008)0x6000:018 路 DI
%QX0.0~0.7Slave 2 (EL2008)0x7000:018 路 DO
%IW100~103Slave 3 (EL3064)0x6000:11~144 路 AI

常见从站厂商

厂商型号系列产品定位
BeckhoffEL 系列广泛, 生态完善
OmronNX 系列与 NJ/NX PLC 搭配
YaskawaΣ-7, JEPMC伺服 + IO
汇川SV660N, IS800国产高性价比
台达AS 系列中小型机械
松下Minas A6高端伺服
三菱MR-JEViQ-R 生态
SMCEX600气动
Wago 750-EC分布式 IO模块化

扫描后 IDE 会在 ESI 库里查型号信息, 找到对应 PDO 默认映射。

网卡选择

EtherCAT 主站必须用独立网卡, 避免业务流量干扰:

  • 推荐 Intel I210 / I219 / I225 等成熟芯片
  • Realtek 8111 系列能跑但偶发抖动
  • USB 网卡不推荐 (延迟不可控)
  • 双网卡冗余时两张卡最好同型号同版本驱动

IDE 里分配网卡:

  1. 项目树 → IO 设备 → 属性 → 网卡
  2. 下拉选择可用网卡
  3. 确认"独占模式"已勾选 (其他协议栈不能用这张卡)

从站地址

EtherCAT 从站有两种地址:

地址如何定用途
物理地址链路拓扑自动分配, 从近到远 1 起始主站初始化用
配置地址项目里手动指定应用层使用

配置地址稳定, 即使增删从站, 只要别的从站的配置地址不变, PLC 程序不受影响。推荐:

  • 工程里一次性分配配置地址 (例如 Slave1 = 1001)
  • 更换从站硬件后, 配置地址不变, PLC 代码不用改

PDO 配置变更

从站默认 PDO 映射可能不满足需求, 可手动修改:

  1. 打开从站节点 → PDO 映射页
  2. 查看可选 PDO (由 ESI 定义)
  3. 勾选要用的, 取消不用的
  4. 编辑 PDO 内 Entry (支持的 CoE 对象和子索引)
  5. 保存, 主站会在 SAFE-OP 切换前下发

有些从站要求在特定状态 (PRE-OP) 才能改映射, IDE 会自动处理。

邮箱设置

PDO 用于实时过程数据, 邮箱 (Mailbox) 用于非实时的 SDO / FoE / EoE:

邮箱协议用途
CoE (CAN over EtherCAT)最常用, SDO 参数读写
EoE (Ethernet over EtherCAT)透传 Ethernet 帧
FoE (File over EtherCAT)固件更新
SoE (Servo over EtherCAT)CiA 402 伺服 (较少, 多数用 CoE)
VoE (Vendor over EtherCAT)厂商特定

邮箱配置:

  • 邮箱 Size: 默认 128 字节, 复杂参数可提到 512
  • 邮箱 Tx/Rx 起始地址: ESI 定义, 通常不改

启动配置 (Startup SDO)

启动时需要下发给从站的 SDO 列表, 在 SAFE-OP 切换之前执行:

项目树 → 从站 → 启动配置 → 添加 SDO
Index 0x6098 SubIdx 0 Value 1 (Homing Method = 1)
Index 0x6099 SubIdx 1 Value 10000 (Homing Speed 1)
Index 0x6099 SubIdx 2 Value 1000 (Homing Speed 2)
...

IDE 会在每次启动 EtherCAT 时自动发这些 SDO, 保证从站参数一致。

故障诊断

WKC 监视

每个 PDO 帧返回时应该累加 Working Counter:

WKC 值含义
期望值所有从站都成功处理
低于期望某从站没处理 (掉线或状态错)
0主站没发出或全部从站离线

持续低 WKC → 报警 → PLC 进入安全模式

从站状态监控

每个从站都暴露:

  • 当前 AL_STATUS (INIT/PRE-OP/SAFE-OP/OP)
  • AL_STATUS_CODE (错误码)
  • 端口链路状态 (0/1/2/3 端口上是否有线)
  • RX/TX 错误计数

IDE 的拓扑视图把这些信息用图形展示, 红色图标 = 故障。

热插拔支持

EtherCAT 对热插拔的支持取决于从站:

支持等级行为
不支持拔任一从站 → 整个 EtherCAT 网停
部分支持拔末端从站可恢复, 中间不行
完整支持 (Hot Connect Groups)任意从站热插拔, 其他保持运行

IDE 支持把从站分组为"热插拔组", 某组整体可插拔:

项目 → 从站 → 属性 → 热插拔 → 设为独立组

运行中插入该组会触发在线扫描和 PDO 重新分配。

诊断工具

IDE 内置 EtherCAT 诊断:

  • 网络拓扑图: 可视化所有从站和连接
  • 在线 PDO 查看: 看每个从站当前 PDO 数据
  • CoE 浏览器: 像 OPC UA Browser 一样浏览 CoE 对象字典
  • 错误计数器: 每端口的 CRC / Link Lost / Lost Link 统计
  • 帧跟踪: 对某从站开启帧跟踪, 记录最近 1000 帧

排错

症状处理
扫描不到任何从站网卡未绑定 DarraRT_Eth; 从站未上电
扫到 N 个后断第 N+1 个线缆或从站故障
卡在 SAFE-OPPDO 映射有问题, 查 AL_STATUS_CODE
进入 OP 瞬间掉回周期时间对该从站太短, 加大
DC 偏差持续增大参考时钟选错, 重新指定
WKC 偶发错端口 RX 错误累加, 换网线
伺服报警 0x1F00通讯中断, 检查从站供电