I have a stable system transfer function wich I'm trying to control with a PID controller. The funcion is:
2.494e-008 s^4 + 8.735e-010 s^3 - 5.82e-016 s^2
-------------------------------------------------
s^6 + 0.05155 s^5 + 0.001775 s^4 + 4.491e-005 s^3
and I'm trying to control it with this PID:
9e006 s^2 + 8e006 s + 8e5
-------------------------------------
s
When I do that, I obtain an unstablesystem transer function, with one pole with positive real part, but when I simulate it for a step, I get a stable response. Anyone know what's going on?
G(1)=tf([2.494e-008 8.735e-010 -5.82e-016 0 0],[1 0.05155 0.001775 4.491e-005 0 0 0]);
Kp=8e6;
Ki=8e5;
Kd=9e6;
l=tf([Kd Kp Ki],[1 0]);
n=feedback(l*G(1),1);
step(n,t)
I get this plot as a response: http://tinypic.com/r/1fv6sp/8
Which is great, but does not match the transfer function.

 채택된 답변

Yu Jiang
Yu Jiang 2014년 8월 4일
편집: Yu Jiang 2014년 8월 4일

4 개 추천

I have computed the poles of the closed-loop system by executing the following command in the MATLAB command line.
>> [z,p,k] = zpkdata(n);
>> p{:}
Note that I use the function zpkdata (See Documentation) to read the poles of the system. The results are shown below
ans =
0.0000 + 0.0000i
0.0000 + 0.0000i
-0.0670 + 0.4265i
-0.0670 - 0.4265i
-0.1071 + 0.0000i
-0.0350 + 0.0000i
0.0000 + 0.0000i
It seems that there are no eigenvalues with positive real parts.
Even if the system is unstable, it does not necessarily mean its step response will diverge. Here is an example
>> A = [1 1; 0 -1]; B = [0;1]; C= [0, 1]; D=0;
>> sys = ss(A,B,C,D);
>> step(sys)
The step response is convergent. However, the system is unstable since A contains 1 as an eigenvalue.

댓글 수: 3

Daniela
Daniela 2014년 8월 5일
To me it shows the system has the pole 6.6627e-7.
But the example with the unstable system really helped. Thanks!
Daan van Vrede
Daan van Vrede 2018년 6월 4일
@Yu Yiang, regarding your statement: "Even if the system is unstable, it does not necessarily mean its step response will diverge. Here is an example".
In this case there is a pole/zero cancellation. The positive (i.e. unstable) pole cancels out. Taking that into account, the system is actually stable (since only the -ve pole is left over) and hence there is no surprise that the step response does not diverge. The matlab function minreal() can be used to evaluate pole/zero cancellation: https://nl.mathworks.com/help/control/ref/minreal.html
Rohan Madnani
Rohan Madnani 2019년 12월 5일
Is the converse also true? "Even if a system is stable, it does not necessarily mean that its step response will converge", because I am facing this issue. My tranfer function is stable as per Bode plot, but the step response is diverging. Kindly help

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Control System Toolbox에 대해 자세히 알아보기

질문:

2014년 8월 3일

댓글:

2019년 12월 5일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by