Inhalt 10. Stateflow-Grundlagen 11. Übungen Stateflow
10. Stateflow-Grundlagen
Was ist Stateflow? Mit Stateflow lassen sich innerhalb von Simulink Zustandsautomaten und Flussdiagramme abbilden. Ein Stateflow-Element wird wie ein gewöhnlicher Simulink-Block aus dem Library Browser in ein Modell eingefügt. Ein Stateflow beinhaltet Zustände, Zustandsübergänge, Ein- und Ausgänge, lokale Variablen, sowie Events und Trigger! 10-1
Stateflow-Editor (R13) Mit einem Doppelklick auf einen SF-Block öffnet sich der Stateflow-Editor SF Name und Pfad im Modell Parser (syntaktische Korrektheit) Explorer (Schnittstellendefinition) neue Elemente einfügen (Zustand, default-transition, junction) Modellierungsfläche Debugger 10-2
Stateflow-Editor (R14) Mit einem Doppelklick auf einen SF-Block öffnet sich der Stateflow-Editor SF Name und Pfad im Modell Parser (syntaktische Korrektheit) Explorer (Schnittstellendefinition) neue Elemente einfügen (Zustand, default-transition, junction) Modellierungsfläche Debugger 10-3
Stateflow-Elemente Zustände können in den unterschiedlichsten Reihenfolgen und Verknüpfungen erstellt werden! Ein Zustand kann weitere Zustände enthalten! Ein Zustand kann eine Aktion ausführen: bei Betreten des Zustandes (entry) wenn der Zustand aktiv ist (during) beim Verlassen des Zustandes (exit) 10-4
Stateflow-Elemente Transitionen sind Zustandsübergänge, die mit Bedingungen versehen werden können. Die default-transition ist der Übergang, der mit dem Start des Stateflow ausgeführt wird! Transitionsbedingungen werden in eckigen Klammer, Transitionsaktivitäten in geschweiften Klammern an / in die Transition geschrieben! 10-5
Stateflow-Elemente Verknüpfungen: && UND ODER! NICHT Bei allen Stateflow-Transitionen gilt die 12-Uhr-Regel bzgl. der Prüfung deren Bedingungen! Transitionen werden im Uhrzeigersinn bearbeitet! In diesem Beispiel würde immer Zustand 3 betreten! neu ab R14: 10-6
Stateflow-Elemente Eine junction ist eine Verzweigung der Transition, die zu einem Zustand führt, welche als funktionales oder strukturierendes Element eingesetzt werden kann! Nach einer junction mit mehr als einer Ausgangstransition, müssen mindestens n-1 Transitionen mit einer Bedingung versehen werden! 10-7
Stateflow-Explorer (R13) Im Stateflow-Explorer werden alle Ein- und Ausgänge des Stateflow zu Simulink, sowie alle lokalen Größen definiert! Daten können für einen gesamten Stateflow oder einen Zustand lokal definiert werden! Schnittstellentyp Matlab-Kopplung Startwert lokaler Größen 10-8
Stateflow-Explorer (R14) = Model Explorer Im Stateflow-Explorer werden alle Ein- und Ausgänge des Stateflow zu Simulink, sowie alle lokalen Größen definiert! Daten können für einen gesamten Stateflow oder einen Zustand lokal definiert werden! Schnittstellentyp weitere Optionen: Matlab-Kopplung bzgl. Werteübergabe des WorkSpace Init-Werte für lokale Variablen 10-9
Stateflow-Explorer Beim Start des Stateflow-Parsers werden nicht definierte Größen identifiziert und ein Vorschlag zur Übernahme in den Explorer generiert! Mausklick verändert Eigenschaften Definierte Ein- und Ausgänge werden direkt im Simulink-Block dargestellt! 10-10
Stateflow-Explorer Neben Daten können auch Events definiert werden, die zur Ablaufsteuerung benutzt werden können. Events werden ohne Klammer an einen Transition geschrieben und können je nach Einstellung mit fallenden, steigenden oder beiden Flanken zutreffen! Flanken werden durch den Nulldurchgang definiert! 10-11
Stateflow Flußgraphen sind spezielle Stateflowdiagramme ohne Zustände Es können logische Abläufe einfach modelliert werden: while-schleifen if-konstrukte etc. Zur besseren Lesbarkeit, sollten Flussdiagramme immer einen gemeinsamen Endpunkt haben. 10-12
vordefinierte Transitionen Zustandsübergänge (Transitionen) können auch durch vordefinierte Bedingungen erfüllt werden: after(100, tick) = nach 100 Aufrufen des Stateflowchart true before(100, tick) = true solange nicht 100 Aufrufe des Stateflow send = Senden eines Events an einen Zustand in = Abfrage eines aktiven Zustandes change = Event bei Änderung einer Variablen 10-13
Stateflow-Einstellungen (kann tlw. auch in Simulink zutreffen) Vorsicht bei boolschen Stateflow-Eingängen! By default, Simulink detects but does not signal an error when it detects that double signals are connected to blocks that prefer boolean input. This ensures compatibility with models created by earlier versions of Simulink that support only double data type. Hintergrund: Stateflow wird als sogenannte S-Function behandelt, die per default double-schnittstellen besitzt! Abwärtskompatibilität verschiedenen Versionen wird so gewährleistet! Lösung (nur eine möglich!): a) Simulation Parameters b) Stateflow Properties 10-14
Was gibt es noch? Matlab-Kopplung über Matlab-Operator ml. möglich {E = B * ml.x;} = x ist eine WorkSpaceVariable {E = ml( sin(x) );} In jedem Stateflow ist die Variable t definiert, die die aktuelle Systemzeit enthält! Diese Variable kann verwendet werden, ohne sie explizit im Stateflow-Explorer zu definieren! 10-15
11. Übungen Stateflow (Rechnerraum)
Stateflow kennenlernen Öffnen Sie ein neues Simulink-Modell und platzieren ein Stateflow darin. Wie werden die einzelnen Elemente (z.b. Zustand, default-transition) platziert und verschoben (z.b. Größenänderung)? Wie werden Zustände umbenannt und Aktionen in Zuständen definiert? Wie werden Zustände über Transitionen verknüpft? Wie kann man Bedingungen an Transitionen schreiben? Wie funktioniert der Stateflow-Parser? Wie werden Größen und Schnittstellen im Exploerer definiert, welche Einstellungen gibt es? Erstellen und Simulieren Sie das Zustandsmodell einer einfachen Lampe, - benutzen Sie keine funktionalen Eingänge, sondern arbeiten Sie mit Events - als Schaltersimulation nutzen Sie einen Pulsgenerator - den Ausgang Strom führen Sie in einen Scope und kontrollieren damit die Funktionsweise ihres Zustandsautomaten 11-1
Stateflow-Übungen 11-2 1 8. Modellieren Sie eine Beamer-Steuerung in Stateflow, der Beamer besitzt zwei mechanische Kippschalter (Eingänge) und 2 Ansteuerausgänge Eingänge des Zustandsautomaten - Power (an / aus) - Funktion (an / aus) Ausgänge des Zustandautomaten - Lüfter (an / aus) - Lampe (an / aus) Die Steuerung soll folgende Eigenschaften erfüllen: - ohne Power = an, darf kein Ausgang aktiv sein - bei Funktion = an, sollen Lampe und Lüfter sofort aktiviert werden - bei Funktion = aus, soll die Lampe sofort und der Lüfter 5 Sekunden später abgeschalten werden - während der shutdown-phase kann der Funktionsschalter erneut aktiviert werden - bei Not-Aus über Power = aus während des Betriebes, soll der Lüfter noch 3 Sekunden laufen (eingebauter Kondensator hält Energie) Weisen Sie die Funktion durch einen Testaufbau in Simulink nach!
Stateflow-Übungen 2 9. Erstellen Sie ein Stateflow-Modell einer Verkehrsampel mit folgenden Eigenschaften. Eingänge Steuerung: 4 Kontaktschleifen Fahrzeuge, 8 Betätigungstaster Fußgänger Ausgänge Steuerung: 4 Steuersignale Fußgänger (rot / grün), 4 Steuersignale Fahrzeuge (rot / gelb / grün), 8 Steuersignale LED Anforderung Fußgänger Die Fußgängerampeln A/C und B/D schalten immer synchron Die Fahrzeugampeln 1/3 und 2/4 schalten immer synchron Die Ampeln A/B und 1/2 sind nie gleichzeitig grün Die Anforderung einer Fußgängerampel wird an der anfordernden Bedienstelle durch eine leuchtende und an allen beteiligten Ampeln durch eine blinkende LED angezeigt, bis die Anforderung abgearbeitet wird Die Fußgängerampel schaltet für 10 Sekunden auf grün, 5 Sekunden vor dem Schalten wird der Fahrzeugverkehr gestoppt Eine Anforderung (egal ob Fahrzeug oder Fußgänger) wird bearbeitet, wenn mindestens 20 Sekunden nach dem letzten Schaltvorgang vergangen sind Die Fahrzeugampel hat immer eine gelb-phase über 3 Sekunden 11-3
Stateflow-Übungen Bestimmen Sie eine geeignete Bennennung der Ein- und Ausgänge anhand der folgenden Skizze: Strasse 4 -> Fußgänger A Fußgänger D Strasse 1-> <- Strasse 3 Fußgänger B Fußgänger C Strasse 2 -> Um die Aufgabe nicht zu komplex zu gestalten, gehen Sie davon aus, dass die Fahrzeuge nur geradeaus fahren und nicht abbiegen. 11-4
Hinweis Um den Nachweis eines funktionierenden Stateflow-Automaten zu erbringen, ist es möglich eine Stimulationsumgebung in Simulink zu entwerfen. Dabei können Generatoren (z.b. STEP) oder Lookup-Tabellen zum Einsatz kommen. 11-5