Vereinfachen von Stateflow-Diagrammen durch Integration aktiver Zustände
Dieses Beispiel zeigt, wie aktive Zustandsdaten die Gestaltung einiger Stateflow®-Diagramme vereinfachen können, da Sie keine Daten pflegen müssen, die in hohem Maße mit der Diagrammhierarchie korrelieren. Wenn Sie aktive Zustandsdaten aktivieren, meldet Stateflow die Aktivität des Zustands über einen Ausgabeport an Simulink® oder als lokale Daten in Ihrem Diagramm. Dieses Beispiel zeigt, wie das Design eines Stateflow-Diagramms durch das Hinzufügen von aktiven Zustandsausgangsdaten vereinfacht werden kann. Weitere Informationen finden Sie unter Monitor State Activity Through Active State Data.
Im Legacy-Modell old_sf_car
verfolgt das Stateflow-Diagramm shift_logic die Aktivität des untergeordneten Zustands in gear_state
, indem es den Wert der Ausgabedaten gear
aktualisiert.
Durch die Einbeziehung aktiver Zustandsdaten vermeidet das Modell sf_car
manuelle Datenaktualisierungen, die die Diagrammaktivität widerspiegeln. Stattdessen gibt das Diagramm die Aktivität des untergeordneten Zustands automatisch über die aktive Zustandsausgabe aus.
Ändern des Modells
Um das Design des Modells old_sf_car
zu vereinfachen, sollten Daten, die in hohem Maße mit der Diagrammhierarchie korrelieren, eliminiert werden und eine automatische Überwachung der Aktivität des untergeordneten Zustands in gear_state
ermöglicht werden.
Schritt 1: Eliminieren der manuellen Nachverfolgung von Zustandsaktivitäten
Öffnen Sie im Modell
old_sf_car
das Diagrammshift_logic
.Um das Fenster Symbols zu öffnen, wählen Sie auf der Registerkarte Modeling die Option Symbols Pane aus.
Löschen Sie in jedem Teilzustand von
gear_state
die Eingabeaktion, die der Ausgabedatenvariablengear
einen Wert zuweist.Rechtsklicken Sie im Symbols-Bereich auf die Ausgabevariable
gear
und wählen SieDelete
aus.
Schritt 2: Aktivieren der aktiven Zustandsausgabe
Öffnen Sie den Property Inspector. Wählen Sie auf der Registerkarte Modeling die Option Property Inspector aus.
Wählen Sie im Stateflow-Editor den Zustand
gear_state
aus.Aktivieren Sie im Property Inspector das Kontrollkästchen Create output for monitoring und wählen Sie
Child activity
.Geben Sie im Feld Data name den Namen
gear
der Daten des aktiven Zustands ein.Geben Sie im Feld Enum name den Namen
gearType
des Aufzählungsdatentyps für die Daten des aktiven Zustands ein.
Schritt 3: Verbinden des Signals mit Simulink-Blöcken
Fügen Sie im Simulink-Modell einen Cast To Double-Block hinzu. Dieser Block konvertiert die Aufzählungsausgabe aus dem Stateflow-Diagramm in ein Signal vom Typ
double
. Weitere Informationen finden Sie unter Data Type Conversion (Simulink).Verbinden Sie das Ausgabesignal
gear
aus dem Diagrammshift_logic
mit dem Cast To Double-Block.Verbinden Sie das Ausgabesignal vom Cast To Double-Block mit dem Transmission-Subsystem.
Fügen Sie einen Memory (Simulink)-Block hinzu. Dieser Block verhindert eine algebraische Schleife zwischen dem Stateflow-Diagramm und dem Subsystem für die Schwellenwertberechnung.
Stellen Sie eine zweite Verbindung vom Ausgabesignal des Cast To Double-Blocks zum Memory-Block her.
Verbinden Sie die Ausgabe des Memory-Blocks mit dem Subsystem für die Schwellenwertberechnung.
Anzeigen der Simulationsergebnisse
Das Ausgabesignal gear
ist ein von Stateflow verwalteter Aufzählungstyp. Sie können das Ausgabesignal des aktiven Zustands während der Simulation anzeigen, indem Sie das Diagramm mit einem Scope-Block verbinden. Die Namen der aufgezählten Werte stimmen mit den Namen der Teilzustände in gear_state
überein. Der zusätzliche aufgezählte Wert None
gibt die Zeitschritte an, in denen kein untergeordnetes Element aktiv ist.
Siehe auch
Data Type Conversion (Simulink) | Memory (Simulink)