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:
Fügen Sie dem Stateflow-Diagramm ein Ereignis hinzu. Weitere Informationen finden Sie unter Definieren von Ereignissen in einem Diagramm.
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 |
---|---|
| 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. |
| 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. |
| 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“.
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“.
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.
Sie können zwei Eingangssignale mit unterschiedlichen Datentypen wie boolean
und double
nicht multiplexen.