明确的MPC控制直流伺服电动机与约束在无边无际的输出
这个例子展示了如何使用显式的MPC控制电压和轴转矩约束下的直流伺服机构。
一个类似的例子,使用传统的隐式MPC,明白了直流伺服电动机与约束在无边无际的输出。一个相关的例子,这种植物,看到设计MPC控制器位置伺服机构。
定义直流伺服电机模型
的mpcmotormodel
函数返回所需的植物模型的例子。线性开环动态模型中定义植物
。的变量τ
是最大的容许扭矩,这是作为一个输出约束。
(植物、τ)= mpcmotormodel;
显示基本的植物特征。
大小(植物)潮湿(植物)
2输出,状态空间模型1的输入和4。极点频率衰减时间常数(rad /秒)(8.23秒)e-16 -1.00 e + 00 8.23 e-16 -1.22 e + 15 -7.05 e-01 + 7.31 e + 00我9.59 e-02 7.35 -7.05 1.42 e + e + 00 00 e-01 - 7.31 e + 00我9.59 e-02 7.35 e + 00 1.42 1.00 -9.79 e + e + 00 00 e-01 1.02 9.79 e + e + 00 00
设备控制输入直流电压,四个状态变量的角位置和速度负载和电机轴。可测输出的角位置是负载。第二个输出扭矩,没有可衡量的。有关更多信息,请参见设计MPC控制器位置伺服机构。
指定输入和输出信号类型MPC控制器。
植物= setmpcsignals(植物,“MV”,1“莫”,1“UO”2);
指定的约束
被操纵的变量是+ / - 220伏之间的限制。由于植物输入和输出不同的数量级,您还可以使用规模因素促进MPC调优。典型的选择比例因子上/下限或操作范围。
MV =结构(“最小值”,-220,“马克斯”,220,“ScaleFactor”,440);
转矩限制+ |τ| - |τ|只在第一个三个预测步骤实施。还指定一个比例因子对输出(负载角和扭矩)。
OV =结构(“最小值”,{正无穷,τ,τ;τ;负)},…“马克斯”,{正无穷,τ;τ,τ;正]},…“ScaleFactor”,{2π* 2 *τ});
指定优化权重
控制的任务是得到零跟踪角位置的偏移量。因为你只有一个操纵变量,允许轴扭矩漂浮在其约束通过设置它的重量为零。
重量=结构(“MV”0,“MVRate”,0.1,机汇的,0.1 [0]);
创建MPC控制器
创建一个MPC控制器样品时间Ts
,预测地平线10
步骤,并控制地平线2
步骤。
t = 0.1;mpcobj = mpc(植物、t、10、2、重量、MV, OV);
计算闭环直流增益矩阵
计算稳态输出灵敏度的闭环。零值意味着测量装置的输出可以跟踪所需的输出参考定位点。
cloffset (mpcobj)
- - >将模型转换为离散时间。假设没有干扰测量输出通道# 1。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。ans = 0
明确的政策委员会
操纵变量的约束和输出MPC控制器的状态空间分割成许多多面区域,在每个区域MPC控制律是一个特定的affine-in-the-state-and-reference函数,用系数取决于该地区。明确的MPC计算所有这些地区,和它们的相对控制法律,离线。在线,控制器只是选择并应用预先计算的解决方案相对于当前的地区,所以它没有解决约束的二次优化问题在每个控制步骤。明确MPC的更多信息,请参阅明确的政策委员会。
产生明确的MPC控制器
明确MPC相当于执行显式的分段仿射版本的MPC控制律由传统的MPC控制器。生成一个显式的MPC控制器从传统MPC控制器,您必须为每个控制器状态指定范围,参考信号,操纵变量和测量的干扰。这样做确保了二次规划问题是解决这些定义的空间范围。如果在运行时其中一个独立变量超出它的范围,控制器返回一个错误状态和操纵变量设置为他们最后的值。因此,重要的是,你不要低估这些范围。
生成合适的范围,获得一些信息在控制器状态。
显示输入和输出扰动模型的大小
控制器的输入和输出扰动模型,使用getindist
和getoutdist
,分别。
大小(getindist (mpcobj))大小(getoutdist (mpcobj))
输出为0的状态空间模型,0输入,和0。2输出状态空间模型,输入0,0。
控制器不使用任何扰动模型。
显示控制器的初始状态
显示控制器初始状态,使用mpcstate
。
mpcstate (mpcobj)
MPCSTATE对象和字段植物:[0 0 0 0]干扰:(x0 1双)噪声:[1 x0双]LastMove: 0协方差:[4 x4双)
正如预期的那样,使用的植物模型卡尔曼估计有4个州,然后有一个额外的状态需要最后一个操纵变量的值。
获得一系列结构初始化
创建一系列结构,您可以为每个州指定范围,参考,和操纵变量,使用generateExplicitRange
。
范围= generateExplicitRange (mpcobj);
为控制器状态指定范围、引用和操纵变量
MPC控制器状态包括从植物模型,扰动模型,噪声模型,最后一个值的操纵变量,在秩序。设置一个状态变量的范围有时是困难的时候不对应一个物理参数。在这种情况下,多个运行的开环仿真植物典型的参考和干扰信号,包括模型不匹配,建议收集数据,以反映美国的范围。
对于这个例子,因为齿轮之间的定量马达和加载轴是20,高估了实际状态变量的变化范围(负载角位置,负载角速度,电机轴角位置,电机轴角速度),如下所示。
range.State.Min(,) =[4 * 4π*π/ Ts 4 * 4π* 20 *π* 20 / Ts);range.State.Max(,) =[4 * 4π*π/ Ts 4 * 4π* 20 *π* 20 / Ts);
通常你知道所使用的参考信号的实际范围的名义操作点。用于生成的范围明确的MPC控制器必须至少一样大的实际范围。注意参考转矩的范围是固定的0
因为转矩没有可衡量的,因此控制器不使用任何参考信号。
range.Reference。最小值= (5;0);range.Reference。Max = (5; 0);
如果操纵变量约束,用于生成范围明确的MPC控制器必须至少一样大这些限制。
range.ManipulatedVariable。Min = MV。分钟- 1;range.ManipulatedVariable。Max = MV。Max + 1;
创建一个显式的MPC控制器与指定的范围。
mpcobjExplicit = generateExplicitMPC (mpcobj、范围)
发现/未开拓的地区:76/0明确MPC控制器- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -控制器样品时间:0.1(秒)多面区域:76数量的参数:6是解决方案简化:没有状态估计:默认卡尔曼增益- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -“mpcobjExplicit类型。MPC的原始隐MPC的设计。“mpcobjExplicit类型。范围的参数的有效范围。“mpcobjExplicit类型。OptimizationOptions”选项用于不确定型QP计算。“mpcobjExplicit类型。PiecewiseAffineSolution”区域,并获得在每个解决方案。
沿着给定的部分情节分段仿射分区
你可以画一个2 d部分的控制器状态空间,看看这一部分地区。对于这个示例,图的2 d部分由第一和第二状态变量定义的状态空间(负载角和角速度)。所以你必须首先创建一个情节结构修复所有的其他州(和参考信号)在各自特定的值范围。
创建一个参数结构,您可以指定2 d部分情节之后,使用generatePlotParameters
函数。
plotpars = generatePlotParameters (mpcobjExplicit);
在本例中,您的阴谋第一个状态变量对第二个状态变量。所有其他参数都必须固定在各自范围内值。
指定索引的第三和第四状态变量和修复它们的值为零。
plotpars.State。指数= [3 - 4];plotpars.State。值= [0 0];
指定索引输出参考信号和修复它们π
和0
,分别。
plotpars.Reference。指数= (1 - 2);plotpars.Reference。值=(π0);
指定索引的操作变量和修复它的值为零。
plotpars.ManipulatedVariable。指数= 1;plotpars.ManipulatedVariable。值= 0;
情节指定的二维截面。
plotSection (mpcobjExplicit plotpars);轴([-。3。3 2 2]);网格标题(分区的部分(x3 (t) = 0 x4 (t) = 0, u (t - 1) = 0, r (t) =π)”)包含(“x1 (t)”)ylabel (“x2 (t)”)
模拟控制器使用sim卡
函数
比较传统之间的闭环仿真结果(隐性)MPC和显式MPC控制器。
Tstop = 8;%秒Tf =圆(Tstop / Ts);%模拟迭代πr = [0];%的参考信号(y1, t1, u1) = sim (mpcobj, Tf, r);与传统MPC %模拟(y2, t2, u2) = sim (mpcobjExplicit, Tf, r);使用显式的MPC %模拟
- - >将模型转换为离散时间。假设没有干扰测量输出通道# 1。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。
仿真结果是相同的。
流(隐式和显式的区别MPC轨迹= % g \ n ',…规范(u2-u1) +规范(y2-y1));
隐式和显式的区别MPC轨迹= 7.57032 e-12
使用仿真软件模拟金宝app
植物模拟闭环控制的线性模型在仿真软件。金宝app块被配置为使用显式MPC控制器mpcobjExplicit
作为控制器。
mdl =“empc_motor”;open_system (mdl) sim (mdl)
闭环反应是相同的传统MPC控制器设计直流伺服电动机与约束在无边无际的输出。
使用最优显式MPC控制
为了减少内存占用,您可以使用简化
函数来减少区域的数量。例如,您可以删除区域的切比雪夫半径小于0.08
。然而,你付出的代价是,在这些区域控制器性能不佳。
mpcobjExplicitSimplified =简化(mpcobjExplicit,“半径”,0.08)
区域分析:76/76——> 37区域删除。明确MPC控制器- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -控制器样品时间:0.1(秒)多面区域:39的参数数量:6是解决方案简化:是的状态估计:默认卡尔曼增益- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -“mpcobjExplicitSimplified类型。MPC的原始隐MPC的设计。“mpcobjExplicitSimplified类型。范围的参数的有效范围。“mpcobjExplicitSimplified类型。OptimizationOptions”选项用于不确定型QP计算。“mpcobjExplicitSimplified类型。PiecewiseAffineSolution”区域,并获得在每个解决方案。
分段仿射区域的数量已经减少了。
比较不明确的政策委员会之间的闭环仿真结果和明确的政策委员会。
[y3, t3, u3] = sim (mpcobjExplicitSimplified, Tf, r);
- - >将模型转换为离散时间。假设没有干扰测量输出通道# 1。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。
仿真结果是不一样的。
流(确切的区别和不明确的MPC轨迹= % g \ n ',…规范(u3-u2) +规范(y3-y2));
准确和不明确的MPC轨迹之间的区别= 439.399
阴谋的结果。
图次要情节(3、1、1)的阴谋(t1, y1 (: 1), t3、y3 (: 1),“:”网格)标题(“角(rad)”)传说(“明确”,“次优显式”次要情节(3、1、2)情节(t1, y1 (:, 2), t3、y3 (:, 2),“:”网格)标题(“转矩(Nm)”)传说(“明确”,“次优显式”次要情节(3,1,3)情节(t1, u1, t3, u3,“:”网格)标题(“电压(V)”)传说(“明确”,“次优显式”)
仿真结果表明,明确的MPC性能不佳是稍微比显式MPC的性能。
引用
[1]a Bemporad和e·莫斯卡”,实现硬约束的不确定线性系统通过引用管理”自动化,34卷,不。4、451 - 461年,1998页。
bdclose (mdl)