目錄
一、背景
二、工具
三、執行個體
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版本号,我看到了會發過去。
覺得對你有用的話,可以點贊、關注我哦,不定時分享自己學的小技巧。