12

Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet Regelungssysteme TU Berlin

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet Regelungssysteme TU Berlin

Einführung in Scilab/Scicos/RtaiLabVersion 4.1.2

H. Nahrstaedt, T. Schauer

Fachgebiet RegelungssystemeTU Berlin

20. Mai 2008

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 1 / 68

Scilab

Gliederung

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

2 Lineare Systeme und Reglerentwurf

3 Scicos

4 Nichtlineare Regelsysteme

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 2 / 68

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 20. Mai 2008 3 / 68

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 20. Mai 2008 4 / 68

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 20. Mai 2008 5 / 68

Scilab Allgemeine Informationen über Scilab

Nutzung am Fachgebiet Regelungssysteme

Rechnerpool

Rechnerpool im Raum EN 152/153, Zugang über Code-Schloss, Code über Sekretariaterhältlich.

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 20. Mai 2008 6 / 68

Page 2: Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet 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 20. Mai 2008 7 / 68

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 20. Mai 2008 8 / 68

Scilab Objekte

Gliederung

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

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 9 / 68

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öschenNiemals clear() ohne Parameter ausführen!!!�−−>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 , 2 ) ]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 20. Mai 2008 10 / 68

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 20. Mai 2008 11 / 68

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 20. Mai 2008 12 / 68

Page 3: Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet 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 pa 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 20. Mai 2008 13 / 68

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 20. Mai 2008 14 / 68

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 20. Mai 2008 15 / 68

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 20. Mai 2008 16 / 68

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 20. Mai 2008 17 / 68

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 20. Mai 2008 18 / 68

Page 4: Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet 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 20. Mai 2008 19 / 68

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 20. Mai 2008 20 / 68

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 20. Mai 2008 21 / 68

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 20. Mai 2008 22 / 68

Scilab Programmierung

Gliederung

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

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 23 / 68

Scilab Programmierung

Scilab-Programme

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.�

exec ( ' pa ramete r . s c e ' ) ; // Fuehr t das S k r i p t ausexec ( ' d i o . s c i ' ,−1); // Laedt d i e Funkt ion und

// un t e r d r u e c k t d i e Ausgabe .� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 24 / 68

Page 5: Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet Regelungssysteme TU Berlin

Scilab Programmierung

Verzweigungen

Verzeigungen mittels if/then/else bzw. elseif

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 ' ) ;−−>e l s e ( 'A i s complex ' ) ; end ;A i s a r e a l matr ix� �Mehrfachverzweigungen mittels select

Der Inhalt der Variablen (<expr>) wird nacheinander mit <expr1>, <expr2> usw.verglichen

Bei keiner Übereinstimmung kommen die Anweisungen hinter else zum tragen.�s e l e c t <expr >,

case <expr1> then <i n s t r u c t i o n s >case <expr2> then <i n s t r u c t i o n s >. . .e l s e <i n s t r u c t i o n s >

end� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 25 / 68

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 20. Mai 2008 26 / 68

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 20. Mai 2008 27 / 68

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 20. Mai 2008 28 / 68

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 20. Mai 2008 29 / 68

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 20. Mai 2008 30 / 68

Page 6: Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet 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 20. Mai 2008 31 / 68

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 20. Mai 2008 32 / 68

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 20. Mai 2008 33 / 68

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 20. Mai 2008 34 / 68

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 20. Mai 2008 35 / 68

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 20. Mai 2008 36 / 68

Page 7: Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet 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 20. Mai 2008 37 / 68

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 20. Mai 2008 38 / 68

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 20. Mai 2008 39 / 68

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

100

y1

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 20. Mai 2008 40 / 68

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 20. Mai 2008 41 / 68

Lineare Systeme und Reglerentwurf

Gliederung

1 Scilab

2 Lineare Systeme und Reglerentwurf

3 Scicos

4 Nichtlineare Regelsysteme

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 42 / 68

Page 8: Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet 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 20. Mai 2008 43 / 68

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 20. Mai 2008 44 / 68

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 ) ;� �Bei der Weiterverwendung vonWurzeln in Polynomen immer Ergebnismit real() umwandeln!

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 45 / 68

Lineare Systeme und Reglerentwurf

Bodeplot, P/Z-Plot und Nyquistdiagramm

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

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 46 / 68

Lineare Systeme und Reglerentwurf

Simulation linearer Systeme

Sprungantworten

Zeitkontinuierliche Systeme�t =0 : 0 . 0 1 : 1 ; u=ones (1 , l ength ( t ) ) ;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 , u ) // 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 20. Mai 2008 47 / 68

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 20. Mai 2008 48 / 68

Page 9: Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet 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 20. Mai 2008 49 / 68

Lineare Systeme und Reglerentwurf

Lösung Diophantischer Gleichungen

ProblemLösen einer Diophantischen Gleichung vomTyp

A(z)R(z)Rd (z)+

B(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 20. Mai 2008 50 / 68

Scicos

Gliederung

1 Scilab

2 Lineare Systeme und Reglerentwurf

3 Scicos

4 Nichtlineare Regelsysteme

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 51 / 68

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 20. Mai 2008 52 / 68

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 20. Mai 2008 53 / 68

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 20. Mai 2008 54 / 68

Page 10: Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet Regelungssysteme TU Berlin

Scicos

Datenaustausch über Dateien und Batchsimulation

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 55 / 68

Scicos

Datenaustausch und Batchsimulation

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 56 / 68

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 20. Mai 2008 57 / 68

Scicos

Scicos - Blöcke 1/4

Idee

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

Verschiedene Typen: Scilab (Type 5),C/C++ (Type 4)

Verarbeitene Funktion: ComputationalFunction

Scicos steuert die Funktionen über�ags:Flag 0: Berechnung der kont.ZustandsableitungenFlag 1: Berechnung der AusgängeFlag 2: Update der Zustände durchexterne Aktivierung

Ein- und Ausgänge können Matrizensein!

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

Beispiel für System 3-ter Ordnung (kont.und zeitdiskret):�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==2 // z updateb l o ck . z (1)= b l o ck . z (1)+b l o ck . i n p t r ( 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 . z ( 1 ) ;

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

endendfunct ion� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 58 / 68

Scicos

Scicos - Blöcke 2/4

DatenstrukturEingänge: block.inptr

Ausgänge: block.outptr

Kont. Zustand: block.x

Ableitung des kont. Zustands:block.xd

Zeit-diskreter Zustand: block.z

Reelle Parameter: block.rpar

Integer-Parameter: block.ipar

Listen-Parameter: block.opar

Matrizen als Zustände

Umwandlung der Matrix M (Zeitpunkt:k bzw. k + 1 , Dimension n x m) ineinen Vektor Mvec=M(:) (�ag 2).

Speichern des Vektors Mvec innerhalbvon block.z (�ag 2).

Auslesen des Vektors Mvec (Zeitpunkt:k − 1 bzw. k ) aus block.z (�ag 1).

Umwandlung des Vektors Mvec in eineMatrix M=matrix(Mvec,n,m) (�ag 1).

Achtung: Scicos ruft immer zuerst �ag1 auf, und dann �ag 2.

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 59 / 68

Scicos

Scicos - Blöcke 3/4

Einbinden in ScicosGenerelle Maske: Palette - Others,Block - Generic

Eintragen des Names derComputational Function, derDimension der Eingangs- undAusgangsgröÿen

Initialisierung der Zustände

Festlegung, ob ein direkter Durchgri�vom Ein- zum Ausgang existiert(Detektion algebraischer Schleifen).

Zeitdiskrete Blöcke mit einerAbtastzeit:Input event port size = [1]

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 60 / 68

Page 11: Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet Regelungssysteme TU Berlin

Scicos

Scicos - Blöcke 4/4

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 61 / 68

Nichtlineare Regelsysteme

Gliederung

1 Scilab

2 Lineare Systeme und Reglerentwurf

3 Scicos

4 Nichtlineare Regelsysteme

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 62 / 68

Nichtlineare Regelsysteme

Simulation gewöhnlicher Di�erentialgleichungen

Vorgehensweise

De�nition des DGL-Systemsx = f (t, x) über eineFunktion, welche dieAbleitungen zurückliefert.

Zeitabhängigkeit der DGLmöglich!

Simulation der DGL mittels derFunktion ode.

Argumente von ode sind derVektor der Anfangswerte, dieAnfangszeit t0, der Zeitvektort für die Simulationausgabesowie der Name der Funktion,welche das DGL-Systemsbeschreibt.

Beispiel (Pendel):�−−>f unc t i on xdot=pendulum_ode ( t , x )−−> a=1; b=2;−−> xdot (1)=x ( 2 ) ;−−> xdot (2)=−a∗x(2)−b∗ s i n ( x ( 1 ) ) ;−−>endfunct ion� ��−−>t =0 : 0 . 0 1 : 1 0 ; t0=0;−−>x0=[%pi / 2 ; 0 ] ;−−>x=ode ( x0 , t0 , t , pendulum_ode ) ;−−>h=s c f ( ) ; plot2d ( t , x ( 1 , : ) , [ 2 ] ) ;−−>xs2eps ( h . f i g u r e_ id , ' ode . eps ' ) ;� �

0 1 2 3 4 5 6 7 8 9 10−0.5

0.0

0.5

1.0

1.5

2.0

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 63 / 68

Nichtlineare Regelsysteme

Erstellung von Vektorfelddiagrammen für Systeme 2. Ordnung

Vorgehensweise

De�nition des DGL-Systemsx = f (t, x) über eine Funktion,welche die Ableitungenzurückliefert.

Zeitabhängigkeit der DGL möglich!

Erstellung des Vektorfeldes mittelsder Funktion fchamp.

Argumente von fchamp sindzunächst der Name der Funktion,welche das DGL-Systemsbeschreibt sowie der Zeitpunkt tzur Berechnung des Vektorfeldesbei zeitvarianten Systemen.Anschlieÿend werden zwei Vektorenübergeben, welche die Gitterpunktebestimmen, an denen die Vektorengezeichnet werden. Optionalkönnen die Gröÿe der Pfeile und dieAchsenmaÿe vorgegeben werden.

�−−>f unc t i on xdot=pendulum_ode ( t , x )−−> xdot (1)=x ( 2 ) ;−−> xdot (2)=−1∗x (2)−2∗ s i n ( x ( 1 ) ) ;−−>endfunct ion� ��−−>x1=−4:0 .5 :4 ; x2 =−4:0 .5 :4 ; t =0;−−>fchamp ( pendulum_ode , 0 , x1 , x2 , . . .−−> 1 , [ −4 , −4 ,4 ,4 ] ) ;� �

−4 −3 −2 −1 0 1 2 3 4−4

−3

−2

−1

0

1

2

3

4

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 64 / 68

Nichtlineare Regelsysteme

Einführung in die Symbolic Toolbox

GenerellesDie Toolbox ist nicht in der Standardinstallation enthalten.

Quelle: http://www.cert.fr/dcsd/idco/perso/Magni/toolboxes.html#symbolic

Basierend auf Maxima, einem Computeralgebrasystem

Maxima und Perl müssen installiert sein.

Scilab kommuniziert mit Maxima.

Die Symbolic Toolbox sollte im Scilab-Programmverzeichniss installiert sein.

Initialisierungsskript (Laden der Toolbox und De�nition der Jacobian-Matrix):�−−> i f e x i s t s ( 'MAX' )==0;−−> exec ( ' SCI/OVLD/ l o a d e r . s c e ' )−−> exec ( ' SCI/SYM/ l o a d e r . s c e ' )−−> mexec ( ' j a c o b i a n ( e , v a r s ):= b l o ck ( [m, n , i , j ] , i f mat r i xp ( v a r s ) . . .−−> then n : l e n g t h ( v a r s ) e l s e [ n : 1 , v a r s : mat r i x ( [ v a r s ] ) ] , . . .−−> i f mat r i xp ( e ) then m: l e n g t h ( e ) e l s e [m: 1 , e : mat r i x ( [ e ] ) ] , . . .−−> genmat r i x ( lambda ( [ i , j ] , d i f f ( e [ i , 1 ] , v a r s [ j , 1 ] ) ) ,m, n ) ) $ ' ) ;−−> %st_isempty = [ ] ;−−>end ;� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 65 / 68

Nichtlineare Regelsysteme

Symbolic Toolbox Beispiel: Linearisierung 1/3

StartDe�nition von symbolischen Variablen mittel syms

Viele Maxima Befehle wurden nach Scilab überführt.

Alle Maxima Befehle lassen sich mittels dem Befehl maxima aus Scilab heraus starten.

Beispiel - Ruhelagen und Linearisierung des Systems

x1 = x2

x2 = −x1 + x31 − x2.�−−>// d e c l a r e s ymbo l i c v a r i a b l e s−−>syms x1 x2 lambda−−>// d e c l a r e v e c t o r f u n c t i o n−−>f=[x2 ; −x1+x1^3−x2 ] ;−−>// d e c l a r e s t a t e s−−>x=[x1 ; x2 ] ;−−>// f i n d e q u i l i b r i um po i n t s−−>RL=maxima ( ' s o l v e ' , syml ( [ f ( 1 ) , f ( 2 ) ] ) , syml ( [ x1 , x2 ] ) ) ;� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 66 / 68

Page 12: Gliederung Einführung in Scilab/Scicos/RtaiLab Gliederung ... · Einführung in Scilab/Scicos/RtaiLab Version 4.1.2 H. Nahrstaedt, T. Schauer Fachgebiet Regelungssysteme TU Berlin

Nichtlineare Regelsysteme

Symbolic Toolbox Beispiel: Linearisierung 2/3

�−−>[RL . x1 RL . x2 ]ans =

!−1 0 !! !! 1 0 !! !! 0 0 !−−>// l i n e a r i s e−−>A=maxima ( ' j a c o b i a n ' , f , x )A =!0 1 !! !!3∗ x1^2−1 −1 !−−>// l i n e a r i s a t i o n at e q u i l . p o i n t 1−−>A_RL1=subs (A , [ x1 x2 ] , [ RL . x1 (1 ) RL . x2 ( 1 ) ] )A_RL1 =!0 1 !! !! 2 −1 !� �H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 67 / 68

Nichtlineare Regelsysteme

Symbolic Toolbox Beispiel: Linearisierung 3/3

�−−>// e i g e n v a l u e s−−>e i g (A_RL1)ans =

!1 !! !!−2 !−−>// conv e r t s ymbo l i c type to s c i l a b mat r i x−−>A_RL1=db l (A_RL1)A_RL1 =

0 . 1 .2 . − 1 .� �

H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 20. Mai 2008 68 / 68