主要内容

在购物车上获得预定的MPC控制倒立的倒置

此示例使用增益计划的模型预测控制器来控制推车上的反相摆列。

产品要求

这个例子需要Simulink®Control万博1manbetx Design™软件通过线性化非线性Simulink模型来定义MPC结构。

如果~ mpcchecktoolboxinstalled ('slcontrol') disp (“万博1manbetx需要Simulink控制设计来运行这个例子。”返回结束

摆/车总成

这个例子的工厂是下面的推车/摆总成,其中x推车的位置是和吗θ为摆角。

通过施加变量来控制该系统F在购物车。当小车移动到一个新的位置或当钟摆被冲量干扰向前推时,控制器需要保持钟摆直立dF施加在倒摆的上端。

该工厂以Simulink为模拟的常用块。万博1manbetx

mdlPlant =“mpc_pendcartPlant”;load_system mdlPlant open_system ([mdlPlant“/摆车系统”],“力”

控制目标

假设购物车/摆动组件的以下初始条件:

  • 马车停在原地不动x0

  • 倒立摆在直立的位置是静止的θ0

控制目标是:

  • 车可以移动到一个新的位置之间-15年15有一个步骤设置改变。

  • 当跟踪这样的设定值变化时,上升时间应小于4秒(为性能考虑),超调量应小于5百分比(适用于鲁棒性)。

  • 当脉冲扰动的大小为2,小车应返回到其原始位置,最大位移1.钟摆也应恢复到直立位置,最大角位移为15度(0.26弧度)。

倒立摆的直立位置是一个不稳定的平衡,这使得控制任务更具挑战性。

增益计划MPC的选择

小车上倒立摆的控制在美国,一个MPC控制器可以将小车移动到-10到10之间的新位置。然而,如果您将步长设定点增加到15,那么在过渡期间,钟摆无法恢复其垂直位置。

为了在相同的上升时间内达到较长的距离,控制器在开始时对小车施加较大的力。结果,钟摆从它的直立位置被移出一个更大的角度,如60度。在这样的角度下,植物动态与在θ0.结果,对对象行为的预测误差超过了内置MPC鲁棒性所能处理的范围,控制器无法正常运行。

一个简单的解决方法是通过添加软输出约束来限制摆的位移θ减少约束软化时的ECR重量。

mpcobj.OV(2)。Min = -π/ 2;mpcobj.OV(2)。Max =π/ 2;mpcobj.Weights.ECR = 100;

然而,使用这些新的控制器设置,它不再可能在所需的上升时间内达到更长的距离。换句话说,为了避免违背软输出约束,牺牲了控制器的性能。

为了在保持相同上升时间的情况下将小车移动到-15到15之间的新位置,控制器需要在不同角度有更精确的模型,以便控制器更好地利用它们进行预测。增益调度MPC允许您解决非线性控制问题,设计多个MPC控制器在不同的操作点,并在运行时切换它们。

控制结构

对于此示例,请使用单个MPC控制器:

  • 一个操纵变量:可变力F

  • 两个测量输出:推车位置x和摆角θ

  • 一种无法测量的干扰:脉冲干扰dF

mdlmpc =“mpc_pendcartGSMPC”;open_system (mdlMPC)

虽然车速度X_DOT.和摆角速度theta_dot是可从工厂模型,使设计情况更现实,他们被排除作为MPC测量。

当小车位置设定值变化时(阶跃输入),摆角设定值不变(0=直立位置)。

线性植物模型

由于MPC控制器需要一个线性时不变(LTI)对象模型来进行预测,因此在三个不同的工作点对Simulink对象模型进行线性化。万博1manbetx

指定线性化输入和输出点

IO(1)= Linio([mdlplant' / dF '],1,“openinput”);io (2) = linio ([mdlPlant“楼”],1,“openinput”);io (3) = linio ([mdlPlant“/摆车系统”],1,“openoutput”);io (4) = linio ([mdlPlant“/摆车系统”), 3,“openoutput”);

创建以下三个操作点的规格,其中车和摆都是静止的:

  • 钟摆处于80度,指向右侧(θπ/ 4 * 9

  • 钟摆竖直(θ0

  • 钟摆80度,指向左边(θπ/ 4 * 9

角度= [-4*pi/9 0 4*pi/9];ct = 1:长度(角度)

创建工作点规范。

opspec (ct) = operspec (mdlPlant);

第一种状态是购物车位置x

opspec (ct) .States(1)。知道= true;opspec (ct) .States(1)。x = 0;

第二种状态是车的速度X_DOT.(非稳定状态)。

opspec (ct) .States(2)。稳态= false;

第三种状态是摆角θ

opspec (ct) .States(3)。知道= true;opspec (ct) .States(3)。x =角(ct);

第四种状态是角速度theta_dot(非稳定状态)。

opspec (ct) .States(4)。稳态= false;
结束

使用这些规格计算工作点。

选择= findopOptions (“DisplayReport”、假);[op, opresult] = findop (mdlPlant、opspec选项);

在指定的操作点获取线性植物模型。

植物=线性化(op, mdlPlant io);
bdclose (mdlPlant)

多个MPC的设计

在每个工作点,用相应的线性对象模型设计MPC控制器。

状态= mpcverbosity (“关闭”);ct = 1:长度(角度)

获得一个植物模型。

=植物(:,:,ct);工厂。在putName = {“dF”“F”};工厂。OutputName = {“x”“θ”};

植物有两个输入,dFF,和两个输出,xθ.在这个例子中,dF被指定为MPC控制器用于预测的不可测干扰。设置植物信号类型。

植物= setmpcsignals(植物,'ud', 1“mv”2);

为了控制不稳定的设备,控制器的采样时间不能太大(抗扰性差)或太小(计算负荷过大)。同样,预测范围不能太长(电站不稳定模式将占主导地位)或太短(违反约束将不可预见)。在这个例子中使用以下参数:

t = 0.01;PredictionHorizon = 50;ControlHorizon = 5;mpcobj = mpc(植物、Ts、PredictionHorizon ControlHorizon);

根据工作点指定标称输入和输出值。

mpcobj.Model.Nominal.Y = [0; opresult (ct) .States(3)方式);mpcobj.Model.Nominal.X = [0, 0; opresult (ct) .States(3)方式;0];mpcobj.Model.Nominal.DX = [0; opresult (ct) .States (2) .dx; 0; opresult (ct) .States (4) .dx);

我们可以对小车施加多大的力是有限制的,它被指定为操纵变量的硬约束F

mpcobj.MV.Min = -200;mpcobj.MV.Max = 200;

在设计重量之前,按比例计算工厂的投入和产出是一个很好的做法。在这种情况下,由于被操纵变量的范围比设备输出的范围大两个数量级,将输入的MV缩放100。

mpcobj.MV.ScaleFactor = 100;

为了提高控制器的鲁棒性,增加权重对MV变化率的影响0.11

mpcobj.Weights.MVRate = 1;

为了达到平衡性能,调整工厂产量的权重。第一个重量与车的位置有关x第二个重量与角度有关θ

mpcobj.Weights.OV = [1.2 1];

为了实现更强的干扰抑制,通过将默认干扰模型增益乘以一个因子来增加状态估计器增益10

更新输入干扰模型。

disturbance_model = getindist (mpcobj);setindist (mpcobj“模型”, disturbance_model * 10);

更新输出干扰模型。

干扰_model = get推荐(mpcobj);setoutdist(mpcobj,“模型”, disturbance_model * 10);

保存MPC控制器到MATLAB工作空间。

assignin ('根据',['MPC'num2str (ct)], mpcobj);
结束mpcverbosity(状态);

闭环仿真

在Simulink中进行闭环仿真验证MPC设计。万博1manbetx

open_system ([mdlMPC/范围的]) sim (mdlMPC)
- >将模型转换为离散时间。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量的输出通道上的白噪声。- >将模型转换为离散时间。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量的输出通道上的白噪声。- >将模型转换为离散时间。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量的输出通道上的白噪声。- >将模型转换为离散时间。 -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

在非线性仿真中,所有控制目标均成功实现。

关闭仿真软件万博1manbetx模型。

bdclose (mdlMPC)

另请参阅

相关话题