客机的容错控制
这个例子展示了如何针对工厂的多种运行模式调整固定结构控制器。
背景
本例涉及客机在电梯和副翼执行机构发生故障时的容错飞行控制。飞行控制系统必须在标称操作和退化条件下保持稳定性,满足性能和舒适性要求,退化条件下一些执行器由于控制面受损而不再有效。阵风在任何情况下都必须得到缓解。这个应用程序有时被称为可靠的控制因为飞机的安全必须在极端飞行条件下保持。
飞机模型
控制系统在Simulink中建模。金宝app
目录(fullfile (matlabroot,“例子”,“控制”,“主要”))添加示例数据open_system (“faultTolerantAircraft”)
飞机被建模为一个刚性六阶状态空间系统,具有以下状态变量(速度单位为mph,角速度单位为deg/s):
U: x-体轴速度
W: z-体轴速度
问:pitch rate
V: y轴速度
P:滚转率
R:横摆速率
状态向量可用于控制以及飞行路径银行角速率mu (deg/s),攻角alpha (deg)和侧滑角beta (deg)。控制输入是右升降舵、左升降舵、右副翼、左副翼和方向舵的偏转。所有的偏转都是度数。电梯被对称地分组以产生迎角。副翼以反对称方式分组以产生滚转运动。这导致了3个控制动作,如Simulink模型中所示。金宝app
该控制器由内环的状态反馈控制和外环的MIMO积分动作组成。增益矩阵Ki
而且Kx
分别为3 × 3和3 × 6,因此控制器有27个可调参数。
执行器故障
我们使用9x5矩阵来编码标称模式和各种执行器故障模式。每一行对应一个飞行条件,零表示相应的偏转面中断。
OutageCases = [...1 1 1 1 1;...%名义工作模式0 1 1 1 1;...右电梯停机百分比1 0 1 1 1;...左电梯停机百分比1 1 0 1 1;...%右副翼停机1 1 1 0 1;...%左副翼停机1 0 0 1 1;...左升降舵和右副翼停机。0 1 0 1 1;...%右升降舵和右副翼停机0 1 1 0 1;...右升降舵和左副翼停机。%1 0 1 0 1;...%左升降舵和左副翼停机];
设计要求
控制器应:
在标称工作模式下提供良好的mu, alpha和beta跟踪性能,并对三个轴进行充分的解耦
在风速为每小时10英里的情况下保持性能
在执行机构停机时限制稳定性和性能退化。
为了表达第一个需求,您可以使用类似lqg的代价函数来惩罚集成跟踪误差e
以及控制效果u
:
对角线权重而且是交换响应性和控制努力的主要调节旋钮,并强调一些渠道而不是其他渠道。使用WeightedVariance
要求表达此代价函数,并放宽绩效权重对于停机场景,增加了2倍。
We = diag([10 20 15]);眼(3);%标称跟踪要求SoftNom = TuningGoal。WeightedVariance (“选点”, {“e”,“u”}, blkdiag(We,Wu), []);SoftNom。模型= 1;%标称模型停机条件的跟踪要求SoftOut =调优目标。WeightedVariance (“选点”, {“e”,“u”}, blkdiag(We/2,Wu), []);SoftOut。模型= 2:9;%停机场景
为了减轻阵风,限制误差信号的方差e
因为白噪音工作组
驱动阵风模型。对于停机场景,再次使用不那么严格的需求。
%名义阵风缓解要求HardNom = TuningGoal。方差(“工作组”,“e”, 0.02);HardNom。模型= 1;%停机条件下阵风缓解要求HardOut =调优目标。方差(“工作组”,“e”, 0.1);HardOut。模型= 2:9;
控制器调优的名义飞行
设置阵风速度为10mph,初始化控制器的可调状态反馈和积分器增益。
GustSpeed = 10;Ki =眼睛(3);Kx = 0 (3,6);
使用slTuner
接口设置调优任务。属性列出要调优的块并指定九个飞行条件停机
变量在Simulink模型中。金宝app因为你只能改变标量参数slTuner
的每个条目所取的值停机
向量。
OutageData = struct(...“名字”, {“停机(1)”,“中断(2)”,“停机(3)”,“停机(4)”,“停机(5)”},...“价值”,mat2cell(OutageCases,9,[1 1 1 1 1 1]));ST0 = slTuner(“faultTolerantAircraft”, {“吻”,“Kx”}, OutageData);
使用systune
根据标称要求调整控制器增益。将阵风缓解作为一个硬性约束。
[ST,fSoft,gHard] = systune(ST0,SoftNom,HardNom);
最终:软= 22.6,硬= 0.99942,迭代= 295
检索增益值并模拟对步进命令的响应,和
用于标称和降级飞行条件。所有模拟都包括阵风效应,红色曲线是名义响应。
Ki = getBlockValue(ST,“吻”);Ki = Ki.d;Kx = getBlockValue(ST,“Kx”);Kx = Kx.d;%岸角设定值模拟plotResponses (OutageCases 1 0,0);
%攻角设定值模拟plotResponses (OutageCases 0 1 0);
%侧滑角设定值模拟plotResponses (OutageCases 0 0 1);
标称响应良好,但当执行器停机时,性能恶化是不可接受的。
控制器调整受损飞行
为了提高可靠性,重新调整控制器增益,以满足标称工厂的标称要求,以及所有八种停电场景的放宽要求。
[ST,fSoft,gHard] = systune(ST0,[SoftNom;SoftOut],[HardNom;HardOut]);
最终:软= 25.7,硬= 0.99987,迭代= 548
最优性能(LQG成本的平方根)只比名义调优稍微差一点(26 vs. 23)。检索增益值并重新运行模拟(红色曲线为标称响应)。
Ki = getBlockValue(ST,“吻”);Ki = Ki.d;Kx = getBlockValue(ST,“Kx”);Kx = Kx.d;%岸角设定值模拟plotResponses (OutageCases 1 0,0);
%攻角设定值模拟plotResponses (OutageCases 0 1 0);
%侧滑角设定值模拟plotResponses (OutageCases 0 0 1);
控制器现在为本例中考虑的所有中断场景提供了可接受的性能。通过添加最小稳定裕度和增益限制等规范,可以进一步细化设计,以避免执行器速率饱和。
rmpath (fullfile (matlabroot,“例子”,“控制”,“主要”))删除示例数据
另请参阅
systune (slTuner)
(金宝appSimulink控制设计)|slTuner
(金宝appSimulink控制设计)|TuningGoal。WeightedVariance
|TuningGoal。方差