主要内容

用于调整HL-20自动驾驶仪的MATLAB工作流程

这是用于HL-20车辆的飞行控制系统的设计和调整的示例系列的第5部分。本部分显示如何在MATLAB中执行大多数设计,而无需与Simulink模型进行交互。金宝app

背景

此示例使用自适应的HL-20模型NASA HL-20升降机身机身(航空航天块集),见该系列的第1部分(HL-20机身的修剪和线性化)有关详细信息。自动驾驶仪控制飞机的姿态由三个内环和三个外循环。

在第2部分(HL-20自动驾驶仪中的角速率控制)和第3部分(HL-20 AutoPilot中的态度控制 - Siso设计),我们展示了如何关闭内部环路并调整外部环路的增益计划。这些例子利用了SLTUNER.接口与Simulink模型交互,获取线性化模型和控制系统响应,金宝app然后将调谐值推回Simulink。

对于简单的架构和快速设计迭代,它可以是优选的(和概念上更简单)来操纵MATLAB中的线性化模型,并使用基本命令反馈关闭循环。此示例示出了如何执行在MATLAB部分2和3的设计步骤。

获得植物模型

要调整自动驾驶仪,我们需要从偏转角位置和价格的传递函数的线性模型。要做到这一点,从“修剪和线性化”的步骤结果启动(见HL-20机身的修剪和线性化)。回顾G7.是40种不同(alpha,beta)条件的机身的七态线性模型,和CS是控件选择块的线性化。

加载csthl20_trimdata.G7.CS

使用Simulink金宝app Model“CSTHL20_TRIM”作为选择I / O的参考,通过连接构建所需的工厂模型G7.CS串联。不要忘记将PHI,Alpha,β从弧度转换为程度。

R2D = 180 / PI;g =诊断([1 1 1 R2D R2D R2D])* G7([4:7 31:32],1:6)* CS(:,1:3);g.inputname = {'da''de''博士'};g.outputname = {'P''Q''r''phi_deg''alpha_deg''beta_deg'};尺寸(g)
8x5状态空间模型数组。每个模型有6个输出,3个输入和7个状态。

这给我们植物模型上的用于修剪(α,β)的条件下的8×5网格阵列。

关闭内圈

要关闭内部环路,我们遵循与第2部分相同的程序(HL-20自动驾驶仪中的角速率控制)。这包括选择增益KP,KQ,KR,分别将P,Q,R循环的交叉频率分别设置为30,22.5和37.5 rad / s。

%计算kp,kq,kr为每个(alpha,beta)条件。gpqr = g({'P''Q''r'},:);kp = 1./abs(evalfr(gpqr (1,1),30i)));kq = -1./abs(日见列难(GPQR(2,2))));kr = -1./abs(日见列(公(GPQR)));BODE(GPQR(1,1)* KP,GPQR(2,2)* KQ,GPQR(3,3)* KR,{1E-1,1E3}),网格图例('da到p''de to q''去r'

图包含2个轴。轴1包含120个类型的物体。这些对象代表da到p,de to q,dr到r。轴2包含120个类型的类型。这些对象代表da到p,de to q,dr到r。

反馈关闭三个内部环。在工厂输入DA,DE,DR供以后评估稳定性边距,在植物输入DA的分析点。

CPQR = Append(SS(KP),SS(KQ),SS(KR));APU = Analysispoint('U',3);apu.location = {'da''de''博士'};GPOS =反馈(G * APU * CPQR,EYE(3),1:3,1:3);gpos.InputName = {'p_demand''q_demand''r_demand'};大小(GPO)
8x5广义状态空间模型数组。每个型号有6个输出,3个输入,7个状态和1个块。

请注意,这些命令进行无缝管理,我们正在处理对应的各种(α,β)条件下的植物及其产生的收益阵列的事实。

调整外环

接下来移动到外环。我们已经有一系列线性模型GPO.对于外环看到的“植物”。第3部分(HL-20 AutoPilot中的态度控制 - Siso设计),参数的六个增益调度为α和β多项式表面。同样,我们使用的比例增益和多线性的表面为积分增益二次曲面。

(Alpha,Beta)设计点的%网格alpha_vec = -10:5:25;%alpha范围beta_vec = -10:5:10;%beta范围[alpha,beta] = ndgrid(alpha_vec,beta_vec);sg = struct('α',α,'beta',beta);%比例收益Alphabetabasis = PolyBasis('典范',2,2);p_phi = tunballulface('pphi',0.05,SG,alphabetaBasis);p_alpha = tunablyurface('Palpha',0.05,SG,alphabetaBasis);p_beta = tunballulface('pbeta',-0.05,sg,alphabetabasis);%积分增长alphabasis = @(alpha)alpha;betaBasis = @(测试版)ABS(测试版);alphabetabasis = ndbasis(alphabasis,betabasis);I_PHI = Tunablyurface('iphi',0.05,SG,alphabetaBasis);i_alpha = tunballulface('Ialpha',0.05,SG,alphabetaBasis);i_beta = tunballulsurface('ibeta',-0.05,sg,alphabetabasis);

为外环的总体控制单元是对角3×3 PI控制器采取的角度位置PHI,α,β的误差以及计算所述速率需求p_demand,q_demand,r_demand。

kp =附加(p_phi,p_alpha,p_beta);ki =附加(i_phi,i_alpha,i_beta);CPOS = kp + ki * tf(1,[1 0]);

最后,使用反馈为了获得外环的可调闭环模型。为了启用调谐和闭环分析,请在工厂输出中插入分析点。

RollOffFilter = TF(10,[110]);apy = Analysispoint('是',3);apy.location = {'phi_deg''alpha_deg''beta_deg'};T0 =反馈(APY * GPO(4:6,:) * Rollofffilter * CPOS,Eye(3));t0.InputName = {'phi_demand''alpha_demand''beta_demand'};t0.outputname = {'phi_deg''alpha_deg''beta_deg'};

您可以绘制初始增益表面设置的闭环响应(恒定增益为0.05)。

步骤(t0,6)

图包含9个轴。具有标题的轴1来自:phi_demand包含40个类型的类型。此对象表示T0。轴2包含40个类型的线路。此对象表示T0。轴3包含40个类型的类型。此对象表示T0。具有标题的轴4来自:alpha_demand包含40个类型的类型。此对象表示T0。轴5包含40个类型的类型。 This object represents T0. Axes 6 contains 40 objects of type line. This object represents T0. Axes 7 with title From: Beta_demand contains 40 objects of type line. This object represents T0. Axes 8 contains 40 objects of type line. This object represents T0. Axes 9 contains 40 objects of type line. This object represents T0.

调整目标

使用与第3部分相同的调谐目标(HL-20 AutoPilot中的态度控制 - Siso设计)。这些包括“minloopgain”和“MaxLooggain”目标,可以在0.5和5 rad / s之间设置外环的增益交叉。

r1 = tuninggoal.minloopgain({'phi_deg''alpha_deg''beta_deg'},0.5,1);r1.loopscaling =.'离开';r2 = tuninggoal.maxloopgain({'phi_deg''alpha_deg''beta_deg'},TF(50,[1 10 0]));r2.loopscaling =.'离开';

这些还包括不同的“边距”目标,以在每个循环和跨越环路中施加足够的稳定性边缘。

%收获边距Vs(alpha,beta)gm = [......6 6 6 6 6 6 6 7 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 7 6 6 6 6 6 6 6];%相边距Vs(alpha,beta)PM = [......40 40 40 40 40 40 40 45 40 40 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 40 40 45 40 40 40 40 40 40 40];%营造出不同的目标fh = @(gm,pm)tuninggoal.margins({'da''de''博士'},通用汽车,PM);R3 =改变戈尔戈尔(FH,GM,PM);

增益时间表调整

你现在可以使用Systune.在所有40个设计点处塑造六个增益面反对调谐目标。

T = SYSTUNE(T0,[R1 R2 R3]);
Final:Soft = 1.03,硬= -Inf,迭代= 52

最终的客观值接近1,所以专注目标基本上满足。画出闭环角度响应,并与初始设置比较。

步骤(t0,t,6)图例('基线''调整''地点''东南'

图包含9个轴。具有标题的轴1来自:phi_demand包含80个类型的类型线。这些对象代表基线,调整。轴2包含80个类型的类型。这些对象代表基线,调整。轴3包含80个类型的类型。这些对象代表基线,调整。具有标题的轴4来自:Alpha_Demand包含80个类型的类型。这些对象代表基线,调整。轴5包含80个类型的类型。 These objects represent Baseline, Tuned. Axes 6 contains 80 objects of type line. These objects represent Baseline, Tuned. Axes 7 with title From: Beta_demand contains 80 objects of type line. These objects represent Baseline, Tuned. Axes 8 contains 80 objects of type line. These objects represent Baseline, Tuned. Axes 9 contains 80 objects of type line. These objects represent Baseline, Tuned.

结果匹配第2部分和3.调谐增益表面也是相似的。

CLF.%注意:setBlockValue更新每个增益表面,其中T中的调谐系数子图(3,2,1),ViewsURF(SetBlockValue(P_Phi,T))子图(3,2,3),ViewsURF(SetBlockValue(P_Alpha,T))子图(3,2,5),ViewSurf(SetBlockValue(P_Beta,T))副区(3,2,2),viewSurf(setBlockValue(I_PHI,T))副区(3,2,4),viewSurf(setBlockValue(I_ALPHA,T))副区(3,2,6),viewSurf(setBlockValue(I_BETA,T))

图包含6个轴。具有标题增益PPHI(Alpha,Beta)的轴1包含类型表面的物体。具有标题增益掌脑(Alpha,Beta)的轴2包含类型表面的对象。具有标题增益Pbeta(alpha,beta)的轴3包含类型表面的物体。具有标题增益IPHI(Alpha,Beta)的轴4包含类型表面的对象。具有标题增益Ialpha(α,beta)的轴5包含类型表面的物体。具有标题增益IBETA(Alpha,Beta)的轴6包含类型表面的对象。

你现在可以使用evalsurf.要对增益曲面进行采样并更新Simulink模型中的查找表。金宝app你也可以使用Codegen.生成增益表面方程的代码的方法。例如

%生成“p phi”块的代码Mcode = Codegen(SetBlockValue(P_PHI,T));%获得“I PHI”查找表的调谐值kphi = evalsurf(setblockValue(i_phi,t),alpha_vec,beta_vec);

也可以看看

相关话题