本例使用systune
为三环自动驾驶仪生成平滑增益计划。
本例使用机身俯仰轴动力学的三自由度模型。状态为地球坐标,身体坐标,俯仰角,以及音高速率.下图总结了惯性架与机体架、飞行路径角之间的关系,入射角,以及俯仰角.
我们使用一个经典的三回路自动驾驶仪结构来控制飞行路径角度自动驾驶仪通过提供足够的正常加速度来调整飞行路径(加速度).反过来,通过调整电梯偏转产生法向加速度引起俯仰并改变升力。自动驾驶仪在俯仰率回路中使用比例积分(PI)控制比例控制和循环。闭环系统(机身和自动驾驶仪)在Simulink中建模。金宝app
开放式系统(“rct_机身”)
机身动力学是非线性的,空气动力和力矩取决于速度发病率。以在整个过程中获得适当的性能飞行包络线,自动驾驶仪增益必须作为函数调整和来补偿植物动态的变化。这种调整过程称为“增益调度”称为调度变量。在Simuli金宝appnk模型中,增益调度被实现为由测量驱动的查询表和.
增益调度是一种用于控制非线性或时变对象的线性技术。其思想是在各种操作条件下计算对象的线性近似值,在每个操作条件下调整控制器增益,并在操作期间交换增益作为操作条件的函数。传统增益调度包括降低三个主要步骤。
在每个操作条件下修剪和线性化工厂
在每个操作条件下,调整线性化动力学的控制器增益
调节增益值,以便在工作条件之间平稳过渡。
在本例中,通过将自动驾驶仪增益参数化为中的一阶多项式,组合步骤2和步骤3直接调整整个飞行包线的多项式系数。这种方法消除了第3步,并保证了平滑的增益变化随时间的变化和。此外,增益调度系数可以使用systune
.
假设发病率在-20到20度之间变化,这是速度在700和1400 m/s之间变化。当忽略重力时,机身动力学是对称的.因此,只考虑正的值.使用5×9的线性间隔网格配对以覆盖飞行包线。
nA = 5;%alpha值的数目nV=9;%V值的数目(α,V) = ndgrid (linspace(0, 20日nA) *π/ 180,linspace(700、1400、nV));
针对每种飞行条件,在配平(零法向加速度和俯仰力矩)时线性化机身动力学。这需要计算升降舵偏转音高结果是稳定的和.要做到这一点,首先在单独的Simulink模型中隔离机身模型。金宝app
mdl=“rct_airframeTRIM”;open_system (mdl)
使用operspec
要指定修剪条件,请使用findop
来计算的配平值和,并对产生的工作点的机身动力学进行线性化。有关详细信息,请参阅机身的修整和线性化(金宝app仿真软件控制设计).在45个飞行条件下重复这些步骤.
计算每一个的配平条件一对
为ct=1:nA*nVαi=alpha(ct);%发病率[rad]v_ini = V (ct);%速度[米/秒]指定纵倾条件操作规范(ct)=操作规范(mdl);%Xe,Ze:已知,不稳定opspec(ct).States(1).Known=[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];%西塔:已知,不稳定opspec (ct) .States(2)。= 1;opspec (ct) .States(2)。稳态= 0;%问:未知,稳定opspec (ct) .States(4)。知道= 0;opspec (ct) .States(4)。稳态= 1;结束opspec =重塑(opspec,[nA nV]);
根据给定的规格修剪模型。
选择= findopOptions (“DisplayReport”,“关”);op = findop (mdl、opspec选项);
在配平条件下对模型进行线性化。
G=线性化(mdl,op);G.u=“δ”;G.y = {“阿尔法”,“V”,“问”,“az”,“伽马”,“h”};G.SamplingGrid=struct(“阿尔法”阿尔法“V”, V);
该过程在45个飞行条件下产生5×9的线性化电厂模型阵列.整个飞行包线内的电厂动态变化很大。
σ(G)标题(“机身动力学的变化”)
自动驾驶仪由四个增益组成作为一项功能被“安排”(调整)和。实际上,这意味着在相应的四个查找表中分别调整88个值。与其单独调整每个表项,不如将增益参数化为二维增益曲面,例如,具有简单多线性依赖关系的曲面和:
.
这将每个查找表的变量数从88个减少到4个tunableSurface
对象参数化每个增益面。注意:
调谐栅极
指定“调整网格”(设计点)。此网格应与用于线性化的网格匹配,但无需与循环表断点匹配
ShapeFcn
指定曲面参数化的基函数(,和)
每一个曲面都会使用调整结果初始化为恒定增益=10度和=1050 m/s(中频设计)。
TuningGrid=struct(“阿尔法”阿尔法“V”, V);ShapeFcn = @(alpha,V) [alpha,V,alpha*V]; / /输出Kp = tunableSurface (“Kp”0.1、TuningGrid ShapeFcn);Ki = tunableSurface (“吻”,2,调谐栅格,ShapeFcn);Ka=可调曲面(“卡”,0.001,调整网格,ShapeFcn);Kg=可调表面(“公斤”、-1000、TuningGrid ShapeFcn);
接下来创建一个slTuner
调谐增益面的接口。用块替代法将非线性对象模型替换为线性化模型。使用setBlockParam
将可调谐增益面关联起来金伯利进程
,Ki
,卡
,公斤
具有相同名称的插值块。
BlockSubs =结构(“名字”,“rct_机身/机身模型”,“价值”,G);ST0=单反调谐器(“rct_机身”,{“Kp”,“吻”,“卡”,“公斤”},BlockSubs);%登记关注点ST0.addPoint({“az_ref”,“az”,“gamma_ref”,“伽马”,“δ”})参数化查找表块ST0.setBlockParam(“Kp”,Kp,“吻”,Ki,“卡”,Ka,“公斤”,公斤);
systune
可以自动调整整个飞行包线的增益面系数。使用调谐目标
用于指定性能目标的对象:
循环:以1秒响应时间跟踪设定值,小于2%的稳态误差,小于30%的峰值误差。
Req1=调整目标。跟踪(“gamma_ref”,“伽马”1、0.02、1.3);viewGoal (Req1)
环路:确保在低频(跟踪加速度要求)和超过10 rad/s(对测量噪声不敏感)时具有良好的干扰抑制。干扰在az_ref
地方
拒绝配置文件=frd([0.02 0.02 1.2 1.2 0.1],[0.02 2 15 150]);要求2=调整目标。增益(“az_ref”,“az”,拒绝配置文件);查看目标(要求2)
回路:确保高达10 rad/s的良好干扰抑制。干扰注入设备输入端希腊字母表的第4个字母
.
Req3=调整目标。增益(“δ”,“az”,600*tf([0.25 0],[0.25 1]);视图目标(要求3)
瞬态:确保无振荡瞬态的最小阻尼比为0.35
MinDamping=0.35;Req4=TuningGoal.Poles(0,MinDamping);
使用systune
,调整16增益表面系数,以最好地满足这些性能要求在所有45飞行条件。
ST=系统(ST0,[Req1 Req2 Req3 Req4]);
最终:软=1.13,硬=Inf,迭代=57
组合目标的最终值接近于1,表明所有要求几乎都得到满足。可视化得到的增益面。
%获得调谐增益曲面。TGS=getBlockParam(ST);%绘制增益曲面。clf subplot(2,2,1) viewSurf(TGS.Kp) title(“Kp”)子地块(2,2,2)viewSurf(TGS.Ki)标题(“吻”)子地块(2,2,3)viewSurf(TGS.Ka)标题(“卡”) subplot(2,2,4) viewSurf(TGS.Kg) title(“公斤”)
首先在上述45种飞行条件下验证调谐自动驾驶仪。绘制飞行轨迹角阶跃变化响应和电梯偏转阶跃扰动响应。
clf次要情节(2,1,1)步骤(getIOTransfer(圣,“gamma_ref”,“伽马”), 5)网格标题(“航迹角阶跃变化的跟踪”)子批次(2,1,2)步骤(getIOTransfer(ST,“δ”,“az”),3)网格标题(“在设备输入时抑制阶跃干扰”)
响应在所有飞行条件下都是令人满意的。接下来根据非线性机身模型验证自动驾驶仪。首先使用writeBlockValue
将调整结果应用于Simulink模型。这将在两个Prelookup块中金宝app指定的断点处计算每个增益曲面公式,并将结果写入相应的插值块中。
writeBlockValue(ST)
模拟机身通过大部分飞行包线的机动动作的自动驾驶仪性能。下面的代码相当于按下Simulink模型中的播放按钮并检查范围块中的响应。金宝app
%指定初始条件。h_ini=1000;alpha_ini=0;v_ini=700;%模拟模型。SimOut=sim(“rct_机身”,“返回工作空间输出”,“上”);%提取仿真数据。SimData=get(SimOut,“西格苏”);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子批次(2,1,1)图(t,模拟伽马值。数据(:,1),“r——”,t,模拟伽马值。数据(:,2),“b”)网格图例(“命令”,“实际的”,“位置”,‘东南’)头衔('飞行轨迹角度\伽马度数')子地块(2,1,2)图(t,模拟增量值。数据)网格标题('电梯偏转')
子地块(2,1,1)图(t,模拟α值。数据)网格标题(“入射度”)子地块(2,1,2)图(t、模拟值、数据)网格标题(“速度V,单位为m/s”)
子地块(2,1,1)图(t、模拟值、数据)网格标题(‘高度h(米)’) subplot(2,1,2) plot(t,Sim_az.Values.Data) grid title('法向加速度a_z在g' s中')
在整个机动过程中,飞行轨迹角剖面的跟踪保持良好。注意,入射角的变化和速度覆盖这里考虑的大部分飞行范围([-20,20]度)和(700、1400)).虽然自动驾驶仪被调校为3000米的标称高度,但在1000米到10000米的高度变化时效果良好。
非线性仿真结果证实了增益调度自动驾驶仪在整个飞行包络线中始终具有良好的性能。“增益面调优”过程为增益对调度变量的依赖性提供了简单的显式公式。您可以直接使用这些公式来实现内存效率更高的硬件实现,而不是使用查找表。
tunableSurface
|setBlockParam
(金宝app仿真软件控制设计)|slTuner
(金宝app仿真软件控制设计)