目录
一、背景
二、工具
三、实例
3.1 建立被控对象模型
3.2 搭建SIMULINK模型
3.3 编写.m文件(已经注释了)
3.4 运行.m文件,会自动运行.mdl文件,可以查看结果
3.5 同时运行2个以上控制器
PS:需要源程序的在评论区留下邮箱和MATLAB版本号
一、背景
要用模型预测控制(MPC)做算法的对比实验,发现写纯.m文件有点麻烦,毕竟我不深入原理,于是用MATLAB/SIMULINK自带的MPC controller模块,真是太节省时间了。MPC需4个模块:被控对象的数学模型、预测模型、优化算法以及矫正反馈。使用自带的MPC control模块的话,只需要知道被控对象的数学模型就行了。下面用一个实例进行介绍。
二、工具
①SIMULINK模型
②.m文件
②我的版本:MATLAB2020a
三、实例
3.1 建立被控对象模型
被控对象为双积分系统,即被控对象是两个电容并联
3.2 搭建SIMULINK模型

SIMULNK仿真
模型设置
3.3 编写.m文件(已经注释了)
clc
plant = tf(1,[1 0 0]);
%% 设置mpc控制器
%采样时间
Ts = 0.1;
%预测范围
p = 10;
%控制范围
m = 3;
% MPC控制器
mpcobj1 = mpc(plant, Ts, p, m);%写入MPC控制器的名字
% mpcobj2 = mpc(plant, Ts, p, m);
%限制控制器的输出
mpcobj1.MV = struct('Min',-1,'Max',1);
% mpcobj2.MV = struct('Min',-1,'Max',1);
%% 打开搭建好的simulink模型
mdl = 'model';%.mdl文件的名字
open_system(mdl);
sim(mdl);
3.4 运行.m文件,会自动运行.mdl文件,可以查看结果
运行结果
3.5 同时运行2个以上控制器
有的人可能会问了,怎么运行两个以上的控制器呢?比如下图:
仿真模型
只需要把.m文件修改这样即可:
% MPC控制器
mpcobj1 = mpc(plant, Ts, p, m);
mpcobj2 = mpc(plant, Ts, p, m);
%限制控制器的输出
mpcobj1.MV = struct('Min',-1,'Max',1);
mpcobj2.MV = struct('Min',-1,'Max',1);
记得,要把MPC控制器中的变量名字也对应替换,结果如下所示:
仿真结果
PS:
有什么问题,留言在评论区即可,看见后会回复。
需要源程序就在评论区留下邮箱和MATLAB版本号,我看到了会发过去。
觉得对你有用的话,可以点赞、关注我哦,不定时分享自己学的小技巧。