4. 飞控模型建模
飞控仿真系统的核心价值在于以数学模型替代真实飞行器,在硬件在环(HIL)或纯数字仿真环境中验证飞控算法、故障注入逻辑与失效保护策略。本章聚焦于构建一个可用于故障注入测试的飞控被控对象模型,涵盖六自由度(6-DOF)刚体动力学、气动参数建模、以及电机与螺旋桨的推力/力矩响应模型。我们将从理论推导出发,结合工程实践中的参数辨识与模型简化方法,最终形成一个可在MATLAB/Simulink或C++环境中运行的模块化仿真模型。
上图展示了飞控仿真被控对象模型的整体架构。在故障注入测试中,我们不仅需要构建一个高保真的标称模型,更需要在模型内部预留多个故障注入接口(图中红色虚线框标注的A、B、C、D点)。这些接口允许测试工程师在不修改模型核心代码的前提下,模拟执行器卡死、螺旋桨失效、气动参数突变以及传感器故障等典型失效模式。下面我们将逐一拆解各子模型的建模要点与工程实现方法。
4.1 六自由度刚体动力学模型
六自由度刚体模型是飞控仿真的核心,它描述了飞行器在三维空间中的线运动与角运动。该模型基于牛顿-欧拉方程,在机体坐标系(Body Frame)下建立力与力矩的平衡关系。
核心原理:刚体运动可分解为质心的平动和绕质心的转动。在机体坐标系下,力方程和力矩方程分别表示为:
力方程: m * (dV/dt + ω × V) = F_aero + F_gravity + F_prop
力矩方程: I * (dω/dt) + ω × (I * ω) = M_aero + M_prop
其中,V = [u, v, w]^T 为机体坐标系下的线速度,ω = [p, q, r]^T 为角速度,m 为质量,I 为惯性张量矩阵。方程中的叉乘项 ω × V 和 ω × (Iω) 代表了由于机体旋转引起的耦合效应,在高速机动或大角速度情况下不可忽略。
为了将运动状态转换到地面坐标系(NED系),还需要引入姿态运动学方程。工程中推荐使用四元数(Quaternion)表示姿态,以避免欧拉角在俯仰角接近±90°时出现的奇异性问题。四元数更新方程为:
q_dot = 0.5 * q ⊗ [0, p, q, r]
其中 ⊗ 表示四元数乘法。使用四元数后,姿态解算的数值稳定性显著提升,且便于后续与惯性导航模块对接。
I 通常假设为对角阵(忽略惯性积),但对于高速旋转的螺旋桨,需考虑陀螺力矩效应,即螺旋桨旋转对机体角速度的耦合影响。
4.2 气动参数建模与辨识
气动参数决定了飞行器在空气中的受力情况,是模型保真度的关键。对于固定翼或复合翼飞行器,气动力与力矩通常表示为迎角(α)、侧滑角(β)、舵面偏度(δ)以及角速度(p, q, r)的函数。
建模方法:工程中常用的气动模型分为三类:
- 线性气动模型:适用于小迎角、小侧滑角的巡航状态。例如升力系数
C_L = C_L0 + C_Lα * α + C_Lδe * δe。优点是计算量小,便于线性化分析;缺点是机动飞行时误差大。 - 查表模型(Look-up Table):通过风洞实验或CFD仿真获取不同α、β、δ组合下的气动系数,形成多维表格。仿真时通过线性插值获取当前状态的气动系数。这是工业级仿真器的主流选择。
- 半经验公式模型:结合理论推导与实验数据拟合,如采用多项式拟合
C_D = C_D0 + k * C_L²(极曲线)。适用于快速原型验证。
对于多旋翼飞行器,气动模型相对简单,主要考虑桨叶的阻力与反扭矩,但需注意“地面效应”和“涡环状态”等非线性现象。下表对比了三种建模方法的适用场景:
| 建模方法 | 精度 | 计算开销 | 适用阶段 | 故障注入适配性 |
|---|---|---|---|---|
| 线性模型 | 低(小角度) | 极低 | 控制律初步设计 | 易修改参数,适合增益突变故障 |
| 查表模型 | 高 | 中 | HIL仿真、详细性能评估 | 可通过切换表格模拟气动面损伤 |
| 半经验公式 | 中 | 低 | 快速原型、实时仿真 | 适合连续参数退化故障 |
K_fault(t) 来模拟参数突变,例如 C_L_fault = C_L * (1 - 0.3 * step(t-5)) 表示5秒时升力突然下降30%。
4.3 电机与螺旋桨模型
电机与螺旋桨模型将控制指令(油门或转速)转换为推力和力矩。对于电动飞行器,该模型通常包含两个环节:电机动态响应和螺旋桨空气动力学。
电机动态响应:无刷直流电机(BLDC)的电气时间常数远小于机械时间常数,在飞控频带内(通常<50Hz)可简化为一阶惯性环节:
Ω_dot = (1/τ_mot) * (Ω_cmd - Ω)
其中 τ_mot 为电机时间常数(典型值0.02~0.05s),Ω_cmd 为期望转速,Ω 为实际转速。在故障注入中,电机卡死可建模为 Ω ≡ 0,而电机增益下降可建模为 τ_mot 增大或 Ω_cmd 乘以一个小于1的系数。
螺旋桨推力/力矩模型:基于动量理论,推力和反扭矩与转速的平方成正比:
T = k_T * ρ * D^4 * Ω²
M = k_M * ρ * D^5 * Ω²
其中 k_T 和 k_M 为推力系数和扭矩系数,ρ 为空气密度,D 为桨径。在仿真中,通常将 k_T * ρ * D^4 合并为一个常数 K_T,通过静拉力测试台标定获得。
4.4 案例拆解:四旋翼执行器部分失效的故障注入仿真
下面通过一个完整的案例,演示如何利用上述模型进行故障注入测试。该案例旨在验证飞控系统在单个电机推力下降30%时的姿态保持能力。
背景与约束:某四旋翼验证平台,质量1.5kg,轴距450mm,悬停转速6000 RPM。飞控算法采用串级PID(内环角速度,外环角度)。要求在仿真中注入电机2(右前)推力下降故障,并观察姿态响应。
初始现象与目标:在t=5s时注入故障,期望观察滚转角和俯仰角的瞬态偏差及稳态误差。若飞控补偿有效,稳态误差应小于2°。
关键输入数据:
- 电机时间常数:τ_mot = 0.03s
- 推力系数:K_T = 1.2e-5 N/RPM²
- 扭矩系数:K_M = 2.5e-7 N·m/RPM²
- 惯性张量:I_xx = I_yy = 0.015 kg·m², I_zz = 0.025 kg·m²
分析判断过程:电机2推力下降30%后,产生的滚转力矩约为 ΔM_x = T * L * 0.3(L为机臂长度0.32m)。悬停时单电机推力约3.7N,则故障产生的额外滚转力矩约0.35 N·m。该力矩将导致滚转角加速度约23 rad/s²,若不补偿,0.5秒内滚转角将偏转约3°。
实际操作步骤:
- 在Simulink模型中,定位到电机2的推力输出端口,插入一个“Step”模块作为故障注入信号。
- 设置Step模块:Step time = 5,Initial value = 1,Final value = 0.7。将Step输出与推力信号相乘,模拟推力下降。
- 运行仿真,记录滚转角(φ)和俯仰角(θ)响应曲线。
- 对比无故障与有故障的响应,分析PID控制器的补偿效果。
结果对比:仿真结果显示,故障注入后滚转角最大偏差约4.5°,在PID作用下约1.2s后恢复到2°以内。俯仰角也出现约1°的耦合偏差。通过调整内环角速度PID参数(增大Kp),可将最大偏差降至3°以内,但会引入轻微振荡。
风险与代价:该故障注入方式仅模拟了推力下降,未考虑电机响应延迟变化。实际电机故障可能伴随温度升高导致时间常数增大,需同时修改 τ_mot 参数。此外,若故障导致反扭矩变化,还需在力矩方程中同步注入。
复盘经验:故障注入测试不应仅关注稳态结果,更要关注瞬态过程中的超调量与恢复时间。建议在故障注入点增加信号记录(To Workspace模块),便于后续离线分析。同时,建议将故障注入逻辑封装为独立的子系统,通过外部输入(如Simulink的Signal Editor)控制故障类型与时刻,提高测试复用性。