資源簡介
動態矩陣DMC算法 matlab程序實現

代碼片段和文件信息
function?[ADMC?A?y_step?m_nHP?m_nHM?]?=??CalcStepResponseADMC(?T0_gp?k0_gp?Ts?m_nHP?m_nHM??bFigure?nLoop?Kp2)
%?被控對象?仿真,獲取?階躍響應?向量
%?y_step?=?被控對象?到?穩態?的完整的階躍響應
%?A :?動態矩陣
%?ADMC :?deltaU?=?ADMC?*?DMC_ye
%?m_nHP :?預測時域長度
%?m_nHM :?控制時域長度
%m_nHP?=?100;
%m_nHM?=?5;
%bFigure?=?true;
%?第一部分:被控對象的仿真
%?被控對象參數
%?
%?傳遞來的缺省參數
%?T0_gp=25; k0_gp?=?10;
%?h_gp?=?T0_gp?/?50; %?被控對象?仿真?時間步長
%?Tend?=??10?*?T0_gp?/?h_gp;
%----?2013?試驗汽溫對象
%nLoop?=?1; %?內回路
%nLoop?=?2; %?外回路
n_gp=5; %?5階對象?2階在內回路,3階在外回路
%T0_gp?=?[15?15 20?????20?20];
%k0_gp?=?[8??1 1.125??1??1?];
h_gp??=?0.5; %?被控對象?仿真?時間步長
a_gp?=?exp(?-?h_gp?./?T0_gp?);
b_gp?=?k0_gp?.*?(?1?-?a_gp?);
iTimeSimuEnd?=?4500; %?仿真長度
iTimeSS?=?0; %?達到穩態?static?state
%?y_pv(:?[內回路導前區汽溫,?外回路惰性區汽溫]?)
y_pv?=?zeros(iTimeSimuEnd?2); %?存儲仿真結果以h為仿真步長
y_step?=?zeros(m_nHP1); ????%?控制器用以?Ts?為采樣周期
y_pv(11)?=?0;????????????????%?初始狀態?y1(0)=0
y_pv(12)?=?0;????????????????%?初始狀態?y2(0)=0
%%%%%%%%%%%%%%%%%%%%%%%%%%%導入采樣數據值%%%%%%%%%%%%%%%%%%%%%%%%%%%
uk?=?1;
if?(?nLoop?==1?) %?只內回路?的
yss?=?0.9999?*?k0_gp(1)?*k0_gp(2)?*?uk; %?導前汽溫穩態值
nypvCol?=?1;
elseif(?nLoop?==?2?) %?只外回路?的
yss?=?0.9999?*?k0_gp(1)?*k0_gp(2)?*?k0_gp(3)?*k0_gp(4)?*?k0_gp(5)?*?uk; %?出口惰性區汽溫
nypvCol?=?2;
elseif(?nLoop?==?3?) %?內回路?P,?外回路?DMC
Kinss?=?(?k0_gp(1)?*?k0_gp(2)?*?Kp2?);
Kinss?=?Kinss?/?(1?+?Kinss?);
%?yss?=?0.9999?*?Kinss?/?(1?+?Kinss?)?*?uk?; ?%?以?內回路的穩態值,作為?ss
yss?=?0.9999?*?Kinss?*??k0_gp(3)?*k0_gp(4)?*?k0_gp(5)?*?uk;
nypvCol?=?2;
end
x?=?zeros(n_gp+11); %?仿真中間變量?x
?x(1)?=?uk;
for?(?it?=?1?:?iTimeSimuEnd-1?)
if(?nLoop?==1?|?nLoop==?2)
x(1)?=?uk; %?內回路開環的情形
elseif(?nLoop?==?3?)
x(1)?=?Kp2?*(?uk?-?x(3)?)?; %?內回路采用P控制,KP=Kp2
end
for(?inh?=?1?:?5?)
x(inh+1)?=?a_gp(inh)?*?x(inh+1)?+?b_gp(inh)?*?x(inh);
end
y_pv(it+11)?=?x(3); y_pv(it+12)?=?x(6);
% 達到穩態,則退出仿真
% if(?y_pv(it+11)?>?yss2?)
%???????iTimeSS?=?it+1;
%????????break;
% end
if(?(y_pv(it+1nypvCol)?>?yss)??&?(iTimeSS?==?0?)?)
????????iTimeSS?=?it+1;
????????break;
end
end
y_len?=?max?(?it+1?iTimeSS)?; %?畫圖時,盡量取更多的數據
if(?bFigure?)
????t_time?=?0:?h_gp:?(y_len-1)*h_gp;
????figure();
????plot(t_time?y_pv(1:y_len1)?‘r-‘?t_time?y_pv(1:y_len?2)?‘k-‘);
%?legend(‘導前區汽溫,內回路‘?‘惰性區汽溫,外回路‘?‘Location‘?‘SouthEast‘);
grid?on;
????hold?on;
end
%?第二部分:根據控制器的采樣周期,生成?控制器用的?階躍響應
%?Ts?=?2; %?采樣周期?=2?
mulTime?=?Ts?/?h_gp;
it2?=?1; %?階躍響應的?循環?a(it2)
it??=?1+mulTime; %?4?=?Ts?/?h?
while(?it?<=?iTimeSS?)
????y_step(it2)?=?y_pv(itnypvCol);
????it?=?it?+?mulTime;
????it2?=?it2?+?1;
end
%?y_step?(?it2?)?=?y_pv(iTimeSS);?????///?是否?aN?=?ass
m_nHP?=?min(m_nHP?it2-1);
%?第三部分:計算DMC所用的?模型矩陣?A?
A=zeros(m_nHP?m_nHM); %?DMC的模型矩陣?A?
for(?it?=?1?:?m_nHM?)
A([it?:?m_nHP]?it)?=?y_step(?[1?:?m_nHP+1-it]?);
end
if(?bFigure)
????t2_time?=?Ts?:?Ts?:?(it2-1)*Ts;
plot(t2_time?y_step(1?:?length(t2_
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-12-11?23:53??DMC算法\
?????目錄???????????0??2014-05-06?14:49??DMC算法\DMC\
?????目錄???????????0??2014-05-05?19:35??DMC算法\DMC-matlab\
?????文件????????2599??2014-05-06?14:47??DMC算法\DMC-matlab\CalcStepResponseADMC.m
?????文件????????1463??2014-05-06?14:44??DMC算法\DMC-matlab\CalcStepResponseADMC.mat
?????文件????????2082??2011-08-26?10:39??DMC算法\DMC-matlab\CalcStepResponse_D.m
?????文件?????????716??2014-05-06?14:44??DMC算法\DMC-matlab\CalcStepResponse_D.mat
?????文件?????????886??2014-05-03?22:58??DMC算法\DMC-matlab\closeloop1.asv
?????文件?????????888??2014-05-03?23:01??DMC算法\DMC-matlab\closeloop1.m
?????文件????????4171??2011-08-23?23:39??DMC算法\DMC-matlab\dmc1.m
?????文件????????2035??2011-08-22?18:54??DMC算法\DMC-matlab\dmc1_p0.m
?????文件????????7520??2014-05-06?14:46??DMC算法\DMC-matlab\dmcba
?????文件????????8214??2011-08-26?00:14??DMC算法\DMC-matlab\dmcba
?????文件????????8048??2014-05-06?14:41??DMC算法\DMC-matlab\dmcba
?????文件????????8048??2014-05-06?14:42??DMC算法\DMC-matlab\dmcba
?????文件????????7493??2011-08-27?22:24??DMC算法\DMC-matlab\dmcba
?????文件?????????600??2011-08-23?13:24??DMC算法\DMC-matlab\nostable.m
?????文件?????????432??2011-09-10?16:59??DMC算法\DMC-matlab\ref.m
?????文件???????15059??2014-05-03?22:47??DMC算法\DMC.docx
?????文件????????4488??2014-05-05?20:48??DMC算法\DMC\CalcStepResponseADMC.m
?????文件??????210980??2014-05-05?20:52??DMC算法\DMC\CalcStepResponseADMC_out.mat
?????文件????????9630??2014-05-05?20:48??DMC算法\DMC\dmcba
?????目錄???????????0??2014-05-06?14:49??DMC算法\DMC\有擾動\
?????文件????????2562??2011-08-26?16:02??DMC算法\DMC\有擾動\CalcStepResponseADMC.m
?????文件????????1463??2014-05-06?14:48??DMC算法\DMC\有擾動\CalcStepResponseADMC.mat
?????文件????????8219??2013-04-15?08:51??DMC算法\DMC\有擾動\dmcba
?????文件????????8047??2011-08-26?00:17??DMC算法\DMC\有擾動\dmcba
?????文件???????30208??2014-04-11?11:25??DMC算法\DMC控制算法.doc
?????文件???????????0??2014-05-05?15:49??DMC算法\DMC概述.docx
?????文件??????642048??2013-04-12?15:07??DMC算法\DMC理論及MATLAB實現.ppt
?????文件???????45056??2014-04-30?16:58??DMC算法\DMC程序實現.doc
............此處省略5個文件信息
評論
共有 條評論