此示例显示了如何调整用于植物多种操作模式的固定结构控制器。
该示例涉及容易容忍的乘客喷气式飞机飞行控制在电梯和Aileron执行器中断的中断。飞行控制系统必须保持稳定性并满足名义操作中的性能和舒适性要求,并且某些执行器因控制表面损伤而不再有效的劣化条件。必须在所有条件下缓解风阵容。此应用程序有时被称为可靠的控制因为飞机必须在极端飞行条件下保持安全。
控制系统在Simulink中建模。金宝app
目录(fullfile (matlabroot,'例子','控制','主要的'))%添加示例数据Open_System(“faultTolerantAircraft”)
该飞机被建模为具有以下状态变量的刚性6阶状态空间系统(单位是用于角速率的速度和DEG / s的MPH):
U:X-Body轴速度
w: z轴体速度
问:音高率
V:Y-Body轴线速度
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 1;…名义运行方式%0 1 1 1 1;…右电梯停机1 0 1 1 1 1;…%左电梯停机1 1 0 1 1;…右副翼停机1 1 1 0 1;…%留下了jileron停电1 0 0 1 1 1;…左升降舵和右副翼停机0 1 0 1 1;…右升降舵和右副翼停机0 1 1 0 1;…右升降舵和左副翼故障1 0 1 0 1;…%左电梯和左边的停电];
控制器:
提供良好的跟踪性能在mu, alpha,和beta在标称运行模式与三个轴的充分解耦
在风速为每小时10英里的情况下保持性能
在执行机构断电时限制稳定性和性能退化。
要表达第一个要求,您可以使用类似LQG的成本函数来惩罚集成的跟踪错误e
还有控制的努力u
:
对角线的重量和是用于交易响应和控制努力的主要调谐旋钮,并强调一些渠道。使用重量variance.
要求表达这种成本函数,并放松性能重量对于中断场景,是2的倍数。
我们= diag([10 20 15]);吴=眼(3);%标称跟踪要求SoftNom = TuningGoal.WeightedVariance (“选点”,{“e”,“u”吴},blkdiag(我们),[]);SoftNom。模型= 1;%名义模型停电条件%跟踪要求SoftOut = TuningGoal.WeightedVariance (“选点”,{“e”,“u”},Blkdiag(we / 2,wu),[]);SOFTOUT.MODELS = 2:9;%中断场景
对于风力阵风缓解,限制误差信号的方差e
因为有白噪声工作组
驱动阵风模型。同样,对中断场景使用不那么严格的要求。
减轻阵风所需的百分比hardnom = tuninggoal.variance('wg',“e”,0.02);hardnom.models = 1;%阵风缓解中断条件的要求hardout = tuninggoal.variance('wg',“e”, 0.1);HardOut。模型= 9;
设置风速为10英里/小时,初始化控制器的可调状态反馈和积分器增益。
甘精= 10;ki =眼睛(3);Kx =零(3,6);
使用slTuner
接口设置调整任务。列出要调整的块并通过不同的方式指定九个飞行条件停机
Simulink模型中的变量。金宝app因为您只能在标量参数中变化slTuner
,独立地指定每个条目所采取的值停机
向量。
OutageData =结构(…“名字”,{“停机(1)”,“中断(2)”,'中断(3)','中断(4)',“停机(5)”},…“价值”,mat2cell(outagcases,9,[1 1 1 1 1]));ST0 = slTuner (“faultTolerantAircraft”,{“吻”,“Kx”}, OutageData);
使用systune
调整控制器增益受标称要求。将风力阵风减轻视为艰难的约束。
[圣,fSoft gHard] = systune (ST0, SoftNom HardNom);
最终:Soft = 22.6,硬= 0.99859,迭代= 275
检索增益值并模拟步进命令的响应穆,阿尔法,β
对于名义和降级的飞行条件。所有模拟都包括风阵风,红色曲线是标称响应。
Ki = getBlockValue(圣,“吻”);Ki = Ki.d;Kx = getBlockValue(圣,“Kx”);kx = kx.d;%银行角度设定点模拟plotResponses (OutageCases 1 0,0);
%攻击角度仿真仿真plotresponses(OutageCases,0,1,0);
%SideLip-角度设定点模拟plotresponses(OutageCares,0,0,1);
标称响应是好的,但性能的恶化是不可接受的,当面对执行器中断。
为了提高可靠性,需要重新调整控制器增益,以满足标称设备的标称要求,以及所有8个停机场景的放宽要求。
[圣,fSoft gHard] = systune (ST0 [SoftNom; SoftOut], [HardNom; HardOut]);
Final:Soft = 25.6,硬= 0.99964,迭代= 532
最佳性能(LQG成本的平方根)只比名义调优(26 vs. 23)稍差一点。检索增益值并重新运行模拟(红色曲线是标称响应)。
Ki = getBlockValue(圣,“吻”);Ki = Ki.d;Kx = getBlockValue(圣,“Kx”);kx = kx.d;%银行角度设定点模拟plotResponses (OutageCases 1 0,0);
%攻击角度仿真仿真plotresponses(OutageCases,0,1,0);
%SideLip-角度设定点模拟plotresponses(OutageCares,0,0,1);
控制器现在为在此示例中考虑的所有中断场景提供可接受的性能。通过添加规格,例如最小稳定性边缘和增益限制以避免执行器速率饱和度,可以进一步改进设计。
rmpath(fullfile(matlabroot,'例子','控制','主要的'))%删除示例数据
TuningGoal.Variance
|TuningGoal.WeightedVariance
|slTuner
(金宝app仿真软件控制设计)|systune (slTuner)
(金宝app仿真软件控制设计)