PID控制器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PID 控制器设计
一、PID 控制的基本原理和常用形式及数学模型
具有比例-积分-微分控制规律的控制器,称PID 控制器。这种组合具有三种基本规律各自的特点,其运动方程为:
dt
t de dt t e t e t m K K K K K d
p t
i p p )
()()()(0
++=⎰ (1-1)
相应的传递函数为:
⎪⎪⎭
⎫ ⎝⎛++=S S s K K K G d i p c 1)(
S
S S K K K
d i p
1
2
++•
=
(1-2)
PID 控制的结构图为:
若14 i τ ,式(1-2)可以写成: =)(s G c ()()S S S K K i P 1121 ++• ττ 由此可见,当利用PID 控制器进行串联校正时,除可使系统的型别提高一级外,还将提供 两个负实零点。与PI 控制器相比,PID 控制器除了同样具有提高系统的稳态性能的优点外,还多提供一个负实零点,从而在提高系统动态性能方面,具有更大的优越性。因此,在工业过程控制系统中,广泛使用PID 控制器。PID 控制器各部分参数的选择,在系统现场调试中最后确定。通常,应使积分部分发生在系统频率特性的低频段,以提高系统的稳态性能;而使微分部分发生在系统频率特性的中频段,以改善系统的动态性能。 二、实验内容一: 自己选定一个具体的控制对象(Plant),分别用P 、PD 、PI 、PID 几种控制方式设计校正网络(Compensators ),手工调试P 、I 、D 各个参数,使闭环系统的阶跃响应(Response to Step Command )尽可能地好(稳定性、快速性、准确性) 控制对象(Plant)的数学模型: ()()⎪⎪⎭ ⎫ ⎝⎛++=115.01 )(S S S G 2 322++=S S 实验1中,我使用MATLAB 软件中的Simulink 调试和编程调试相结合的方法 不加任何串联校正的系统阶跃响应: (1) P 控制方式: P 控制方式只是在前向通道上加上比例环节,相当于增大了系统的开环增益,减小了系统的稳态误差,减小了系统的阻尼,从而增大了系统的超调量和振荡性。 P 控制方式的系统结构图如下: 取Kp=1至15,步长为1,进行循环测试系统,将不同Kp 下的阶跃响应曲线绘制在一张坐标图下: MATLAB源程序: %对于P控制的编程实现 clear; d=[2]; n=[1 3 2]; t=[0:0.01:10]; for Kp=1:1:15 d1=Kp*d; g0=tf(d1,n); g=feedback(g0,1); y=step(g,t); plot(t,y); if ishold~=1 ,hold on,end end grid 由实验曲线可以看出,随着Kp值的增大,系统的稳态误差逐渐减小,稳态性能得到很好的改善,但是,Kp的增大,使系统的超调量同时增加,系统的动态性能变差,稳定性下降。这就是P控制的一般规律。 由于曲线过于密集,我将程序稍做修改,使其仅仅显示出当系统稳态误差小于10%的最小Kp值,并算出此时系统的稳态值和超调量。 新的程序为: %修改后对于P控制的编程实现 clear; d=[2]; n=[1 3 2]; t=[0:0.01:10]; for Kp=1:1:15 d1=Kp*d; g0=tf(d1,n); g=feedback(g0,1); y=step(g,t); plot(t,y); dc=dcgain(g) if dc>0.9, plot(t,y),disp(Kp),disp(dc),break,end;%显示出稳态误差小于10%的最小Kp 值,并算出稳态值 if ishold~=1 ,hold on,end end grid 我们就采用使系统稳态误差小于10%的最小Kp 值10,并计算出此时系统的超调量为34.6%,稳态误差为1-0.9091=0.0909。这些结果是我们能接受的。 (2)PD 控制方式 PD 控制方式是在P 控制的基础上增加了微分环节,由图可见,系统的输出量同时受到误差信号及其速率的双重作用。因而,比例—微分控制是一种早期控制,可在出现误差位置前,提前产生修正作用,从而达到改善系统性能的目的。 控制系统的传递函数为: 2 3222+++S S Kp KpKdS Kp=10时系统的阶跃响应曲线 PD控制框图 保持Kp=10不变,调试取Kd=1、1.5、2时的系统阶跃响应曲线并与P控制做比较: MATLAB源程序为: %编程实现PD控制与P控制的比较 clear; t=[0:0.01:10]; d0=[20]; n=[1 3 2]; s0=tf(d0,n); s=feedback(s0,1); k=step(s,t); plot(t,k); Kp=10; if ishold~=1,hold on,end; for Kd=1:0.5:2 d=[2*Kd*Kp,2*Kp]; g0=tf(d,n); g=feedback(g0,1); y=step(g,t); plot(t,y);