Simulazione tramite Macchine a Stati con SMCube

Come molti altri, anche questo articolo nasce direttamente da esperienze universitarie, in particolare dal progetto di Elementi di Software Dependability. L'obiettivo era di modellare e simulare un sistema antincendio distribuito, rappresentando ogni sensore come una macchina a stati e ricalcando il funzionamento del Linear Two-Phase Commit Protocol per la loro comunicazione.
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 fi ltri 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

  1. Scaricare ed installare Java Virtual Machine a 32 bit (anche se il sitema operativo in uso e a 64 bit).
  2. Scaricare ed installare Cygwin dal sito ufficiale. Questo servira per compilare il codice generato dal diagramma.
  3. Scaricare Microsoft Visual C++ 2008 dal sito Microsoft ed installarlo. Versioni successive del prodotto non sono supportate.
  4. Scaricare l'ultima versione di ScicosLab (al momento 4.4.1) e installarla.
  5. Scaricare ed installare Microchip MPLAB IDE per programmare le board sulle quali girerà il codice prodotto.
  6. 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.
  7. Riavviare ScicosLab.

In caso di problemi controllare che il file C:\Program Files\scicoslab-4.4.1\contrib\scicos_een\RT-Druid\con guration\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

Alessio Antonielli

Ingegnere informatico, appassionato di cinema, musica, videogiochi e serie tv. Insomma, le solite cose che vi aspettereste da un ex studente di Ingegneria Informatica, giusto per rafforzare lo stereotipo…

Federico Becattini

Dottorando in computer vision. Appassionato di informatica e elettronica fai da te, specialmente se per applicazioni futili. Tormenta i suoi amici e colleghi con idee geniali spesso non riconosciute come tali.

Simulazione tramite Macchine a Stati con SMCube ultima modifica: 2013-09-14T18:36:43+01:00 da Alessio Antonielli


Advertisment ad adsense adlogger