HL-20自动驾驶仪的姿态控制MIMO设计
这是HL-20飞行器飞行控制系统设计和调整示例系列的第4部分。本部分展示如何调整MIMO PI架构以控制车辆的滚转、俯仰和偏航。
背景
本例使用的HL-20模型改编自NASA HL-20起重机体(航天Blockset),请参阅本系列的第1部分(HL-20机身的修整和线性化)浏览详情。在第2部分和第3部分中,我们展示了如何关闭HL-20自动驾驶仪的经典SISO架构的内环和调优外环HL-20自动驾驶仪的角速率控制而且HL-20自动驾驶仪SISO设计中的姿态控制获取详细信息。在本例中,我们将探讨在外部循环中切换到MIMO架构的好处。
在这种架构中,三个音调、alpha和beta的PI循环被一个3输入3输出PI控制器所取代,该控制器混合了音调、alpha和beta测量,以计算内环设定点p_demand, q_demand, r_demand。直观地说,这种架构在减少轴之间的交叉耦合方面应该更成功。请注意,P和I增益是3 × 3矩阵,计划作为alpha和beta的函数。
要开始,加载模型,设置CTYPE
到3选择Controller块的MIMO变体,并重新应用第2部分的步骤关闭内环(这部分设计不变)。注意,这将创建和配置anslTuner
接口ST0
用于与Simulink模型交互。金宝app
load_system (“csthl20_control”) ctype = 3;% MIMO架构HL20recapPart2 ST0
“csthl20_control”的slTuner调优接口:没有调优块。使用addBlock命令添加新的块。9点分析 : -------------------------- 点1:信号”da;德博士”,位于“输出端口1”csthl20_control /飞行控制系统控制器的点2:信号“评定”,位于csthl20_control / HL20机身的输出端口2点3:输出端口1的csthl20_control /飞行控制系统/ Alpha_deg点4:“输出端口1”csthl20_control /飞行控制系统/ Beta_deg点5:“输出端口1”csthl20_control /飞行控制系统/ Phi_deg点6:csthl20_control/飞控系统/控制器/MIMO/需求点7:信号“p_demand”,位于csthl20_control/飞控系统/控制器/MIMO/滚出1点8:信号“q_demand”,位于csthl20_control/飞控系统/控制器/MIMO/滚出2点9:信号“r_demand”,位于csthl20_control/飞控系统/控制器/MIMO/滚出3无永久开口。使用addOpening命令添加新的永久开口。参数:[]OperatingPoints:[](将使用模型初始条件)BlockSubstitutions: [3x1 struct]选项:[1x1线性化。SlTunerOptions] Ts: 0
外循环调优设置
在SISO设计中(HL-20自动驾驶仪SISO设计中的姿态控制),第一步是获得每个(alpha,beta)条件下外环所看到的“植物”的线性化模型。为了说明内环增益Kp,Kq,Kr随(alpha,beta)变化的事实,将“MIMO/Product”块替换为其线性等效,即对角增益矩阵
黑色=“csthl20_control/飞行控制系统/控制器/MIMO/产品”;Subs = [0 (3) append(ss(Kp),ss(Kq),ss(Kr))];BlockSub4 = struct(“名字”黑色,“价值”、潜艇);ST0。BlockSubstitutions = [ST0.]BlockSubstitutions;BlockSub4];
增益计划“P”和“I”被初始化为常数对角线矩阵Diag ([0.05, 0.05, -0.05])
.画出这些初始设置的角响应。
T0 = getIOTransfer(ST0,“需求”, {“Phi_deg”,“Alpha_deg”,“Beta_deg”});步骤(T0, 6)
调优目标
为了调优MIMO增益调度,我们使用以下三个调优目标:
一个“灵敏度”目标,以指定所需的带宽(响应时间)和最大限度地在低频解耦。
S = tf(“年代”);R1 = TuningGoal。灵敏度({“Phi_deg”,“Alpha_deg”,“Beta_deg”}, s);R1。焦点= [1e-2 1];R1。LoopScaling =“关闭”;viewGoal (R1)
从角度需求到角度响应的闭环传递的“增益”约束。选择增益剖面是为了加强充分的滚转和限制超调(这与交叉附近的驼峰有关)。
MaxGain = 1.2 * (10/(s+10))^2;最大增益剖面%R2 = TuningGoal。获得(“要求”, {“Phi_deg”,“Alpha_deg”,“Beta_deg”}, MaxGain);viewGoal (R2)
“裕度”目标要求增益裕度至少为7 dB,相位裕度至少为45度(在磁盘裕度意义上)。
R3 = TuningGoal。利润(“博士da;德;”7、45);
增益调度调优
MIMO PI控制器的增益调度由MIMO体系结构中的“P”和“I”块指定。回想一下,这些块输出3 × 3矩阵并实现MIMO传递函数:
为了说明,我们使用MATLAB函数块来实现比例增益调度,使用矩阵插值块来实现积分增益调度。矩阵插值块存在于“Simulink Extras”库中,是一个查找表,其中每个表项都是一个金宝app矩阵。
要调优P和I增益调度,请将相应的块标记为可调的slTuner
接口。
TunedBlocks = {“那/ P”,“那/我”};ST0.addBlock (TunedBlocks)
将每个调谐增益计划参数化为alpha和beta的多项式曲面。同样,我们使用二次曲面来表示比例增益,使用多线性曲面来表示积分增益。
% (alpha,beta)设计点的网格Alpha_vec = -10:5:25;% Alpha范围Beta_vec = -10:5:10;% Beta范围[alpha,beta] = ndgrid(alpha_vec,beta_vec);SG = struct(“α”α,“β”,β);比例增益矩阵alphabetaBasis = polyBasis(“规范”2、2);P0 = diag([0.05 0.05 -0.05]);%初始(常数)值PS = tunablessurface (“P”, P0, SG, alphabetaBasis);ST0.setBlockParam (“P”、PS);%积分增益矩阵alphabase = @(alpha) alpha;betaBasis = @(beta) abs(beta);alphabetaBasis = ndBasis(alphaBasis,betaBasis);I0 = diag([0.05 0.05 -0.05]);IS =可调表面(“我”, I0, SG, alphabetaBasis);ST0.setBlockParam (“我”,);
最后,使用systune
针对3个调谐目标调整6个增益曲面。
ST = systune(ST0,[R1 R2 R3]);
最终:软= 1.13,硬= -Inf,迭代= 109
目标函数的最终值表示调优目标接近满足(当调优目标的“值”小于1时,调优目标就满足了)。绘制闭环角响应图,并与基线设计进行比较。
T = getIOTransfer(ST,“需求”, {“Phi_deg”,“Alpha_deg”,“Beta_deg”});步骤(T0, T, 6)传说(“基线”,“调”,“位置”,“东南”)
这些响应表明,与SISO设计相比,超调量和交叉耦合显著减少。
验证
为了进一步验证此设计,将调谐增益曲面推入Simulink模型。金宝app
writeBlockValue (ST)
对于矩阵插值块“I”,它对表断点处的增益面进行采样,并更新模型工作区中的表数据。对于MATLAB函数块“P”,它生成增益面方程的MATLAB代码。您可以通过双击该块来查看此代码。
一旦你将增益推到Simulink, MIMO架构的调优金宝app就完成了,你就可以模拟它在着陆过程中的行为。
这些响应与SISO设计(HL-20自动驾驶仪SISO设计中的姿态控制),因为在整个操作过程中要求不高。MIMO设计的好处将在更具挑战性的机动中更加明显。