具有不稳定极点飞行器的显式MPC控制
这个例子展示了如何使用显式MPC控制一个不稳定的飞机与饱和执行器。
有关使用传统MPC控制器控制同一工厂的示例,请参见具有不稳定极点的飞机的MPC控制.
定义飞机模型
下面的线性时不变模型是由一架飞机在高度3000英尺,速度为0.6马赫([1])时的纵向动力学线性化得到的。开环模型有以下状态空间矩阵:
A = [-0.0151 -60.5651 0 -32.174;-0.0001 -1.3411 0.9929 0;0.00018 43.2541 -0.86939 0;0 0 10 0];B = [-2.516 -13.136;-0.1689 - -0.2514;-17.251 - -1.5766;0 0];C = [0 1 0 0;0 0 0 1]; D = [0 0; 0 0];
线性模型的输入、状态和输出表示在非线性模型工作点与各自标称值的偏差。
这里的状态变量是:
前进速度(ft/sec)
攻角(度)
俯仰速率(度/秒)
俯仰角(度)
操纵变量为升力角和襟副翼角,单位为度。攻角和俯仰角是测量输出,需要进行调节。
创建工厂,并将初始状态指定为0。
plant = ss(A,B,C,D);X0 = 0 (4,1);
开环系统不稳定。
潮湿(植物)
极阻尼频率时间常数(rad/秒)(秒)-7.50e-03 + 5.56e-02i 1.34e-01 5.61e-02 1.33e+02 5.56e-02 5.61e-02 5.45e+00 -1.00e+00 5.45e+00 -1.83e-01 -7.66e+00 1.00e+00 7.66e+00 1.30e-01
MPC控制器设计
为了获得显式MPC控制器,必须首先设计一个能够实现控制目标的传统(隐式)模型预测控制器。
MV约束
两个被操纵的变量都被限制在+/- 25度之间。使用比例因子来促进MPC调优。比例因子的典型选择是操作范围的上限/下限。
MV = struct(“最小值”{-25、-25},“马克斯”25},{25日,“ScaleFactor”, {50,50});
OV尺度因子
指定工厂产出的比例因子。
OV = struct(“ScaleFactor”, {60 60});
权重
控制任务是在避免由于输入饱和引起的不稳定的情况下,对分段常数参考值实现零偏移。由于在MPC控制器中MV和OV变量都已缩放,因此MPC权重是无量纲的,并应用于缩放后的MV和OV值。
对于这个例子,通过指定一个比俯仰角更大的权重来强调攻击角的跟踪。
权重= struct(“MV”[0 0],“MVRate”(0.1 - 0.1),机汇的, 200年[10]);
构造传统MPC控制器
使用指定的植物模型、0.05秒(20 Hz)的采样时间、10步的预测范围、2步的控制范围以及先前指定的权重、约束和比例因子创建MPC控制器。
mpcobj = mpc(plant,0.05,10,2,Weights,MV,OV);
计算闭环直流增益矩阵
计算闭环的稳态输出灵敏度。零值意味着被测量的设备输出可以跟踪所需的输出参考设定值。
cloffset (mpcobj)
——>转换模型到离散时间。假设添加到测量输出通道#1的输出扰动是集成白噪声。假设添加到测量输出通道#2的输出扰动是集成白噪声。——>”模式。“噪音”属性为空。假设每个测量输出都有白噪声。Ans = 1.0e-11 * 0.1085 -0.0058 0.1224 -0.0355
明确的政策委员会
可以证明,约束将MPC控制器的状态空间划分为许多多面体区域,这样在每个区域内,MPC控制律是一个特定的仿射状态和参考函数,其系数取决于区域。显式MPC离线计算所有这些区域及其相对控制律。在线时,控制器只需选择并应用相对于当前区域的预计算解,因此它不必在每个控制步骤中求解约束二次优化问题。有关显式MPC的更多信息,请参见明确的政策委员会.
生成显式MPC控制器
显式MPC执行传统MPC控制器定义的MPC控制律的等效显式分段仿射版本。要从传统的MPC控制器生成显式MPC控制器,必须为每个控制器状态、参考信号、操纵变量和测量扰动指定范围。这样做可以确保二次规划问题在由这些范围定义的空间中得到解决。如果在运行时,这些自变量中的一个超出了它的范围,控制器返回一个错误状态,并将被操作的变量设置为它们的最后值。因此,不要低估这些范围是很重要的。
要生成合适的范围,首先要获得控制器状态的一些信息。
显示输入和输出扰动模型的大小
为了得到控制器输入和输出扰动模型,使用getindist
而且getoutdist
,分别。
大小(getindist (mpcobj))大小(getoutdist (mpcobj))
具有0输出、0输入和0状态的状态空间模型。具有2个输出、2个输入和2个状态的状态空间模型。
输入扰动模型不存在,而输出扰动模型有两种状态。
显示控制器初始状态
要显示控制器的初始状态,使用mpcstate
.
mpcstate (mpcobj)
MPCSTATE对象与字段Plant:[0 0 0 0 0]扰动:[0 0]噪声:[1x0 double] LastMove:[0 0]协方差:[6x6 double]
正如预期的那样,Kalman估计器使用的植物模型有4个状态,扰动模型又增加了2个状态,需要2个状态来保存被操纵变量的最后一个值,总共8个状态。
获取一个用于初始化的范围结构
若要创建可以为每个状态、引用和操作变量指定范围的范围结构,请使用generateExplicitRange
.
range = generateExplicitRange(mpcobj);
指定控制器状态、引用和操纵变量的范围
MPC控制器状态按顺序包括来自植物模型、扰动模型、噪声模型和被操纵变量的最后一个值的状态。当状态与物理参数不对应时,设置状态变量的范围有时很困难。在这种情况下,建议使用典型的参考信号和扰动信号(包括模型不匹配)进行多次开环植物模拟,以收集反映状态范围的数据。
对于本例,如下所示,高估状态变量的实际变化范围。
range.State.Min(:) = [-600 -90 -50 -90 -90 -90];range.State.Max(:) = [1600 90 50 90 90 90 90];
指定参考信号的范围
通常你知道在工厂的标称工作点上使用的参考信号的实际范围。用于生成显式MPC控制器的范围必须至少与实际范围一样大。
range.Reference.Min = [-1;-11];range.Reference.Max = [1;11];
指定操作变量的范围
如果操纵变量受到约束,用于生成显式MPC控制器的范围必须至少与这些限制一样大。
range.ManipulatedVariable.Min = [MV(1).Min;MV(2)。Min] - 1;range.ManipulatedVariable.Max = [MV(1).Max;MV(2)。Max] + 1;
构造显式MPC控制器
使用generateExplicitMPC
命令获取前面指定的参数范围的显式MPC控制器。
empcobj = generateExplicitMPC(mpcobj, range);显示器(empcobj)
发现/未开拓的地区:81/0明确MPC控制器 --------------------------------------------- 控制器样品时间:0.05(秒)多面区域:81数量的参数:10是解决方案简化:没有状态估计:默认卡尔曼增益 --------------------------------------------- “empcobj类型。MPC’的原始隐式MPC设计。“empcobj类型。Range'表示有效的参数范围。“empcobj类型。OptimizationOptions'用于多参数QP计算的选项。“empcobj类型。pieceaffinresolution '用于每个解决方案中的区域和增益。
要连接对应增益相同且并集为凸集的区域对,请使用简化
命令使用“准确”
方法。这种做法可以在不牺牲性能的情况下减少显式MPC控制器的内存占用。
empcobj simplified =简化(empcobj,“准确”);显示器(empcobjSimplified)
区域分析:77/77明确MPC控制器 --------------------------------------------- 控制器样品时间:0.05(秒)多面区域:77数量的参数:10是解决方案简化:是的状态估计:默认卡尔曼增益 --------------------------------------------- “empcobjSimplified类型。MPC’的原始隐式MPC设计。“empcobjSimplified类型。Range'表示有效的参数范围。“empcobjSimplified类型。OptimizationOptions'用于多参数QP计算的选项。“empcobjSimplified类型。pieceaffinresolution '用于每个解决方案中的区域和增益。
减少了分段仿射区域的数量。
沿给定截面分段仿射划分
您可以绘制控制器状态空间的2D部分,并查看该部分中的区域。对于本例,绘制由俯仰角(第4个状态变量)与它的参考信号(第2个参考信号)定义的状态空间的2D部分。为此,您必须首先创建一个图结构,在其中将所有其他状态(和参考信号)固定为各自范围内的特定值。
为初始化创建一个plot参数结构
若要创建参数结构,可以指定随后绘制哪个2-D部分,请使用generatePlotParameters
函数。
plotpars = generatePlotParameters(empcobjSimplified);
*为2-D图指定参数
指定除第4个状态变量之外的所有状态变量的索引(这意味着允许第4个状态变量变化)。然后将固定状态变量的值指定为0。
plotpars.State.Index = [1 2 3 5 6];plotpars.State.Value = [0 0 0 0 0];
指定第一个参考信号的索引(因此允许第二个参考信号变化),并将其值固定为零。
plotpars.Reference.Index = 1;plotpars.Reference.Value = 0;
将两个被操纵的变量都修正为零。
plotpars.ManipulatedVariable.Index = [1 2];plotpars.ManipulatedVariable.Value = [0 0];
绘制二维剖面
使用plotSection
命令绘制前面定义的2-D部分。
plotSection (empcobjSimplified plotpars);轴([-10 10 -10 10])俯仰角(x_4)) ylabel (俯仰角参考(r_2))
使用Simulink®进行模拟万博1manbetx
在Simulink中模拟线性植物模型的闭环控制。万博1manbetx要做到这一点,对于MPC控制器块,设置显式MPC控制器财产empcobjSimplified
.对于本例,此属性已经设置。
mdl =“empc_aircraft”;open_system (mdl)
使用Simulink从命令行模拟系统万博1manbetxsim卡
命令。
sim (mdl)
打开显示操纵变量和飞机输出响应的范围
open_system (“empc_aircraft / MV”) open_system (“empc_aircraft/攻角响应”) open_system ('empc_aircraft/俯仰角响应')
所设计的闭环响应与传统MPC控制器的特性相同具有不稳定极点的飞机的MPC控制.
参考文献
[1] P. Kapasouris, M. Athans,和G. Stein,“带饱和执行器的不稳定装置反馈控制系统设计”,IFAC Symp非线性控制系统设计,佩加蒙出版社,第302—307页,1990年
[2] A. Bemporad, A. Casavola, E. Mosca,“基于预测参考管理的约束线性系统非线性控制”,IEEE®反式。自动控制, AC-42卷,no。3, pp. 340-349, 1997。
bdclose (mdl)