文件

时变植物的时变MPC控制

这个例子展示了模型预测控制工具箱™如何使用时变预测模型来实现更好的性能,当控制时变设备时。

对以下MPC控制器进行了比较:

  1. 基于时间不变平均模型的线性MPC控制器

  2. 基于时间不变模型的线性MPC控制器,其在每个时间步骤更新。

  3. 基于时变预测模型的线性MPC控制器。

时变线性植物

在该示例中,该工厂是单输入单输出3RD订单时变线性线性线性系统,具有磁极,零和增益随时间周期性而变化。

植物杆在运行时在稳定和不稳定之间移动,这导致有挑战性的控制问题。

生成一系列植物模型T.=0.0.10.2,......,10秒。

模型=特遣部队;ct = 1;为了t = 0:0.1:10模型(:,:,ct) =特遣部队([5 5 + 2 * cos (2.5 * t)],[1 3 2 6 +罪(5 * t)]);Ct = Ct + 1;结尾

将模型转换为状态空间格式,并以0.1秒的采样时间离散化它们。

t = 0.1;模型= ss (c2d(模型、Ts));

MPC控制器设计

控制目标是跟踪参考信号的阶跃变化。首先,针对平均对象模型设计MPC控制器。控制器采样时间为0.1秒。

sys = ss(c2d(tf([5 5],[1 3 2 6]),Ts));%预测模型p = 3;%预测地平线m = 3;%控制地平线MPCobj = MPC(SYS,TS,P,M);
- >“MPC”对象的“权重”属性为空。假设默认为0.00000。- >“权重”属性“MPC”对象的“权重”属性为空。假设默认为0.10000。- >“MPC”对象的“权重”属性为空。假设默认为1.0万。

在操纵变量上设置硬约束并指定调整权重。

mpcobj.mv = struct('min'2,'最大限度',2);mpcobj.weights = struct('mv',0,'mvrate', 0.01,“输出”1);

将初始工厂状态设置为零。

x0 =零(尺寸(sys.b));

隐式MPC的闭环仿真

运行闭环仿真以检查设计的隐式MPC控制器是否可以在不更新预测中使用的工厂模型的情况下实现控制目标。

将模拟持续时间设置为5秒钟。

Tstop = 5;

使用MPCMOVE.命令在一个循环中模拟闭环响应。

yyMPC = [];uuMPC = [];x = x0;xmpc = mpcstate (mpcobj);fprintf('基于平均LTI模型模拟MPC控制器。\ n');为了CT = 1 :( tstop / ts + 1)买真正的植物。real_plant =模型(::,ct);%更新并存储工厂输出。y = real_plant.C * x;yyMPC = [yyMPC y];%计算和存储MPC的最佳移动。u = mpcmove (mpcobj xmpc y, 1);uuMPC = [uuMPC u];%更新工厂状态。x = real_plant。* x + real_plant.B * u;结尾
——>假设添加到测量输出通道#1的输出扰动为集成白噪声。——>”模式。没有ise" property of the "mpc" object is empty. Assuming white noise on each measured output channel. Simulating MPC controller based on average LTI model.

具有自适应MPC的闭环仿真

运行第二次仿真以检查自适应MPC控制器是否可以实现控制目标。

使用mpcmoveadaptive命令在一个循环中模拟闭环响应。更新每个控制间隔的工厂模型,并使用更新的模型计算最佳控制移动。这mpcmoveadaptive命令在整个预测范围内使用相同的预测模型。

yyampc = [];uuampc = [];x = x0;xmpc = mpcstate (mpcobj);名义= mpcobj.model.nominal;fprintf('基于LTI模型模拟MPC控制器,在每次执行步骤t。\ n');为了CT = 1 :( tstop / ts + 1)买真正的植物。real_plant =模型(::,ct);%更新并存储工厂输出。y = real_plant.C * x;yyampc = [yyampc,y];%计算和存储MPC的最佳移动。u = mpcmoveAdaptive (mpcobj xmpc real_plant,名义,y, 1);uuAMPC = [uuAMPC u];%更新工厂状态。x = real_plant。* x + real_plant.B * u;结尾
基于LTI模型的模拟MPC控制器,在每次更新步骤t。

时变MPC闭环仿真

运行第三次模拟以检查时变的MPC控制器是否可以实现控制目标。

控制器在每个控制间隔内更新预测模型,并且还使用跨预测地平线的时变模型,这使得MPC控制器在未来的最佳植物行为的知识。

使用mpcmoveadaptive命令在一个循环中模拟闭环响应。指定植物模型的数组而不是单个模型。控制器使用阵列中的每个模型在不同的预测视界步长。

yyLTVMPC = [];uuLTVMPC = [];x = x0;xmpc = mpcstate (mpcobj);共通性= repmat(名义3 1);在预测范围内名义条件是恒定的。fprintf(“基于时变型模拟MPC控制器,在每次执行时更新。\ n');为了CT = 1 :( tstop / ts + 1)买真正的植物。real_plant =模型(::,ct);%更新并存储工厂输出。y = real_plant.C * x;yyltvmpc = [yyltvmpc,y];%计算和存储MPC的最佳移动。u = mpcmoveAdaptive (mpcobj xmpc模型(:,:,ct: ct + p),共通性,y, 1);uuLTVMPC = [uuLTVMPC u];%更新工厂状态。x = real_plant。* x + real_plant.B * u;结尾
基于时变模型模拟MPC控制器,在每次步骤T时更新。

MPC控制器性能比较

比较闭环响应。

T = 0:TS:TSTOP;图形子图(2,1,1);绘图(T,YYMPC,' - 。',t,yyampc,' - ',t,yyltvmpc);网格传奇(“隐式政策委员会”“适应性政策委员会”'时变MPC'“位置”“东南”)标题('植物输出');子图(2,1,2)绘图(t,uumpc,' - 。',t,uuampc,' - 't uuLTVMPC)网格标题(“控制措施”);

只有时变MPC控制器能够使被控对象的输出足够接近期望的设定值。

Simulink中时变MPC闭环仿真金宝app

为了在Simulink中仿真时变的MPC控制,将时变的被控对象模型传递给金宝app模型Inport对Adaptive MPC控制器块。

xmpc = mpcstate (mpcobj);mdl =“mpc_timevarying”;Open_System(MDL);

运行模拟。

SIM(MDL,TSTOP);fprintf(在Simulink中基于LTV模型的MPC控制器仿真金宝app);
基于LTV模型的Simulink模拟MPC控制器。金宝app

绘制MATLAB和Simulink的时变金宝app仿真结果。

图次要情节(2,1,1)情节(t yyLTVMPC t ysim“o”);网格传奇('mpcmoveadaptive'“金宝app模型”“位置”“东南”)标题('植物输出');子图(2,1,2)绘图(T,Uultvmpc,T,USIM,“o”网格)标题(“控制措施”);

Matlab和Simulink中的闭环响应是相同的。金宝app

bdclose(mdl);

也可以看看

相关的话题

这个话题有用吗?