如何在Matlab中获得该PID控制器的阶跃响应?

时间:2013-12-12 05:25:15

标签: matlab pid

我对控制系统比较陌生。我正在尝试获取表格的PID控制器的阶跃响应的图表     enter image description here

这是否可以在mat实验室中进行绘图,因为我得到的错误是函数无法绘制具有比零更多极点的系统的阶跃响应。 有没有办法在没有整个无限问题的情况下绘制这个系统,以便我可以观察其阶跃响应的特征? 对不起,如果我问一个看似显而易见的愚蠢问题,我会非常感谢任何帮助或解释。

这是我的PID控制器的mat实验室代码:

%3.PID Control,Td=0.001, 0.01, 0.05, 0.1
a=tf([0 0 -10],[0 1 10]);
b=tf([0 -1 -5],[1 3.5 6]);
kc=5;
Ti=1;
Td=0.001;
k1=tf([0 Td 0],[0 0 1]);       %derivative control
k2=tf([0 1],[Ti 0]);            %integral control
G=kc*(k1+k2+1);                % the controller
G1=series(a,b);
y=feedback(G,G1,-1);
subplot(2,2,1),stepplot(y),title('kc=5,Ti=1,Td=0.001');

1 个答案:

答案 0 :(得分:3)

正如thewaywewalk所提到的,MATLAB只能处理proper systems,并且纯衍生物不合适,所以你需要在传递函数中使用近似导数。使用纯衍生物并不是一个好习惯,因为它们往往会放大噪音。

查看Simulink中PID Controller block的文档,了解如何使用近似导数实现PID控制器。简而言之,您需要将Kd*s替换为Kd*s/(1+a*s),其中a与系统的主要时间常数相比较小。

修改: 创建PID的最佳方法是使用Control System Toolbox中的实际pid函数。它在衍生术语上实现了一阶导数滤波器。