查找PID智能调参资料时看到一篇帖子,写得挺清晰的,适合学习使用m文件进行PID调试,记录一下。
![](https://i-blog.csdnimg.cn/blog_migrate/c5ef097eb64316296d813e7d07191996.png)
被控系统的传递函数如上图所示,根据控制理论可知,可将PID控制器进行串级调控,故控制器(controller)与负载(plant)串行。
下面是使用m函数进行PID控制的代码演示。
j=0.01;
b=0.1;
k=0.01;
r=1;
l=0.5;
num=k;
den=[j*l (j*r+b*l) b*r+k^2];
% %P控制
% kp=100;
% num_p=kp*num;
% dena=den;
% sys=feedback(tf(numa,dena),1);%闭环传递函数
%
% t=100;
% step(sys,t)
% title('step response with proportion control')
% %PI控制
% kp=100;
% ki=200;
% kd=0;
% num_pi=[kd kp ki]; %PID控制器的传递函数
% denc_pi=[1,0];
%
% tf_pi=tf(num_pi,denc_pi);
%
% tf_plant=tf(num,den);
%
% tf_sys_cl=feedback(tf_pi*tf_plant,1);
% step(tf_sys_cl,2);
% title('step responsr with kp and ki');
% %PID控制
% kp=100;
% ki=200;
% kd=10;
% num_pi=[kd kp ki]; %PID控制器的传递函数
% denc_pi=[1,0];
%
% tf_pi=tf(num_pi,denc_pi);
%
% tf_plant=tf(num,den);
%
% tf_sys_cl=feedback(tf_pi*tf_plant,1);
% step(tf_sys_cl,2);
% title('step responsr with kp ki and kd');
%P控制减少系统峰值时间,加快响应速度
%增大I,系统调节时间降低
%增大D,系统超调量减少,但是会增加系统峰值时间
![](https://i-blog.csdnimg.cn/blog_migrate/f084fef11a91c3484d52d961db543d4b.png)
△使用P控制时的系统阶跃响应,调节时间很长。
![](https://i-blog.csdnimg.cn/blog_migrate/3a599068819232e3d028a57162e49d65.png)
使用PI控制,调节时间减小很多,超调量还是很大。
![](https://i-blog.csdnimg.cn/blog_migrate/0d8191bf0268e2881332a7065043435a.png)
PID控制,整个系统被调节得很好。
使用m文件进行PID参数调节,只要确定了系统的传递函数,就可以进行PID调试,省却了simulink模块搭建过程。这里使用阶跃响应step()作为系统的输入,还可以使用如斜坡响应(ramp)、加速度响应等。