找回密码
 注册
关于网站域名变更的通知
查看: 7105|回复: 4
打印 上一主题 下一主题

PID控制器阶跃响应的分析(基于MATLAB仿真的实验):

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-10-17 17:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
PID控制器阶跃响应的分析(基于MATLAB仿真的实验):
下面我们通过matlab仿真实验来观察PID控制器的输出响应,分别观察P、I、D单独作用下,系统会有什么样的输出响应与控制规律。我们知道PID控制器是通过三个参量kp,TI,TD(比例,微分,积分)的值大小来调节目标控制器的控制特性,为了分析PID调节作用,我们给控制器输入阶跃信号,并对其中三个参量kp,TI,TD分别进行单独变化时对系统响应的分析。
(本文所有matlab程序都是通过验证,可以直接复制到matlab的命令窗口中去运行查看输出结果)

# ^* z# x" ?" I6 C
例:单闭环的电机调速系统的PID控制器如图1,有结构图直接写出该控制器的传递函数。
+ y0 y! y# u1 t! ]
图1系统结构图
P比例作用分析:比例环节的作用是对偏差瞬间作出反应。偏差一旦产生,控制器立即产生控制作用,使控制量向减少偏差的方向变
化,控制作用的强弱取决于比例系数,比例系数越大,控制作用越强,则过渡过程越快,控制过程的静态偏差也就越小;但是越大,也越容易产振荡,破坏系统的稳定性。故而,比例系数选择必须恰当,才能过渡时间少,静差小而又稳定的效果。实验结果表明,比例KP值加大,闭环系统超调量加大,系统响应速度加快,当KP值继续加大到>=21时,系统变为不稳定。

( n# Z7 u+ E. T% p$ z0 M
Matlab实验程序如下
g1=tf(1,[0.015 1]); g2=tf(1,[0.068 0]);g12=feedback(g1*g2,1);
g3=tf(36,[0.0016  1 ]);
. h9 O5 o! U& H0 l( c
g4=tf(1,0.2);g=g12*g3*g4;
kp=[1:1:5];
for i=1:length(kp)
gc=feedback(kp(i)*g,0.01178);
step(gc),hold on
end
axis([0 ,0.2,0,130]);
gtext(‘1  kp=1’), gtext(‘2  kp=2’),
gtext(‘3  kp=3’), gtext(‘4  kp=4’),
gtext(‘5  kp=5’),   
! V! g+ u3 H) F- B, o5 I
图2单比例P系统响应
! f: _" {, J& `% ]1 J
比例matlab实验输出结果:如图2
不同的KP值,从1变到5,系统输出5条阶跃响应曲线,明显KP越大响应速度越快,但是超调量也加大,当KP值继续加大,加到21以上,系统将出现振荡

: ]* A/ a* M" S5 p- |, u
I积分作用分析:积分环节的调节作用虽然会消除静态误差,但也会降低系统的响应速度,增加系统的超调量。积分常数越大,积分的积累作用越弱,这时系统在过渡时不会产生振荡;但是增大积分常数会减慢静态误差的消除过程,消除偏差所需的时间也较长,但可以减少超调量,提高系统的稳定性。当Ti较小时,则积分的作用较强,这时系统过渡时间中有可能产生振荡,不过消除偏差所需的时间较短。所以必须根据实际控制的具体要求来确定Ti。
为了便于分析Ti的作用,我们在程序中给予比例值KP=1,积分值给予Ti=0.03~0.07.
即为PI控制器,因KP=1,所以实验主要观察积分值变化引起的系统响应的影响。
Matlab实验程序如下
g1=tf(1,[0.015 1]); g2=tf(1,[0.068 0]);g12=feedback(g1*g2,1);
g3=tf(36,[0.0016 1 ]);      
g4=tf(1,0.2);g=g12*g3*g4;
kp=1;                                                          %前面部分程序照抄,从这开始稍作修改,
ti=[0.03:0.01:0.07];                                      %Ti从0.03~0.07,步进值0.1.
for i=1:length(ti)                                          %把比例KP改成Ti
gc=tf(kp*[ti(i) 1], [ti(i) 0]);
gcc=feedback(g*gc,0.01178);
step(gcc),hold on
end
gtext(‘1  Ti=0.01’),gtext(‘2  Ti=0.02’),
gtext(‘3  Ti=0.03’),gtext(‘4  Ti=0.04’),
图3 PI作用下的系统响应
PI的实验结果:加入积分后的控制器,即有P变成PI,系统的响应输出固然温柔些了,首先超调明显降低,随着Ti值的加大,超调也逐渐减小,但系统响应变慢了。
+ J2 K: T, }9 F' x* q" Q, h
9 i4 ^0 g! z5 C, ^( E
D微分作用分析:实际的控制系统除了希望消除静态误差外,还要求加快调节过程。在偏差出现的瞬间,或在偏差变化的瞬间,不但要对偏差量做出立即响应(比例环节的作用),而且要根据偏差的变化趋势预先给出适当的纠正,为了实现这一作用,可在PI控制器的基础上加入微分环节,形成PID控制器。微分环节的作用使阻止偏差的变化,它是根据偏差的变化趋势(变化速度)进行控制。偏差变化的越快,微分控制器的输出就越大,并能在偏差值变大之前进行修正。另微分作用的引入,将有助于减小超调量,克服振荡,使系统趋于稳定,特别对髙阶系统非常有利,它加快了系统的跟踪速度。但微分的作用对输入信号的噪声很敏感,对那些噪声较大的系统一般不加入微分,或在微分起作用之前先对输入信号进行滤波。
实验例程为了弱化P与I值的作用,两个值均设置为0.01,即KP=0.01,Ti =0.01。而微分值给予Td=15,45,95.三个参数,因KP=0.01, Ti =0.01,所以实际主要观察微分值变化引起的系统响应差异的影响。
Matlab实验程序如下                    
g1=tf(1,[0.015 1]);
g2=tf(1,[0.068 0]);
g12=feedback(g1*g2,1);
g3=tf(36,[0.0016 1 ]);      
g4=tf(1,0.2);
g=g12*g3*g4;
kp=0.01; ti=0.01;
td=[15:40:95];
for i=1:length(td)  
gc=tf(kp*[ti*td(i) ti 1], [ti 0]);
gcc=feedback(g*gc,0.01178);
step(gcc),hold on
end
gtext('1 td=15'),
gtext('2 td=45'),
gtext('3td=95'),      
       图4 TD值15到95响应曲线
有图4相比其它两条当KD=15时候算想相对合理,但是还是有些过冲,所以TD值有作了修改从6~18实验。如图5,从超调与响应速度来看,显然TD=6~8是最完美的,几乎是没有过冲,但这也只是理论单微分作用下(弱比例,积分)的系统响应结果,只是说明了TD值大小与系统输出响应的关系。
到此单比例P,积分I,微分D在系统作用下的响应输出的实验全部做完,我们总一下总结。
               
总结:
比例P:单作用下的分析,实验结果表明,比例KP值加大,闭环系统超调量加大,系统响应速度加快,当KP值继续加大到>=21时,系统变为不稳定。
积分I:积分值Ti加大,闭环系统超调量变小,系统系统响应稍微变慢。
微分D:微分值TD越加大,闭环系统超调量变大,由于单闭环调速系统的参数的特殊性,在微分环节作用下,响应曲线起始阶段出现尖的波峰,之后曲线呈现衰减震荡。随着TD加大可见震荡周期也会加长,继而响应速度也变慢.
[size
# v( I8 r9 c3 U, l

该用户从未签到

2#
 楼主| 发表于 2018-10-17 17:05 | 只看该作者
PID控制器的简介
PID控制器,顾名思义就是比例-积分-微分控制器,它由比例单元 P、积分单元 I 和微分单元 D 组成,将误差信号经过图a  PID控制器框图(比例(P)、积分(I)和微分(D))处理后构成总的控制量,并用这一控制量对被控对图a  PID控制器框图图a  PID控制器框图图a  PID控制器框图图a  PID控制器框图象进行图a  PID控制器框图图a  PID控制器框图控制,这样的控制器称PID控制器,如图a。
a  PID控制器框图

) }5 E; z; L5 W; }7 `
# q1 Q3 A) p# K1 E$ ~* `$ O5 R0 F+ L. T* E
PID控制器的数学模型与控制规律
第一:  任何控制器都有数学模型à微分方程,PID控制器也不例外,也有自己的微分方程
' x9 C7 g) n) L; S' F6 F* ]0 ]
      
式(a)也称PID控制器的控制规律,表示误差信号e(t)分别在比例环节P + 比例积分环节(PI) + 比例微分环节(pd) 的共同作用下得到了控制信号u(t),其中Kp,Ti ,Td 分别表示比例系数,积分时间,与微分时间。

% ]9 z+ s" j+ s: J0 Q
第二:微分方程通过拉普拉斯变换又得到了连续系统的传递函数,PID控制器的传递函数(b)

9 F3 D1 x& d1 `- f- K
第三:在离散系统中,我们需要的数学模型是差分方程,但是为了化简某些比较复杂的系统,我们又将差分方程通过(采样的拉氏变换)Z变换转变成了代数方程,即又得到了Z域的PID控制器代数方程(c),推导过程看胡版自控第五版p373。
! A7 S, c2 i& D6 y/ w- g& }$ d
注意:单独的PID控制器直接差分方程就可以了,不需要去Z变换,再Z反变换这样的过程,但是整个系统数学模型的可能是比较复杂的,所以在设计的时候需要去化简的,所以也有了这么一个Z变换与反Z变换的过程。

  \+ S1 |+ ^0 Z
第四: 我们需要把这个PID控制器算法写到程序中去,所以我们最终要得到是差分方程,我们
可以直接通过差分法把微分方程变成差分方程,我们也可以通过逆Z变换得到差分方程,PID控制器的差分方程如式(g)和(j),这两个公式为啥长这样 ,可以看下一页推导,这里先把两个公式晒出来,后面会进行推导。
& S6 N7 c6 B. s( g
. c0 n3 F3 o% {0 M
/ P* Y2 e, L; y! `
PID控制器的数字化与程序设计
为了得到数字的PID控制器,我们需要把模拟的PID控制器进行离散化处理,这里我们直接应用向后差分法得到PID控制器的差分方程(g)和(j),推导过程如下先把公式(a)PID控制器微分方程拿下来
式(d)积分项和微分项用求和及增量式表示:

: \6 X. `6 ]0 a  I
* p# @2 x# M. G  B) C( _4 B" ?
把式(e)(f)代人式(a)得到离散的位置式PID表达式(g)
根据递推原理,可写出(k-1)的PID表达式(h)
/ R9 M; O4 `4 H5 e
用式(g)减去式(h),并令Kp*(T/TI)= kI(积分系数), Kp*(TD/T)= KD(微分系数)得式(i),

" i( y, ?. f- H1 _9 O& _7 m
; h6 m7 Z# ]/ f  M4 v+ _
式(j)就是我们要得到的增量式PID控制算式。
为了便于写程序,我们把控制器增量输出信号变成如下形式:
∆u(t)=比例的误差增量值+积分的误差增量值+微分的误差增量值,
% x( A6 W/ d) U( O. J6 O$ F
把式(j)做如下改变:
比例的误差增量值                            ∆up(t)= Kp[E(k)-E(k-1)]
积分的误差增量值                                         ∆uI(t)= KI E(k)
微分的误差增量值              ∆u d(t)= KD[E(k)-2E(k-1)+E(k-2)]
PID控制器总误差增量值           ∆u(t)= ∆up(t)+ ∆uI(t)+ ∆ud(t),

7 E: R3 ~% g" @9 _: ]2 \# m3 L


% B) b3 N5 K7 }
下面只介绍下增量式PID式子的流程图,位置式PID流程图可以自己翻书。
增量式PID程序流程图如下:   图1a的流程图只是把公式(j)增量式PID控制算式,用程序流程图形式来表示,目的也只是入门式的理解增量式PID公式(J),实际程序不是这样的,可能会考虑积分饱和,上下限,抗干扰,电流/电压等等的相关因素.
图1a增量式PID运算的基本流程图

* g1 e0 C) y1 ]
到此我们把PID控制器的基本公式与原理基本介绍完

. Q0 ]* R& \! e

该用户从未签到

3#
 楼主| 发表于 2018-10-17 17:06 | 只看该作者
例 已知串级控制系统如图7,其主,副控对象与副调节器传递函数分别为
求出GC1(s)=P_PI_PID校正参数,即用稳定边界法计算出GC1(s)控制器P_PI_PID校正参数向该补偿后的控制器输入阶跃信号并求出系统输出响应的仿真,系统框图如图7,转下页。
7 串级过程控制系统的结构

  e! I$ f5 B. s- _

! F9 e/ |& l( ^; V7 t) ]% q
例程:稳定边界法的PID校正MATLAB程序
***********************************************************************
稳定边界法的PID校正设计
使用稳定边界法计算主控制器GC1作为P,PI,PID校正时的参数
并进行阶跃响应的仿真测试。
***********************************************************************
g1=tf (1,[30 1]);
g2=tf (1,[3 1]);
g3=tf (1,[10 1]);
g4=tf (10,[1 2 1]);
g=g1*g2*g3*g4;p=4;
[gc1,kp1]=wj1(1,g,p)
[gc2,kp2,ti2]=wj1(2,g,p)
[gc3,kp3,ti3,td3]=wj1(3,g,p)
gcc1=feedback(g*gc1,1);step(gcc1);hold on
gcc2=feedback(g*gc2,1);step(gcc2);
gcc3=feedback(g*gc3,1);step(gcc3);
gtext('1 p control'),gtext('2 pi control'),
gtext('3 pid control')                                                                                             
***********************************************************************
9 c8 A* m+ P' @% E2 c# S
' P7 }* N* z7 F
wj1.m函数
***************************************************************************
wj1.m函数,调用格式[gc,kp,ti,td]=wj1(pid,g,p)
PID=1,为P;PID=2,为PI,PID=3,为PID调节参数
输入参量:G为已知被校正的系统开环传递函数,P为系统的开环几点的个数(不计重根数)
输出参量:Gc校正器传递函数KP,Ti,TD分别为校正器的比例系数,积分时间常数,微分时间常数
*****************************************************************************
function[gc,kp,ti,td]=wj1(pid,g,p)                           
kp=[];ti=[];td=[];
rlocus(g);
[km,pole]=rlocfind(g);
keyboard
wm=imag(pole(p));
if pid==1,
kp=0.5*km;
elseif pid==2,
kp=0.445*km;
ti=0.85*2*pi/wm;
elseif pid==3,
kp=0.6*km;
ti=0.5*2*pi/wm;
td=0.125*2*pi/wm;
end
switch pid
case 1,gc=kp;
case 2,gc=tf();
case 3,nn=[kp*ti*td kp*ti kp ]; dd=[ti 0];gc=tf(nn,dd);   
end

# G/ [  L, X$ a. |% E9 D
图8
1 N2 k2 d( `+ b: o
*********************************************************************************
程序就绪后,你需要按照下面几步算出P,PIPID的各系数,按回车后.命令窗口如图8.
第一步:命令窗图8 中跳出一句提示“Select a point in the graphics window”,让你在刚跳出的图形窗口(图9转下页)用鼠标左键选一个点,这个点选择要求是在轨迹图与虚轴相交的地方.
第二步: 点击图行窗口如图9产生了两个虚轴与跟轨迹相交的十字点,并同时在命令窗口已经算出了KM值还可以看到提示符K,如图10。
第三步:在提示符K后输入命令return命令窗口如图10算出P校正器的GC1=KP1=0.4018/
第四步:继续重复第一步与第三步(两次),分别求出PI校正器和PID校正器的系数。
第五步:最终matlab得出个校正器校正系数如下:
P校正器:   Gc1=Kp1=0.4018;
PI校正器:    Gc2= (14.81s+0.4306)/34.39s;           Kp2=0.4306;   Ti2=34.3862
PID校正器: Gc3= (59.38s^2+11.74s+0.5805)/20.23s;   Kp3=0.5805;    Ti3=20.2272;  Td3=5.0568;
图9

( e4 `6 J+ P1 s8 c# C

( j) b0 |! r( T3 F6 A
图10命令窗口输出P比例控制器传递函数 Gc1=Kp1=0.4018
11输出PI控制器GC2传函和PI控制器KP2比例系数和TI2微分系数
图12输出PID控制器GC3传函和PID控制器KP3、Ti3、Td3比例微分和积分系数。
5 s/ _* b! h1 F! ]- ~! l) N
图13 PID三种校正控制器阶跃给定响应
( `! ?9 I! u5 Y7 @
到此稳定边界法的PID校正设计的Matlab实验全部完成。
从图13稳定边界法计算的P,PI,PID校正阶跃给定响应曲线所示,P和PI上升速度差不多,但PID校正器最快,控制性能也最好, PI与PID超调量都较大,PI开始产生振荡,注意在光标选择虚轴与轨迹交点时候,尽量使极点实部接近0,就刚刚我在点PI与PID时候点都不是很靠近零,所以输出不是很理想。

- D: v" ~$ [1 a' A/ C
6 临界比例法★★★★
在闭环控制系统里,将调节器置于纯比例作用下,从小到大逐渐改变调节器的比例系数,得到等幅振荡的过渡过程。此时的比例系数称为临界比例系数Ku,相邻两个波峰间的时间间隔,称为临界振荡周期Tu。

, ]$ l6 C0 u& s( @0 S
临界比例度法步骤:
1 将调节器的积分时间Ti置于最大(Ti=∞),微分时间置零(Td=0),比例系数KP适当,平衡操作一段时间,把系统投入自动运行。
2 将比例系数Kp逐渐增大,得到等幅振荡过程,记下临界比例系数Ku和临界振荡周期Tu值。
$ D# l; Y0 O0 Z  k
3 根据Ku和Tu值,采用经验公式,计算出调节器各个参数,即Kp、Ti和Td的值。
按“先P再I最后D”的操作程序将调节器整定参数调到计算值上。若还不够满意,
可再作进一步调整。
4 临界比例度法整定注意事项:
有的过程控制系统,临界比例系数很大,使系统接近两式控制,调节阀不是全关就是全开,
对控制很不利。
有的过程控制系统,当调节器比例系数Kp调到最大刻度值时,系统仍不产生等幅振荡,对此,就把最大刻度的比例度作为临界比例度Ku进行调节器参数整定。

+ q, o: [+ g; \- O
7试凑法与经验法★★★★★
其实这两种方法都可以叫经验法,只是有些书似乎分开说,先说说试凑法,
按照先比例(P)、再积分(I)、最后微分(D)的顺序. 置调节器积分时间Ti=∞,微分时间Td=0,在比例系数Kp按经验设置的初值条件下,让系统投入运行,由小到大整定比例系数KP。求得满意的1/4衰减度过渡过程曲线。引入积分作用(此时应将上述比例系数KP设置为5/6KP)。将Ti由大到小进行整定。若需引入微分作用时,则将Td按经验值或按Td=(1/3~1/4)Ti设置,并由小到大加入。
: \" |1 o7 b' N( W0 @
用凑试法确定PID参数需要经过多次反复的实验,为了减少凑试次数,提高工作效率,可以借鉴他人的经验,并根据一定的要求,事先作少量的实验,以得到若干基准参数,然后按照经验公式,用这些基准参数导出PID控制参数,这就是经验法。
+ [$ W8 {  J: A9 f
临界比例法就是一种经验法。这种方法首先将控制器选为纯比例控制器,并形成闭环,改变比例系数,使系统对阶跃输入的响应达到临界状态,这时记下比例系数Ku、临界振荡周期为Tu,根据Z-N提供的经验公式,就可以由这两个基准参数得到不同类型控制器的参数,如表2-1所示。
表2 临界比例法确定的模拟控制器参数
这种临界比例法是针对模拟PID控制器,对于数字PID控制器,只要采样周期取的较小,原则上也同样使用。在电动机的控制中,可以先采用临界比例法,然后在采用临界比例法求得结果的基础上,用凑试法进一步完善。
表2的控制参数,实际上是按衰减度为1/4时得到的。通常认为1/4的衰减度能兼顾到稳定性和快速性。如果要求更大的衰减,则必须用凑试法对参数作进一步的调整。
/ i. w0 a" d5 [3 o- P+ P' c# q

该用户从未签到

4#
 楼主| 发表于 2018-10-17 17:07 | 只看该作者
PID控制器采样周期的选择
香农(Shannon)采样定律:为不失真地复现信号的变化,采样频率至少应大于或等于连续信号最高频率分量的二倍。根据采样定律可以确定采样周期的上限值。实际采样周期的选择还要受到多方面因素的影响,不同的系统采样周期应根据具体情况来选择。
采样周期的选择,通常按照过程特性与干扰大小适当来选取采样周期:即对于响应快、(如流量、压力)波动大、易受干扰的过程,应选取较短的采样周期;反之,当过程响应慢(如温度、成份)、滞后大时,可选取较长的采样周期。
采样周期的选取应与PID参数的整定进行综合考虑,采样周期应远小于过程的扰动信号的周期,在执行器的响应速度比较慢时,过小的采样周期将失去意义,因此可适当选大一点;在计算机运算速度允许的条件下,采样周期短,则控制品质好;当过程的纯滞后时间较长时,一般选取采样周期为纯滞后时间的1/4~1/8。

$ r7 c1 m/ T$ U. v4 `- D
PID 参数调整规则的总结
主要有以下几点:
1、  在偏差比较大时:为使尽快消除偏差,提高响应速度,同时为了避免系统响应出现超调,Kp取大值,Ki取零;在偏差比较小时:为继续减小偏差,并防止超调过大、产生振荡、稳定性变坏,Kp值要减小,Ki取小值;在偏差很小时:为消除静差,克服超调,使系统尽快稳定,KP值继续减小,
ki值不变或稍取大。
2、当偏差与偏差变化率同号时,被控量是朝偏离既定值方向变化。因此,当被控量接近定值时,反号的比列作用阻碍积分作用,避免积分超调及随之而来的振荡,有利于控制;而当被控量远未接近各定值并向定值变化时,则由于这两项反向,将会减慢控制过程。在偏差比较大时,偏差变化率与偏差异号时,Kp值取零或负值,以加快控制的动态过程。Kp
3、偏差变化率的大小表明偏差变化的速率,ek-ek-1越大,Kp取值越小,Ki取值越大,反之亦然。
同时,要结合偏差大小来考虑
4、微分作用可改善系统的动态特性,阻止偏差的变化,有助于减小超调量,消除振荡,缩短调节时间ts,允许加大Kp,使系统稳态误差减小,提高控制精度,达到满意的控制效果。所以,在ek比较大时,Kd取零,实际为PI控制;在ek比较小时,Kd取一正值,实行PID控制。

& b1 x! T& `" @7 [& w2 V9 n
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-23 23:23 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表