1. 程式人生 > >基於多個MPC的的排程控制器

基於多個MPC的的排程控制器

1引言

本文J將對MATLAB自帶的MPC例子進行詳細剖析
MPC:Model Predictive Control Toolbox
開始設計工具:通過輸入MATLAB命令:‘mpctool’開始設計工具。
下圖1中的圖形中左側的三個欄目分別為受控物件模型(plant model)、模型預測控制器(Controllers)、模擬器(Scenarios)。
圖1.MPC工具箱
模型預測控制工具箱是一個圖形使用者介面的設計。這個GUI是控制和評估工具管理器GUI的一部分。見下圖
這裡寫圖片描述
這裡寫圖片描述
Mo(measured output):當前可測量的輸出訊號
Ref(Reference signa):參考訊號
Md(optional measured disturbance signa):可選的測量干擾訊號
Mv(optimal manipulated variables ):最優操縱變數
MPC一般通過求解一個二次規劃(這裡我們使用ord45)來計算最優操縱變數
一個簡單的例子如下圖所示:
這裡寫圖片描述

2.多個MPC排程控制器解決方案

2.1系統描述
如果你的物件模型是非線性,設計一個控制器操作在一個特定的目標地區表現優異,但可能在其他地區表現不佳。補償的常用方法是設計多個控制器,每個面向一個特定的操作條件的組合。他們之間切換實時隨著情況的變化。獲得這項技術的排程是一個傳統的例子。下面的例子顯示瞭如何協調多個模型預測控制器
該系統是由兩個物體M1和M2分別連線到兩個獨立的彈簧k1和k2組成。假定當M1和M2碰撞的時候是完全非彈性碰撞。力F對於M1來說是拉力,這是可操縱變數( manipulated variable MV)。目標是使M1的位置y1跟蹤給定參考位置r(Reference signa)。
當M1和M2分離時,M1自由地移動。發生碰撞的時候,由於是完全非彈性碰撞,所以M1 + M2一起移動。我們假設只有M1的位置和接觸感測器提供反饋。後者是用來觸發開關MPC控制器來選擇MPC1還是MPC2。在這裡,我們認為,M2的位置和速度的不可控。這這裡,我們認為右方向為正方向。如下圖這裡寫圖片描述

所示:
2.2模型引數

clear all
clc
M1=1;       % M1的質量
M2=5;       % M2的質量
k1=1;       % 彈簧k1常數k
k2=0.1;     % 彈簧k2常數k 
b1=0.3;     % 與空氣的摩擦係數,與速度成正比
b2=0.8;     % 摩擦係數
yeq1=10;    % 剛性壁1的位置 
yeq2=-10;   % 剛性壁2的位置  

2.3狀態空間模型
這裡寫圖片描述
states:M1的位置和速度
MV:推力F
MD:物體1由彈簧的需求的力F和實際給出的F之間的常量誤差,用來彌補彈簧彈力,使M在初始位置0上時,彈簧對其作用力為零。
MO:M1的位置

2.3.1當M1和M2沒有接觸時候的模型MPC1

%% 狀態空間模型
%M1M2不接觸時候的狀態模型.
A1=[0 1;-k1/M1 -b1/M1];
B1=[0 0;-1/M1 k1*yeq1/M1];
C1=[1 0];
D1=[0 0];
sys1=ss(A1,B1,C1,D1);                 %建立狀態空間表示式
sys1=setmpcsignals(sys1,'MD',2);    %第二個輸入是可測量擾動

【注】:
1.Sys = ss(a,b,c,d):用來描述連續性的狀態空間模型
2.Setmpcsignals:設定MPC受控物件的的I/0訊號模型。這個系統必須是線性時不變系統,’MD’:可測量的輸入擾動,,第二個輸入是可測量的輸入擾動。如果沒有指定的輸入變數是MV

這裡寫圖片描述
最後得出的結果:
這裡寫圖片描述

2.3.2當M1和M2連線在一起時候的模型MPC2

% 當M1和M2接觸時候的狀態模型.
A2=[0 1;-(k1+k2)/(M1+M2) -(b1+b2)/(M1+M2)];
B2=[0 0;-1/(M1+M2) (k1*yeq1+k2*yeq2)/(M1+M2)];
C2=[1 0];
D2=[0 0];
sys2=ss(A2,B2,C2,D2);
sys2=setmpcsignals(sys2,'MD',2);

2.4 Multi-MPC控制設定

%% MPC模擬引數設定
Ts=0.2;     % 取樣時間
p=20;       % 預測時域長度
m=1;        % 控制時域長度

%% 建立MPC模型
MPC1=mpc(sys1,Ts,p,m);    % 定義M1M2分離的MPC模型
% 設定限制,F的大小不能為0F斜率絕對值最大1000
MPC1.MV=struct('Min',0,'Max',Inf,'RateMin',-1e3,'RateMax',1e3);

MPC2=mpc(sys2,Ts,p,m);   %定義M1M2連線的MPC2模型
MPC2.MV=MPC1.MV;          %系統1和系統2的控制限制一樣

2.5模擬引數設定

%% 模擬引數設定
Tstop=100;             % 模擬時間
y1initial=0;           % 物體1的初始位置
y2initial=10;          % 物體2的初始位置
open_system('wc1');   % 呼叫wc1.MDL
disp('Start simulation by switching control between MPC1 and MPC2 ...');
set_param('wc1/signals','Open','On');%設定系統和模型的引數值
sim('wc1',Tstop);%開始動態系統模擬

3.Simulatink實現

Simulation框圖如下圖所示:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

The total simulation diagram上面的部分模擬兩個物體的運動,並且這種移動會在在示波器中以訊號的方式顯示出來。並且當M1的位置和加速度均大於M2的位置和加速度時,model輸出布林量true或者false;下半部分包含以下要素:
1.多個MPC控制器,。這有四個輸入:可測量輸出(mo), 參考(ref),可測量干擾(md)輸入和獨特的多個MPC控制器的功能塊switch輸入。
2.一脈衝發生器改變M1需要到達的位置 (控制器參考訊號)。此脈衝發生器的輸出是一個幅值為5的方波,頻率是0.015每秒。
3.模擬感測器的接觸。當switch輸入1時,啟用第一個控制器MPC1,這個時候M1和M2是分離的。當兩個物體有相同的位置時,Compare to Constant的計算結果為1,通過Add1加法器的輸出值為2,Multiple MPC Controllers的switch埠被輸入2,自動啟動第二個控制器MPC2。

4.解決方案評價

下圖展示了模擬的過程:
這裡寫圖片描述
4.1 MPC1與MPC2協同工作
下圖展示了對於這個例子多個MPC控制器的模擬:
這裡寫圖片描述
在圖上面上,青色的線(就是我們M1需要的到達的位置,由reference產生)它從-5開始。的M1位置(黃色)從0開始出發。 在MPC1的控制下, M1移動迅速向所需的位置。M2(紅色)從10開始開始朝著同一個方向移動
大約在t = 13秒,M2與M1發生完全非彈性碰撞。M1與M2連在一起。第三幅圖顯示了開關訊號的變化,在這個瞬間從1到2,所以MPC2開始起作用。。
在M1+M2超過了從其所期望的位置時候,M2和M1仍連在一起。控制器MPC2調整作用力F(中間的圖片)使M1+M2快速返回到所需的位置。當r突變到5時,效果一樣是非常不錯的

4.2 單個MPC1一直工作
假設我們的控制器MPC1執行在所有條件下

%再進行一次無論在什麼情況下只用MPC1系統的實驗
disp('Now repeat simulation by using only MPC1 ...');
MPC2save=MPC2;     %先將MPC2儲存起來
MPC2=MPC1;          %用MPC2來代替MPC21
sim('wc1',Tstop);  %動態系統模擬

下圖顯示了MPC1單獨工作的影象
這裡寫圖片描述
如果一直是MPC1的系統,力F不夠,當M1和M2鏈連線在一起的時候,移動緩慢,當下一個轉變發生時還不能到達所需的位置

4.3單個MPC2一直工作

%再進行一次無論在什麼情況下只用MPC2系統的實驗
disp('Now repeat simulation by using only MPC2 ...');
MPC1=MPC2save;
MPC2=MPC1;
sim('WC1',Tstop);

假設我們的控制器MPC2執行在所有條件下
下圖顯示了MPC1單獨工作的影象
這裡寫圖片描述
當M1和M2分開的時候,MPC2也依然使用,過度使用F,過度補償,導致振盪產生。當M2和M1連線在一起的時候,移動更平穩,和預期一樣。最後過渡造成特別嚴重的振盪。 M1和M2頻繁的碰撞,M1不能到達所需的位置。

5.參考文獻

[1] A. Bemporad, S. Di Cairano, I. V. Kolmanovsky, and D. Hrovat, “Hybrid
modeling and control of a multibody magnetic actuator for automotive applications,” in Proc. 46th IEEE(R) Conf. on Decision and Control, New Orleans, LA, 2007.
[2]http://cn.mathworks.com/help/mpc/gs/coordination-of-multiple-model-predictive-controllers.html#bs670e3-8
[3]李國勇,智慧預測控制及其MATLAB實現.北京:電子工業出版社,2010.

6.附錄

%% 多個MPC的的排程控制器    
% clc
% clear all

%% 系統引數
clear all
clc
M1=1;       % M1的質量
M2=5;       % M2的質量
k1=1;       % 彈簧k1常數k
k2=0.1;     % 彈簧k2常數k 
b1=0.3;     % 與空氣的摩擦係數,與速度成正比
b2=0.8;     % 摩擦係數
yeq1=10;    % 剛性壁1的位置 
yeq2=-10;   % 剛性壁2的位置   

%% 狀態空間模型
% 狀態: M的速度和位置 
% 被控變數:F
% 可測量的擾動:彈簧1的常熟;
% 測量輸出: M1的位置 

% 當M1和M2不接觸時候的狀態模型.
A1=[0 1;-k1/M1 -b1/M1];
B1=[0 0;-1/M1 k1*yeq1/M1];
C1=[1 0];
D1=[0 0]; 
sys1=ss(A1,B1,C1,D1);             %建立狀態空間表示式
sys1=setmpcsignals(sys1,'MD',2)  ;%第二個輸入是可測量擾動

% 當M1和M2接觸時候的狀態模型.
A2=[0 1;-(k1+k2)/(M1+M2) -(b1+b2)/(M1+M2)];
B2=[0 0;-1/(M1+M2) (k1*yeq1+k2*yeq2)/(M1+M2)];
C2=[1 0];
D2=[0 0];
sys2=ss(A2,B2,C2,D2);
sys2=setmpcsignals(sys2,'MD',2);

%% MPC模擬引數設定
Ts=0.2;     % 取樣時間
p=20;       % 預測時域長度
m=1;        % 控制時域長度

%% 建立MPC模型
MPC1=mpc(sys1,Ts,p,m);                        % 定義M1和M2分離的MPC模型
MPC1.MV=struct('Min',0,'Max',Inf,'RateMin',-1e3,'RateMax',1e3);  % 設定限制,F的大小不能為0

MPC2=mpc(sys2,Ts,p,m);       %定義M1和M2連線時候的MPC模型
MPC2.MV=MPC1.MV;             %系統1和系統2的控制限制一樣

%% 模擬引數設定
Tstop=100;      % 模擬時間
y1initial=0;    % 物體1的初始位置
y2initial=10;   % 物體2的初始位置
open_system('WC1');   % 呼叫WC1.MDL

%% 開始三次模擬
%雙系統MPC1和MPC2模擬實驗
disp('Start simulation by switching control between MPC1 and MPC2 ...');
set_param('wc1/signals','Open','On');%設定系統和模型的引數值
sim('WC1',Tstop);%動態系統模擬

%再進行一次無論在什麼情況下只用MPC1系統的實驗
disp('Now repeat simulation by using only MPC1 ...'); 
MPC2save=MPC2;  %先將MPC2儲存起來
MPC2=MPC1;      %用MPC2來代替MPC21
sim('WC1',Tstop);

%再進行一次無論在什麼情況下只用MPC2系統的實驗
disp('Now repeat simulation by using only MPC2 ...');
MPC1=MPC2save;
MPC2=MPC1;
sim('WC1',Tstop);

%% 關閉模擬視窗
% bdclose('WC1')
% close(findobj('Tag','WC1_demo'))



%% reference
%[1] A. Bemporad, S. Di Cairano, I. V. Kolmanovsky, and D. Hrovat, "Hybrid
%    modeling and control of a multibody magnetic actuator for automotive
%    applications," in Proc. 46th IEEE(R) Conf. on Decision and Control, New
%    Orleans, LA, 2007. 
%[2]http://cn.mathworks.com/help/mpc/gs/coordination-of-multiple-model-predictive-controllers.html#bs670e3-8
%[3]李國勇,智慧預測控制及其MATLAB實現.北京:電子工業出版社,2010.