总线周期压到 250 微秒,关节的位置误差为什么只降了两成
EtherCAT 的周期常被当成同步精度的代名词,六轴机器人把周期从 1 ms 压到 250 µs,带宽占用翻四倍,看上去该有一次明显提升。把环路的延迟逐项拆开,总线只占其中四分之一,缩到四分之一后总延迟从 2.0 ms 降到 1.65 ms,末端误差从 1.0 mm 变成 0.82 mm。真正决定精度的两段,一段在编码器滤波,一段在驱动器内部的插值。
一毫秒的周期能装下什么
一台六轴协作机器人,关节驱动器跑 EtherCAT,主站周期 1 ms,通信速率 100 Mbit/s。每个周期主站要下发六组目标位置与控制字,收回六组实际位置与状态,按每轴 12 字节算,一个周期 72 字节,加上帧头与工作计数器约 44 字节,报文总量在 120 字节上下。
1 ms 内 100 Mbit/s 能传 12.5 kB,120 字节占 1%。把周期压到 250 µs,可用带宽变成 3.1 kB,同一份报文占 3.9%。从带宽角度,1 ms 周期远远没跑满,压周期的理由不在带宽。EtherCAT 的帧是边传边处理的,从站读到属于自己的那段数据就转发,一帧能穿过整条链路,所以从站数量对周期的影响远小于传统轮询总线。这也是它在多轴设备上取代脉冲方向与模拟量接口的原因。
真正被周期决定的是另外两件事:指令的龄期,和采样时刻的一致性。龄期决定了控制器算出的目标值在多久之后才被执行,一致性决定了六个关节是不是在同一时刻采样。前者是延迟问题,后者是同步问题,两者常被混为一谈。
分布式时钟对齐的是时刻
EtherCAT 的分布式时钟机制,是在从站里各放一个本地时钟,由主站选一个参考时钟,周期性把偏移量和漂移率写进各从站的寄存器,让所有从站的时钟对齐到同一时间基准。对齐之后,主站可以指定一个系统时刻,让所有从站在同一刻锁存编码器、在同一刻更新 PWM。
这个机制的精度在百纳秒量级。参考实现给出的偏移补偿分辨率是 10 ns 量级,实际系统里受晶振温漂与传播延迟测量误差影响,稳定在 ±100 ns 上下。相对 1 ms 的周期,这是万分之一。也就是说,周期从 1 ms 缩到 250 µs,同步精度几乎不会变,因为它本来就不是被周期限制的。
被周期限制的是另一件事:从站什么时候拿到新指令。帧到达时刻在一个周期内是固定的,但指令从主站算完到写进驱动器,平均要等半个周期。1 ms 周期对应 0.5 ms 的平均龄期,250 µs 对应 0.125 ms。这是缩周期唯一确定能拿到的东西。
延迟换算成毫米
把龄期换算成位置误差,用最朴素的运动学就够。关节以 1 rad/s 转动时,1 ms 的延迟对应 1 mrad 的角度滞后。臂长 0.5 m,末端位移是 0.5 mm。六轴的误差不会简单相加,某些姿态下互相抵消,某些姿态下叠加,工程上按最坏情况取 1 mm。
这个数听起来不大,但它和另一条指标撞在一起:轨迹跟踪的容许误差。精密装配要求末端重复定位到 0.05 mm,1 mm 的滞后意味着机器人必须提前 1 ms 把目标值送出去,也就是在轨迹规划里做时间前移补偿。补偿做得准不准,取决于延迟是否稳定,而不取决于延迟是否小。
延迟稳定,前移量就是常数,补偿干净。延迟随负载波动,前移量就得跟着变,补偿本身变成一个新的误差源。缩周期改善的是延迟的绝对值,对稳定性的帮助有限,因为抖动的主要来源是主站操作系统的调度,不是总线。
图 1 环路延迟的四段构成与两种周期(依据原文第 3 节绘制)
电流环为什么留在本地
有人会问,既然周期能压到 250 µs,为什么不干脆压到 50 µs,把电流环也搬到总线上。算术上很快就到头了。50 µs 周期下,100 Mbit/s 的可传数据是 625 字节,六轴的电流指令加反馈按每轴 12 字节算要 72 字节,带宽还够,占 12%。问题出在抖动上,不在带宽上。
主站如果是通用操作系统上的软件栈,调度抖动在几十微秒量级,一次抖动就能吃掉 50 µs 周期的大半。电流环对采样时刻的敏感度远高于位置环,因为它的被控对象时间常数只有毫秒级,采样间隔抖动 20% 就会在电流波形上留下可见的纹波。所以业界的做法是固定的:电流环留在驱动器里,跑 20 kHz,用本地 ADC 与本地 PWM,总线只传力矩或位置指令。
这个分层不是妥协,是分工。本地环负责快速、连续、对时间敏感的部分,总线负责慢速、离散、对一致性敏感的部分。把两者混在一条总线上,等于用网络的时间精度去挑战晶振的时间精度。
缩周期只拿回两成
把环路延迟逐段列出来,账就清楚了。编码器采样与滤波占 1 个位置环周期,1 ms。总线传输平均半个周期,0.5 ms。驱动器内部插值与斜坡限制 0.5 ms。PWM 更新延迟半个载波周期,20 kHz 下 25 µs。合计 2.025 ms。
周期从 1 ms 压到 250 µs,只有总线那一段从 0.5 ms 变成 0.125 ms,总延迟降到 1.65 ms,降幅 18.5%。末端误差从 1.0 mm 降到 0.82 mm,与延迟同比例。这就是缩周期的全部收益。
相位裕度的账同样不好看。位置环穿越频率按 50 Hz 算,2.025 ms 的延迟带来 36.5° 的相位滞后,1.65 ms 带来 29.7°,回来 6.8°。若原设计的相位裕度是 45°,这 6.8° 把它抬到 51.8°,仍然要靠在控制器里加微分或者降增益才敢把带宽往上提。想把滞后压到 20° 以内,延迟得降到 1.1 ms 以下,而只动总线做不到,必须同时砍掉编码器滤波的一个周期。
图 2 总线周期与环路延迟的关系(依据原文第 4 节绘制)
砍滤波周期有代价。编码器滤波的作用是压掉细分噪声与机械振动带来的高频分量,1 个周期的滑动平均在 1 kHz 采样下把 500 Hz 以上的分量衰减 3 dB 以上。去掉它,位置反馈里的噪声直接进入微分环节,速度估计的方差会翻倍。这条路上没有免费的一步。
载波相位要对齐
还有一处比周期更容易被忽略。分布式时钟让六个从站在同一时刻锁存编码器,但如果六个驱动器的 PWM 载波相位各自随机,采样时刻对齐并不等于开关时刻对齐。六路 PWM 的开关噪声会在同一时刻叠加到电流采样上,采样窗口如果正好落在开关沿附近,读数就会被噪声污染。
常见的做法是用分布式时钟的同步信号去复位本地载波计数器,让所有从站的载波同相。这样开关沿在时间上重合,采样点可以统一放在载波谷点,避开所有开关动作。代价是电磁干扰的能量在时间上集中,辐射峰值抬高,屏蔽与滤波要相应加强。
另一条路是刻意错开载波相位,把干扰在时间上摊平,代价是每个驱动器的采样窗口不同,电流环之间出现固定的相位差,多轴联动的力矩分配会有轻微的不对称。两条路都不完美,选哪条取决于设备更怕干扰还是更怕不对称。
一句话:总线周期买的是指令龄期,买不到环路延迟,也买不到同步。
内容来源:Energies(MDPI,CC BY 4.0 开放获取)
原文标题:Synchronization of Electrical Drives via EtherCAT Fieldbus Communication Modules
作者:Marcin Paprocki, Krystian Erwiński
DOI 或链接: https://doi.org/10.3390/en15020604
配图说明:自行绘制,为原理示意,非原文原图复制
改动声明:对开放获取文献的技术编译与解读,标题、行文与配图为原创
来源:21ic电子网





