matlab - 如何在Matlab中获得该PID Controller 的阶跃响应?

标签 matlab pid-controller

我对控制系统比较陌生。我正在尝试获取以下形式的 PID Controller 的阶跃响应图 enter image description here

这是否可以在 mat lab 中绘制,因为我收到错误,该函数无法绘制极点多于零的系统的阶跃响应。 有没有办法在没有整个无穷大问题的情况下绘制该系统,以便我可以观察其阶跃响应的特征? 如果我问了一个看似显而易见的愚蠢问题,我很抱歉,但我们将不胜感激任何帮助或解释。

这是我的 PID Controller 的 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');

最佳答案

正如 thewaywewalk 提到的,MATLAB 只能处理 proper systems ,并且纯导数是不合适的,因此您需要在传递函数中使用近似导数。使用纯导数从来都不是一个好的做法,因为它们往往会放大噪音。

查看 PID Controller block 上的文档在 Simulink 中了解如何实现具有近似导数的 PID Controller 。简而言之,您需要将 Kd*s 替换为 Kd*s/(1+a*s),其中 a 与系统的主导时间常数。

编辑: 创建 PID 的最佳方法是使用实​​际的 pid控制系统工具箱中的功能。它对导数项实现一阶导数滤波器。

关于matlab - 如何在Matlab中获得该PID Controller 的阶跃响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20535695/

相关文章:

matlab - MATLAB 嵌套语句和二分法的问题

delay - 在具有延迟的系统中调整pid

android - 用 C++ 实现的控制理论

c - 为 Teensy Atmega 32u4 实现 PI 控制

matlab parfor 导致比 for 循环更长的执行时间

F#中的Matlab "diff"(逐个元素减去)

matlab - 在 Matlab 中为 KNN 选择 k

c - PID在arduino中的实现

matlab - Simulink 中的 block 积分器溢出