46
Lehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink Stateflow Stateflow: Eine grafische Erweiterung zu SIMULINK

Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

Embed Size (px)

Citation preview

Page 1: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

Lehrstuhl für Elektrische AntriebssystemeSimulation mit Matlab / Simulink

Stateflow

Stateflow:

Eine grafische Erweiterung zu SIMULINK

Page 2: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 3: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 4: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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)

Page 5: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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)

Page 6: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 7: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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.

Page 8: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 9: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 10: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 11: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 12: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 13: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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.

Page 14: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 15: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 16: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 17: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 18: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 19: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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)

Page 20: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 21: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 22: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 23: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 24: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 25: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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)

Page 26: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 27: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 28: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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.

Page 29: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 30: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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.

Page 31: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 32: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 33: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 34: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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)

Page 35: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 36: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 37: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 38: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 39: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 40: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 41: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 42: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 43: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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.

Page 44: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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.

Page 45: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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

Page 46: Stateflow: Eine grafische Erweiterung zu SIMULINK · PDF fileLehrstuhl für Elektrische Antriebssysteme Simulation mit Matlab / Simulink 2 Stateflow Was ist Stateflow? Modellierung

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.