Sei sulla pagina 1di 81

Scilab Textbook Companion for Control Systems Engineering by Nagrath I.J. and Gopal M.

1
Created by Anuj Sharma B.E. (pursuing) Electrical Engineering Delhi Technological University College Teacher Ram Bhagat, DTU, Delhi Cross-Checked by sonanaya tatikola, IITB June 28, 2012

by a grant from the National Mission on Education through ICT, http://spoken-tutorial.org/NMEICT-Intro. This Textbook Companion and Scilab codes written in it can be downloaded from the Textbook Companion Project section at the website http://scilab.in

1 Funded

Book Description
Title: Control Systems Engineering Author: Nagrath I.J. and Gopal M. Publisher: New Age Publisher, Delhi Edition: 3 Year: 2007 ISBN: 81-224-1192-4

Scilab numbering policy used in this document and the relation to the above book. Exa Example (Solved example) Eqn Equation (Particular equation of the above book) AP Appendix to Example(Scilab Code that is an Appednix to a particular Example of the above book) For example, Exa 3.51 means solved example 3.51 of this book. Sec 2.3 means a scilab code whose theory is explained in Section 2.3 of the book.

Contents
List of Scilab Codes 2 Mathematical Models of Physical Systems 3 Feedback Characteristics of control sytems 4 9 11

5 Time Response analysis design specications and performance indices 15 6 Concepts of stability and Algebraic Criteria 7 The Root Locus Technique 9 Stability in Frequency Domain 10 Introduction to Design 12 State Variable Analysis and Design 21 30 42 61 75

List of Scilab Codes


Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa 2.3 2.4 3.2 3.3.a 3.3.b 3.3.c 3.3.d 3.3.f 3.3.g 5.2 5.2.2 5.3 5.3.2 5.4.1 5.4.2 5.4.3 5.8 5.9 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 signal ow graph . . . . . . . . transfer function . . . . . . . . sensitivity of transfer function . sensitivity of transfer function . steady state error . . . . . . . calculation of slope . . . . . . . calculation of slope . . . . . . . calculation of input . . . . . . calculation of time . . . . . . . steady state error . . . . . . . steady state error . . . . . . . transfer function . . . . . . . . transfer function . . . . . . . . steady state error . . . . . . . steady state error . . . . . . . steady state error . . . . . . . steady state error . . . . . . . state variable analysis . . . . . hurwitz criterion . . . . . . . . routh array . . . . . . . . . . . routh array . . . . . . . . . . . routh array . . . . . . . . . . . routh array . . . . . . . . . . . routh criterion . . . . . . . . . routh array . . . . . . . . . . . routh array . . . . . . . . . . . routh array . . . . . . . . . . . routh array . . . . . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 11 11 12 12 13 13 14 15 16 16 17 17 18 18 19 19 21 22 22 23 23 24 25 26 26 27

Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa Exa

6.11.a 6.11.b 7.1 7.2 7.3 7.4 7.6 7.8 7.9 7.10 9.1 9.2 9.3 9.4 9.5 9.6 9.7.a 9.7.b 9.8.a 9.8.b 9.10 9.11 9.13.a 9.13.b 9.14 9.15 10.6 10.7 10.8 10.9 12.3 12.4 12.5 12.6 12.7 12.12 12.13 12.14

routh array . . . . . . . . . . . . . . . . . routh array . . . . . . . . . . . . . . . . . root locus . . . . . . . . . . . . . . . . . . root locus . . . . . . . . . . . . . . . . . . root locus . . . . . . . . . . . . . . . . . . root locus . . . . . . . . . . . . . . . . . . root locus . . . . . . . . . . . . . . . . . . root locus . . . . . . . . . . . . . . . . . . root locus . . . . . . . . . . . . . . . . . . root locus . . . . . . . . . . . . . . . . . . nyquist plot . . . . . . . . . . . . . . . . . nyquist plot . . . . . . . . . . . . . . . . . nyquist plot . . . . . . . . . . . . . . . . . nyquist plot . . . . . . . . . . . . . . . . . nyquist plot . . . . . . . . . . . . . . . . . stability using nyquist plot . . . . . . . . stability using nyquist plot . . . . . . . . stability using nyquist plot . . . . . . . . nyquist criterion . . . . . . . . . . . . . . nyquist criterion . . . . . . . . . . . . . . gm and pm using nyquist plot . . . . . . . bode plot . . . . . . . . . . . . . . . . . . bode plot . . . . . . . . . . . . . . . . . . bode plot . . . . . . . . . . . . . . . . . . m circles . . . . . . . . . . . . . . . . . . m circles . . . . . . . . . . . . . . . . . . lead compensation . . . . . . . . . . . . . lead compensation . . . . . . . . . . . . . lag compnsation . . . . . . . . . . . . . . lag and lead compensation . . . . . . . . state matrix . . . . . . . . . . . . . . . . modal matrix . . . . . . . . . . . . . . . . obtain time response . . . . . . . . . . . . resolvant matrix . . . . . . . . . . . . . . state transition matrix and state response check for controllability . . . . . . . . . . check for controllability . . . . . . . . . . check for observability . . . . . . . . . . . 5

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27 28 30 30 32 33 35 37 39 39 42 42 44 45 47 49 51 52 53 53 53 55 56 57 58 59 61 64 67 70 75 75 76 77 77 78 79 79

Exa 12.17 design state observer . . . . . . . . . . . . . . . . . . .

80

List of Figures
7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10 9.11 9.12 9.13 9.14 9.15 10.1 10.2 10.3 10.4 root root root root root root root root locus locus locus locus locus locus locus locus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 32 33 34 35 36 38 40 43 44 45 46 47 48 50 51 52 54 55 56 57 58 60 62 63 65 66

nyquist plot . . . . . . . . . . nyquist plot . . . . . . . . . . nyquist plot . . . . . . . . . . nyquist plot . . . . . . . . . . nyquist plot . . . . . . . . . . nyquist plot . . . . . . . . . . stability using nyquist plot . stability using nyquist plot . stability using nyquist plot . gm and pm using nyquist plot bode plot . . . . . . . . . . . bode plot . . . . . . . . . . . bode plot . . . . . . . . . . . m circles . . . . . . . . . . . . m circles . . . . . . . . . . . . lead lead lead lead compensation compensation compensation compensation . . . . . . . . . . . . . . . . . . . . . . . . 7

10.5 10.6 10.7 10.8

lag lag lag lag

compnsation . . . . . . compnsation . . . . . . and lead compensation and lead compensation

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

68 69 71 72

Chapter 2 Mathematical Models of Physical Systems

Scilab code Exa 2.3 signal ow graph


1 s = %s ; 2 syms L C R1 R2 3 // f o r w a r d p a t h d e n o t e d by P ! and l o o p by L1 , L2 and 4 5 6 7 8 9 10 11 12

s o on // p a t h f a c t o r by D1 and g r a p h d e t e r m i n a n t by D P1 =1/( s * L * s * C ) ; L1 = - R1 /( s * L ) ; L2 = -1/( s * R2 * C ) ; L3 = -1/( s ^2* L * C ) ; D1 =1; D =1 -( L1 + L2 + L3 ) ; Y =( P1 * D1 ) / D ; disp (Y , T r a n s f e r f u n c t i o n= )

Scilab code Exa 2.4 transfer function

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

syms xv Qf Qo Cf Co V Qw Kv Qo = Qw + Qf ; // r a t e o f s a l t i n f l o w mi = Qf * Cf ; // r a t e o f s a l t o u t f l o w mo = Qo * Co ; // r a t e o f s a l t a c c u m u l a t i o n ma = diff ( V * Co , t ) ; mi = ma + mo ; Qf * Cf = V * diff ( Co , t ) + Qo * Co ; Qf = Kv * xv ; K = Cf * Kv / Qo ; G = V / Qo ; G * diff ( Co , t ) + Co = K * xv ; // t a k i n g l a p l a c e G * s * Co + Co = K * xv ; // t r a n s f e r f u n c t i o n= Co/ xv Co / xv = K /( G * s +1) ;

10

Chapter 3 Feedback Characteristics of control sytems

Scilab code Exa 3.2 sensitivity of transfer function


1 2 3 4 5 6 7 8 9 10 11 12

syms K ; s = %s ; G = syslin ( c ,25( s +1) /( s +5) ) ; p=K; q = s ^2+ s ; J=p/q; F=G*J; T = F /(1+ F ) ; // C l o s e d l o o p t r a n s f e r f u n c t i o n disp (T , C( s ) /R( s ) ) // s e n s i t i v i t y w . r . t K = dT/dK K/T S =( diff (T , K ) ) *( K / T ) disp (S , S e n s i t i v i t y )

Scilab code Exa 3.3.a sensitivity of transfer function


1

syms K1 K t ; 11

2 3 4 5 6 7 8 9 10 11 12 13 14 15

s = %s ; p = K1 * K ; q = t * s +1+( K1 * K ) ; T=p/q; disp (T , V( s ) /R( s ) ) // s e n s i t i v i t y w . r . t K i s dT/dK K/T S =( diff (T , K ) ) *( K / T ) // g i v e n K1=50 K=1.5 s =0 S = horner (S , s ) K1 =50; K =1.5; S =1/(1+ K1 * K ) disp (S , s e n s i t i v i t y = )

Scilab code Exa 3.3.b steady state error


1 2 3 4 5 6 7 8 9 10 11 12 13 14

syms A K K1 t s = %s ; p = K1 * K * A ; q = s *(1+( t * s ) +( K1 * K ) ) ; K =1.5; K1 =50; V=p/q v = limit ( s *V ,s ,0) // g i v e n s t e a d y s t a t e s p e e d = 60km/ h r A =60*(1+( K1 * K ) ) /( K1 * K ) // s t e a d y e r r o r e ( s s )=Av v =60; e =A - v ; disp (e , e ( s s )= )

Scilab code Exa 3.3.c calculation of slope 12

1 2 3 4 5 6 7 8 9

// u n d e r s t a l l e d c o n d i t i o n s syms Kg K1 D ; A =60.8; A * K1 = Kg * D ; // g i v e n Kg=100 Kg =100; K1 =50; D =( A * K1 ) / Kg ; disp (D , u p s l o p e= )

Scilab code Exa 3.3.d calculation of slope


1 2 3 4 5 6 7 8

// s t e a d y s p e e d =10km/ h r syms K Kg D ((( A -10) * K1 ) -( - D * Kg ) ) K =100; A =(60.8*10) /60; K =1.5; Kg =100; D =((100/ K ) -((A -10) * K ) ) / Kg ; disp (D , Down s l o p e= )

Scilab code Exa 3.3.f calculation of input


1 2 3 4 5 6 7 8 9 10

// f o r open l o o p s y s t e m // g i v e n s p e e d =60km/ h r syms R K1 K ; ( R * K1 * K ) =60 K1 =50; K =1.5; R =60/( K1 * K ) disp (R , I n p u t open= ) // f o r c l o s e d l o o p R =60(1+( K1 * K ) ) /( K1 * K ) 13

11

disp (R , I n p u t c l o s e d= )

Scilab code Exa 3.3.g calculation of time


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

// f o r open l o o p syms t g s ; s = %s ; K1 =50; K =1.5; g =20; V = syslin ( c ,(( K1 * K ) *0.8) /( s *(( g * s ) +1) ) ) // t a k i n g i n v e r s e l a p l a c e v = ilaplace (V ,s , t ) v =60(11 - %e ^( - t /20) ) // g i v e n v=90% v =0.9; t = -20* log (1 - v ) ; disp (t , t i m e open= ) // f o r c l o s e d l o o p syms K g s = %s ; V = syslin ( c ,(60.8* K ) /( s *(( g * s ) +1) ) ) // t a k i n g i n v e r s e l a p l a c e v = ilaplace (V ,s , t ) // g i v e n K =75/76; g =.263; v =60(1 - %e ^( - t /.263) ) // a t v=90% v =0.9; t = -.263* log (1 -( v /60) ) ; disp (t , t i m e c l o s e d= )

14

Chapter 5 Time Response analysis design specications and performance indices

Scilab code Exa 5.2 steady state error


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

s = %s syms K J f K =60; // g i v e n J =10; // g i v e n p=K/J q = K / J +( f / J ) * s + s ^2 G=p/q; disp (G , Qo ( s ) / Qi ( s )= ) zeta =0.3; // g i v e n cof1 = coeffs (q , s ,0) // on c o m p a r i n g t h e c o e f f i c i e n t s Wn = sqrt ( cof1 ) cof2 = coeffs (q , s ,1) // 2 z e t a Wn=c o f 2 f / J =2* zeta * Wn r = s ^2+ f / J s = s ^2+ f / J + K / J 15

18 H = r / s ; 19 disp (H , Qe ( s ) / Qi ( s )= )

Scilab code Exa 5.2.2 steady state error


1 // g i v e n Qi ( s ) = 0 . 0 4 / s 2 2 Qi =0.04/ s ^2; 3 e = limit ( s * Qi *H ,s ,0) 4 disp (e , S t e a d y s t s t e e r o r= )

Scilab code Exa 5.3 transfer function


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

s = %s ; syms Kp Ka Kt J f // g i v e n J =0.4; Kp =0.6; Kt =2; f =2; p = Kp * Ka * Kt q = s ^2+ f / J +( Kp * Ka * Kt ) / J G=p/q; disp (G , Qm( s ) /Qr ( s )= ) cof_1 = coeffs (q , s ,0) // on c o m p a r i n g t h e c o e f f i c i e n t s // Wn=s q r t ( c o f 1 ) Wn =10; Ka =( Wn ) ^2* J /( Kp * f ) disp ( Ka , A m p l i f i e r C o n s t a n t= )

16

Scilab code Exa 5.3.2 transfer function


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

s = %s ; syms Kp Ka Kt Kd J f // g i v e n J =0.4; Kp =0.6; Kt =2; f =2; Ka =5; p = Kp * Ka * Kt q = s ^2+(( f + Ka * Kd * Kt ) / J ) * s +( Kp * Ka * Kt ) / J G=p/q; disp (G , Qm( s ) /Qr ( s )= ) cof_1 = coeffs (q , s ,0) // on c o m p a r i n g t h e c o e f f i c i e n t s Wn = sqrt ( cof_1 ) zeta =1 // g i v e n cof_2 = coeffs (q , s ,1) // 2 z e t a Wn=c o f 2 Kd =(2* zeta * sqrt ( Kp * J * Ka * Kt ) -f ) /( Ka * Kt ) disp ( Kd , T a c h o g e n e r t o r c o n s t a n t= )

Scilab code Exa 5.4.1 steady state error


1 syms Wn zeta Kv Ess 2 s = %s ; 3 p = poly ([8 2 1] , s , c o e f f ) ; // c h a r a c t e r i s t i c 4 5 6 7 8 9

equation z = coeff ( p ) ; Wn = sqrt ( z (1 ,1) ) zeta = z (1 ,2) /(2* Wn ) Kv = z (1 ,1) / z (1 ,2) Ess =1/ Kv // S t e a d y s t a t e e r r o r f o r u n i t ramp i / p disp ( Ess , S t e a d y s t a t e E r r o r= ) 17

Scilab code Exa 5.4.2 steady state error


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

// w i t h d e r i v a t i v e f e e d b a c k // c h a r a c t e r i s t i c e q u a t i o n i s syms a s = %s ; p = s ^2+(2+(8* a ) ) * s +8=0 zeta =0.7 // g i v e n Wn =2.828; cof_1 = coeffs (p , s ,1) // on c o m p a r i n g 2 z e t a Wn=c o f 1 a =((2* zeta * Wn ) -2) /8 disp (a , D e r i v a t i v e f e e d b a c k= ) cof_2 = coeffs (p , s ,0) cof_1 =2+8*0.245; Kv = cof_2 / cof_1 ; Ess =1/ Kv disp ( Ess , S t e a d y s t a t e e r r o r= )

Scilab code Exa 5.4.3 steady state error


1 2 3 4 5 6 7 8 9 10

// l e t t h e c h a r e q u a t i o n be syms Ka s = %s ; p = s ^2+(2+( a * Ka ) ) * s + Ka =0 cof_1 = coeffs (p , s ,0) // Wn2= c o f 1 Wn = sqrt ( cof_1 ) cof_2 = coeffs (p , s ,1) // 2 z e t a Wn=c o f 2 Kv = cof_1 / cof_2 ; 18

11 Ess =1/ Kv ; 12 // g i v e n E s s =0.25 13 Ess =0.25; 14 Ka =2/( Ess - a ) 15 disp ( Ka . Ka= )

Scilab code Exa 5.8 steady state error


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

s = %s ; syms K V p = s ^2+(100* K ) * s +100=0 cof_1 = coeffs (p , s ,0) Wn = sqrt ( cof_1 ) zeta =1 // g i v e n cof_2 = coeffs (p , s ,1) // 2 z e t a Wn=c o f 2 K =(2* Wn * zeta ) /100 // For ramp i n p u t R = V / s ^2 E=R/p // s t e a d y s t a t e e r r o r e = limit ( s * E ( s ) ,s ,0) disp (e , e ( s s )= )

Scilab code Exa 5.9 state variable analysis


1 2 3 4 5 6 7

s = %s ; syms t m A =[0 1; -100 -20]; B =[0;100]; C =[1 0]; x =[0;0]; [ r c ]= size ( A ) 19

8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

p = s * eye (r , c ) -A q = inv ( p ) ; disp (q , p h i ( s )= ) // R e s o l v a n t m a t r i x for i =1: r ; for j =1: c ; q (i , j ) = ilaplace ( q (i , j ) ,s , t ) end end disp (q , p h i ( t )= ) // S t a t e t r a n s i t i o n m a t r i x t =t - m ; q = eval ( q ) // I n t e g r a t e q w . r . t m r = integrate ( q *B , m ) m =0 // Upper l i m i t i s t g = eval ( r ) // P u t i n g u p p e r l i m i t i n q m = t // Lower l i m i t i s 0 h = eval ( r ) // P u t t i n g l o w e r l i m i t i n q y =( h - g ) ; disp (y , y= ) printf ( x ( t )=p h i ( t ) x ( 0 )+ i n t e g r a t e ( p h i ( t mB) w . r . t m from 0 t o t ) ) y1 =( q * x ) + y ; disp ( y1 , x ( t )= ) // t r a n s f e r f u n c t i o n t=C*q*B; disp (t , T( s )= )

20

Chapter 6 Concepts of stability and Algebraic Criteria

Scilab code Exa 6.1 hurwitz criterion


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

s = %s ; p = s ^4+8* s ^3+18* s ^2+16* s +5 r = coeff ( p ) D1 = r (4) d2 =[ r (4) r (5) ; r (2) r (3) ] D2 = det ( d2 ) ; d3 =[ r (4) r (5) 0; r (2) r (3) r (4) ;0 r (1) r (2) ] D3 = det ( d3 ) ; d4 =[ r (4) r (5) 0 0; r (2) r (3) r (4) r (5) ;0 r (1) r (2) r (3) ;0 0 0 r (1) ] D4 = det ( d4 ) ; disp ( D1 , D1= ) disp ( D2 , D2= ) disp ( D3 , D3= ) disp ( D4 , D4= ) printf ( S i n c e a l l t h e d e t e r m i n a n t s a r e p o s i t i v e t h e system i s s t a b l e )

21

Scilab code Exa 6.2 routh array


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

s = %s ; p = s ^4+8* s ^3+18* s ^2+16* s +5 r = routh_t ( p ) m = coeff ( p ) l = length ( m ) c =0; for i =1: l if ( r (i ,1) <0) c = c +1; end end if (c >=1) printf ( System i s u n s t a b l e ) else ( Sysem i s s t a b l e ) end

Scilab code Exa 6.3 routh array


1 2 3 4 5 6 7 8 9 10 11 12

s = %s ; p =3* s ^4+10* s ^3+5* s ^2+5* s +2 r = routh_t ( p ) m = coeff ( p ) l = length ( m ) c =0; for i =1: l if ( r (i ,1) <0) c = c +1; end end if (c >=1) 22

13 printf ( System i s u n s t a b l e ) 14 else ( Sysem i s s t a b l e ) 15 end

Scilab code Exa 6.4 routh array


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

s = %s ; syms Kv Kd Kp Kt p = s ^3+(1+( Kv * Kd ) ) * s ^2+( Kv * Kp ) * s +( Kp * Kt ) cof_a_0 = coeffs (p , s ,0) ; cof_a_1 = coeffs (p , s ,1) ; cof_a_2 = coeffs (p , s ,2) ; cof_a_3 = coeffs (p , s ,3) ; r =[ cof_a_0 cof_a_1 cof_a_2 cof_a_3 ] n = length ( r ) ; routh =[ r ([4 ,2]) ; r ([3 ,1]) ] routh =[ routh ; - det ( routh ) / routh (2 ,1) ,0] t = routh (2:3 ,1:2) ; routh =[ routh ; - det ( t ) / routh (3 ,1) ,0] disp ( routh , r o u t h= ) ; // f o r s t a b i l i t y r ( : , 1 ) >0 // f o r t h e g i v e n t a b l e b = routh (3 ,1) disp ( f o r s t a b i l i t y b , >0 )

Scilab code Exa 6.5 routh array


1 s = %s ; 2 syms K 3 p =(1+ K ) * s ^2+((3* K ) -0.9) * s +(2 K -1) 4 cof_a_0 = coeffs (p , s ,0) ; 5 cof_a_1 = coeffs (p , s ,1) ; 6 cof_a_2 = coeffs (p , s ,2) ;

23

7 r =[ cof_a_0 cof_a_1 cof_a_2 ] 8 n = length ( r ) ; 9 routh =[ r ([3 ,1]) ; r (2) ,0]; 10 routh =[ routh ; - det ( routh ) / routh (2 ,1) ,0]; 11 disp ( routh , r o u t h= ) 12 // f o r no r o o t i n r i g h t h a l f 13 // r o u t h ( 1 , 1 ) , r o u t h ( 2 , 1 ) , r o u t h ( 3 , 1 ) >0 14 routh (1 ,1) =0 15 routh (2 ,1) =0 16 routh (3 ,1) =0 17 // c o m b i n i n g t h e r e s u l t 18 K =0.9/3; 19 disp (K , For no r o o t s i n r i g h t h a l f = ) 20 // f o r 1 p o l e i n r i g h t h a l f i . e . one s i g n c h a n g e 21 // r o u t h ( 1 , 1 ) >0 n r o u t h ( 3 , 1 ) <0 22 disp ( For one p o l e i n r i g h t h a l f , 1<K< 0.05 ) 23 // f o r 2 p o l e s i n r i g h t h a l f 24 // r o u t h ( 2 , 1 ) <0 n r o u t h ( 3 , 1 ) >0 25 disp ( For 2 p o l e s i n r i g h t h a l f , 0.05 < K< 0.3 )

Scilab code Exa 6.6 routh criterion


1 2 3 4 5 6 7 8 9 10 11 12 13

s = %s ; syms K p = s ^2 -( K +2) * s +((2* K ) +5) cof_a_0 = coeffs (p , s ,0) ; cof_a_1 = coeffs (p , s ,1) ; cof_a_2 = coeffs (p , s ,2) ; r =[ cof_a_0 cof_a_1 cof_a_2 ] n = length ( r ) ; routh =[ r ([3 ,1]) ; r (2) ,0]; routh =[ routh ; - det ( routh ) / routh (2 ,1) ,0]; disp ( routh , r o u t h= ) // f o r s y s t e m t o be s t a b l e routh (2 ,1) >0 24

14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

K < -2; routh (3 ,1) >0 K > -2.5; disp ( For s t a b l e system , 2>K> 2.5 ) // f o r l i m i t e d s t a b i l i t y routh (2 ,1) =0 K = -2 routh (3 ,1) =0 K = -2.5 disp ( For l i m t e d s t a b l e s y s t e m K=2 and K= 2.5 ) // f o r u n s t a b l e s y s t e m disp ( For u n s t a b l e s y s t e m K<2 o r K> 2.5 ) roots ( p ) // g i v e s t h e r o o t s o f t h e p o l y n o m i a l m // f o r c r i t i c a l l y damped c a s e g =( K +2) ^2 -4*((2* K ) +5) roots ( g ) // f o r s t a b l i t y K=6.47 i s u n s t a b l e // f o r c r i t i c a l damping K= 2.47 disp ( For underdamded c a s e , 2>K> 2.47 ) disp ( f o r overdamped c a s e , 2.47 >K> 2.5 )

Scilab code Exa 6.7 routh array s = %s ; syms eps p = s ^5+ s ^4+2* s ^3+2* s ^2+3* s +5 r = coeff ( p ) ; n = length ( r ) ; routh =[ r ([6 ,4 ,2]) ; r ([5 ,3 ,1]) ] syms eps ; routh =[ routh ; eps , - det ( routh (1:2 ,2:3) ) / routh (2 ,2) ,0]; routh =[ routh ; - det ( routh (2:3 ,1:2) ) / routh (3 ,1) ,- det ( routh (2:3 ,2:3) ) / routh (4 ,2) ,0]; 10 routh =[ routh ; - det ( routh (4:5 ,1:2) ) / routh (5 ,1) ,0 ,0]; 11 disp ( routh , r o u t h= ) 25
1 2 3 4 5 6 7 8 9

12 13 14 15 16 17

// t o c h e c k s t a b i l i t y routh (4 ,1) =8 - limit (5/ eps , eps ,0) ; disp ( routh (4 ,1) , r o u t h ( 4 , 1 )= ) routh (5 ,1) = limit ( routh (5 ,1) ,eps ,0) ; disp ( routh (5 ,1) , r o u t h ( 5 , 1 )= ) printf ( There a r e two s i g n c h a n g e s o f f i r s t column hence the system i s u n s t a b l e )

Scilab code Exa 6.8 routh array


1 s = %s ; 2 p = s ^6+2* s ^5+8* s ^4+12* s ^3+20* s ^2+16* s +16 3 r = routh_t ( p ) 4 roots ( p ) 5 disp (0 , t h e number o f r e a l p a r t o f r o o t s

lying in

the r i g h t h a l f ) 6 printf ( System i s s t a b l e )

Scilab code Exa 6.9 routh array


1 2 3 4 5 6 7 8 9 10 11 12

s = %s ; syms K a p = s ^4+10* s ^3+32* s ^2+( K +32) * s +( K * a ) cof_a_0 = coeffs (p , s ,0) ; cof_a_1 = coeffs (p , s ,1) ; cof_a_2 = coeffs (p , s ,2) ; cof_a_3 = coeffs (p , s ,3) ; cof_a_4 = coeffs (p , s ,4) ; r =[ cof_a_0 cof_a_1 cof_a_3 cof_a_4 ] n = length ( r ) ; routh =[ r ([5 ,3 ,1]) ; r ([4 ,2]) ,0] routh =[ routh ; - det ( routh (1:2 ,1:2) ) / routh (2 ,1) ,- det ( routh (1:2 ,2:3) ) / routh (2 ,2) ,0]; 26

13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

routh =[ routh ; - det ( routh (2:3 ,1:2) ) / routh (3 ,1) ,- det ( routh (2:3 ,2:3) ) / routh (3 ,2) ,0]; routh =[ routh ; - det ( routh (3:4 ,1:2) ) / routh (4 ,1) ,0 ,0]; disp ( routh , r o u t h= ) // f o r t h e g i v e n s y s t e m t o be s t a b l e routh (3 ,1) >0 K <288; routh (4 ,1) >0 (288 - K ) *( K +32) -100( K * a ) >0 // l e t K=200 K =200; a =((288 - K ) *( K +32) ) /(100* K ) // v e l o c i t y e r r o r Kv =( K * a ) /(4*2*4) ; // % v e l o c i t y e r r o r Kvs =100/ Kv disp (a , c o n t r o l p a r a m e t e r= ) disp (K , Gain= )

Scilab code Exa 6.10 routh array


1 2 3 4 5 6 7

s = %s ; p = s ^3+7* s ^2+25* s +39 // t o c h e c k i f t h e r o o t s l i e l e f t o f s=1 // s u b s t i t u t e s=s 1 p =( s -1) ^3+7*( s -1) ^2+25*( s -1) +20 r = routh_t ( p ) printf ( A l l t h e s i g n s o f e l e m e n t s f i r s t column a r e p o s i t i v e h e n c e t h e r o o t s l i e l e f t o f s=1 )

Scilab code Exa 6.11.a routh array


1 s = %s ;

27

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

syms K // t h e s y s t e m c h a r a c t e r i s t i c eq can be w r i t t e n a s p = s ^3+8.5* s ^2+20* s +12.5(1+ K ) cof_a_0 = coeffs (p , s ,0) ; cof_a_1 = coeffs (p , s ,1) ; cof_a_2 = coeffs (p , s ,2) ; cof_a_3 = coeffs (p , s ,3) ; r =[ cof_a_0 cof_a_1 cof_a_2 cof_a_3 ] n = length ( r ) ; routh =[ r ([4 ,2]) ; r ([3 ,1]) ] routh =[ routh ; - det ( routh ) / routh (2 ,1) ,0] t = routh (2:3 ,1:2) ; routh =[ routh ; - det ( t ) / routh (3 ,1) ,0] disp ( routh , r o u t h= ) ; // f o r l i m i t i n g v a l u e o f K routh (3 ,1) =0 K =12.6; disp (K , L i m i t i n g v a l u e o f K )

Scilab code Exa 6.11.b routh array


1 syms zeta Wn ts z 2 // s e t t l i n g t i m e t s =4/ z e t a Wn 3 // g i v e n t s =4 s e c 4 ts =4; 5 zeta * Wn = ts /4 6 printf ( now t h e r e a l p a r t o f dominant r o o t s h o u l d be 7 8 9 10 11 12 13

1 o r more ) // s u b s t i t u t i n g s=s 1 p =( s -1) ^3+8.5*( s -1) ^2+20*( s -1) +12.5*(1+ K ) cof_a_0 = coeffs (p , s ,0) ; cof_a_1 = coeffs (p , s ,1) ; cof_a_2 = coeffs (p , s ,2) ; cof_a_3 = coeffs (p , s ,3) ; r =[ cof_a_0 cof_a_1 cof_a_2 cof_a_3 ] 28

14 n = length ( r ) ; 15 routh =[ r ([4 ,2]) ; r ([3 ,1]) ] 16 routh =[ routh ; - det ( routh ) / routh (2 ,1) ,0] 17 t = routh (2:3 ,1:2) ; 18 routh =[ routh ; - det ( t ) / routh (3 ,1) ,0] 19 disp ( routh , r o u t h= ) ; 20 // f o r l i m i t i n g v a l u e o f K 21 routh (3 ,1) =0 22 K =2.64 23 disp (K , L i m i t i n g v a l u e o f K f o r s e t t l i n g

t i m e o f 4 s=

) 24 // r o o t s o f c h a r eq a t K=2.64 25 g = s ^3+8.5* s ^2+20* s +12.5*(1+2.64) 26 roots ( g )

29

Chapter 7 The Root Locus Technique

Scilab code Exa 7.1 root locus


1 s = %s ; 2 syms k 3 H = syslin ( c ,( k *( s +1) *( s +2) ) /( s *( s +3) *( s +4) ) ) ; 4 evans (H ,5) 5 printf ( There a r e t h r e e b r a n c h e s o f r o o t l o c u s

s t a r t i n g w i t h K=0 and p o l e s s =0 , 3 , 4. ) 6 printf ( As k i n c r e a s e s two b r a n c h e s t e r m i n a t e a t z e r o s s =1,2 and one a t i n f i n i t y )

Scilab code Exa 7.2 root locus


1 s = %s ; 2 syms k 3 H = syslin ( c ,1+( k /( s *( s +1) *( s +2) ) ) ) ; 4 evans (H ,5)

30

Figure 7.1: root locus

31

Figure 7.2: root locus printf ( The b r a n c h e s o f r o o t l o c u s s t a r t s w i t h K=0 and p o l e s s =0 , 1 , 2. ) 6 printf ( S i n c e t h e r e i s no open l o o p z e r o t h e branches terminate at i n f i n i t y )
5

Scilab code Exa 7.3 root locus


1 2 3 4 5 6

s = %s ; syms k H = syslin ( c ,1+( k /( s *( s +1) *( s +2) ) ) ) evans (H ,5) d = derivat ( H ) p = numer ( d ) 32

Figure 7.3: root locus


7 a = roots ( p ) // a=breakaway p o i n t 8 disp (a , breakaway p p o i n t= )

Scilab code Exa 7.4 root locus


1 s = %s ; 2 syms k 3 H = syslin ( c ,k /( s *( s +4) *( s ^2+(4* s ) +20) ) ) 4 evans (H ,1000) 5 printf ( S i n c e t h e r e a r e no open l o o p z e r o s

all

branches terminate at i n f i m i t y )

33

Figure 7.4: root locus

34

Figure 7.5: root locus

Scilab code Exa 7.6 root locus


1 s = %s ; 2 syms k 3 H = syslin ( c ,k /( s *( s +3) *( s ^2+(2* s ) +2) ) ) 4 evans (H ,10)

35

Figure 7.6: root locus

36

Scilab code Exa 7.8 root locus


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

21 22 23 24 25

syms K s = %s ; G = syslin ( c ,( K *( s +1) *( s +2) ) /(( s +0.1) *( s -1) ) ) evans ( G ) n =2; disp (n , no o f p o l e s= ) m =2; disp (m , no o f z e r o e s= ) K = kpure ( G ) disp (K , v a l u e o f K where RL c r o s s e s jw a x i s= ) d = derivat ( G ) p = numer ( d ) a = roots ( p ) ; // a=breakaway p o i n t s disp (a , breakaway p o i n t s= ) for i =1:2 K = -( a (i ,1) +0.1) *( a (i ,1) -1) /(( a (i ,1) +1) *( a (i ,1) +2) ) disp ( a (i ,1) , s= ) disp (K , K= ) end printf ( z e t a =1 i s a c h i e v e d when t h e two r o o t s a r e e q u a l and n e g a t i v e ( r e a l ) . T h i s h a p p e n s a t t h e breakaway p o i n t i n t h e l e f t h a l f s p l a n e / n ) zeta =1; wn =0.6; sgrid ( zeta , wn ) K = -1/ real ( horner (G ,[1 %i ]* locate (1) ) ) ; disp (K , The c o r r e s p o n d i n g v a l u e o f g a i n i s = )

37

Figure 7.7: root locus

38

Scilab code Exa 7.9 root locus


1 2 3 4 5 6 7 8 9 10 11 12

syms K s = %s ; G = syslin ( c ,( K *( s +4/3) ) /( s ^2*( s +12) ) ) evans (G ,60) d = derivat ( G ) p = numer ( d ) a = roots ( p ) // a=breakaway p o i n t s disp (a , Breakaway p o i n t s= ) printf ( Equal r o o t s a r e a t s=4 ) printf ( / n V a l u e o f K a t s=4= ) K =4*4*8/(4 -(4/3) ) disp ( K )

Scilab code Exa 7.10 root locus


1 syms Kh 2 s = %s ; 3 G = syslin ( c ,10* Kh *( s +0.04) *( s +1) /(( s +0.5) *( s 4 5 6 7 8 9 10 11

^2 -(0.4* s ) +0.2) *( s +8) ) ) ; evans (G ,3) Kh = kpure ( G ) K =10* Kh zeta =1/(2) ^(1/2) ; wn =.575; sgrid ( zeta , wn ) K = -1/ real ((2* horner (G ,[1 %i ]* locate (1) ) ) ) ; printf ( The z e t a = 1 / ( 2 ) 1 / 2 l i n e i n t e r s e c t s t h e r o o t l o c u s a t two p o i n t s w i t h K1= 1 . 1 5 5 and K2=0.79 ) 39

Figure 7.8: root locus

40

12 13 14 15 16 17 18 19 20 21 22 23 24

Kh1 =0.156; Kh2 =0.079; // from t h e b l o c k d i a g r a m Td ( s ) =1/ s ; E ( s ) = C ( s ) = G /(1+( G * Kh *( s +1) ) /( s +8) ) * Td ( s ) ; // s u b s t i t u t i n g v a l u e o f G F = s * E ( s ) =10* Kh /(1+(10* Kh ) ) ; // s t e a y s t a t e e r r o r ess = limit (F ,s ,0) // f o r Kh1 = 0 . 1 5 6 ess =0.609; // f o r Kh2 = 0 . 0 7 9 ess =0.44;

41

Chapter 9 Stability in Frequency Domain

Scilab code Exa 9.1 nyquist plot


1 s = %s ; 2 syms K T1 T2 3 H = syslin ( c ,K /(( T1 * s +1) *( T2 * s +1) ) ) ; 4 nyquist ( H ) 5 show_margins (H , n y q u i s t ) 6 printf ( S i n c e P=0( no o f p o l e s i n RHP) and t h e

n y q u i s t c o n t o u r d o e s n o t e n c i r c l e t h e p o i n t 1+ j 0 ) 7 printf ( System i s s t a b l e )

Scilab code Exa 9.2 nyquist plot


1 s = %s ; 2 H = syslin ( c ,( s +2) /(( s +1) *( s -1) ) ) 3 nyquist ( H )

42

Figure 9.1: nyquist plot

43

Figure 9.2: nyquist plot show_margins (H , n y q u i s t ) printf ( S i n c e P=1 and t h e p t . 1+ j 0 i s e n c i r c l e d o n c e by t h e l o c u s ) 6 printf ( Hence N=1 t h e r e f o r e , Z=0( no o f z e r o s i n RHP) ) 7 printf ( System i s s t a b l e )
4 5

Scilab code Exa 9.3 nyquist plot


1 s = %s ; 2 syms K T 3 H = syslin ( c ,K /( s *( T * s +1) ) ) 4 nyquist ( H )

44

Figure 9.3: nyquist plot show_margins (H , n y q u i s t ) mtlb_axis ([ -1 1 -1 1]) printf ( S i n c e P=0( no o f p o l e s i n RHP) and t h e n y q u i s t c o n t o u r d o e s n o t e n c i r c l e t h e p o i n t 1+ j 0 ) 8 printf ( System i s s t a b l e )
5 6 7

Scilab code Exa 9.4 nyquist plot


1 s = %s ; 2 H = syslin ( c ,(4* s +1) /( s ^2*( s +1) *(2* s +1) ) ) 3 nyquist ( H ) 4 show_margins (H , n y q u i s t )

45

Figure 9.4: nyquist plot

46

Figure 9.5: nyquist plot


5 mtlb_axis ([ -20 20 -5 5]) 6 ( We s e e from t h e l o c u s t h a t t h e p o i n t 1+ j 0 7

is

e n c i r c l e d t w i c e , h e n c e N=2 and P=0. ) printf ( T h e r e f o r e Z=2 , h e n c e two z e r o s l i e i n RHP ) // N=PZ 8 printf ( System i s u n s t a b l e )

Scilab code Exa 9.5 nyquist plot

47

Figure 9.6: nyquist plot

48

1 s = %s ; 2 syms K a 3 H = syslin ( c ,( K *( s + a ) ) /( s *( s -1) ) ) 4 // f o r K>1 5 nyquist ( H ) 6 show_margins (H , n y q u i s t ) 7 mtlb_axis ([ -5 5 -5 5]) 8 xtitle ( For K>1 ) 9 printf ( P=1( p o l e i n RHP) ) 10 p r i n t f ( Nyquist plot encircles the the point -1+ j0 11 12 13 14 15 16 17 18 19 20

once anti - clockwise i . e . , N =1 ) p r i n t f ( Hence Z =0 ) // N=PZ p r i n t f ( System is stable ) // f o r K<1 H= s y s l i n ( c , ( 2 ( s +1) ) / ( s ( s 1) ) ) s h o w m a r g i n s (H, n y q u i s t ) m t l b a x i s ([ 5 5 5 5 ] ) x t i t l e ( For K <1 ) p r i n t f ( The point -1+ j0 lie beyond -K ( the crossing point of the plot ) . So N = -1 , P =1 ) p r i n t f ( Hence Z =2 , zeros in RHP =2 ) p r i n t f ( System is unstable )

Scilab code Exa 9.6 stability using nyquist plot


1 s = %s ; 2 syms k 3 H = syslin ( c ,( k *( s -2) ) /( s +1) ^2) 4 // f o r K/2>1 o r K>2 5 nyquist ( H ) 6 show_margins (H , n y q u i s t ) 7 printf ( P=0( p o l e s i n RHP) ) 8 printf ( N= 1, h e n c e Z=1 )

49

Figure 9.7: stability using nyquist plot

50

Figure 9.8: stability using nyquist plot


9

printf ( T h e r e f o r e , System i s u n s t a b l e )

Scilab code Exa 9.7.a stability using nyquist plot


1 s = %s ; 2 syms k 3 H = syslin ( c ,( K *( s +2) ) /( s ^2*( s +1) ) ) 4 nyquist ( H ) 5 show_margins (H , n y q u i s t ) 6 mtlb_axis ([ -20 20 -20 20]) 7 printf ( P=0 and t h e l o c u s d o e s n o t e n c i r c l e

the

51

Figure 9.9: stability using nyquist plot p o i n t 1+ j 0 ) 8 printf ( System i s s t a b l e )

Scilab code Exa 9.7.b stability using nyquist plot


1 H = syslin ( c ,k /( s *( s ^2+ s +4) ) ) 2 nyquist ( H ) 3 show_margins (H , n y q u i s t ) 4 mtlb_axis ([ -5 5 -5 5]) 5 // n y q u i s t p l o t c r o s s e s t h e a x i s

o f r e a l s with

i n t e r c e p t o f k /4 52

// f o r k/4 > 1 o r k >4 printf ( N=2 a s i t e n c i r c l e s t h e p o i n t t w i c e i n c l o c k w i s e d i r e c t i o n ) 8 printf ( P=0 and h e n c e Z=2 ) 9 printf ( System i s u n s t a b l e f o r k >4 )
6 7

Scilab code Exa 9.8.a nyquist criterion


1 // from t h e n y q u i s t p l o t 2 N = -2; // no o f e n c i r c l e m e n t s 3 P =0; // g i v e n 4 Z =P - N 5 printf ( S i n c e Z=2 t h e r e f o r e two r o o t s

of the c h a r a c t e r i s t i c equation l i e s in the r i g h t h a l f of s p l a n e , h e n c e t h e s y s t e m i s u n s t a b l e )

Scilab code Exa 9.8.b nyquist criterion


1 // from t h e n y q u i s t p l o t 2 N =0; // one c l o c k w i s e and one a n t i c l o c k w i s e

encirclement 3 P =0; // g i v e n 4 Z =N - P 5 printf ( S i n c e Z=0 no r o o t o f t h e c h a r a c t e r i s i c equation l i e s in the r i g h t h a l f hence the system i s s t a b l e )

Scilab code Exa 9.10 gm and pm using nyquist plot 53

Figure 9.10: gm and pm using nyquist plot

54

Figure 9.11: bode plot


1 2 3 4 5 6 7 8

s = %s ; syms K H = syslin ( c ,K /( s *(0.2* s +1) *(0.05* s +1) ) ) nyquist ( H ) show_margins (H , n y q u i s t ) mtlb_axis ([ -1 1 -5 1]) gm = g_margin ( H ) // g a i n m a r g i n pm = p_margin ( H ) // p h a s e m a r g i n

Scilab code Exa 9.11 bode plot

55

Figure 9.12: bode plot


1 2 3 4 5 6 7 8

s = %s ; H = syslin ( c ,10/( s *(0.1* s +1) *(0.05* s +1) ) ) fmin =0.1; fmax =100; bode (H , fmin , fmax ) show_margins ( H ) gm = g_margin ( H ) pm = p_margin ( H )

Scilab code Exa 9.13.a bode plot

56

Figure 9.13: bode plot


1 2 3 4 5 6 7 8

s = %s ; H = syslin ( c ,(8*( s +4) ) /(( s -1) *( s -2) ) ) fmin =0.1; fmax =100; bode (H , fmin , fmax ) show_margins ( H ) gm = g_margin ( H ) pm = p_margin ( H )

Scilab code Exa 9.13.b bode plot

57

Figure 9.14: m circles


1 syms K 2 H = syslin ( c ,( K *( s +4) ) /(( s -1) *( s -2) ) ) 3 fmin =0.1; 4 fmax =100; 5 bode (H , fmin , fmax ) 6 show_margins ( H ) 7 // f o r p h a s e m a r g i n =30 8 printf ( From bode p l o t i t can be s e e n t h a t g a i n

s h o u l d be r e d u c e d by 4 db )

Scilab code Exa 9.14 m circles 58

1 2 3 4 5 6 7 8 9 10

s = %s ; H = syslin ( c ,10/( s *((0.1* s ) +1) *((0.5* s ) +1) ) ) fmin =0.1; fmax =100; clf () black (H ,0.1 ,100) chart ( list (1 ,0) ) gm = g_margin ( H ) pm = p_margin ( H ) printf ( For g a i n m a r g i n o f 20 db p l o t i s s h i f t e d downwards by 8 db and a p h a s e m a r g i n o f 24 d e g r e e s i s o b t a i n e d i f c u r v e i s s h i f t e d upwards by 3 . 5 db )

Scilab code Exa 9.15 m circles


1 2 3 4 5 6 7 8 9 10

s = %s ; H = syslin ( c ,10/( s *((0.1* s ) +1) *((0.05* s ) +1) ) ) fmin =0.1; fmax =100; clf () black (H ,0.1 ,100) chart ( list (1 ,0) ) gm = g_margin ( H ) pm = p_margin ( H ) printf ( For g a i n m a r g i n o f 20 db p l o t i s s h i f t e d downwards by 8 db and a p h a s e m a r g i n o f 24 d e g r e e s i s o b t a i n e d i f c u r v e i s s h i f t e d upwards by 3 . 5 db )

59

Figure 9.15: m circles

60

Chapter 10 Introduction to Design

Scilab code Exa 10.6 lead compensation


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

s = %s ; syms Kv ; g =( Kv /( s *( s +1) ) ) ; // g i v e n Kv=12 Kv =12; g =(12/( s *( s +1) ) ) ; G = syslin ( c ,g ) fmin =0.01; fmax =100; bode (G , fmin , fmax ) show_margins ( G ) xtitle ( u n c o m p e n s a t e d s y s t e m ) [ gm , freqGM ]= g_margin ( G ) [ pm , freqPM ]= p_margin ( G ) disp ( gm , g a i n m a r g i n= ) disp (( freqGM *2* %pi ) , g a i n m a r g i n f r e q= ) ; disp ( pm , p h a s e m a r g i n= ) 61

Figure 10.1: lead compensation

62

Figure 10.2: lead compensation

63

18 19 20

21 22 23 24 25 26 27 28 29 30 31 32 33 34

disp (( freqPM *2* %pi ) , p h a s e m a r g i n f r e q= ) ; printf ( s i n c e P .M i s l e s s t h a n d e s i r e d v a l u e s o we need phase l e a d network ) disp ( s e l e c t i n g z e r o o f l e a d c o m p e n s t i n g n e t w o r k a t w=2.65 r a d / s e c and p o l e a t w=7.8 r a d / s e c and applying gain to account a t t e n u a t i o n f a c t o r . ) gc =(1+0.377* s ) /(1+0.128* s ) Gc = syslin ( c , gc ) disp ( Gc , t r a n s f e r f u n c t i o n o f l e a d c o m p e n s a t o r= ) ; G1 = G * Gc disp ( G1 , o v e r a l l t r a n s f e r f u n c t i o n= ) ; fmin =0.01; fmax =100; bode ( G1 , fmin , fmax ) ; show_margins ( G1 ) xtitle ( c o m p e n s a t e d s y s t e m ) [ gm , freqGM ]= g_margin ( G1 ) ; [ pm , freqPM ]= p_margin ( G1 ) ; disp ( pm , p h a s e m a r g i n o f c o m p e n s a t e d s y s t e m= ) disp (( freqPM *2* %pi ) , g a i n c r o s s o v e r f r e q u e n c y= )

Scilab code Exa 10.7 lead compensation


1 2 3 4 5 6 7 8

s = %s ; syms Ka ; g =( Ka /( s ^2*(1+0.2* s ) ) ) ; // g i v e n Ka=10 Ka =10; g =(10/( s ^2*(1+0.2* s ) ) ) ; G = syslin ( c ,g ) fmin =0.01; 64

Figure 10.3: lead compensation

65

Figure 10.4: lead compensation

66

9 fmax =100; 10 bode (G , fmin , fmax ) 11 show_margins ( G ) 12 xtitle ( u n c o m p e n s a t e d s y s t e m ) 13 [ gm , freqGM ]= g_margin ( G ) 14 [ pm , freqPM ]= p_margin ( G ) 15 disp ( gm , g a i n m a r g i n= ) 16 disp (( freqGM *2* %pi ) , g a i n m a r g i n f r e q= ) ; 17 disp ( pm , p h a s e m a r g i n= ) 18 disp (( freqPM *2* %pi ) , p h a s e m a r g i n f r e q= ) ; 19 disp ( s i n c e P .M i s n e g a t i v e s o s y s t e m i s u n s t a b l e ) 20 disp ( s e l e c t i n g z e r o o f l e a d c o m p e n s a t i n g n e t w o r k a t

21 22 23 24 25 26 27 28 29 30 31 32 33 34

w=2.8 r a d / s e c and p o l e a t w=14 r a d / s e c and applying gain to account a t t e n u a t i o n f a c t o r . ) gc =(1+0.358* s ) /(1+0.077* s ) Gc = syslin ( c , gc ) disp ( Gc , t r a n s f e r f u n c t i o n o f l e a d c o m p e n s a t o r= ) ; G1 = G * Gc disp ( G1 , o v e r a l l t r a n s f e r f u n c t i o n= ) ; fmin =0.01; fmax =100; bode ( G1 , fmin , fmax ) ; show_margins ( G1 ) xtitle ( c o m p e n s a t e d s y s t e m ) [ gm , freqGM ]= g_margin ( G1 ) ; [ pm , freqPM ]= p_margin ( G1 ) ; disp ( pm , p h a s e m a r g i n o f c o m p e n s a t e d s y s t e m= ) disp (( freqPM *2* %pi ) , g a i n c r o s s o v e r f r e q u e n c y= )

Scilab code Exa 10.8 lag compnsation

67

Figure 10.5: lag compnsation

68

Figure 10.6: lag compnsation


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

s = %s ; syms K ; g =( K /( s *( s +1) *( s +4) ) ) ; g =(( K /4) /( s *( s +1) *(0.25* s +1) ) ) // g i v e n Kv=5 : v e l o c i t y e r r o r c o n s t a n t K =20; g =(5/( s *( s +1) *(0.25* s +1) ) ) G = syslin ( c ,g ) fmin =0.01; fmax =100; bode (G , fmin , fmax ) show_margins ( G ) xtitle ( u n c o m p e n s a t e d s y s t e m ) [ gm , freqGM ]= g_margin ( G ) [ pm , freqPM ]= p_margin ( G ) disp ( gm , g a i n m a r g i n= ) disp (( freqGM *2* %pi ) , g a i n m a r g i n f r e q= ) ; disp ( pm , p h a s e m a r g i n= ) 69

19 20 21

22 23 24 25 26 27 28 29 30 31 32 33 34 35

disp (( freqPM *2* %pi ) , p h a s e m a r g i n f r e q= ) ; disp ( s i n c e P .M i s n e g a t i v e s o s y s t e m i s u n s t a b l e ) disp ( s e l e c t i n g z e r o o f p h a s e l a g n e t w o r k a t w= 0 . 0 1 3 r a d / s e c and p o l e a t w=0.13 r a d / s e c and a p p l y i n g gain to account a t t e n u a t i o n f a c t o r ) gc =(( s +0.13) /(10*( s +0.013) ) ) Gc = syslin ( c , gc ) disp ( Gc , t r a n s f e r f u n c t i o n o f l a g c o m p e n s a t o r= ) ; G1 = G * Gc disp ( G1 , o v e r a l l t r a n s f e r f u n c t i o n= ) ; fmin =0.01; fmax =100; bode ( G1 , fmin , fmax ) ; show_margins ( G1 ) xtitle ( c o m p e n s a t e d s y s t e m ) [ gm , freqGM ]= g_margin ( G1 ) ; [ pm , freqPM ]= p_margin ( G1 ) ; disp ( pm , p h a s e m a r g i n o f c o m p e n s a t e d s y s t e m= ) disp (( freqPM *2* %pi ) , g a i n c r o s s o v e r f r e q u e n c y= )

Scilab code Exa 10.9 lag and lead compensation


1 2 3 4 5 6 7 8 9

s = %s ; syms K ; g =( K /( s *(0.1* s +1) *(0.2* s +1) ) ) ; // g i v e n Kv=30 : v e l o c i t y e r r o r c o n s t s n t K =30; g =(30/( s *(0.1* s +1) *(0.2* s +1) ) ) G = syslin ( c ,g ) fmin =0.01; fmax =100; 70

Figure 10.7: lag and lead compensation

71

Figure 10.8: lag and lead compensation

72

10 bode (G , fmin , fmax ) 11 show_margins ( G ) 12 xtitle ( u n c o m p e n s a t e d s y s t e m ) 13 [ gm , freqGM ]= g_margin ( G ) 14 [ pm , freqPM ]= p_margin ( G ) 15 disp ( gm , g a i n m a r g i n= ) 16 disp (( freqGM *2* %pi ) , g a i n m a r g i n f r e q= ) ; 17 disp ( pm , p h a s e m a r g i n= ) 18 disp (( freqPM *2* %pi ) , p h a s e m a r g i n f r e q= ) ; 19 disp ( s i n c e P .M i s n e g a t i v e s o s y s t e m i s u n s t a b l e ) 20 disp ( I f l e a d c o m p e n s t i o n i s u s e d bandwidth w i l l

21 22 23

24 25 26 27 28 29 30 31 32 33 34 35 36 37

i n c r e a s e r e s u l t i n g in u n d e s i r a b l e system s e n s i t i v e to n o i s e . I f l a g compensation i s used bandwidth d e c r e a s e s s o a s t o f a l l s h o r t o f s p e c i f i e d v a l u e o f 12 r a d / s e c r e s u l t i n g i n s l u g g i s h system ) disp ( / n h e n c e we u s e a l a g l e a d c o m p e n s a t o r ) // l a g c o m p e n s a t o r disp ( s e l e c t i n g z e r o o f p h a s e l a g n e t w o r k w=1 r a d / s e c and p o l e a t w=0.1 r a d / s e c and a p p l y i n g g a i n to account a t t e n u a t i o n f a c t o r ) gc1 =(( s +1) /(10* s +1) ) ; Gc1 = syslin ( c , gc1 ) disp ( Gc1 , t r a n s f e r f u n c t i o n o f l a g c o m p e n s a t o r ) // l e a d c o m p e n s a t o r disp ( s e l e c t i n g z e r o o f l e a d c o m p e n s a t o r a t w= 0 . 4 2 5 r a d / s e c and p o l e a t w= 0 . 0 4 2 5 r a d / s e c ) gc2 =((0.425* s +1) /(0.0425* s +1) ) ; Gc2 = syslin ( c , gc2 ) disp ( Gc2 , t r a n s f e r f u n c t i o n o f l e a d c o m p e n s a t o r ) Gc = Gc1 * Gc2 // t r a n s f e r f u n c t i o n o f l a g and l e a d sections disp ( Gc , t r a n s f e r f u n c t i o n o f l a g and l e a d s e c t i o n s ) G1 = G * Gc disp ( G1 , o v e r a l l t r a n s f e r f u n c t i o n= ) ; fmin =0.01; fmax =100; 73

38 bode ( G1 , fmin , fmax ) ; 39 show_margins ( G1 ) 40 xtitle ( c o m p e n s a t e d s y s t e m ) 41 [ gm , freqGM ]= g_margin ( G1 ) ; 42 [ pm , freqPM ]= p_margin ( G1 ) ; 43 disp ( pm , p h a s e m a r g i n o f c o m p e n s a t e d s y s t e m= ) 44 disp (( freqPM *2* %pi ) , g a i n c r o s s o v e r f r e q u e n c y= )

74

Chapter 12 State Variable Analysis and Design

Scilab code Exa 12.3 state matrix


1 2 3 4

s = %s ; H = syslin ( c ,(2* s ^2+6* s +7) /(( s +1) ^2*( s +2) ) ) SS = tf2ss ( H ) [ Ac , Bc ,U , ind ]= canon ( SS (2) , SS (3) )

Scilab code Exa 12.4 modal matrix


1 2 3 4 5 6 7 8 9

syms m11 m12 m13 m21 m22 m23 m31 m32 m33 ^ s = %s ; poly (0 , l ) ; A =[0 1 0;3 0 2; -12 -7 -6] [ r c ]= size ( A ) I = eye (r , c ) ; p = l *I - A ; q = det ( p ) ; // d e t e r m i n a n t o f l i p // r o o t s o f q a r e 75

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

l1 = -1; l2 = -2; l3 = -3; x1 =[ m11 ; m21 ; m31 ]; q1 =( l1 *I - A ) *1 // on s o l v i n g we f i n d m11=1 m21=1 31=1 m11 =1; m21 = -1; m31 = -1; x2 =[ m12 ; m22 ; m32 ]; q2 =( l2 *I - A ) *1 // on s o l v i n g we f i n d m12=2 m22=4 m32=1 m12 =2; m22 = -4; m32 =1; x3 =[ m13 ; m23 ; m33 ]; q3 =( l3 *I - A ) *1 // on s o l v i n g we g e t m13=1 m23=3 m33=3 m13 =1; m23 = -3; m33 =3; // modal m a t r i x i s M =[ m11 m12 m13 ; m21 m22 23; m31 m32 m33 ]

Scilab code Exa 12.5 obtain time response


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

syms t m s = %s ; A =[1 0;1 1]; B =[1;1]; x =[1;0]; [ r c ]= size ( A ) p = s * eye (r , c ) -A // s I A q = inv ( p ) for i =1: r for j =1: c // i n v e r s e l a p l a c e o f e a c h e l e m e n t o f M a t r i x q q (i , j ) = ilaplace ( q (i , j ) ,s , t ) ; end end disp (q , p h i ( t )= ) // S t a t e T r a n s i t i o n M a t r i x 76

16 17 18 19 20 21 22 23 24 25 26

t =t - m ; q = eval ( q ) // I n t e g r a t e q w . r . t m r = integrate ( q *B , m ) m =0 // Upper l i m i t i s t g = eval ( r ) // P u t i n g u p p e r l i m i t i n q m = t // Lower l i m i t i s 0 h = eval ( r ) // P u t t i n g l o w e r l i m i t i n q y =( h - g ) ; disp (y , y= ) printf ( x ( t )=p h i ( t ) x ( 0 )+ i n t e g r a t e ( p h i ( t mB) w . r . t m from 0 t o t ) ) 27 y1 =( q * x ) + y ; 28 disp ( y1 , x ( t )= )

Scilab code Exa 12.6 resolvant matrix


1 2 3 4 5 6 7 8 9 10 11 12 13 14

syms t s = %s ; A =[1 0;1 1]; [ r c ]= size ( A ) p = s * eye (r , c ) -A // r e s o l v e n t m a t r i x q = inv ( p ) disp (q , p h i ( s )= ) for i =1: r for j =1: c q (i , j ) = ilaplace ( q (i , j ) ,s , t ) end end disp (q , p h i ( t )= ) // s t a t e t r a n s i t i o n m a t r i x

Scilab code Exa 12.7 state transition matrix and state response 77

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

syms t m s = %s ; A =[0 1; -2 -3]; B =[0;2]; x =[0;1]; [ r c ]= size ( A ) p = s * eye (r , c ) -A q = inv ( p ) for i =1: r for j =1: c q (i , j ) = ilaplace ( q (i , j ) ,s , t ) end end disp (q , p h i ( t )= ) // s t a t e t r a n s i t i o n m a t r i x t =t - m ; q = eval ( q ) // I n t e g r a t e q w . r . t m r = integrate ( q *B , m ) m =0 // Upper l i m i t i s t g = eval ( r ) // P u t i n g u p p e r l i m i t i n q m = t // Lower l i m i t i s 0 h = eval ( r ) // P u t t i n g l o w e r l i m i t i n q y =( h - g ) ; disp (y , y= ) printf ( x ( t )=p h i ( t ) x ( 0 )+ i n t e g r a t e ( p h i ( t mB) w . r . t m from 0 t o t ) ) 26 y1 =( q * x ) + y ; 27 disp ( y1 , x ( t )= )

Scilab code Exa 12.12 check for controllability


1 A =[0 1 0;0 0 1; -6 -11 -6]; 2 B =[0;0;1]; 3 P = cont_mat (A , B ) ; 4 disp (P , C o n t r o l l a b i l i t y M a t r i x= )

78

5 d = det ( P ) 6 if d ==0 7 printf ( m a t r i x

i s s i n g u l a r , so system i s u n c o n t r o l l a b l e ); i s c o n t r o l l a b l e );

8 else 9 printf ( s y s t e m 10 end ;

Scilab code Exa 12.13 check for controllability A =[0 1; -1 -2]; B =[1; -1]; P = cont_mat (A , B ) ; disp (P , C o n t r o l l a b i l i t y M a t r i x= ) d = determ ( P ) if d ==0 printf ( m a t r i x i s s i n g u l a r , s o s y s t e m i s u n c o n t r o l l a b l e ); 8 else 9 printf ( s y s t e m i s c o n t r o l l a b l e ) ; 10 end ;
1 2 3 4 5 6 7

Scilab code Exa 12.14 check for observability


1 2 3 4 5 6 7 8

A =[0 1 0;0 0 1;0 -2 -3]; B =[0;0;1]; C =[3 4 1]; P = obsv_mat (A , C ) ; disp (P , O b s e r v a b i l i t y M a t r i x= ) ; d = det ( P ) if d ==0 printf ( m a t r i x i s s i n g u l a r , s o s y s t e m i s u n o b s e r v a b l e ); 79

9 else 10 printf ( s y s t e m 11 end ;

i s o b s e r v a b l e );

Scilab code Exa 12.17 design state observer


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

syms g1 g2 g3 poly (0 , l ) ; A =[1 2 0;3 -1 1;0 2 0]; C =[0;0;1]; G =[ g1 ; g2 ; g3 ]; p =A - G * C ; [ r c ]= size ( A ) ; I = eye (r , c ) ; q = lI - p ; // l I (AGC) where I i s i d e n t i t y m a t r i x r = det ( q ) // d e t r m i n a n t o f l I (AGC) // on e q u a t i n g r =0 we g e t // c h a r a c t e r i s t i c e q u a t i o n l ^3+ g3 *( l ) ^2+(2* g2 -9) l +2+6* g1 -2* g2 -7* g3 =0; printf ( d e s i r e d c h a r a c t e r i s t i c e q u a t i o n g i v e n i s \ n ) l ^3+10*( l ) ^2+34* l +40=0; // on c o m p a r i n g t h e c o e f f i c i e n t s og t h e two equations // we g e t g1 =25.2 g2 =21.5 g3 =10 g1 =25.2; g2 =21.5; g3 =10; disp ( G )

80

Potrebbero piacerti anche