Stateflow

Funzionalità chiave

  • Ambiente di modellazione, componenti grafici e motore di simulazione per la modellazione e la simulazione di logica complessa
  • Semantica di esecuzione deterministica con gerarchia, parallelismo, operatori temporali ed eventi
  • Diagrammi a stati, tabelle di transizione di stato e matrici di transizione di stato che rappresentano macchine a stati finiti
  • Diagrammi di flusso, funzioni MATLAB e tabelle della verità per la rappresentazione degli algoritmi
  • Animazione di diagrammi di stato, logging di attività di stato, registrazione dati e debug integrato per l'analisi del progetto e il rilevamento di errori run-time
  • Check statici e di run-time per problemi ciclici, inconsistenza sugli stati, violazioni dell’intervallo di rappresentazione dei dati e delle condizioni di overflow.
  • Tipologie di Macchine a stati finiti molteplici: moderne e canoniche (Mealy e Moore)

Primi passi con Stateflow
Costruire e simulare una macchina a stati.

Progettazione della logica

Stateflow offre interfacce grafiche e tabulari per la modellazione della logica di sistema utilizzando macchine a stati. In una macchina a stati, si modellano le modalità operative del sistema come stati e si rappresenta la logica per passare da una modalità all'altra usando transizioni e giunzioni. È possibile modellare i diversi componenti del sistema come stati che vengono eseguiti in modo esclusivo o in parallelo. Stateflow consente di gestire la complessità della progettazione organizzando gerarchicamente gli oggetti, le funzioni e i componenti del diagramma di stato.

In Stateflow è possibile rappresentare graficamente la logica combinatoria con diagrammi di flusso e/o in formato tabulare con tabelle della verità.

La progettazione della logica comprende la definizione di condizioni da verificare (guard conditions) e le successive azioni da eseguire. Stateflow consente di definire le condizioni e le azioni in C o in MATLAB®. È possibile gestire i dati usati nelle condizioni e nelle azioni anche da Simulink® Model Explorer. Prima di eseguire la progettazione, Stateflow analizza il modello e comunica la possibilità di incoerenze di stato, di dati ed eventi inutilizzati e di transizioni non valide.

Stateflow diagram defining the logic for a boiler temperature control system.
Diagramma Stateflow che definisce la logica di un sistema di controllo temperatura di una caldaia. Il diagramma usa funzioni grafiche (destra) per implementare gli algoritmi di utility chiamati dal sistema di riscaldamento (sinistra).

Progettazione grafica della logica

Stateflow fornisce un editor e oggetti grafici per il disegno di macchine a stati e diagrammi di flusso. Per creare una macchina a stati si selezionano stati, transizioni e giunzioni da una paletta grafica e li si trascina nell'editor Stateflow. È anche possibile creare funzioni usando le notazioni del diagramma di flusso (data flow) , i sottosistemi Simulink, MATLAB e le tabelle della verità. Il diagramma Stateflow può essere specificato come un ibrido delle macchine Mealy e Moore con funzionalità estesa, come una macchina Mealy oppure una macchina Moore.

È possibile creare diagrammi di flusso disegnando transizioni collegate a giunzioni e procedere all'esecuzione sulla base della logica condizionale. Pattern Wizard consente di creare schemi di flusso logici di comune utilizzo. I diagrammi di flusso possono essere inseriti in funzioni grafiche per l'uso in diverse posizioni del diagramma di stato e in altri diagrammi di stato dello stesso modello. I diagrammi di flusso possono essere utilizzati per progettare la logica di transizione tra gli stati.

Stateflow diagram that uses a graphical function generated by the pattern wizard.
Diagramma Stateflow (sinistra) che utilizza una funzione grafica (destra) generata da Pattern Wizard (centro).

Stateflow Editor fornisce controlli al momento della modifica per identificare il posizionamento non corretto di oggetti e transizioni non valide.

Stateflow Editor with a model of a cooling system.
Stateflow Editor con un modello di sistema di raffreddamento. Gli stati con i contorni sovrapposti sono evidenziati in rosso.

Progettazione di logica con tabelle

Le tabelle di transizione di stato in Stateflow offrono un ambiente strutturato per la modellazione delle macchine a stati. Per creare una macchina a stati si aggiungono righe per gli stati e colonne per le transizioni tra gli stati. Le tabelle di transizione di stato aiutano a creare macchine a stati fornendo menu a discesa per i nomi di stato, completamento automatico della sintassi della macchina a stati finiti e altri controlli disponibili al momento della modifica. Prima di eseguire un modello, si possono eseguire test diagnostici statici per rilevare gli errori di sintassi, transizioni incomplete e stati non raggiungibili.

La vista della matrice di transizione degli stati generata dalle tabelle di transizione degli stati consente di identificare velocemente le condizioni e i possibili stati di destinazione a partire da un particolare stato.

Le tabelle della verità in Stateflow consentono di modellare una logica che non richieda la manutenzione di uno stato nelle successive esecuzioni (niente gestione della memoria di stato). Per creare una tabella delle verità si inseriscono le condizioni da controllare seguite dalle combinazioni dei risultati di tali condizioni. Per le diverse combinazioni di risultati possono poi essere inserite delle azioni. Dopo aver creato la tabella della verità, è possibile eseguire controlli diagnostici statici per identificare le condizioni sovra-specificate e quelle sotto-specificate.

Truth table implementing the logic for selecting a valid sensor reading in a fault-detection algorithm, and an automatically generated graphical representation of the truth table.
Sinistra: tabella della verità con implementazione della logica per la selezione di una lettura di sensore valida in un algoritmo di identificazione guasti. Destra: rappresentazione grafica generata automaticamente della tabella della verità.

Integrazione di componenti e pianificazione degli algoritmi

Dopo aver creato i componenti in Stateflow, è possibile integrarli con altri componenti per creare il proprio algoritmo per macchina a stati. I componenti Stateflow possono contenere funzioni MATLAB e Simulink, codice C personalizzato, funzioni grafiche e tabelle della verità. Nell'algoritmo è possibile pianificare l'esecuzione di componenti e funzioni usando la logica basata sul tempo e sulle condizioni.

Ogni componente Stateflow può essere sviluppato, eseguito e verificato in modo indipendente, consentendo a più utenti di lavorare contemporaneamente su diverse parti dell'algoritmo.

Simulink model  incorporating a Stateflow diagram that uses graphical functions, MATLAB functions, and truth tables.
Modello Simulink (sinistra) che incorpora un diagramma Stateflow (destra). Il diagramma Stateflow modella la logica usata in un ascensore e include funzioni grafiche, funzioni MATLAB e tabelle della verità.

Integrazione dei componenti nella progettazione

È possibile riutilizzare un componente fra più diagrammi e modelli facendo clic con il tasto destro del mouse, convertendolo in un subchart atomico e posizionandolo in una libreria. Per riusare il componente, è sufficiente trascinarlo dalla libreria e posizionarlo sul diagramma o modello. Quando si aggiorna un componente nella libreria, tutte le istanze del componente vengono aggiornate automaticamente. È possibile organizzare gerarchicamente i componenti e le funzioni per rappresentare il sistema in maniera concisa e accurata.

Riutilizzare gli stati più volte in un diagramma
Creare e riutilizzare i componenti in Stateflow per modellazione su larga scala.

Pianificazione degli algoritmi

È possibile modellare logica condizionale e temporale in Stateflow allo scopo di chiamare funzioni Simulink e funzioni MATLAB. Gli eventi basati sulla logica modellata in Stateflow possono essere inviati a Simulink per attivare sottosistemi che reagiscono a una chiamata di funzione (function call subsystem) o a sistemi abilitati e triggerati.

Stateflow fornisce operatori basati su eventi e sul tempo (before, after, at e every) che consentono di specificare la logica di transizione in base al tempo trascorso o al numero di eventi conteggiati , senza utilizzare timer e contatori (temporal logic) .

Modellazione di un sistema di interruzione del lancio
Modellare un sistema di interruzione del lancio che riporti a terra un velivolo in caso di anomalia o guasto durante la fase di lancio.

Simulazione di un modello e analisi dei risultati

È possibile analizzare il comportamento del sistema simulando il modello. È possibile eseguire scenari what-if riavviando la simulazione da qualunque stato salvato e analizzandone la reazione a diverse impostazioni e configurazioni.

Simulazione di un modello

In Stateflow è possibile visualizzare il comportamento del sistema durante la simulazione utilizzando l'animazione del diagramma di stato per evidenziare gli stati e le transizioni attive nel modello.

Le capacità di debug di Stateflow controllano completamente la simulazione Si possono impostare breakpoint, monitorare i valori dei dati e scorrere le varie funzioni nei diagrammi di stato. Dalla finestra debugger di Stateflow, è possibile controllare l'esecuzione della simulazione e visualizzare le chiamate e lo stato di esecuzione del diagramma.

Il debugger Stateflow rileva gli errori di run-time, comprese le incoerenze di stato, le violazioni dei data range e i potenziali loop infiniti (senza ritorno).

Analisi dei risultati

Durante la simulazione è possibile visualizzare i risultati della simulazione come segue:

  • Visualizzare stati e dati con display e scope Simulink
  • Visualizzare i dati registrati con Simulation Data Inspector
  • Creare display personalizzati con MATLAB

In alternativa, è possibile registrare diagrammi e dati di attività di stato per la post-elaborazione in MATLAB.

Simulation data visualization options in Stateflow: Simulink Data Inspector for comparing signals, a custom MATLAB interface for analyzing data, and the Simulink Signal Selector for comparing states.
Opzioni di visualizzazione dati di simulazione in Stateflow. Sinistra in alto: Simulink Data Inspector per il confronto di segnali specifici; sinistra in basso: interfaccia MATLAB personalizzata per l'analisi dei dati; destra: Simulink Signal Selector per il confronto di stati specifici.

Validazione della progettazione e generazione del codice

Utilizzando Stateflow e altri prodotti Simulink è possibile validare la progettazione in base ai requisiti e generare il codice per l'implementazione su sistema embedded.

Con Simulink Verification and Validation è possibile mappare i requisiti direttamente sugli oggetti Stateflow, verificare la conformità agli standard internazionali di sicurezza (safety) e acquisire la metrica di copertura del modello.

Con Simulink Design Verifier è possibile rilevare errori di progettazione (analisi formale) e generare vettori di test per la copertura completa del modello.

Usando i prodotti di generazione codice aggiuntivi è possibile generare il codice C e C++, HDL o PLC direttamente dal diagramma di stato.

Designing Supervisory Control for Safety-Critical Systems

Visualizza webinar