资源简介
动态矩阵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个文件信息
相关资源
- 离散点云三维重建matlab程序
- 经典SVM算法的MATLAB程序
-
simuli
nk和pspice的接口程序 - 《全面详解LTE:MATLAB建模、仿真与实
- 戈泽尔算法源程序
- Matlab程序,是播放音乐文件的波形和
- 《信号与系统-MATLAB综合实验》的Mat
- LMS MATLAB DSP算法实现和程序收集
- 电力系统分析程序PSAT官方2.1.9版及说
- 生物信号和生物医学的图像处理以M
- Random Walks 标准程序,MATLAB程序,调试
- 车牌识别matlab程序235178
- 涡格法MATLAB程序
- S-ICP算法MATLAB程序
- viola_jones 的haar 特征检测的matlab 程序
- HDR_image-master MATLAB仿真程序
- 用四阶统计量方法对图像特征进行提
- 卫星导航定位算法与程序设计讲义.
- 基于形状与颜色特征融合的图像检索
- 《MATLAB高效编程技巧与应用的25个案例
- SVM-KM Matlab源程序
- 用matlab编写的Meanshift追踪程序
- 模式识别课程作业 基于svm的人脸识别
- 包括GUI界面的matlab硬币统计程序
- Matlab仿真及其在光学课程中的应用源
- SRC人脸识别程序MATLAB
- 杨氏双孔干涉实验的MATLAB计算机模拟
- 信号检测与估计-理论与应用 部分习题
- 信号调制识别论文含matlab程序
- 基于MATLAB相机标定 有源程序,试验图
评论
共有 条评论