Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab...

59

Transcript of Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab...

Page 1: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Einführung in Scilab/Scicos/RtaiLabVersion 4.1.2 Beta2

H. Nahrstaedt, T. Schauer

Fachgebiet RegelungssystemeTU Berlin

24. Oktober 2007

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 1 / 58

Page 2: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab

Gliederung

1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGra�kfunktionen

2 Lineare Systeme und Reglerentwurf

3 Scicos

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 2 / 58

Page 3: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Allgemeine Informationen über Scilab

Gliederung

1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGra�kfunktionen

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 3 / 58

Page 4: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Allgemeine Informationen über Scilab

Was ist Scilab?

ScilabKostenloses Open-Source Software-Paket für wissenschaftliche Berechnungen

Hunderte von Funktionen für allgemeine Zwecke und eine Vielzahl von speziellen Routinenfür numerische Berechnungen

Funktionesbibliotheken → Toolboxes für Simulation, Optimierung, Systemanalyse,Reglerentwurf, Signalverarbeitung ...

ScicosScilab Toolbox mit graphischen Block-Diagramm-Editor für die Erstellung und Simulationdynamischer Systeme

Automatische C-Code-Generierung

Geschichte

Entwickelt seit 1994 durch INRIA (Institut National de Recherche en Informatique et enAutomatique) und ENPC (Ecole Nationale des Ponts et des Chaussées) in Frankreich

Seit 2003: Koordination der Entwicklung durch ein internationales Scilab Konsortium mitIndustriebeteiligung

Scilab/Scicos: einzige wirkliche Alternative zu kommerziellen Programmpaketen wieMATLAB/Simulink und MATRIXx/SystemBuildH. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 4 / 58

Page 5: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Allgemeine Informationen über Scilab

Verfügbarkeit / Literatur

Downloadwww.scilab.org

Verfügbar für Unix/Linux, Windows, MacOSX

Downloadgröÿe kleiner 20MByte

LiteraturBuch: S.L. Campbell, J.-P. Chanceller und R. Nikoukhah, Modeling and Simulation inScilab/Scicos, Springer Verlag, 2006

Kapitel 1 und 2: Scilab(frei verfügbar: Download-Link auf http://www.control.tu-berlin.de/Teaching:Scilab)Kapitel 6 und 7: Scicos(frei verfügbar: http://www.scicos.org/book.html)

Report: R. Bucher et al. RTAI-Lab tutorial: Scilab, Comedi, and realtime control.,http://www.rtai.org/RTAILAB/RTAI-Lab-tutorial.pdf, 2007

Jean-Marie Zogg, Arbeiten mit Scilab und Scicos. (frei verfügbar:http://www.fh-htwchur.ch/Arbeiten-mit-Scilab-und-Scicos.1100.0.html)

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 5 / 58

Page 6: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Allgemeine Informationen über Scilab

Nutzung am Fachgebiet Regelungssysteme

Rechnerpool

Rechnerpool im Raum EN 152/153, Zugang über Code-Schloss

Individuelle Logins für das RS-Netz, Guest-Accounts während der Übungen

Vorgehen

1. Anmelden

2. Konsolen-Fenster starten (Terminal-Icon auf dem Desktop)

3. Scilab starten:

s c i l a b &

4. Datensicherung via Web-Mailer (Hotmail, Google-Mail, GMX, etc.); FireFox oder Konquerorstarten

5. Datensicherung via USB-Stick; Zugri� auf den USB-Stick über Link auf dem Desktop

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 6 / 58

Page 7: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Erste Schritte

Gliederung

1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGra�kfunktionen

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 7 / 58

Page 8: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Erste Schritte

Start

Scilab Command WindowInteraktives Fenster

Bestätigung von Befehlen mittels Return

Scilab ist sowohl ein Interpreter als aucheine Programmiersprache!

Einzelne Befehle oder Skriptdateien mitBefehlslisten können ausgeführt werden(exec-Befehl, // - Kommentare).

Blättern in alten Befehlen mittelsPfeil-Hoch- und -Runter-Tasten

Scilab Help Browser

Online Dokumentation mit Suchfunktion undProgrammbeispielen

Scilab EditorKomfortabler Editor mit Syntax-Hervorhebungund Debugging-Interface

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 8 / 58

Page 9: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Gliederung

1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGra�kfunktionen

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 9 / 58

Page 10: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Philosophie

1. Objekte erstellen

keine expliziete Deklaration oderSpeicherzuordnung

eine zufällige 2x3 Matrix erstellen:�−−>a = rand ( 2 , 3 ) ;−−>typeof ( a )ans =

cons t an t� �

3. Typ dynamisch ändern�−−>a = ' s c i l a b ' ; typeof ( a )ans =

s t r i n g� �4. Objekt löschen�−−>c l e a r ( ' a ' ) ; e x i s t s ( ' a ' )ans =

0 .� �2. Dynamische Anpassung der Gröÿe�−−>a=[a , zeros ( 2 , 1 ) ]a =

0.2113249 0.0002211 0.6653811 0 . 0 .0 .7560439 0.3303271 0.6283918 0 . 0 .� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 10 / 58

Page 11: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Speicher und Zahlen

Speicher

Der verfügbare Speicher in Scilab wirdüber den Befehl stacksize eingestellt.

Speicher anzeigen (Gröÿe undmaximale Anzahl von Variablen) undvergröÿern:�−−>s t a c k s i z eans =

5000000. 15983 .−−>s t a c k s i z e (6000000)

−−>� �

ZahlenDouble-Precision Floats

Prozessortypabhängige Genauigkeit

mögliche Erweiterung der Zahlenmengeum %inf (in�nity) und %nan (not anumber) mittels des Befehls ieee�−−>i e ee ( )ans =

0 .−−>1/0

!−−e r r o r 27d i v i s i o n by z e r o . . .−−>i e ee (2 )−−>1/0ans =

I n f−−>0/0ans =

Nan−−>� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 11 / 58

Page 12: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Matrizen

InfoBasis-Objekt: zweidimensionale Matrixmit �oating-point Zahlen

interne Speicherung alseindimensionales Feld(spaltengeordnet)

Skalar: 1x1 Matrix

Konstruktion von MatrizenSpalternverkettungsoperator: ',' oderLeerzeichen

Zeilenverkettungsoperator: ';' oderZeilenumbruch

beide Operatoren erscheinen zwischen'[' und ']'

�−−>A=[1 ,2 ,3 +5]A =

1 . 2 . 3 . 5 .

−−>A=[1 ,2 ,3 ∗5 ]A =

1 . 2 . 15 .

−−>A=[A, 0 ; 1 , 2 , 3 , 4 ]A =

1 . 2 . 15 . 0 .1 . 2 . 3 . 4 .� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 12 / 58

Page 13: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Matrizen

Funktionen zur Erstellung von Matrizen

' transponiertdiag (m,n) Matrix mit gegebener Diagonale (oder Ausgabe der Diagonale)eye (m,n) Matrix mit Einsen auf der Hauptdiagonalenrand (m,n) Zufallsmatrixzeros (m,n) Matrix bestehend aus Nullenones (m,n) Matrix bestehend aus Einsenlinespace or ':' linearly spaced vectorlogspace logarthmically spaced vectormatrix Formen einer (m,n) Matrix aus einem (n*m) Vektor�

−−> A = [ eye ( 2 , 1 ) , 3∗ones ( 2 , 3 ) ; l i n s p a ce ( 3 , 9 , 4 ) ; zeros ( 1 : 4 ) ]� �

�A =

1 . 3 . 3 . 3 .0 . 3 . 3 . 3 .3 . 5 . 7 . 9 .0 . 0 . 0 . 0 .� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 13 / 58

Page 14: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Matrizen

Funktionen zur Erstellung von Matrizen

' transponiertdiag (m,n) Matrix mit gegebener Diagonale (oder Ausgabe der Diagonale)eye (m,n) Matrix mit Einsen auf der Hauptdiagonalenrand (m,n) Zufallsmatrixzeros (m,n) Matrix bestehend aus Nullenones (m,n) Matrix bestehend aus Einsenlinespace or ':' linearly spaced vectorlogspace logarthmically spaced vectormatrix Formen einer (m,n) Matrix aus einem (n*m) Vektor�

−−> A = [ eye ( 2 , 1 ) , 3∗ones ( 2 , 3 ) ; l i n s p a ce ( 3 , 9 , 4 ) ; zeros ( 1 : 4 ) ]� ��A =

1 . 3 . 3 . 3 .0 . 3 . 3 . 3 .3 . 5 . 7 . 9 .0 . 0 . 0 . 0 .� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 13 / 58

Page 15: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Extraktion, Einfügen und Löschen von Matrixelementen

InfoSpezi�kation von Matrixeinträgen überA(B) oder A(B,C) wobei B und C sindnumerische oder boolesche Matrizensind die als als Indizes genutzt werden.

'$' - letzter Index

':' - alle Einträge

'=' Zuweisungsoperator

A(B)= oder A(B,C)=

Die Einträge der Matrix auf der linkenSeite werden ersetzt durch die Einträgevon der rechten Seite, falls es sich umkeine Matrix verschieden von Nullhandelt und die Gröÿen kompatibelsind.

Wenn die rechte Seite eine leere Matrix([]) ist, werden die Elemente auf derlinken Seite gelöscht.

�−−>c l e a r A;−−>A(2 ,4 ) = 1A =

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

−−>A( [ 1 , 2 ] , [ 1 , 2 ] )=3 ∗ ones ( 2 , 2 )A =

3 . 3 . 0 . 0 .3 . 3 . 0 . 1 .

−−>A(: ,1)=8A =

8 . 3 . 0 . 0 .8 . 3 . 0 . 1 .

−−>A( : , $ )=[ ]A =

8 . 3 . 0 .8 . 3 . 0 .

−−>A( : , $+1)=[4;5]A =

8 . 3 . 0 . 4 .8 . 3 . 0 . 5 .� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 14 / 58

Page 16: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Extraktion, Einfügen und Löschen von Matrixelementen

=A(B) oder A(B,C)

Falls die Audrücke A(B) oder A(B,C)auf der rechten Seite der Zuweisungstehen, werden Untermatrizenextrahiert.�

−−>D=A( : , 2 : 3 )D =

3 . 4 .3 . 5 .

−−>A(: ,4 )=D( 1 , : ) 'A =

8 . 3 . 4 . 3 .8 . 3 . 5 . 4 .� �

Boolesche MatrizenWerte für eine boolesche Variable:'True' %t oder 'False' %f

Benutzung von %t und %f zurKonstruktion von booleschen Matrizen

Vergleichsoperatoren '==','>', '<','<=' und '̃=' (ungleich) liefernboolesche Matrizen.

Logikoperatoren wie '&' (and), '|' (or)und '̃' (not) lassen sich auf boolescheMatrizen anwenden.�

−−>[~(1>=2) %T&%F]ans =T F

−−>x=1:2:10x =

1 . 3 . 5 . 7 . 9 .−−>x ( x>5)=4x =

1 . 3 . 5 . 4 . 4 .−−>f i n d ( x<5) // I n d i z e s b e s t .ans =

1 . 2 . 4 . 5 .� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 15 / 58

Page 17: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Elementare Matrixoperationen

Operatoren

| logisches Oder& logisches Und˜ negieren==,>=,<=,>,<,<>,̃= Vergleichsoperatoren+,- binäre Addition und Subtraktion+,- unäre Addition und Subtraktion.*,./,. .*,./.,.,*,/,/., Multiplikationen und Divisionen,̂ **, .̂, .** Potenzieren',.' transponieren

Operatoren mit dem Punkt-Symbol stehen für elementweise Operationen.

Transponieren und gewöhnlichesMatrixprodukt:�−−>A=(1:3) '∗ ones ( 1 , 3 )A =

1 . 1 . 1 .2 . 2 . 2 .3 . 3 . 3 .� �

Elementweise Multiplikation:�−−>A.∗Aans =

1 . 1 . 1 .4 . 4 . 4 .9 . 9 . 9 .� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 16 / 58

Page 18: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Elementare Matrixoperationen

Lösen des linearen Gleichungssystems Ax=b.�−−>A=[1 , 2 ; 3 , 4 ] ; b = [ 5 ; 6 ] ;−−>x = A \ b ; norm (A∗x−b )ans =

0 .� �Unterbestimmtes System - eine Lösung mitminimaler Norm wird ermittelt:�−−>A1=[A, zeros (A ) ] ; x=A1 \ bx =− 4 .

4 . 50 .0 .� �

Überbestimmtes System -Least-Squares-Lösung wird ermittelt:�−−>A1=[A;A ] ; x=A1\ [ b ; 7 ; 8 ]x =− 5 .

5 . 5� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 17 / 58

Page 19: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Zeichenketten und Polynome

Zeichenkettenbegrenzt durch ' ' oder

Matrix aus Zeichenketten

Vielzahl von Funktionen fürZeichenketten�

−−>S=[ ' Die ' , ' 2 x2 ' ; ' Mat r i x ' , ' ! ' ]S =

! The 2x2 !! !! Mat r i x ! !

−−>l ength (S)ans =

3 . 3 .6 . 1 .� �

Polynome

Ein Polynom kann mittels derScilabFunktion poly über seine Wurzeln oderKoe�zienten de�niert werden.

Polynome lassen sich addieren,multiplizieren, in Matrizen packen, etc.

Löser für Diophantische Gleichungen�−−>p=poly ( [ 1 3 ] , ' s ' )p =

23 − 4 s + s

−−>q=poly ( [ 1 2 ] , ' s ' , ' c ' )q =

1 + 2 s−−>G=q/p ;G =

1 + 2 s−−−−−−−−−−

23 − 4 s + s� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 18 / 58

Page 20: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Listen

Erzeugung von Listen über die Funktionen list, tlist oder mlist

Indizierter Zugri� nur für list und tlist

Zugri� auf Elemente über Namen nur mit tlist und mlist�−−>sy s= l i s t ( ' Bla ' , 8 , [ 1 2 ] ) ;−−>sy s (2 )ans =

8 .−−>sy s= t l i s t ( [ ' m y l i s t ' , 'A ' , 'B ' , 'C ' ] , ' Bla ' , 8 , [ 1 2 ] ) ;−−>sy s ( 'B ' )ans =

8 .−−>sy s (3 )ans =Bla −−>−−>sy s .Bans =

8 .−−>sy s=ml i s t ( [ ' m y l i s t ' , 'A ' , 'B ' , 'C ' ] , ' Bla ' , 8 , [ 1 2 ] ) ;−−>sy s (3 )

!−−e r r o r 4unde f i n ed v a r i a b l e : %l_e� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 19 / 58

Page 21: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Listen

Einfacherer Aufbau von mlist-Objekten mittels des '.' Operators�−−>sys_new .A=' Bla ' ;

−−>sys_new .B=8;

−−>sys_new .C=[1 2 ] ;

−−>sys_newsys_new =

A: "Bla "B : 8C : [ 1 , 2 ]� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 20 / 58

Page 22: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Funktionen

Auch Funktionen werden auch als Okjekte betrachtet.

Man unterscheided hard-coded Funktionen (z.B. sin) und Scilab-coded Funktionen (z.B.sinh).

De�nition von Funktionen durch die Schlüsselwörter function und endfunction

Scilab-coded Funktionen können von Scilab-Skripten aus geladen werden mittels exec

Scilab-coded Funktionen im Speicher können im Binärformat gespeichert oder geladenwerden mittels save bzw. load.

Scilab-coded Funktionen werden später ausführlich betrachtet.

Betrachten des Source-Codes von Scilab-Coded Funktionen mittels fun2string�−−>f unc t i on y=foo ( x , g ) ; y=g ( x ) ; endfunct ion−−>typeof ( foo )ans =f unc t i on−−>foo (%pi , s i n )ans =

1.225E−16� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 21 / 58

Page 23: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Objekte

Funktionen

Achtung: Funktionen können gelöscht order maskiert werden durch Zuweisungen!�−−>s i n=[1 3 ] ;Warning : r e d e f i n i n g f unc t i on : s i n−−>s i n (2 )ans =

3 .−−>c l e a r s i nWarning : r e d e f i n i n g f unc t i on : s i n−−>s i n (2 )ans =

0.9092974� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 22 / 58

Page 24: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Programmierung

Gliederung

1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGra�kfunktionen

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 23 / 58

Page 25: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Programmierung

Scilab-Programme, Verzweigungen

Scilab-Programme

Scilab-Programm: Anzahl von Instruktionen die in einer spezi�erten Reihenfolge ausgeführtwerden.

gewöhnlich in einer ASCII-Datei spezi�ziertAusführen des Programms mittels exec

Endung von Scilab-Skripten: *.sce

Endung von Scilab-Skripten, die nur Funktionen beinhalten: *.sci

Beim start von Scilab werden die Skripte scilab.star im Scilab Installationsverzeichnis, sowie.scilab oder scilan.ini im Home-Verzeichnis oder aktuellen Verzeichnis ausgeführt.

Verzeigungen mittels if/else/elseif/then

if <condition> then <instruction> else <instructions> end

Mehrfachverzweigungen durch: elseif�−−>A=l og ( rand ( 3 , 3 ) ) ;−−> i f imag (A)==0 then−−> d i sp ( 'A i s a r e a l mat r i x ' ) ;

A i s a r e a l matr ix−−>e l s e ( 'A i s complex ' ) ;−−>end� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 24 / 58

Page 26: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Programmierung

Mehrfachverzweigungen mittels select

Selectselect <expr>,case <expr1> then <instructions>case <expr2> then <instructions>...else <instructions>

end

wird nacheinander mit <expr1>, <expr2> usw. verglichen

Bei Übereinstimmung wird der entsprechende Zweig verfolgt.

Bei keiner Übereinstimmung kommen die Anweisungen hinter else zum tragen.

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 25 / 58

Page 27: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Programmierung

Schleifen 1/2

Die for-Schleifefor <name>=<expr>

<instructions>end

Die <expr> Instruktion wird einmal evaluiert.

Danach wird der innere Block wiederholt ausgeführt, bei bei jeder Iteration nimmt dieVariable <name> einen neuen Wert an.

Wenn <expr> eine Matrix ist, so nimmt <name> nacheinander den Wert der Spalten an.

Ist <expr> eine Liste, so nimmt <name> nacheinander den Wert der Listenelemente an.�−−>y=0;−−>f o r x=1:100−−> y=y+x ;−−> end−−>yy =

5050 .−−>� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 26 / 58

Page 28: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Programmierung

Schleifen 2/2

Die while-Schleifewhile <condition>

<instructions>end

Solange der Ausdruck <condition> wahr ist, wird die Instruktionen des inneren Blockesausgeführt.�

−−>y=0;x=1;−−>whi le ( x<=100)−−> y=y+x ;−−> x=x+1;−−> end−−>yy =

5050 .−−>� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 27 / 58

Page 29: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Programmierung

Scilab-Funktionen 1/4

Funktionen haben Eingangsargumente und Rückgabewerte

Deklaration:function [<name1>,<name2>,...]=<name−of−function>(<arg1>,<arg2>,...)

< instructions>endfunction

<arg1>,<arg2>,...: Funktionsargumente

<name1>,<name2>,...: Rückgabewerte

Funktionsaufruf: <name−of−function>(<expr1>,<expr2>,...)oder[<v1>,<v2>,...,<vp>]=<name−of−function>(<expr1>,<expr2>,...)

Im letzteren Fall werden die Rückgabewerte in die p Variablen <v1>,<v2>,...,<vp> kopiert.

Überprüfen der Argumente nach Funktionsaufruf und Werteübergabe (calling by value)

Bei der Ausführung des Funktion wird nach Variablen in der lokalen Umgebung der Funktionund der Aufrufsumgebung der Funktion gesucht.

Variablen aus der Aufrufsumgebung werden jedoch nicht geändert (lokale Kopie falls nötig)!

Beendigung einer Funktion bei endfunction oder vorzeitig mittels return

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 28 / 58

Page 30: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Programmierung

Scilab-Funktionen 2/4Beispiel einer rekursiven Funktion:�−−>f unc t i on y=f a c t ( x )−−> i f x<= 1 then y=x ;−−> e l s e y=x∗ f a c t ( x−1);−−> end−−>endfunct ion−−>f a c t (4 )ans =

24 .� �Nutzung einer Variablen aus derAufrufumgebung�−−>f unc t i on y=f ( x ) ;−−> y=2∗x ;−−> x=2∗x ;−−>endfunct ion−−>x=90;−−>f ( )ans =

180 .−−>xx =

90 .� �

Im Funktionskörper kann die Anzahlder gegebenen Eingangsargumente(rhs) und die Anzahl der erforderlichenRückgabewerte (lhs) mittels�[ l h s , r h s ]=argn ( )� �erfragt werden.

Durch die Funktion error kann eineFehlermeldung erzeugt werden.

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 29 / 58

Page 31: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Programmierung

Scilab-Funktionen 3/4Beispiel�−−>f unc t i on [ u , v ]= f ( x , y )−−> [ lh s , r h s ]=argn ( )−−> i f r h s <= 0−−> then e r r o r ( ' a t l e a s t one argument must be g i v en ' ) ; end−−> i f r h s <= 1 then y=2; end−−> i f l h s == 2 then−−> u=x ; v=y ;−−> e l s e−−> u=x+y ;−−> end−−>endfunct ion−−>−−>[u , v ]= f (4 )v =

2 .u =

4 .� �Globale VariablenDe�nition in der Ausrufsumgebung und in der entsprechenden Funktion mit global <variablename>!

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 30 / 58

Page 32: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Programmierung

Scilab-Funktionen 4/4

Funktionen mit variabler Anzahl von Ein- und Ausgangsargumenten

Letzes Eingangsargument: varargin

Letzer Rückgabewert: varargout

varargin und varargout sind im Funktionskörper Vektoren, die Ein- und Ausgangsargumentebeinhalten.�

−−>f unc t i on [ l ]= f ( x , va ra rg i n ) ; l=va ra rg i n ; endfunct ion−−>f (0 , 1 , 2 )ans =

ans (1 )1 .

ans (2 )2 .� ��

−−>f unc t i on [ varargout ]= f ( )−−> varargout= l i s t ( 1 , 2 , 3 )−−>endfunct ion−−>[a , b]= f ( )b =

2 .a =

1 .� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 31 / 58

Page 33: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Programmierung

Programme debuggen

Vorgehensweise

Programm unterbrechen mittels Ctrl-C oder dem Befehl pause → Prompt ändert sich undzeigt den Pause-Level.

Variablen können überprüft werden.

Mittels where und whereami kann ermittelt werden, wo die Pause erzeugt wurde.

Fortsetzen des Programms mit dem Befehl resume

Beenden des Programms mit dem Befehl abort

Schrittweise Abarbeitung von Programmcode mit dem Befehl exec

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 32 / 58

Page 34: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Ein- und Ausgabefunktionen

Gliederung

1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGra�kfunktionen

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 33 / 58

Page 35: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Ein- und Ausgabefunktionen

Datei-Funktionen 1/3

Ö�nen und Schlieÿen von Dateien

Ö�en einer Datei: [ fd , err ]=mopen(�lename, mode)

mode: 'r' - Lesen, 'w' - Schreiben, 'r+' Lesen und Schreiben, Zusatz 'b' → Binärmodus

Schlieÿen von Dateien: [ err ]=mclode([fd]) ([fd] - Vektor mit fd Werten vom Dateiö�nen)

Schlieÿen aller Dateien: [ err ]=mclode('all ' )

Formatiere Ein-Ausgabe im Textmodus

Formatierte Ausgabe mit mfprintf (Schreiben)

Formatierte Eingabe mit mfscanf (Lesen)

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 34 / 58

Page 36: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Ein- und Ausgabefunktionen

Datei-Funktionen 2/3

Beispiel: Einlesen von Daten aus folgender Textdatei (mfscanf.dat):

An example of reading a file with a separator of type "[ ]*,[ ]*"

-------------------------------------------------------------------------

CLKIN_f.sci , 98 , 16

CLKINV_f.sci , 91 , 16�−−>fd=mopen( "mfscan f . dat " , " r " ) ; // opens a f i l e i n r ead mod−−>mgetl ( fd , 2 ) ; // bypa s s i n g the f i r s t two l i n e s−−>[n , a , b , c ]=mfscanf (−1 , fd , "%[^ , ] ,%∗ [ , ]%d%∗ [ , ]%d\ n" ) ;

// f o rma t t ed r e ad−−>n //number o f r ead arguments

ans =3 .

−−>s t r i p b l a n k s ( a )~// removing space s and t r a n p o s i n g s t r i n g mat r i xans =CLKIN_f . s c i CLKINV_f . s c i

−−>[b , c ] // nume r i c a l v a l u e sans =98 . 16 .91 . 16 .

−−>mclose ( fd ) ;� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 35 / 58

Page 37: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Ein- und Ausgabefunktionen

Datei-Funktionen

Ein- und Ausgabe im Binärmodus

Variablen aus der aktuellen Umgebung können mit save gespeichert werden.

Mit load könnnen gespeicherte Variablen in die aktuellen Umgebung geladen werden.�−−>A=rand ( 2 , 2 ) ; B=' h a l l o ' ;−−>save s i t z u n g // s p e i c h e r t a l l e Va r i a b l e n i n de r Date i S i t zung−−> // oder save ( ' s i t z ung ' )−−>c l e a r a l l−−>load s i t z u n g // oder l oad ( ' s i t z ung ' )−−>AA =

0.2113249 0.00022110.7560439 0.3303271

−−>save ( ' S i t zung ' ,A) // s p e i c h e r t nur A i n de r Date i S i t zung� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 36 / 58

Page 38: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Ein- und Ausgabefunktionen

Datei-Funktionen

Ein- und Ausgabe im Binärmodus mit mget,mput

Ö�nen und Schlieÿen von Dateien mit mopen und mlose (Option 'b' !)

Binäre Eingabe (lesen): mget

Binäre Ausgabe (schreiben): mput

Beispiel: Schreiben einer Matrix und Einlesen einer Matrix�−−>fd=mopen( ' t e s t . dat ' , 'wb ' )−−>A=rand ( 2 , 3 )A =

0.2312237 0.8833888 0.30760910.2164633 0.6525135 0.9329616

−−>mput (A, ' d ' ) ;−−>mclose ( fd ) ;−−>fd=mopen( ' t e s t . dat ' , ' rb ' ) ;−−>y=mget (2∗3 , ' d ' , f d ) ;−−>A=matr ix ( y , 2 , 3 )A =

0.2312237 0.8833888 0.30760910.2164633 0.6525135 0.9329616

−−>mclose ( fd ) ;� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 37 / 58

Page 39: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Gra�kfunktionen

Gliederung

1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGra�kfunktionen

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 38 / 58

Page 40: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Gra�kfunktionen

2D Plot als Beispiel 1/3

Allgemeines

Vielfältige Gra�kfunktionen

Export von Gra�ken nach EPS, Gif,X�g

EPS-Export mit xs2eps

Gra�ken sind ObjekteAktuelle Handles:

Achsen: h1=gca()Figure: h2=gcf()Elemente: h3=gce()

Speichern und laden von Figurenmittels xsave und xload

2 Plotbefehle: plot (Matlab-like) undplot2d (Scilab)

Figure erzeugen: scf

Figure löschen: xdel

Figure-Inhalt löschen: clf

Beispiel (Scilab-Skript für plot):�// example w i th s u b p l o t st =0 : 0 . 1 : 1 00 ;y1=s i n ( t ∗0 . 1 )∗50 ;y2=s i n ( t ∗0 . 3 )∗75 ;subp lot (211)p lo t ( t , y1 , ' r ' , t , y2 , ' b ' ) ;a=gca ( ) ;a . y_ labe l . t e x t="y1" ;a . g r i d =[1 1 ] ;a . data_bounds=[20 −100 ;80 1 0 0 ] ;subp lot (212)p lo t ( t , y2 , ' b ' ) ;a=gca ( ) ;a . y_ labe l . t e x t="y2" ;a . x_ labe l . t e x t="x" ;a . g r i d =[1 1 ] ;a . data_bounds=[0 0 ;100 1 0 0 ] ;xsave ( ' my f i gu r e ' ) ;x s2ep s (0 , ' my f i gu r e . eps ' ) ;� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 39 / 58

Page 41: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Gra�kfunktionen

2D Plot als Beispiel 2/3

Ergebnis des Plot-Skripts:

20 30 40 50 60 70 80−100

−80

−60

−40

−20

0

20

40

60

80

100y1

0 10 20 30 40 50 60 70 80 90 1000

10

20

30

40

50

60

70

80

90

100

x

y2

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 40 / 58

Page 42: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scilab Gra�kfunktionen

2D Plot als Beispiel 3/3

Beispiel (Scilab-Skript für plot2d):�// example w i th s u b p l o t st =0 : 0 . 1 : 1 00 ;y1=s i n ( t ∗0 . 1 )∗50 ;y2=s i n ( t ∗0 . 3 )∗75 ;// c r e a t e s f i g u r e w i th i d 4f 4=s c f ( 4 ) ;plot2d ( t , [ y1 ' y2 ' ] , . . .s t y l e =[1 1 ] , . . .r e c t =[0 , −100 ,100 ,100 ] , . . .l o g f l a g=' nn ' ) ;

e=gce ( ) ;e . c h i l d r e n ( 1 ) . l i n e_ s t y l e =1;e . c h i l d r e n ( 1 ) . l i n e_ s t y l e =2;l e g end ( [ ' y1 ' ; ' y2 ' ] ) ;xg r i dx t i t l e ( ' Example ' , ' t ' , ' y ' ) ;x s2ep s (4 , ' p lot2d_example . eps ' ) ;xde l ( 4 ) ;� �

Ergebnis des Plot-Skriptes:

0 10 20 30 40 50 60 70 80 90 100−100

−80

−60

−40

−20

0

20

40

60

80

100

Example

t

y

y1

y2

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 41 / 58

Page 43: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Lineare Systeme und Reglerentwurf

Gliederung

1 Scilab

2 Lineare Systeme und Reglerentwurf

3 Scicos

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 42 / 58

Page 44: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Lineare Systeme und Reglerentwurf

De�nition linearer Systeme 1/2

Zeitkontinuierliche Systeme

Polynomkoe�zienten dürfen nicht komplex sein!

De�nition als Transferfunktion über Wurzeln:�S1=s y s l i n ( ' c ' ,2∗ poly (−0.5 , ' s ' )/ poly ( [ 0 , 0 ] , ' s ' ) ) ;� �

De�nition als Transferfunktion über Koe�zienten:�s=poly (0 , ' s ' )S2=s y s l i n ( ' c ' ,(1+2∗ s )/ ( s ^2 ) ) ;� �

De�nition als Zustandsraummodell:�A= [ 0 , 1 ; 0 , 0 ] ;B= [ 1 ; 1 ] ;C= [1 , 1 ] ;S3=s y s l i n ( ' c ' ,A ,B,C ) ;� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 43 / 58

Page 45: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Lineare Systeme und Reglerentwurf

De�nition linearer Systeme

Zeitdiskrete Systeme

Polynomkoe�zienten dürfen nicht komplex sein!

De�nition als Transferfunktion über Wurzeln:�TA=1;S4=s y s l i n (TA,−1.5∗ poly ( 0 . 6 , ' z ' )/ poly ( [ 1 1 ] , ' z ' ) ) ;� �

De�nition als Transferfunktion über Wurzeln:�z=poly (0 , ' z ' ) ;S5=s y s l i n (TA,(−1.5+2.5∗ z )/(1−2∗ z+z ^2 ) ) ;� �

De�nition als Zustandsraummodell:�A= [ 1 , 1 ; 0 , 1 ] ;B= [ 1 . 5 ; 1 ] ; C=[1 , 1 ] ;S6=s y s l i n (TA,A,B,C ) ;� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 44 / 58

Page 46: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Lineare Systeme und Reglerentwurf

Transformationen, Zugri� auf Systemparameter

TransformationenTransferfunktion nachZustandsraummodell:�

S3=t f 2 s s ( S1 ) ;� �Zustandsraummodell nachTransferfunktion:�−−>typeof ( S3 )

ans=sta t e−spaceS1=t f 2 s s ( S3 ) ;−−>typeof ( S1 )

ans=r a t i o n a l� �Diskretisierung:�

TA=1;S6=dscr ( S1 ,TA) ;S6=dscr ( S3 ,TA) ;� �

Zugri� auf Systemparameter

Verstärkung einer Transferfunktion:�−−>horner ( S1 , 1 ) ;

ans=3� �Zugri� auf Systemeigenschaften:�S1 . den ; S1 . num ; S3 . dt ;S3 .A ; S3 .B ; S3 .C ; S3 .D;� �

Koe�zienten eines Polynoms:�coe f f ( S1 . num ) ; coe f f ( S1 . den ) ;� �Wurzeln eines Polynoms:�root s ( S1 . num ) ; root s ( S1 . den ) ;� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 45 / 58

Page 47: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Lineare Systeme und Reglerentwurf

Bodeplot, P/Z-Plot und Nyquistdiagramm

Bodediagramm:�bode ( S1 ) ; // Frequenz i n Hz ! ! ! ! andwendbar au f S1−S6� �Nyquist:�nyqu i s t ( S1 ) ; // andwendbar au f S1−S6� �P/Z-Plot:�p l z r ( S1 ) ; // andwendbar au f S1−S6� �Wurzelortskurve: RL-TOOL http://www.iitb.ac.in/uma/ ishan/scilab/rltool.htm

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 46 / 58

Page 48: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Lineare Systeme und Reglerentwurf

Simulation linearer Systeme

Sprungantworten

Zeitkontinuierliche Systeme�t=t =0 : 0 . 0 1 : 1 ;

csim ( ' s t e p ' , t , S1 ) ; // a l t e r n a t i v cs im (u , t , S1 ) ;� �Zeitdiskrete Systeme�ds imul (S6 , ones (1 , l ength ( t ) ) ) // Zustandsraummode l l e r f o r d e r l i c h� �

Frquenzantworten�f=logspace (−2 ,2 ,100) ; // F r equenzvek to r i n Hz ![ f , r ]= r ep f r eq (S1 , f ) ; // 1 . Va r i a n t e[ f , r ]= r ep f r eq (S1 , fmin , fmax ) ; // 2 . Va r i a n t e[ db , ph i ]=dbphi ( r ) ; // Ampl i tude und Phase� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 47 / 58

Page 49: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Lineare Systeme und Reglerentwurf

Beispiel

Scilab-Skript zur Erzeugung desAmplitudenganges:�s=poly (0 , ' s ' ) ;G=s y s l i n ( ' c ' , 1/( s^2+2∗ s +1)) ;f=logspace (−2 ,2 ,100) ;[ f , r ]= r ep f r eq (G, f ) ;[ db , ph i ]=dbphi ( r ) ;s c f ( 1 ) ;c l f (1 , ' r e s e t ' ) ;plot2d ( f ∗2∗%pi , db , . . .s t y l e = [ 1 ] , . . .l o g f l a g=' l n ' ) ;

e=gce ( ) ;e . c h i l d r e n ( 1 ) . l i n e_ s t y l e =1;xg r i dx t i t l e ( ' Ampl i tudengang ' , . . .' Frequenz i n [ rad / s ] ' , . . .' Ve r s taekung i n [ dB ] ' ) ;

x s2ep s (1 , ' example_AG . eps ' ) ;� �

Ergebnis:

−210

−110

010

110

210

310

−120

−100

−80

−60

−40

−20

−0

Amplitudengang

Frequenz in [rad/s]

Ver

stae

kung

in [d

B]

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 48 / 58

Page 50: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Lineare Systeme und Reglerentwurf

Warnung: Fehlerhafte Polynomde�nitionen über Wurzeln!!!

Falsch:�−−>z=poly (0 , ' z ' ) ;−−>A=(z−0.7+%i ∗0 . 1 )∗ ( z−0.7−%i ∗0 . 1 )A =r e a l part

20 .5 − 1 .4 z + z

imag i na r y part− 6 .661E−18

−−>� �Führt zu komplexen Polynomkoe�zienten!!!Richtig:�−−>A=poly ([−0.7+%i∗0.1 ,−0.7−%i ∗ 0 . 1 ] , ' z ' )A =

20 .5 + 1 .4 z + z

−−>� �Poly-Befehl nutzen, um ein Polynom über seine Wurzeln zu beschreiben!

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 49 / 58

Page 51: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Lineare Systeme und Reglerentwurf

Lösung Diophantischer Gleichungen

ProblemLösen einer Diophantischen Gleichung vomTyp

A(z)R(z)Sd (z)+

S(z)S(z)Sd (z) = Ac(z)

wobei die Regelstecke durch B(z)/A(z)gegeben ist.

Der Regler hat die Struktur(S(z)Sd (z))/(R(z)Rd (z)).

Die Reglerpolynome R(z) und S(z) sindfür ein gegebenes Wunschpolynom Ac(z)des geschlossenen Kreises zu bestimmen.

Die Reglerpolynome Rd (z) und Sd (z) sindfest vorgegeben, um z.B. ein gewünschtesSystemverhalten gegenüber Störungen zuerzielen. Eine häu�ge Annahme istRd (z) = z − 1 (integrales Reglerverhalten)und Sd (z) = 1.

Routine auf der Scilab-Website desFachgebiets.

Beispiele:�exec ( ' d i o . s c i ' ,−1)z=poly (0 , ' z ' ) ;

//Example 1A=z2+0.3∗ z +0.1 ;B=0.4+0.1∗ z ;Ac=z3+0.2∗ z2+0.3∗ z +0.4 ;Rd=1;Sd=1;[R , S]= d i o (A,B, Rd , Sd , Ac ) ;

//Example 2 wi th i n t e g r a t o rA=z2+0.3∗ z +0.1 ;B=0.4+0.1∗ z ;Ac=z4+2∗z3+0.2∗ z2+0.3∗ z +0.4 ;Rd=z−1;Sd=1;[R , S]= d i o (A,B, Rd , Sd , Ac ) ;� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 50 / 58

Page 52: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scicos

Gliederung

1 Scilab

2 Lineare Systeme und Reglerentwurf

3 Scicos

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 51 / 58

Page 53: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scicos

Einführung

Was ist Scicos?Graphischer Editor zur Erstellung vonBlockdiagramm-Modellen

Blöcke von verschiedenen Paletten

Automatische Codegenerierungmöglich

Start von Scicos:�−−>s c i c o s ;� �Laden eines existierenden Diagramms:�−−>s c i c o s my_diagramm . cos ;� �ACHTUNG: Scilab - Command - Windowist zunächst blockiert, wenn Scicos läuft;Aktivierbar unter Scicos über MenüpunktTools → Activate Scilab Window

EditierenBlöcke hinzufügen über Menü: Edit →Palettes oder Pal Tree

Shortcuts:m - Block bewegen,c - kopieren, l - verbinden,o - Maske ö�nen, r - neu zeichen

Triggerung zeitdiskreter Blöcke wieScopes mittels einer Uhr

Bei Scopes den Wertebereich(Ymin,Ymax) und Darstellzeit (RefreshPeriod) festlegen!

SimulationSimulationseinstellungen über Menü:Simulate → Setup

Anpassen der Simulationsdauer: FinalIntegration Time

Start der Simulation über Menü:Simulate → Run

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 52 / 58

Page 54: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scicos

Symbolische Parameter

Vorgehensweise

Alle Parameter aus demScilab-Workspace können in Scicos alssymbolische Parameter verwendetwerden.

Es emp�elt sich immer vor derSimulation den Menüpunkt Simulate-> Eval auszuführen, damit Scicos dieaktuellen Werte der Parameter kennt.(ACHTUNG: Ansonsten wird einbereits kompiliertes Modell mit altenParameterwerten simuliert!)

Um Daten zu ändern, muss man überden Menüpunkt Tools → ActivateScilab Window nach Scilab wechseln;Nach dem Anpassen der Daten einfachauf Scicos klicken! (Eval nichtvergessen)

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 53 / 58

Page 55: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scicos

Datenaustausch über Dateien und Batchsimulation

DatenaustauschEinlesen und Speichern von Daten überASCII-Dateien, in denen die Daten inSpalten gespeichert sind.

Schreiben und Lesen der Dateien unterScilab mit write und read

Von Scicos gespeicherte Daten habenals erste Spalte immer die Zeit!

Eingangsdaten in Scilab können eineneigenen Zeitvektor beinhalten odergetaktet sein!

Die letzten de�nierten Eingangsdatenwerden gehalten.

Festlegen der Anzahl der Ein- undAusgänge und Dateinamen in Scicos.

Batch SimulationStarten der Simulation von Scilab aus!

Symb. Parameter über Scicos-Context!

Beispielskript:�// gen e r a t e i n pu t data// Sampl ing t ime 0 .1 assumedunix ( ' rm i n p u t_ f i l e ' ) ;u=[ zeros ( 0 : 0 . 1 : 1 ) . . .ones ( 1 . 1 : 0 . 1 : 2 ) . . .zeros ( 2 . 1 : 0 . 1 : 3 ) ] ' ;

wr i te ( ' i n p u t_ f i l e ' , u ) ;

load example . cos// pa ramete r s i n t o con t e x t%sc icos_context . k = 5 ;// s imu l a t i o ns c i c o s_ s imu l a t e ( scs_m , l i s t ( ) , . . .%sc icos_context ) ;

// read i n s t o r e d t ime and outpu t sdata=read ( ' o u t p u t_ f i l e ' ,−1 ,3) ;// arg : f i l e name , rows , columnsunix ( ' rm ou t p u t_ f i l e ' ) ;

t=data ( : , 1 ) ; y=data ( : , 2 ) ;u=data ( : , 3 ) ;� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 54 / 58

Page 56: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scicos

Datenaustausch über Dateien und Batchsimulation

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 55 / 58

Page 57: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scicos

Datenaustausch und Batchsimulation

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 56 / 58

Page 58: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scicos

From/To Workspace

IdeeSpeichern von Signalen im Scilab-Workspace

Auslesen von Signalen aus dem Scilab-Workspace

Entsprechende Blöcke in den Paletten Sources und Sinks

Bei To Workspace muss spezi�ziert werden, wie viele Datenpunkte man speichern möchte!

Nach der Simulation sind die Signale als Struktur mit den Zeiten und Signalwerten unterdem spezi�zierten Variablennamen in Scilab verfügbar und können gespeichert oder ggf.weiter verarbeitet werden.

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 57 / 58

Page 59: Einführung in Scilab/Scicos/RtaiLab - control.tu-berlin.de · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 Beta2 H. Nahrstaedt, T. Schauer achgebiFet Regelungssysteme TU Berlin

Scicos

Scicos - Computational Functions

Idee

Erstellung eigener Blöcke (statischeroder dynamischer Natur) unter Scicos

Verschiedene Typen: Scilab, Fortran,C, C++

Maskenerstellung möglich

Generelle Maske: Palette Others BlockGeneric

Scicos steuert die Funktionen über�ags.

Comp. Functions müssen in Scilabgeladen werden, bevor Scicos gestartetwird!

Beispiel für System 2-ter Ordnung:�f unc t i on b l o ck=model ( b lock , f l a g )// Parameterk1=1;k2=2;i f f l a g==0 //\ dot x updateb l o ck . xd (1 ) = . . .−k1∗ b l o ck . x (1)+ b l o ck . i n p t r ( 1 )^2 ;b l o ck . xd (2 ) = . . .−k2∗ b l o ck . x (2)+ b l o ck . x ( 1 ) ;e l s e i f f l a g==1 // ou tpu t s

b l o ck . o u t p t r ( 1 ) ( 1 ) = . . .b l o ck . x ( 1 ) ;

b l o ck . o u t p t r ( 2 ) ( 1 ) = . . .b l o ck . x ( 2 ) ;

b l o ck . o u t p t r ( 3 ) ( 1 : 2 ) = . . .b l o ck . x ;

endendfunct ion� �In Scilab laden mit:�exec ( ' model . s c e ' ,−1);� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 58 / 58