主要内容

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回路被一个三输入三输出PI控制器所取代,该控制器混合音调、alpha和beta测量值来计算内部回路的设定点p_demand、q_demand、r_demand。直观地说,这种架构在减少轴之间的交叉耦合方面应该更成功。注意,P和I增益是3 × 3矩阵,作为和的函数调度。

要开始,请加载模型,设置ctype.到3选择控制器块的MIMO变体,并重新涂上第2部分用于关闭内环(这部分设计不变)。请注意,这会创建和配置SLTUNER.界面ST0用于与Simulink模型进行交互。金宝app

load_system(“csthl20_control”) ctype = 3;%MIMO架构HL20RecAppArt2 ST0.
“CSTHL20_CONTROL”的SLTUNER调整界面:无调谐块。使用AddBlock命令添加新块。9分析点:------------------------第1页:信号“da; de; dr”,位于'输出端口1'CSTHL20_CONTROL /飞行控制系统/控制器点2:信号“PQR”,位于CSTHL20_CONTROL / HL20机构点3:CSTHL20_CONTROL /飞行控制系统的“输出端口1”/ ALPHA_DEG点4:'输出端口1'CSTHL20_CONTROL /飞行控制系统/ BETA_DEG点5:CSTHL20_CONTROL /飞行控制系统的“输出端口1”/ PHI_DEG点6:CSTHL20_CONTROL /飞行控制系统/控制器/ MIMO /需求点7:信号“P_Demand,位于CSTHL20_CONTROL /飞行控制系统/控制器/ MIMO / ROLL-OFF1点8:信号“Q_DEMAND”,位于CSTHL20_CONTROL / FLICK SYSTER / CONTROLLER / MIMO / CONTROLL / MIMO /的“Q_DEMAND”。ROLL-OFF2点9:信号“R_DEMAND”,位于CSTHL20_CONTROL /飞行控制系统/控制器/ MIMO / ROLL-OFF3的“输出端口1”处,没有永久开口。使用addopening命令添加新的永久性开口。具有点符号的属性GET / SET Access:参数:[]操作点:[](模型初始条件将使用。)blocksubstitutions:[3x1 struct]选项:[1x1 linearize.sltuneroptions] ts:0

用于外循环调谐的设置

如在SISO设计(HL-20自动驾驶仪的姿态控制- SISO设计),第一步是获得外环在每个(阿尔法,贝塔)条件下看到的“植物”的线性模型。为了解释内环增益Kp,Kq,Kr随(alpha,beta)变化的事实,将“MIMO/Product”块替换为其线性等效,即对角增益矩阵

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

BLK =“csthl20_control /飞行控制系统/控制器/ MIMO /产品的;Subs = [zeros(3) append(ss(Kp),ss(Kq),ss(Kr))];BlockSub4 =结构('姓名'黑色,'价值'、潜艇);ST0。(ST0 BlockSubstitutions =。BlockSubstitutions;BlockSub4];

增益调度“P”和“I”被初始化为常数对角矩阵诊断([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.gain('需要', {“Phi_deg”“Alpha_deg”'beta_deg'},maxgain);ViewGoal(R2)

  • “裕度”的目标要求增益裕度至少为7db,相位裕度至少为45度(在磁盘裕度的意义上)。

R3 = TuningGoal。利润('da; de; dr'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 = {'mimo / 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(“α”,α,'beta',β);比例增益矩阵alphabetaBasis = polyBasis ('典范',2,2);p0 = diag([0.05 0.05 -05]);%初始(常数)值PS = tunableSurface ('P', P0, SG,字母基础);ST0.setBlockParam ('P',ps);%积分增益矩阵alphabasis = @(alpha)alpha;betabasis = @(beta)abs(beta);alphabetabasis = ndbasis(alphabasis,betabasis);I0 = DIAG([0.05 0.05 -05]);是= Tunbalkurface(“我”, I0, SG,字母基础);ST0.setBlockParam (“我”,是);

最后,使用Systune.根据三个调优目标调整6个增益面。

ST = SYTUNE(ST0,[R1 R2 R3]);
Final:软= 1.13,硬= -Inf,迭代= 102

目标函数的最终值表明调优目标几乎达到(当其“值”小于1时,调优目标就满足)。绘制闭环角响应,并与基线设计进行比较。

t = getiotransfer(st,“需求”, {“Phi_deg”“Alpha_deg”'beta_deg'});步骤(t0,t,6)图例(“基线”'调整'“位置”“东南”

与SISO设计相比,这些响应显着减少了超调和交叉耦合。

验证

为了进一步验证该设计,将调谐增益面推到Simulink模型中。金宝app

writeblockvalue(st)

对于Matrix Interpolation块“I”,它会在表格断点处采样增益表面,并在模型工作区中更新表格数据。对于MATLAB函数块“P”,生成增益面方程的MATLAB代码。您可以通过双击代码块来查看这段代码。

一旦您将增益推到Simulink, MIMO架构的调优金宝app就完成了,您可以在着陆方法期间模拟它的行为。

这些响应与SISO设计没有太大不同(HL-20自动驾驶仪的姿态控制- SISO设计)由于整个机动的温和需求。MIMO设计的好处将在更具挑战性的机动中更加明显。

也可以看看

相关的话题