ESERCIZI - SERIE N. 5 Formalizzazione con diagramma a stati e implementazione di automi Obiettivi: fornire strumenti metodologici e paradigmi di riferimento per formalizzare e implementare automi, descritti con diagramma a stati e con diagrammi di flusso di dati (DFD) unitamente a diagrammi di transizione di stato (STD), utilizzando tecnologie a funzionalità programmata. Punti essenziali da tenere presente nelle diverse fasi di sviluppo del progetto: 1. Analisi del problema 2. Individuazione ingressi e uscite ed assegnamento etichetta mnemonica 3. Definizione degli stati che caratterizzano l'automa 4. Descrizione della funzionalità 5. Scelta della tecnologia realizzativa più adatta all'applicazione 6. Definizione dei compiti gestiti dall'hardware e quelli gestiti dal Software 7. Realizzazione del prototipo 8. Collaudo del prototipo 9. Documentazione delle diverse fasi di sviluppo 1-16
IMPLEMENTAZIONE DI UN AUTOMA CON TECNICA A STRUTTURA DI PROGRAMMA stato = STATO_INIZIALE // Inizializzazione dell automa for(;;) // Ciclo senza fine switch (stato) // Selezione in base stato dell automa // Gestione dello stato 0 case S0: loop_function (0); // Azioni associate stato 0 symbol = getsymbol (0); // Acquisizione ingressi switch (symbol) // Selezione in base symbol di input // Gestione transizioni associate ingressi + stato // Aggiornamento stato case Ik: // Gestione generico ingresso Ik azione_transizione (n); // Az. per transiz. n stato = nuovo_stato; // Aggiorna stato break; // End switch (symbol). break; // End switch (stato) // Gestione dello stato 1 case S1:. // End ciclo for 2-16
Esercizi 1) Gestione di allarme semplice (Raccomandazione ISA1) Un'anomalia su un sistema di controllo automatico deve essere segnalata e gestita secondo standard riconosciuti, nel rispetto delle normative vigenti per la tutela della sicurezza. Lo stato d'allarme non deve rientrare anche se cessa la causa che lo ha scatenato, occorre l'intervento dell'operatore a garanzia dell'avvenuto riconoscimento, è segnalato con sirena e luce pulsante. L'operatore deve intervenire e può tacitare l'allarme (stato tacitato) che rimane ugualmente segnalato con una luce fissa, solo dopo aver rimosso la causa, che ha determinato l'allarme, l'automa passa dallo stato tacitato a quello di riposo. Se l'allarme rientra mentre l'automa è nello stato di allarme l'automa passa nello stato rientrato che segnala con sirena e luce pulsante, dallo stato rientrato ritorna nello stato d'allarme se l'anomalia si ripresenta. Se tacitato mentre è nello stato rientrato torna nello stato di riposo. Si richiede di: Progetto - individuare gli ingressi e le uscite e attribuire etichette mnemoniche - stabilire gli stati o i fronti attivi degli ingressi e delle uscite - stabilire il numero degli stati che descrivono l'automa e indicarli con etichette mnemoniche - Formalizzare la funzionalità dell'automa mediante grafico dei diagrammi a stati - Implementare un programma di simulazione dell'automa su PC Vedi "Esercitazione N. 3-4 v.o." 3-16
2) Gestione di allarme complesso (Raccomandazione ISA2) Con quest'altro standard si vuole evitare che una breve anomalia o segnali spuri siano segnalati come allarmi. In questo caso la funzionalità dell'automa è descritta mediante il diagramma a stati e documentata con una legenda. Si chiede di interpretare il comportamento del nuovo automa e di sviluppare un programma di simulazione. Diagramma a stati dell'automa N.B. Rientro (R) equivale a NOT Allarme Legenda Numero identificativo stato dell'automa Nome dello stato dell'automa Comportamento del segnalatore acustico Comportamento del segnalatore luminoso Tipo di messaggio luminoso 0 RIPOSO tace spenta nessuno 1 PREALLARME tace spenta nessuno 2 ALLARME suona lampeggio veloce blinking 3-4 Hz 3 TACITATO tace fissa fisso 4 IN RIENTRO TAC. tace lampeggio lento Blink controf. 1-2Hz 5 IN RIENTRO suona lampeggio lento Blink controf. 1-2Hz 6 RIENTRATO suona fissa fisso 4-16
3) Gestione ascensore (vedi p. 3-44 dispense Prof. Mezzalira) Quattro ascensori servono un complesso di 40 piani, all'interno di ogni cabina ci sono 40 pulsanti (uno per piano) con lampadine di segnalazione e un display sopra la porta che segnala il numero di piano. Su ogni piano sono disposti due pulsanti, con lampadine, per la richiesta della direzione (SALITA, DISCESA), al piano terra solo SALITA e all'ultimo piano solo DISCESA. Ad ogni piano è presente un sensore di piano che segnala l'arrivo al piano con la chiusura di un pulsante. Il motore è comandato da tre uscite digitali (Sù, Giù, Stop). Un sensore di sovrappeso segnala un sovraccarico dell'ascensore. La strategia di gestione è la seguente: - prosegue nella stessa direzione fino all'ultimo piano prenotato ma accetta la nuova prenotazione anche se in direzione opposta - valuta a quale dei quattro ascensori assegnare la gestione della chiamata da piano - rimane fermo in sosta all'ultimo piano servito finché non arriva una chiamata da un piano o una richiesta dall'interno della cabina - si ferma a un piano solo se c'è stata una richiesta o una chiamata e il piano è raggiungibile con la direzione di marcia attuale Lista degli eventi da gestire - L'utente invia una chiamata da piano per salita - L'utente invia una chiamata da piano per discesa - L'ascensore non è disponibile alla chiamata dal piano - L'ascensore diviene disponibile per il servizio alla chiamata dal piano - L'ascensore raggiunge il piano da cui è stato chiamato - L'utente effettua dalla cabina una richiesta di destinazione - L'ascensore raggiunge la destinazione richiesta dalla cabina - L'ascensore arriva al piano - L'ascensore lascia il piano - L'ascensore non si muove (è fuori servizio) - L'ascensore riprende il servizio normale - L'ascensore diviene sovraccarico - Il carico dell'ascensore torna normale 5-16
Legenda etichette dei diagrammi ETICHETTE al-piano ascensore-non disponibile ascensore-selezionato chiamata chiamata-in-sospeso condizione-ascensore controllo-arresto-ascensore controllo-ascensore-giù controllo-ascensore-sù destinazione-giù destinazione-in-sospeso destinazione-programmata destinazione-richiesta-inserita destinazione-richiesta-ricevuta destinazione-in-sospeso direzione-destinazione fuori-servizio indicazione-arrivo indicazione-chiamata indicazione-destinazione numero-ascensore numero-piano origine-richiesta piano-corrente piano-destinazione richiesta-chiamata richiesta-destinazione richiesta-ricevuta richieste riprogramma-ascensore segnale-controllo-ascensore stato-ascensore DESCRIZIONE Segnale generato dal sensore di piano, indica l'arrivo al piano dell'ascensore Segnale per indicare che un ascensore non è disponibile per soddisfare una richiesta di chiamata Segnale per indicare che un ascensore è stato programmato per una richiesta di chiamata Si tratta di una voce generata da un pulsante di piano o da un pulsante della cabina Variabile booleana: [on off] Può trovarsi nelle seguenti condizioni: [parcheggiato salita discesa fermo fuori-servizio] Segnale d'uscita per comandare l'arresto del motore Segnale d'uscita per stabilire il verso di rotazione del motore che fa scendere l'ascensore Segnale d'uscita per stabilire il verso di rotazione del motore che fa salire l'ascensore Segnale d'uscita per stabilire il verso di rotazione del motore che fa scendere l'ascensore [on off] Indica che l ascensore ha altre destinazioni successive al piano in cui si trova Numero-ascensore + piano-destinazione + origine-richiesta + destinazione-in-sospeso Segnale per indicare che un passeggero ha inserito una richiesta Segnale per indicare che una richiesta è pronta per la programmazione dell ascensore Segnale per indicare che esiste una destinazione programmata [destinazione-su destinazione-giu] Segnale per indicare che un ascensore non ha risposto ad un comando di spostamento [1 40] Indicazione del piano a cui l ascensore è arrivato [1 40] Indicazione dei piani per i quali è programmata la fermata di un ascensore [1 40] Indicazione dei piani per i quali è programmata la fermata dell ascensore [1 4] [1 40] [chiamata piano-destinazione chiamata + piano-destinazione] Indica il numero del piano a cui l ascensore si trova attualmente Indica il numero del piano per cui è programmata la fermata dell ascensore Piano-ascensore + direzione + numero-ascensore Numero-ascensore + numero-piano Richiesta-chiamata-ricevuta + richiesta-destinazione-ricevuta Richieste-chiamata + richieste-destinazione Segnale per avviare la riprogrammazione delle chiamate assegnate ad un ascensore guasto Controllo-ascensore-su + controllo-ascensore-giù + controllo-arresto-ascensore Numero-ascensore + condizione-ascensore + piano-corrente Si richiede di: - Studiare e interpretare i diagrammi - Proseguire con la formalizzazione sviluppando i diagrammi e le procedure che mancano per una completa analisi del sistema (fare, se necessario, ipotesi aggiuntive coerenti) - Sviluppare un programma di simulazione per una procedura, fra quelle individuate in fase di analisi 6-16
Modello essenziale di contesto del sistema ascensore Livello 0 7-16
Modello generale Livello 1 8-16
Modello generale Livello 2 9-16
Espansione della bolla n.1 MEMORIZZA E VISUALIZZA RICHIESTA 10-16
Espansione della bolla n.1.1 GESTISCI RICHIESTA DI CHIAMATA 11-16
Procedure per la gestione dei processi della bolla n.1.1 1.1.2 MEMORIZZA RICHIESTA CHIAMATA if (richiesta-chiamata) memorizza la chiamata in richieste-chiamata; produce il segnale richiesta-chiamata-inserita; 1.1.3 CANCELLA CHIAMATA COMPLETATA if (numero-ascensore in stati-ascensore == numero-ascensoreassegnato in richiesta-chiamata && piano-corrente in statiascensore == numero-piano in richieste-chiamata) cancella la voce corrispondente in richieste-chiamata; 1.1.4 VISUALIZZA RICHIESTA CHIAMATA visualizza le chiamate memorizzate in richieste-chiamata; 12-16
Espansione della bolla n.1.1.1 CONTROLLA RICHIESTA CHIAMATA (diagramma di transizione di stati) 13-16
Espansione della bolla n.1.2 GESTISCI RICHIESTA DESTINAZIONE 14-16
Procedure per la gestione dei processi della bolla n.1.2 1.2.2 MEMORIZZA RICHIESTA DESTINAZIONE if (richiesta- destinazione) memorizza la chiamata in richieste- destinazione; produce il segnale richiesta- destinazione-inserita; 1.2.3 CANCELLA DESTINAZIONE COMPLETATA if (numero-ascensore in stati-ascensore == numero-ascensoreassegnato in richieste- destinazione && piano-corrente in statiascensore == numero-piano in richieste- destinazione) cancella la voce corrispondente in richieste-destinazione; 1.2.4 VISUALIZZA RICHIESTA DESTINAZIONE visualizza le destinazioni memorizzate in richieste-destinazione; 15-16
Espansione della bolla n.1.2.1 CONTROLLA RICHIESTA DESTINAZIONE (diagramma di transizione di stati) Nota - La formalizzazione continua, si è voluto dare solo un approccio metodologico. 16-16