主要内容

明确的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控制器,您必须为每个控制器状态指定范围,参考信号,操纵变量和测量的干扰。这样做确保了二次规划问题是解决这些定义的空间范围。如果在运行时其中一个独立变量超出它的范围,控制器返回一个错误状态和操纵变量设置为他们最后的值。因此,重要的是,你不要低估这些范围。

生成合适的范围,获得一些信息在控制器状态。

显示输入和输出扰动模型的大小

控制器的输入和输出扰动模型,使用getindistgetoutdist,分别。

大小(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)

相关的话题