主要内容

具有对未测量输出约束的直流伺服电机的显式MPC控制

这个例子展示了如何使用显式MPC控制直流伺服机构在电压和轴扭矩约束下。

有关使用传统隐式MPC的类似示例,请参见具有输出量约束的直流伺服电机

定义直流伺服电机型号

线性开环动态模型定义为植物.多变的TAU是要用作输出约束的最大可接受扭矩。

(植物、τ)= mpcmotormodel;

指定MPC控制器的输入和输出信号类型。第二个输出,扭矩,是无法测量的。

植物= setmpcsignals(植物,“MV”,1,'莫',1,'uo',2);

指定的约束

操纵变量被限制在+/- 220伏之间。由于工厂的输入和输出是不同数量级的,您还可以使用比例因子来促进MPC的调整。标度因子的典型选择是上限/下限或操作范围。

MV =结构(“最小值”, -220,“马克斯”,220,“ScaleFactor”, 440);

为了限制显式MPC设计的复杂性,仅在前三个预测步骤中施加扭矩输出约束。

ov = struct(“最小值”,{正无穷,τ,τ;τ;负)},“马克斯”,{正无穷,τ;τ,τ;正]},“ScaleFactor”,{2 * pi,2 * tau});

指定优化权重

控制任务是使角位置的跟踪偏移量为零。由于您只有一个操纵变量,轴扭矩可以通过将其权重设置为零而在其约束范围内浮动。

重量=结构(“MV”,0,'mvrate', 0.1,'ov', 0.1 [0]);

创建MPC控制器

使用采样时间创建MPC控制器Ts,预测地平线p,控制视界

ts = 0.1;p = 10;m = 2;MPCOBJ = MPC(植物,TS,P,M,重量,MV,OV);

生成显式MPC控制器

显式MPC执行由传统的隐式MPC控制器定义的MPC控制法的等效显式分段仿射版本。要从隐式MPC控制器生成显式MPC控制器,必须指定每个控制器状态,参考信号,操纵变量和测量干扰的范围,以便在这些范围定义的参数集中解决了多参数二次编程问题.

创建一个范围结构,您可以随后为每个参数指定范围。

范围= generateExplicitRange (mpcobj);
- >将模型转换为离散时间。假设没有添加到测量的输出通道#1中的干扰。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量的输出通道上的白噪声。

指定控制器状态的范围

MPC控制器状态包括来自植物模型,扰动模型和噪声模型的状态。设置状态变量的范围有时难以在状态不对应于物理参数时困难。在这种情况下,要收集状态范围数据,建议使用具有典型参考和干扰信号的多个开环工厂模拟。

range.State.Min (,) = -1000;range.State.Max (,) = 1000;

通常,您知道在工厂中标称工作点使用的参考信号的实际范围。用于生成显式MPC控制器的范围必须至少与实际范围一样大。请注意,扭矩参考范围是固定的0因为它具有零重量。

Range.Reference.min = [-5; 0];Range.Reference.max = [5; 0];

如果被限制的被限制,则用于生成显式MPC控制器的范围必须至少与这些限制一样大。

range.ManipulatedVariable.Min = MV。分钟- 1;range.ManipulatedVariable.Max = MV。Max + 1;

使用指定的范围创建显式MPC控制器。

mpcobjexplicit = generateexplicitmpc(mpcobj,范围)
发现/未开拓的地区:75/0明确MPC控制器  --------------------------------------------- 控制器样品时间:0.1(秒)多面区域:75数量的参数:6是解决方案简化:没有状态估计:默认卡尔曼增益  --------------------------------------------- “mpcobjExplicit类型。为原始的隐式MPC设计。“mpcobjExplicit类型。'的有效参数范围。“mpcobjExplicit类型。OptimizationOptions'用于多参数QP计算的选项。“mpcobjExplicit类型。piecewiseaffinsolution '的区域和增益在每个解决方案。

情节分段仿射分区

你可以回顾任何由显式MPC控制律定义的分段仿射划分的二维部分。为此,首先创建一个参数结构,您可以在其中指定要绘制哪个2-D区域。

params = generatePlotParameters (mpcobjExplicit);

在此示例中,将第一状态变量绘制对第二状态变量。所有其他参数必须以各自范围内的值固定。

修复其他状态变量。

params.State.Index = [3 4];params.State.Value = [0 0];

修复参考信号。

params.Reference.Index = [1 2];params.Reference.Value = [pi 0];

解决操纵变量。

params.ManipulatedVariable.Index = 1;params.ManipulatedVariable.Value = 0;

绘制指定的二维剖面。

plotSection (mpcobjExplicit params);轴([-。3.3 -2 -2]);网格标题(分区的部分(x3 (t) = 0 x4 (t) = 0, u (t - 1) = 0, r (t) =π)”)Xlabel(“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”对象的“Model.Noise”属性为空。假设每个测量的输出通道上的白噪声。

仿真结果是相同的。

流('隐式和显式MPC轨迹之间的区别=%g \ n'规范(u2-u1) +规范(y2-y1));
隐式和显式MPC轨迹之间的差异= 4.60623E-12

使用仿真软件模拟金宝app

要运行此示例,需要Simulink®。金宝app

如果~ mpcchecktoolboxinstalled (“金宝app模型”)disp(运金宝app行这个示例需要Simulink(R)。返回结束

模拟Simulink中线性植物模型的闭环控制。金宝app显式MPC控制器块配置为使用mpcobjexpreic作为控制器。

mdl =“empc_motor”;open_system (mdl) sim (mdl)

闭环响应与设计的传统MPC控制器相同具有输出量约束的直流伺服电机

次最优显式MPC控制

要减少内存足迹,可以使用简化减少分段仿射解决方案区域的数量的功能。例如,您可以删除Chebyshev Radius小于的区域0.08.但是,您支付的价格是控制器性能是次优。

mpcobjexplicitsimplificed = simplify(mpcobjexplicitic,“半径”, 0.08)
要分析的区域:75/ 75——>删除37个区域。明确的MPC控制器  --------------------------------------------- 控制器样品时间:0.1(秒)多面区域:38号参数:6是解决方案简化:是的状态估计:默认卡尔曼增益  --------------------------------------------- “mpcobjExplicitSimplified类型。为原始的隐式MPC设计。“mpcobjExplicitSimplified类型。'的有效参数范围。“mpcobjExplicitSimplified类型。OptimizationOptions'用于多参数QP计算的选项。“mpcobjExplicitSimplified类型。piecewiseaffinsolution '的区域和增益在每个解决方案。

分段仿射区的数量已减少。

比较了次优显式MPC和显式MPC的闭环仿真结果。

[Y3,T3,U3] = SIM(MPCobjExplicitsimplified,TF,R);
- >将模型转换为离散时间。假设没有添加到测量的输出通道#1中的干扰。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量的输出通道上的白噪声。

模拟结果是不一样的。

流(精确和次优显式MPC轨迹之间的差异= %g\n'规范(u3-u2) +规范(y3-y2));
精确和次优显式MPC轨迹之间的差异= 439.399

情节结果。

图次要情节(3、1、1)的阴谋(t1, y1 (: 1), t3、y3 (: 1),“o”)网格标题(“角(rad)”)传说(“明确”'次优显式'次要情节(3、1、2)情节(t1, y1 (:, 2), t3、y3 (:, 2),“o”)网格标题('扭矩(nm)')传说(“明确”'次优显式')子图(3,1,3)绘图(T1,U1,T3,U3,“o”)网格标题(“电压(V)”)传说(“明确”'次优显式'

使用次优显式MPC的仿真结果略差。

参考文献

[1] A. Bemporad和E. Mosca,“通过引用管理实现不确定线性系统中的硬约束”自动第34卷第3期4、1998年。

BdClose(MDL)

相关的话题