二阶水箱串级控制的matlab实现讲解Word文档格式.docx
《二阶水箱串级控制的matlab实现讲解Word文档格式.docx》由会员分享,可在线阅读,更多相关《二阶水箱串级控制的matlab实现讲解Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
,10000000000,'
Td'
spanHigh'
100,'
spanLow'
E0'
E1'
E2'
0);
解释如下:
pidBlock=struct(
'
%PID模块的名字
1,%PID正反作用,direct=1表示反作用,direct=-1,表示正作用
%PID手动、自动、串级状态
%‘AMC’=’MAN’时,PID处于手动
%‘AMC’=’AUT’时,PID处于自动
%‘AMC’=’CAS’时,PID是副回路调节器,处于串级
0,%PID模块的给定值
0,%PID模块的测量值
0,%PID模块的控制作用
0,%PID模块的比例系数
10000000000,%PID模块的积分时间
0,%PID模块的微分时间
100,%PID模块的PV值的量程上限
0,%PID模块的PV值的量程下限
0,%PID增量算法中的最新误差值
0,%PID增量算法中的上一步误差值
0%PID增量算法中的上上一步误差值
);
1.画出该控制系统的结构图;
2.建立各环节的传递函数模型;
3.推导PID增量算法;
4.以指定的结构编写PID控制的子程序,要求要用M语言编制,并且编程时要考虑手自动状态、串级状态、正反作用、无扰切换.
提示如下:
主程序中定义两个pidblock,如:
pidBlock
(1)=struct('
pidBlock
(2)=struct('
LIC1002'
…………………….
%beginloop
pidBlock
(1).SP=……
pidBlock
(2).SP=……
pidBlock
(1).PV=模型计算
pidBlock
(1).SP=模型计算
计算控制作用
pidBlcok
(1)=pid_function(pidBlock
(1));
……………….
那么子程序在文件pid_function.m中:
functionpidblock=pid_function(pidblockStruct)
pidblock=pidblockStruct;
pidblock.E2=pidblock.E1;
pidblock.E1=pidblock.E0;
pidblock.E0=pidblock.SP–pidblock.PV;
ifpidblock.AMC=‘AUT’|pidblock.AMC=‘CAS’
pidblock.MV=增量算法
EndIf
ifpidblock.AMC=‘MAN’
pidblock.SP=pidblock.PV;
…………………………….
5.对副回路进行整定,要有整定过程和整定曲线。
6.对主回路进行整定,要有整定过程和整定曲线。
7.在第5、6的基础上,将控制系统投入自动,主回路给定值做10%的阶跃,给出液位响应曲线的形状;
第2个水箱的干扰变化10%,给出液位响应曲线的形状。
8.针对第2个水箱的干扰,设计静态前馈控制器,第2个水箱的干扰变化10%,给出液位响应曲线的形状。
要求:
(1)以电子版提交大作业到我邮箱,截止日期到2月5日,过期不候,雷同的、不交的肯定不及格。
(2)编程不能用SIMULINK搭建,要求用MATLAB的M语言编程。
要求附上相应程序和相应曲线。
过程控制大作业
1.该系统的结构图
图一
2.各环节的传递函数模型
在工作点附近,由物料守恒得:
(1)
线性化的微分方程为:
(2)
写成矩阵的形式:
(3)
对上式取拉氏变换
可知:
(4)
将(4)带入原理结构图,则控制系统的结构图:
图二
3.位置式PID控制算法
式中------比例系数
--------积分系数
--------微分系数
增量式PID控制算法
4.程序见附录一
5.对副回路进行整定
临界比例度法参数整定公式
控制规律
比例度
积分时间Ti
微分时间Td
副回路的结构图如下:
图三
程序见附录二,采用临界比例度法整定PID参数:
将系统构成纯比例控制,由大到小改变比例度,观察系统的闭环相应曲线,图四为比例度为、、、的单位阶跃响应曲线。
由图可知,当时,系统输出响应出现等幅振荡,临界比例度,临界振荡周期。
图四
根据临界比例度,临界振荡周期,根据经验公式可确定不同控制规律下的调节其参数。
采用比例积分微分(PID)调节器:
,。
系统响应曲线如下图:
图五
6.主回路进行整定
主回路也采用临界比例度法整定PID参数,将副回路和第二个水箱看成广义对象,结构图如下:
图六
对图六构成的闭环系统,首先采用纯比例控制,由大到小改变比例度,观察系统的闭环相应曲线。
下图为比例度为、、、的单位阶跃响应曲线。
由图七可知,当时,系统输出响应出现等幅振荡,临界比例度,临界振荡周期。
图七
图八
7.控制系统投入自动后液位H2的响应曲线
本程序中给的液位给定值是绝对高度的百分比,而不是在工作点附近的増量的绝对高度,第二个水箱的稳态液位H2=1.4m,而水箱的上限是2.52m,所以把实际液位高度转化成0-100%的数时,初始液位应给是55.5%,当给定值做10%的阶跃时,给定值pidBlock
(2).SP=65。
液位H2响应曲线为:
图九
稳态时,第二个水箱的干扰,干扰量增加10%后,。
干扰量减少10%后,。
干扰量增加10%后,液位H2响应曲线:
图十
干扰量减少10%后,液位H2响应曲线:
图十一
8.前馈控制器
针对第2个水箱的干扰Qd2,设计静态前馈控制器。
增加前馈控制器后,系统的结构图为:
图十二
干扰变化前液位H2的响应曲线:
图十三
干扰Qd2增加10%后,液位H2响应曲线:
图十四
由图十三和图十四对比可知,针对第2个水箱的干扰设计前馈控制器后,第2个水箱的干扰变化对液位H2无影响。
附录一:
pid_function.m
functionpidblock=pid_function(pidblockStruct,u)
pidblock=pidblockStruct;
pidblock.E2=pidblock.E1;
pidblock.E1=pidblock.E0;
pidblock.E0=pidblock.SP-pidblock.PV;
%手自动切换
ifpidblock.AMC=='
AUT'
|pidblock.AMC=='
CAS'
pidblock.MV=u;
end
pidblock.MV=pidblock.SP;
end
main.m
clear
clc
58,'
0.3,'
0.075,'
2.52,'
70,'
8,'
2,'
0.1,'
%部分参数的值
H1=1.5;
H2=1.4;
ku=0.2;
A=2;
R12=2*sqrt(1.5)/0.20412;
R2=2*sqrt(1.4)/0.21129;
ts=0.1;
Qd1=0.15;
Qd2=0.05;
%第一个水箱离散化
sys1=tf(R12*ku,[R12*A,1]);
dsys1=c2d(sys1,ts,'
z'
[num1,den1]=tfdata(dsys1,'
v'
%第二个水箱离散化
sys2=tf(R2,[R12*R2*A,R12]);
dsys2=c2d(sys2,ts,'
[num2,den2]=tfdata(dsys2,'
%扰动Qd1
sys3=tf(R12*Qd1,[R12*A,1]);
dsys3=c2d(sys3,ts,'
[num3,den3]=tfdata(dsys3,'
%扰动Qd2
sys4=tf(R2*Qd2,[R2*A,1]);
dsys4=c2d(sys4,ts,'
[num4,den4]=tfdata(dsys4,'
%前馈控制器
sys5=-sys4;
dsys5=c2d(sys5,ts,'
[num5,den5]=tfdata(dsys5,'
%初值
w=0;
u1_1=0.5;
u2_1=0;
h1_1=0;
h2_1=0;
dh1_1=0;
dh2_1=0;
dh2f_1=0;
pidBlock
(1).SP=pidBlock
(1).SP/100*(pidBlock
(1).spanHigh-pidBlock
(1).spanLow)+pidBlock
(1).spanLow-H1;
%H1的实际偏差输入值
pidBlock
(2).SP=pidBlock
(2).SP/100*(pidBlock
(2).spanHigh-pidBlock
(2).spanLow)+pidBlock
(2).spanLow-H2;
%H2的实际偏差输入值
%程序
fork=1:
1:
1000
rin(k)=1