Main Content

Überwachen der Diagrammaktivität mithilfe der Daten aktiver Zustände

Wenn Ihr Stateflow®-Diagramm Daten umfasst, die mit der Diagrammhierarchie korrelieren, können Sie Ihren Entwurf mithilfe der Daten aktiver Zustände vereinfachen. Durch Aktivierung der Daten aktiver Zustände haben Sie folgende Möglichkeiten:

  • Vermeiden manueller Datenaktualisierungen, die die Diagrammaktivität widerspiegeln.

  • Protokollieren und Überwachen der Diagrammaktivität im Simulation Data Inspector.

  • Verwenden von Diagrammaktivitätsdaten zur Regelung anderer Subsysteme.

  • Exportieren von Diagrammaktivitätsdaten in andere Simulink-Blöcke.

Beispielsweise bestimmt in diesem Modell einer Ampelanlage der aktive Zustand den Wert des Ausgangssignals color. Sie können den Entwurf des Diagramms vereinfachen, indem Sie Daten aktiver Zustände aktivieren. In diesem Fall kann das Stateflow-Diagramm die Farbe des Ampelsignals durch Tracking der Zustandsaktivität bereitstellen, sodass Sie nicht explizit den Wert von color aktualisieren müssen.

Wählen Sie zum Aktivieren von Daten aktiver Zustände einen zu überwachenden Zustand aus. Gehen Sie anschließend im Property Inspector wie folgt vor:

1. Wählen Sie Create output for monitoring.

2. Wählen Sie einen der folgenden Aktivitätstypen aus:

  • Self activity: Boolescher Wert, der angibt, ob der Zustand aktiv ist

  • Child activity: Aufzählungswert, der angibt, welcher untergeordnete Zustand aktiv ist

  • Leaf state activity: Aufzählungswert, der angibt, welcher Blatt-Zustand aktiv ist

3. Geben Sie den Datennamen (Data name) für das Symbol der Daten aktiver Zustände an.

4. Optional können Sie für Child activity oder Leaf state activity den Aufzählungsnamen (Enum name) für den Datentyp aktiver Zustände angeben.

Standardmäßig melden Stateflow-Diagramme die Zustandsaktivität als Ausgangsdaten an das Simulink-Modell. Verwenden Sie den Fensterbereich Symbols, um den Geltungsbereich eines Symbols der Daten aktiver Zustände in lokale Daten zu ändern.

Modellieren einer Ampelregelung

Dieses Beispiel verwendet Daten aktiver Zustände, um das Regelungssystem für ein Ampelpaar zu modellieren.

Innerhalb des Diagramms Traffic Controller verwalten zwei Unterdiagramme die Logik zur Regelung der Ampelanlage. Die Unterdiagramme weisen eine identische Hierarchie auf, die aus drei untergeordneten Zuständen besteht: Red, Yellow und Green. Die Ausgangsdaten Light1 und Light2 entsprechen den aktiven untergeordneten Zuständen in den Unterdiagrammen. Diese Signale:

  • Bestimmen die Phase der animierten Ampelanlage.

  • Können die Anzahl der an jeder Ampel wartenden Fahrzeuge beeinflussen.

  • Steuern ein Subsystem für den Sicherheits-Nachweis, das sicherstellt, dass die beiden Ampeln niemals gleichzeitig Grün zeigen.

Zum Anzeigen der Unterdiagramme innerhalb des Verkehrsregelungsdiagramms klicken Sie auf den Pfeil in der unteren linken Ecke des Diagramms.

Jedes Verkehrsregelungssystem durchläuft seine untergeordneten Zustände: von Red zu Green zu Yellow und wieder zu Red. Jeder Zustand entspricht einer Phase im Ampelanlagenzyklus. Die Ausgangssignale Light1 und Light2 geben an, welcher Zustand zu einem beliebigen Zeitpunkt aktiv ist.

Rotes Ampelsignal

Der Ampelanlagenzyklus beginnt, wenn der Zustand Red aktiv wird. Nach einer kurzen Verzögerung prüft das Regelungssystem, ob Fahrzeuge an der Kreuzung warten. Wenn mindestens ein Fahrzeug erkannt wird, oder nach Ablauf einer festgelegten Zeitspanne, fordert das Regelungssystem ein grünes Ampelsignal an, indem es greenLightRequest auf true setzt. Nach der Anforderung verbleibt das Regelungssystem für kurze Zeit im Zustand Red, bis es erkennt, dass die andere Ampel Rot zeigt. Anschließend geht das Regelungssystem in den Zustand Green über.

Grünes Ampelsignal

Wenn der Zustand Green aktiv wird, storniert das Regelungssystem die Anforderung nach einem grünen Ampelsignal, indem es greenLightRequest auf false setzt. Das Regelungssystem setzt greenLightLocked auf true, um zu verhindern, dass die andere Ampel auf Grün schaltet. Nach einer kurzen Verzögerung prüft das Regelungssystem, ob vom anderen Regelungssystem eine Anforderung nach einem grünen Ampelsignal vorliegt. Wenn es eine Anforderung empfängt, oder nach Ablauf einer festgelegten Zeitspanne, geht das Regelungssystem in den Zustand Yellow über.

Gelbes Ampelsignal

Wenn der Zustand Yellow inaktiv wird, setzt das Regelungssystem greenLightLocked auf „false“ und gibt damit an, dass die andere Ampel sicher auf Grün schalten kann. Das Regelungssystem verbleibt für eine festgelegte Zeitspanne im Zustand Yellow, bevor es in den Zustand Red übergeht. Anschließend beginnt der Ampelanlagenzyklus von vorn.

Timing der Ampelanlage

Das Timing des Ampelanlagenzyklus wird durch mehrere Parameter definiert. Zum Ändern des Timings der Ampelanlage doppelklicken Sie auf das Diagramm Traffic Controller und geben Sie im Dialogfenster neue Werte für folgende Parameter ein:

  • REDDELAY: Zeitspanne, bevor das Regelungssystem prüft, ob an der Kreuzung Fahrzeuge vorhanden sind. Dieser Wert ist zudem die minimale Zeitspanne, bevor die Ampel auf Grün schaltet, nachdem das Regelungssystem ein grünes Ampelsignal angefordert hat. Der Standardwert ist 6 Sekunden.

  • MAXREDDELAY: Gibt an, wie lange das Regelungssystem maximal nach Fahrzeugen sucht, bevor ein grünes Ampelsignal angefordert wird. Der Standardwert ist 360 Sekunden.

  • GREENDELAY: Gibt an, wie lange die Ampel maximal Grün zeigt. Der Standardwert ist 180 Sekunden.

  • MINGREENDELAY: Gibt an, wie lange die Ampel mindestens Grün zeigt. Der Standardwert ist 120 Sekunden.

  • YELLOWDELAY: Gibt an, wie lange die Ampel Gelb zeigt. Der Standardwert ist 15 Sekunden.

Untersuchung des Beispiels

  1. Öffnen Sie das Diagramm, indem Sie auf den Pfeil in der unteren linken Ecke klicken.

  2. Wählen Sie im Fensterbereich Symbols die Option greenLightRequested aus. Wählen Sie anschließend im Property Inspector unter Logging die Option Log signal data aus.

  3. Wiederholen Sie diesen Schritt für greenLightLocked, Light1 und Light2.

  4. Klicken Sie auf der Registerkarte Simulation auf Run.

  5. Klicken Sie auf der Registerkarte Simulation unter Review Results auf Data Inspector.

  6. Zeigen Sie im Simulation Data Inspector die protokollierten Signale entlang separater Achsen an. Die Booleschen Signale greenLightRequested und greenLightLocked werden als numerische Werte angezeigt: null oder eins. Die Zustandsaktivitätssignale Light1 und Light2 sind Aufzählungsdaten mit den Werten Green, Yellow, Red und None.

Zum Verfolgen der Diagrammaktivität während der Simulation können Sie die Zoom- und Cursor-Schaltflächen im Simulation Data Inspector verwenden. Im Nachfolgenden sind beispielsweise die wichtigsten Momente während der ersten 300 Sekunden der Simulation aufgeführt:

  • $t = 0$: Zu Beginn der Simulation zeigen beide Ampeln Rot. Light1 und Light2 sind Red, greenLightRequested ist false und greenLightLocked ist false.

  • $t = 6$: Nach 6 Sekunden – dem Standardwert für REDDELAY – warten Fahrzeuge in beiden Straßen, sodass beide Ampeln ein grünes Ampelsignal anfordern. Light1 und Light2 sind immer noch Red, greenLightRequested ist true und greenLightLocked ist false.

  • $t = 12$: Nach weiteren 6 Sekunden – dem Standardwert für REDDELAY – wird Ampel 1 grün, storniert die Anforderung eines grünen Ampelsignals und stellt greenLightLocked auf true. Anschließend fordert Ampel 2 ein grünes Ampelsignal an. Light1 ist Green, Light2 ist Red, greenLightRequested wird erst false und dann true, und greenLightLocked ist true.

  • $t = 132$: Nach 120 Sekunden – dem Standardwert für MINGREENDELAY – schaltet Ampel 1 auf Gelb. Light1 ist Yellow, Light2 ist Red, greenLightRequested ist true und greenLightLocked ist true.

  • $t = 147$: Nach 15 Sekunden – dem Standardwert für YELLOWDELAY – schaltet Ampel 1 auf Rot und setzt greenLightLocked auf false. Danach schaltet Ampel 2 auf Grün, storniert die Anforderung nach einem grünen Ampelsignal und stellt greenLightLocked auf true. Light1 ist Red, Light2 ist Green, greenLightRequested ist false und greenLightLocked wird erst false und dann true.

  • $t = 153$: Nach 6 Sekunden – dem Standardwert für REDDELAY – fordert Ampel 1 ein grünes Ampelsignal an. Light1 ist Red, Light2 ist Green, greenLightRequested ist true und greenLightLocked ist true.

  • $t = 267$: Nachdem Ampel 2 für 120 Sekunden lang grün ist – dem Standardwert für MINGREENDELAY –, schaltet Ampel 2 auf Gelb. Light1 ist Red, Light2 ist Yellow, greenLightRequested ist true und greenLightLocked ist true.

  • $t = 282$: Nach 15 Sekunden – dem Standardwert für YELLOWDELAY – schaltet Ampel 2 auf Rot und setzt greenLightLocked auf false. Danach schaltet Ampel 1 auf Grün, storniert die Anforderung nach einem grünen Ampelsignal und stellt greenLightLocked auf true. Light1 ist Green, Light2 ist Red, greenLightRequested ist false und greenLightLocked wird erst false und dann true.

  • $t = 288$: Nach 6 Sekunden – dem Standardwert für REDDELAY – fordert Ampel 2 ein grünes Ampelsignal an. Light1 ist Green, Light2 ist Red, greenLightRequested ist true und greenLightLocked ist true.

Der Zyklus wird wiederholt, bis die Simulation bei $t = 1000$ Sekunden endet.

Verwandte Themen