LTI SISO phase margin : weird results

David PICARD d.picard at opgc.univ-bpclermont.fr
Mon Mar 8 10:58:49 CET 2010


I get weird results when I try to calculate gain margin for transfer 
functions. For example, this one :

-->Hbo=syslin(1.0,(0.263-0.656*z+0.206*z^2+0.3*z^3)/(-0.263+0.656*z+0.28*z^2-1.674*z^3+z^4))
 Hbo_s  =
 
                             2      3    
      0.263 - 0.656z + 0.206z + 0.3z     
    ----------------------------------   
                          2        3   4 
  - 0.263 + 0.656z + 0.28z - 1.674z + z  

It is a digital controller open loop transfer function.

Phase margin : p_margin(Hbo_s) returns 65.62, which is correct (checked 
with both a book and Matlab).
Gain margin : g_margin(Hbo_s) returns -41.06, which I is not what I expect.

So, I plot the frequency response with :
-->show_margins(Hbo_s,'nyquist')
to try to figure out the gain margin graphically.

The gain margin is the inverse of the gain of the transfer function when 
the phase is -180°).

The curve crosses the X axis at -0.368, which leads to gain_margin = 
1/0.368 = 2.7, which is the value given in my book and returned by 
Matlab (margin() ).
In addition, the blue line that I assume, shows the gain margin, extends 
way beyond -0.368, probably as far as -41.06.

Did I get something wrong here ? Thanks.

My configuration : Scilab 5.2.1, Windows XP SP3






More information about the users mailing list