2KpKdS?2Kp
S2?3S?2
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);
if ishold~=1,hold on ,end end end grid
由实验曲线可以得知,在比例控制的基础上增加微分控制并不会影响系统的稳态误差,而增大微分常数Kd可以有效的减小系统的超调量和调节时间,在不影响系统的稳态性能的基础上改善了系统的动态性能。微分控制部分相当于增大了系统的阻尼,所以可以选用较大的开环增益来改善系统的动态性能和系统的稳态精度。
在MATLAB中用循环语句实现不同Kp和Kd值下系统阶跃响应曲线:
由此曲线可以看出:当使Kp和Kd值趋于无穷大时,系统的动态性能和稳态性能都得到非常理想的结果,超调量—>0,调节时间—>0,稳态误差—>0,但实际的物理系统中Kp和Kd的值都受到一定的确限制,不可能想取多大就能取多大,所以上面的曲线并没有多大的实际意义,只是说明了PD控制所能达到的最理想状态和PD控制中的参数选择对阶跃响应曲线的影响。
用MATLAB编程实现,源程序如下: %编程实现PD控制 clear;
t=[0:0.01:10]; n=[1 3 2];
for Kp=10:100:110 for Kd=2:100:102
d=[2*Kd*Kp,2*Kp]; g0=tf(d,n);
g=feedback(g0,1); y=step(g,t); plot(t,y);
if ishold~=1,hold on ,end end end grid (3)PI控制
PI控制是在P控制基础上增加了积分环节,提高了系统的型别,从而能减小系统的稳态误差。因为单纯使用增大Kp的方法来减小稳态误差的同时会使系统的超调量增大,破坏了系统的平稳性,而积分环节的引入可以与P控制合作来消除上述的副作用,至于积分环节对系统的准确的影响将通过实验给出结论。
PI控制的结构图为:
2KpS?2KpKi系统的开环传递函数为:
S(S2?3S?2)将PI控制与P控制的系统阶跃响应曲线进行比较:
初步印象:
上图的初步印象是PI控制中系统的稳态误差显著减小,但是系统的超调量和平稳性并没有得到改善,而增大积分环节中的增益Ki则会使系统的超调量增加,系统的震荡加剧,从而破坏了系统的动态性能。 参数选择方法:
根据上面的分析,要使系统各项性能尽可能的好,只有一边增大Ki加快系统消除稳态误差的时间,一边减小Kp来改善系统的动态性能。
但是在用MATLAB仿真时发现,如果Ki取值过大就会使系统不稳定,为了说明问题,我将展示在Ki取1—4时系统的根轨迹图:
可以发现,当Ki小于四时,无论Kp取何值系统都是稳定的,但是当Ki=4时,就有一部分根轨迹在S又半平面内,此时系统不稳定,这在我们确定PI控制参数时是要加以考虑的。
经过反复的手工调试,基本可以确定Ki可以选定在1~3范围之内,而Kp可以选定在0.6~2范围之内。下面我将展示一下当Ki分别取0.5、1、2、3时不同Kp值下系统的阶跃响应图与MATLAB相应源程序: %编程实现PD控制 clear;
t=[0:0.01:10]; n=[1 3 2 0]; Ki=0.5
for Kp=0.6:0.2:2
d=[2*Kp,2*Ki*Kp]; g0=tf(d,n);
g=feedback(g0,1); y=step(g,t); plot(t,y);
if ishold~=1,hold on ,end end grid
PID控制器设计教程文件
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)