3. 飞行模式管理:模式定义、模式切换逻辑、模式优先级、模式互斥规则

飞行模式管理,说白了就是自动驾驶仪的“大脑”和“行为准则”。它决定了飞机在什么状态下该干什么事,以及不同任务之间如何切换、谁说了算。我做了这么多年航电系统,见过不少因为模式逻辑混乱导致的“乌龙”事件。嗯,这一节我们就把这块硬骨头啃下来。

3.1 模式定义:每个模式都是“一个岗位”

我个人习惯把飞行模式想象成飞机上的“岗位”。每个岗位有明确的职责,不能串岗,也不能空岗。常见的自动驾驶模式包括:

  • 横滚保持(ROLL HOLD):保持当前坡度角,说白了就是让飞机不继续倾斜。
  • 航向保持(HDG HOLD):锁定当前航向,飞机直直地飞。
  • 高度保持(ALT HOLD):维持当前气压高度,不掉高也不爬升。
  • 垂直速度模式(VS MODE):按照设定的升降率爬升或下降。
  • 进近模式(APP MODE):接收仪表着陆系统(ILS)信号,自动对准跑道。

每个模式都有自己的一组控制律和输出目标。举个例子,高度保持模式的核心逻辑就是:

// 伪代码:高度保持控制律
if (当前高度 < 目标高度 - 死区) {
    升降舵向上偏转,开始爬升;
} else if (当前高度 > 目标高度 + 死区) {
    升降舵向下偏转,开始下降;
} else {
    升降舵回中,保持平飞;
}

我在项目中遇到过,有些新手工程师把“高度保持”和“垂直速度模式”的控制律写混了,结果飞机在高度保持时还在按固定升降率爬升,差点触发超限告警。所以,模式定义一定要清晰,控制律边界要严格。

3.2 模式切换逻辑:不是你想切就能切

模式切换不是简单的“按个按钮就变”。它有一套严格的准入条件。你想想看,如果飞机正在大坡度转弯,你突然切到“航向保持”模式,飞控会怎么反应?大概率会猛地回正,把乘客吓一跳。

我建议的切换逻辑包含三个检查点:

  1. 条件检查:当前飞行状态是否允许进入新模式?比如进近模式要求飞机在ILS覆盖范围内,且航向道/下滑道信号有效。
  2. 过渡策略:切换瞬间,控制输出不能突变。通常采用“软切换”,即在一定时间内(比如2秒)将旧模式的输出逐渐过渡到新模式的输出。
  3. 失败回退:如果切换过程中检测到异常(比如传感器失效),必须能安全回退到上一个稳定模式,或者进入“直接模式”(DIRECT MODE)。

核心原则:模式切换必须“平滑、可预测、可逆”。

我曾经见过一个案例,某型飞机的模式切换逻辑里没有做“过渡策略”,结果飞行员在低空切模式时,飞机突然低头,差点酿成事故。从那以后,我设计的系统里,所有模式切换都强制带一个2秒的斜坡过渡

3.3 模式优先级:谁大谁说了算

当多个模式同时被激活时(比如飞行员同时按了“高度保持”和“垂直速度”),系统必须知道听谁的。这就是模式优先级的作用。

我习惯用一张优先级表来管理:

优先级 模式名称 说明
1(最高) 失速保护(STALL PROT) 安全相关,不可被任何模式覆盖
2 超速保护(OVERSPEED PROT) 防止结构损坏
3 进近模式(APP MODE) 着陆关键阶段
4 高度保持(ALT HOLD) 常规巡航模式
5 航向保持(HDG HOLD) 基础导航模式
6(最低) 横滚保持(ROLL HOLD) 基础姿态模式

这里有个坑:优先级高的模式可以“抢占”优先级低的模式,但反过来不行。比如,当飞机触发失速保护时,它会自动接管控制权,把其他所有模式都踢掉。等失速解除后,系统再根据飞行员的意图恢复之前的模式。

注意:优先级不能设计成“死锁”。比如模式A优先级高于B,B高于C,C又高于A,这种循环依赖在逻辑里是绝对禁止的。我建议用一张有向无环图(DAG)来验证优先级关系。

3.4 模式互斥规则:有些模式不能共存

互斥规则,说白了就是“有些模式天生八字不合”。比如:

  • 高度保持垂直速度模式 互斥。一个要锁高度,一个要变高度,逻辑上冲突。
  • 航向保持进近模式 在特定阶段互斥。进近时飞控要跟踪航向道,不能同时锁定一个固定航向。
  • 横滚保持航向保持 在转弯时互斥。你想想看,如果飞机正在转弯,横滚保持会试图维持坡度,而航向保持会试图改平,两个指令打架。

互斥规则的实现方式,我通常用一张“互斥矩阵”来管理:

// 互斥矩阵示例(简化版)
bool mutex_matrix[6][6] = {
    // ROLL  HDG   ALT   VS    APP   PROT
    {false, true, false, false, false, false}, // ROLL
    {true,  false, false, false, true,  false}, // HDG
    {false, false, false, true,  false, false}, // ALT
    {false, false, true,  false, false, false}, // VS
    {false, true,  false, false, false, false}, // APP
    {false, false, false, false, false, false}  // PROT
};

当系统检测到两个互斥模式同时被激活时,它会根据优先级决定保留哪一个,另一个则被强制退出。嗯,这里要注意,互斥检查必须在模式激活前完成,而不是激活后再去“纠正”。

3.5 知识体系总览

为了让你更直观地理解这些概念之间的关系,我画了一张图:

飞行模式管理核心逻辑 模式定义 每个模式有明确职责 控制律与输出目标 边界条件清晰 模式切换逻辑 条件检查 过渡策略(软切换) 失败回退机制 模式优先级 安全相关最高 高优先级可抢占 避免循环依赖 模式互斥规则 互斥矩阵管理 激活前完成检查 按优先级保留 四者协同:定义清晰 → 切换平滑 → 优先级明确 → 互斥无冲突

我的经验之谈:在设计模式管理逻辑时,不要一开始就陷入细节。先把模式定义、优先级、互斥关系画成一张图,让团队所有人都能看懂。我曾经用一张A3纸大小的图,把整个系统的模式逻辑画出来,贴在墙上,每次评审都指着它讲。效果出奇的好,很多逻辑漏洞在画图阶段就被发现了。

好了,关于飞行模式管理的四个核心要素,我就讲到这里。记住,模式定义是基础,切换逻辑是过程,优先级是裁决机制,互斥规则是安全护栏。四者缺一不可。


专注资料整理