(.m文件与simulink文件联合)MATLAB 模型预测控制(MPC)工具箱的使用
·
目录
下载链接:
评论区留下邮箱
一、背景
要用模型预测控制(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 GUI等)、嵌入式、配电网无功优化(IEEE33、21、44节点等)等。
需要的同学私聊我~
更多推荐



所有评论(0)