倒立摆的上车增益调度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

控制目标是:

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

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

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

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

选择有收益计划的MPC

倒立摆的上车控制,一个MPC控制器能够将车移动到新位置-10到10之间。但是,如果提高一步设定更改为15,摆未能在过渡期间恢复其直立位置。

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

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

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

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

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

控制结构

对于这个例子,使用单个MPC控制器:

  • 一个操纵变量:变力F

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

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

mdlMPC =“mpc_pendcartGSMPC”;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');

创建以下三个操作点的规范,其中小车和钟摆都是固定的:

  • 摆在80度,指向右(THETA=-4 * PI / 9

  • 摆直立(THETA=0

  • 钟摆在80度,指向左边(THETA=4 * PI / 9

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

创建工作点的规范。

opspec(CT)= operspec(mdlPlant);

第一种状态是车位置X

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

第二种状态是小车速度x_dot(不是稳态)

opspec(CT).States(2).SteadyState = FALSE;

第三状态是摆角THETA

opspec(CT).States(3).Known = TRUE;opspec(CT).States(3)·X =角度(CT);

第四种状态是角速度theta_dot(不是稳态)

opspec(CT).States(4).SteadyState = FALSE;
结束

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

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

求出在指定工作点处的线性工厂模型。

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

多MPC设计

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

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

得到一个工厂模型。

植物=植物(:,:,CT);plant.InputName = {'DF';“F”};工厂。OutputName = {“x”;“θ”};

该厂有两个输入端,DFF,和两个输出端,XTHETA。在这个例子中,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).X];mpcobj.Model.Nominal.X = [0; 0; opresult(CT).States(3).X; 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和第二权重与角度相关联THETA

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

将MPC控制器保存到MATLAB工作区。

assignin ('基础'['MPC'num2str(CT)],mpcobj);
结束mpcverbosity(状态);

闭环仿真

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

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.

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

关闭仿真软件金宝app模型。

bdclose (mdlMPC)

也可以看看

相关话题