基于多个MPC的的调度控制器
1引言本文J将对MATLAB自带的MPC例子进行详细剖析 模型预测控制工具箱是1个图形用户界面的设计。这个GUI是控制和评估工具管理器GUI的1部份。见下图 Mo(measured output):当前可丈量的输出信号 Ref(Reference signa):参考信号 Md(optional measured disturbance signa):可选的丈量干扰信号 Mv(optimal manipulated variables ):最优操纵变量 MPC1般通过求解1个2次计划(这里我们使用ord45)来计算最优操纵变量 1个简单的例子以下图所示: 2.多个MPC调度控制器解决方案2.1系统描写 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 %% 状态空间模型
% 当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); %第2个输入是可丈量扰动 【注】: 最后得出的结果: 2.3.2当M1和M2连接在1起时候的模型MPC2 % 当M1和M2接触时候的状态模型.
A2=[0 1;-(k1+k2)/(M1+M2) -(b1+b2)/(M1+M2)];
B2=[0 0;⑴/(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); % 定义M1和M2分离的MPC模型
% 设置限制,F的大小不能为0,F斜率绝对值最大1000
MPC1.MV=struct('Min',0,'Max',Inf,'RateMin',-1e3,'RateMax',1e3);
MPC2=mpc(sys2,Ts,m); %定义M1和M2连接的MPC2模型
MPC2.MV=MPC1.MV; %系统1和系统2的控制限制1样 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;下半部份包括以下要素: 4.解决方案评价下图展现了仿真的进程: 4.1 MPC1与MPC2协同工作 下图展现了对这个例子多个MPC控制器的仿真: ?在图上面上,青色的线(就是我们M1需要的到达的位置,由reference产生)它从⑸开始。的M1位置(黄色)从0开始动身。 在MPC1的控制下,M1移动迅速向所需的位置。M2(红色)从10开始开始朝着同1个方向移动 ?大约在t = 13秒,M2与M1产生完全非弹性碰撞。M1与M2连在1起。第3幅图显示了开关信号的变化,在这个瞬间从1到2,所以MPC2开始起作用。。 ?在M1+M2超过了从其所期望的位置时候,M2和M1仍连在1起。控制器MPC2调剂作用力F(中间的图片)使M1+M2快速返回到所需的位置。当r突变到5时,效果1样是非常不错的 4.2 单个MPC11直工作 %再进行1次不管在甚么情况下只用MPC1系统的实验
disp('Now repeat simulation by using only MPC1 ...');
MPC2save=MPC2; %先将MPC2保存起来
MPC2=MPC1; %用MPC2来代替MPC21
sim('wc1',Tstop); %动态系统仿真 下图显示了MPC1单独工作的图象 如果1直是MPC1的系统,力F不够,当M1和M2链连接在1起的时候,移动缓慢,当下1个转变产生时还不能到达所需的位置 4.3单个MPC21直工作 %再进行1次不管在甚么情况下只用MPC2系统的实验
disp('Now repeat simulation by using only MPC2 ...');
MPC1=MPC2save;
MPC2=MPC1;
sim('WC1',Tstop); 假定我们的控制器MPC2运行在所有条件下 当M1和M2分开的时候,MPC2也仍然使用,过度使用F,过度补偿,致使振荡产生。当M2和M1连接在1起的时候,移动更安稳,和预期1样。最后过渡造成特别严重的振荡。 M1和M2频繁的碰撞,M1不能到达所需的位置。 5.参考文献[1] A. Bemporad,S. Di Cairano,I. V. Kolmanovsky,and D. Hrovat,“Hybrid 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,2) ;%第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,D2);
sys2=setmpcsignals(sys2,2);
%% MPC仿真参数设置
Ts=0.2; % 采样时间
p=20; % 预测时域长度
m=1; % 控制时域长度
%% 建立MPC模型
MPC1=mpc(sys1,m); % 定义M1和M2分离的MPC模型
MPC1.MV=struct('Min',Inf,-1e3,1e3); % 设置限制,F的大小不能为0
MPC2=mpc(sys2,m); %定义M1和M2连接时候的MPC模型
MPC2.MV=MPC1.MV; %系统1和系统2的控制限制1样
%% 仿真参数设置
Tstop=100; % 仿真时间
y1initial=0; % 物体1的初始位置
y2initial=10; % 物体2的初始位置
open_system('WC1'); % 调用WC1.MDL
%% 开始3次仿真
%双系统MPC1和MPC2仿真实验
disp('Start simulation by switching control between MPC1 and MPC2 ...');
set_param('wc1/signals','On');%设置系统和模型的参数值
sim('WC1',Tstop);%动态系统仿真
%再进行1次不管在甚么情况下只用MPC1系统的实验
disp('Now repeat simulation by using only MPC1 ...');
MPC2save=MPC2; %先将MPC2保存起来
MPC2=MPC1; %用MPC2来代替MPC21
sim('WC1',Tstop);
%再进行1次不管在甚么情况下只用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,"Hybrid
% modeling and control of a multibody magnetic actuator for automotive
% applications," in Proc. 46th IEEE(R) Conf. on Decision and Control,New
% Orleans,2007.
%[2]http://cn.mathworks.com/help/mpc/gs/coordination-of-multiple-model-predictive-controllers.html#bs670e3⑻
%[3]李国勇,智能预测控制及其MATLAB实现.北京:电子工业出版社,2010. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |