主要内容

Gain-Scheduled MPC控制倒立摆的车

这个示例使用gain-scheduled模型预测控制器控制一个倒立摆车。

摆/车总成

工厂对于这个示例如下车/摆大会,在哪里x车位置和吗θ摆角。

该系统由一个变量力控制F在购物车。控制器需要保持摆直立而将车移动到一个新的职位或摆向前推动的脉冲干扰dF应用于倒立摆的上端。除非另有规定,单位是米千克秒制。

这种植物是建模与仿真软件常用的块。万博1manbetx

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

控制目标

假设以下初始条件的车/摆组装:

  • 购物车是静止的x=0

  • 倒立摆是固定在直立位置θ=0

控制目标是:

  • 购物车可以移动到一个新的位置-15年15度与定位点一步变化。

  • 跟踪这样的选点变化时,上升时间应小于4秒(性能)和应小于过头了5百分比(鲁棒性)。

  • 当一个脉冲干扰的大小2应用于钟摆,购物车应该返回到原来位置的最大位移1。钟摆还应该回到位置角度位移峰值的正直的人15度(0.26弧度)。

直立的位置为倒立摆是一种不稳定的平衡,使控制更有挑战性的任务。

Gain-Scheduled MPC的选择

一个倒立摆车的控制,一个单一的MPC控制器能够将车移到一个新职位-10和10之间。然而,如果你增加一步选点改变15,钟摆未能恢复直立位置在过渡。

到达距离在同一上升时间越长,控制器适用于更大的力的车开始。因此,摆流离失所的直立位置等更大的角度60度。在这样的角度,植物动力学LTI预测模型获得的显著差异θ=0。结果,预测植物中的错误行为超过内置的MPC鲁棒性可以处理,和控制器无法正常执行。

避免钟摆下降一个简单的解决方法是通过添加软限制摆位移输出约束θ和减少ECR重量(从默认值1 e5 100)进一步软化输出约束。

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

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

把车移到新位置在-15年和15之间,同时保持相同的上升时间,控制器需要更精确的模型在不同的角度,为更好地预测控制器可以使用它们。Gain-scheduled MPC可以解决非线性控制问题,设计多个MPC控制器在不同的操作点和在运行时它们之间的切换。

控制结构

对于这个示例,使用gain-scheduled MPC控制器:

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

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

  • 一个无边无际的干扰:脉冲干扰dF

mdlMPC =“mpc_pendcartGSMPC”;open_system (mdlMPC)

在每个控制区间,一维查找表块接收输入的测量值θ从植物,并选择特定的控制器的索引(在候选人MPC控制器)设计的操作点θ靠近观察。然后选择控制器计算操纵变量的最优值为当前观察植物输出。

虽然车速度x_dot和摆角速度theta_dot可从植物模型,使设计更现实的情况下,他们被排除在外是MPC测量。

虽然购物车定位点位置变化(阶跃输入),摆角选点是常数(0=直立位置)。

线性植物模型

因为MPC控制器需要一个线性定常(LTI)预测模型,线性化模型植物模型在三个不同的操作点。万博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 * 4π/ 9 0 *π/ 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。最小值= -200;mpcobj.MV。Max = 200;

是一种很好的做法规模工厂设计重量之前输入和输出。在本例中,由于被控变量的范围大于装置输出的范围由两个数量级,规模由100 MV的输入。

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

更新输出扰动模型。

disturbance_model = getoutdist (mpcobj);setoutdist (mpcobj“模型”,disturbance_model * 10);

保存对MATLAB MPC控制器工作区。

assignin (“基地”,(“货币政策委员会”num2str (ct)], mpcobj);
结束mpcverbosity(状态);

闭环仿真

验证货币政策委员会设计的闭环仿真模型。万博1manbetx

open_system ([mdlMPC/范围的])sim (mdlMPC)
- - >将模型转换为离散时间。- - >”模型。噪音”是空的。假设白噪声在每个测量输出。- - >将模型转换为离散时间。- - >”模型。噪音”是空的。假设白噪声在每个测量输出。- - >将模型转换为离散时间。- - >”模型。Noise" is empty. Assuming white noise on each measured output. -->Converting model to discrete time. -->"Model.Noise" is empty. Assuming white noise on each measured output.

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

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

bdclose (mdlMPC)

另请参阅

功能

对象

相关的例子

更多关于