Main Content

Monitoraggio dell’attività del grafico tramite l’utilizzo dei dati sullo stato attivo

Se il grafico Stateflow® include dati altamente correlati alla gerarchia del grafico, è possibile semplificare il progetto utilizzando i dati sullo stato attivo. Abilitando i dati sullo stato attivo, è possibile:

  • Evitare di aggiornare manualmente i dati che riflettono l'attività del grafico.

  • Registrare e monitorare l'attività del grafico in Simulation Data Inspector (Controllo dei dati di simulazione).

  • Utilizzare i dati dell'attività del grafico per controllare altri sottosistemi.

  • Esportare i dati dell'attività del grafico in altri blocchi Simulink®.

Per ulteriori informazioni, vedere Creazione di una gerarchia per gestire la complessità di un sistema.

Dati sullo stato attivo

L'utilizzo dell'output dei dati sullo stato attivo può semplificare la progettazione di alcuni grafici Stateflow. Ad esempio, in questo modello di semaforo, lo stato attivo determina il valore del simbolo color. Quando vengono attivati i dati sullo stato attivo, Stateflow può fornire il colore di un semaforo monitorando l'attività dello stato. L'aggiornamento esplicito di color non è più necessario, quindi è possibile eliminare questo simbolo e semplificare il design del grafico.

Chart modeling a traffic signal, with states called Red, Yellow, and Green. The value of the symbol color indicates which state is active.

Stateflow fornisce i dati sullo stato attivo attraverso una porta di output a Simulink o come dati locali al tuo grafico. La seguente tabella elenca le diverse modalità di dati sullo stato attivo disponibili.

Modalità dell’attivitàTipo di datiDescrizione
Attività autonomaBooleaniLo stato è attivo?
Attività secondariaEnumerazioneQuale stato secondario è attivo?
Attività stato leafEnumerazioneQuale stato leaf è attivo?

Per abilitare i dati sullo stato attivo, selezionare uno stato da monitorare. Poi, in Property Inspector:

  1. Selezionare la casella di controllo Create output for monitoring.

  2. Selezionare una modalità di attività dall'elenco a discesa.

  3. Inserire il simbolo Data name per i dati sullo stato attivo.

  4. (Opzionale) Per le attività dello stato secondario o leaf, inserire Enum name per il tipo di dati sullo stato attivo.

Per impostazione predefinita, Stateflow riporta l'attività dello stato come dati di output. Per cambiare l'ambito di un simbolo di dati sullo stato attivo in dati locali, utilizzare il riquadro Symbols.

Esempio di dati sullo stato attivo

Questo esempio utilizza i dati sullo stato attivo per modellare il sistema controller di una coppia di semafori.

All'interno del grafico Controller del traffico, due grafici secondari paralleli gestiscono la logica che controlla i semafori. I grafici secondari hanno una gerarchia identica composta da tre stati secondari: Red, Yellow e Green. I dati di output Light1 e Light2 corrispondono agli stati secondari attivi nei grafici secondari. Questi segnali:

  • Determinano la fase dei semafori animati.

  • Contribuiscono al numero di automobili in attesa a ogni semaforo.

  • Gestiscono un sottosistema di asserzione di sicurezza che verifica che i due semafori non siano mai contemporaneamente verdi.

Per vedere i grafici secondari all'interno del grafico Controller del traffico, fare clic sulla freccia nell'angolo in basso a sinistra del grafico.

Comportamento dei grafici secondari Controller del traffico

Ogni controller del traffico passa ciclicamente attraverso i suoi stati secondari, da Red a Green, a Yellow e di nuovo a Red. Ogni stato corrisponde a una fase del ciclo del semaforo. I segnali di output Light1 e Light2 indicano quale stato è attivo in un determinato momento.

Chart modeling a traffic signal. The chart uses active state data to indicate which state is active.

Luce rossa

Quando lo stato Red diventa attivo, inizia il ciclo del semaforo. Dopo un breve intervallo, il controller verifica la presenza di automobili in attesa all'incrocio. Se rileva almeno un'automobile o se trascorre un periodo di tempo prestabilito, il controller richiede la luce verde impostando greenLightRequest su true. Dopo aver effettuato la richiesta, il controller rimane nello stato Red per un breve periodo di tempo finché non rileva che l'altro semaforo è rosso. A questo punto il controller effettua la transizione a Green.

Luce verde

Quando lo stato Green diventa attivo, il controller annulla la richiesta di luce verde impostando greenLightRequest su false. Il controller imposta greenLightLocked su true, impedendo all'altro semaforo di diventare verde. Dopo un po' di tempo, il controller verifica la presenza di una richiesta di luce verde da parte dell'altro controller. Se riceve una richiesta o se trascorre un periodo di tempo prestabilito, il controller passa allo stato Yellow.

Luce gialla

Prima di passare allo stato Red, il controller rimane nello stato Yellow per un periodo di tempo prestabilito. Quando lo stato Yellow diventa inattivo, il controller imposta greenLightLocked su false, indicando che l'altro semaforo può diventare verde. A questo punto il ciclo del semaforo riprende.

Tempistica dei semafori

La tempistica del ciclo dei semafori è definita da diversi parametri. Per modificare i valori di questi parametri, fare doppio clic sul grafico Traffic Controller e inserire i nuovi valori nella finestra di dialogo Parametri del blocco.

ParametroValore preimpostatoDescrizione
REDDELAY6 secondiDurata di tempo prima che il controller inizi a verificare la presenza di automobili all'incrocio. Inoltre, è il tempo minimo prima che il semaforo diventi verde dopo che il controller ha richiesto il verde.
MAXREDDELAY360 secondiDurata massima di tempo in cui il controller verifica la presenza di auto prima di richiedere la luce verde.
GREENDELAY180 secondiDurata massima di tempo in cui il semaforo rimane verde.
MINGREENDELAY120 secondiDurata minima di tempo in cui il semaforo rimane verde.
YELLOWDELAY15 secondiDurata di tempo in cui il semaforo rimane giallo.

Analisi dell'esempio

  1. Abilitare la registrazione di greenLightRequested, greenLightLocked, Light1 e Light2. Nel riquadro Symbols, selezionare ciascun simbolo. Quindi, nella sezione Property Inspector, sotto Logging, selezionare Log signal data.

  2. Nella scheda Simulation, fare clic su Run .

  3. Nella scheda Simulation, sotto Review Results, fare clic su Data Inspector .

  4. In Simulation Data Inspector (Controllo dei dati di simulazione), visualizzare i segnali registrati in assi separati. I segnali booleani greenLightRequested e greenLightLocked appaiono come valori numerici di zero o uno. I segnali di attività di stato Light1 e Light2 sono mostrati come dati enumerati con valori di Green, Yellow, Red e None.

Simulation Data Inspector showing the output of the chart.

Per tracciare l'attività del grafico durante la simulazione, è possibile utilizzare i pulsanti di zoom e cursore in Simulation Data Inspector (Controllo dei dati di simulazione). Ad esempio, la seguente tabella riporta i dettagli dell'attività durante i primi 300 secondi della simulazione.

TempoDescrizioneLight 1Light2greenLightRequestedgreenLightLocked
t = 0All'inizio della simulazione, entrambi i semafori sono rossi.RedRedfalsefalse
t = 6Dopo 6 secondi (REDDELAY), ci sono automobili in attesa su entrambe le strade. Entrambi i semafori richiedono il verde impostando greenLightRequested = true.RedRedtruefalse
t = 12

Dopo altri 6 secondi (REDDELAY):

  • La luce 1 diventa verde, impostando greenLightLocked = true e greenLightRequested = false.

  • La luce 2 richiede una luce verde impostando greenLightRequested = true.

GreenRedfalse, quindi truetrue
t = 132

Dopo 120 secondi (MINGREENDELAY), la luce 1 diventa gialla.

YellowRedtruetrue
t = 147

Dopo 15 secondi (YELLOWDELAY):

  • La luce 1 diventa rossa, impostando greenLightLocked = false.

  • La luce 2 diventa verde, impostando greenLightLocked = true e greenLightRequested = false.

RedGreenfalsefalse, quindi true
t = 153

Dopo 6 secondi (REDDELAY), la luce 1 richiede una luce verde impostando greenLightRequested = true.

RedGreentruetrue
t = 267

La luce 2 diventa gialla 120 secondi (MINGREENDELAY) dopo essere diventata verde.

RedYellowtruetrue
t = 282

Dopo 15 secondi (YELLOWDELAY):

  • La luce 2 diventa rossa, impostando greenLightLocked = false.

  • La luce 1 diventa verde, impostando greenLightLocked = true e greenLightRequested = false.

GreenRedfalsefalse, quindi true
t = 288

Dopo 6 secondi (REDDELAY), la luce 2 richiede una luce verde impostando greenLightRequested = true.

GreenRedtruetrue

Il ciclo si ripete finché la simulazione non termina a t = 1000 secondi.

Argomenti complementari