PDO(Process Data Object)是 EtherCAT 周期性实时数据通道,每个控制周期自动传输,延迟可低至 100μs 级别。SDO(Service Data Object)是非周期配置通道,用于读写设备参数(如驱动器额定电流),不适合实时控制。
// AT 语法直接映射 PDO 到 PLC 变量 VAR nActPos AT %I* : DINT; // 输入:驱动器实际位置 nCtrlWd AT %Q* : WORD; // 输出:控制字 nStsWd AT %I* : WORD; // 输入:状态字 END_VAR
DC 同步让所有 EtherCAT 从站在同一时刻更新 PDO 数据,消除各从站之间的时间偏差。对于多轴同步控制(如电子凸轮),DC 同步是必须配置的。
在设备的 DC 标签中选择 DC-Synchron 模式,Sync0 周期应与 NC Task 周期一致(通常 1ms 或 2ms)。
注意:如果多个驱动器的 Sync0 周期不一致,会导致轴间同步抖动,电子凸轮跟随误差增大。统一设置为相同周期。
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;