主要内容

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”块替换为其线性等效,即对角增益矩阵

左($ $ \ \{数组}{ccc}开始Kp(\α,β\)& # 38;0 & # 38;0 \\ 0 &Kq(\α,β\)& # 38;0 \\
0 &0 & # 38;Kr(\alpha,\beta) \end{array} \right)。$ $

黑色=“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传递函数:

$ $ \离开(\{数组}{c}开始p_ {\ rm需求}\ \ q_ {\ rm需求}\ \ r_ {\ rm需求}\结束数组{}\右)= & # xA; \压裂{10}{s + 10} (P + I / s) & # xA; \离开(\开始{数组}{c} \ phi_ {\ rm度}\ \ \ alpha_ {\ rm度}\ \ \ beta_ {\ rm度}\结束数组{}\右)。$ $

为了说明,我们使用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设计的好处将在更具挑战性的机动中更加明显。

另请参阅

相关的话题