明确的MPC控制倒立摆上购物车

本例使用显式模型预测控制器(显式MPC)来控制购物车上的倒立摆。

产品要求

这个例子需要的Simulink控制设计™软件金宝app通过线性化非线性Simulink模型来定义MPC结构。

如果〜mpcchecktoolboxinstalled(“slcontrol”)disp (运金宝app行此示例需要Simulink控件设计。返回结束

摆/车大会

本例中的工厂是如下的cart/钟摆组装,其中X手推车的位置和THETA是摆角。

这个系统是通过施加一个可变的力来控制的F上车。该控制器需要保持直立摆在移动车到一个新的位置,还是钟摆由脉冲干扰向前轻推DF应用于倒立摆的上端。

这个设备在Simulink中使用常用的模块进行建模金宝app。

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

控制目标

假设小车/钟摆组件的初始条件如下:

  • 大车停在X=0

  • 倒立摆处于直立位置固定THETA=0

控制目标是:

  • 购物车可以移动到一个新的位置之间-10年10通过改变步长设定值。

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

  • 的脉冲扰动时2应用于摆锤时,小车应以最大位移为1。摆也应恢复到垂直位置,最大位移角为15度(0.26弧度)。

立摆是倒立摆的一种不稳定平衡,使控制任务更具挑战性。

控制结构

在这个例子中,使用一个单一的MPC控制器:

  • 一个操纵变量:变力F

  • 两个测量输出:购物车位置X和摆角THETA

  • 一个未测量的干扰:干扰脉冲DF

mdlMPC =“mpc_pendcartExplicitMPC”;open_system (mdlMPC)

虽然车速度x_dot和摆角速度theta_dot都可以从工厂模型中获得,为了使设计案例更真实,它们被排除在MPC测量之外。

当小车位置设定值变化(步长输入)时,摆角设定值为常数(0=直立位置)。

线性植物模型

由于MPC控制器需要线性时不变(LTI)模型来进行预测,所以在初始操作点对Simulink模型进行线性化。金宝app

指定线性化输入和输出点

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');

创建工厂初始条件下工作点的规范。

opspec = operspec (mdlPlant);

第一种状态是车位置X,初始状态已知为0。

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

第三状态是摆角THETA,初始状态已知为0。

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

使用这些规范计算操作点。

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

获得在指定的工作点的线性设备模型。

植物=线性化(mdlPlant,OP,IO);plant.InputName = {'DF';“F”};工厂。OutputName = {“x”;“θ”};

检查线性化厂的两极。

极(植物)
ANS = 0 -11.9115 -3.2138 5.1253

该厂有积分和不稳定的极点。

bdclose(mdlPlant)

传统(隐式)MPC设计

该厂有两个输入端,DFF,和两个输出端,XTHETA。在这个例子中,DF被指定为MPC控制器用于更好地抑制干扰的未测量干扰。设置植物信号类型。

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

为了控制不稳定的植物,控制器采样时间不能过大(抗扰差)或过小(过大的计算负荷)。同样,预测跨度不能太长(植物不稳定的模式将主导)或过短(违反约束将是无法预料的)。使用这个例子以下参数:

t = 0.01;PredictionHorizon = 50;ControlHorizon = 5;mpcobj = mpc(植物、Ts、PredictionHorizon ControlHorizon);
- - >“权重。“mpc”对象的“操纵变量”属性为空。假设默认的0.00000。- - >“权重。操作“mpc”对象的“variablesrate”属性为空。假设默认的0.10000。- - >“权重。“mpc”对象的“OutputVariables”属性为空。假设默认的1.00000。对于输出y1和输出y2的零权重

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

mpcobj.MV。最小值= -200;mpcobj.MV。Max = 200;

这是设计的权重之前很好的做法规模的工厂输入和输出。在这种情况下,由于受操纵变量的范围小于由两个数量级的植物输出的范围时,通过100缩放MV输入。

mpcobj.MV。ScaleFactor = 100;

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

mpcobj.Weights。MVRate = 1;

为了达到平衡的性能,调整工厂输出的权重。第一个重量与购物车位置相关X和第二权重与角度相关联THETA

mpcobj.Weights。OV = [1.2 1];

为了实现更积极的抗扰,由倍默认扰动模型的收益乘以增加的状态估计增益10

更新输入干扰模型。

disturbance_model = getindist (mpcobj);setindist (mpcobj'模型',disturbance_model * 10);
——将模型转换为离散时间。- - >”模型。“mpc”对象的扰动属性为空:假设未测输入扰动#1为集成白噪声。假设测量输出通道#1没有增加干扰。——>假设测量输出通道#2的输出干扰为集成白噪声。- >的“MPC”对象的“Model.Noise”属性是空的。假设在每个测得的输出信道的白噪声。

更新输出干扰模型。

disturbance_model = getoutdist (mpcobj);setoutdist (mpcobj'模型',disturbance_model * 10);
——将模型转换为离散时间。假设测量输出通道#1没有增加干扰。——>假设测量输出通道#2的输出干扰为集成白噪声。- >的“MPC”对象的“Model.Noise”属性是空的。假设在每个测得的输出信道的白噪声。

明确MPC代

一个简单的隐式MPC控制器,而不需要在运行时约束或体重变化,可以被转换成具有相同的控制性能的显式MPC控制器。使用明确的MPC的主要优点是它避免了实时优化,因此,适合于那些需要快速采样时间的工业应用。代价是,明确MPC具有较高的内存占用,因为所有的可行域最佳的解决方案离线预先计算和存储运行时访问。金宝搏官方网站

为了产生从隐式MPC控制器显式MPC控制器,定义范围为参数,例如设备状态,引用和操纵变量。这些范围应涵盖哪些植物和控制器的设计,给你最好的知识的操作空间。

范围= generateExplicitRange(mpcobj);range.State.Min(:) = -20;%最大范围来自车位置xrange.State.Max (:) = 20;range.Reference。最小值= -20;%最大范围来自车位置xrange.Reference。Max = 20;range.ManipulatedVariable。最小值= -200;range.ManipulatedVariable。Max = 200;
——将模型转换为离散时间。- >的“MPC”对象的“Model.Noise”属性是空的。假设在每个测得的输出信道的白噪声。

为定义的范围生成显式MPC控制器。

mpcobjExplicit = generateExplicitMPC (mpcobj、范围);
区域发现/未知:92/0

要在Simulink中使用显式MPC控制器,请在Simulink模型中的显式金宝appMPC控制器块对话框中指定它。

闭环仿真

用Simulink中的闭环仿真验证了MPC的设计。金宝app

open_system ([mdlMPC/范围的])sim (mdlMPC)

在非线性模拟,所有的控制目标顺利实现。

的结果进行比较倒立摆的上车控制,隐式和显式MPC控制器提供了预期的相同性能。

讨论

需要指出的是,所设计的MPC控制器有其局限性。例如,如果将步骤设置点更改为15,摆未能在过渡期间恢复其直立位置。

为了在相同的上升时间内达到更长的距离,控制器在开始时对小车施加更大的力。结果,钟摆被一个更大的角度所取代60度。在这样的角度下,植物动力学与在时刻得到的LTI预测模型有显著的差异THETA=0。结果,预测植物行为的误差超过了内置MPC鲁棒性所能处理的范围,控制器也无法正常运行。

一个简单的解决办法,以避免摆下降是通过将软输出约束来限制摆位移THETA和减少对约束软化的ECR重量。

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

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

为了在相同的上升时间内达到更长的距离,控制器需要更精确的不同角度的模型来提高预测精度。另一个例子在购物车中倒立摆的MPC控制演示如何使用增益调度MPC实现更长的距离。

关闭Simulink金宝app模型。

bdclose (mdlMPC)

相关的话题