2. 机器人控制器基础
要谈延迟测试与优化,必须先建立一张“控制器内部地图”。机器人控制器并不是一块简单的单片机,而是由实时计算、运动规划、总线通信、伺服驱动与安全逻辑共同构成的软硬件系统。延迟可能出现在任何一个环节,且往往以串联方式叠加。理解控制器架构、实时操作系统、运动控制周期与通信总线,是后续定位延迟、设计测试用例、判断优化收益的前提。
一、控制器架构:从指令到关节力矩的分层链路
典型工业机器人控制器可划分为四层:应用层、规划层、实时控制层与驱动执行层。应用层负责工艺程序、轨迹示教与人机交互;规划层完成逆解、轨迹插补、速度规划与奇异点处理;实时控制层以固定周期执行伺服更新、前馈补偿与安全监控;驱动执行层通过总线把位置、速度或力矩指令下发到各关节伺服,并回读编码器与电流数据。
这四层之间并非简单调用关系,而是存在明确的时间边界。应用层可以“慢”,规划层通常为毫秒级,实时控制层则常为 125 μs 至 1 ms,驱动层电流环甚至可达 10~50 μs。延迟测试时,必须明确被测对象位于哪一层,否则测到的“总延迟”无法归因。
二、实时操作系统:延迟确定性的根基
机器人控制器普遍运行实时操作系统(RTOS)或 Linux 实时补丁(如 PREEMPT_RT、Xenomai)。实时并不等于“快”,而是“可预测”。一个 1 ms 的控制周期,如果每次抖动都在 ±5 μs 以内,系统就是确定的;如果偶尔抖动到 500 μs,即使平均很快,也会造成轨迹抖动甚至报警。
实时性主要受以下因素影响:
- 调度策略:控制任务通常采用 SCHED_FIFO 或 SCHED_RR,优先级高于普通线程。
- 中断延迟:网卡中断、定时器中断与 DMA 完成中断会打断控制任务。
- 优先级反转:低优先级任务持有互斥锁,导致高优先级控制任务等待。
- 内存与缓存:缺页异常、缓存未命中、NUMA 跨节点访问都会引入微秒级抖动。
三、运动控制周期:延迟测试的时间标尺
运动控制周期是控制器最核心的时间参数。常见配置如下:
| 层级 | 典型周期 | 主要任务 | 延迟敏感度 |
|---|---|---|---|
| 应用/规划 | 4~20 ms | 轨迹插补、逆解、逻辑判断 | 中 |
| 实时控制 | 0.5~2 ms | 伺服更新、前馈、安全监控 | 高 |
| 总线通信 | 0.25~1 ms | 指令下发、状态回读 | 高 |
| 电流环 | 10~50 μs | 力矩闭环、PWM 输出 | 极高 |
测试时,控制周期本身就是“时间标尺”。如果控制周期为 1 ms,那么单次总线延迟 200 μs 已占周期的 20%,足以影响轨迹精度。因此,延迟指标必须与控制周期一起看,不能孤立地谈“多少毫秒”。
四、通信总线:延迟最集中的物理通道
机器人控制器与伺服之间常用 EtherCAT、CANopen、Powerlink、SERCOS 等总线。以 EtherCAT 为例,其延迟主要来自:主站协议栈处理、帧在从站间的转发、从站本地处理、分布式时钟同步误差。CANopen 则受限于 1 Mbps 带宽与仲裁机制,延迟更大且更不确定。
# EtherCAT 主站周期与延迟观测示例
ethercat master
ethercat slaves
ethercat pdos
# 查看从站通信状态与工作计数器
ethercat master | grep -E "Cycle|Latency|WC"
总线延迟测试通常关注三个指标:周期抖动(cycle jitter)、帧往返时间(round-trip time)与工作计数器增量(working counter)。工作计数器不增长,说明帧未正确到达或返回,属于通信故障而非单纯延迟。
五、延迟来源全景与常见误区
把上述内容汇总,控制器延迟来源可分为五类:调度延迟、计算延迟、排队延迟、传输延迟与执行延迟。测试时最常见的误区有三个:
- 只测平均值:平均延迟 100 μs 看似优秀,但最大延迟 2 ms 已足以导致报警。必须关注 P99、最大值与抖动分布。
- 忽略时间同步:多轴系统中,各从站时钟不同步会表现为“延迟”,实际是同步误差。应先校准分布式时钟,再测延迟。
- 把总线延迟等同于系统延迟:总线只是链路一环,规划层排队与实时任务抖动往往才是大头。