sabato 23 febbraio 2008

regolatore con scilab

Riferimento al problema di regolare il sistema instabile del nxt-way di Sybille Mayer.

Con scilab:

A=[0,1,0,0; 94.05,0,0,1.3;0,0,0,1; -544.05,0,0,-14.3] // pag 24
B=[0;-0.21;0;2.32]
C=[1,0,0,0;0,0,1,0]
D=[0;0]
nxtway_SYB=syslin('c',A,B,C,D) // genera sistema lineare
s=%s; // variabile di laplace
spec(A) // calcola autovalori
autovalori_di_A=spec(A)
poli_desiderati=[-2.6 -3.9 -5.2 -6.5] // poli desiderati
K=ppol(A,B,poli_desiderati) // calcolo della matrice di feedback K

F=A-B*K // sistema in retroazione
g2=syslin('c',F,B,C,D) // genera nuovo sistema lineare
spec(F)
autovalori_di_F=spec(F) //calcola autovalori, per verificare il piazzamento poli

si ottengono i seguenti risultati:

--> A =

0. 1. 0. 0.
94.05 0. 0. 1.3
0. 0. 0. 1.
- 544.05 0. 0. - 14.3
B =

0.
- 0.21
0.
2.32
C =

1. 0. 0. 0.
0. 0. 1. 0.
D =

0.
0.
nxtway_SYB =


nxtway_SYB(1) (state-space system:)

!lss A B C D X0 dt !

nxtway_SYB(2) = A matrix =

0. 1. 0. 0.
94.05 0. 0. 1.3
0. 0. 0. 1.
- 544.05 0. 0. - 14.3

nxtway_SYB(3) = B matrix =

0.
- 0.21
0.
2.32

nxtway_SYB(4) = C matrix =

1. 0. 0. 0.
0. 0. 1. 0.

nxtway_SYB(5) = D matrix =

0.
0.

nxtway_SYB(6) = X0 (initial state) =

0.
0.
0.
0.

nxtway_SYB(7) = Time domain =

c
ans =

0
7.8847523
- 4.598569
- 17.586183
autovalori_di_A =

0
7.8847523
- 4.598569
- 17.586183
poli_desiderati =

- 2.6 - 3.9 - 5.2 - 6.5
K =

- 1063.3266 - 123.77134 - 3.2972279 - 9.5224059
F =

0. 1. 0. 0.
- 129.2486 - 25.991982 - 0.6924179 - 0.6997052
0. 0. 0. 1.
1922.8678 287.14951 7.6495687 7.7919818
g2 =


g2(1) (state-space system:)

!lss A B C D X0 dt !

g2(2) = A matrix =

0. 1. 0. 0.
- 129.2486 - 25.991982 - 0.6924179 - 0.6997052
0. 0. 0. 1.
1922.8678 287.14951 7.6495687 7.7919818

g2(3) = B matrix =

0.
- 0.21
0.
2.32

g2(4) = C matrix =

1. 0. 0. 0.
0. 0. 1. 0.

g2(5) = D matrix =

0.
0.

g2(6) = X0 (initial state) =

0.
0.
0.
0.

g2(7) = Time domain =

c
ans =

- 6.5
- 2.6
- 3.9
- 5.2
autovalori_di_F =

- 6.5
- 2.6
- 3.9
- 5.2



si vede che il sistema retroazionato ha i poli (negativi) del valore che si voleva.

I poli ottenuti da Sybille sono:
[-1051.93 -122.34 -3.32 -9.44]
mentre lo script scilab da'
K = - 1063.3266 - 123.77134 - 3.2972279 - 9.5224059

piu' o meno gli stessi.

risposta all'impulso instabile,
nxtway_SYB






















risposta all'impulso stabile, g2























risposta al gradino sistema instabile, nxtway_SYB:

























risposta al gradino sistema stabile, g2:

Nessun commento: