增益计划三环自动驾驶仪的调谐
此示例使用systune
为三回路自动驾驶仪生成平滑增益计划。
机身模型和三环自动驾驶仪
这个例子使用了机体俯仰轴动力学的三自由度模型。状态是地球坐标,体坐标,节距角,和基音速率.下图总结了惯性与机体架、飞行路径角之间的关系,入射角,和俯仰角.
我们使用一个经典的三环自动驾驶仪结构来控制飞行路径角度.这个自动驾驶仪通过提供足够的正常加速来调整飞行路径(加速度).反过来,通过调节电梯挠度来产生法向加速度引起俯仰和改变升力的大小。自动驾驶仪在俯仰速率回路中使用比例积分(PI)控制比例控制在而且循环。闭环系统(机体和自动驾驶仪)在Simulink中建模。
open_system (“rct_airframeGS”)
自动驾驶仪增益调度
机体动力学是非线性的,空气动力和力矩取决于速度和发病率.以获得合适的性能贯穿飞行包络线,自动驾驶仪增益必须作为函数调整而且以补偿植物动态的变化。这种调整过程被称为“增益调度”和称为调度变量。在Simulink模型中,增益计划被实现为由测量驱动的查找表而且.
增益调度是一种控制非线性或时变植物的线性技术。其思想是计算在各种运行条件下的装置的线性近似,在每个运行条件下调整控制器增益,并在运行过程中将增益作为运行条件的函数进行交换。传统的增益调度包括以下三个主要步骤。
在每个操作条件下修剪和线性化装置
在每个操作条件下调整线性化动力学的控制器增益
调节增益值,以提供操作条件之间的平稳过渡。
在这个例子中,通过将自动驾驶仪增益参数化为一阶多项式,将步骤2和步骤3结合起来直接调整整个飞行包络线的多项式系数。这种方法消除了第3步,并保证作为函数的平滑增益变化而且.此外,增益调度系数可以自动调节systune
.
修剪和线性化
假设发病率在-20度和20度之间变化,速度变化范围为700 ~ 1400m /s。当忽略重力时,机体动力学是对称的.因此,只考虑正的值.使用5 × 9的线性间距网格用双来覆盖飞行信封。
nA = 5;alpha值的%数量nV = 9;V值的%数量[alpha,V] = ndgrid(linspace(0,20,nA)*pi/180,linspace(700,1400,nV));
对于每个飞行条件,线性化机身动力学在配平(零法向加速度和俯仰力矩)。这需要计算电梯挠度和pitch rate结果是稳定的而且.要做到这一点,首先将机身模型分离到一个单独的Simulink模型中。
mdl =“rct_airframeTRIM”;open_system (mdl)
使用operspec
要指定修剪条件,使用findop
的微调值而且,并线性化机身动力学的结果工作点。详情请参见修剪和线性化机体.在45个飞行条件下重复这些步骤.
计算每一个的修剪条件对。
为1:nA*nV alpha_ini = alpha(ct);发生率[rad]v_ini = V(ct);%速度[m/s]%指定配平条件Opspec (ct) = operspec(mdl);Xe,Ze:已知,不稳定opspec (ct) .States(1)。已知= [1;1];opspec (ct) .States(1)。稳态= [0;0];% u,w:已知,w稳定opspec (ct) .States(3)。已知= [1 1];opspec (ct) .States(3)。稳态状态= [0 1];% theta:已知,不稳定opspec (ct) .States(2)。已知= 1;opspec (ct) .States(2)。稳态= 0;% q:未知,稳定opspec (ct) .States(4)。已知= 0;opspec (ct) .States(4)。稳态= 1;结束opspec =重塑(opspec,[nV]);
根据给定的规格修剪模型。
选项= findopOptions(“DisplayReport”,“关闭”);op = findop(mdl,opspec,Options);
将模型在修剪条件下线性化。
G =线性化(mdl,op);G.u =“δ”;G.y = {“α”,“V”,“问”,“阿兹”,“伽马”,“h”};G.SamplingGrid = struct(“α”α,“V”, V);
这个过程在45种飞行条件下产生一个5 × 9线性化植物模型阵列.植物的动态在整个飞行包络线上有很大的变化。
σ(G)标题(“机体动力学的变化”)
可调谐增益面
自动驾驶仪由四个增益组成作为…的功能被“安排”(调整而且.实际上,这意味着在相应的四个查找表中分别调优88个值。与其分别调优每个表项,不如将增益参数化为二维增益曲面,例如,具有简单的多线性依赖的曲面而且:
.
这将每个查找表的变量从88个减少到4个。使用tunableSurface
对象来参数化每个增益曲面。注意:
TuningGrid
指定“调优网格”(设计点)。该网格应该与用于线性化的网格匹配,但不需要与循环表断点匹配ShapeFcn
指定表面参数化的基函数(,,)
的调优结果将每个曲面初始化为恒定增益= 10度和= 1050米/秒(中程设计)。
TuningGrid = struct(“α”α,“V”, V);ShapeFcn = @(alpha,V) [alpha,V,alpha*V];Kp =可调谐表面(“金伯利进程”0.1、TuningGrid ShapeFcn);Ki =可调的表面(“吻”2 TuningGrid ShapeFcn);可调的表面(“咔”0.001、TuningGrid ShapeFcn);Kg =可调的“公斤”、-1000、TuningGrid ShapeFcn);
接下来创建一个slTuner
用于调谐增益曲面的接口。利用块替换将非线性植物模型替换为线性化的网格模型。使用setBlockParam
关联可调谐增益曲面Kp
,Ki
,卡
,公斤
使用相同名称的插值块。
BlockSubs = struct(“名字”,“rct_airframeGS /机身模型”,“价值”G);ST0 = slTuner(“rct_airframeGS”, {“金伯利进程”,“吻”,“咔”,“公斤”}, BlockSubs);记录兴趣点ST0.addPoint ({“az_ref”,“阿兹”,“gamma_ref”,“伽马”,“δ”})参数化查找表块ST0.setBlockParam (“金伯利进程”Kp,“吻”吻,“咔”卡,“公斤”公斤);
自动调优
systune
可以自动调整增益表面系数为整个飞行包络。使用TuningGoal
对象,以指定性能目标:
循环:用1秒响应时间跟踪设定值,稳态误差小于2%,峰值误差小于30%。
Req1 = TuningGoal。跟踪(“gamma_ref”,“伽马”1、0.02、1.3);viewGoal (Req1)
环路:确保在低频(跟踪加速度要求)和超过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”,“阿兹”, RejectionProfile);viewGoal (Req2)
环路:确保良好的干扰抑制高达10 rad/s。干扰在设备输入处注入
δ
.
Req3 =调优目标。获得(“δ”,“阿兹”,600*tf([0.25 0],[0.25 1]));viewGoal (Req3)
暂态:确保无振荡暂态的最小阻尼比为0.35
MinDamping = 0.35;Req4 = tuninggoal .极点(0,MinDamping);
使用systune
,调整16增益表面系数,以在所有45个飞行条件下最好地满足这些性能要求。
ST = systune(ST0,[Req1 Req2 Req3 Req4]);
最终:软= 1.13,硬= -Inf,迭代= 57
组合目标的最终值接近于1,表明所有的需求都接近满足。可视化得到的增益曲面。
获得调谐增益表面。getBlockParam(ST);绘制增益曲面。clf subplot(2,2,1) viewSurf(TGS.Kp) title(“金伯利进程”) subplot(2,2,2) viewSurf(TGS.Ki) title(“吻”) subplot(2,2,3) viewSurf(ts . ka)“咔”) subplot(2,2,4) viewSurf(TGS.Kg)“公斤”)
验证
首先在上述考虑的45种飞行条件下验证调谐后的自动驾驶仪。绘制飞行路径角的阶跃变化响应和电梯偏转阶跃扰动响应。
clf subplot(2,1,1) step(getIOTransfer(ST,“gamma_ref”,“伽马”)、5)网格标题(“航迹角阶跃变化跟踪”) subplot(2,1,2) step(getIOTransfer(ST,“δ”,“阿兹”)、3)网格标题(“抑制设备输入的阶跃干扰”)
在所有飞行条件下的响应都令人满意。接下来,针对非线性机体模型验证自动驾驶仪。第一次使用writeBlockValue
将调优结果应用到Simulink模型中。这将在两个Prelookup块中指定的断点处计算每个增益面公式,并将结果写入相应的Interpolation块中。
writeBlockValue (ST)
模拟一种机动的自动驾驶性能,使机体通过其飞行包络的大部分。下面的代码相当于在Simulink模型中按下Play按钮,并检查Scope块中的响应。
指定初始条件。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,“阿兹”);t = Sim_gamma.Values.Time;绘制主要飞行变量。clf subplot(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)“电梯偏转\delta度”)
subplot(2,1,1) plot(t,Sim_alpha.Values.Data)网格标题('发生率\以度为单位的alpha 'subplot(2,1,2) plot(t,Sim_V.Values.Data)“速度V / m/s”)
subplot(2,1,1) plot(t,Sim_h.Values.Data)网格标题(“高度h单位为米”subplot(2,1,2) plot(t,Sim_az.Values.Data)'正常加速度a_z in g' s' ')
在整个机动过程中,跟踪飞行路径的角度轮廓保持良好。注意发病率的变化和速度覆盖这里考虑的大部分飞行包络线([-20,20]度为和[700,1400]).虽然自动驾驶系统被调整为3000米的名义高度,但它在1000米到10000米的高度变化中表现良好。
非线性仿真结果证实增益计划自动驾驶仪在整个飞行包络线内提供了持续的高性能。“增益面调谐”程序为增益依赖于调度变量提供了简单的显式公式。您可以直接使用这些公式,而不是使用查找表,以实现更高效的内存硬件实现。
另请参阅
slTuner
|tunableSurface
|setBlockParam