
Transcription
EinführunginSIMULINK 3.0Paul Weber22.07.99Rechenzentrum Universität Karlsruhe1 von 54Was ist Simulink? interaktives, grafikorientiertes Programm- zur Generierung von dynamischen Modellen- zur Simulation von dynamischen Modellen in Matlab integriert- Simulink-Variable sind in Matlab verfügbar- Simulink-Modell ist unter Matlab ausführbar Blockbibliothek für viele Funktionen Einbinden von C- und Fortran-Programmen Definition neuer BlöckeRechenzentrum Universität Karlsruhe2 von 54
Welche Systeme können modelliert werden? zeitkontinuierliche Systemezeitdiskrete SystemeMischungenSysteme mit diskreten EreignissenRechenzentrum Universität Karlsruhe3 von 54BlockbibliothekDie Simulink-Blockbibliothek ist in funktionale Gruppen eingeteilt SourcesSignalquellen, Eingabe von Dateien und aus demWorkspace, Uhren, konstante Werte SinksAusgabe von Variablen in Dateien oder Workspace,Grafikausgabe ContinuousIntegration und Ableitung, Transferfunktionen,linearer Zustandsraum, Zero-Pole DiscreteBlöcke für zeitdiskrete SimulationRechenzentrum Universität Karlsruhe4 von 54
Blockbibliothek Math Functions &Tables Nonlinear Signals &SystemsSumme, Produkt, Multiplikation, math. Funktionenlog. Operationen, DatenkonvertierungS-Function, Matlab-Funktion, Definition einerbel. Funktion, Look-Up TablesNichtlineare Funktionen und SwitchesMultiplexfunktionen, Signalein- und ausgänge,Datenein-/ausgabe, Datenübertragung Blocksets &Toolboxesverschiedene spezielle Blöcke, die auch aufMatlab-Toolboxen zugreifen, DemosRechenzentrum Universität Karlsruhe5 von 54Blöcke Blockbibliothek wird durch Mausklick geöffnet Block wird mittels gedrückter linker Maustaste in das Arbeitsfenstergeschoben zweifacher Mausklick auf einen Block öffnet das dazugehörigeFenster, in dem Blockparameter gesetzt werden können mehrere Blöcke können zu einem neuen Block zusammengefaßtwerden, der individuell beschriftet und mit einer Grafik versehenwerden kann Blocksymbole enthalten Ein- und Ausgänge, die miteinander verbundenwerden müssen. Verbindungen werden erzeugt, indem man den Cursormit gedrückter linker Maustaste vom Ausgang eines Blocks zum Eingangeines anderen Blocks zieht. mit Ctrl- und linker Maustaste werden Blöcke kopiert und Verzweigungenvon Blockverbindungen erzeugt.Rechenzentrum Universität Karlsruhe6 von 54
Editieren von BlöckenBlöcke können zur besseren Dokumentation und zur besserenÜbersicht maskiert werden; d.h. das Block-Icon kann verändert werden gruppiert werden; d.h. mehrere Blöcke können zu einem neuen Blockzusammengefaßt werden die Blockunterschrift kann geändert werden, in dem man sie anklickt undüberschreibtMaskieren und Gruppieren von Blöcken geschieht im EDIT-Menü.Rechenzentrum Universität Karlsruhe7 von 541. BeispielFrequenz:6 (rad/sec)Periodendauer:T 2 π / ω 1.047Amplitude:1Rechenzentrum Universität Karlsruhe8 von 54
1. BeispielAufruf von Simulinkmatlab simulinkRechenzentrum Universität KarlsruheFileübliche Dateiverwaltungstools, wie Sichern, Öffnen,usw.EditEditierfunktionen für Blöcke, erzeugen vonSubsystemen, Maskieren von Subsystemen, usw.ViewZoom-FunktionenFormatBearbeiten von BlocksymbolenRechenzentrum Universität Karlsruhe9 von 5410 von 54
1.Beispiel beim SIMULINK-Aufruf wird ein Fenster eröffnet nacheinander Sources und Sinks anklicken und die Blöcke in dasFenster ziehen, Parameter setzen Blöcke miteinander verbinden im Simulation-Menü Parameters. anklicken und Simulationsparameter setzen:- Start time:0.0- Stop time:20.0- Solver options:Type: Fixed-step ode1 (Euler)Fixed Step size: 0.01 im Simulations-Menü Start anklicken, Simulation läuft Anklicken des Scope-Blocks öffnet das Fenster mit dem SignalverlaufRechenzentrum Universität Karlsruhe11 von 541.BeispielRechenzentrum Universität Karlsruhe12 von 54
1. BeispielRechenzentrum Universität Karlsruhe13 von 541. BeispielRechenzentrum Universität Karlsruhe14 von 54
SourcesSignal GeneratorErzeugen von Sinus, Sägezahn, Stufen undRauschenEingabe: Frequenz und AmplitudeSine WaveErzeugung von SinuswellenEingabe: Frequenz, Amplitude und PhaseConstantEingabe einer KonstantenPulse GeneratorRechteckpulseEingabe: Periode, Pulslänge und PulshöheClock/Digital ClockUhrensignaleRechenzentrum Universität Karlsruhe15 von 54SourcesRandom NumberUniform Random No.Generator für normal- und gleichverteilteZufallszahlenFrom WorkspaceEinlesen von Werten aus dem ArbeitsspeicherEingabe: Matrix aus Zeit und VariablenFrom FileEinlesen von Werten aus einer Datei, es wirdreihenweise die Matrix aus Zeit und Variablenwerten eingelesenRechenzentrum Universität Karlsruhe16 von 54
SinksScopezeichnet einlaufende Signale auf (Oszilloskop)Eingabe: Zeitachse und AmplitudeDisplayeinlaufende Werte werden angezeigtXY Graphzeichnet Bahnkurven aufEingabe: zwei zeitabhängige VariableTo WorkspaceAusgabe in den ArbeitsspeicherTo FileAusgabe in eine DateiRechenzentrum Universität Karlsruhe17 von 54ContinuousDerivativebildet die Zeitableitung der EingangsgrößeIntegratorintegriert die EingangsgrößeEingabe: AnfangswertTransfer FcnÜbertragungsfunktionEingabe: Zähler- und NennerkoeffizientenZero-Polefaktorisierte Darstellung der ÜbertragungsfunktionEingabe: Vektoren mit den Nullstellen undPolen als Komponenten, KoeffizientState-SpaceSimulation eine linearen Systems in derZustandsraum-DarstellungEingabe: ModellmatrizenRechenzentrum Universität Karlsruhe18 von 54
DiscreteBlöcke für zeitdiskrete Simulation. Hier findet man zu denkontinuierlichen Blöcken die diskreten Entsprechungen, also diskreter Integrator diskrete Übertragungsfunktion und Zero-Pole-Funktion diskreter Zustandsraum-Block verschiedene andereRechenzentrum Universität Karlsruhe19 von 54MathGainMatrix GainSlider Gainmultipliziert die Eingangsgröße (bzw. Matrix) miteinem konstanten Wert; bei Slider Gain kann derWert mit einem Schieberegler modifiziert werdenSumSummiert die EingangsgrößenEingabe: Anzahl der SummandenProductMultipliziert zwei EingangsgrößenInner Productbildet das Skalarprodukt zweier EingangsvektorenDazu kommen verschieden andere mathematische Funktionen logische Funktionen KonvertierungsfunktionenRechenzentrum Universität Karlsruhe20 von 54
NonlinearVerschiedene nichtlineare Funktionen wie Sättigungskurven Quantisierer Schalter Blöcke mit nichtlinearen KennlinienRechenzentrum Universität Karlsruhe21 von 54Signals & SystemsInport/Outportformale Ein- und Ausgänge des SystemsMuxÜberlagerung von mehreren Signalenzu einem VektorsignalEingabe: Anzahl der SignaleDemuxZerlegung eines VektorsignalsData Store .Definition, I/O auf einem MemorybereichGround, TerminateBehandlung nicht verbundener PortsFrom, GotoSignalübertragung zwischen Blöcken ohneVerbindungRechenzentrum Universität Karlsruhe22 von 54
Functions & TablesFcnhier kann eine beliebige Funktion der Eingangsgröße angegeben werdenS-FunctionAufruf einer S-FunktionMatlab-FunctionAufruf einer Matlab-FunktionLook-Up TablesInterpolieren diskrete WerteRechenzentrum Universität Karlsruhe23 von 54Block Sets & ToolboxesHier werden spezielle Blöcke zur Verfügung gestellt, die z.T. vonMatlab-Toolboxen Gebrauch machen.Des weiteren findet man hier Demos der einzelnen Blöcke Demo-BeispieleRechenzentrum Universität Karlsruhe24 von 54
2. BeispielErstellen Sie das Blockdiagramm für folgende Differentialgleichung1. Ordnung:dx λ xdtmitx0 1λ –1Rechenzentrum Universität Karlsruhe25 von 542. BeispielSchleifen kommen praktisch immer vor und stellen kein Problem dar,wenn dadurch verschiedene Variable oder Ableitungen miteinanderverknüpft werden.Rechenzentrum Universität Karlsruhe26 von 54
Algebraische SchleifenWenn zwei oder mehrere Blöcke, in denen die Eingangsgröße direktdurchgereicht wird, eine Rückkopplung bilden, muß die Schleife iteriertwerden. Solche Schleifen verlangsamen den Lösungsprozeß bzw.haben keine Lösung und sollten daher vermieden werden.Beispiel:Dies entspricht der Gleichungx 5x 2Rechenzentrum Universität Karlsruhe27 von 54Algebraische SchleifenStartet man die Schleife, wird die MeldungWarning:Block diagram name contains 1 algebraicloop(s).Found algebraic loop containing block(s): name/Gain name/Sum (algebraic variable)ausgegeben. Falls nach 200 Iterationen keine Konvergenz erreicht wird,bricht Simulink ab.Für algebraische Schleifen sind folgende Blöcke kritisch: Verstärker-Blöcke (Gain) und die meisten nichtlinearen Blöcke Transfer-Blöcke, wenn der Zähler von derselben Ordnung wie der Nennerist Zero-Pole-Blöcke, wenn gleichviele Nullstellen wie Pole vorkommen State-Space Blöcke, wenn die D-Matrix ungleich Null istRechenzentrum Universität Karlsruhe28 von 54
3. Beispielẋ 2 d ẋ ω 2 x 0Rechenzentrum Universität Karlsruhe29 von 544. BeispielOeko-System:Zwei Populationen,Tang (T) und Seeschnecken (S)2T k 1 T – k 2 T – k 3 T SṠ b k 3 T S – k 4 S – k 5 S2T 0 10, S 0 100–5–3k 1 1,1 ,k 2 10 ,k 3 10 ,k 4 0 ,9 ,k 5 10–4–2b 2 10Rechenzentrum Universität Karlsruhe30 von 54
4.BeispielRechenzentrum Universität Karlsruhe31 von 54Ausführen von Simulink-ModellenEin Simulink-Modell wird gestartet, indem es aus dem SimulationMenü heraus gestartet wird. Im Solver Panel werden Steuerparameter für den zRechenzentrum Universität Karlsruhe32 von 54
Rechenzentrum Universität Karlsruhe33 von 54Rechenzentrum Universität Karlsruhe34 von 54
Im Workspace I/O Panel wird die Ausgabeinformation spezifiziert. ImBereich Save to Workspace je nach aktivierter Checkbox t und x werden in den Workspace ausgegeben y wird nur dann in den Workspace ausgegeben, wenn es im Blockmodellin einen Outport-Block geleitet wird im Bereich Loading from Input können Variable und MatlabFunktionen über Inport-Blöcke eingelesen werden. es können Anfangsbedingungen eingegeben werden, die dieentspechenden Werte in den Blöcken überschreiben Sicherung des EndzustandsRechenzentrum Universität Karlsruhe35 von 54Funktionale BeschreibungSimulink-Modelle können auf verschiedene Arten beschrieben werden:Model-FileTextuelle Beschreibung des g des Modells: model.mC-CodeModellbeschreibung als C-Programm,Übersetzung in ein Matlab CMEX-File: model.mexS-Functions können als Blocksymbol in Simulink integriert werden.Alle 3 Versionen werden aus Matlab heraus gestartet.Rechenzentrum Universität Karlsruhe36 von 54
Aufruf:[t,x,y,] lerster Namensteil des Modell-Filenamens (inHochkomma)timespanSimulationsendzeitbereich; hier muß hier einVektor aus Start- und Endzeitpunkt eingegeben werden:[tstart,tend]optionswird durch das simset Kommando erzeugt.utEingänge, die sich auf Inport-Blöcke im Modell beziehen;hier steht der Name einer Matrix mit zwei Spalten, bei derdie erste Spalte die Zeitpunkte und die zweite Spalte diezugehörigen Eingangswerte enthält.Hier kann auch (in Hochkomma) ein mathematischerAusdruck in Matlab-Syntax stehen, z.B. ‘sin(3*t)‘parameter steht für eine Liste von Parametern, die an die SFunktion durchgereicht werden.Rechenzentrum Universität Karlsruhe37 von 54Wenn ein Blockmodell gestartet wird, reicht die Angabe desDateinamens völlig aus, da alle anderen Parameter im Blocksystemspezifiziert sind.Die Ergebnisse werden nicht automatisch geplottet, selbst wenn ScopeBlöcke im Modell vorhanden sind.Plots müssen über die bekannten Matlab-Funktionen erzeugt werden.Dazu werden die Variablen im Workspace benutzt.Rechenzentrum Universität Karlsruhe38 von 54
Laplace-Transformationf(t) ist eine reelle Funtion einer reellen Variablen t. F(s) L [f(t)] f ( t )e– stdt0heißt die Laplace-Transformierte von f(t).Eigenschaften: Skalierung:L[f(t/c)] c F(c*s) Linearität:L[c1 f1(t) c2 f2(t)] c1 F1(s) c2 F2(s) Ableitung:L[f(n)(t)] sn F(s)ttt nL[ f ( t ) dt ] s-n F(s) Integrale:000Rechenzentrum Universität Karlsruhe39 von 54Transfer-FunktionAllg. Differentialgleichung n-ter Ordnung:any(n)(t) an-1y(n-1)(t) . a0y(t) bmu(m)(t) bm-1u(m-1)(t) . b0u(t)mit m n.Laplace-Transformation:bmsm bm-1 sm-1 . b0Y(s) U(s)anusn an-1sn-1 . a0bmsm bm-1 sm-1 . b0yansn an-1sn-1 . a0Rechenzentrum Universität Karlsruhe40 von 54
Linearer ZustandsraumSpezialfall:Lineare DGl n-ter Ordnung,Normierung, so daß an 1 isty(n)(t) an-1 y(n-1)(t) . a0 y(t) b0 u(t)Definiere x1 yx 2 ẋ 1 ẏ.x n ẋ n – 1 y(n – 1)Daraus folgt kompakt:ẋ Ax buy CxRechenzentrum Universität Karlsruhe41 von 54 die xi heißen Zustandsvariable bzw. x ist der Zustandsvektor u und y sind Eingangs- bzw. Ausgangsvektoren00A –a010 –a101 –a2 0 0 –an – 100b b0C 1 00Konvention in MATLAB/SIMULINK:y b0 x 0b 0 1C b0 0 0Reihenfolge der xi ist manchmal umgekehrt.Rechenzentrum Universität Karlsruhe42 von 54
MATLAB-Kommandos[A,B,C,D] linmod(‘modell‘)erzeugt die Matrizen für die lineare Zustandsraum-Darstellung des kompletten Modells[zähler,nenner] ss2tf(A,B,C,D)berechnet aus den Matrizen A,.D den Zähler und Nennerfür die entsprechende Transfer-Funktion[A,B,C,D] tf2ss(zähler,nenner)berechnet die Matrizen des linearen Zustandsraums ausden Zähler- und Nenner-PolynomenRechenzentrum Universität Karlsruhe43 von 54Beispiel: Linearer Servouy-u -as(bs 1)ya 2; b 0.5; u(t) 0; y(0) 1.5Rechenzentrum Universität Karlsruhe44 von 54
1. Lösung der Transfer-FunktionAnfangswert für y muß über die xInitial Variable im Workspace I/OPanel eingegeben werden. Diese ist aber der Anfangswert derZustandsvariable des Systems. Mittels tf2ss([2],[0.5 1 0])findet man C [0 4] und somit y 4x xInitial 1.5/4Rechenzentrum Universität Karlsruhe45 von 542. Lösung der DifferentialgleichungAus dem Blockschaltbild findet man für die Laplace-Transformierten:aY (s)4--------------------------- ---------------- ---------------22U ( s ) –Y ( s )bs ss 2sDaraus folgt:oder2s Y 2sY 4Y 4Uẏ 2ẏ 4y 4uDie Anfangsbedingung y(0) 1.5 wird entweder über die xInitialVariable gesetzt oder im Integrator1. Dazu doppelklickt man auf dasSymbol und trägt im folgenden Menü den Anfangswert ein.u 0wird explizit über eine konstante Quelle verifiziert, kannaber auch wegfallen.Rechenzentrum Universität Karlsruhe46 von 54
Rechenzentrum Universität Karlsruhe47 von 543. Transferfunktion des SystemsLaplace-Transformation der o.g. Differentialgleichung ergibt4Y---- -------------------------2Us 2s 4Anfangsbedingungen: über xInitialwegen y 4x xInitial 1.5/4Rechenzentrum Universität Karlsruhe48 von 54
4. State-Space Block in SimulinkAus der o.g. Transfer-Funktion findet man das lineare Systemẋ 1ẋ 2y1y2 0 1 x1 0 u1–4 –2 x2 4 0Rechenzentrum Universität Karlsruhex1x249 von 54Eingabe der Zustandmatrizenund Anfangszustand(oder über xInitial)Rechenzentrum Universität Karlsruhe50 von 54
Weitere nützliche Kommandosim MATLAB Fenster: wholistet die Namen aller Variablen im Workspace varEingabe eines Variablennamens listet den oder die Werte var[ ]löscht die Werte der Variablen var (Initialisierung) clearlöscht alle Variablen aus dem Workspace plot(t,var1,t,var2,.)plottet die Variablen var1, var2, . alle in einemDiagrammRechenzentrum Universität Karlsruhe51 von 54Weitere nützliche Kommandos [size,x0,xstr] modelllistet die Modellcharakteristika. Die Ausgabevariablehaben folgende Bedeutung:sizeist ein 7-komponentiger Vektor, wovon hier nur dieersten Komponenten von Belang sind:-Anzahl kontinuierlicher ZuständeAnzahl diskreter ZuständeAnzahl der OutputsAnzahl der Inputsx0enthält die Anfangswerte des Zustandsvektorsxstrist ein Textstring, der die Reihenfolge der Komponentendes Zustandsvektors den Blöcken zuordnet.Rechenzentrum Universität Karlsruhe52 von 54
Beispiel: osz.mRechenzentrum Universität Karlsruhe53 von 54 [size,x0,xstr] oszsize xstr 2/osz/integrator1x10/osz/integratorx210001x0 10Rechenzentrum Universität Karlsruhe54 von 54
Demo-Beispiele. Rechenzentrum Universität Karlsruhe 25 von 54 2. Beispiel Erstellen Sie das Blockdiagramm für f olgende Differentialgleichung 1. Ordnung: mit dt dx . Laplace-Transformation f(t) ist eine reelle Funtion einer reellen Variablen t. F(s) L [f(t)] he