主要内容

HL-20自动驾驶仪姿态控制——输出设计

这是示例系列的第3部分的设计和优化HL-20飞行器的飞行控制系统。这部分展示了如何优化一个经典的输出架构控制辊,石油,汽车的偏航。

背景

下面的例子使用了改编自HL-20模型NASA HL-20解除身体机体(航天Blockset),请参阅本系列的第1部分(削减和HL-20机身的线性化详情)。飞机的自动驾驶仪控制的态度由三内循环和外循环。

在第2部分中(角速率控制HL-20自动驾驶仪),我们展示了如何关闭内部循环控制角率p, q, r。以下命令回顾相应的步骤。注意,这将创建和配置一个slTuner接口ST0交互仿真软件模型。金宝app

load_system (“csthl20_control”)CTYPE = 2;%选择输出架构HL20recapPart2 ST0
slTuner优化界面“csthl20_control”:没有调整块。使用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:点的输出端口1 csthl20_control /飞行控制系统/控制器/古典/需求点7:信号“p_demand”,位于“输出端口1”csthl20_control /飞行控制系统/控制器/古典/ Roll-off1点8:信号“q_demand”,位于“输出端口1”csthl20_control /飞行控制系统/控制器/古典/ Roll-off2点9:信号“r_demand”,位于“输出端口1”csthl20_control /飞行控制系统/控制器/古典/ Roll-off3没有永久的空缺。使用addOpening命令添加新的永久的空缺。点符号获取/设置访问属性:参数:[]OperatingPoints:[](模型初始条件将使用)。BlockSubstitutions: x1 struct[3]选项:[1 x1线性化。SlTunerOptions] Ts: 0

设置为外循环优化

我们现在的焦点转移到三个gain-scheduledπ循环控制辊(φ),攻角(α),和侧滑角(β)。这些循环可以调整一次(3循环和40操作设计点= 120分)。您还可以使用pidtune调优π在批处理模式为特定目标带宽和相位保证金要求。这两种方法有警告:

  • 很难解释循环交互。

  • 在每个设计点获得的收益可能不一致,需要在操作点平滑。

另一种方法是“增益表面优化”的概念[1],参数化获得时间表P(α,β)和我(α,β)多项式表面和使用systune调优的多项式系数。这种方法解决所有操作点,可以占循环互动,特别是稳定利润的考虑。这是这里展示的方法。

调整外循环,我们必须关闭内部循环和获得的线性化模型外循环在每个看到的“植物”(α,β)条件。我们可以问slTuner计算相应的传递函数,但这将有效解决内部循环收益Kp, Kq Kr,它们的值在默认的操作条件。得到正确的线性化,我们必须告诉slTuner这些收益随(α,β)。块替换又是最简单的方法来做到这一点。Kp标记为不同,找到产品块用于误差信号乘以Kp,数组和替换它的收益,每个(α,β)的一个条件。

ProductBlk =“csthl20_control /飞行控制系统/控制器/古典/ Product1 ';BlockSub4 =结构(“名字”ProductBlk,“价值”[0 ss (Kp)]);

它是容易验证这块线性化相当于乘以不同的误差信号量Kp计算。同样,更换相应的产品块Kq和Kr通过改变收益。

ProductBlk =“csthl20_control /飞行控制系统/控制器/古典/ Product3 ';BlockSub5 =结构(“名字”ProductBlk,“价值”[0 ss (Kq)]);ProductBlk =“csthl20_control /飞行控制系统/控制器/古典/ Product4 ';BlockSub6 =结构(“名字”ProductBlk,“价值”[0 ss (Kr)]);ST0。(ST0 BlockSubstitutions =。BlockSubstitutions;BlockSub4;BlockSub5;BlockSub6];

您现在可以画出角响应模型中初始gain-schedule设置。

T0 = getIOTransfer (ST0,“需求”,{“Phi_deg”,“Alpha_deg”,“Beta_deg”});步骤(T0, 6)

调优目标

基本控制目标包括:带宽(响应时间)和稳定的利润。使用“MinLoopGain”和“MaxLoopGain”目标设置增益之间的外循环交叉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”},特遣部队(50 [1 10 0]));R2。LoopScaling =“关闭”;

使用“利润率”目标实施足够的利润率在每个循环和循环稳定。这个目标是基于磁盘的概念在面对利润保证稳定并发增益和相位的变化这三个循环。因为7 dB的目标利润和40度很难获得极端方向(的角落(α,β)网格),我们使用一个不同的目标的增益和相位保证金要求放松的角落。

%获得利润vs(α,β)通用= [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 6 6 7 6 6 6 6 6 6 6);%阶段利润vs(α,β)点= [40 40 40 40 40 40 40 45 40 40 45岁45岁45岁45岁45岁45岁45岁45岁45岁45岁40 40 45 40 40 40 40 40 40 40];%建立不同的目标跳频= @(通用、pm) TuningGoal.Margins (“博士da;德;”、通用、点);R3 = varyingGoal (FH、通用、点);

增益调度优化

调整P和我获得安排外循环,标志着三个MATLAB函数阻塞和三个查找表作为可调。

TunedBlocks = {“Pφ”,“Pα”,“Pβ”,“我φ”,“我α”,“我β”};ST0.addBlock (TunedBlocks)

参数化每个调增益调度作为一个多项式在α和β表面。在这里,我们使用二次表面的比例收益和多重线性表面积分收益。

%(α,β)设计的网格点alpha_vec = 10:5:25;α%范围beta_vec = 10:5:10;%测试范围(α,β)= ndgrid (alpha_vec beta_vec);SG =结构(“α”α,“β”,β);%的比例增长alphabetaBasis = polyBasis (“规范”2、2);P_PHI = tunableSurface (“Pphi”,0.05,SG, alphabetaBasis);P_ALPHA = tunableSurface (“Palpha”,0.05,SG, alphabetaBasis);P_BETA = tunableSurface (“Pbeta”,-0.05,SG, alphabetaBasis);ST0.setBlockParam (“Pφ”,P_PHI);ST0.setBlockParam (“Pα”,P_ALPHA);ST0.setBlockParam (“Pβ”,P_BETA);%积分收益alphaBasis = @阿尔法(α);betaBasis = @(β)abs(β);alphabetaBasis = ndBasis (alphaBasis betaBasis);I_PHI = tunableSurface (“Iphi”,0.05,SG, alphabetaBasis);I_ALPHA = tunableSurface (“Ialpha”,0.05,SG, alphabetaBasis);I_BETA = tunableSurface (“Ibeta”,-0.05,SG, alphabetaBasis);ST0.setBlockParam (“我φ”,I_PHI);ST0.setBlockParam (“我α”,I_ALPHA);ST0.setBlockParam (“我β”,I_BETA);

注意,我们初始化每个获得表面固定值基线设计建议。在一般情况下,不建议开始从零个或随机初始点,因为问题的难度增加了困在无趣的局部最小值的可能性。相反,更好的策略包括调优一组固定(非正常)的涨幅全部(或相关的子集)的设计点。这种“稳健设计”通常提供了一个良好的起点获得表面调优。

您现在可以使用systune调整6获得表面三个优化目标。

圣= systune (ST0 (R1, R2 R3));
最后:软= 1.03,=无穷,迭代= 41

最后客观值接近1调优目标基本上是达到了。绘制闭环角响应与基线比较设计。

T = getIOTransfer(圣“需求”,{“Phi_deg”,“Alpha_deg”,“Beta_deg”});步骤(T0, T, 6)传说(“基线”,“调”,“位置”,“东南”)

结果与基线可比性较低振动辊和侧滑反应和减少数量的交叉耦合。使用viewSurf检查调整增益的表面。

电视= getTunedValue (ST);clf%注意:setBlockValue更新每个获得表面与电视的调整系数次要情节(3,2,1)viewSurf (setBlockValue (P_PHI、电视))次要情节(3 2 3)viewSurf (setBlockValue (P_ALPHA、电视))次要情节(3 2 5)viewSurf (setBlockValue (P_BETA、电视))次要情节(3 2 2)viewSurf (setBlockValue (I_PHI、电视))次要情节(3 2 4)viewSurf (setBlockValue (I_ALPHA、电视))次要情节(3 2 6)viewSurf (setBlockValue (I_BETA、电视))

验证

进一步验证此设计,推动调整获得表面仿真软件模型。金宝app

writeBlockValue (ST)

三块查找表“我φ”,“我α”,“我贝塔”,writeBlockValue样品获得表面在餐桌上断点并更新表数据模型中的工作区。MATLAB函数块φ“P”,“Pα”、“Pβ”,writeBlockValue为获得表面方程生成MATLAB代码。例如,“Pφ”的代码块的样子

金宝app仿真软件编码器自动MATLAB代码转化为有效的嵌入C代码。是否使用查找表或MATLAB函数取决于应用程序块。MATLAB函数选项确保平滑变化的收益作为α和β的函数在断点(没有缺陷)。它还可以更节约内存,因为它只需要存储的多项式方程的系数获得表面。另一方面,评估得到在给定(α,β)可能需要更多的操作比一个查找表,并进一步调整收益更容易在一个查找表。

一旦你把收益模型,自动调优是完整的,你可以在着陆的方法模拟金宝app其行为。

性能令人满意但线性响应显示大量的轴之间的交叉耦合和我们可以不满足稳定利润目标的角点(α,β)范围内。会有利于使用一种体系结构相结合的所有三个测量φ,α,β的计算表面变形量?这样的观点进一步探讨在本系列的第4部分(姿态控制HL-20自动驾驶仪-分布式天线的设计)。

引用

[1]p Gahinet和p . Apkarian gain-scheduled控制系统的自动调优”,在Proc。设计。决策和控制,2013年12月。

另请参阅

相关的话题