State Machine (macchina a stati)

Che cos’è una macchina a stati?

Una state machine (o finite state machine) è una rappresentazione di un sistema reattivo basato su eventi che passa da uno stato all’altro se viene soddisfatta la condizione che controlla il cambiamento. Tradizionalmente le state machine venivano utilizzate per descrivere i sistemi informatici, ma sono state ampliate per modellare una logica complessa in sistemi dinamici come aerei, automobili, robot e telefoni cellulari.

Tra gli esempi di operazioni contenenti logica complessa figurano:

  • Pianificazione di una sequenza di attività o passaggi per un sistema
  • Definizione della logica di rilevamento guasti, isolamento e ripristino
  • Supervisione del passaggio da una modalità di funzionamento all’altra

Esistono molti modi per esprimere una state machine, sebbene un approccio grafico sia quello più comunemente utilizzato. Un diagramma di transizioni di stato, noto anche come diagramma di stato, mostra un numero finito di stati con regole che controllano quando si verificano le transizioni da uno stato all’altro.

Ad esempio, è possibile utilizzare un diagramma di stato per rappresentare una versione semplificata del cambio automatico di un’auto. La state machine mostrata di seguito ha quattro stati operativi etichettati come first, second, third e fourth. Come gli ingranaggi che rappresentano, questi stati sono esclusivi, quindi è attivo solo uno stato alla volta. Questa state machine controlla la velocità dell’auto e cambia marcia quando la velocità supera la soglia prestabilita per la marcia in funzione.

Figura 1. Diagramma di stato di un sistema automatico di trasmissione ad ingranaggi modellato utilizzando Stateflow.

Esistono due tipi principali di diagrammi di stato:

  • Mealy: gli output della state machine dipendono non solo dagli stati, ma anche dagli input ricevuti dal sistema, rappresentati definendo gli output della macchina nelle transizioni come illustrato nella Figura 2
  • Moore: gli output della state machine dipendono solo dallo stato del sistema, rappresentato definendo gli output della macchina sugli stati, come illustrato nella Figura 3

Per ulteriori informazioni su queste semantiche, vedere Panoramica delle macchine di Mealy e Moore.

Per creare state machine che emulano un componente software complesso, gli elementi costitutivi di base dei diagrammi di stato non sono sufficienti. Per acquisire in modo efficiente dettagli complessi del sistema sono necessarie le seguenti funzionalità aggiuntive:

  • Gerarchia: presenta gli stati genitore e struttura ulteriormente il progetto
  • Parallelismo o ortogonalità: consente a un unico diagramma di includere più stati che operano in contemporanea
  • Trasmissione di eventi: consente lo scambio di informazioni tra due state machine o stati indipendenti

Quando queste capacità sono combinate con diagrammi di transizione di stato, le rappresentazioni sono chiamate statechart di Harel o semplicemente statechart.

Figura 4. Statechart di un sistema di sicurezza modellato utilizzando Stateflow.

Per ulteriori informazioni su queste funzionalità, vedere diagramma di stato e statechart.

State machine con Stateflow

Stateflow® è un ambiente di programmazione grafico basato sulle finite state machine. Con Stateflow è possibile iniziare con semplici diagrammi di stato sulla base dei quali realizzare degli statechart per modellare la logica complessa di sistemi dinamici.

È possibile usare MATLAB® per eseguire statechart standalone come oggetti MATLAB o Simulink® per simulare statechart come blocchi Simulink.

Per ulteriori informazioni sulla modellazione e l’esecuzione di grafici Stateflow in MATLAB o Simulink, vedere Modellazione di finite state machine.

Per saperne di più sulla modellazione di state machine, vedere Stateflow e Simulink.

Vedere anche: control logic, state diagram, control systems, embedded systems