matlab simulink stateflow - ls12- · pdf fileprojekt: airbag thema: matlab/simulink/stateflow...

24
Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 1 Projekt AirBag M A TL AB S i m u li nk S t a t e f l o w Betreuer: Heiko Falk , Stefan Steinke Autor: Lei Yao Wintersemester 1999/2000 und Sommersemester 2000

Upload: duongliem

Post on 06-Feb-2018

273 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

1

Projekt AirBag

MATLAB Simulink Stateflow

Betreuer: Heiko Falk , Stefan Steinke Autor: Lei Yao Wintersemester 1999/2000 und Sommersemester 2000

Page 2: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

2

Inhaltsverzeichnis

1 Einleitung2 MATLAB2.1 Übersicht2.2 Einfache Berechnung2.3 Matrizen2.4 M-Files2.4.1 Script-Files2.4.2 Funktion-Files2.5 Kontrollstrukturen2.6 Graphiken2.7 Toolboxen3 Simulink3.1 Übersicht3.2 Modelli erung3.2.1 Bau eines Modells3.2.2 Modelli erung einer Gleichung3.2.3 Eine Demo3.3 Simulation3.4 Analyse der Simulationsresultate3.5 Blocksets3.6 Real-Time Workshop(RTW)4 Stateflow4.1 Übersicht4.2 Stateflow Diagramm Objekte4.2.1 Zustände4.2.2 Transitionen4.2.3 Ereignisse4.2.4 Daten4.2.5 Hierachie4.2.6 Bedingungen4.2.7 Aktionen4.2.8 History4.2.9 Parallel(AND) und Exklusiv(OR)4.2.10 Verbindungspunkte(Connective Junctions)4.3 Notation4.3.1 Zustände4.3.2 Transitionen4.3.3 Verbindungspunkte4.4 Semantik4.4.1 Was ist Semantik4.4.2 For-Schleife4.4.3 Unterzustände(Substate)4.5 Stateflowmaschine4.6 Stateflow Coder5 Zusammenfassung

Page 3: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

3

MATL AB, Simulink und Stateflow

1 Einleitung

Elektronische Steuergeräte werden heutzutage in vielen Bereichen benutzt. Um eingebetteteSysteme zu entwickeln, werden verschiedene Werkzeuge für Modelli erung, Simulation undImplementierung angeboten. MATLAB/Simulink/Stateflow von MathWorks ist so einWerkzeugsystem. Dieses Werkzeugsystem wird bereits auch für Steuergeräte-Softwareentwicklung im Automobilbereich eingesetzt. Bild 1 stellt die gesamte Struktur dar.MATLAB ist eine Programmsprache, die die Grundlage für das ganze System ist. Simulinkbenutzt MATLAB, verwendet Blockdiagramme und gibt die Simulationsausgabe aus. DurchRTW kann Simulink C-Programm erzeugen. Stateflow wird auf MATLAB und Simulink gebaut.Stateflow verwendet Zustandsdiagram und erzeugt C-Programm durch StateflowCoder .

Bild 1

2 MATL AB

2.1 Übersicht

MATLAB ist eine Programmiersprache für mathematisch-technische Untersuchungen unterVerwendung von Digitalrechnern. Das Programmsystem integriert Berechnung,

Page 4: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

4

Visualisierung und Programmierung in einer einfachen Benutzungsumgebung, wo Problemeund Lösungen mit gewohnten mathematischen Zeichen ausgedrückt werden.

Das MATLAB System besteht aus fünf Hauptteilen:1. MATLAB Sprache,2. MATLAB Arbeitsumgebung,3. Behandlung von Grafiken,4. MATLAB mathematische Funktionsbibliothek und5. MATLAB Anwendungsprogramm-Schnittstelle (Application Program Interface: API).

2.2 Einfache Berechnung

MATLAB wird mit der Eingabe MATLAB <cr> oder mit der Rechnermaus gestartet. Istdas Programm in den Arbeitsspeicher geladen, so erscheint auf dem Bildschirm dieEingabeaufforderung >>. Das Programmsystem befindet sich in der interaktiven Betriebsart,wobei syntaktisch richtige Benutzereingaben zeilenweise ausgeführt werden und dasErgebnis auf dem Bildschirm erscheint.

Die Eingabe des Ausdrucks>> 2+3liefertans = 5wobei MATLAB das Ergebnis der Variablen ans zuweist, der Abkürzung für ”answer” . Inder folgenden Zeile wird das Ergebnis der Variaben x zugewiesen:>> x=2+3;Das Semikolon wird gesetzt, wenn Zwischenergebnisse nicht ausgegeben werden sollen.Der Wert der Variablen kann jedoch jederzeit abgefragt werden:>> xx = 5

Falls ein Ausdruck nicht in einer einzelnen Zeile geschrieben werden kann, wird die ersteZeile durch drei oder mehr Punkte abgeschlossen und in der folgenden Zeile weitergeschrieben:>> y = 1-2+3-4+... 5+6y = -3

Im folgenden Ausdruck>> z = x*y^2z = 45werden die bereits definierten Variablen x und y verwendet. Mit ^ wird potenziert.

2.3 Matr izen

Page 5: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

5

Der Name MATLAB ist die Abkürzung für MATrix LABoratory. Ursprünglich warMATLAB für den leichten Zugriff auf Matrizen geschrieben worden, wobei in denElementen komplexe Zahlen zugelassen sind.

Matrizen sind zeilenweise einzugeben. Die Elemente werden durch Leerzeichen und dieZeilen durch Semikolon oder <cr> abgeschlossen. Ein Paar eckige Klammern schließt dieElemente ein:>> A = [ 4 5 ; 6 3 ]A = 4 5 6 3

Mit einem einfachen Anführungszeichen ( ’ ) kann eine Matrix transponiert werden:>> B = A’B = 4 6 3 5

Matrix-Elemente können in runden Klammern adressiert werden. Im Beispiel wird dasElement in der zweiten Zeile, erste Spalte mit dem Wert 6 auf den Wert 2 gebracht:>> A(2,1) = 2A = 4 5 2 3

Bei der elementweisen Multiplikation und Division von Vektoren oder Matrizen werdenElemente mit gleichem Index verknüpft. Elementweise Operationen werden durch einenPunkt links neben dem Operator gekennzeichnet:>> C = A .* BC = 16 30 6 15

diag(m) erzeugt eine Diagonalmatrix mit den Elementen des Vektors m:>> D = diag([ 4 5 ])D = 4 0 0 5

Mit der Eingabe eye(n) wird eine Einheitsmatrix mit n Zeilen und n Spalten erzeugt:>> E = eye(2)E = 1 0 0 1

Vektoren werden als Matrizen mit einer Zeile oder einer Spalte behandelt:>> a = [ 1; 3; 5 ]a = 1

Page 6: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

6

3 5

Vektoren können auch mit dem Doppelpunkt ( : ) gebildet werden:>> b = 1 : 6b = 1 2 3 4 5 6

Vektoroperationen sind nützlich für den Ausbau einer Tabelle:>> n = ( 0 : 6 )’ ;>> pows = [ n n .^2 2 .^n ]pows = 0 0 1 1 1 2 2 4 4 3 9 8 4 16 16 5 25 32 6 36 64

2.4 m-Files

Mit der obigen interaktiven Arbeitsweise werden Anweisungen zeilenweise eingegeben undausgeführt. Um mehrere Programmzeilen zu schreiben und wieder zu verwenden, werden inder MATLAB Sprache M-Files benutzt. Zwei Arten von m-Files werden verwendet: Script-Files und Funktion-Files, die mit einem Text-Editor oder mit dem MATLAB-Editor erstelltwerden können.

2.4.1 Script-Files

Script-Files sind häufig umfangreichere Programmsequenzen und haben Zugriff auf alle ineiner Sitzung definierten Variablen. Script-Files mit der Bezeichnung filename.m werdendurch Eingabe von filename(call bei name) ohne den Zusatz .m gestartet.

2.4.2 Function-Files

Funktion-Files sind meist kürzere Programme. Mit ihnen können die Benutzer eigeneFunktionen definieren und damit den vorhandenen MATLAB-Funktionsvorrat erweitern.Variablen in Funktion-Files sind lokale Variablen. Funktion-Files sind m-Files in derfolgenden allgemeinen syntaktischen Form, dabei sind E1, E2, ... Eingabeparameter und A1,A2, .... Ausgabeparameter:

% Kommentarefunktion[ A1, A2, .... ] = Filename( E1, E2, .... )MATLAB-Anweisungen

Das Funktion-File pt2wu.m berechnet ue und we:

Page 7: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

7

% MATLAB Funktion-File pt2wu.mfunktion[ue, we] = pt2wu(D, Wo)sq = sqrt(1-D*D);we = Wo * sq;ue = exp(-D * pi/sq);

pi ist eine in MATLAB vordefinierte Konstante. Mit den Werten für D = 0.5 und Wo =1/sec wird das Funktion-File gestartet:

>> [ ue, we ] = pt2wu( D, Wo)ue = 0.1630we = 0.8660

2.5 Kontrollstrukturen

Wie in den meisten höheren Programmiersprachen gibt es im MATLAB dieKontrollstrukturen for-Schleife, while-Schleife, if-elseif-else. Die for-Schleife wird für einefeste Anzahl von Schleifendurchläufen verwendet. Bei der while-Schleife wird dieEintrittsbedingung vor dem Schleifendurchlauf geprüft. Die Anweisungen in der Schleifewerden ausgeführt, solange die Bedingung erfüllt ist. Die If-else Struktur wird für diebedingte Ausführung von Anweisungen verwendet.

2.6 Graphiken

MATLAB hat extensive Möglichkeiten zur Erstellung von Graphiken aus Vektoren undMatrizen. Für Graphiken mit linearer Skalierung der Achsen wird die Funktion plotverwendet. Mit nur einem Eingabeparameter plot(y) erhält man den Vektor y auf derOrdinate in Abhängigkeit von den Index (1...13) auf der Absizsse. Verwendet man zweiEingabeparameter plot(x,y), dann wird der Vektor y auf der Ordinate und der Vektor x aufder Abszisse dargestellt:

%MATLAB Script-File dreieck.mx = [0:5:60];y = [0 1 2 3 2 1 0 -1 -2 -3 -2 -1 0];plot(x,y)

Mehrere Kurven können in einer Graphik dargestellt werden:

%MATLAB Script-File dreisin.mt = 0:pi/100:2*pi;y1 = sin(t);y2 = sin(t-.25);y3 = sin(t-.5);plot(t,y1,t,y2,t,y3)

Page 8: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

8

Es ist möglich, Farbe und Darstellung der einzelnen Kurven mit dem Befehl plot(x,y, ‘color-style-marker’) zu spezifizieren. Mit plot(x,y, ‘g:+’) wird beispielsweise der Vektor y durcheine Kurve mit grünen Punkten und Pluszeichen auf allen Daten dargestellt. Die xlabel undylabel Funktionen erzeugen x- und y-Achse Beschriftungen. Die title Funktion addiert einenTitel an das obere Ende. Die text Funktion fügt Text irgendwo in die Graphik ein.

Mit subplot werden mehrere Teilbilder erzeugt. subplot(m n p) unterteilt dasGraphikfenster in eine m*n Matrix von Teilbildern. Mit p wird das aktuelle Teilbildadressiert.

Dreidimensionale Graphiken können mit Funktionen plot3, contour, mesh und surfdargestellt werden.

2.7 Toolboxen

MATLAB ist schon sehr mächtig. Für Spezialgebiete gibt es aber noch Erweiterungen, sogenannte Toolboxen. Toolboxen sind umfassende Sammlungen von MATLAB Funktionen,die die MATLAB Umgebung ausbauen, um besondere Klassen von Problemen zu lösen. DieToolboxen liefern die Anstrengungen und die Erfolge mancher Spitzenforscher in der Weltin Gebieten wie Regelung, Communication, Finanzen, usw.

Die verfügbaren Toolboxen sind Control System Toolbox, Signal Processing Toolbox,System Identification Toolbox, Neuronetz Toolbox, Fuzzy Control Disign Toolbox, usw.Mit der Control System Toolbox kann man direkt Signalflußplänen umformen, Regelungenim Zeitbereich und Frequenzbereich berechnen, Zustandsregelungen bearbeiten.

3 Simulink

3.1 Übersicht

Simulink ist eine Erweiterung von MATLAB mit Bedienoberfläche unter Verwendung vonBlockdiagrammen (Signalflussplänen). Mit diesem Software-Paket kann man dynamischeSystemen modelli eren, simulieren und analysieren. Simulink untersucht lineare und nichtlineare Systeme, die kontinuierlich, diskret oder hybrid sein können.

Eine der Schlüsselmerkmale von Simulink ist, daß Simulink oberhalb MATLAB aufgebautwird. Als eine Folge können die Benutzer von Simulink direkt auf die umfangreichenMATLAB-basierten Werkzeuge zugriffen, um System zu erzeugen, zu analysieren und zuoptimieren. Die Werkzeuge enthalten MATLAB Anwendungstoolboxen, die spezielleSammlungen von M-Files für die Bearbeitung besonderer Klassen von Problemen sind.

3.2 Modelli erung

3.2.1 Bau eines Modells

Page 9: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

9

Simulink bietet eine graphische Benutzer-Schnittstelle für den Aufbau der Modelle alsBlockdiagramm. Mit dieser Schnittstelle kann man ein Modell zeichnen wie mit Bleistift undPapier. Klicken-und-Ziehen Operationen werden benutzt. Diese ist sehr unterschiedlich vonfrüheren Simulationspaketen, für die man Differential-Gleichungen in einem Programmformulieren mußte.

Komplizierte Modelle profitieren oft durch die Hinzufügung der Hierarchie vonSubsystemen. Ein Subsystem ist eine Gruppe von Blöcken. Man kann ein System auf einerhöheren Ebene beobachten, und dann doppel-klicken auf die Blöcke, um Subsysteme zuöffnen und Details zu besichtigen. Durch Subsysteme ist ein Modell leichter zu lesen und zuverstehen.

Ein Modell bestellt aus zwei Hauptobjekten: Blöcke und Linien. Das Simulink-Blockbibliothek-Fenster zeigt Icons, die die Blockbibliotheken wie Sinks, Sources, lineareund nichtlineare Komponenten, und Konnectoren repräsentieren(Bild 2). JedeBlockbibliothek besitzt eine Menge von Blöcken. In der Sources-Bibliothek kann manverschiedendste Eingabesignale wie zum Beispiel Sine-Wave-Block finden(Bild 3). Mankann auch Blöcke modifizieren oder eigene Blöcke erzeugen.

Bild 2

Page 10: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

10

Bild 3

Um ein Modell zu bauen, gibt man das Kommando simulink bei dem MATLAB Prompt ein,dann erscheinen MATLAB-Kommandofenster, ein neues leeres Modellfenster und dasSimulink-Blockbibliothek-Fenster auf dem Bildschirm. Die Blöcke werden von derBlockbibliothek in das Modellfenster kopiert, die Parameter mancher Blöcke werdeneingestellt, und dann werden die Blöcke durch die Linien miteinander verbunden.

3.2.2 Modelli erung einer Gleichung

Die Gleichung Tf = 9/5(Tc) + 32rechnet Celsius in Fahrenheit um. Ein Modell für diese Gleichung braucht 5 Blöcke:* Ein Ramp-Block aus der Sources-Bibliothek gibt das Temperatursignal ein.

Page 11: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

11

* Ein Konstant-Block aus der Sources-Bibliothek definiert eine Konstante 32.* Ein Gain-Block aus der Linear-Bibliothek multipliziert das Eingangssignal mit 9/5.* Ein Sum-Block aus der Linear-Bibliothek addiert zwei Werte.* Ein Scope-Block aus der Sinks-Bibliothek zeigt die Ausgabe.

Werden die 5 Blöcke aus der Bibliothek in ein Modellfenster kopiert und verbunden,entsteht das Modell für die Umrechnung von Celsius zu Fahrenheit (Bild 4).

Bild 4

3.2.3 Eine Demo

Die Demo Thermo modelli ert die Thermodynamik eines Hauses (Bild 5). Das Thermostatist auf 70 Grad Fahrenheit eingestellt und wird von der äußeren Temperatur beeinflußt, diedurch eine Sinuswelle mit Amplitude von 15 Grad auf einer Basistemperatur von 50 Gradsimuliert wird.

Das Modell benutzt Subsysteme, um das Modelldiagramm zu vereinfachen. 5 Subsystemesind Thermostat, Haus(Bild 6) und 3 Temp-Convert Subsysteme. Die innere und äußereTemperatur wird dem Haus eingegeben. Das Haus updatet die innere Temperatur. DasThermostat entscheidet durch die innere Temperatur, ob die Heizung ein- oderausgeschaltet werden soll, um die innere Temperatur um 70 Grad zu halten. DieHeizungskosten, innere und äußere Temperatur werden in den Scope-Blöcken angezeigt.

Page 12: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

12

Bild 5

Bild 6

Page 13: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

13

3.3 Simulation

Die Simulation von Simulink-Modellen betrifft die numerische Integration von ordinärenDifferentialgleichungen (ordinary differential equations: ODEs). Simulink stellt zahlreicheSolver für die Simulation solcher Gleichungen zur Verfügung. Wegen der Vielfalt vondynamischem Systemverhalten können manche Solvers leistungsfähiger als andere beiLösung eines besonderen Problems sein. Um genaue und schnelle Resultate zu bekommen,sollen die Solver vorsichtig ausgewählt werden und die Parameter richtig eingestellt werden.Es gibt variable-step und fixed-step Solvers. Variable-step Solvers können ihre Schrittgrößewährend der Simulation modifizieren. Wenn ein Modell kontinuierliche Zustände hat, wirdode45 als ”erster Versuch” für die meisten Probleme benutzt. ode45 ist ein ausgezeichnetervariable-step Solver für allgemeinen Zwecke.

Simulationsparameter wie Start Time, Stop Time, Step Sizes, Output Options, usw sollenzuerst spezifiziert werden. Simulation kann entweder von dem Simulink-Menü oder durchBefehle in MATLAB’s Kommando-Window ausgeführt werden. Während der Ausführungeiner Simulation kann die Ausgabe in Scopes beobachtet werden. Man kann auch dieParameter ändern und sofort in Scopes sehen was passiert. Die Simulationsresultate könnenfür Postprocessing und Visualisierung in den MATLAB-Workspace gelegt werden.

3.4 Analyse der Simulationsresultate

Simulationsresultate können nicht nur in Scopes gezeigt werden, sonder auch mitLinearisierungs- und Trimming-Tools analysiert werden. Die Funktion linmod erhält lineareModelle in Zutandsraumform aus Systemen von Differential-Gleichungen. Die Funktiontrim ermittelt einen stabilen Punkt, der einen spezifizierten Satz von Zustands-, Eingabe-,und/oder Ausgabebedingungen erfüllt.

3.5 Blocksets

Ähnlich wie MATLAB und seinen Anwendungstoolboxen, bietet MathWorks Blocksets fürdie Benutzung mit Simulink an. Blocksets sind zusätzliche Simulink-Blöcke, die in einerseparaten Bibliothek von der Haupt-Simulink-Blockbibliothek angeordnet werden.

Blocksets sind für spezielle Anwendungen wie Kommunikation, Signalprocessing undKraftwerksystem zustandig. Drei wichtige Blocksets sind: DSP Blockset, Fixed-PointBlockset und Nonlinear Control Design (NCD) Blockset.Das DSP Blockset baut Simulink für die Anwendung in der rapiden Simulation und denEntwurf von DSP-basierten Geräten und Systemen aus. Mit dem DSP Blockset bietetSimulink ein intuitives Werkzeug für interaktive Blockdiagramm-Simulationen und -Evaluation durch Signalprocessing-Algorithmen.Das Fixed-Point Blockset erweitert die normale Blockbibliothek des Simulinks auch. Mitdieser neuer Sammlung von Blöcken können diskrete dynamische Systeme erzeugt werden,die Fixed-Point Arithmetik verwendet.Das NCD Blockset ist für den Entwurf von zeitdomain-basierten, robusten, nichtlinearenSteuerungen zuständig.

3.6 Real-Time Workshop(RTW)

Page 14: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

14

Das Simulink Real-Time Workshop erzeugt C Code direkt aus Simulink-Blockdiagrammen.Diese Funktion kann für eingebettete Systemen benutzt werden. Nachdem ein System mitSimulink entworfen worden ist, kann Code für Real-Time-Controller oder digitale Signal-Prozessoren erzeugt, übersetzt, gelinkt und im Targetprozessor abgelegt werden. RTWunterstützt DSP-Boards, eingebettete Controller und verschiedendstee kommerziellverfügbare Hardware.

4 Stateflow

4.1 Übersicht

Stateflow ist ein mächtiges graphisches Entwurfs- und Entwicklungswerkzeug fürkomplizierte Steuerungen und logische Probleme. Mit Stateflow kann manStateflowdiagramme erzeugen. Ein Stateflowdiagramm ist eine graphische Darstellung voneinem endlichen Automat, wo Zustände und Transitionen die grundlegenden Blöcke desSystems bilden. Mit Stateflow ist es leicht, Entwürfe herzustellen, verschiedene Szenarioszu betrachten, und zu iterieren, bis Stateflowdiagramme das gewünschte Verhaltenmodelli eren. Eine der typischen Anwendungsgebeite von Stateflow sind eingebetteteSysteme.Für die Codeerzeugung wird Stateflow Coder verwendet.

4.2 Stateflow Diagramm Objekte

Ein Stateflowdiagramm besteht aus graphischen Komponenten und nichtgraphischenObjekten. Bild 7 zeigt die graphische Komponente.

Page 15: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

15

Bild 7

4.2.1 Zustände

Ein Zustand beschreibt einen Modus eines ereignisgesteuerten Systems. Die Aktivität oderNichtaktivität eines Zustandes ändert sich dynamisch nach Ereignissen und Bedingungen.Jeder Zustand hat Eltern. Im Bild 7 ist StateA1 ein Kind von StateA. Zustände habenLabels, die die Aktionen spezifizieren können. Die Aktionen werden nach Aktionstyp ineiner Reihenfolge ausgeführt. Die Aktionstypen sind entry, during, exit und on.

4.2.2 Transitionen

Eine Transition verbindet ein Objekt mit einem anderen. Ein Ende einer Transition hängt aneinem Quellenobjekt, das andere an einem Zielobjekt. Ein Transitionslabel beschreibt dieUmstände, unter denen das System sich von einem Zustand zu einem anderen Zustandbewegt. Um eine Transition zu triggern, müssen manche Ereignisse stattfinden. In Bild 7wird die Transition von StateA1 zu StateA2 mit dem Ereignis transitionA1_A2 gezeichnet,das die Transition triggert. Default-Transitionen spezifizieren exklusive(OR) Zustände, dieaktiv sein werden, wenn es Unklarheiten zwischen zwei oder mehreren exklusive(OR)Zuständen in der selben Ebene in der Hierarchie gibt. In Bild 7, wenn StateA aktiv ist, istStateA1 bei Default auch aktiv. Eine innere Transition ist eine Transition, die keinenQuellenzustand hat.

4.2.3 Ereignisse

Page 16: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

16

Ereignisse sind keine graphischen Objekte. Ereignisse treiben Stateflowdiagramme. Hat einEreignis stattgefunden, wird der Status der Zustände in einem Stateflowdiagramm bewertet.Die Übertragung eines Ereignisses kann initiieren, daß eine Transition stattfindet und/odereine Aktion ausgeführt wird.

4.2.4 Daten

Datenobjekte sind numerische Werte im Stateflowdiagramm. Jedes Datum hat Eltern. Datenwerden oft in den Aktionen manipuliert, die mit Zuständen und/oder Transitionen assoziiertwerden können. Der Wert des Datums wird entweder innerhalb des Stateflowdiagrammsdurch Aktionen oder außerhalb des Stateflowdiagramms durch Simulink oder äußereQuellen bestimmt. In Bild 8, wenn der Zustand Off aktiv ist, und das Ereignis switch-onübertragen wird, wird die Transition von Off nach On getriggert. Sobald der Zustand Onerreicht wird, wird das Datum on_count inkrementiert.

Bild 8

4.2.5 Hierachie

Stateflow unterstützt eine hierarchische Organisation von Zuständen. Ein Unterzustandkann in einem Superzustand existieren. Ein hierarchischer Entwurf reduziert die Zahl derTransitionen und erzeugt ordentliche, handliche Diagramme. In Bild 7 enthält derSuperzustand StateA zwei Unterzutände, StateA1 und StateA2. StateA ist der VatervonStateA1 und StateA2. Wenn ein Unterzustand aktiv ist, ist sein Vater Superzustand auchaktiv.

4.2.6 Bedingungen

Page 17: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

17

Eine Bedingung ist ein boolescher Ausdruck. Wenn der Ausdruck wahr ist, wird eineTransition ausgeführt. In Bild 7 findet die Transition von StateA1a oder StateA1b nachStateA1c statt, wenn der Ausdruck [condition1] wahr ist.

4.2.7 Aktionen

Während ein Teil des Stateflowdiagramms ausgeführt wird, finden Aktionen statt.Stateflow unterstürtzt sowohl Mealy als auch Moore Automaten. In dem Mealy Modellwerden Aktionen mit Transitionen verbunden, während in dem Moore Modell Aktionen mitZuständen assoziiert werden. Stateflow unterstützt Zustandsaktionen, Transitionsaktionenund Bedingungsaktionen. Zustände können den Aktionstyp entry, during, exit und onhaben. Transitionen können Bedingungsaktionen oder Transitionsaktionen haben. EineAktion kann ein Funktionsanruf, Übertragung eines Ereignisses, Zuweisung einer Variable,usw sein.

4.2.8 HistoryHistory bietet die Mittel an, den Ziel-Unterzustand einer Transition nach historischerInformationen zu spezifizieren. Wenn ein Superzustand mit exklusiver(OR) Dekompositioneinen History-Knoten hat, wird der Ziel-Zustand für eine Transition so definiert, daß es derzuletzt besuchte Zustand ist. Der History-Knoten hat Priorität gegenüber defaultTransitionen.

4.2.9 Parallel(AND) und Exklusiv(OR)

Stateflow bietet zwei Typen von Zuständen an: parallele(AND) und exklusive(OR)Zustände. In Bild 7 sind StateA2a und StateA2b paralelle Zustände, sie können gleichzeitigaktiv sein. StateA1 und StateA2 sind exklusive Zustände, zu jedem Zeitpunkt kann nur einZustand aktiv sein. StateA hat eine exklusive Zustand-Dekomposition.

4.2.10 Verbindungspunkte(Connective Junctions)

Verbindungspunkte sind Entscheidungsstellen in einem System. Ein Verbindungspunktvereinfacht Darstellungen des Stateflowdiagramms und erleichtert die Erzeugung vonleistungsfähigem Code. In Bild 7 wird ein Verbindungspunkt als eine Entscheidungsstellefür zwei Transitionssegmente benutzt, die an StateA1c beenden.

4.3 Notation

Eine Notation definiert einen Satz von Objekten und Regeln, die die Beziehungen zwischenden Objekten verwalten. Die Stateflow-Notation bietet eine natürliche Sprache an, um dievon einem Stateflowdiagram mitgeteilte Entwurfsinformationen zu kommunizieren. DieNotation bildet die Verbindungen zwischen den graphischen Objekten und derAktionssprache. Die Aktionssprache diktiert die Aktionen, die mit Zuständen undTransitionen assoziiert werden können. Die Stateflow-Notation unterstützt unterschiedlicheArten der Darstellung für das gewünschte Systemverhalten. Welche Darstellung gewähltwird, beeinflußt die Leistungsfähigkeit des generierten Codes.

4.3.1 Zustände

Page 18: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

18

Aktionen können mit Zuständen via Labels vereinigt werden. Die Zustandslabels haben dasfolgende Format: name/ entry: during: exit: on event_name:

Die Stichwörter entry, during, exit und on identifizieren Aktionen mit dem Zustand. JedesStichwort ist optional. In Bild 9 sind die Zustandsnamen On und Off. Der Zustand On hatentry Aktion on_count=0. Wenn die entry Aktion ausgeführt wird, wird der Wert on_countzu 0 eingestellt. Der Zustand On hat zwei during Aktionen light_on() und on_count++.Wenn On’s during Aktion ausgeführt wird, werden die Aktionen light_on() undon_count++ auch ausgeführt. Der Zustand On hat die Aktion on event_name,power_outage. Wenn das Ereignis power_outage stattfindet, wird die Aktionhandle_outtage() ausgeführt. Der Zustand Off hat exit Aktion light_off(). Diese Aktion

wird ausgeführt, wenn Off’s exit Aktion ausgeführt wird.

Bild 9

4.3.2 Transitionen

Die Transitionslabels haben folgendes allgemeines Format:

event [condition] { condition_action} / transition_action

Jeder Teil des Labels ist optional. Das Ereignis(event) veranlaßt die Transitionstattzufinden, wenn die Bedingung(condition) wahr ist. Die condition_action wirdausgeführt, solange die condition als wahr bewertet wird und bevor das Transitionsziel alsgültig bestimmt wird. Die transition_action wird durchgeführt, wenn die condition als wahrbewertet wird und nachdem das Transitionsziel als gültig bestimmt wird. In Bild 10, wenn

Page 19: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

19

die Bedingung [off_count==0] wahr ist, triggert die Übertragung von dem Ereignis E dieTransition von On zu Off. Die Bedingungsaktion off_count++ wird sofort durchgeführt.Wenn die Zielzustand Off auch gültig ist, wird die Transitiopnsaktion Light_off ausgeführt.

Bild 10

4.3.3 Verbindungspunkte

Verbindungspunkte werden für Darstellungen der if-then-else Struktur, for Schleife,Transition von einer gemeinsamen Quelle zu mehrfachen Zielen, usw verwendet.Verbindungspunkte und Transitionen sind die meistbenutzten Objekte in einerFlowdiagram-Notation. Die Flowdiagram-Notation wird im wesentlichen ohne Verwendungvon Zuständen logisch dargestellt. Die Verwendung von Flowdiagram-Notationen kannleistungsfähigeren Code produzieren, der für Speicheranwendungen optimiert werden.

Bild 11 zeigt eine reale Anwendung der Flußdiagramnotation und Zustandstransitions-notation. Angenommen, daß Zustand Sensor.Low aktiv ist und Ereignis UPDATEstattfindet. Die innere Transition von Sensor nach dem ersten Verbindungspunkt ist gültig.Die Bedingungsaktion { start_adc()} wird durchgeführt. Die Eigenschleife an dem zweitenVerbindungspunkt testet die Bedingung [adc_busy()] und erzeugt eine Verzögerung. Dienächste Bedingungsaktion { sensorValue=read_adc()} setzt einen neuen Wert in demDatenobjekt sensorValue. Nach dem Wert von sensorValue wird der Zielzustandfestgestellt.

Page 20: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

20

Bild 114.4 Semantik

4.4.1 Was ist Semantik

Eine Semantik beschreibt, wie die Notation interpretiert und implementiert wird. EinStateflowdiagramm enthält Aktionen, die mit Transitionen und Zustände verbunden sind.Semantik beschreibt, in welcher Sequenz die Aktionen stattfinden. Die Kenntnis derSemantik ist wichtig, um sinnvolle Stateflowdiagramme entwerfen und Code erzeugen zukönnen.

Das Stateflowdiagramm wird nur ausgeführt, wenn ein Ereignis stattfindet. Exakt wasausgeführt wird, hängt von den Umständen ab, wenn das Ereignis stattfindet. Wenn einEreignis stattfindet, läuft die Ausführung von oben nach unter durch die Hierarchie desStateflowdiagramms. In jeder Ebene in der Hierarchie werden during und on Aktionen fürdie aktiven Zustände ausgeführt, dann wird die Transition der Kinder durchgeführt.

4.4.2 For -Schleife

Dieses Beispiel zeigt die Semantik für eine for-Schleife. In Bild 12 werden dieBedingungsaktion und der Verbindungspunkt verwandt, um eine for-Schleife zu erzeugen.

Page 21: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

21

Bild 12

Am Anfang ist das Stateflowdiagramm schlafend. Zustand A ist aktiv. Ereignis E_one findetstatt und weckt das Stateflowdiagramm auf. Ereignis E_one wird von der Wurzel desStateflowdiagramms hinunter durch die Hierarchie des Stateflowdiagramms verarbeitet.

#1 Die Wurzel des Stateflowdiagramm untersucht, ob es eine gültige Transition als eine Folge von E_one gibt. Es gibt ein gültiges Transitionssegment von Zustand A zu dem Verbindungspunkt. Die Bedingungsaktion i=0 wird ausgeführt und beendet. Zwei Transitionssegmente verlassen den Verbindungspunkt. Die Eigenschleife wird zunächstals gültig bewertet, weil sie eine Bedingung hat, während die andere Transition nicht beschriftet ist.#2 Die Bedingung [i<10] wird als wahr bewertet. Die Bedingungsaktionen i++ und ein Anruf zu func1 werden durchgeführt, bis die Bedingung falsch wird.#3 Das unbeschriftete Segment nach Zustand A ist jetzt gültig. Die vollständige Transition von Zustand A nach Zustand B ist gültig.#4 Zustand A führt exit Aktionen aus und beendet exit Aktionen (exitA()).#5 Zustand A wird inaktiv markiert.#6 Zustand B wird aktiv markiert.#7 Zustand B führt entry Aktionen aus und beendet entry Aktionen(entB()).#8 Das Stateflowdiagramm geht zurück zu “schlafen” und wartet, von einem anderemEreignis aufgeweckt zu werden.

4.4.3 Unterzustände(Substate)

Dieses Beispiel zeigt die Semantik für eine Transition von einem OR Subzustand zu einemOR Subzustand, siehe Bild 13.

Bild 13

Am Anfang ist das Stateflowdiagramm schlafend. Zustand A.A1 ist aktiv. Ereignis E_onefindet statt und weckt das Stateflowdiagramm auf. Bedingung C_one ist wahr. EreignisE_one wird von der Wurzel des Stateflowdiagramms hinunter durch die Hierarchie desStateflowdiagramms verarbeitet.

#1 Die Stateflowdiagramm’s Wurzel untersucht, ob es eine gültige Transition als eine Folge von E_one gibt. Es gibt eine gültige Transition von Zustand A.A1 nach Zustand B.B1.

Page 22: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

22

#2 Zustand A führt during Aktionen aus und beendet during Aktionen(durA()).#3 Zustand A.A1 führt exit Aktionen aus und beendet exit Aktionen(exitA1()).#4 Zustand A.A1 wird untätig markiert.#5 Zustand A führt exit Aktionen aus und beendet exit Aktionen(exitA()).#6 Zustand A wird untätig markiert.#7 Die Transitionsaktion A wird durchgeführt und beendet.#8 Zustand B wird tätig markiert.#9 Zustand B führt entry Aktionen aus und beendet entry Aktion(entB()).#10 Zustand B.B1 wird tätig markiert.#11 Zustand B.B1 führt entry Aktionen aus und beendet entry Aktionen(entB1()).#12 Das Stateflowdiagramm geht zurück zu “schlafen” und wartet, von anderem Ereignis aufgeweckt zu werden.

4.5 Stateflowmaschine

Die Stateflowmaschine ist die Sammlung von Stateflowblöcken in einem Simulinkmodell.Das Simulinkmodell und die Stateflowmaschine arbeiten nahtlos zusammen. Wenn eineSimulation läuft, führen beide Simulink und Stateflow automatisch aus. Ein Simulinkmodellkann aus Kombinationen von Simulinkblöcken, Toolboxblöcken und Stateflowblöcken(Stateflowdiagrammen) bestehen. Es gibt eine eins-zu-eins Korrespondenz zwischen demSimulinkmodell und der Stateflowmaschine wie in Bild 14. Jeder Stateflowblock in demSimulinkmodell entspricht einer Chart(Stateflowdiagramm) im Stateflow. DieStateflowmaschine ist die höchste Ebene in der Stateflowhierarchie. Ein Stateflowblock hateine Schnittstelle mit seinem Simulinkmodell. Ereignisse und Daten von Simulink können zuStateflow fliessen.

4.6 Stateflow Coder

Stateflow Coder ist ein separates Produkt für Anwendung mit Stateflow, damit Code fürRTW und Stateflow stand-alone (keine Simulation/ kein RTW) Targets erzeugt werdenkann.

Stateflow Coder generiert auf der Stateflow-Maschine basierten Integer-Code oderFloatingPoint-Code. RTW erzeugt Code aus dem Simulinkmodell und bietet ein Frameworkfür die Durchführung der generierten Codes in Real-Time. Der von Stateflow erzeugteCode wird nahtlos mit dem von RTW generierten Code vereinigt. Mit Stateflow, StateflowCoder, Simulink und RTW wird Zielcode für das komplette Modell erzeugt. Mit Stateflowund Stateflow Coder kann Zielcode exklusiv für die Stateflowmaschine des Simulinkmodellserzeugt werden.

Page 23: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

23

Bild 14

5 Zusammenfassung

Simulink verwendet eine blockorientierte Modelli erung mit hierarchischer Struktur und istsowohl für diskrete als auch für kontinuierliche oder hybride Systeme geeignet. Stateflowbietet neue Möglichkeiten an, mit Zustandsdiagrammen zu modelli eren. Das System besitztals Grundlage ein mathematisches Analysewerkzeug MATLAB, daß Möglichkeiten zurlinearen Analyse und zum Reglerentwurf zur Verfügung stellt. Das Werkzeug generiert C-Code für die Echtzeithardware eines Prototyping-Systems. Diese Code-Generierung istBasis der durchgängigen Nutzbarkeit des Werkzeugs für die Steuergeräte-Softwareentwicklung.

Page 24: MATLAB Simulink Stateflow - ls12- · PDF fileProjekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao 2 Inhaltsverzeichnis 1 Einleitung 2 MATLAB 2.1 Übersicht

Projekt: AirBag Thema: MATLAB/Simulink/Stateflow Autor: Lei Yao

24