4. 实时系统核心概念
在机器人实时运动控制系统中,“实时”并不等于“快”,而是指系统能够在确定的时间约束内完成计算并输出控制量。一个控制周期为 1 ms 的伺服环路,如果偶尔延迟到 3 ms 才输出,即使平均速度再快,也可能造成关节抖动、轨迹偏差甚至机械冲击。因此,理解硬实时与软实时、任务调度、优先级、中断延迟、抖动、确定性以及实时性能指标,是开发可靠运动控制器的前提。
一、硬实时与软实时:约束的性质不同
硬实时要求任务必须在截止时间前完成,一旦超时即视为系统失败,可能带来安全风险或不可逆后果。例如电流环控制、编码器采样、急停响应、关节位置闭环,都属于硬实时任务。它们的截止时间通常由机械与电气特性决定,超时会导致失稳。
软实时则允许偶尔超时,只要整体服务质量可接受即可。例如上位机轨迹预览、状态日志上传、人机界面刷新、非关键传感器数据记录,通常属于软实时任务。超时只会降低体验,不会立即造成危险。
二、任务调度与优先级:让关键任务先执行
实时系统通常采用优先级抢占式调度。每个任务被赋予优先级,高优先级任务就绪时可以打断低优先级任务。常见策略包括:固定优先级调度(如 Rate Monotonic,周期越短优先级越高)、最早截止时间优先(EDF)、时间片轮转(用于同优先级软实时任务)。
在机器人控制器中,典型任务优先级从高到低可安排为:急停与安全监控 → 电流环 → 速度环 → 位置环 → 轨迹插补 → 通信与日志。优先级反转是常见陷阱:低优先级任务持有高优先级任务所需的锁,导致高优先级任务被阻塞。解决方法是使用优先级继承或优先级天花板协议。
三、中断延迟、抖动与确定性
中断延迟指从中断信号到达 CPU 到中断服务程序开始执行的时间,包括硬件响应、关中断时间、中断控制器排队等。对于电流环和编码器采样,中断延迟直接决定控制精度。若中断被长时间关闭,采样就会丢失或延迟,导致电流纹波增大。
抖动是任务实际执行时刻与理想周期时刻之间的偏差。例如控制周期设定为 1 ms,实际在 0.95 ms 到 1.12 ms 之间波动,抖动约为 170 μs。抖动会引入速度估计误差,使微分项噪声放大,最终表现为关节异响或轨迹不平滑。
确定性强调最坏情况可预测,而不是平均性能好。一个系统即使平均延迟只有 50 μs,但最坏延迟达到 5 ms,也不能称为确定性实时系统。实时开发中必须关注 WCET(最坏执行时间)和 WCRT(最坏响应时间)。
四、实时性能指标与常见误区
评估机器人实时性能时,常用指标包括:控制周期、中断延迟、任务响应时间、抖动、超时率、CPU 占用率、上下文切换次数、最坏执行时间。下表给出典型参考范围。
| 指标 | 含义 | 典型目标 | 超限影响 |
|---|---|---|---|
| 中断延迟 | 中断到 ISR 执行的时间 | < 10 μs | 采样延迟、电流环失真 |
| 周期抖动 | 实际周期与理想周期偏差 | < 5% 周期 | 速度估计噪声、轨迹抖动 |
| 最坏响应时间 | 任务从就绪到完成的最长耗时 | 小于截止时间 | 硬实时任务失败 |
| CPU 占用率 | 周期内计算资源使用比例 | < 70% | 余量不足,易超时 |
| 超时率 | 超过截止时间的任务比例 | 硬实时为 0 | 系统失稳或安全风险 |
五、案例:1 kHz 电流环的实时调优
某关节驱动器设定电流环周期为 1 ms,使用定时器中断触发 ADC 采样与 FOC 计算。初始版本在中断中执行了日志打印和 CAN 发送,导致抖动达到 300 μs,电机出现明显啸叫。优化措施如下:
- 将日志和 CAN 发送移出中断,放入低优先级软实时任务;
- 缩短关中断临界区,使用无锁环形缓冲区传递采样数据;
- 为电流环任务配置最高优先级,并启用优先级继承;
- 使用硬件触发 ADC,减少软件采样抖动;
- 测量最坏执行时间,确保 WCET 小于周期的 60%。
// 伪代码:中断中只做关键计算
void CurrentLoop_ISR(void) {
adc_read(&ia, &ib, &ic); // 硬件触发采样
clarke_park(ia, ib, ic, theta);
foc_calculate(&ud, &uq);
svpwm_output(ud, uq); // 直接写 PWM 寄存器
rtos_sem_post_from_isr(&log_sem); // 仅通知低优先级任务
}
优化后,中断延迟稳定在 6 μs 以内,周期抖动降至 20 μs 以下,电流环噪声显著降低,关节运行更平滑。这说明实时性能不是靠“提高主频”解决的,而是靠合理的任务划分、优先级设计和中断管理。