Sei sulla pagina 1di 4

STATEFLOW

Un esempio applica
tivo

Intr oduzione
La teoria delle macchine agli stati finiti stata sviluppata come un approccio
al progetto di sistemi logici deterministici guidati da eventi. Una macchina
agli stati finiti descrive un sistema in
termini di stati e transizioni, dove lo
stato che attivo viene determinato dal
verificarsi di un evento sotto certe condizioni. I diagrammi delle transizioni di
stato sono rappresentazioni grafiche
basate su questo approccio.
Nel 1983 il dottor David Harel, del
Weizmann Institute of Science in Israele, present una versione modificata dei
diagrammi delle transizioni di stato
chiamati statechart.
Gli statechart forniscono molti importanti miglioramenti rispetto ai diagrammi delle transizioni di stato, come la
gestione della gerarchia, del parallelismo, delle giunzioni e della storia.
Stateflow incorpora i benefici sia dei
diagrammi delle transizioni di stato sia
degli statechart e vi aggiunge molte
innovazioni come la gestione dei diagrammi di flusso e la generazione efficiente di codice C. Queste caratteristiche rendono Stateflow ideale per lo sviluppo di sistemi di controllo embedded
nel campo automobilistico cos come in
quello aerospaziale e in applicazioni che
riguardano le telecomunicazioni.

Il flusso di progetto di in Stateflow tipicamente coinvolge alcuni passi fondamentali:


"Creare un modello Simulink
"Creare un diagramma Stateflow
"Definire gli stati e le transizioni
riguardanti la logica del modello
"Simulazione del sistema
"Generare il codice C equivalente
Per illustrare questo processo useremo
un esempio che riguarda un sistema che
tutti noi abbiamo sotto gli occhi quotidianamente e il cui funzionamento non
ha necessit di commenti: un mouse.
1. Cr ear e un modello Simulink
Poich Simulink ci fornisce un mezzo
per creare i nostri modelli che incorporino dei comportamenti guidati da
eventi, il primo passo da compiere
quello di creare lambiente esterno al
nostro modello della logica di funzionamento. Quando lanciamo Stateflow si
apre un modello Simulink che contiene
un blocco Stateflow vuoto.
A questo punto dobbiamo quindi pensare a quello che circonda la logica del
nostro mouse: sappiamo che vi sono
almeno due bottoni e una pallina che
legge il movimento. (Figura 1)
Una coppia di switch che commutano
due costanti (zero e uno) ci offre il mezzo per definire i bottoni del mouse,
Info@Teoresi News & Notes Settembre 1998

21

mentre lunione di uno switch e di un


sottosistema (verde) che simula il movimento della pallina ci consente di modellare il comportamento del sistema di
puntamento. Abbiamo, inoltre, necessit di un paio di uscite grafiche per
tracciare il movimento e di unuscita
codificata che ci informa sullo stato interno del mouse in modo che sia possibile comprendere quali siano le reali
azioni intraprese da un ipotetico utente di un computer. Una volta che il
modello sia costruito in questo modo
abbiamo la possibilit di simulare il
comportamento di un utilizzatore di un

Figura 1

22

Figura 2

Info@Teoresi News & Notes Settembre 1998

mouse che preme un bottone (evento),


che muove il puntatore (dato in entrata) e che vede un risultato di queste
azioni sul video (dato in uscita).
2. Cr ear e un diagramma Stateflow
Stateflow fornisce un ambiente grafico
di modellazione nel quale possibile
creare il diagramma degli stati e delle
transizioni in maniera interattiva. Il
primo passo da compiere riguarda lindividuazione degli stati del sistema.
Dalla pratica sappiamo che un mouse
pu essere inattivo (non si muove e nessun tasto viene premuto), in movimento, sta selezionando un oggetto (premendo il tasto sinistro), sta esplorando
le propriet di un oggetto (premendo il
tasto destro) oppure sta trascinando
qualche cosa per poi lasciarlo cadere in
unaltra posizione del video. Tutte le
altre situazioni possiamo, per semplicit, pensare che siano errate. (Figura 2)
Il successivo problema da risolvere
quello di stabilire quali eventi spostano
il fuoco da uno stato ad un altro e come
i dati in ingresso e in uscita devono essere gestiti. Molto importante decidere
quale sia lo stato che viene attivato nel
momento in cui si avvia il sistema, in
altre parole, quale la transizione di
default.
Per esempio, proviamo a modellare il
comportamento logico del nostro
mouse cominciando ad immaginare soltanto, per semplicit, come possiamo
passare dallo stato inattivo a quello di
selezione e quindi da questo verso quello di drag ed infine a quello di drop.
Da questultimo stato poi possibile
transitare verso lo stato inattivo o verso
quello in movimento. (Figura 3)

Sappiamo che la pressione del tasto sinistro, gi definito nel modello Simulink,
scatena un evento (Sinistro) che ci porta
nello stato Select. Se a questo punto il
sistema sente che il puntatore (la pallina) si sta muovendo (il dato Muove
assume un valore uguale ad uno), transiteremo nello stato Drag; a questo
punto il rilascio del tasto Sinistro ci
porta nello stato Drop. Se il mouse
ancora in movimento lo stato di arrivo
sar Movimento, mentre se nel frattempo (o anche dopo che si andati
nello stato Movimento) il puntatore si
fermato, andremo nello stato Inattivo.
Naturalmente qualche definizione pu
sembrare mancante a proposito della
determinazione dellappropriato comportamento dellevento Sinistro; in
effetti, dobbiamo dire che levento
Sinistro (come anche altri) viene intercettato dal sistema sia sulla rampa di
salita che su quella di discesa. Vale a
dire che consideriamo un evento di tipo
Sinistro come generato da Simulink e
correttamente ricevuto da Stateflow sia
quando il tasto viene premuto (switch
portato sulla posizione corrispondente
alla costante uno), sia quando il tasto
viene rilasciato. Per fare questo ci si
avvale di unapplicazione a corredo di
Stateflow che viene chiamata Explorer.
Lultimo compito che ci manca quello
che riguarda la definizione del codice di
riconoscimento degli stati, il quale ha il
compito di informare il sistema esterno
Simulink su quale sia il comportamento
della logica del nostro mouse, in modo
che il nostro ipotetico computer sia in
grado di interpretare correttamente i dati
di posizione e di movimento che provengono dalla logica.

Figura 3

Figura 4

Una volta definiti gli stati, gli eventi, i


dati e il diagramma che li lega possiamo finalmente simulare il comportamento del nostro sistema per mezzo di
unapplicazione di Stateflow che esegue
il cosiddetto consistency checking
(Parser).
Il sistema completo di tutti gli stati e di
tutte le transizioni indicato in figura 4.
In questo diagramma compare un ulteriore stato di cui non abbiamo ancora
parlato. Si tratta del superstato (sono
chiamati cos quegli stati che ne contengono altri annidati) che gestisce il
calcolo della variazione di coordinate.

Info@Teoresi News & Notes Settembre 1998

23

Non importante ci che esegue ma


fondamentale vedere che si tratta di un
superstato che stato messo in parallelo allaltro superstato che gestisce la
logica dei bottoni e del puntatore. Ci
significa che Stateflow in grado di
mantenere attivi contemporaneamente
pi di uno stato alla volta consentendo
cos la realizzazione di modelli complessi e completi dei processi da modellare.
3. Simulazione del sistema
I risultati della simulazione vengono
visualizzati sugli scope e sui display del
sistema. Possiamo pensare che essi siano
le porte di accesso ai dati del nostro
mouse in modo che se possedessimo un
ulteriore modello atto a descrivere il
comportamento di un sistema da esso
controllato potremmo simulare la loro
interazione consentendo ai dati di fluire verso la sezione a valle.
Per fare questo, lultimo passo che dobbiamo intraprendere il lancio della
simulazione; questo atto scatena la generazione del codice C che diventa una Sfunction di Simulink.
Il diagramma degli stati di Stateflow,
mentre la simulazione attiva, riflette il
cambiamento degli stati evidenziando le
transizioni in atto per mezzo delluso

dei colori. In questo modo possibile


seguire la sequenza di funzionamento e
di attivazione dei moduli costitutivi del
sistema e scoprire quali siano le porzioni di modello che necessitano di un
raffinamento o di una ottimizzazione.
4. Generar e il codice C
Per mezzo dello Stateflow Coder, possibile generare codice C standalone
adatto ad un particolare processore target. possibile selezionare il processore per mezzo dello Stateflow Explorer.
Il codice risultante pu essere incorporato in quello generato da Real-Time
Workshop e pu quindi essere usato in
real time in un grande numero di ambienti adatti alla prototipazione rapida
o per simulazioni hardware-in-the-loop.
Conclusione
Ci che abbiamo visto un esempio delluso di Stateflow nella generazione di
un modello della logica di funzionamento di un apparato. Luso di questo
nuovo strumento ci consente di trattare
i dati con un formalismo che di grande aiuto nella stesura della struttura del
comportamento di un sistema ed indispensabile per la sua ottimizzazione.
F. S.

Inviando
la cartolina allegata,
ricever
la documentazione
gratuita
su Stateflow.
24

Info@Teoresi News & Notes Settembre 1998