主要内容

调整增益预定的三环自动驾驶仪

这个例子用途过度为三回路自动驾驶仪生成平滑增益计划。

机身模型和三环自动驾驶仪

该示例使用机身的俯仰轴动态的三维自由模型。国家是地球坐标(X_e Z_e)美元,身体坐标(u, w)美元,俯仰角$ \ theta $和音高率$ q = \ dot \ theta $.下图总结了惯性和车身框架之间的关系,飞行路径角度\伽马美元,发病角度\α美元,以及俯仰角度$ \ theta $

我们使用经典的三环自动驾驶孔结构来控制飞行路径角度\伽马美元.这个自动驾驶仪通过提供适当的正常加速度来调整飞行路径a_z美元(加速沿着$ w $).反过来,通过调节电梯偏转来产生正常加速度$ \ delta $引起倾斜并改变升力量。AutoPilot在音高速率环中使用比例整体(PI)控制$ q $和比例控制a_z美元\伽马美元循环。在Simulink中对闭环系统(机身和自动驾驶仪)进行建模。万博1manbetx

open_system (“rct_airframeGS”的)

自动增益调度

空中框架动态是非线性的,气动力和时刻依赖于速度$ v $和发病率\α美元.在整个过程中获得合适的性能$(\ alpha,v)$飞行信封,必须根据函数调整自动驾驶仪收益\α美元$ v $弥补植物动力学的变化。此调整过程称为“增益调度”和$ \α,V $被称为调度变量。在Simuli万博1manbetxnk模型中,增益计划被实现为由测量驱动的查找表\α美元$ v $

增益调度是用于控制非线性或时变植物的线性技术。该想法是在各种操作条件下计算工厂的线性近似,调整每个操作条件下的控制器增益,并且在操作期间作为操作条件的函数交换增益。传统增益调度涉及以下三个主要步骤。

  1. 修剪并在每个操作条件下线性化植物

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

  3. 协调增益值以在操作条件之间提供平滑的转换。

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

修剪和线性化

假设发病率\α美元在-20到20度之间变化,速度$ v $在700和1400米/秒之间变化。当忽略重力时,机身动力学是对称的\α美元.因此,只考虑积极的值\α美元.使用5×9网格线性间隔$(\ alpha,v)$对覆盖飞行信封。

na = 5;%alpha值数nv = 9;v值%数量[alpha,v] = ndgrid(linspace(0,20,na)* pi / 180,linspace(700,1400,nv));

对于每个飞行条件$(\ alpha,v)$,以修剪(零正常加速度和俯仰时刻)线性化机身动力学。这需要计算电梯偏转$ \ delta $和音高率$ q $这导致稳定$ w $$ q $.为此,请先将机架模型分离在单独的Simulink模型中。万博1manbetx

mdl ='rct_airframetrim';Open_System(MDL)

Operspec.指定修剪条件,使用查找计算修剪值$ \ delta $$ q $,并线性化机身动力学的结果工作点。有关详细信息,请参见修剪并线性化机身(万博1manbetxSimulink控制设计).在45种飞行条件下重复以上步骤$(\ alpha,v)$

计算每个的修剪条件$(\ alpha,v)$一对。

为了ct = 1:na * nv alpha_ini = alpha(ct);%发病率[rad]V_INI = V(CT);%的速度(米/秒)%指定修剪条件opspec (ct) = operspec (mdl);%xe,ze:已知,不稳定opspec(ct).states(1).known = [1; 1];opspec(ct).states(1).steadystate = [0; 0];% u,w:已知,w稳定opspec(ct).states(3).known = [1 1];opspec(ct).states(3).steadystate = [0 1];% θ:已知,不稳定OPSPEC(CT).states(2).known = 1;opspec(ct).states(2).steadystate = 0;% q:未知,稳定OPSPEC(CT).states(4).known = 0;OPSPEC(CT).states(4).steadystate = 1;结尾OPSPEC = REPAPE(OPSPEC,[NA NV]);

修剪给定规范的模型。

选项= findopoptions('displayReport'“关闭”);op = condop(mdl,opspec,选项);

在配平条件下线性化模型。

g =线性化(MDL,OP);G.U ='三角洲';g.y = {“α”'v''Q''az''伽玛'“h”};g.samplinggrid = struct(“α”,α,'v',v);

这个过程产生了一个5乘9的线性化植物模型阵列在45个飞行条件下$(\ alpha,v)$.植物动力学在飞行信封中大幅不同。

西格玛(g)标题(“机身动态的变化”的)

可调增益表面

自动驾驶仪由四个收益组成$ k_p,k_i,k_a,k_g $作为…的函数被“安排”(调整)\α美元$ v $.实际上,这意味着在每个相应的4个查找表中调优88个值。与其单独调优每个表项,不如将增益参数化为一个二维增益曲面,例如,具有简单多线性依赖关系的曲面\α美元$ v $

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

对于每个查找表,这将变量的数量从88降至4。使用Tunablyurface.对象以参数化每个增益表面。注意:

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

  • ShapeFcn指定Surface参数化的基本函数(\α美元$ v $, 和$ \ alpha v $的)

每个表面都使用调谐结果初始化为恒定增益\α美元= 10°和$ v $= 1050米/秒(中档设计)。

tuninggrid = struct(“α”,α,'v',v);shapefcn = @(alpha,v)α[alpha,v,alpha * v];kp = tunablyurface('kp',0.1,tuninggrid,shapefcn);ki = tunablyurface('ki',2,tuninggrid,shapefcn);ka = tunballulface(“咔”,0.001,tuninggrid,shapefcn);kg = tunablyurface('公斤',-1000,tuninggrid,shapefcn);

下一步创建一个SLTUNER.用于调整增益曲面的界面。使用块替换通过在调谐网格上通过线性化模型更换非线性工厂模型。用setblockparam.关联可调谐增益面kp.ki.K a公斤使用同名的插值块。

blocksubs = struct('姓名'“rct_airframeGS /机身模型”'价值'G);ST0 = slTuner (“rct_airframeGS”,{'kp''ki'“咔”'公斤'},blocksubs);%登记兴趣点st0.adpoint({'az_ref''az''gamma_ref''伽玛''三角洲'})%参数化查找表块st0.setBlockParam('kp'Kp,'ki',ki,“咔”,K a,'公斤'公斤);

自动调优

过度可以自动调整整个飞行信封的增益表面系数。用TuningGoal.指定性能目标的对象:

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

req1 = tuninggoal.tracking('gamma_ref''伽玛',1,0.02,1.3);ViewGoal(req1)

  • a_z美元循环:确保在低频(以跟踪加速要求)和超过10 rad / s(对测量噪声不敏感)的良好扰动抑制。扰动注入了az_ref的位置。

RejectionProfile = frd([0.02 0.02 1.2 1.2 0.1],[0 0.02 2 15 150]);Req2 = TuningGoal。获得('az_ref''az', RejectionProfile);viewGoal (Req2)

  • $ q $回路:确保良好的干扰抑制高达10 rad/s。扰动被注入到植物的输入端三角洲

req3 = tuninggoal.gain('三角洲''az',600 * TF([0.25 0],[0.25 1]));ViewGoal(REQ3)

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

造白= 0.35;req4 = tuninggoal.poles(0,介面);

使用过度,调整16个增益表面系数,以最好地满足所有45个飞行条件的这些性能要求。

ST = systune(ST0,[Req1 Req2 Req3 Req4]);
Final:Soft = 1.13,硬= -Inf,迭代= 57

组合目标的最终值接近1,表明所有要求几乎满足。可视化产生的增益曲面。

%获得调整增益曲面。TGS = getBlockParam (ST);%plot增益曲面。CLF子图(2,2,1)ViewsURF(TGS.KP)标题('kp') subplot(2,2,2) viewSurf(TGS.Ki) title('ki')子图(2,2,3)ViewsURF(TGS.KA)标题(“咔”)子图(2,2,4)ViewsURF(TGS.KG)标题('公斤'的)

验证

首先验证调整后的自动驾驶仪在45飞行条件考虑以上。绘制对飞行路径角阶跃变化的响应和对电梯偏转阶跃扰动的响应。

CLF子图(2,1,1)步骤(getiotransfer(st,'gamma_ref''伽玛'5)网格标题('跟踪飞行路径角度的步骤变化')子图(2,1,2)步骤(getiotransfer(st,'三角洲''az'), 3)网格标题(“对植物输入阶跃扰动的抑制”的)

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

WriteBlockValue(ST)

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

%指定初始条件。h_ini = 1000;alpha_ini = 0;v_ini = 700;%模拟模型。simout = sim(“rct_airframeGS”'returnkspspaceOutpuls''在');%提取模拟数据。SimData =得到(SimOut,'sigsout');sim_gamma = getErement(Simdata,'伽玛');sim_alpha = getErement(simdata,“α”);sim_v = getErement(simdata,'v');sim_delta = getErement(simdata,'三角洲');Sim_h = getElement (SimData,“h”);sim_az = getErement(Simdata,'az');t = sim_gamma.values.time;%绘制主飞行变量。CLF子图(2,1,1)plot(t,sim_gamma.values.data(:1),“r——”,t,sim_gamma.values.data(:,2),'B')网格传奇(“吩咐”“实际”'地点''东南')标题('飞行路径角度\伽玛以学位') subplot(2,1,2) plot(t,Sim_delta.Values.Data) grid title('电梯偏转\ delta以学位为单位'的)

子图(2,1,1)绘图(t,sim_alpha.values.data)网格标题('入学\ alpha以学位') subplot(2,1,2) plot(t,Sim_V.Values.Data) grid title('速度V (m/s) '的)

subplot(2,1,1) plot(t,Sim_h.Values.Data) grid title(“高度h,单位米”)子图(2,1,2)绘图(t,sim_az.values.data)网格标题('正常加速a_z in g'''''的)

在整个机动过程中跟踪航线角度型材仍然好。注意发病率的变化\α美元和速度$ v $覆盖这里考虑的大部分飞行信封([-20,20]\α美元[700,1400]的$ v $).当自动驾驶仪调整到3000米的标称高度时,它在1000米到10000米的高度变化中表现良好。

非线性仿真结果证实,增益预定的自动驾驶仪在整个飞行信封中提供始终如一的高性能。“增益曲面调谐”程序为对调度变量的增益依赖性提供了简单的显式公式。您可以直接使用这些公式,而不是使用查找表,而是将这些公式用于更高的内存高效的硬件实现。

也可以看看

(万博1manbetxSimulink控制设计)||(万博1manbetxSimulink控制设计)

相关例子

更多关于