这个示例使用系统
为三环自动驾驶仪生成平滑增益计划。
这个例子使用了一个机身俯仰轴动力学的三自由度模型。这些状态是地球坐标,身体坐标,俯仰角,以及音高下图总结了惯性系和机身架、飞行轨迹角之间的关系,入射角和桨距角.
我们使用经典的三回路自动驾驶仪结构来控制飞行轨迹角.此自动驾驶仪通过提供正常加速的充分突发来调整飞行路径(加速前进).反过来,通过调整升降舵偏转产生法向加速度以引起俯仰和改变升力的大小。自动驾驶仪使用比例积分(PI)控制在螺距率环路和比例控制和循环。闭环系统(机身和自动驾驶仪)在Simulink中进行建模。金宝app
Open_System('rct_airframegs')
机身动力学是非线性的,气动力和力矩依赖于速度和发病率.以获得适当的性能飞行包线,自动驾驶仪增益必须根据和以补偿电厂动态的变化。此调整过程称为“增益调度”和在Simulink模型中,增益调度被实现为由参数测量驱动的查找表金宝app和.
增益调度是一种用于控制非线性或时变对象的线性技术。其思想是计算被控对象在各种运行条件下的线性逼近,在每个运行条件下调整控制器增益,并在运行期间交换增益作为运行条件的函数。常规增益调度包括以下三个主要步骤。
在每个操作条件下对设备进行微调和线性化
在每个操作条件下调整线性化动态的控制器增益
协调增益值以提供操作条件之间的平稳过渡。
在此示例中,您将步骤2和3组合通过参数化自动驾驶仪获得作为一阶多项式直接调整整个飞行信封的多项式系数。该方法消除了步骤3,并保证了作为一个函数的平滑增益变化和.此外,增益调度系数可以自动调整系统
.
假设在-20和20度之间变化,速度在700到1400米/秒之间变化。忽略重力时,机动控制是对称的因此,只考虑正值。.使用线性间隔的5 × 9网格结对覆盖飞行信封。
nA=5;% alpha值的数量nV = 9;V值的百分比[alpha,V]=ndgrid(linspace(0,20,nA)*pi/180,linspace(7001400,nV));
对于每种飞行状态,线性化机身动力学在修剪(零法向加速度和俯仰力矩)。这就需要计算电梯的挠度和球场结果是稳定的和。为此,首先在单独的Simulink模型中隔离机身模型。金宝app
mdl =“rct_机身装饰”;开放式系统(mdl)
使用operspec
要指定修剪条件,请使用芬多普
要计算的修剪值和,并为所产生的操作点线性化空气框架动态。有关详细信息,请参阅修剪和线性化机身(金宝appSimulink控制设计).对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)。稳态= (0,0);%U,W:已知,稳定opspec(ct).States(3).Known=[11];opspec(ct).States(3).SteadyState=[01];%theta:已知,不是稳定的opspec(ct).States(2).Known=1;opspec(ct).States(2).SteadyState=0;%问:未知,稳定opspec(ct).States(4).Known=0;opspec(ct).States(4).SteadyState=1;终止opspec=重塑(opspec,[nA nV]);
根据给定的规格修剪模型。
选项=findopOptions(“显示报告”,'离开');op=findop(mdl、opspec、选项);
在修剪条件下线性化模型。
G =线性化(mdl, op);G.u =“三角洲”;G.y={'α',“V”,“q”,“阿兹”,“伽马”,'H'};G.SamplingGrid =结构('α'α,“V”,V);
该过程在45个飞行条件下产生5×9阵列的线性化厂模型.整个飞行包络线上的植物动态变化很大。
西格玛(G)标题(“机身动力学的变化”)
自动驾驶仪由四个增益组成作为“计划”(调整)作为一个函数和.实际上,这意味着在每个相应的四个查找表中调整88个值。而不是单独调整每个表条目,而是将增益参数化为二维增益曲面,例如,具有简单的多线性依赖的曲面和:
.
这将每个查询表的变量数量从88个减少到4个。使用可调表面
对象来参数化每个增益曲面。请注意:
TuningGrid
指定“调谐网格”(设计点)。此网格应匹配用于线性化的那个,但不需要匹配循环表断点
shapefcn.
指定表面参数化的基本函数(,,)
使用的调优结果将每个曲面初始化为常数增益=10度和= 1050 m / s(中档设计)。
TuningGrid =结构('α'α,“V”,V);ShapeFcn=@(alpha,V)[alpha,V,alpha*V];Kp=可调表面(“金伯利进程”,0.1,TuningGrid,ShapeFcn);Ki=可调表面(“基”2 TuningGrid ShapeFcn);Ka = tunableSurface ('K a',0.001,调整网格,形状;Kg=可调表面(“千克”,-1000,调整网格,ShapeFcn);
接下来创建一个单反调谐器
用于调整增益表面的接口。在调谐网格上,使用块替换将非线性对象模型替换为线性化模型。使用setBlockParam
要关联可调谐增益曲面金伯利进程
,碘化钾
,灵魂
,公斤
具有相同名称的插值块。
BlockSubs=struct(“姓名”,'rct_airframegs / airframe model',“价值”,G);st0 = sltuner('rct_airframegs', {“金伯利进程”,“基”,'K a',“千克”}, BlockSubs);%登记兴趣点ST0.addPoint ({“az_ref”,“阿兹”,“伽马参考”,“伽马”,“三角洲”})%参数化查找表块ST0.setBlockParam (“金伯利进程”,kp,“基”吻,'K a'卡,“千克”,公斤);
系统
可以自动调整增益表面系数为整个飞行包络线。使用TuningGoal
对象以指定性能目标:
回路:以1秒的响应时间跟踪设定点,稳态误差小于2%,峰值误差小于30%。
Req1 = TuningGoal。跟踪(“伽马参考”,“伽马”,1,0.02,1.3); 查看目标(要求1)
环路:确保在低频(跟踪加速度需求)和超过10 rad/s(对测量噪声不敏感)的干扰抑制良好。扰动被注入AZ_REF.
地点。
ReexedProfile = FRD([0.02 0.02 1.2 1.2 0.1],[0 0.02 2 15 150]);req2 = tuninggoal.gain(“az_ref”,“阿兹”,拒绝新闻);ViewGoal(REQ2)
环:确保高达10 rad / s的良好干扰排斥。在植物输入中注射干扰δ
.
Req3 = TuningGoal。获得(“三角洲”,“阿兹”, 600 *特遣部队(0.25 [0],[0.25 - 1]));viewGoal (Req3)
瞬态:确保无振荡瞬态的最小阻尼比为0.35
MinDamping = 0.35;Req4 = TuningGoal.Poles (0, MinDamping);
使用系统
,调整16个增益面系数,以在所有45个飞行条件下最好地满足这些性能要求。
ST = SYTUNE(ST0,[REQ1 REQ2 REQ3 REQ4]);
Final:软= 1.13,硬= -Inf,迭代= 57
组合目标的最终值接近1,表明几乎满足了所有要求。可视化生成的增益曲面。
%得到调整的增益面。TGS = GetBlockParam(ST);%绘制增益面。clf子地块(2,2,1)viewSurf(TGS.Kp)标题(“金伯利进程”)子图(2,2,2)ViewsURF(TGS.KI)标题(“基”) subplot(2,2,3) viewSurf(TGS.Ka) title('K a')子地块(2,2,4)viewSurf(TGS.Kg)标题(“千克”)
首先在上面考虑的45个飞行条件下验证调谐自动驾驶仪。绘制飞行路径角度的步骤变化的响应以及电梯偏转中的慢性扰动的响应。
clf子批次(2,1,1)步骤(getIOTransfer(ST,“伽马参考”,“伽马”),5)网格标题(“跟踪飞行轨迹角度的阶跃变化”次要情节(2,1,2)步骤(getIOTransfer(圣,“三角洲”,“阿兹”),3)网格标题('在植物投入下拒绝阶梯障碍')
所有飞行条件都是令人满意的。接下来将自动驾驶仪验证为非线性机身模型。首次使用writeBlockValue
将调整结果应用于Simulink模型。金宝app这在两个PRELookup块中指定的断点处评估每个增益曲面公式,并在相应的插值块中写入结果。
writeBlockValue (ST)
模拟机动的自动驾驶仪性能,通过其飞行信封的大部分拍摄机动。以下代码等同于按Simulink模型中的播放按钮并检查范围块中的响应。金宝app
%指定初始条件。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 = getErement(simdata,'H'); Sim_az=getElement(SimData,“阿兹”); t=模拟伽马值时间;%绘制主要飞行变量。clf次要情节(2,1,1)情节(t, Sim_gamma.Values.Data (: 1),'r--'t Sim_gamma.Values.Data (:, 2),“b”)网格传奇('命令','实际的',“位置”,‘东南’) 标题(“飞行路径角”)子图(2,1,2)绘图(t,sim_delta.values.data)网格标题(“升降舵偏转\以度为单位的增量”)
subplot(2,1,1) plot(t,Sim_alpha.Values.Data) grid title('入射角\α,单位为度')子图(2,1,2)绘图(t,sim_v.values.data)网格标题('m / s'的速度v)
子图(2,1,1)绘图(t,sim_h.values.data)网格标题('高度H在米中')子地块(2,1,2)图(t、模拟值、数据)网格标题('法向加速度a_z in g's')
在整个机动过程中对飞行路径角廓线的跟踪保持良好。注意发生率的变化和速度覆盖此处考虑的大部分飞行包线([-20,20]度)和[7001400]用于)。虽然自动驾驶仪被调整为3000米的标称高度,但高度从1,000到10,000米改变的海拔地点差价很好。
非线性仿真结果证实,增益调度自动驾驶仪在整个飞行包线内提供一致的高性能。“增益面调整”程序为增益与调度变量的关系提供了简单的显式公式。您可以直接使用这些公式来实现更高效的硬件实现,而不是使用查找表。
单反调谐器
(金宝appSimulink控制设计)|可调表面
|setBlockParam
(金宝appSimulink控制设计)