Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Scicos
Datenaustausch über Dateien und Batchsimulation
H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 55 / 58
Scicos
Datenaustausch und Batchsimulation
H. Nahrstaedt, T. Schauer (FG RS) Einführung in Scilab/Scicos/RtaiLab 24. Oktober 2007 56 / 58
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
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