基于MATLAB的PID控制器设计

基于MATLAB的PID控制器设计
基于MATLAB的PID控制器设计

基于MATLAB的PID 控制器设计

基于MATLAB的PID 控制器设计

一、PID控制简介

PID控制是最早发展起来的经典控制策略, 是用于过程控制最有效的策略之一。由于其原理简单、技术成,在实际应用中较易于整定, 在工业控制中得到了广泛的应用。它最大的优点是不需了解被控对象精确的数学模型,只需在线根据系统误差及误差的变化率等简单参数, 经过经验进行调节器参数在线整定, 即可取得满意的结果, 具有很大的适应性和灵活性。

积分作用:可以减少稳态误差, 但另一方面也容易导致积分饱和, 使系统的超调量增大。

微分作用:可提高系统的响应速度, 但其对高频干扰特别敏感, 甚至会导致系统失稳。

所以, 正确计算控制器的参数, 有效合理地实现PID控制器的设计,对于PID 控制器在过程控制中的广泛应用具有重要的理论和现实意义。

在PID控制系统中, PID控制器分别对误差信号e(t)进行比例、积分与微分运算, 其结果的加权和构成系统的控制信号u(t),送给对象模型加以控制。PID控制器的数学描述为

其传递函数可表示为:

从根本上讲, 设计PID控制器也就是确定其比例系数Kp、积分系数T i 和微分系数T d , 这三个系数取值的不同, 决定了比例、积分和微分作用的强弱。控制系统的整定就是在控制系统的结构已经确定、控制仪表和控制对象等处在正常状态的情况下, 适当选择控制器参数使控制仪表的特性和控制对象的特性相配合, 从而使控制系统的运行达到最佳状态, 取得最好的控制效果。

二、MATLAB的Ziegler-Nichols算法PID控制器设计。

1、PID控制器的Ziegler-Nichols参数整定

在实际的过程控制系统中, 有大量的对象模型可以近似地由一阶模型

来表示。这个对象模型可以表示为

sL

-

e

sT

1

K

G(s)

+

=

如果不能建立起系统的物理模型, 可通过试验测取对象模型的阶跃响应, 从而得到模型参数。当然, 我们也可在已知对象模型的情况下, 利用MATLAB,通过使用step ( ) 函数得到对象模型的开环阶跃响应曲线。在被控对象的阶跃响应中, 可获取K 、L 和T参数, 也可在MATLAB中由dcgain ( ) 函数求取K值。

2.在MATLAB下实现PID 控制器的设计与仿真

已知被控对象的K、L 和T 值后, 我们可以根据Ziegler —Nichols整定公式编写一个MATLAB函数ziegler_std ( )用以设计PID控制器。该函数程序如下:

function [num,den,Kp,Ti,Td,H]=Ziegler_std (key,vars)

Ti=[ ];Td=[ ];H=[ ];

K=vars(1) ;

L=vars(2) ;

T=vars (3);

a=K*L/T;

if key==1

num=1/a; %判断设计P 控制器

elseif key==2

Kp=0.9/a;Ti=3.33*L; %判断设计PI 控制器

elseif key==3,

Kp=1.2/a;Ti=2*L;Td=L/2; %判断设计PID控制器end

switch key

case 1

num=Kp;den=1; % P 控制器 case 2

num=Kp*[Ti,1];den=[Ti,0]; % PI 控制器 case 3 % PID 控制器 p0=[Ti*Td,0,0];

p1=[0,Ti,1];p2=[0,0,1]; p3=p0+p1+p2; p4=Kp*p3; num=p4/Ti; den=[1,0]; end

由图可知L 和T 令T

KL

=

α。在求得L 和α参数的情况下, 我们可通过表1中给出的Ziegler — Nichols 经验公式确定 P 、PI 和PID 控制器的参数。

三、对某传递函数3

)1s (1G(s)+=

的控制

未加控制器的仿真: Simulink 下的系统图

仿真输出图形如下:

第一次测量

T=3.28 L=1.38 K=1 T KL

=α=0.42

P 控制

Kp=α

1

=

=2.38

Simulink 下的系统图

仿真输出图形如下:

峰值时间tp=4.15s,峰值为0.9518 上升时间td=2.953s 调节时间ts=14.4s

PI 控制

Kp=α

0.9

=

=2.14 Ti=3.33L=4.60

Simulink 下的系统图:

仿真后的输出曲线为:

峰值时间tp=4.48s,峰值1.019s 上升时间td=3.783s

调节时间ts=25.486s

PID控制

Kp=α

1.2

==2.85 Ti=2L=2.76 Td=

2

L

==0.69 Simulink下的系统图

仿真后的输出曲线为:

峰值时间tp=4.028s 峰值1.077 上升时间td=3.565s 调节时间ts=28.50s

第二次测量

T=3.51 L=1.23 k=1 T

KL

=α=0.35

P 控制,

Kp=

α

1

=2.86 Simulink 下的系统图:

仿真后的输出曲线为:

峰值时间tp=3.685s峰值1.025 上升时间td=2.834s

调节时间ts=25.70s

PI 控制图如下:

Kp=α

0.9

=

=2.57 Ti=3.33L=4.10

Simulink 下的系统图:

仿真后的输出曲线为:

峰值时间tp=4.197s 峰值1.104 上升时间td=3.324s 调节时间ts=27.06s

PID 控制

Kp=α

1.2

=

=2.757 Ti=2L=0.262 Td=2

L

=

=0.0655 Simulink 下的系统图

仿真后的输出曲线为:

峰值时间tp=4.002s峰值1.169 上升时间td=3.023s

调节时间ts=22.26s

四、控制方案的选择:对于开环传递函数为3

)1s (1G(s)+=

的系统,经过两次测

量,并分别进行P ,PI ,PID 控制发现比例P 控制有较好的动态和稳态性能指标。取两次测量平均值K=1,L=1.305,T=3.40,则T

KL

=

α=0.383 五、由实验过程和仿真结果对P 、PI 、PID 控制的优劣性比较 比例(P )控制

单独的比例控制也称“有差控制”,输出的变化与输入控制器的偏差成比例关系,偏差越大输出越大。实际应用中,比例度的大小应视具体情况而定,比例度太大,控制作用太弱,不利于系统克服扰动,余差太大,控制质量差,也没有什么控制作用;比例度太小,控制作用太强,容易导致系统的稳定性变差,引发振荡。

对于反应灵敏、放大能力强的被控对象,为提高系统的稳定性,应当使比例度稍大些;而对于反应迟钝,放大能力又较弱的被控对象,比例度可选小一些,以提高整个系统的灵敏度,也可以相应减小余差。

单纯的比例控制适用于扰动不大,滞后较小,负荷变化小,要求不高,允许有一定余差存在的场合。工业生产中比例控制规律使用较为普遍。 比例积分(PI )控制

比例控制规律是基本控制规律中最基本的、应用最普遍的一种,其最大优点就是控制及时、迅速。只要有偏差产生,控制器立即产生控制作用。但是,不能最终消除余差的缺点限制了它的单独使用。克服余差的办法是在比例控制的基础上加上积分控制作用。

积分控制器的输出与输入偏差对时间的积分成正比。这里的“积分”指的是“积累”的意思。积分控制器的输出不仅与输入偏差的大小有关,而且还与偏差存在的时间有关。只要偏差存在,输出就会不断累积(输出值越来越大或越来越小),一直到偏差为零,累积才会停止。所以,积分控制可以消除余差。积分控制规律又称无差控制规律。

积分时间的大小表征了积分控制作用的强弱。积分时间越小,控制作用越强;反之,控制作用越弱。

积分控制虽然能消除余差,但它存在着控制不及时的缺点。因为积分输出的累积是渐进的,其产生的控制作用总是落后于偏差的变化,不能及时有效地克服干扰的影响,难以使控制系统稳定下来。所以,实用中一般不单独使用积分控制,而是和比例控制作用结合起来,构成比例积分控制。

这样取二者之长,互相弥补,既有比例控制作用的迅速及时,又有积分控制作用消除余差的能力。因此,比例积分控制可以实现较为理想的过程控制。

是目前应用最为广泛的一种控制器,多用于工业生产中液位、压力、流量等控制系统。由于引入积分作用能消除余差,弥补了纯比例控制的缺陷,获得较好的控制质量。但是积分作用的引入,会使系统稳定性变差。对于有较大惯性滞后的控制系统,要尽量避免使用。

比例积分微分(PID)控制

最为理想的控制当属比例-积分-微分控制规律。它集三者之长:既有比例作用的及时迅速,又有积分作用的消除余差能力,还有微分作用的超前控制功能。

当偏差阶跃出现时,微分立即大幅度动作,抑制偏差的这种跃变;比例也同时起消除偏差的作用,使偏差幅度减小,由于比例作用是持久和起主要作用的控制规律,因此可使系统比较稳定;而积分作用慢慢把余差克服掉。只要三个作用的控制参数选择得当,便可充分发挥三种控制规律的优点,得到较为理想的控制效果。

PID控制中的积分作用可以减少稳态误差, 但另一方面也容易导致积分饱和, 使系统的超调量增大。

六、参考文献

张德丰编著、MATLAB控制系统设计与仿真、电子工业出版社、2009.6

胡寿松主编、自动控制原理(第五版)、科学出版社、2007

七、心得体会

我觉得学习MATLAB是不容易的,这是一件需要持之以恒的事,必须要坚持不懈的学习,还需要敢于开口向别人请教,更需要我们勤于思考,勤于动手,勤于记忆。程序设计是实践性很强的事情,需要我们亲自动手实际操作设计程序,熟悉MATLAB的操作环境,这对提高我们操作能力非常有效。

在这几天时间里,我仅仅学了一些皮毛,在编程过程中遇见许多问题,例如对工具栏了解不够,导致一些操作很混乱,对程序的运行,修改,添加往往是繁琐的,后来经过看书查阅资料有了基本了解,但是还是没有熟练掌握。虽然有的题目对我们来说还是有些难度的,但是在经过坎坎坷坷之后下我还是编出程序的,当我看到自己编的程序运行正确时,总是会万分的兴奋,充满成就感。虽然不能十分熟悉和运用MATLAB的所有程序,但是我们却打下了一定的基础,

想要进一步学习,还需要我在以后的实际应用里不断学习,改进自己不足之处,让自己有所进步,有所成长。

相关主题
相关文档
最新文档