目录

一、背景

二、工具

三、实例

3.1 建立被控对象模型

3.2 搭建SIMULINK模型

3.3 编写.m文件(已经注释了)

3.4 运行.m文件,会自动运行.mdl文件,可以查看结果

3.5 同时运行2个以上控制器

PS 源程序下载链接:


 


下载链接: 

评论区留下邮箱

一、背景

       要用模型预测控制(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节点等)等。

 

需要的同学私聊我~

 

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐