Creazione di diagrammi di flusso in Stateflow
Un diagramma di flusso di Stateflow® è un costrutto grafico che conforma modelli logici come alberi decisionali e loop iterativi. I diagrammi di flusso rappresentano una logica combinatoria in cui un risultato non dipende dai risultati precedenti. I diagrammi di flusso si costruiscono combinando solo i collegamenti connettivi e le transizioni. I collegamenti forniscono i rami decisionali tra i diversi percorsi di transizione. L'esecuzione di un diagramma di flusso inizia da una transizione predefinita e finisce in un collegamento terminale, ossia un collegamento che non ha transizioni in uscita. Per ulteriori informazioni, vedere Combine Transitions and Junctions to Create Branching Paths.
Nota
Se un grafico Stateflow contiene solo un diagramma di flusso, il grafico valuta il diagramma di flusso ogni volta che si attiva. Al contrario, il grafico valuta qualsiasi diagramma di flusso all'interno di uno stato solo durante l'entrata nello stato.
Una buona pratica consiste nel racchiudere i diagrammi di flusso in funzioni grafiche per creare una logica modulare e riutilizzabile, che può essere richiamata in qualsiasi punto del grafico. Per ulteriori informazioni sulle funzioni grafiche, vedere Reuse Logic Patterns by Defining Graphical Functions.
Ad esempio, questo diagramma di flusso modella una semplice logica if
-else
:
Il diagramma di flusso modella questo codice:
if u > 0 y = 1; else y = 0; end
Grafica di un diagramma di flusso
È possibile disegnare i diagrammi di flusso utilizzando i collegamenti connettivi come punti di diramazione tra i percorsi di transizione alternati. Disegnare un diagramma di flusso:
Aprire un nuovo grafico.
Aggiungere una transizione predefinita nel punto di collegamento in cui inizia l'esecuzione del diagramma di flusso. Dalla tavolozza degli oggetti, fare clic sull'icona di transizione predefinita
. Quindi, nell'area di disegno del grafico, fare clic sulla posizione della transizione. L'Editor di Stateflow aggiunge un nuovo collegamento connettivo come destinazione della transizione.
Per aggiungere una nuova transizione, puntare sul bordo di un collegamento. Quindi, fare clic e trascinare lontano dal collegamento. L'Editor di Stateflow fornisce spunti grafici che consentono di aggiungere un collegamento o uno stato.
Per posizionare un collegamento alla fine della transizione, fare clic sul segno circolare.
Per collegare la transizione a un collegamento esistente, trascinare il puntatore sulla destinazione desiderata.
Per aggiungere un collegamento connettivo al grafico, nella tavolozza degli oggetti fare clic sull'icona Junction (Collegamento)
. Quindi, sull'area di disegno del grafico, fare clic sulla posizione del nuovo collegamento.
Ripetere i passaggi precedenti secondo le proprie esigenze.
Etichettare le transizioni come descritto in Define Actions in a Transition.
Migliori pratiche per la creazione di diagrammi di flusso
Seguire queste migliori pratiche per la creazione di diagrammi di flusso.
Utilizzo di una sola transizione predefinita
I diagrammi di flusso hanno un unico punto di ingresso.
Fornitura di un solo collegamento terminale
Più collegamenti terminali riducono la leggibilità di un diagramma di flusso.
Convergenza di tutti i percorsi di transizione verso il collegamento terminale
L'esecuzione di un diagramma di flusso raggiunge sempre il punto terminale.
Fornitura di una transizione incondizionata da ogni collegamento, ad eccezione del collegamento terminale
Se durante la simulazione si verifica un tracciamento a ritroso involontario, viene visualizzato un messaggio di avvertimento.
Per controllare il livello di azione diagnostica per il tracciamento a ritroso involontario, aprire la finestra di dialogo Configuration Parameters (Parametri di configurazione) e nel riquadroDiagnostics > Stateflow, impostare il parametro Unexpected backtracking su none
, warning
o error
. L'impostazione predefinita è warning
. Per ulteriori informazioni, vedere Unexpected backtracking (Simulink).
Il tracciamento a ritroso involontario può verificarsi in un collegamento in queste condizioni:
Il collegamento non presenta un percorso di transizione incondizionato verso uno stato o un collegamento terminale.
Diversi percorsi di transizione conducono a quel collegamento.
Elaborazione degli aggiornamenti tramite le azioni di condizione e non di transizione
I diagrammi di flusso testano le transizioni, ma non le eseguono. Di conseguenza, i diagrammi di flusso non eseguono mai le azioni di transizione. Inoltre, nei grafici che utilizzano MATLAB® come linguaggio di azione, l'utilizzo di un'azione di transizione in una funzione grafica produce un errore nel tempo di compilazione.