Per dettagli riguardanti il protocollo vi rimando alla pagina di Wikipedia o alla relazione che abbiamo presentato all'esame e che trovate in fondo in allegato. Quello di cui invece ci occuperemo qui è la modellazione e la simulazione di macchine a stati con lo strumento che abbiamo utilizzato: SMCube.
SMCube è un software pensato per introdurre macchine a stati all'interno di diagrammi di flusso realizzati con Scicos, un plugin per ScicosLab ovvero la versione Gtk+ di Scilab, un software open source per il calcolo numerico. In questo modo viene resa possibile la modellazione, la simulazione e la generazione automatica di codice C++ a partire da semplici Automi a Stati Finiti costruiti tramite un'interfaccia visuale come quella mostrata in figura.

Scheletro di una semplice macchina a stati realizzata con SMCube (immagine tratta da http://erika.tuxfamily.org/).
In generale un data-flow diagram permette di modellare filtri o algoritmi di controllo mentre una macchina a stati finiti è utilizzata per rappresentare comportamenti piu complessi, non facilmente esprimibili attraverso un diagramma di flusso. Per questo tra i blocchi utilizzabili nella stesura del data-flow diagram è presente un SMCube Block che ne permette l'inserimento rendendo il diagramma più espressivo.

SMCube Block con eventi e segnali di ingresso/uscita.
Una volta definita la struttura della macchina a stati questa diventa completamente trasparente rispetto al diagramma di flusso. Il blocco infatti è in tutto e per tutto analogo agli altri, presentando una serie di segnali ed eventi di ingresso e di uscita. L'unica accortezza da utilizzare sono evidenti vincoli di consistenza tra quanto specificato nel data-flow diagram e nella macchina a stati. Ovvero il numero ed il tipo di variabili ed eventi collegati con il blocco dovrà essere lo stesso anche nelle impostazioni della macchina a stati.
Una volta creata ed inserita la macchina a stati nel diagramma di flusso è possibile effettuare delle simulazioni per verificarne il corretto funzionamento.
SMCube prevede due modalità di simulazione: Interattiva e Batch.
Con la prima modalità è mostrata l'evoluzione della macchina a stati durante la simulazione, mentre con la seconda modalità questa è del tutto trasparente all'utente. La modalità interattiva serve inoltre per scopi di debug in quanto mostra ad ogni passo della simulazione il valore delle variabili e degli eventi in gioco evidenziando come riportato in figura lo stato corrente.

Riportiamo per concludere una guida all'installazione del tool con tutte le sue dipendenze in ambiente windows (l'unico attualmente supportato).
Si ringrazia l'Ing. Paolo Gai, Co-Fondatore di Evidence Srl, per la disponibilità e l'assistenza fornita in fase di installazione.
SMCube - GUIDA ALL'INSTALLAZIONE
- Scaricare ed installare Java Virtual Machine a 32 bit (anche se il sitema operativo in uso e a 64 bit).
- Scaricare ed installare Cygwin dal sito ufficiale. Questo servira per compilare il codice generato dal diagramma.
- Scaricare Microsoft Visual C++ 2008 dal sito Microsoft ed installarlo. Versioni successive del prodotto non sono supportate.
- Scaricare l'ultima versione di ScicosLab (al momento 4.4.1) e installarla.
- Scaricare ed installare Microchip MPLAB IDE per programmare le board sulle quali girerà il codice prodotto.
- Scaricare ed installare l'ultimo ScicosLab Pack. Attualmente l'ultima versione e la 11.1 contenente SMCube Demo 1.03 con FLEX Board Simulator. Per installare lo ScicosLab Pack aprire ScicosLab ed eseguire installer.sce (File->Exec). E possibile che sia necessario eseguire ScicosLab con privilegi di amministratore.
- Riavviare ScicosLab.
In caso di problemi controllare che il file C:\Program Files\scicoslab-4.4.1\contrib\scicos_een\RT-Druid\conguration\common oil.pref contenga tutti i riferimenti giusti.
Scegliendo i path proposti di default in fase di installazione i riferimenti corretti sono i seguenti:
preference_pic30_path_for_asm_compiler = C:/Program Files (x86)/Microchip/MPLAB C30 preference_pic30_path_for_gcc_compiler = C:/Program Files (x86)/Microchip/MPLAB C30 erika enterprise location = ${eclipse home}/../ee
Per ulteriori dettagli su SMCube vi rimandiamo alla documentazione e alla relazione del nostro elaborato.
Se siete interessati vi lasciamo anche il codice del nostro progetto: LINK
UPDATE: alleghiamo anche degli appunti del corso per eventuali interessati: download

