Contenuto principale

Modellazione di una macchina a stati finiti

Una macchina a stati finiti rappresenta sistemi reattivi e basati sugli eventi che transitano tra diverse modalità operative quando vengono soddisfatte determinate condizioni. Ad esempio, è possibile modellare la trasmissione di un'auto che cambia marcia man mano che si accelera. Poiché una macchina a stati finiti è in grado di rappresentare sistemi con più stati e trasmissioni, è comunemente utilizzata in campi quali l'ingegneria del software, la robotica e le telecomunicazioni. È possibile modellare una macchina a stati finiti utilizzando gli stati, le transizioni e i dati presenti in Stateflow®.

Ad esempio, in questo semplice grafico Stateflow, la trasmissione di un'auto transita da uno stato di marcia a un altro.

Chart animation showing a finite state machine.

Nello sviluppo di software, è possibile utilizzare una macchina a stati finiti per gestire le interfacce utente, la progettazione dei protocolli e l'automazione dei workflow. Nella robotica, le macchine a stati finiti controllano il comportamento del robot, consentendo transizioni perfette tra attività quali la navigazione, l'elusione di ostacoli e la manipolazione di oggetti. Nelle telecomunicazioni, si modellano i protocolli di comunicazione e il funzionamento delle reti. È possibile utilizzare Stateflow per progettare, simulare e risolvere i problemi relativi alle prestazioni delle macchine a stati finiti in vari ambiti.

Tipi di blocchi Stateflow

Per rappresentare le relazioni tra gli input, gli output e le modalità operative di una macchina a stati finiti, è possibile utilizzare questi blocchi Stateflow per creare grafici di transizione dello stato, tabelle di transizione di stato e tabelle della verità.

Blocco Stateflow

Caso d'utilizzo

Chart

Rappresentazione grafica di una macchina a stati finiti. All'interno di un grafico Stateflow, si utilizzano gli stati e le transizioni per costruire un sistema logico sequenziale. Gli stati corrispondono alle modalità operative e le transizioni rappresentano i percorsi tra gli stati. Per ulteriori informazioni, vedere Rappresentazione delle modalità operative mediante l'utilizzo degli stati e Transition Between Operating Modes.

State Transition Table

Rappresentazione tabellare di una macchina a stati finiti per la logica modale sequenziale. Utilizzare un blocco State Transition Table per modellare una macchina a stati in un formato compatto che richieda una manutenzione minima degli oggetti grafici. Per ulteriori informazioni, vedere Model Finite State Machines Using State Transition Tables.

Truth Table

Rappresentazione tabellare della progettazione della logica combinatoria. È possibile utilizzare i blocchi Truth Table per modellare il processo decisionale per il rilevamento e la gestione dei guasti e il cambio di modalità. Per ulteriori informazioni, vedere Use Truth Tables to Model Combinatorial Logic.

Implementazione dei blocchi Stateflow

Per creare un grafico Stateflow che modelli una macchina a stati finiti, seguire questi passaggi:

  1. Avviare MATLAB®. Nella barra degli strumenti di MATLAB, nella scheda Home, fare clic su Simulink.

    The Simulink Start Page.

  2. Nella pagina iniziale, nella sezione Stateflow, fare clic sul modello Blank Chart. Aprire l'Editor di Stateflow facendo doppio clic sul blocco Chart.

  3. Per ciascuna modalità operativa del sistema, disegnare uno stato e implementare le azioni aggiungendo le etichette degli stati.

  4. Disegnare le transizioni per rappresentare la direzione della logica di flusso tra gli stati e aggiungere le etichette di transizione per implementare le condizioni di transizione. Utilizzare una transizione predefinita per contrassegnare il primo stato attivo.

  5. Se il sistema presenta input o output oppure dipende da variabili di stato, aggiungere i dati di input, di output e locali. Per ulteriori informazioni, vedere Aggiunta di dati di Stateflow.

  6. Se il sistema reagisce a eventi di attivazione o deve attivare azioni nel grafico o in altri blocchi del modello, aggiungere eventi di input, di output o locali. Per ulteriori informazioni, vedere Use Events to Execute Charts.

  7. Se il grafico presenta azioni di stato o condizioni di transizione complesse, è possibile aggiungere funzioni riutilizzabili. È possibile selezionare tra funzioni grafiche, funzioni di MATLAB, funzioni di Simulink o tabelle della verità. In alternativa, è possibile scrivere codice C o C++ personalizzato da integrare nel grafico. Per ulteriori informazioni, vedere Reuse MATLAB Code by Defining MATLAB Functions e Call Simulink Functions in States and Transitions.

  8. Collegare il grafico ad altri blocchi nel modello di Simulink utilizzando le porte di input e di output.

  9. Fare clic su Run per simulare il modello. L'Editor di Stateflow anima il grafico durante la simulazione evidenziando gli stati e le transizioni attivi.

I grafici Stateflow e i blocchi State Transition Table possono utilizzare sia MATLAB che C come linguaggio di azione. I blocchi Truth Table utilizzano esclusivamente MATLAB come linguaggio di azione. Per ulteriori informazioni, vedere Differences Between MATLAB and C as Action Language Syntax.

Per un tutorial che illustra come creare un grafico Stateflow, vedere Creazione di grafici Stateflow.

Riferimenti

[1] Harel, David. "Statecharts: A Visual Formalism for Complex Systems." Science of Computer Programming 8, no.3 (June 1987): 231-74.

[2] Hatley, Derek J. and Imtiaz A. Pirbhai. Strategies for Real-Time System Specification. New York, NY: Dorset House Publishing, 1988.

Vedi anche

Funzioni

Blocchi

Argomenti