2. 实时系统基础
在机器人控制系统中,“实时”并不等于“快”。很多初学者会把实时性理解为 CPU 主频高、响应时间短,但真正的实时性强调的是在确定的时间约束内完成计算与输出。一个 1 ms 周期、偶尔抖动到 3 ms 的控制回路,即使平均速度很快,也可能让机械臂在高速运动时出现明显振动甚至失稳。因此,理解实时系统的几个基础概念,是后续总线选型、控制器配置和任务调度的前提。
一、实时性的定义:正确性依赖时间
实时系统是指系统的正确性不仅取决于计算结果的逻辑正确,还取决于结果产生的时间。若一个控制指令在截止时间之后才到达执行器,那么即使数值完全正确,也可能被视为错误。实时性通常用三个要素描述:
- 截止时间(Deadline):任务必须完成的最晚时刻。
- 响应时间(Response Time):从事件触发到任务完成的时间。
- 可预测性(Predictability):最坏情况下仍能满足截止时间的能力。
二、硬实时与软实时
根据错过截止时间的后果,实时任务分为硬实时和软实时。硬实时任务一旦超时,会造成安全事故、设备损坏或不可逆后果,例如伺服使能、急停响应、电流环控制。软实时任务超时只会降低体验或质量,例如人机界面刷新、日志上传、视觉预览。二者对系统设计的要求差异很大:硬实时通常需要实时操作系统、优先级抢占、内存锁定和确定性总线;软实时可以运行在通用操作系统上,允许一定概率的延迟。
| 对比项 | 硬实时 | 软实时 |
|---|---|---|
| 超时后果 | 安全事故、设备损坏 | 体验下降、数据延迟 |
| 典型任务 | 电流环、位置环、急停 | HMI、日志、视觉显示 |
| 周期要求 | 严格固定,抖动极小 | 允许波动 |
| 系统支撑 | RTOS、实时总线、CPU 隔离 | 通用 OS、普通网络 |
| 验证方式 | 最坏执行时间分析 | 平均值与统计指标 |
三、延迟、抖动与确定性
延迟是事件发生到响应完成之间的时间,包括采集延迟、计算延迟、总线传输延迟和执行延迟。抖动是同一周期任务实际执行时刻相对理想时刻的偏差,反映的是时间稳定性。例如标称 1 ms 的周期,实际在 0.95 ms 到 1.20 ms 之间波动,抖动约为 0.25 ms。抖动比平均延迟更危险,因为它会破坏采样与控制输出的相位关系,导致滤波器失配、速度估计噪声增大。
确定性是指系统在最坏情况下仍能给出可预测的时间行为。确定性不等于零延迟,而是延迟有上界且可重复。工业实时总线如 EtherCAT、CANopen、PROFINET IRT 之所以重要,正是因为它们提供了确定性的通信周期和同步机制。
四、周期任务与非周期任务
机器人控制器中的任务通常分为两类。周期任务按固定节拍重复执行,例如每 1 ms 读取编码器、执行 PID、下发力矩;非周期任务由事件触发,例如按键、报警、通信中断、轨迹切换。周期任务决定控制品质,非周期任务决定系统交互能力。调度器需要保证高优先级周期任务不被低优先级非周期任务阻塞,常见策略包括固定优先级抢占、时间片轮转和最早截止时间优先。
# 典型实时任务配置示例(伪代码)
task motion_control:
period = 1 ms
priority = 90 # 硬实时
deadline = 1 ms
policy = SCHED_FIFO
task bus_io:
period = 1 ms
priority = 80 # 硬实时
deadline = 0.8 ms
task hmi_update:
period = 50 ms
priority = 20 # 软实时
deadline = 100 ms
task log_upload:
trigger = event # 非周期
priority = 10 # 软实时
五、案例与常见误区
某六轴协作机器人在调试时出现“低速正常、高速抖动”的现象。排查发现,控制周期标称为 1 ms,但实际抖动达到 0.4 ms,原因是视觉任务与运动控制共享同一 CPU 核,且未做 CPU 隔离。将运动控制绑定到独立核、关闭该核的中断合并、并把总线任务优先级提高后,抖动降到 30 μs 以内,高速抖动明显改善。这个案例说明:实时问题往往不是算力不足,而是时间不确定性。
掌握实时性定义、硬软实时边界、延迟与抖动、确定性以及周期/非周期任务的调度关系,才能在后续总线选型与控制器集成中做出正确判断:哪些任务必须放在实时域,哪些可以放到非实时域,以及如何用可测量的指标验证系统是否真正满足时间约束。