3. 飞控任务建模方法

飞控软件里,姿态控制、导航滤波、健康监控这些功能并不是以“函数”的形式孤立存在的,它们最终都要落到实时操作系统的任务上,由调度器按某种规则分配 CPU 时间。所谓飞控任务建模,就是把这些功能需求翻译成调度器能理解的对象:周期任务、偶发任务、优先级、执行时间、截止期、阻塞时间等,从而形成一个可以拿去做可调度性分析的模型。建模做得好不好,直接决定了后续时序优化有没有意义——如果模型本身失真,再精细的调度算法也只是在错误的输入上做优化。

一、先分清三类任务语义

飞控中的计算负载大致可以归入三种语义,建模时第一步就是判断某个功能属于哪一类。

  • 周期任务:按固定周期反复触发,例如姿态控制律以 200 Hz(周期 5 ms)运行、导航滤波以 50 Hz(周期 20 ms)运行、健康监控以 10 Hz(周期 100 ms)运行。它们的到达时刻可预测,是实时分析的主体。
  • 偶发任务:由事件触发,最小到达间隔有下界但具体时刻不确定,例如遥控指令解析、故障中断处理、地面站上行帧处理。建模时用“最小到达间隔”代替周期。
  • 非周期/后台任务:没有硬截止期,例如日志落盘、参数存储、遥测打包。它们通常放在最低优先级,用空闲时间执行。

需要强调的是,同一个功能在不同飞行阶段可能改变语义。例如导航滤波在正常巡航时是严格周期任务,在 GPS 失锁后可能被降频或改为事件驱动,建模时要按最坏情况(最小周期、最大执行时间)取值,否则分析结果会偏乐观。

二、把功能映射为任务参数

建模的核心动作是给每个任务填一张参数表。以某型中小型无人机飞控为例,假设主控为单核 200 MHz、无 FPU 的处理器,给出如下示例参数(数值为教学假设,非实测):

任务类型周期/最小间隔最坏执行时间 C截止期 D优先级
姿态控制律周期5 ms1.2 ms5 ms最高
传感器采集融合周期5 ms0.6 ms5 ms高
导航滤波周期20 ms3.5 ms20 ms中
遥控指令解析偶发10 ms0.8 ms10 ms中高
健康监控周期100 ms2.0 ms100 ms低
遥测打包非周期—1.5 ms软最低

表中几个量必须说清楚来源:周期由控制带宽和采样定理决定,姿态环 200 Hz 是因为内环带宽约 20~30 Hz,采样率取 6~10 倍;最坏执行时间 C 不能拍脑袋,要用最坏情况执行时间(WCET)分析工具或高精度计时器在目标板上实测取包络,且要覆盖分支最坏路径;截止期 D 通常等于周期(隐式截止期),但姿态控制这类任务若允许一定抖动,也可设 D 略小于周期以留出余量。

三、优先级分配与可调度性判据

飞控普遍采用固定优先级抢占式调度(如 Rate Monotonic,RM)。RM 的规则是周期越短优先级越高,上表中姿态控制(5 ms)优先级最高,遥测打包最低,正好符合 RM 排序。分配完优先级后,用利用率判据做初步筛查:

U = Σ(Ci / Ti)
  = 1.2/5 + 0.6/5 + 3.5/20 + 0.8/10 + 2.0/100 + 1.5/100
  = 0.24 + 0.12 + 0.175 + 0.08 + 0.02 + 0.015
  = 0.65

RM 充分条件(n 个任务):
U ≤ n·(2^(1/n) − 1)
n=6 时阈值 ≈ 0.735
0.65 < 0.735 → 满足充分条件,可调度

这里 0.65 的利用率说明 CPU 还有约 35% 余量,但满足充分条件不等于一定可调度,它只是充分非必要条件。更精确的判断要用响应时间分析(RTA):对每个任务计算最坏响应时间 R,若 R ≤ D 则任务可调度。R 的迭代式为 R = C + Σ(高优先级任务的干扰) + 阻塞时间。姿态控制任务没有更高优先级任务,R = C = 1.2 ms ≤ 5 ms,安全;导航滤波要叠加姿态控制和传感器采集的干扰,需要逐项累加验证。

建模时务必把中断处理、内核调度开销、共享资源互斥带来的阻塞时间计入,否则 RTA 结果会偏小。飞控中常见的阻塞源是 I2C/SPI 总线互斥和共享内存区。

四、建模结果的表达与校验

一个完整的可调度分析模型,最终应能回答三个问题:每个任务的最坏响应时间是多少、系统总利用率是多少、在什么条件下会失效。下图给出了从功能到可调度模型的映射关系与关键参数流。

飞控功能 → 任务模型 → 可调度分析 映射关系 飞控功能 姿态控制 导航滤波 健康监控 遥控指令 遥测打包 任务参数模型 周期 T=5ms C=1.2ms D=5ms 优先级 P1(最高) 周期 T=20ms C=3.5ms D=20ms 优先级 P3 周期 T=100ms C=2.0ms D=100ms 优先级 P5 偶发 最小间隔=10ms C=0.8ms 优先级 P4 非周期 软截止 C=1.5ms 优先级 P6(最低) 可调度性分析 总利用率 U = 0.65 RM 阈值 ≈ 0.735 响应时间 RTA R_i ≤ D_i ? 姿态环 R=1.2ms ≤ 5ms ✓ 阻塞时间 B 需计入 总线互斥/共享内存 注:参数为教学示例假设值,实际建模须以目标板 WCET 实测与总线阻塞分析为准

建模完成后要做一次一致性校验:把模型参数回填到仿真或半实物测试中,观察实际响应时间是否落在 RTA 预测范围内。若实测响应时间明显大于预测值,通常意味着漏算了阻塞时间、中断延迟或缓存抖动。此时应回到参数表修正 C 或 B,而不是直接调优先级——优先级调整只能改变干扰分布,不能消除被低估的执行时间。

常见建模错误:把偶发任务当成周期任务填一个“平均周期”,导致利用率被低估;或者忽略任务间的数据依赖,把有先后约束的两个任务当成完全独立,使 RTA 结果失真。飞控中姿态控制依赖传感器采集结果,二者存在数据依赖,建模时需用释放抖动或偏移量表达这种约束。

总结来说,飞控任务建模的产出不是一张任务列表,而是一组带参数的、可被数学工具检验的调度对象。姿态控制、导航滤波、健康监控被映射为不同周期、不同优先级、不同截止期的任务后,才能用利用率判据和响应时间分析回答“这套飞控在当前处理器上到底能不能按时跑完”。这个模型也是后续时序优化、优先级再分配和 CPU 负载均衡的起点。