Hauptinhalt

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Anzeige der Unterschiede zwischen Stateflow-Nachrichten, -Ereignissen und -Daten

In diesem Beispiel wird das Verhalten von Nachrichten, Ereignissen und Daten in Stateflow® verglichen.

Senderdiagramme

Dieses Modell hat drei Senderdiagramme: DataSender, EventSender und MessageSender Jedes Senderdiagramm hat einen Zustand. In der Eingabeaktion des Zustands weisen die Diagramme den Daten einen Wert zu, senden ein Funktionsaufrufereignis oder senden eine Nachricht.

Empfängerdiagramme

Für jedes der Senderdiagramme gibt es ein entsprechendes Empfängerdiagramm. Jedes Empfängerdiagramm hat ein Zustandsdiagramm mit den Zuständen A0, A1, A2 und A3. Das implizite Ereignis after(3,sec) löst den Übergang von A0 zu A1 aus. Die Daten, Ereignisse oder Nachrichten aus dem entsprechenden Senderdiagramm überwachen die Übergänge zwischen A1, A2 und A3.

Ausgabe im Scope-Block

Bei jedem Empfängerdiagramm ist die Ausgabe des aktiven Zustands aktiviert und mit einem Scope-Block verbunden. Der Scope-Block zeigt, welche Zustände in jedem Zeitschritt aktiv sind. Diese Ausgabe hebt den Unterschied im Verhalten zwischen Ausgabedaten, Ereignissen und Nachrichten hervor.

Datenverhalten

Das DataSender-Diagramm weist den Ausgabedaten M, die als Eingabe mit dem DataReceiver-Diagramm verbunden sind, den Wert 1 zu.

Das DataReceiver-Diagramm wird einmal bei jedem Zeitschritt ausgeführt. Zu Beginn der Simulation ist der Zustand A0 aktiv. Zum Zeitpunkt t=3 erfolgt der Übergang von A0 zu A1. Zum Zeitpunkt t=4 wird im Diagramm geprüft, ob M gleich 1 ist. Diese Bedingung ist wahr, sodass das Diagramm von A1 zu A2 wechselt. Zum Zeitpunkt t=5 entspricht M immer noch 1, sodass das Diagramm von A2 zu A3 übergeht. Im Scope-Block sehen Sie, dass DataReceiver dreimal den Zustand wechselt.

Nachdem Daten ein Wert zugewiesen wurde, behalten sie diesen Wert während der gesamten Simulation bei. Daher geht DataReceiver jedes Mal, wenn es den Zustand [M == 1] bewertet, in einen neuen Zustand über.

Verhalten von Ereignissen

Das EventSender-Diagramm sendet mit dem Befehl send(M) ein Funktionsaufruf-Ausgangsereignis zur Aktivierung des EventReceiver-Diagramms.

Das EventReceiver-Diagramm wird nur ausgeführt, wenn das Eingangsereignis M das Diagramm aktiviert. Zu Beginn der Simulation ist der Zustand A0 aktiv. Der Übergang von A0 zu A1 basiert auf der absoluten Zeitlogik und ist zum Zeitpunkt t=0 nicht gültig. A0 bleibt aktiv und das Diagramm kehrt in den Ruhezustand zurück. Da EventSender das Ereignis M nur einmal sendet, wird EventReceiver nicht erneut aktiviert. Im Scope-Block sehen Sie, dass EventReceiver nie den Zustand A0 verlässt.

Ereignisse bleiben nicht über Zeitschritte hinweg gültig, sodass das empfangende Diagramm nur eine einzige Chance hat, auf das Ereignis zu reagieren. Wenn EventSender das Ereignis sendet, ist EventReceiver nicht bereit, darauf zu reagieren. Die Möglichkeit für EventReceiver, als Reaktion auf das Ereignis den Übergang zu vollziehen, ist nicht mehr vorhanden.

Verhalten von Nachrichten

Das MessageSender-Diagramm sendet mit der Syntax send(M) eine Nachricht über den Ausgangsnachricht-Port. Die Nachricht wird in die Warteschlange für eingehende Nachrichten des MessageReceiver-Diagramms gestellt. Die Nachricht wartet in der Warteschlange, bis MessageReceiver sie auswertet.

Das MessageReceiver-Diagramm wird einmal bei jedem Zeitschritt ausgeführt. Zu Beginn der Simulation ist der Zustand A0 aktiv. Zum Zeitpunkt t=3 erfolgt der Übergang von A0 zu A1. Zum Zeitpunkt t=4 stellt das Diagramm fest, dass M in der Warteschlange vorhanden ist, sodass der Übergang zu A2 erfolgt. Am Ende des Zeitschritts entfernt das Diagramm M aus der Warteschlange. Zum Zeitpunkt t=5 befindet sich keine Nachricht in der Warteschlange, sodass das Diagramm nicht zu A3 wechselt. A2 bleibt der aktive Zustand. Im Scope-Block sehen Sie, dass MessageReceiver den Zustand nur zweimal ändert.

Im Gegensatz zu Ereignissen werden Nachrichten in eine Warteschlange gestellt. Das Empfangsdiagramm kann jederzeit nach dem Senden auf eine Nachricht antworten. Im Gegensatz zu Daten behalten Nachrichten nicht unbegrenzt ihre Gültigkeit. Die Nachricht wird am Ende des Zeitschritts zerstört.

Siehe auch

Themen