主要内容

车上倒立摆的时变MPC控制

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

产品要求

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

如果~mpcchecktoolbox已安装(“金宝appsimulink”) disp ('金宝app运行此示例需要Simulink(R)。')返回终止

摆锤/小车组件

本示例中的工厂为以下摆锤/小车组件,其中Z推车的位置是和吗西塔为摆角。

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

控制目标

假设摆锤/小车组件具有以下初始条件:

  • 马车停在原地不动Z=0

  • 倒立摆固定在直立位置西塔=0

控制目标是:

  • 车可以移动到一个新的位置之间-2020随着阶跃设定点的改变。

  • 跟踪此类设定点变化时,上升时间应小于4秒(性能),超调量应小于10百分比(鲁棒性)。

  • 当脉冲扰动的大小为4.当应用于摆时,小车和摆应以较小的位移回到原来的位置。

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

时变MPC的选择

手推车上倒立摆的控制,单个MPC控制器能够将购物车移动到-1010.然而,如果您增加步骤设置更改为20,摇锤在转换过程中无法恢复其垂直位置。

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

为了避免摆的下落,一个简单的解决方案是通过添加软输出约束来限制摆的位移西塔减少约束软化的ECR权重。

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

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

把车移到一个新的位置-2020在保持相同上升时间的同时,控制器需要在不同角度具有更精确的模型,以便控制器能够使用它们进行更好的预测。自适应MPC允许您通过在运行时更新线性时变对象模型来解决非线性控制问题。

控制结构

在本例中,使用单个LTV MPC控制器:

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

  • 两个测量输出:车的位置Z和摆角西塔

mdlMPC =“mpc_pendcartLTVMPC”开放式系统(mdlMPC);

由于所有设备状态都是可测量的,因此它们直接用作自适应MPC块中的自定义估计状态。

当小车位置设定值变化时(阶跃输入),摆角设定值不变(0=直立位置)。

线性时变植物模型

在每个控制间隔,LTV MPC需要从当前时间开始的每个预测步骤的线性电厂模型K按时k + p,在那里P这是预测范围。

在这个例子中,车和摆的动力系统被描述为第一原理模型。该模型由一组微分和代数方程(DAEs)组成,定义为pendulumCT函数。有关详细信息,请参阅

这个连续的线性化电路Simulink模型中的块金宝app在运行时生成LTV模型。在每个预测步骤中,该块获得状态空间矩阵A.,B,C,D使用连续时间的雅可比矩阵,然后将其转换为离散时间值。直接从对象测量初始对象状态x(k)。对象输入序列包含MPC控制器在前一个控制间隔内生成的最佳移动。

自适应MPC设计

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

x0 = 0 (4,1);情况= 0 (1,1);

使用ODE解析地获得线性植物模型。

[~,~,A,B,C,D]=摆(x0,u0);植物=ss(A,B,C([13],:),D([13],:);位置和角度百分比

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

t = 0.01;PredictionHorizon = 60;ControlHorizon = 3;

创建MPC控制器。

mpcobj = mpc(汇集(植物、Ts), Ts, PredictionHorizon, ControlHorizon);
- - - >“权重。mpc对象的操纵变量属性为空。假设默认的0.00000。- - - >“权重。mpc对象的操控变量率属性为空。假设默认的0.10000。- - - >“权重。mpc对象的属性为空。假设默认的1.00000。对于输出(s) y1和输出(s) 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];

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

设置区(mpcobj、,“模型”[0;tf(1)];

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

setEstimator(mpcobj,“习俗”);

闭合环路模拟

在Simulink中进行闭环仿真验证MPC设计。金宝app

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

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

bdclose(mdlMPC);

另见

相关的话题