调整增益预定三回路自动驾驶仪

这个示例使用systune为三回路自动驾驶仪产生平稳增益时间表。

机身模型和三回路自动驾驶仪

本例使用了一个三自由度的飞机俯仰轴动力学模型。状态是地球坐标(X_e Z_e)美元,身体坐标(u, w)美元,桨距角\θ美元和俯仰率q = \点\θ美元。图1总结了惯性和机体框架、飞行轨迹角之间的关系\伽马美元,入射角\α美元,以及俯仰角\θ美元

图1:机身动力学。

我们使用了经典的三回路自动驾驶仪结构来控制飞行路径角度\伽马美元。这款自动驾驶仪通过提供足够的正常加速来调整飞行路径a_z美元(沿加速w美元)。反过来,正常加速度是通过调节电梯偏转产生$ \ $三角洲引起俯仰并改变升力的大小。自动驾驶仪在俯仰率回路中使用比例积分(PI)控制$ Q $和比例控制在a_z美元\伽马美元循环。在Simulink中对闭环系统(机身和自动驾驶仪)进行建模。万博1manbetx

让addpath(完整文件(matlabroot,“例子”“控制”“主要”))添加示例数据open_system (“rct_airframeGS”

自动增益调度

机体动力学是非线性的,气动力和力矩与速度有关五美元和发病率\α美元。在整个过程中获得合适的表现(\α,V)美元飞行包线,自动驾驶仪的收益也必须进行调整的功能\α美元五美元以补偿装置动态变化。这一调整过程被称为“增益调度”和$ \α,V $被称为调度变量。在Simuli万博1manbetxnk模型,收益时间表实现,如通过测量驱动查找表\α美元五美元

增益调度是用于控制非线性或随时间变化的植物的线性技术。这样做是为了在计算各种操作条件下的植物的线性近似,调在每一个操作条件的控制器增益,以及交换增益作为操作期间操作条件的函数。传统的增益调度涉及三个主要步骤:

  1. 修剪,并在每个工作状态的线性化厂

  2. 在每个运行条件下,针对线性化的动力学调整控制器增益

  3. 协调增益值,以提供运行条件之间的平稳过渡。

在本例中,我们合并了步骤2。和3。通过参数化自动驾驶仪的增益为一阶多项式$ \α,V $直接调整整个飞行包络线的多项式系数。这种方法消除了第3步。并保证增益作为的函数平稳变化\α美元五美元。此外,增益调度系数可以自动调谐systune

修剪和线性化

假设入射\α美元-20度和20度之间,并且,所述速度变化五美元变化在700到1400米/秒之间。当忽略重力时,机体动力学是对称的\α美元所以只考虑正数\α美元。使用5乘9的线性间隔的网格(\α,V)美元成对覆盖飞行信封:

NA = 5;值的%数nV = 9;V值的%数(α,V) = ndgrid (linspace(0, 20日nA) *π/ 180,linspace(700、1400、nV));

每种飞行状态(\α,V)美元,使飞机在纵倾时的动力学线性化(零法向加速度和俯仰力矩)。这需要计算电梯的偏转$ \ $三角洲和球场$ Q $结果是稳定的w美元$ Q $。要做到这一点,首先在一个单独的Simulink模型中分离机身模型。万博1manbetx

open_system ('rct_airframeTRIM'

operspec指定修剪条件,使用findop计算的调整值$ \ $三角洲$ Q $和线性化该所得工作点机身动力学。见在Simulink控制设计细节的“裁剪和线性机身”的例子。万博1manbetx重复这些步骤为45的飞行条件(\α,V)美元

%计算每对(alpha,V)的修剪条件清晰的人事处对于1:nA*nV alpha_ini = alpha(ct);% (rad)发生率v_ini = V(CT);%的速度(米/秒)%指定修剪条件opspec = operspec('rct_airframeTRIM');% Xe,Ze:已知,不稳定opspec.States(1)。知道= (1,1);opspec.States(1)。稳态= (0,0);知道,稳定opspec.States(3)。[11];opspec.States(3)。= [0 1];% theta:已知,不稳定opspec.States(2)。= 1;opspec.States(2)。稳态= 0;未知,稳定opspec.States(4)。知道= 0;opspec.States(4)。稳态= 1;%修剪选项= findopOptions('DisplayReport'“关闭”);op (ct) = findop ('rct_airframeTRIM',opspec,选项);结束在修整条件%线性化G =线性化('rct_airframeTRIM', op);重塑;重塑;G.u ='三角洲';G.y = {“α”'V''Q'“阿兹”“伽马”“h”};

这将产生一个5×9阵列线性化植物模型在45个飞行条件(\α,V)美元。植物的动态在飞行包络线上变化很大。

σ(G)、标题(“变异机身动态”

可调增益面

自动驾驶仪有四个增益$K_p K_i K_a K_g$被“安排”(调整)的功能\α美元五美元。实际上,这意味着调优4个对应查找表中的88个值。与其单独调优每个表项,不如将增益参数化为二维增益表面,例如,与简单的多线性相关的表面\α美元五美元

$ $ K(\α,V) = K_0 + K_1 \α+ K_2 V + K_3 \αV $ $

这将每个查找表的变量数量从88个减少到4个。使用tunableSurface对象参数化每个增益表面。注意:

  • TuningGrid指定“调优网格”(设计点)。这个网格应该匹配用于线性化的网格,但不需要匹配循环表断点

  • ShapeFcn指定表面参数化的基本函数(\α美元五美元,$ \字母V $

使用调优结果将每个表面初始化为常数增益\α美元= 10摄氏度和五美元= 1050米/秒(中程设计)

TuningGrid =结构(“α”α,'V',V);ShapeFcn = @(α,V)的α,V,α-* V];KP = tunableSurface(“金伯利进程”, 0.1, TuningGrid, ShapeFcn);Ki = tunableSurface (“文”, 2, TuningGrid, ShapeFcn);Ka = tunableSurface (“咔”,0.001,TuningGrid,ShapeFcn);公斤= tunableSurface('公斤', -1000, TuningGrid, ShapeFcn);

接下来创建一个slTuner接口进行调整的增益的表面。使用区块取代由线性模型通过调整电网来代替非线性工厂模型。用setBlockParam关联可调增益曲面KpKi公斤具有相同名称的插值块。

BlockSubs =结构('名称'“rct_airframeGS /机身模型”'值'G);ST0 = slTuner (“rct_airframeGS”,{“金伯利进程”“文”“咔”'公斤'}, BlockSubs);标记感兴趣的点ST0.addPoint ({'az_ref'“阿兹”'gamma_ref'“伽马”'三角洲'})%参数化查找表块ST0.setBlockParam (“金伯利进程”Kp,“文”吻,“咔”卡,'公斤'公斤);

自动调优

systune可以自动调整增益面系数为整个飞行包络线。用TuningGoal对象指定的性能目标:

  • \伽马美元环:跟踪与1秒的响应时间,少于2%的稳态误差设定值,且小于30%的峰值误差。

Req1 = TuningGoal.Tracking ('gamma_ref'“伽马”,1,0.02,1.3);viewGoal(REQ1)

  • a_z美元环路:确保良好的低频干扰抑制(跟踪加速度需求)和超过10 rad/s(对测量噪声不敏感)。

注意:干扰被注入到az_ref位置拒收率= frd([0.02 0.02 1.2 1.2 0.1],[0 0.02 2 15 150]);Req2 = TuningGoal.Gain ('az_ref'“阿兹”, RejectionProfile);viewGoal (Req2)

  • $ Q $环路:确保良好的干扰抑制高达10 rad/s。扰动注入到植物的输入端δ

Req3 = TuningGoal.Gain ('三角洲'“阿兹”, 600 *特遣部队(0.25 [0],[0.25 - 1]));viewGoal (Req3)

  • 瞬态:确保无振动瞬态的最小阻尼比为0.35

MinDamping = 0.35;Req4 = TuningGoal.Poles (0, MinDamping);

运用systune,调整16增益表面系数最好地满足所有45种飞行条件下这些性能要求。

(ST0,[Req1 Req2 Req3 Req4]);
Final: Soft = 1.13, Hard = -Inf, iteration = 57

组合目标的最终值接近1,表示所有的要求都满足近。可视化所得到的增益的表面。

获得调谐增益表面TGS = getBlockParam (ST);增益面%CLF副区(221),viewSurf(TGS.Kp),标题(“金伯利进程”)分图(222)、viewSurf(TGS.Ki)、标题(“文”) subplot(223)、viewSurf(TGS.Ka)、title(“咔”)副区(224),viewSurf(TGS.Kg),标题('公斤'

验证

首先验证调优后的自动驾驶仪在上述45种飞行条件下的性能。画出对飞行路径角阶跃变化的响应和对电梯偏转阶跃扰动的响应。

clf次要情节(211),步骤(getIOTransfer(圣,'gamma_ref'“伽马”网格)、5)、标题(“在飞行路径角度阶跃变化的追踪”)次要情节(212)步骤(getIOTransfer(圣,'三角洲'“阿兹”), 3)、网格标题(“对植物输入阶跃干扰的抑制”

所有飞行条件下的反应都令人满意。接下来验证自动驾驶仪对非线性机身模型。第一次使用writeBlockValue将调优结果应用于Simulink模型。万博1manbetx这将在两个预查找块中指定的断点处计算每个增益曲面公式,并将结果写入相应的插值块。

writeBlockValue (ST)

现在模拟自动驾驶仪的性能为一个机动,使机身通过它的飞行包的很大一部分。下面的代码相当于在Simulink模型中按下Play按钮并检查Scope块中的响应。万博1manbetx

%初始条件h_ini = 1000;alpha_ini = 0;v_ini = 700;%模拟SimOut = sim卡(“rct_airframeGS”“ReturnWorkspaceOutputs”'上');%提取模拟数据SimData =得到(SimOut,“sigsOut”);Sim_gamma = getElement (SimData,“伽马”);Sim_alpha = getElement (SimData,“α”);Sim_V = getElement (SimData,'V');Sim_delta = getElement (SimData,'三角洲');Sim_h = getElement (SimData,“h”);Sim_az = getElement(SIMDATA,“阿兹”);T = Sim_gamma.Values.Time;%绘制主飞行变量CLF副区(211)情节(T,Sim_gamma.Values.Data(:,1),“r——”t Sim_gamma.Values.Data (:, 2),“b”)、网格传奇(“吩咐”“实际”'位置'“东南”)标题(“飞行路径角\gamma单位为度”) subplot(212) plot(t,Sim_delta.Values.Data),网格标题(“电梯偏转\增量度”

plot(t,Sim_alpha.Values.Data),网格标题(“以度发病\阿尔法”)副区(212)情节(T,Sim_V.Values.Data),网格标题(速度V,单位是m/s

plot(t,Sim_h.Values.Data),网格标题(“高度h,米”) subplot(212) plot(t,Sim_az.Values.Data),网格标题(“以g正常加速A_Z”的

在整个机动过程中,飞行轨迹角度剖面保持良好。请注意发生率的变化\α美元和速度五美元覆盖大部分这里考虑的飞行包线([-20,20]为度\α美元和[700,1400]为五美元)。当自动驾驶仪被调整到3000米的标称高度时,它在1000米到10000米的高度变化中表现良好。

非线性仿真结果证实,增益调度自动驾驶仪提供整个飞行包线内始终如一的高性能。的“增益表面调整”过程提供了所述调度变量的增益依赖简单明确的公式。除了使用查找表的,可以直接使用这些公式的内存更高效的硬件实现。

rmpath (fullfile (matlabroot,“例子”“控制”“主要”))删除示例数据