EtherCAT

EtherCAT PDO 映射深度解析:DC 同步 · WcState 监控 · 故障排查

EtherCAT PDO 映射 DC Sync WcState 2025-11-08 · 尚工

一、PDO vs SDO——搞清楚再配置

PDO(Process Data Object)是 EtherCAT 周期性实时数据通道,每个控制周期自动传输,延迟可低至 100μs 级别。SDO(Service Data Object)是非周期配置通道,用于读写设备参数(如驱动器额定电流),不适合实时控制。

二、PDO 映射配置完整流程

  1. 在 TwinCAT XAE 中扫描设备,导入 ESI 文件
  2. 进入设备的 Process Data 标签页
  3. 确认默认 PDO 映射是否满足需求(多数情况够用)
  4. 若需自定义:在 Sync Manager 中调整 PDO 条目
  5. 将 PDO 变量拖拽链接到 PLC 变量(或使用 AT 语法直接映射)
// AT 语法直接映射 PDO 到 PLC 变量
VAR
    nActPos  AT %I* : DINT;  // 输入:驱动器实际位置
    nCtrlWd  AT %Q* : WORD;  // 输出:控制字
    nStsWd   AT %I* : WORD;  // 输入:状态字
END_VAR

三、DC 同步(Distributed Clocks)配置

DC 同步让所有 EtherCAT 从站在同一时刻更新 PDO 数据,消除各从站之间的时间偏差。对于多轴同步控制(如电子凸轮),DC 同步是必须配置的。

在设备的 DC 标签中选择 DC-Synchron 模式,Sync0 周期应与 NC Task 周期一致(通常 1ms 或 2ms)。

注意:如果多个驱动器的 Sync0 周期不一致,会导致轴间同步抖动,电子凸轮跟随误差增大。统一设置为相同周期。

四、WcState 监控与报警 FB

WcState(Working Counter State)反映 EtherCAT 帧的完整性。值为 0 表示正常;非 0 表示有从站丢失或通信错误。

// WcState 监控 FB(带 500ms 防抖,避免瞬态误报)
FUNCTION_BLOCK FB_WcStateMonitor
VAR_INPUT
    nWcState    : UINT;
    tDebounce   : TIME := T#500MS;
END_VAR
VAR_OUTPUT
    bEcatFault  : BOOL;
END_VAR
VAR
    tonDebounce : TON;
END_VAR

tonDebounce(IN := nWcState <> 0, PT := tDebounce);
bEcatFault := tonDebounce.Q;

五、常见故障排查速查表