Hauptinhalt

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

Aktivieren eines Stateflow-Diagramms durch Absenden von Eingangsereignissen

Simulink®-Modelle umfassen Stateflow®-Diagramme, die jedoch nicht unbedingt über die gesamte Dauer der Modellausführung hinweg aktiv sind. Eine Methode, ein Diagramm zu aktivieren, ist über den Empfang eines Eingangsereignisses von Simulink. Wenn ein Stateflow-Diagramm aktiv wird, führt es seine Aktionen aus.

Ein Eingangsereignis tritt außerhalb eines Stateflow-Diagramms auf. Eingangsereignisse können von Simulink-Modellen, Simulink-Funktionen oder einem anderen Stateflow-Diagramm 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. Ein einzelner Auslöser-Port wird am oberen Rand des Stateflow-Blocks im Simulink-Modell angezeigt.

Ein Eingangsereignis kann durch eine Änderung in einem Steuersignal oder einen Funktionsaufruf von einem Simulink-Block ein Stateflow-Diagramm aktivieren. Die Änderung bei einem Steuersignal ist ebenfalls als Kantenauslöser bekannt. 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

Ein kantenausgelöstes Eingangsereignis führt dazu, dass ein Stateflow-Diagramm während dem aktuellen Zeitschritt der Simulation ausgeführt wird. Bei diesem Eingangsereignis-Typ kann eine Änderung im Steuersignal als Auslöser fungieren.

Um ein Funktionsaufruf-Eingangsereignis festzulegen, setzen Sie die Eigenschaft Trigger auf Function call.

Kantenauslöser-Typ

Beschreibung

Rising

Auslöser bei ansteigender Kante. Das Diagramm wird aktiviert, wenn sich das Steuersignal entweder von null oder von einem negativen Wert in einen positiven Wert ändert.

Falling

Auslöser bei absteigender Kante. Das Diagramm wird aktiviert, wenn sich das Steuersignal von einem positiven Wert entweder in null oder in einen negativen Wert ändert.

Either

Auslöser bei ansteigender oder absteigender Kante. Das Diagramm wird aktiviert, wenn das Steuersignal bei der Änderung in eine der beiden Richtungen null durchläuft.

In jedem Fall muss der Wert des Steuersignals gleich null sein oder null durchlaufen, um ein gültiger Kantenauslöser zu sein. Ein Signal, das sich von -1 zu 1 ä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. Ein Signal, das sich von 0 zu 2 ändert, ist ein gültiger Auslöser bei ansteigender Kante.

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 aktiviert beispielsweise ein kantenausgelöstes Eingangsereignis in regelmäßigen Intervallen das Diagramm „Edge to Function“.

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.

Verhalten mehrerer kantenausgelöster Eingangsereignisse

Bei jedem Zeitschritt überprüft Stateflow die Eingangsereignisse in aufsteigender Reihenfolge der Portnummern. Das Diagramm wird daraufhin bei jedem gültigen Ereignis aufgeweckt. Bei kantenausgelösten Eingangsereignissen können mehrere Kanten beim selben Zeitschritt auftreten, wodurch das Diagramm beim selben Zeitschritt mehrmals aufgeweckt wird.

Aktivieren eines Stateflow-Diagramms durch Verwenden 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.

Verhalten mehrerer 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.

Verknüpfung von Eingangsereignissen mit Steuersignalen

Wenn Sie eines oder mehrere Eingangsereignisse in einem Diagramm definieren, erscheint am oberen Rand des Diagramm-Blocks ein einziger Auslöserport. Mehrere externe Simulink-Blöcke können die Eingangsereignisse über einen Vektor aus Signalen, der mit dem Auslöserport verbunden ist, auslösen. Die Eigenschaft Port eines Eingangsereignisses gibt den Index des Steuersignal-Vektors an, der mit dem Auslöserport verbunden ist.

Standardmäßig werden Port-Werte in der Reihenfolge, in der Sie die Eingangsereignisse hinzufügen, angezeigt. Um diese Zuweisungen zu ändern, modifizieren Sie die Port-Eigenschaft der Ereignisse. Wenn Sie die Port-Eigenschaft eines Eingangsereignisses ändern, werden die Port-Werte der verbleibenden Eingangsereignisse automatisch neu nummeriert.

Für Eingangsereignisse zulässige Datentypen

Um mehrere Eingangsereignisse für einen Auslöserport zu verwenden, 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 zwei Eingangssignale mit dem Typ double multiplexen, um diese als Eingangsereignisse für ein Diagramm zu verwenden.

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

Sie können zwei Eingangssignale mit unterschiedlichen Datentypen wie boolean und double nicht multiplexen.

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