飞行控制这行干久了,再看回“理论基础”四个字,反而觉得比当年读书时更有味道。很多人一上来就啃非线性动力学、气动导数、模态分解,结果被数学吓退。也有人走另一条路,上来就调PID、刷固件,飞得起来但说不清为什么某些参数组合会发散、哪些工况会掉高度。第6章这种位置,通常是整套知识体系里第一道真正的关口:前面是数学和物理铺垫,从这里开始进入“控制”的主航道。这篇就按我在型号和课题里反复用到的骨架,把这个基础章节从头到尾捋一遍,重点说清楚哪些东西是后面所有飞控设计的地基,以及这些理论到底怎么落到实机上。
1. 飞行控制问题的本质与建模起点
1.1 从“力”到“运动”的完整链路
飞行控制和普通工业过程控制最大的区别在于:被控对象本身是一个六自由度刚体,而且状态之间强耦合。你推升降舵不只是改变俯仰角速度,它会改变迎角,迎角改变升力,升力又影响速度,速度一变,整个能量状态也跟着变。这种链条式的因果关系,是飞行控制里“建模必须先于设计”的根本原因。
我习惯把整条链路拆成三段。第一段是气动力/力矩怎么产生,核心是气动导数,比如 ( C_L(\alpha) )、( C_m(\alpha, q, \delta_e) ),它们把飞行状态映射成力和力矩。第二段是刚体动力学,把力和力矩通过质量、惯量、运动方程变成线加速度和角加速度。第三段是运动学,把机体坐标系的角速度积分成欧拉角,把线加速度积分成位置和速度。三段串起来,才是完整的飞机模型。
很多人在这里忽略了一件事:气动数据里很多导数在小迎角下是线性的,但一旦进入大迎角、大侧滑或者跨声速区,线性假设会明显失效。所以理论基础章节教的线性模型,本质上是“在某个配平点附近展开后截断”的结果。理解这一点非常重要,因为后面所有控制律设计都是在这些线性化模型上做的,但飞行包线边缘的非线性行为,必须靠增益调度或者非线性仿真去兜底。
1.2 坐标系与变量定义:约定俗成里的门道
飞行力学里最啰嗦也最容易出错的,就是坐标系。地面坐标系、机体坐标系、稳定轴系、风轴系,每个都有各自的用途。地面系用来导航和定位,机体系用来写运动方程和传感器测量,风轴系用来表达气动力。控制律设计里最常见的错误,就是没搞清楚反馈量到底在哪个坐标系里表达的。
俯仰角、迎角、航迹倾斜角这三者之间的关系 ( \theta = \alpha + \gamma ),就是典型的“坐标系思维”考题。我见过不少新手用迎角反馈做俯仰增稳,却忽略了传感器测到的迎角是局部迎角、不是全机重心迎角,结果在大机动时反馈信号振荡,飞机跟着一起抖。这就是对物理量定义域理解不透留下的坑。
变量命名也是基础里的基础。俯仰角速率 ( q )、俯仰角 ( \theta )、法向过载 ( n_z )、迎角 ( \alpha ),每个量在控制律里都有特定的角色。我建议一开始就建立一张变量总表,把符号、定义、坐标系、传感器来源、单位全部列清楚,后面做仿真和代码实现时能少走很多弯路。
| 变量 | 含义 | 坐标系 | 典型来源 | 单位 |
|---|---|---|---|---|
| ( \alpha ) | 迎角 | 风轴系 | 大气数据系统 | rad 或 deg |
| ( \beta ) | 侧滑角 | 风轴系 | 大气数据系统 | rad 或 deg |
| ( p, q, r ) | 滚转/俯仰/偏航角速率 | 机体系 | 陀螺仪/IMU | rad/s |
| ( \phi, \theta, \psi ) | 欧拉角 | 地面系→机体系 | 姿态解算 | rad |
| ( n_z ) | 法向过载 | 机体系 | 加速度计 | g |
| ( \delta_e, \delta_a, \delta_r ) | 升降舵/副翼/方向舵偏度 | 舵面 | 舵机反馈 | rad 或 deg |
这些变量之间的关系,就是后面所有控制律设计的出发点。建模阶段多花一小时理清楚坐标和符号,后面少熬三个通宵。
2. 稳定性分析:飞行品质的物理根源
2.1 静稳定性、动稳定性与控制的关系
稳定性分析在飞行控制里的地位,相当于内科诊断。静稳定性回答的是“飞机在扰动后有没有趋势回到原来状态”,动稳定性回答的是“即使有趋势,它怎么回去,是单调收敛还是振荡收敛”。这两个问题的答案,直接决定你要不要设计增稳控制律。
正常的常规布局飞机,纵向是静稳定的,因为水平尾翼产生了足够的恢复力矩。但很多战斗机、飞翼布局,或者放宽静稳定性设计的飞机,本身就是静不稳定的,不加控制系统根本飞不了。这就是飞控从“可选”变成“必须”的分水岭。
动稳定性方面,最经典的分析工具是特征值分析。把线性小扰动方程写成 ( \dot{x} = Ax ) 的形式,矩阵 ( A ) 的特征值实部代表模态的收敛快慢,虚部代表振荡频率。典型纵向模态里,长周期(沉浮模态)频率很低,周期可能十几秒,阻尼往往也不够好,飞行员会感觉飞机“慢悠悠地晃”。短周期模态频率高,周期一两秒,如果阻尼不足,飞起来就是高频抖动,非常影响操控品质。
横航向模态更复杂一些——荷兰滚、螺旋模态、滚转收敛模态。荷兰滚是偏航与滚转耦合的振荡模态,阻尼不足时会呈现“机头画圈”的飘摆;螺旋模态则可能发散得很慢,飞行员可能过了半天才发现坡度越来越大。这些模态特性,都是控制律要处理的“靶子”。
2.2 从模态到驾驶品质规范
光说“不稳定”还不够,工程上需要一套标准来衡量“好飞”还是“不好飞”。这就是飞行品质规范里最核心的内容,比如经典的Cooper-Harper评分以及军用标准里的等级划分。它们把飞行品质分成几个等级,每个等级对应一组短周期阻尼、频率、过载响应等定量指标。
做控制律设计时,这些指标就是设计目标。比如有人驾驶飞机一般要求短周期阻尼比在0.35到1.3之间,不能太懒也不能太猛。频率太高,人体会感到不适;频率太低,响应太迟钝。这些写法在教科书里可能只是一张表,但在实际型号里,每一个指标背后都是试飞员用身体试出来的。
控制律存在的一个重要原因,就是“重塑模态特性”。开环飞机短周期阻尼只有0.1,你想让它达标到0.7,那就要通过反馈把等效阻尼提上去。理解了这个逻辑,你就会明白为什么飞控看起来是“调增益”,本质却是在“改造系统极点”。
投研时经常有人问,为什么不用一个简单PD就能把飞机稳住,非得搞复杂的架构。答案就在模态特性里:不同的模态、不同的速度区间、不同的构型,最优反馈结构完全不一样,简单PD只在一个小范围内有效,一旦飞行包线拉宽,就必须做增益调度甚至自适应控制。
3. 控制律设计:从反馈结构到参数选择
3.1 内回路外回路:控制架构的基本盘
几乎所有有人驾驶飞机的纵向控制律,都能拆成内回路和外回路两大部分。内回路负责快变量,通常是俯仰角速率 ( q ) 或者法向过载 ( n_z ),通过升降舵直接闭环,主要目标是改善短周期阻尼和响应特性。外回路负责慢变量,通常是俯仰角 ( \theta )、高度 ( h )、速度 ( V ),以内回路为被控对象再做闭环。
这个分层设计的思路,本质上是利用时间尺度分离。内回路响应快,可以先整定;外回路响应慢,在此基础上叠加。如果一开始就把所有变量塞进一个MIMO控制器,调试时出了问题都不知道去哪找。
我举一个典型的纵向控制律设计例子:
- 内回路采用 ( q ) 反馈,( \delta_e = K_q (q_d - q) ),先通过根轨迹法选择 ( K_q ),让短周期阻尼比达到0.7附近。
- 外回路采用 ( n_z ) 或者 ( \theta ) 反馈,在此基础上设计指令跟踪结构和前置滤波器。
- 加入积分项消除稳态误差,但要仔细处理积分饱和,尤其是大机动时舵面已经饱和,积分累积会让系统“卡死”在极限位置。
这个结构看着简单,但工程实现时的细节极多。比如 ( q ) 反馈的带宽不能太高,否则会把结构振动模态耦合进来;( n_z ) 反馈在大过载机动时会与 ( q ) 回路产生耦合,需要仔细设计前馈补偿。
3.2 增益不是“调”出来的,是“算”出来的
很多自学飞控的人最大的误区就是“调参数”。真实工程里,参数初值是通过模型计算出来的,试飞调试只是在初始值附近做小范围修正。如果你连初始值都算不准,那调试就是漫无目的地碰运气。
用根轨迹法算 ( K_q ) 的流程大概是这样的:先求出从舵面到 ( q ) 的传递函数,画出系统的根轨迹,然后在根轨迹上找满足阻尼比要求的增益。这个过程中,单位必须统一,否则一个量纲错误全盘皆输。要常用弧度而不是度数,很多PID初次整定发散的原因就是角度单位没换算。
除了根轨迹,频率响应法也是基本功。开环传递函数的增益裕度和相位裕度直接决定了系统的鲁棒性。我个人的经验习惯是:相位裕度至少要45度,增益裕度至少6到10dB,否则稍微有一点模型误差或者延迟变化,系统就可能从稳定变成振荡。
另一个值得注意的细节是,真实飞控里很少直接用纯微分项。因为微分器会放大噪声,而陀螺仪或加速度计的高频噪声一旦被放大,会导致舵面高频颤动,加剧结构疲劳。通常的做法是用带低通滤波的近似微分,或者干脆不用微分,改用角速率反馈,因为角速率本身就是角度的微分信号,这是信号来源思维和控制器结构思维的差异。
3.3 饱和、速率限制与抗积分饱和
舵面偏度有物理极限,偏转速率也有极限。这两个限制在控制律设计里经常被忽略,但它恰恰是仿真和实飞差异最明显的地方。
升力系数在大迎角下是凹曲线,舵面效率随动压变化很大。动压高时,很小的舵偏就能产生大力矩;动压低时,舵偏再大也“使不上劲”。如果控制器设计按高速点整定,低速大机动时就可能在控制量上反复“撞墙”,引发极限环振荡。
抗积分饱和的处理可以很简单——“积分清零”或者“条件积分”,但关键是触发逻辑要合理。我见过因为积分限幅设计不合理,导致飞机在高空小速度状态下出现纵向长周期振荡的案例,那其实就是积分项把相位拉了太多,把整个回路的稳定裕度吃掉了。
在这个环节,我的建议是:仿真模型里一定不要用简化限幅,必须把真实舵面偏度限制、速率限制、甚至是舵机带宽延迟全带进去。很多“仿真时稳如老狗、上台架就抖舵”的问题,根源就是仿真模型太理想,把执行机构的非线性全滤掉了。
4. 传感器、执行器与工程化约束
4.1 传感器特性对控制设计的影响
飞行控制是传感器驱动的闭环系统。你用的反馈信号来自IMU、大气数据系统、GNSS等传感器,每个传感器都有各自的延迟、噪声和故障模式,它们对控制带宽的挤压非常直观。
陀螺仪测角速率,延迟小、噪声中等,是内回路最可靠的反馈源。加速度计测的是比力,不是纯重力分量,所以直接用加速度计输出反馈时要格外注意它在机动过程中由于重力投影变化产生的“虚假”信号。迎角传感器在大迎角下气流分离,测量值会明显失真。空速管的延迟在跨声速和高空小速度下也会显著变大。
一个直观的类比是,传感器的延迟相当于你在开车时戴了一副“反应慢半拍”的眼镜。你看到的东西是几百毫秒之前的路况,那你打方向盘就会总是慢半拍,车速一快就可能画龙。在控制律里,总延迟超过一定阈值,哪怕增益调得再好,系统也会因为相位滞后再加而振荡。
4.2 舵机与执行机构:理论到现实的“功率接口”
控制律计算出的是“舵面偏度指令”,真正让舵面动起来的是舵机或者液压作动器。执行机构的响应带宽如果不够,就会成为控制回路里一个额外的滞后环节。液压舵机带宽高,但存在死区和非线性摩擦力;电动舵机结构简单,但大功率下带宽受限。
设计控制律时必须考虑舵机带宽与期望控制带宽的匹配关系。一般来说,执行机构带宽要是内回路期望闭环带宽的3到5倍以上,否则控制器辛辛苦苦提高的响应速度,会被执行机构拖慢。另一个常见问题是舵面的振动、颤振边界,理论上控制律设计不会直接处理气动弹性问题,但如果反馈信号耦合了结构模态,再加上控制增益一大,就可能诱发极限环振荡,这就是“气动伺服弹性”问题。在工程筛选时,我们通常会在反馈信号前加陷波滤波器,专门把结构模态频段的增益压下去。
4.3 余度与表决:理论基础之外的生存法则
严格说,多余度设计不完全属于“第6章”的内容,但工程中一旦深入飞控,迟早要面对它。理论分析的反馈信号是“理想的连续可测信号”,实机上同一物理量往往有多个传感器源,它们的输出之间会有偏差。控制律架构里必须有故障检测、信号表决和重构策略。
我见过一种做法叫“三余度表决”,三台惯性设备输出同一个角速率,两两对比,偏差超过阈值就剔除离群值,剩下两路取平均。如果只剩一路有效,就得切换控制律结构,降低增益甚至切换为备份控制模态。这些都是理论教材不太讲、但真正干飞控必须懂的东西。
千万不要为了“简单”把余度信息在控制律里混在一起用,一定要分清主备关系。否则一个传感器故障就会影响整个控制回路,严重时飞机直接进入非指令机动。
5. 从经典控制到现代控制:工具升级
5.1 状态空间法与LQR设计的工程价值
经典控制里的频域法和根轨迹法,在多输入多输出系统面前很吃力。飞机横航向就是一个典型的多变量系统,副翼和方向舵同时影响滚转和偏航,这时候状态空间方法就体现出优势。
状态空间法最经典的应用之一是设计LQR,也就是线性二次型调节器。它的核心思路是:给定一个代价函数 ( J = \int (x^T Q x + u^T R u) dt ),通过调节权重矩阵 ( Q ) 和 ( R ),让控制律在“状态误差小”和“控制量小”之间取折中。( Q ) 取大了,状态收敛快但舵面偏转剧烈;( R ) 取大了,控制量保守但收敛慢。
这个取舍的过程,和前面根轨迹法里选增益的过程本质上是同一件事,只是计算手段不同。实际工程中,LQR设计出来的全状态反馈往往无法直接实现,因为有些状态(比如迎角)测不准。这时候就需要设计状态观测器,或者把LQR结果降阶成可以与传感器信号匹配的反馈结构。
5.2 增益调度:把“非线性”切成“多个线性”
增益调度的逻辑,一句话概括就是:在飞行包线内选一组设计点,在每个点分别设计线性控制器,然后按某个调度变量把控制器参数平滑地插值出来。最常用的调度变量是动压 ( \bar{q} ),因为气动铰链力矩、舵面效率都直接跟动压相关。
调度表的设计难点在于“切换”。如果参数跨度过大,切换时控制量会产生突变,轻则抖舵,重则诱发极限环振荡。所以在设计时一般要求相邻设计点之间的增益变化率足够平缓,必要时要做滞后开关或者滤波处理。
常用实现方式是给控制律里的每个增益都做成二维查表,随高度和马赫数双变量调度。试飞时逐个点验证,确认每个调度区间边缘的稳定性。这个过程非常耗时,但又是必要的,因为单纯靠理论计算无法覆盖所有真实飞行条件的模型误差。
5.3 抗扰与鲁棒性:理论裕度的现实意义
控制律设计完成后,总会有人问一句“这东西抗不抗风”。风是飞行控制里最主要的扰动源之一,阵风对迎角和侧滑角的扰动相当于直接改变了气流坐标,影响机理等同于给系统输入端加了一个带限的扰动信号。
提高抗风性的手段,要么是提高回路增益尤其是低频增益,要么是在反馈里加入风扰观测器做主动补偿。但增益不能无限提高,因为噪声、延迟、非线性和结构模态都在制约着它。这就是鲁棒性与性能之间的永恒矛盾。
做工程判断时,我不太关心某个控制器在标称模型下的性能有多惊艳,我更关心的是:当气动导数偏差20%、重心后移5%、舵机延迟增加50%之后,系统还有没有稳定裕度。这个习惯也推荐给所有做飞控的新人,设计阶段就默认“模型是错的”,你做出的控制器才能真正在实机上好用。
6. 常见问题与调试经验实录
6.1 仿真振荡、试飞抖动的排查顺序
系统出现振荡时,我一般按固定顺序排查,效率比漫无目的地试参数高得多。
第一步看频率。如果振荡频率在1Hz以上,优先查传感器噪声、结构模态耦合、舵机带宽;如果振荡频率在0.1到0.5Hz,优先查控制律阻尼设计和稳定裕度;如果振荡频率更低,那就要看外回路、能量管理,甚至是导航与控制的耦合问题。
第二步做开环检查。把反馈断开,直接给舵面指令,看舵面响应是否正常,排除执行机构和机械系统故障。然后接上反馈但降低增益,逐级把增益恢复到设计值,找到振荡出现的临界点,对比设计裕度。
第三步做模型对比。把试飞数据里的输入信号喂给仿真模型,对比仿真状态与试飞状态的偏差。如果偏差大,说明建模环节有硬伤,这个不是调参能弥补的。
6.2 试飞数据里的“陷阱”
试飞数据看起来是“最真实的”,但直接拿它验证控制律性能时有很多坑。传感器的高频噪声会淹没真实信号,配套的数据平滑滤波器会引入相位延迟,试飞时阵风扰动导致的数据分散性可能让你误判系统特性。
我常用的做法是:做频闪扫频激励,也就是给舵面叠加一个扫频信号,从0.1Hz一直扫到2Hz左右,然后通过频率响应辨识出实际系统的频响曲线。把这个实测频响与设计模型频响放在一起对比,能非常直观地看出模型在哪个频段偏了、增益和相位的偏差有多大。
这个过程需要设计专门的辨识试飞科目,但它的信息量比单纯看时域响应大得多。辨识结果出来后,再决定是校正模型、调整控制律还是在某个频段加滤波器,每一步都有依据,而不是靠感觉。
6.3 新手最常踩的三个坑
第一个坑是不做量纲检查,度数当弧度用,或者把参数单位搞混,导致控制器增益完全不对。这个低级错误在代码审查时总能揪出一堆。
第二个坑是仿真里忽略延迟,或者把延迟设得太小。实际系统从传感器采样到控制计算到舵机响应,总有几十毫秒的延迟,这对高带宽回路的影响是致命的。建议在一开始就保守地把总延迟设到实际值的1.2倍。
第三个坑是只做线性和小扰动仿真,从不做非线性仿真。等你把限幅、死区、延迟、非线性气动全加上,原来“稳定”的控制器很可能根本不工作。一位导师级的前辈说得特别直白:“线性仿真只是安慰剂,非线性仿真才是照妖镜。”现在我在校核新人的控制律设计方案时,第一件事就是查他有没有做非线性仿真,没做的一律打回。
7. 一点个人体会
做飞控越久,越觉得“第6章飞行控制理论基础”里的每一节都有用。它不像代码或者调试技巧那样能快速见效,但它是你解决所有疑难问题时的底层坐标系。别人还在那里碰参数猜原因的时候,你已经能根据模态、裕度、延迟这几个维度快速定位问题区间了。
最后分享一个小习惯:在每个项目开始时,花半天时间把控制对象的状态方程重新手推一遍,顺手把增益单位、坐标系、饱和限幅、延迟预算都写在纸面上。这个习惯看起来慢,但它能帮你避开后面很多漫长的半夜排故。做飞行控制,慢就是快,地基稳了,楼才能盖高。