上车倒立摆的明确MPC控制

本例使用的显式模型预测控制器(MPC明确)来控制在手推车上的倒立摆。

产品需求

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

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

摆/车大会

用于该示例的植物是下列车/摆锤组件,其中X是车的位置和THETA是摆角。

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

这家工厂是仿照在Simulink与常用块。万博1manbetx

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

控制目标

承担推车/摆锤组件下列初始条件:

  • 车是在静止X=0

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

控制目标是:

  • 车可以移动之间的新位置-1010与步骤设定点的变化。

  • 当跟踪这样的设定值变化时,上升时间应小于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工厂模型。万博1manbetx

指定线性输入和输出点

IO(1)=的LiNiO([mdlPlant'/ DF'],1,'openinput');IO(2)=的LiNiO([mdlPlant'/F'],1,'openinput');IO(3)=的LiNiO([mdlPlant“/摆和车系统”],1,'的OpenOutput');IO(4)=的LiNiO([mdlPlant“/摆和车系统”],3,'的OpenOutput');

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

opspec = operspec(mdlPlant);

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

opspec.States(1).Known = TRUE;opspec.States(1).X = 0;

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

opspec.States(3).Known = TRUE;opspec.States(3).X = 0;

使用这些指标计算的工作点。

选项= findopOptions('DisplayReport',假);OP = findop(mdlPlant,opspec,选项);

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

植物=线性化(mdlPlant,OP,IO);plant.InputName = {'DF';'F'};plant.OutputName = {'X';'THETA'};

检查线性化厂的两极。

极(厂)
ANS = 0 -11.9115 -3.2138 5.1253

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

bdclose(mdlPlant)

传统的(隐含的)MPC设计

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

植物= setmpcsignals(植物,'UD'1,'MV',2);

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

TS = 0.01;PredictionHorizo​​n = 50;ControlHorizo​​n = 5;mpcobj = MPC(植物,TS,PredictionHorizo​​n,ControlHorizo​​n);
- >“MPC”对象的“We​​ights.ManipulatedVariables”属性是空的。假设默认0.00000。- >“MPC”对象的“We​​ights.ManipulatedVariablesRate”属性是空的。假设默认0.10000。- >“MPC”对象的“We​​ights.OutputVariables”属性是空的。假设默认1.00000。输出(S)y1和零权重输出(一个或多个)Y2

有关于我们有多少力量可以适用于车,它被指定作为调节变量硬约束的限制F

mpcobj.MV.Min = -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”对象的“Model.Disturbance”属性是空的:假设未测量输入干扰#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.Min = -20;%最大范围来自车位置xrange.Reference.Max = 20;range.ManipulatedVariable.Min = -200;range.ManipulatedVariable.Max = 200;
- >转换模型,以离散时间。- >的“MPC”对象的“Model.Noise”属性是空的。假设在每个测得的输出信道的白噪声。

生成所确定的范围的明确MPC控制器。

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

要使用Simulink中明确MPC控制器,在您的Simulink模型的明确M万博1manbetxPC控制器块对话框中指定它。

闭环仿真

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

open_system([mdlMPC'/范围'])SIM(mdlMPC)

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

从比较结果倒立摆的上车控制的隐性和显性MPC控制器按预期投放相同的性能。

讨论

需要指出的是,设计的MPC控制器有它的局限性是非常重要的。例如,如果增加一步设定变更15,摆未能在过渡期间恢复其直立位置。

为了达到同样的上升时间内的距离越长,该控制器应用更力开头的车。其结果是,摆从其直立位置由一个更大的角度位移,如60度。在这样的角度,该植物动力学显著从在获得的LTI预测模型不同THETA=0。其结果是,在植物的行为的预测误差超过什么内置MPC鲁棒性就可以搞定,而控制器无法正确执行。

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

mpcobj.OV(2).Min = -pi / 2;mpcobj.OV(2)最大= pi / 2之间;mpcobj.Weights.ECR = 100;

然而,与这些新的控制器的设置,它是不再可能所需要的上升时间内到达更远的距离。换句话说,控制器的性能被牺牲以避免违反的软输出的约束。

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

关闭Simulink万博1manbetx模型。

bdclose(mdlMPC)

相关话题