4. 飞控系统架构与状态机位置

要理解飞控状态机为什么必须存在、它究竟管什么,先要把飞控系统看成一条从物理世界到物理世界的闭环链路。传感器把飞行器的真实运动变成电信号,估计器把带噪声、带偏差的原始测量变成可用的状态量,控制器根据状态误差算出期望的力矩和推力,执行机构把控制量变成真实的舵面偏转和电机转速,而状态机管理器则站在整条链路之上,决定“当前该由谁工作、用哪套参数、允许哪些动作”。这五类角色职责不同、数据形态不同、更新频率也不同,边界一旦模糊,就会出现模式切换时控制量跳变、估计器未收敛就起飞、执行机构在错误模式下被驱动等典型问题。

一、五类角色的职责边界

传感器层只负责“测量”,不负责“判断”。典型对象包括三轴陀螺仪、三轴加速度计、磁力计、气压计、GNSS 接收机、空速管和测距雷达。它们输出的是原始量或经过简单标定的物理量,例如陀螺仪输出角速度(单位 rad/s 或 °/s),加速度计输出比力(m/s²),气压计输出气压(Pa)。这一层不应包含模式判断逻辑,否则同一份测量数据在不同模式下含义不一致,后续无法复用。

估计器层负责“融合与推断”。它接收多路传感器数据,通过互补滤波、卡尔曼滤波或扩展卡尔曼滤波,输出姿态四元数、欧拉角、速度、位置、高度等状态估计,并附带协方差或置信度。估计器的关键输出不只是状态值,还包括“这个状态可不可信”。例如 EKF 的协方差、创新序列、GNSS 定位质量标志,都是状态机判断能否进入某些模式的重要依据。

控制器层负责“算控制量”。它接收期望状态(来自遥控器、航线或上层指令)和估计状态,按位置环、速度环、姿态环、角速率环的串级结构逐级计算,最终输出归一化的力矩指令和推力指令。控制器本身通常不关心“现在是手动还是自动”,它只关心“给定目标和当前状态,应该输出什么”。模式差异更多体现在控制器前面的目标生成和后面的混控映射上。

执行机构层负责“把控制量变成物理动作”。多旋翼通过混控矩阵把力矩和推力分配到各电机,固定翼通过舵机驱动副翼、升降舵、方向舵,部分机型还有矢量推力或襟翼。这一层关注的是行程范围、死区、饱和、响应延迟和故障状态。执行机构一旦饱和,控制器再精确也无法产生期望力矩,因此状态机需要知道执行机构的健康状态。

状态机管理器负责“决定当前用哪条通路”。它不直接参与滤波和控制计算,而是管理模式、参数组、使能条件和切换时序。它读取传感器健康标志、估计器收敛状态、遥控器开关位置、任务指令和故障检测结果,输出当前飞行模式、控制律使能信号、参数组索引以及切换过渡指令。可以说,状态机是整条链路的“调度中枢”,而不是“计算单元”。

飞控系统五层数据流与状态机调度位置 传感器层 陀螺仪 / 加速度计 磁力计 / 气压计 GNSS / 空速 / 测距 输出:原始物理量 估计器层 互补滤波 / EKF 姿态 / 速度 / 位置 协方差 / 置信度 输出:状态估计 + 质量 控制器层 位置环 → 速度环 姿态环 → 角速率环 PID / LQR / MPC 输出:力矩 + 推力指令 执行机构层 电机 / 电调 舵机 / 混控矩阵 行程 / 饱和 / 故障 输出:物理动作 状态机管理器 模式判定 · 参数组选择 · 使能控制 · 切换时序 输入:健康标志 / 收敛状态 / 开关位置 / 任务指令 输出:飞行模式 / 控制律使能 / 参数组索引 / 过渡指令 健康状态 收敛/协方差 参数组/使能 混控/故障 闭环反馈:实际运动 → 传感器 → 估计器 → 控制器 → 执行机构 1kHz 500Hz 400Hz 状态机调度:50~200Hz

二、数据流的方向与频率分层

这条链路不是单向的,而是“前向计算 + 反向调度”的双向结构。前向数据流从传感器流向执行机构,频率最高。以典型多旋翼为例,陀螺仪采样可达 1 kHz,姿态估计在 500 Hz 左右运行,角速率控制器在 400 Hz 左右输出,混控和电调更新在 400 Hz 到 1 kHz 之间。状态机管理器不需要跑这么快,通常 50 到 200 Hz 即可,因为它处理的是模式切换、参数选择和使能判断,这些事件的物理时间尺度是几十毫秒到几百毫秒。

反向调度流从状态机流向各层,但形式不同。对传感器层,状态机只“读”健康标志,不干预采样;对估计器层,状态机读取收敛状态和协方差,必要时触发重置或重新初始化;对控制器层,状态机写入当前参数组索引和控制律使能;对执行机构层,状态机决定混控映射是否切换、故障保护是否接管。这种“读多写少”的关系,正是状态机与控制器职责边界的关键:状态机不参与实时控制计算,只在模式边界上做离散决策。

三、职责边界模糊时的典型故障

如果估计器未收敛就允许起飞,姿态估计误差可能达到十几度,控制器会持续输出修正力矩,表现为起飞瞬间侧翻。正确做法是状态机在“待起飞”模式中检查 EKF 协方差是否低于阈值、创新序列是否正常、GNSS 定位质量是否达标,全部满足才允许切换到“起飞”模式。

如果控制器在模式切换时直接换参数组而不做过渡,积分项会突变,输出力矩跳变。工程上通常采用参数插值或积分项保持策略,在 200 到 500 ms 内平滑过渡。状态机负责触发过渡并监控过渡是否完成,控制器负责执行插值计算。

如果执行机构饱和而状态机不知情,控制器会继续积分,导致退出饱和后出现大幅超调。因此执行机构层需要把饱和标志和故障状态回传给状态机,状态机据此限制指令幅值或触发保护模式。

判断边界是否清晰的一个实用方法:问“这个逻辑在模式切换时是否需要改变?”如果不需要改变,它属于传感器、估计器、控制器或执行机构;如果需要改变,它属于状态机管理器。

四、一个可对照的职责划分示例

层级 核心输入 核心输出 是否受模式影响 典型频率
传感器 物理运动 原始测量值 否 400 Hz ~ 1 kHz
估计器 多路传感器数据 状态估计 + 置信度 部分(重置/收敛判据) 200 ~ 500 Hz
控制器 期望状态 + 估计状态 力矩/推力指令 是(参数组、使能) 200 ~ 400 Hz
执行机构 力矩/推力指令 舵面/电机动作 是(混控映射) 400 Hz ~ 1 kHz
状态机管理器 健康/收敛/开关/指令 模式/使能/参数索引 —(它就是模式来源) 50 ~ 200 Hz

把这张表与前面的数据流图对照,可以清楚看到:状态机管理器并不在实时控制回路的主路径上,但它通过“使能”和“参数组”两个接口,间接决定了主路径用哪套逻辑运行。理解这一点,后续讨论模式切换条件、过渡策略和故障保护时,就不会把状态机的职责误加到控制器或估计器身上。