MATLAB Simulink Stateflow

Transcription

MATLAB Simulink Stateflow
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Projekt AirBag
MATLAB
Simulink
Stateflow
Betreuer: Heiko Falk , Stefan Steinke
Autor: Lei Yao
Wintersemester 1999/2000 und Sommersemester 2000
1
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Inhaltsverzeichnis
1 Einleitung
2 MATLAB
2.1 Übersicht
2.2 Einfache Berechnung
2.3 Matrizen
2.4 M-Files
2.4.1 Script-Files
2.4.2 Funktion-Files
2.5 Kontrollstrukturen
2.6 Graphiken
2.7 Toolboxen
3
Simulink
3.1 Übersicht
3.2 Modellierung
3.2.1 Bau eines Modells
3.2.2 Modellierung einer Gleichung
3.2.3 Eine Demo
3.3 Simulation
3.4 Analyse der Simulationsresultate
3.5 Blocksets
3.6 Real-Time Workshop(RTW)
4
Stateflow
4.1 Übersicht
4.2 Stateflow Diagramm Objekte
4.2.1 Zustände
4.2.2 Transitionen
4.2.3 Ereignisse
4.2.4 Daten
4.2.5 Hierachie
4.2.6 Bedingungen
4.2.7 Aktionen
4.2.8 History
4.2.9 Parallel(AND) und Exklusiv(OR)
4.2.10 Verbindungspunkte(Connective Junctions)
4.3 Notation
4.3.1 Zustände
4.3.2 Transitionen
4.3.3 Verbindungspunkte
4.4 Semantik
4.4.1 Was ist Semantik
4.4.2 For-Schleife
4.4.3 Unterzustände(Substate)
4.5 Stateflowmaschine
4.6 Stateflow Coder
5 Zusammenfassung
2
Autor: Lei Yao
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
MATLAB, Simulink und Stateflow
1 Einleitung
Elektronische Steuergeräte werden heutzutage in vielen Bereichen benutzt. Um eingebettete
Systeme zu entwickeln, werden verschiedene Werkzeuge für Modellierung, Simulation und
Implementierung angeboten. MATLAB/Simulink/Stateflow von MathWorks ist so ein
Werkzeugsystem. Dieses Werkzeugsystem wird bereits auch für SteuergeräteSoftwareentwicklung im Automobilbereich eingesetzt. Bild 1 stellt die gesamte Struktur dar.
MATLAB ist eine Programmsprache, die die Grundlage für das ganze System ist. Simulink
benutzt MATLAB, verwendet Blockdiagramme und gibt die Simulationsausgabe aus. Durch
RTW kann Simulink C-Programm erzeugen. Stateflow wird auf MATLAB und Simulink gebaut.
Stateflow verwendet Zustandsdiagram und erzeugt C-Programm durch Stateflow
Coder .
Bild 1
2 MATLAB
2.1
Übersicht
MATLAB ist eine Programmiersprache für mathematisch-technische Untersuchungen unter
Verwendung von Digitalrechnern. Das Programmsystem integriert Berechnung,
3
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Visualisierung und Programmierung in einer einfachen Benutzungsumgebung, wo Probleme
und 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 und
5. MATLAB Anwendungsprogramm-Schnittstelle (Application Program Interface: API).
2.2
Einfache Berechnung
MATLAB wird mit der Eingabe MATLAB <cr> oder mit der Rechnermaus gestartet. Ist
das Programm in den Arbeitsspeicher geladen, so erscheint auf dem Bildschirm die
Eingabeaufforderung >>. Das Programmsystem befindet sich in der interaktiven Betriebsart,
wobei syntaktisch richtige Benutzereingaben zeilenweise ausgeführt werden und das
Ergebnis auf dem Bildschirm erscheint.
Die Eingabe des Ausdrucks
>> 2+3
liefert
ans =
5
wobei MATLAB das Ergebnis der Variablen ans zuweist, der Abkürzung für ”answer”. In
der 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:
>> x
x=
5
Falls ein Ausdruck nicht in einer einzelnen Zeile geschrieben werden kann, wird die erste
Zeile durch drei oder mehr Punkte abgeschlossen und in der folgenden Zeile weiter
geschrieben:
>> y = 1-2+3-4+...
5+6
y=
-3
Im folgenden Ausdruck
>> z = x*y^2
z=
45
werden die bereits definierten Variablen x und y verwendet. Mit ^ wird potenziert.
2.3
Matrizen
4
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Der Name MATLAB ist die Abkürzung für MATrix LABoratory. Ursprünglich war
MATLAB für den leichten Zugriff auf Matrizen geschrieben worden, wobei in den
Elementen komplexe Zahlen zugelassen sind.
Matrizen sind zeilenweise einzugeben. Die Elemente werden durch Leerzeichen und die
Zeilen durch Semikolon oder <cr> abgeschlossen. Ein Paar eckige Klammern schließt die
Elemente 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 das
Element in der zweiten Zeile, erste Spalte mit dem Wert 6 auf den Wert 2 gebracht:
>> A(2,1) = 2
A=
4 5
2 3
Bei der elementweisen Multiplikation und Division von Vektoren oder Matrizen werden
Elemente mit gleichem Index verknüpft. Elementweise Operationen werden durch einen
Punkt links neben dem Operator gekennzeichnet:
>> C = A .* B
C=
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
5
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
3
5
Vektoren können auch mit dem Doppelpunkt ( : ) gebildet werden:
>> b = 1 : 6
b=
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 und
ausgeführt. Um mehrere Programmzeilen zu schreiben und wieder zu verwenden, werden in
der MATLAB Sprache M-Files benutzt. Zwei Arten von m-Files werden verwendet: ScriptFiles und Funktion-Files, die mit einem Text-Editor oder mit dem MATLAB-Editor erstellt
werden können.
2.4.1 Script-Files
Script-Files sind häufig umfangreichere Programmsequenzen und haben Zugriff auf alle in
einer Sitzung definierten Variablen. Script-Files mit der Bezeichnung filename.m werden
durch 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 eigene
Funktionen definieren und damit den vorhandenen MATLAB-Funktionsvorrat erweitern.
Variablen in Funktion-Files sind lokale Variablen. Funktion-Files sind m-Files in der
folgenden allgemeinen syntaktischen Form, dabei sind E1, E2, ... Eingabeparameter und A1,
A2, .... Ausgabeparameter:
% Kommentare
funktion[ A1, A2, .... ] = Filename( E1, E2, .... )
MATLAB-Anweisungen
Das Funktion-File pt2wu.m berechnet ue und we:
6
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
% MATLAB Funktion-File pt2wu.m
funktion[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.1630
we =
0.8660
2.5
Kontrollstrukturen
Wie in den meisten höheren Programmiersprachen gibt es im MATLAB die
Kontrollstrukturen for-Schleife, while-Schleife, if-elseif-else. Die for-Schleife wird für eine
feste Anzahl von Schleifendurchläufen verwendet. Bei der while-Schleife wird die
Eintrittsbedingung vor dem Schleifendurchlauf geprüft. Die Anweisungen in der Schleife
werden ausgeführt, solange die Bedingung erfüllt ist. Die If-else Struktur wird für die
bedingte Ausführung von Anweisungen verwendet.
2.6
Graphiken
MATLAB hat extensive Möglichkeiten zur Erstellung von Graphiken aus Vektoren und
Matrizen. Für Graphiken mit linearer Skalierung der Achsen wird die Funktion plot
verwendet. Mit nur einem Eingabeparameter plot(y) erhält man den Vektor y auf der
Ordinate in Abhängigkeit von den Index (1...13) auf der Absizsse. Verwendet man zwei
Eingabeparameter plot(x,y), dann wird der Vektor y auf der Ordinate und der Vektor x auf
der Abszisse dargestellt:
%MATLAB Script-File dreieck.m
x = [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.m
t = 0:pi/100:2*pi;
y1 = sin(t);
y2 = sin(t-.25);
y3 = sin(t-.5);
plot(t,y1,t,y2,t,y3)
7
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Es ist möglich, Farbe und Darstellung der einzelnen Kurven mit dem Befehl plot(x,y, ‘colorstyle-marker’) zu spezifizieren. Mit plot(x,y, ‘g:+’) wird beispielsweise der Vektor y durch
eine Kurve mit grünen Punkten und Pluszeichen auf allen Daten dargestellt. Die xlabel und
ylabel Funktionen erzeugen x- und y-Achse Beschriftungen. Die title Funktion addiert einen
Titel 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 das
Graphikfenster in eine m*n Matrix von Teilbildern. Mit p wird das aktuelle Teilbild
adressiert.
Dreidimensionale Graphiken können mit Funktionen plot3, contour, mesh und surf
dargestellt werden.
2.7
Toolboxen
MATLAB ist schon sehr mächtig. Für Spezialgebiete gibt es aber noch Erweiterungen, so
genannte Toolboxen. Toolboxen sind umfassende Sammlungen von MATLAB Funktionen,
die die MATLAB Umgebung ausbauen, um besondere Klassen von Problemen zu lösen. Die
Toolboxen liefern die Anstrengungen und die Erfolge mancher Spitzenforscher in der Welt
in 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, Regelungen
im Zeitbereich und Frequenzbereich berechnen, Zustandsregelungen bearbeiten.
3
Simulink
3.1 Übersicht
Simulink ist eine Erweiterung von MATLAB mit Bedienoberfläche unter Verwendung von
Blockdiagrammen (Signalflussplänen). Mit diesem Software-Paket kann man dynamische
Systemen modellieren, simulieren und analysieren. Simulink untersucht lineare und nicht
lineare Systeme, die kontinuierlich, diskret oder hybrid sein können.
Eine der Schlüsselmerkmale von Simulink ist, daß Simulink oberhalb MATLAB aufgebaut
wird. Als eine Folge können die Benutzer von Simulink direkt auf die umfangreichen
MATLAB-basierten Werkzeuge zugriffen, um System zu erzeugen, zu analysieren und zu
optimieren. Die Werkzeuge enthalten MATLAB Anwendungstoolboxen, die spezielle
Sammlungen von M-Files für die Bearbeitung besonderer Klassen von Problemen sind.
3.2 Modellierung
3.2.1
Bau eines Modells
8
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Simulink bietet eine graphische Benutzer-Schnittstelle für den Aufbau der Modelle als
Blockdiagramm. Mit dieser Schnittstelle kann man ein Modell zeichnen wie mit Bleistift und
Papier. Klicken-und-Ziehen Operationen werden benutzt. Diese ist sehr unterschiedlich von
früheren Simulationspaketen, für die man Differential-Gleichungen in einem Programm
formulieren mußte.
Komplizierte Modelle profitieren oft durch die Hinzufügung der Hierarchie von
Subsystemen. Ein Subsystem ist eine Gruppe von Blöcken. Man kann ein System auf einer
hö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 zu
verstehen.
Ein Modell bestellt aus zwei Hauptobjekten: Blöcke und Linien. Das SimulinkBlockbibliothek-Fenster zeigt Icons, die die Blockbibliotheken wie Sinks, Sources, lineare
und nichtlineare Komponenten, und Konnectoren repräsentieren(Bild 2). Jede
Blockbibliothek besitzt eine Menge von Blöcken. In der Sources-Bibliothek kann man
verschiedendste Eingabesignale wie zum Beispiel Sine-Wave-Block finden(Bild 3). Man
kann auch Blöcke modifizieren oder eigene Blöcke erzeugen.
Bild 2
9
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
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 das
Simulink-Blockbibliothek-Fenster auf dem Bildschirm. Die Blöcke werden von der
Blockbibliothek in das Modellfenster kopiert, die Parameter mancher Blöcke werden
eingestellt, und dann werden die Blöcke durch die Linien miteinander verbunden.
3.2.2
Modellierung einer Gleichung
Die Gleichung
Tf = 9/5(Tc) + 32
rechnet 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.
10
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
* 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 modelliert die Thermodynamik eines Hauses (Bild 5). Das Thermostat
ist auf 70 Grad Fahrenheit eingestellt und wird von der äußeren Temperatur beeinflußt, die
durch eine Sinuswelle mit Amplitude von 15 Grad auf einer Basistemperatur von 50 Grad
simuliert wird.
Das Modell benutzt Subsysteme, um das Modelldiagramm zu vereinfachen. 5 Subsysteme
sind Thermostat, Haus(Bild 6) und 3 Temp-Convert Subsysteme. Die innere und äußere
Temperatur wird dem Haus eingegeben. Das Haus updatet die innere Temperatur. Das
Thermostat entscheidet durch die innere Temperatur, ob die Heizung ein- oder
ausgeschaltet werden soll, um die innere Temperatur um 70 Grad zu halten. Die
Heizungskosten, innere und äußere Temperatur werden in den Scope-Blöcken angezeigt.
11
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Bild 5
Bild 6
12
Autor: Lei Yao
Projekt: AirBag
3.3
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Simulation
Die Simulation von Simulink-Modellen betrifft die numerische Integration von ordinären
Differentialgleichungen (ordinary differential equations: ODEs). Simulink stellt zahlreiche
Solver für die Simulation solcher Gleichungen zur Verfügung. Wegen der Vielfalt von
dynamischem Systemverhalten können manche Solvers leistungsfähiger als andere bei
Lö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öße
während der Simulation modifizieren. Wenn ein Modell kontinuierliche Zustände hat, wird
ode45 als ”erster Versuch” für die meisten Probleme benutzt. ode45 ist ein ausgezeichneter
variable-step Solver für allgemeinen Zwecke.
Simulationsparameter wie Start Time, Stop Time, Step Sizes, Output Options, usw sollen
zuerst spezifiziert werden. Simulation kann entweder von dem Simulink-Menü oder durch
Befehle in MATLAB’s Kommando-Window ausgeführt werden. Während der Ausführung
einer Simulation kann die Ausgabe in Scopes beobachtet werden. Man kann auch die
Parameter ändern und sofort in Scopes sehen was passiert. Die Simulationsresultate können
fü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 mit
Linearisierungs- und Trimming-Tools analysiert werden. Die Funktion linmod erhält lineare
Modelle in Zutandsraumform aus Systemen von Differential-Gleichungen. Die Funktion
trim 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ür
die Benutzung mit Simulink an. Blocksets sind zusätzliche Simulink-Blöcke, die in einer
separaten Bibliothek von der Haupt-Simulink-Blockbibliothek angeordnet werden.
Blocksets sind für spezielle Anwendungen wie Kommunikation, Signalprocessing und
Kraftwerksystem zustandig. Drei wichtige Blocksets sind: DSP Blockset, Fixed-Point
Blockset und Nonlinear Control Design (NCD) Blockset.
Das DSP Blockset baut Simulink für die Anwendung in der rapiden Simulation und den
Entwurf von DSP-basierten Geräten und Systemen aus. Mit dem DSP Blockset bietet
Simulink ein intuitives Werkzeug für interaktive Blockdiagramm-Simulationen und Evaluation durch Signalprocessing-Algorithmen.
Das Fixed-Point Blockset erweitert die normale Blockbibliothek des Simulinks auch. Mit
dieser 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, nichtlinearen
Steuerungen zuständig.
3.6 Real-Time Workshop(RTW)
13
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Das Simulink Real-Time Workshop erzeugt C Code direkt aus Simulink-Blockdiagrammen.
Diese Funktion kann für eingebettete Systemen benutzt werden. Nachdem ein System mit
Simulink entworfen worden ist, kann Code für Real-Time-Controller oder digitale SignalProzessoren erzeugt, übersetzt, gelinkt und im Targetprozessor abgelegt werden. RTW
unterstützt DSP-Boards, eingebettete Controller und verschiedendstee kommerziell
verfügbare Hardware.
4
4.1
Stateflow
Übersicht
Stateflow ist ein mächtiges graphisches Entwurfs- und Entwicklungswerkzeug für
komplizierte Steuerungen und logische Probleme. Mit Stateflow kann man
Stateflowdiagramme erzeugen. Ein Stateflowdiagramm ist eine graphische Darstellung von
einem endlichen Automat, wo Zustände und Transitionen die grundlegenden Blöcke des
Systems bilden. Mit Stateflow ist es leicht, Entwürfe herzustellen, verschiedene Szenarios
zu betrachten, und zu iterieren, bis Stateflowdiagramme das gewünschte Verhalten
modellieren. Eine der typischen Anwendungsgebeite von Stateflow sind eingebettete
Systeme.
Für die Codeerzeugung wird Stateflow Coder verwendet.
4.2
Stateflow Diagramm Objekte
Ein Stateflowdiagramm besteht aus graphischen Komponenten und nichtgraphischen
Objekten. Bild 7 zeigt die graphische Komponente.
14
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Bild 7
4.2.1
Zustände
Ein Zustand beschreibt einen Modus eines ereignisgesteuerten Systems. Die Aktivität oder
Nichtaktivitä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 haben
Labels, die die Aktionen spezifizieren können. Die Aktionen werden nach Aktionstyp in
einer 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 an
einem Quellenobjekt, das andere an einem Zielobjekt. Ein Transitionslabel beschreibt die
Umstände, unter denen das System sich von einem Zustand zu einem anderen Zustand
bewegt. Um eine Transition zu triggern, müssen manche Ereignisse stattfinden. In Bild 7
wird die Transition von StateA1 zu StateA2 mit dem Ereignis transitionA1_A2 gezeichnet,
das die Transition triggert. Default-Transitionen spezifizieren exklusive(OR) Zustände, die
aktiv 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, ist
StateA1 bei Default auch aktiv. Eine innere Transition ist eine Transition, die keinen
Quellenzustand hat.
4.2.3
Ereignisse
15
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Ereignisse sind keine graphischen Objekte. Ereignisse treiben Stateflowdiagramme. Hat ein
Ereignis stattgefunden, wird der Status der Zustände in einem Stateflowdiagramm bewertet.
Die Übertragung eines Ereignisses kann initiieren, daß eine Transition stattfindet und/oder
eine Aktion ausgeführt wird.
4.2.4
Daten
Datenobjekte sind numerische Werte im Stateflowdiagramm. Jedes Datum hat Eltern. Daten
werden oft in den Aktionen manipuliert, die mit Zuständen und/oder Transitionen assoziiert
werden können. Der Wert des Datums wird entweder innerhalb des Stateflowdiagramms
durch Aktionen oder außerhalb des Stateflowdiagramms durch Simulink oder äußere
Quellen 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 On
erreicht wird, wird das Datum on_count inkrementiert.
Bild 8
4.2.5
Hierachie
Stateflow unterstützt eine hierarchische Organisation von Zuständen. Ein Unterzustand
kann in einem Superzustand existieren. Ein hierarchischer Entwurf reduziert die Zahl der
Transitionen und erzeugt ordentliche, handliche Diagramme. In Bild 7 enthält der
Superzustand StateA zwei Unterzutände, StateA1 und StateA2. StateA ist der Vatervon
StateA1 und StateA2. Wenn ein Unterzustand aktiv ist, ist sein Vater Superzustand auch
aktiv.
4.2.6
Bedingungen
16
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Eine Bedingung ist ein boolescher Ausdruck. Wenn der Ausdruck wahr ist, wird eine
Transition ausgeführt. In Bild 7 findet die Transition von StateA1a oder StateA1b nach
StateA1c 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 Modell
werden Aktionen mit Transitionen verbunden, während in dem Moore Modell Aktionen mit
Zuständen assoziiert werden. Stateflow unterstützt Zustandsaktionen, Transitionsaktionen
und Bedingungsaktionen. Zustände können den Aktionstyp entry, during, exit und on
haben. Transitionen können Bedingungsaktionen oder Transitionsaktionen haben. Eine
Aktion kann ein Funktionsanruf, Übertragung eines Ereignisses, Zuweisung einer Variable,
usw sein.
4.2.8
History
History bietet die Mittel an, den Ziel-Unterzustand einer Transition nach historischer
Informationen zu spezifizieren. Wenn ein Superzustand mit exklusiver(OR) Dekomposition
einen History-Knoten hat, wird der Ziel-Zustand für eine Transition so definiert, daß es der
zuletzt besuchte Zustand ist. Der History-Knoten hat Priorität gegenüber default
Transitionen.
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 gleichzeitig
aktiv sein. StateA1 und StateA2 sind exklusive Zustände, zu jedem Zeitpunkt kann nur ein
Zustand aktiv sein. StateA hat eine exklusive Zustand-Dekomposition.
4.2.10 Verbindungspunkte(Connective Junctions)
Verbindungspunkte sind Entscheidungsstellen in einem System. Ein Verbindungspunkt
vereinfacht Darstellungen des Stateflowdiagramms und erleichtert die Erzeugung von
leistungsfähigem Code. In Bild 7 wird ein Verbindungspunkt als eine Entscheidungsstelle
für zwei Transitionssegmente benutzt, die an StateA1c beenden.
4.3
Notation
Eine Notation definiert einen Satz von Objekten und Regeln, die die Beziehungen zwischen
den Objekten verwalten. Die Stateflow-Notation bietet eine natürliche Sprache an, um die
von einem Stateflowdiagram mitgeteilte Entwurfsinformationen zu kommunizieren. Die
Notation bildet die Verbindungen zwischen den graphischen Objekten und der
Aktionssprache. Die Aktionssprache diktiert die Aktionen, die mit Zuständen und
Transitionen assoziiert werden können. Die Stateflow-Notation unterstützt unterschiedliche
Arten der Darstellung für das gewünschte Systemverhalten. Welche Darstellung gewählt
wird, beeinflußt die Leistungsfähigkeit des generierten Codes.
4.3.1
Zustände
17
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Aktionen können mit Zuständen via Labels vereinigt werden. Die Zustandslabels haben das
folgende Format:
name/
entry:
during:
exit:
on event_name:
Die Stichwörter entry, during, exit und on identifizieren Aktionen mit dem Zustand. Jedes
Stichwort ist optional. In Bild 9 sind die Zustandsnamen On und Off. Der Zustand On hat
entry Aktion on_count=0. Wenn die entry Aktion ausgeführt wird, wird der Wert on_count
zu 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() und
on_count++ auch ausgeführt. Der Zustand On hat die Aktion on event_name,
power_outage. Wenn das Ereignis power_outage stattfindet, wird die Aktion
handle_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 Transition
stattzufinden, wenn die Bedingung(condition) wahr ist. Die condition_action wird
ausgeführt, solange die condition als wahr bewertet wird und bevor das Transitionsziel als
gültig bestimmt wird. Die transition_action wird durchgeführt, wenn die condition als wahr
bewertet wird und nachdem das Transitionsziel als gültig bestimmt wird. In Bild 10, wenn
18
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
die Bedingung [off_count==0] wahr ist, triggert die Übertragung von dem Ereignis E die
Transition 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 einer
Flowdiagram-Notation. Die Flowdiagram-Notation wird im wesentlichen ohne Verwendung
von Zuständen logisch dargestellt. Die Verwendung von Flowdiagram-Notationen kann
leistungsfähigeren Code produzieren, der für Speicheranwendungen optimiert werden.
Bild 11 zeigt eine reale Anwendung der Flußdiagramnotation und Zustandstransitionsnotation. Angenommen, daß Zustand Sensor.Low aktiv ist und Ereignis UPDATE
stattfindet. Die innere Transition von Sensor nach dem ersten Verbindungspunkt ist gültig.
Die Bedingungsaktion {start_adc()} wird durchgeführt. Die Eigenschleife an dem zweiten
Verbindungspunkt testet die Bedingung [adc_busy()] und erzeugt eine Verzögerung. Die
nächste Bedingungsaktion {sensorValue=read_adc()} setzt einen neuen Wert in dem
Datenobjekt sensorValue. Nach dem Wert von sensorValue wird der Zielzustand
festgestellt.
19
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Bild 11
4.4
4.4.1
Semantik
Was ist Semantik
Eine Semantik beschreibt, wie die Notation interpretiert und implementiert wird. Ein
Stateflowdiagramm enthält Aktionen, die mit Transitionen und Zustände verbunden sind.
Semantik beschreibt, in welcher Sequenz die Aktionen stattfinden. Die Kenntnis der
Semantik ist wichtig, um sinnvolle Stateflowdiagramme entwerfen und Code erzeugen zu
können.
Das Stateflowdiagramm wird nur ausgeführt, wenn ein Ereignis stattfindet. Exakt was
ausgeführt wird, hängt von den Umständen ab, wenn das Ereignis stattfindet. Wenn ein
Ereignis stattfindet, läuft die Ausführung von oben nach unter durch die Hierarchie des
Stateflowdiagramms. In jeder Ebene in der Hierarchie werden during und on Aktionen für
die 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 die
Bedingungsaktion und der Verbindungspunkt verwandt, um eine for-Schleife zu erzeugen.
20
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Bild 12
Am Anfang ist das Stateflowdiagramm schlafend. Zustand A ist aktiv. Ereignis E_one findet
statt und weckt das Stateflowdiagramm auf. Ereignis E_one wird von der Wurzel des
Stateflowdiagramms 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ächst
als 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 anderem
Ereignis aufgeweckt zu werden.
4.4.3
Unterzustände(Substate)
Dieses Beispiel zeigt die Semantik für eine Transition von einem OR Subzustand zu einem
OR Subzustand, siehe Bild 13.
Bild 13
Am Anfang ist das Stateflowdiagramm schlafend. Zustand A.A1 ist aktiv. Ereignis E_one
findet statt und weckt das Stateflowdiagramm auf. Bedingung C_one ist wahr. Ereignis
E_one wird von der Wurzel des Stateflowdiagramms hinunter durch die Hierarchie des
Stateflowdiagramms 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.
21
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
#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 eine
Simulation läuft, führen beide Simulink und Stateflow automatisch aus. Ein Simulinkmodell
kann aus Kombinationen von Simulinkblöcken, Toolboxblöcken und Stateflowblöcken
(Stateflowdiagrammen) bestehen. Es gibt eine eins-zu-eins Korrespondenz zwischen dem
Simulinkmodell und der Stateflowmaschine wie in Bild 14. Jeder Stateflowblock in dem
Simulinkmodell entspricht einer Chart(Stateflowdiagramm) im Stateflow. Die
Stateflowmaschine ist die höchste Ebene in der Stateflowhierarchie. Ein Stateflowblock hat
eine Schnittstelle mit seinem Simulinkmodell. Ereignisse und Daten von Simulink können zu
Stateflow fliessen.
4.6
Stateflow Coder
Stateflow Coder ist ein separates Produkt für Anwendung mit Stateflow, damit Code für
RTW und Stateflow stand-alone (keine Simulation/ kein RTW) Targets erzeugt werden
kann.
Stateflow Coder generiert auf der Stateflow-Maschine basierten Integer-Code oder
FloatingPoint-Code. RTW erzeugt Code aus dem Simulinkmodell und bietet ein Framework
für die Durchführung der generierten Codes in Real-Time. Der von Stateflow erzeugte
Code wird nahtlos mit dem von RTW generierten Code vereinigt. Mit Stateflow, Stateflow
Coder, Simulink und RTW wird Zielcode für das komplette Modell erzeugt. Mit Stateflow
und Stateflow Coder kann Zielcode exklusiv für die Stateflowmaschine des Simulinkmodells
erzeugt werden.
22
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
Autor: Lei Yao
Bild 14
5
Zusammenfassung
Simulink verwendet eine blockorientierte Modellierung mit hierarchischer Struktur und ist
sowohl für diskrete als auch für kontinuierliche oder hybride Systeme geeignet. Stateflow
bietet neue Möglichkeiten an, mit Zustandsdiagrammen zu modellieren. Das System besitzt
als Grundlage ein mathematisches Analysewerkzeug MATLAB, daß Möglichkeiten zur
linearen Analyse und zum Reglerentwurf zur Verfügung stellt. Das Werkzeug generiert CCode für die Echtzeithardware eines Prototyping-Systems. Diese Code-Generierung ist
Basis der durchgängigen Nutzbarkeit des Werkzeugs für die SteuergeräteSoftwareentwicklung.
23
Projekt: AirBag
Thema: MATLAB/Simulink/Stateflow
24
Autor: Lei Yao

Documents pareils