增益计划三环自动驾驶仪的调整
这个例子使用了systune
为三环自动驾驶仪生成平滑增益计划。
机身模型和三环自动驾驶仪
本例使用机身俯仰轴动力学的三自由度模型。状态就是地球坐标,身体坐标,螺距角,以及pitch rate.下图总结了惯性和机体框架之间的关系,即飞行轨迹角,入射角,和俯仰角.
我们使用经典的三环自动驾驶仪结构来控制飞行路径角度.这个自动驾驶仪通过提供足够的正常加速度来调整飞行路线(加速度).反过来,通过调整电梯偏转产生法向加速度引起俯仰并改变升力的大小。自动驾驶仪在俯仰率回路中采用比例积分(PI)控制比例控制而且循环。闭环系统(机身和自动驾驶仪)在Simulink中建模。万博1manbetx
open_system (“rct_airframeGS”)
自动驾驶仪增益调度
机体动力学是非线性的,气动力和力矩与速度有关和发病率.在整个过程中获得合适的性能飞行包络线时,自动驾驶仪的增益必须作为函数进行调整而且以补偿植物动态的变化。这个调整过程被称为“增益调度”称为调度变量。在Simuli万博1manbetxnk模型中,增益计划被实现为由测量驱动的查找表而且.
增益调度是一种用于控制非线性或时变设备的线性技术。其思想是计算工厂在各种操作条件下的线性近似,在每个操作条件下调整控制器增益,并在运行期间交换增益作为操作条件的函数。传统的增益调度包括以下三个主要步骤。
在每个操作条件下修整和线性化装置
调整控制器增益的线性化动态在每个操作条件
调节增益值以提供操作条件之间的平稳过渡。
在本例中,通过将自动驾驶仪增益参数化为一阶多项式来组合步骤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模型中隔离机身模型。万博1manbetx
mdl =“rct_airframeTRIM”;open_system (mdl)
使用operspec
若要指定修剪条件,请使用findop
计算的修剪值而且,并将得到的工作点的机身动力学线性化。详细信息请参见修整和线性化机身(万博1manbetxSimulink控制设计).在45个飞行条件下重复这些步骤.
计算每个的修剪条件对。
为ct=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)。SteadyState = [0;0];% u,w:已知,w稳定opspec (ct) .States(3)。已知= [1 1];opspec (ct) .States(3)。SteadyState = [0 1];% theta:已知,不稳定opspec (ct) .States(2)。已知= 1;opspec (ct) .States(2)。SteadyState = 0;% q:未知,稳定opspec (ct) .States(4)。已知= 0;opspec (ct) .States(4)。SteadyState = 1;结束opspec =重塑(opspec,[nA 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 m/s(中档设计)。
TuningGrid = struct(“α”α,“V”, V);ShapeFcn = @(alpha,V) [alpha,V,alpha*V];Kp =可调谐表面(“金伯利进程”0.1、TuningGrid ShapeFcn);Ki =可调谐表面(“吻”2 TuningGrid ShapeFcn);Ka =可调谐表面(“咔”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.Poles(0,MinDamping);
使用systune
,调整16增益曲面系数,以最佳地满足所有45个飞行条件下的这些性能要求。
ST = systune(ST0,[Req1 Req2 Req3 Req4]);
最终:软= 1.13,硬= -Inf,迭代= 57
合并目标的最终值接近于1,表明几乎满足了所有要求。可视化产生的增益曲面。
获得调谐增益曲面。TGS = getBlockParam(ST);绘制增益曲面。clf subplot(2,2,1) viewSurf(TGS.Kp) title(“金伯利进程”) subplot(2,2,2) viewSurf(TGS.Ki)“吻”) subplot(2,2,3) viewSurf(TGS.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模型。万博1manbetx这将在两个Prelookup块中指定的断点处计算每个增益面公式,并将结果写入相应的Interpolation块中。
writeBlockValue (ST)
模拟自动驾驶仪的性能,使机体通过其飞行包线的大部分机动。下面的代码相当于按下Simulink模型中的Play按钮,并检查Scope块中的响应。万博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,“阿兹”);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”)网格图例(“吩咐”,“实际”,“位置”,“东南”)标题(飞行轨迹角\gamma(以度为单位)) subplot(2,1,2) plot(t,Sim_delta.Values.Data)网格标题(“电梯偏转\delta度”)
subplot(2,1,1) plot(t,Sim_alpha.Values.Data)“以度为单位的发生率”) 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
(万博1manbetxSimulink控制设计)|tunableSurface
|setBlockParam
(万博1manbetxSimulink控制设计)