Hauptinhalt

Aktivieren von Stateflow-Diagrammen durch Absenden von Eingangsereignissen

Sie können ein Stateflow®-Diagramm erstellen, das nur aktiviert wird, wenn das Simulink®-Modell ein Eingangsereignis an das Diagramm sendet. Nachdem das Diagramm aktiviert wurde, führt es seine Aktionen aus.

Eingangsereignisse können von Simulink-Modellen, Simulink-Funktionen oder anderen Stateflow-Diagrammen generiert werden.

Definieren eines Eingangsereignisses

Um ein Eingangsereignis zu definieren:

  1. Fügen Sie dem Stateflow-Diagramm ein Ereignis hinzu. Weitere Informationen finden Sie unter Definieren von Ereignissen in einem Diagramm.

  2. Setzen Sie im Property Inspector, die Eigenschaft Scope des Ereignisses auf Input from Simulink. Diese Einstellung erstellt einen Eingangsport auf dem Chart-Block.

  3. Um ein kantenausgelöstes Ereignis festzulegen, setzen Sie Trigger auf Rising, Falling oder Either. Um einen Funktionsaufruf festzulegen, setzen Sie Trigger auf Function call.

Sie können ein Steuersignal, auch bekannt als Kantenauslöser, oder einen Funktionsaufruf aus einem Simulink-Block verwenden. Sie können in einem Stateflow-Diagramm nicht sowohl kantenausgelöste Eingangsereignisse als auch Funktionsaufruf-Eingangsereignisse verwenden. Wenn Sie beide Eingangsereignisse zugleich verwenden, führt dies zu einem Kompilierfehler.

Aktivieren eines Stateflow-Diagramms mithilfe von Kantenauslösern

Kantenausgelöste Eingangsereignisse aktivieren das Stateflow-Diagramm, wenn das Steuersignal von positiv zu negativ, von negativ zu positiv oder zwischen negativ und positiv wechselt. Kantenausgelöste Ereignisse werden während des Zeitschritts ausgeführt, in dem sich das Steuersignal ändert. Die Einstellung der Eigenschaft Trigger bestimmt, wann das Diagramm aktiviert wird:

Einstellung der Eigenschaft „Trigger“

Beschreibung

Rising

Das Diagramm wird aktiviert, wenn sich das Steuersignal entweder von null oder von einem negativen Wert in einen positiven Wert ändert.

Falling

Das Diagramm wird aktiviert, wenn sich das Steuersignal von einem positiven Wert entweder in null oder in einen negativen Wert ändert.

Either

Das Diagramm wird aktiviert, wenn das Steuersignal bei der Änderung in eine der beiden Richtungen null durchläuft.

Um das kantenausgelöste Ereignis zu aktivieren, muss der Wert des Steuersignals gleich oder größer null sein. Ein Signal, das sich von -1 zu 1 oder von 0 zu 2 ändert, ist beispielsweise ein gültiger Auslöser bei ansteigender Kante. Ein Signal, das sich von 1 zu 2 ändert, ist kein gültiger Auslöser bei ansteigender Kante.

Auslöser mit mehreren ansteigenden Kanten können nur auftreten, wenn das Steuersignal einen Unterschied von mehr als einem Zeitschritt zwischen zwei steigenden oder zwei fallenden Signalwerten aufweist. Mit anderen Worten: Ein Diagramm behandelt ein Signal von -1 zu 0 zu 1 in aufeinanderfolgenden Zeitschritten als einen einzigen Auslöser bei ansteigender Kante, nicht als zwei Auslöser bei ansteigender Kante. Weitere Informationen finden Sie unter Using Triggered Subsystems (Simulink).

Verwendungsszenarien für kantenausgelöste Eingangsereignisse

Mit einem kantenausgelösten Eingangsereignis können Sie ein Diagramm aktivieren, wenn Ihr Modell eine regelmäßige Diagrammausführung erfordert. In diesem Modell wird das Edge to Function-Diagramm beispielsweise durch ein kantenausgelöstes Eingangsereignis in regelmäßigen Abständen aktiviert.

A model that uses edge-triggered events to activate charts. It contains two charts named Edge to Function and Loop Scheduler. A 1-second clock periodically activates the Edge to Function chart, which in turn uses an event named call to activate the Loop Scheduler chart. The Loop Scheduler chart inputs from and outputs to a subsystem named A1.

Mehrere kantenausgelöste Eingangsereignisse

Sie können ein kantenausgelöstes Eingangsereignis verwenden, um ein Diagramm mehrmals im selben Zeitschritt zu aktivieren. Bei jedem Zeitschritt überprüft Stateflow die Eingangsereignisse in aufsteigender Reihenfolge der Portnummern. Das Diagramm wird daraufhin bei jedem gültigen Ereignis aufgeweckt. Wenn mehrere Kanten im selben Zeitschritt auftreten, wird das Diagramm mehr als einmal in diesem Zeitschritt aktiviert.

Aktivieren eines Stateflow-Diagramms mithilfe von Funktionsaufrufen

Ein Funktionsaufruf-Eingangsereignis führt dazu, dass ein Stateflow-Diagramm während dem aktuellen Zeitschritt der Simulation ausgeführt wird.

Verwendungsszenarien für Funktionsaufruf-Eingangsereignisse

Mit einem Funktionsaufruf-Eingangsereignis können Sie in Diagramm aktivieren, wenn Ihr Modell zum selben Zeitschritt wie der Funktionsaufruf Zugriff auf die Ausgangsdaten des Diagramms benötigt. In diesem Modell aktiviert beispielsweise ein Funktionsaufruf-Eingangsereignis das Diagramm Looping Scheduler.

A model that uses edge-triggered events to activate charts. It contains two charts named Edge to Function and Loop Scheduler. A 1-second clock periodically activates the Edge to Function chart, which in turn uses an event named call to activate the Loop Scheduler chart. The Loop Scheduler chart inputs from and outputs to a subsystem named A1.

Mehrere Funktionsaufruf-Eingangsereignisse

Bei Funktionsaufruf-Eingangsereignissen ist nur ein einziges Auslöserereignis vorhanden. Der Ereignis-Caller ruft das Diagramm explizit auf und führt es aus.

Unterstützte Datentypen für Eingangsereignisse

Wenn mehrere Eingangsereignisse für einen Auslöserport vorhanden sind, müssen alle Signale denselben Datentyp aufweisen. Wenn Sie Signale mit verschiedenen Datentypen als Eingangsereignisse verwenden, tritt während der Simulation ein Fehler auf. Sie können beispielsweise einen Mux-Block verwenden, um zwei Eingangssignale des Typs double zu kombinieren und dieses Signal zum Auslösen von Eingangsereignissen in einem Diagramm zu verwenden.

Simulink model that uses two signals of type double as input events to a Stateflow chart.

Sie können einen Mux-Block hingegen nicht verwenden, um zwei Eingangssignale mit unterschiedlichen Datentypen wie boolean und double zu kombinieren.

Simulink model that uses a signal of type boolean and a signal of type double as input events to a Stateflow chart. This configuration produces a run-time error.

Siehe auch

Themen