数字PID控制器模拟化设计方法仿真实验

发布于 2021-11-14  57 次阅读


1、讨论未串接控制器时,闭环系统的输出是否达到性能指标要求。

  在Matlab中对 G_{(s)}=\frac{12}{(s+1)(s+2)(s+3)} 进行仿真可得输出响应如下图所示:
kvy3vgzp.png
  由图像可知,调节时间Ts=5.24s;超调量\sigma \%=\frac{0.8214-0.6659}{0.6659} \times 100 \%=23.35 \%,达不到性能指标要求。

2、扩充临界比例度法

(1)、求出临界稳定时对应的K值。

  运行代码:

num=12;
den=conv([1,1],conv([1,2],[1,3]));
g=tf(num,den);
rlocus(g);

  求得根轨迹如下图所示:
kvy40del.png
  由图像可知,临界点对应的增益K=4.87。

(2)、画出纯比例控制时的系统临界稳定输出图形,求出临界比例度和临界振荡周期。

  运行代码:

num=12;
den=conv([1,1],conv([1,2],[1,3]));
g=tf(num,den);
kp=4.87; 
gc=feedback(g*kp,1);
t=0:0.01:10;step(gc,t);
grid on;

  求得临界稳定输出图形如下图所示:
kvy455xj.png
  临界振荡周期Tr=1.91s;临界比例度为1/4.87。

(3)、根据扩充临界比例度法,写出模拟调节器控制度为1.05和控制度为1.5时的系统的PID参数。

  获取控制度为1.05的PID参数,运行以下代码:

tu=1.91;
detak=1/4.87; 
T=0.014*tu;
kp=0.63*detak;
ti=0.49*tu;
td=0.14*tu;
T,kp,ti,td

  计算得PID参数为: 比例系数KP =0.1294,积分时间常数TI =0.9359,微分时间常数TD=0.2674,采样周期T=0.2674。
  获取控制度为1.5的PID参数,运行以下代码:

tu=1.91;
detak=1/4.87;
T=0.09*tu;
kp=0.34*detak;
ti=0.43*tu;
td=0.20*tu;
T,kp,ti,td

  计算得控制度为1.5时的PID参数为: 比例系数KP =0.0698,积分时间常数TI =0.8213,微分时间常数TD=0.3820,采样周期T=0.1719。

(4)、根据扩充临界比例度法,写出控制度为1.05和控制度为1.5时的系统的位置式PID控制算式。

  控制度为1.05时:T=0.014 \operatorname{Tr} ; $\mathrm{Kp}=0.63 \delta{r} ;T{I}=0.49 \operatorname{Tr} ;T_{d}=0.14 \mathrm{Tr}$

  控制度为1.5时:T=0.09 \mathrm{Tr}; $\mathrm{Kp}=0.34 \delta{r} ;T{I}=0.43 \mathrm{Tr} ;T_{d}=0.20 \mathrm{Tr}$

(5)、画出模拟调节器、控制度为1.05和控制度为1.5时的系统的单位阶跃响应图。讨论不同控制度的PID参数变化情况,分析控制效果(性能指标)。

  运行下列代码:

num=12;
den=conv([1,1],conv([1,2],[1,3]));
gg=tf(num,den);
t=0:0.01:10;
figure(1);
step(gg,'y');
hold on;
%以下用扩充临界比例度法进行参数整定¨
tu=1.91;
detak=1/4.87;
%控制度为1.05的PID控制器
T=0.014*tu;
kp=0.63*detak;
ti=0.49*tu;
td=0.14*tu;
ggd=c2d(gg,T,'zoh');
d0=1+T/ti+td/T;
d1=-1-2*td/T;
d2=td/T;
numd=kp*[d0 d1 d2];
dend=[1 -1 0];
dd=tf(numd,dend,T); 
sysd=feedback(ggd*dd,1);
step(sysd,'r');
hold on;
%控制度为1.5的PID调节器
T=0.09*tu;
kp=0.34*detak;
ti=0.43*tu;
td=0.20*tu;
ggd=c2d(gg,T,'zoh');
d0=1+T/ti+td/T;
d1=-1-2*td/T;
d2=td/T;
numd=kp*[d0 d1 d2];
dend=[1 -1 0];
dd=tf(numd,dend,T);
sysd=feedback(ggd*dd,1);
step(sysd,'b');
title('黄线:未串接控制器的单位阶跃响应。红线:串接1.05的PID;蓝线:串接1.5的PID');

  获得未串接PID控制器、串接1.05PID控制器和串接1.5PID控制器的开环阶跃响应如下图所示:
kvyy6wo0.png
  由图可看出,未串接PID控制器时,系统超调量100%。串接1.05控制度的PID控制器或1.5控制度的PID控制器后,系统无超调量。串接1.05控制度的PID控制器的系统上升时间为14.3s,串接1.05控制度的PID控制器的系统上升时间为26s。根据不同控制度的响应曲线,可知控制度为1.05的上升时间更小,更接近性能指标。

3、试凑法

  选择扩充临界比例度法中控制度为1.05的PID参数,代入系统,根据试凑法调节系统PID参数中的T,Kp,Ti,Td的值,使系统输出满足给出的性能指标要求,给出满足指标要求的T,Kp,Ti,Td的值及单位阶跃响应图。
  由于系统没有超调,要加快系统的响应,可增加kp的值,使比例项作用更快,增大积分系数,积分作用减弱,减小Kp增大后出现的超调量。所以在原来1.05的参数基础上增大kp和增大积分系数至输出达到性能指标要求。

  运行下列代码:

num=12;
den=conv([1,1],conv([1,2],[1,3]));
gg=tf(num,den);
tu=1.91;
detak=1/4.87;
%以控制度为1.05的PID参数为初值进行试凑
T=0.014*tu;
kp=1.8*detak;   %增大kp
ti=0.65*tu;     %增大ti   
td=0.14*tu;
T,kp,ti,td
ggd=c2d(gg,T,'zoh');
d0=1+T/ti+td/T;
d1=-1-2*td/T;
d2=td/T;
numd=kp*[d0 d1 d2];
dend=[1 -1 0];
dd=tf(numd,dend,T);
sysd=feedback(ggd*dd,1);
t=0:0.01:10;
figure(2);
step(sysd,'b');
hold on;
%控制度为1.05的PID
kp=0.63*detak;
ti=0.49*tu;
td=0.14*tu;
T=0.014*tu;
ggd=c2d(gg,T,'zoh');
d0=1+T/ti+td/T;
d1=-1-2*td/T;
d2=td/T;
numd=kp*[d0 d1 d2];
dend=[1 -1 0];
dd=tf(numd,dend,T);
sysd=feedback(ggd*dd,1);
step(sysd,'r');
title('串控制器后的单位阶跃响应,蓝线:试凑法;红线:控制度为1.05的PID');

  获得到对比图如下所示:
kvyyfxb4.png

  试凑法得到的响应曲线,上升时间4.49s,无超调量,符合性能要求。
  试凑法获得的PID参数:Kp=0.3696;Ti=1.2415;Td=0.2674;T=0.0267s

4、扩充响应曲线法

(1)、画出对象阶跃响应曲线图,求出等效滞后时间常数τ和等效惯性时间常数Tm。

  运行下列代码:

num=12;
den=conv([1,1],conv([1,2],[1,3]));
gg=tf(num,den);
step(gg);
k=dcgain(gg)

  计算得,K=2,对象阶跃响应曲线图如下所示:
kvyyi8au.png
  由图可知,τ=0.399;Tm=2.76-0.399=2.361

(2)、根据扩充响应曲线法,选取合适的控制度,写出对应的PID参数。

  选取1.05控制度的PID控制器,运行下列代码:

num=12;
den=conv([1,1],conv([1,2],[1,3]));
gg=tf(num,den);
figure(1);
step(gg);
tao=0.399;
Tm=2.361;
%选取控制度为1.05
T=0.05*tao;
kp=0.15*Tm/tao;
ti=2*tao;
td=0.45*tao;
T,kp,ti,td,

  求得PID控制器参数:T = 0.0200;kp = 0.8876;ti = 0.7980;td = 0.1796。


间接性发奋图强,持续性混吃等死