主要内容

推车倒立摆的时变MPC控制

本例展示了如何使用线性时变模型预测控制器(LTV MPC)控制推车上的倒立摆。

产品要求

本例需要Simulink®软件来模拟非线性摆金宝app模型。

如果~ mpcchecktoolboxinstalled (“金宝app模型”) disp (运金宝app行此示例需要Simulink (R)。返回结束

摆/车总成

本例中的设备是以下摆/推车组件,其中z推车位置和θ是摆角。

这个系统的操纵变量是一个可变的力F在推车上行动。力的范围在-100到100之间。当移动推车到新的位置或当脉冲扰动推动钟摆向前时,控制器需要保持钟摆直立dF应用于倒立摆的上端。

控制目标

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

  • 马车停在z0

  • 倒立摆在直立位置静止不动θ0

控制目标为:

  • 小车可以移动到一个新的位置之间-20年而且20.改变步长设定值。

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

  • 当一个量级的脉冲扰动4应用于摆锤时,小车和摆锤应以较小的位移恢复到原来的位置。

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

时变MPC的选择

小车上倒立摆的控制,一个MPC控制器就可以将推车移动到一个新的位置-10而且10.但是,如果将步长设定值更改为20.时,钟摆在转换过程中无法恢复直立位置。

为了在相同的上升时间内达到更长的距离,控制器在开始时对推车施加更大的力。结果,钟摆从其直立位置偏移了一个更大的角度,例如60度。在这样的角度下,植物动态与获得的LTI预测模型有显著差异θ0.结果,对植物行为的预测误差超过了内置MPC鲁棒性所能处理的范围,控制器无法正常执行。

为了避免钟摆下落,一个简单的解决方法是通过添加软输出约束来限制钟摆位移θ减小约束软化的ECR权值。

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

然而,有了这些新的控制器设置,就不可能在要求的上升时间内达到更长的距离。换句话说,为了避免违反软输出约束,牺牲了控制器的性能。

将推车移动到一个新的位置之间-20年而且20.在保持相同上升时间的同时,控制器需要在不同角度有更精确的模型,以便控制器可以使用它们进行更好的预测。自适应MPC允许您通过在运行时更新线性时变植物模型来解决非线性控制问题。

控制结构

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

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

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

mdlMPC =“mpc_pendcartLTVMPC”;open_system (mdlMPC);

因为所有的植物状态都是可测量的,所以它们直接被用作Adaptive MPC块中的自定义估计状态。

当推车位置设定值变化时(步长输入),摆角设定值是恒定的(0=直立姿势)。

线性时变植物模型

在每个控制区间,LTV MPC要求从当前时间开始的每个预测步骤都有一个线性植物模型k时间k + p,在那里p是预测视界。

在本例中,用第一性原理模型描述了车摆动态系统。该模型由一组微分方程和代数方程(dae)组成,定义在pendulumCT函数。详情请参见pendulumCT.m

连续的线性化电路块在Simulink模型中金宝app生成运行时的LTV模型。在每个预测步骤中,块获得状态空间矩阵一个BC,D使用连续时间的雅可比矩阵,然后将它们转换成离散时间的值。初始的工厂状态x(k)直接从工厂测量。植物输入序列包含MPC控制器在前一个控制区间内生成的最优动作。

自适应MPC设计

MPC控制器设计在其标称平衡工作点。

X0 = 0 (4,1);U0 = 0 (1,1);

利用ode分析得到线性植物模型。

[~,~,A,B,C,D] =摆(x0, u0);plant = ss(A,B,C([1 3],:),D([1 3],:));%位置和角度

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

Ts = 0.01;PredictionHorizon = 60;ControlHorizon = 3;

创建MPC控制器。

mpcobj = mpc(c2d(plant,Ts),Ts,PredictionHorizon,ControlHorizon);
- - - >“权重。“mpc”对象的“ManipulatedVariables”属性为空。假设默认值为0.00000。- - - >“权重。对象的“mpc”属性为空。假设默认为0.10000。- - - >“权重。mpc对象的OutputVariables属性为空。假设默认值为1.00000。对于输出y1和输出y2的零权重

对于可以施加在推车上的力有一个限制,这是通过对操纵变量使用硬约束来指定的F

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

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

mpcobj.MV.ScaleFactor = 100;

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

mpcobj.Weights.MVRate = 1;

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

mpcobj.Weights.OV = [0.6 1.2];

用增益作为摆角的输出扰动模型。这代表了短期内的快速变化。

setoutdist (mpcobj“模型”, (0; tf (1)));

使用自定义状态估计,因为所有的植物状态都是可测量的。

setEstimator (mpcobj“自定义”);

闭环仿真

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

open_system ([mdlMPC/范围的]);sim (mdlMPC)
——>”模式。mpc对象的Noise属性为空。假设每个测量输出通道上都有白噪声。

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

bdclose (mdlMPC);

另请参阅

相关的话题