增益调度三回路自动驾驶仪的调整

本例使用systune以产生用于三回路自动驾驶仪顺利增益时间表。

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

本例使用的音调的三度的自由度模型轴线的机身的动力学。该州是地球坐标$(X_e,Z_e)$,身体坐标$(U,W)$,桨距角$ \ $ THETA和俯仰率$ Q = \点\ $ THETA。图1总结了惯性和本体框架之间的关系,飞行路径角$ \ $伽玛时,入射角$ \ $阿尔法,和俯仰角$ \ $ THETA

图1:机身动力学。

我们使用了经典的三回路自动驾驶仪结构来控制飞行路径角度$ \ $伽玛。这种自动驾驶仪通过提供正常加速的阵阵充足的调整飞行路径$ A_Z $(沿加速$ W $)。反过来,正常加速度是通过调节电梯偏转产生$ \ $三角洲到原因俯仰和改变升程量。自动驾驶仪采用比例 - 积分(PI)控制在俯仰速率循环$ Q $和比例控制在$ A_Z $$ \ $伽玛循环。闭环系统(机身和自动驾驶仪)被建模在Simulink。万博1manbetx

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

自动驾驶仪增益调

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

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

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

  2. 调控制器增益为线性化的动力学在每个操作条件下

  3. 调和增益值,以提供操作条件之间的平滑过渡。

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

剪裁和线性化

假设发生$ \ $阿尔法-20度和20度之间,并且,所述速度变化$ V $变化700和之间1400米/秒。当忽略重力,机身动力学是在对称的$ \ $阿尔法所以要考虑的只有正面的价值观$ \ $阿尔法。使用的线性间隔一个5×9网格$(\α,V)$对覆盖飞行包线:

NA = 5;阿尔法值的%数纳伏= 9;V值的%数[α,V] = ndgrid(linspace(0,20,NA)* PI / 180,linspace(700,1400,NV));

对于每一个飞行$(\α,V)$,线性化机身动力学在修整(零正常加速度和俯仰力矩)。这需要计算所述电梯偏转$ \ $三角洲和俯仰角速度$ Q $该结果在稳定$ W $$ Q $。要做到这一点,首先隔离在单独的Simulink模型的机身型号。万博1manbetx

open_system('rct_airframeTRIM'

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

对于每个(α,V)对计算%修整条件明确对于CT = 1:NA *纳伏alpha_ini =α(CT);%的发生率[弧度]v_ini = V(CT);%速度[米/秒]%指定修剪条件opspec = operspec('rct_airframeTRIM');%氙,泽:众所周知,没有稳定opspec.States(1).Known = [1; 1];opspec.States(1).SteadyState = [0 0];%U,W:众所周知,W稳定opspec.States(3).Known = [1 1];opspec.States(3).SteadyState = [0 1];%THETA:众所周知,没有稳定opspec.States(2).Known = 1;opspec.States(2).SteadyState = 0;%Q:未知,稳定opspec.States(4).Known = 0;opspec.States(4).SteadyState = 1;%TRIM选项= findopOptions('DisplayReport'“关”);OP(CT)= findop('rct_airframeTRIM',opspec,选项);结束在修整条件%线性化G =线性化('rct_airframeTRIM',同前);G =重塑(G,[nA的纳伏]);G.u ='三角洲';G.y = {'α''V''Q''AZ'“伽马”'H'};

这将产生一个5×9阵列线性化植物模型在45个飞行条件$(\α,V)$。植物动力学横跨飞行包线显着变化。

西格玛(G),标题(“变异机身动态”

可调增益面

自动驾驶仪由四个收益$ K_p,K_I,K_A,K_g $被“预定”(调整)作为的函数的$ \ $阿尔法$ V $。实际上,这意味着调谐在每个相应的四个查找表的88个值。而不是单独调整每个表条目,参数的增益作为一个二维增益表面,例如,用表面简单的多线性依赖$ \ $阿尔法$ V $

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

这种切口从88下降到4每个查找表变量的数目。使用tunableSurface对象参数化每个增益表面。注意:

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

  • ShapeFcn指定的表面参数的基础函数($ \ $阿尔法$ V $$ \字母V $

每个表面使用调谐结果初始化为一个恒定的增益$ \ $阿尔法= 10度和$ V $=1050米/ S(中档设计)。

TuningGrid =结构('α',α,'V',V);ShapeFcn = @(α,V)的α,V,α-* V];KP = tunableSurface(“KP的,0.1%,TuningGrid,ShapeFcn);淇= tunableSurface(“文”,2,TuningGrid,ShapeFcn);嘉= tunableSurface('K a',0.001,TuningGrid,ShapeFcn);公斤= tunableSurface('公斤',-1000,TuningGrid,ShapeFcn);

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

BlockSubs =结构('名称'“rct_airframeGS /机身模型”'值',G);ST0 = slTuner('rct_airframeGS'{“KP的“文”'K a''公斤'},BlockSubs);%注册的兴趣点ST0.addPoint({'az_ref''AZ''gamma_ref'“伽马”'三角洲'})%参数化查询表块ST0.setBlockParam(“KP的,KP,“文”,奇,'K a',K a,'公斤',公斤);

自动驾驶仪调整

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

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

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

  • $ A_Z $环:确保在低频良好抗扰(用于跟踪加速度需求)和过去的10弧度/秒(不敏感于噪声测量)。

%注:扰动在az_ref位置注入RejectionProfile = FRD([0.02 0.02 1.2 1.2 0.1],[0 0.02 2 15 150]);REQ2 = TuningGoal.Gain('az_ref''AZ',RejectionProfile);viewGoal(REQ2)

  • $ Q $循环:确保良好的抗干扰能力达10弧度/秒。该扰动在工厂输入注入三角洲

REQ3 = TuningGoal.Gain('三角洲''AZ',600 * TF([0.25 0],[0.25 1]));viewGoal(REQ3)

  • 瞬变:确保0.35自由振荡瞬变最小阻尼比

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

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

ST = systune(ST0,[REQ1 REQ2 REQ3 REQ4]);
决赛:软= 1.13,硬= -Inf,迭代次数= 57

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

%获得调整增益面TGS = getBlockParam(ST);%绘制增益面CLF副区(221),viewSurf(TGS.Kp),标题(“KP的)副区(222),viewSurf(TGS.Ki),标题(“文”)副区(223),viewSurf(TGS.Ka),标题('K a')副区(224),viewSurf(TGS.Kg),标题('公斤'

验证

第一验证在上面所考虑的45个飞行条件调谐自动驾驶仪。绘制到在飞行路径角的阶跃变化和在电梯偏转响应于阶跃扰动的响应。

CLF副区(211),步骤(getIOTransfer(ST,'gamma_ref'“伽马”),5),网格标题(“在飞行路径角度阶跃变化的追踪”)副区(212),步骤(getIOTransfer(ST,'三角洲''AZ'),3),格标题(“在植物输入阶跃扰动的抑制”

该反应是在所有飞行条件令人满意。接下来验证对非线性模型机身自动驾驶仪。首次使用writeBlockValue应用调谐结果Simulink模型。万博1manbetx这个评估在两个Prelookup块中指定的断点每增益表面式并在相应的内插块中写入的结果。

writeBlockValue(ST)

现在模拟的动作,通过其飞行包线的很大一部分采取在机身的自动驾驶仪的性能。下面的代码是相当于按在Simulink模型中的播放按钮,检查在范围块的响应。万博1manbetx

% 初始状态h_ini = 1000;alpha_ini = 0;v_ini = 700;模拟%SimOut = SIM('rct_airframeGS''ReturnWorkspaceOutputs''上');%提取模拟数据SIMDATA = GET(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,'AZ');T = Sim_gamma.Values.Time;%绘制主飞行变量CLF副区(211)情节(T,Sim_gamma.Values.Data(:,1),'R--',T,Sim_gamma.Values.Data(:,2),'B'),网格图例(“指挥”'实际''位置''东南')标题(“飞行路径角度\伽马度”)副区(212)情节(T,Sim_delta.Values.Data),网格标题(“电梯偏转\增量度”

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

副区(211)情节(T,Sim_h.Values.Data),网格标题(“在万米高空H”)副区(212)情节(T,Sim_az.Values.Data),网格标题(“以g正常加速A_Z”的

飞行路径角曲线的跟踪保持整个机动好。需要注意的是在发生变化$ \ $阿尔法和速度$ V $覆盖大部分这里考虑的飞行包线([-20,20]为度$ \ $阿尔法和[700,1400]为$ V $)。虽然自动驾驶仪调整为3000米的海拔标称,它的票价以及海拔高度变化从1000到10000米

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

rmpath(完整文件(matlabroot,'例子''控制''主要'))%删除例如数据