stateflow: eine grafische erweiterung zu simulink · pdf filelehrstuhl für elektrische...
Post on 06-Feb-2018
224 Views
Preview:
TRANSCRIPT
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink
Stateflow
Stateflow:
Eine grafische Erweiterung zu SIMULINK
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 2
StateflowWas ist Stateflow?
Modellierung und Simulation
von endlichen Zustandsautomaten/ereignisorientierten reaktiven Systemen
durch Zustandsübergangsdiagramme
in einer grafischen Oberfläche (Chart)
eingebettet in ein SIMULINK Modell
Z1
Z3
Z2
Bed. 1
Bed. 2Bed. 3
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 3
StateflowEinfaches Beispiel
Reaktives System: Lichtschalter
zwei Zustände: „Ein“ und „Aus“
Wechselt den Zustand durch das Ereignis „schalten“
Ein Ausschalten
schalten
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 4
StateflowStarten von Stateflow
Start durch Eingabe von: sf oder stateflow
Elemente eines Stateflow Modells:
Umgebendes SIMULINK Modell
Stateflow Chart mit grafischem Editor
State Machine (alle Charts zusammen)
State Machine wird als SIMULINK S-Funktion realisiert (automatische Erzeugung)
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 5
StateflowGrafische Elemente
Grafische Grundelemente von Stateflow
Zustände mit Zustandsaktionen
Transitionen mit Übergangsbedingungen (Labels)
Default Transitions
Connective Junction (Vereinigung von Transitionen)
History Junction (Gedächtnis für zuletzt aktiven Zustand)
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 6
StateflowGrafische Elemente: Zustände
Eigenschaften von Zuständen
Sie beschreiben den Modus eines Systems und können entweder aktiv oder inaktiv sein
Zustände können aktiviert und verlassen werden
Sie können Aktionen ausführen:entry action, during action, exit action, on event action und ihre Aktivität an SIMULINK ausgeben
Es können Exklusiv- oder Parallel Zustände existieren
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 7
StateflowGrafische Elemente: Zustände
Eigenschaften von Zuständen
bind action: „gebundene“ Daten und Events können nur von diesem Zustand geändert werden, aber von allen gelesen werden.
Entspricht einem Schreibschutz für Daten in komplexen Modellen.
Beispiel:bind: data1, event1;
Variable data1 nur von diesem Zustand änderbar, Event event1 nur von diesem Zustand auslösbar.
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 8
StateflowGrafische Elemente: Zustände
Anordnungsmöglichkeiten von Zuständen
Exklusiv-Oder: genau ein Zustand einer Hierarchieebene ist aktiv
Parallel: mehrere Zustände sind gleichzeitig aktiv; Ausführungsreihenfolge und veränderte Darstellung beachten!
Änderung im Shortcut Menü Decomposition
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 9
StateflowGrafische Elemente: Transitionen
Transitionen sind Übergangsmöglichkeiten zwischen Zuständen
Überprüfung bei aktivem Quellobjekt und bei Auftreten von Events
Default Transition wird geprüft, wenn kein Quellobjekt einer normalen Transition aktiv ist
Label einer Transition kann folgende Felder enthalten:event[condition]{condition_action}/transition_action
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 10
StateflowGrafische Elemente: Transitionen
Typische Label einer Transition
Label besteht aus: Transition ist gültig, wenn:
Event Das Event auftritt
Event und Bedingung Das Event auftritt und die Bedingung wahr ist
Bedingung Ein beliebiges Event auftritt und die Bedingung wahr ist
Transitionsaktion Ein beliebiges Event auftritt
Leerer Label Ein beliebiges Event auftritt
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 11
StateflowGrafische Elemente: Verbindungspunkte
Verbindungspunkte dienen dem Aufspalten oder Zusammenführen von Transitionen
Oder Entscheidungen / If-Abfrage
For-Schleife / Self Loop Transition
Reine Flußdiagramme (ohne Zustände)
Wichtig: Eine Event ist solange aktiv, bis ein neuerZielzustand gefunden wurde
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 12
StateflowTriggermethoden eines Charts
Ausführung nur bei Auftreten eines Events
inherited: implizite Events bei jeder Neuberechnung der Eingangssignale oder externe Events von Simulink
Discrete: implizite Events in der angegebenen Abtastrate
Continuous: implizite Events bei jedem Integrationsschritt von SIMULINK und evtl. auch dazwischen
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 13
StateflowNicht grafische Elemente: Data Dictionary
Data Dictionary entspricht dem Matlab Worksapce(Speicher aller Daten)
Darstellung im Model Explorer
Streng objektorientierter Aufbau (Einfluss auf Sichtbarkeit von Variablen!): Mutter-Kind Beziehungen
Jedes Event und jede Variable muss vor der Verwendung deklariert werden.
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 14
StateflowNicht grafische Elemente: Data Dictionary
Interne Variablen und Events: Zuordnung zum Mutter-Objekt
Externe Variablen und Events aus SIMULINK: Zuordnung zum Chart
Hinzufügen von Variablen und Events zu Mutter-Objekten: Explorer
Hinzufügen von Variablen und Events zum Chart: Explorer oder Stateflow Editor
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 15
StateflowHierarchiebildung
Ein Chart ist objektorientiert aufgebaut:
Jeder Zustand kann weitere Kind-Objekte besitzen
Kind-Objekte können auch wieder Zustände sein
Dadurch ergeben sich folgende Funktionalitäten:
o Hierarchieebenen durch Super- und Substates
o Unterteilung von Zuständen durch Substates in Exklusiv-Oder Anordnung
o Gleichzeitigkeit durch parallele Superstates
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 16
StateflowHierarchiebildung: Exklusiv-Superstates
Unterteilung von Zuständen in Unterzustände zur Strukturierung des Charts:
Visuelle Zusammenfassung durch Gruppierung (Doppelklick)
Zustände zu Funktionsgruppen zusammenfassen
Einfügen von Gedächtnis durch History-Junctions
Transitionen über Hierarchiegrenzen hinweg zulässig
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 17
StateflowHierarchiebildung: Exklusiv-Superstates
Inner Transitions von Super- zu Substates zulässig
Beachte:
o Superstate: er ist aktiv, wenn mindestens einer seiner Substates aktiv ist
o Superstate: er kann nur dann aktiv werden, wenn mindestens einer seiner Substates auch aktiv ist
o Substate: er wird verlassen, wenn der umgebende Superstate verlassen wird
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 18
StateflowHierarchiebildung: Parallel-Superstates
Unterteilung von Teilen des Charts in parallel ablaufende Untergruppen:
Realisierung parallel ablaufender Vorgänge
Ausführungsreihenfolge ist durch Plazierung gegeben: von links nach rechts und von oben nach unten
Ausführungsreihenfolge kann ab R2008b auch explizit angegeben werden: Shortcut Menü Execution Order
Ausführungsreihenfolge wird durch Nummer angezeigt
Erstellung: zuerst normalen Zustand erzeugen, dann das Shortcut Menü Decomposition/Parallel wählen
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 19
StateflowHierarchiebildung: Boxes
Rein visuelle Zusammenfassung von grafischen Elementen
Erzeugung: zuerst normaler Zustand, dann Shortcut Menü Type/Boxoder Verwendung des Box Tools
Gruppierung durch Doppelklick auf die Box
Ausführungsreihenfolge wie bei Parallel-Zuständen: von links nach rechts und oben nach unten oder durch explizite Angabe (ab R2008b)
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 20
StateflowHierarchiebildung: Subcharts
Entsprechung von Subsystemen in SIMULINK
sie besitzen identische Eigenschaften wie Superstates, insbesondere
o können sie Ziel und Quelle von Transitionen sein
o können sie als Exklusiv- oder Parallel-Subchart angeordnet sein
o können Transitionen über Subchart-Grenzen hinweg erfolgen
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 21
StateflowHierarchiebildung: Subcharts
Erzeugung von Subcharts:
Zuerst einen Exklusiv- oder Parallel-Superstate erzeugen
dann den Superstate markieren und das ShortcutMenü Make Contents/Subcharted auswählen
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 22
StateflowHierarchiebildung: Subcharts
Navigation:
Öffnen des Subcharts durch Doppelklick
Navigation durch die Pfeiltasten im grafischen Editor
Transitionen nach Innen: ziehen der Transition zur Mitte des Subcharts bis ein Strudel erscheint
Transitionen nach Außen: ziehen der Transition auf den Rand des Subcharts bis ein Strudel erscheint
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 23
StateflowHierarchiebildung: Grafische Funktionen
Realisierung wiederkehrender Aktionen durch Funktionen:
Implementierung als zustandslose Flussdiagramme
Formale Funktionsdefinition im Label
Berechnung des Funktionswerts in der Bedingungs- oder Transitionsaktion
Alle Elemente außer Zuständen sind zulässig, insbesondere Transitionen und Verbindungspunkte
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 24
StateflowHierarchiebildung: Grafische Funktionen
Erstellen einer Funktion:
Erzeugen eines Superstate
Markieren und Auswahl des Shortcut Menüs Type/Function
oder Verwendung des Graphical Function Tools
Erstellen des Labels (formale Funktionsdefinition)
Erstellen des Flussdiagramms mit Funktionswertberechnung
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 25
StateflowTruth Tables
Was sind Truth Tables ?
Logische Wahrheitstabellen
Alternative zu if-then-else-Abfragen
Condition Table: Bedingungen und Entscheidungsergebnisse
Action Table: den Entscheidungsergebnissen zugeordnete Aktionen, inkl. INIT- und FINAL-Aktion (unabhängig von Entscheidungsergebnissen)
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 26
StateflowTruth Tables - Beispiel
Quantisierer, der die nächst kleinere ganze Zahl seines Eingangswertes ausgibt, mit Sättigung bei 0 und +5.
Condition D1 D2 D3 D4 D5 D6
x<1 T F F F F -
x<2 T T F F F -
x<3 T T T F F -
x<4 T T T T F -
x<5 T T T T T -
Action y=0 y=1 y=2 y=3 y=4 y=5
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 27
StateflowTruth Tables - Beispiel
Äquivalenter Matlab-Code:
if ((x < 1) & (x < 2) & (x < 3) & (x < 4) & (x < 5))y = 0;
elseif (~(x < 1) & (x < 2) & (x < 3) & (x < 4) & (x < 5))y = 1;
elseif (~(x < 1) & ~(x < 2) & (x < 3) & (x < 4) & (x < 5))y = 2;
elseif (~(x < 1) & ~(x < 2) & ~(x < 3) & (x < 4) & (x < 5))y = 3;
elseif (~(x < 1) & ~(x < 2) & ~(x < 3) & ~(x < 4) & (x < 5))y = 4;
elsey = 5;
end
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 28
StateflowTruth Tables - Erstellung
Verwendung des Truth Table Tools.
Definition des Prototyps.
Doppelklick zum Öffnen des Truth Table Editors.
Hinzufügen von Zeilen und Spalten mit den Schaltflächen in der oberen Zeile.
Labels in Bedingungen und Aktionen zulässig, abgeschlossen durch Doppelpunkt.
INIT- und FINAL-Aktionen durch die Labels INIT und FINALeingeleitet, an beliebiger Stelle zulässig.
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 29
StateflowEmbedded Matlab Funktionen
Verwendung von Matlab-Code in Echtzeitanwendungen (ohne vorhandenes Matlab)
Begrenzter Befehlssatz (Online Hilfe nach Embedded Matlab Run-Time Function Library durchsuchen)
Einschränkung: Nur ein Rückgabewert zulässig
Hinzufügen über embedded Matlab Function Tool und editieren im Embedded Matlab Editor
Praktischer Ersatz für grafische Funktionen
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 30
StateflowEmbedded Simulink Funktionen
Verwendung von Simulink Modellen innerhalb von Stateflow.
Hinzufügen über Simulink Function Tool und editieren in einem Simulink Fenster.
In Stateflow wird der Funktionsprototyp definiert.
Doppelklick öffnet das Simulink Fenster mit vorbereiteten Ein-und Ausgängen.
Erleichtert die Wiederverwendung vorhandener Simulink Modelle.
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 31
StateflowAction Language
Was ist Action Language ?
Durchführen logischer Vergleiche, numerischer Operationenund Zuweisungen an Variablen
Zustandsaktionen: entry, during, exit-action
Auslösen von Events (gerichtet und ungerichtet)
Spezielle Abfragen (z.B. in(state_name), siehe Tab. 12.3)
Zugriff auf Matlab Workspace und Funktionen
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 32
StateflowAction Language
Verwendung von Action Language
Verwendung in den Labeln von Zuständen und Transitionen
Addition/Subtraktion: a+b, a-b
Vergleiche: a>b, a==b, a<=b, a || b, a && b
Zuweisungen: a=b, a++, a+=b
Zusammenfassung in den Tab. 12.3 bis 12.7
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 33
StateflowAction Language
Datentyp Umwandlungen
explizite Typumwandlung: y=cast(3*x,int16)
Matlab-Stil: y=int16(3*x)
Abhängig vom Datentyp einer anderen Variablen:x=cast(y,type(z))
Mögliche Datentypen: double, single, int32, int16, int8, uint32, uint16, uint8, boolean
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 34
StateflowAction Language
Zugriff auf Matlab-Funktionen
Matlab-Funktion mit Workspace Variable x aufrufen
o a = matlab('sin(x)');
o Kurzform: a = ml('sin(x)');
Matlab-Funktion mit Variable aus Stateflow aufrufen
o a = matlab('sin(%g)', b);
o Platzhalter: double (%g), integer (%d), string (%s)
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 35
StateflowAction Language
Variablen in Action Language
Ansprechen durch Variablenname in aktueller und höheren Hierarchieebenen (z.B. a)
Ansprechen durch vollen Pfad bei lokalen Variablen in Kind-Objekten (z.B. Z1.On.a)
Einzelne Elemente eines Arrays: matrix[1][3]
Alle Elemente eines Arrays: matrix=matrix*10
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 36
StateflowAction Language
Event Broadcasting
Ungerichtet: Name des Events in einer Zustands- oder Transitionsaktion angeben
Das Event ist in allen Zuständen seines Scopes sichtbar
Gerichtet: send(event1,Z2) sendet das Event event1 an Zustand Z2
Das Event ist nur im Zustand Z2 sichtbar
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 37
StateflowAction Language
Temporallogik Operatoren
Logische Operatoren, die auf Basis des wiederholten Auftretens von Events ausgewertet werden
Verwendung nur in Zustandslabeln und Transitionslabeln, deren Quelle ein Zustand ist
Verwendung zur Abfrage von mehrmaligem Auftreten von Events
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 38
StateflowAction Language
Temporallogik Operatoren
after(n,E): true, wenn das Event E mindestens n mal aufgetreten ist
before(n,E): true, solange das Event E weniger als n mal aufgetreten ist
at(n,E): true, wenn das Event E genau n mal aufgetreten ist
every(n,E): wird bei jedem n-ten Auftreten des Events E zu true ausgewertet
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 39
StateflowAnwendungsbeispiel: Getränkeautomat
Funktion des Automaten
Automat eingeschaltet: Zustand On
Automat ausgeschaltet: Zustand Off
Getränke: Orange, Cola, Fanta, Wasser
Wenn der Automat eingeschaltet ist, existieren die Zustände Bereit (akzeptieren einer Auswahl) und einer für jedes Getränk
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 40
StateflowAnwendungsbeispiel: Getränkeautomat
Funktion des Automaten
Eine erneute Auswahl darf nur akzeptiert werden, wenn das Getränk entnommen wurde
Alle Events werden in SIMULINK durch manuelle Schalter ausgelöst
Die Getränkeauswahl wird durch eine Variable mit Werten von 1 bis 4 kodiert
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 41
StateflowAnwendungsbeispiel: Heizgebläse
Funktion des Gebläses
Es existieren ein Gebläse und einen Heizstab, die unabhängig ein- und ausgeschaltet werden können
Der Heizstab darf nur bei aktivem Gebläse in Betrieb sein
Alle Events werden durch manuelle Schalter in SIMULINK erzeugt
Das Chart soll nur bei externen Triggersignalen ausgeführt werden
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 42
StateflowAnwendungsbeispiel: Heizgebläse
Funktion des Gebläses
Die Synchronisation zwischen beiden Superstates soll durch Event-Broadcasting erfolgen
Beim Aus- und Einschalten des Gebläses soll der jeweils letzte Zustand der Heizung wieder hergestellt werden
Es handelt sich um typisches Beispiel paralleler Superstates
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 43
StateflowÜbungsaufgabe: Mikrowellensteuerung
Aufgabenstellung
Türe kann offen oder geschlossen sein, nur im geschlossenen Zustand ist weitere Funktionalität möglich.
Bei geschlossener Tür lässt sich die Mikrowelle ein- und ausschalten.
Es existieren 3 Leistungsstufen der Mikrowellenleistung. Beim Einschalten soll die zuletzt aktive Leistungsstufe erhalten bleiben.
Beim Öffnen der Türe während des Betriebs wird das Gerät abgeschalten.
Während des Betriebs soll ein Wechsel der Leistungsstufe jederzeit durch Auswahl und Betätigung eines Schalters möglich sein.
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 44
StateflowÜbungsaufgabe: Mikrowellensteuerung
Lösungshilfe
Erstellen Sie jeweils einen Zustand Open und Closed für die beiden Türstellungen. Ein Wechsel soll durch das Event door erfolgen.
Erstellen Sie innerhalb von Closed die beiden Zustände Off und On. Ein Wechsel soll durch das Event switch erfolgen.
Erstellen Sie innerhalb On drei Zustände (Stufe1, Stufe2, Stufe3) für die drei Leistungsstufen. Die Leistungsstufe wird durch die externe Variable stufe ausgewählt, der Wechsel durch das Event change ausgelöst.
Denken Sie an die Möglichkeit einer Inner Transition.
Erstellen Sie nun alle Variablen und Events im Explorer und im umgebenden Simulink Modell.
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 45
StateflowÜbungsaufgabe: Zweipunkt-Regelung
Augabenstellung
Die Regelstrecke ist beschrieben durch:
Die möglichen Stellgrößen u betragen 0 oder +10. Regelstrategie: Bei einer Abweichung der Regelgröße y um mehr als 10% vom Sollwert w wird ein Schaltvorgang von 0 auf +10 bzw. von +10 auf 0 vorgenommen.
Der Regler arbeitet nur, wenn er durch eine externe variable freigebenfreigegeben wird.
Bei jedem 10. Schaltvorgang soll die Workspace-Variable zaehler um eins erhöht werden.
)1()1.01(
1
)(
)()(
sssu
sysF
Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink 46
StateflowÜbungsaufgabe: Zweipunkt-Regelung
Lösungshilfe
Erstellen Sie in Simulink die Regelstrecke mit Stellgröße u und Regelgröße y und stellen Sie beide in einem Scope grafisch dar.
Erstellen Sie ein Chart mit den Eingängen freigeben, Sollwert w und Regelgröße y. Geben Sie als Sollwert einen Sprung der Höhe 5 vor.
Erstellen Sie im Chart die Zustände blockiert und Freigabe. Ein Wechsel ist durch die boolsche Variable freigeben möglich. Erstellen Sie innerhalb von Freigabe die Zustände u0 und u10. Erstellen Sie die Bedingungen für Ein- und Ausschalten. Die Ausgabe u wird durch die Entry Actions der Zustände u0 und u10 verändert.
Lösen Sie bei jedem Einschalten das Event zaehlerevent aus. Erhöhen Sie in der During Action von Freigabe bei jedem 10ten Event zaehlerevent die Workspace Variable zaehler.
top related