1. 飞控系统实时任务全景
飞控计算机(Flight Control Computer, FCC)本质上是一台硬实时嵌入式系统。它必须在严格的时间窗口内完成"感知—解算—输出"的闭环,任何一次超时都可能直接转化为姿态偏差、舵面抖动甚至失控。理解飞控实时任务,第一步不是看代码,而是把整条任务链在时间轴上摊开:谁在什么时候被触发、谁依赖谁的数据、谁的截止期最紧。
一、完整任务链的四个环节
典型的固定翼或多旋翼飞控,其闭环任务链可以拆成四个环节,每个环节都有明确的输入、输出与时间属性:
- 传感器采样:IMU(陀螺+加速度计)以 1 kHz~8 kHz 采样,磁力计、气压计、GPS 频率低得多(10 Hz~200 Hz)。采样任务通常由硬件中断或定时器触发,属于周期任务。
- 状态估计:把原始角速度、比力、磁、气压融合成姿态角、角速率、位置、速度。常用互补滤波或 EKF,运行频率与 IMU 对齐(如 1 kHz 或降频到 500 Hz)。
- 控制律解算:根据期望姿态/位置与实际状态的偏差,经 PID 或 LQR 计算出舵面/电机指令。这是闭环的"大脑",频率通常 250 Hz~1 kHz。
- 执行机构输出:PWM/DShot/CAN 输出到电调或舵机,频率 50 Hz~500 Hz,且要求抖动极小,否则舵机会发出可闻噪声并加速磨损。
这四个环节并非简单串联:状态估计依赖采样,控制律依赖状态估计,输出依赖控制律,但采样中断可能随时抢占正在运行的低优先级任务。因此任务链在时间上表现为周期性触发 + 优先级抢占的叠加。
二、周期任务、偶发任务与硬实时约束
飞控中的任务按触发方式可分为三类:
| 任务类型 | 典型代表 | 触发方式 | 时间约束 |
|---|---|---|---|
| 周期任务 | IMU 采样、姿态解算、控制律、PWM 输出 | 定时器/中断周期触发 | 硬实时,截止期 = 周期 |
| 偶发任务 | 遥控接收解析、GPS 帧解析、故障检测 | 外部事件到达 | 软实时或硬实时(视功能) |
| 后台任务 | 日志记录、参数存储、地面站通信 | 空闲时运行 | 非实时,可被任意抢占 |
硬实时约束的含义是:任务必须在截止期前完成,否则系统判定为失败。对控制律任务而言,若某周期未在截止期内输出,则该周期舵面指令缺失,等效于一次控制中断。工程上通常要求控制律任务的最坏执行时间(WCET)不超过周期的 30%~50%,为抖动和抢占留出余量。
示例(合理假设,非实测):某四旋翼飞控设定 IMU 采样周期 1 ms,姿态解算 1 ms,控制律 2 ms,PWM 输出 1 ms。若控制律 WCET 为 0.6 ms,则 CPU 占用约 30%,剩余 70% 用于偶发任务与后台任务。若某次控制律因抢占延长到 2.1 ms,则错过截止期,需通过优先级或时间片调整消除。
三、任务链的时序关系图
下图把上述任务链在时间轴上的触发、依赖与截止期关系可视化。图中横向为时间,纵向为任务,箭头表示数据依赖,虚线表示截止期。
从图中可以读出三个关键事实:第一,采样与解算频率最高,控制律次之,输出再次之,形成降频链;第二,控制律的截止期(红色虚线)落在其启动后 2 ms 内,若被遥控解析等偶发任务抢占,就可能超时;第三,偶发任务(红色块)没有固定位置,必须用优先级或时间预算加以约束。
四、硬实时约束下的设计要点
要让这条任务链稳定运行,工程上通常遵循以下原则:
- 频率分层:采样与解算用最高优先级中断,控制律用次高优先级周期任务,输出用中等优先级,通信与日志用最低优先级。避免低优先级任务长时间占用 CPU。
- WCET 预算:对每个任务测量最坏执行时间,确保所有硬实时任务的 WCET 之和不超过其周期总和的 70%。
- 抖动控制:PWM 输出的抖动应小于 1% 周期。若抖动过大,可把输出放在定时器中断中直接触发,而非等待任务调度。
- 偶发任务限流:遥控解析、GPS 解析等偶发任务应设置最大执行时间或消息队列长度,防止突发流量挤占控制律。
判断依据:若某周期内控制律未在截止期前完成,日志中会出现"control loop overrun"或类似标记;同时姿态角速率会出现周期性尖峰。此时应优先检查是否有低优先级任务被意外提升,或 WCET 估算是否偏乐观。