二阶水箱串级控制的matlab实现讲解.docx

上传人:b****3 文档编号:2063084 上传时间:2022-10-26 格式:DOCX 页数:18 大小:548.21KB
下载 相关 举报
二阶水箱串级控制的matlab实现讲解.docx_第1页
第1页 / 共18页
二阶水箱串级控制的matlab实现讲解.docx_第2页
第2页 / 共18页
二阶水箱串级控制的matlab实现讲解.docx_第3页
第3页 / 共18页
二阶水箱串级控制的matlab实现讲解.docx_第4页
第4页 / 共18页
二阶水箱串级控制的matlab实现讲解.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

二阶水箱串级控制的matlab实现讲解.docx

《二阶水箱串级控制的matlab实现讲解.docx》由会员分享,可在线阅读,更多相关《二阶水箱串级控制的matlab实现讲解.docx(18页珍藏版)》请在冰豆网上搜索。

二阶水箱串级控制的matlab实现讲解.docx

二阶水箱串级控制的matlab实现讲解

液位串级控制系统如上图,被控对是二阶水箱。

控制作用为控制调节阀LV1001的开度,从而影响第1个水箱的液位和第2个水箱的液位。

第1个水箱有干扰流量,两个水箱的截面积都是。

控制作用和调节阀管道上的流量之间的关系为,取、都是线性气开阀。

稳态时有:

为了编程,在MATLAB中定义PID模块结构为:

pidBlock=struct('blockName','LIC1001','direct',1,'AMC','MAN','SP',0,'PV',0,'MV',0,'Kc',0,'Ti',10000000000,'Td',0,'spanHigh',100,'spanLow',0,'E0',0,'E1',0,'E2',0);

解释如下:

pidBlock=struct(

'blockName','LIC1001',%PID模块的名字

'direct',1,%PID正反作用,direct=1表示反作用,direct=-1,表示正作用

'AMC','MAN',%PID手动、自动、串级状态

%‘AMC’=’MAN’时,PID处于手动

%‘AMC’=’AUT’时,PID处于自动

%‘AMC’=’CAS’时,PID是副回路调节器,处于串级

'SP',0,%PID模块的给定值

'PV',0,%PID模块的测量值

'MV',0,%PID模块的控制作用

'Kc',0,%PID模块的比例系数

'Ti',10000000000,%PID模块的积分时间

'Td',0,%PID模块的微分时间

'spanHigh',100,%PID模块的PV值的量程上限

'spanLow',0,%PID模块的PV值的量程下限

'E0',0,%PID增量算法中的最新误差值

'E1',0,%PID增量算法中的上一步误差值

'E2',0%PID增量算法中的上上一步误差值

);

1.画出该控制系统的结构图;

2.建立各环节的传递函数模型;

3.推导PID增量算法;

4.以指定的结构编写PID控制的子程序,要求要用M语言编制,并且编程时要考虑手自动状态、串级状态、正反作用、无扰切换.

提示如下:

主程序中定义两个pidblock,如:

pidBlock

(1)=struct('blockName','LIC1001','direct',1,'AMC','MAN','SP',0,'PV',0,'MV',0,'Kc',0,'Ti',10000000000,'Td',0,'spanHigh',100,'spanLow',0,'E0',0,'E1',0,'E2',0);

pidBlock

(2)=struct('blockName','LIC1002','direct',1,'AMC','MAN','SP',0,'PV',0,'MV',0,'Kc',0,'Ti',10000000000,'Td',0,'spanHigh',100,'spanLow',0,'E0',0,'E1',0,'E2',0);

…………………….

%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;

EndIf

…………………………….

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参数,将副回路和第二个水箱看成广义对象,结构图如下:

图六

对图六构成的闭环系统,首先采用纯比例控制,由大到小改变比例度,观察系统的闭环相应曲线。

下图为比例度为、、、的单位阶跃响应曲线。

由图七可知,当时,系统输出响应出现等幅振荡,临界比例度,临界振荡周期。

图七

根据临界比例度,临界振荡周期,根据经验公式可确定不同控制规律下的调节其参数。

采用比例积分微分(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

ifpidblock.AMC=='MAN'

pidblock.MV=pidblock.SP;

end

main.m

clear

clc

pidBlock

(1)=struct('blockName','LIC1002','direct',1,'AMC','AUT','SP',0,'PV',0,'MV',0,'Kc',58,'Ti',0.3,'Td',0.075,'spanHigh',2.52,'spanLow',0,'E0',0,'E1',0,'E2',0);

pidBlock

(2)=struct('blockName','LIC1001','direct',1,'AMC','AUT','SP',70,'PV',0,'MV',0,'Kc',8,'Ti',2,'Td',0.1,'spanHigh',2.52,'spanLow',0,'E0',0,'E1',0,'E2',0);

%部分参数的值

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,'z');

[num2,den2]=tfdata(dsys2,'v');

%扰动Qd1

sys3=tf(R12*Qd1,[R12*A,1]);

dsys3=c2d(sys3,ts,'z');

[num3,den3]=tfdata(dsys3,'v');

%扰动Qd2

sys4=tf(R2*Qd2,[R2*A,1]);

dsys4=c2d(sys4,ts,'z');

[num4,den4]=tfdata(dsys4,'v');

%前馈控制器

sys5=-sys4;

dsys5=c2d(sys5,ts,'z');

[num5,den5]=tfdata(dsys5,'v');

%初值

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1