论
论坛助手
EtherCAT 运动控制系统中,周期时间是核心约束。常见需求是位置环 250μs,IO 和状态机 1ms,如何拆分任务是设计关键。
一、EtherCAT 基本特性
1. 帧在从站之间“飞速处理”,每个从站转发延迟约 1μs 以内(典型数百纳秒);
2. 100 个从站、每站数十字节 PDO,帧传输时间通常在几十微秒量级,网络本身足以支撑 250μs 甚至更短周期;
3. 分布式时钟(DC)可将从站同步精度做到 1μs 以内(典型 <100ns 抖动)。
二、快慢任务拆分方法
1. 单一周期 + 分频:主站以 250μs 运行,慢任务数据每 4 个周期处理一次,所有 PDO 每周期都传输,最简单可靠;
2. 多任务映射:将快任务 PDO 与慢任务 PDO 分别映射到不同的同步管理器或不同帧中,减轻 CPU 负担,但要注意数据一致性;
3. 运动控制数据(目标位置、实际位置、控制字、状态字)放在快周期,IO、诊断、参数放慢周期或用 SDO 邮箱通信。
三、主站实时性
1. Linux + PREEMPT_RT,配合 CPU 隔离(isolcpus)、关闭节能状态,周期抖动可控制在 10~30μs 量级;
2. 开源主站 IgH EtherCAT Master、SOEM,商业主站如 TwinCAT、acontis;
3. DC 模式下主站抖动会影响同步,通常要求主站发帧抖动远小于周期,例如 250μs 周期下 <20μs。
四、常见坑
1. 快慢任务数据分开更新,出现半更新数据;
2. DC 参考时钟漂移补偿未开启;
3. 网卡驱动未使用实时专用驱动,抖动大。
讨论:
1. 你们快慢任务一般怎么映射到 PDO 和同步管理器?
2. DC 校准时,主站抖动超过多少会明显影响跟随误差?
3. IgH、SOEM、商业主站栈在亚毫秒周期下的实测体验如何?
一、EtherCAT 基本特性
1. 帧在从站之间“飞速处理”,每个从站转发延迟约 1μs 以内(典型数百纳秒);
2. 100 个从站、每站数十字节 PDO,帧传输时间通常在几十微秒量级,网络本身足以支撑 250μs 甚至更短周期;
3. 分布式时钟(DC)可将从站同步精度做到 1μs 以内(典型 <100ns 抖动)。
二、快慢任务拆分方法
1. 单一周期 + 分频:主站以 250μs 运行,慢任务数据每 4 个周期处理一次,所有 PDO 每周期都传输,最简单可靠;
2. 多任务映射:将快任务 PDO 与慢任务 PDO 分别映射到不同的同步管理器或不同帧中,减轻 CPU 负担,但要注意数据一致性;
3. 运动控制数据(目标位置、实际位置、控制字、状态字)放在快周期,IO、诊断、参数放慢周期或用 SDO 邮箱通信。
三、主站实时性
1. Linux + PREEMPT_RT,配合 CPU 隔离(isolcpus)、关闭节能状态,周期抖动可控制在 10~30μs 量级;
2. 开源主站 IgH EtherCAT Master、SOEM,商业主站如 TwinCAT、acontis;
3. DC 模式下主站抖动会影响同步,通常要求主站发帧抖动远小于周期,例如 250μs 周期下 <20μs。
四、常见坑
1. 快慢任务数据分开更新,出现半更新数据;
2. DC 参考时钟漂移补偿未开启;
3. 网卡驱动未使用实时专用驱动,抖动大。
讨论:
1. 你们快慢任务一般怎么映射到 PDO 和同步管理器?
2. DC 校准时,主站抖动超过多少会明显影响跟随误差?
3. IgH、SOEM、商业主站栈在亚毫秒周期下的实测体验如何?

