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.
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 dati | Descrizione |
---|---|---|
Attività autonoma | Booleani | Lo stato è attivo? |
Attività secondaria | Enumerazione | Quale stato secondario è attivo? |
Attività stato leaf | Enumerazione | Quale stato leaf è attivo? |
Per abilitare i dati sullo stato attivo, selezionare uno stato da monitorare. Poi, in Property Inspector:
Selezionare la casella di controllo Create output for monitoring.
Selezionare una modalità di attività dall'elenco a discesa.
Inserire il simbolo Data name per i dati sullo stato attivo.
(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.
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.
Parametro | Valore preimpostato | Descrizione |
---|---|---|
REDDELAY | 6 secondi | Durata 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. |
MAXREDDELAY | 360 secondi | Durata massima di tempo in cui il controller verifica la presenza di auto prima di richiedere la luce verde. |
GREENDELAY | 180 secondi | Durata massima di tempo in cui il semaforo rimane verde. |
MINGREENDELAY | 120 secondi | Durata minima di tempo in cui il semaforo rimane verde. |
YELLOWDELAY | 15 secondi | Durata di tempo in cui il semaforo rimane giallo. |
Analisi dell'esempio
Abilitare la registrazione di
greenLightRequested
,greenLightLocked
,Light1
eLight2
. Nel riquadro Symbols, selezionare ciascun simbolo. Quindi, nella sezione Property Inspector, sotto Logging, selezionare Log signal data.Nella scheda Simulation, fare clic su Run
.
Nella scheda Simulation, sotto Review Results, fare clic su Data Inspector
.
In Simulation Data Inspector (Controllo dei dati di simulazione), visualizzare i segnali registrati in assi separati. I segnali booleani
greenLightRequested
egreenLightLocked
appaiono come valori numerici di zero o uno. I segnali di attività di statoLight1
eLight2
sono mostrati come dati enumerati con valori diGreen
,Yellow
,Red
eNone
.
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.
Tempo | Descrizione | Light 1 | Light2 | greenLightRequested | greenLightLocked |
---|---|---|---|---|---|
t = 0 | All'inizio della simulazione, entrambi i semafori sono rossi. | Red | Red | false | false |
t = 6 | Dopo 6 secondi (REDDELAY ), ci sono automobili in attesa su entrambe le strade. Entrambi i semafori richiedono il verde impostando greenLightRequested = true . | Red | Red | true | false |
t = 12 | Dopo altri 6 secondi (
| Green | Red | false , quindi true | true |
t = 132 | Dopo 120 secondi ( | Yellow | Red | true | true |
t = 147 | Dopo 15 secondi (
| Red | Green | false | false , quindi true |
t = 153 | Dopo 6 secondi ( | Red | Green | true | true |
t = 267 | La luce 2 diventa gialla 120 secondi ( | Red | Yellow | true | true |
t = 282 | Dopo 15 secondi (
| Green | Red | false | false , quindi true |
t = 288 | Dopo 6 secondi ( | Green | Red | true | true |
Il ciclo si ripete finché la simulazione non termina a t = 1000 secondi.