università / SMILEditor e il controllo dell’ascensore maledetto..

Con un po’ di ritardo apro questa discussione per annunciare la presenza di due nuovi progetti sul mio sito, dando spazio ad eventuali domande di chi fosse interessato.

Ormai un mese orsono ho infatti pubblicato gli ultimi miei due progetti universitari svolti in collaborazione con altri compagni di disavventure:

  • SMILEditor: semplice editor SMIL realizzato in Java condito di autocompletamento ed accessibilità, realizzato insieme a Giacomo Tufano e Marco Giorgini per l’esame di Sistemi Multimediali. Il lavoro è stato più duro di quanto pensassimo e ci costrinse a fare un allegro dritto fino alle 6 del mattino quando la presentazione si doveva tenere esattamente alle 11. Alla fine il lavoro prodotto era sovrabbondante ed è bastata la mirabolante gestione del documento XML come albero tramite Java (grazie a JDOM) per far rimanere a bocca aperta ben tre professori di Scienze dell’Informazione. Che ancora credo non riescano a capacitarsi di una tale prodezza. Altra nota che voglio sottolineare è che UN componente del gruppo di lavoro non ha mai visto il programma fino alle 10:30 del giorno della discussione. Non ti preoccupare Marco, non dirò a nessuno che mi sto riferendo a te in particolare.
  • Controllo logico-sequenziale di due ascensori: ecco qui si passa alle note dolenti. Orma i è trascorso molto tempo da quel 25 agosto 2007 in cui tre poveri mezzi-ingegneri si ritrovarono a Cesena per iniziare questo progetto, e ormai il tremendo odio misto a rabbia misto a frustrazione che ha caratterizzato quei giorni funesti si è attenuato. Ma porca di quella miseria io non posso ancora capacitarmi di come nel 2007 si possa obbligare gli studenti ad utilizzare un programma, il cui nome non oso tuttora nominare, nella versione per Windows 3.11. Mi fermerò qui. E no, anche questa volta non dirò che il professore che ci ha costretto ad una tale pena era il Prof. Montanari e no, non dirò nemmeno che quell’indecenza di programma era IsaGraf. Di questo progetto dirò solo che si tratta di “programmare” tramite diversi linguaggi (SFC, structured text, LD, ecc..) la logica di controllo di due ascensori, gestendo il servizio di 7 piani e svariate condizioni critiche, di errore e di malfunzionamento. Non voglio dilungarmi oltre sui dettagli, visto che per colpa di questo progetto mi sono spuntati sulla testa altri 10 capelli bianchi. Circa uno ogni 20 volte in chi IsaGraf ci ha lasciato a piedi. Tutto ciò che serve lo potete trovare nella sezione dedicata nel mio sito. Se non è chiaro qualcosa, beh questo post è fatto apposta per le vostre domande. Dimenticavo…i compangi di disavventura che con me hanno condiviso questa immane fatica per questa volta sono stati Marco Giorgini e il sempre bellissimo Roberto Costantini.

Un sentito grazie a chi ha inventato IsaGraf e un sentitissimo grazie a chi ci ha costretto ad usarlo.

4 comments so far

  1. puntoakevin on

    DOMANDA DI V.A.

    “Ciao…approfitto della tua disponibilità per chiederti alcune cose riguardo quei maledetti ascensori…..
    Mi potresti spiegare come più o meno funziona a parte centrale del programma, quella all’ interno di SEQUENTIAL quando apri il file?”

  2. puntoakevin on

    La domanda è un po’ generica ma provo a rispondere lo stesso ;)

    La parte Sequential è il cuore del controllo vero e proprio e come dice il nome stesso questa parte viene eseguita in modo sequenziale ad ogni ciclo.

    In particolare il modulo Porte si preoccupa di gestire i comandi di apertura e di chiusura delle porte stesse provenienti dall’impianto e di attuarli. Inoltre gestisce situazioni particolari come la presenza (prolungata o meno) di un ostacolo davanti alle porte. Insomma qui c’è tutto quello che riguarda apertura e chiusura delle porte dei due ascensori.

    Per quanto riguarda i due Main questi sono uno per figlio e si preoccupano di avviare materialmente l’attività degli ascensori andando a gestire le diverse situazioni di pericolo / errore che si possono verificare. Per avere più modularità si è deciso di scomporre il tutto in tanti SFC figli ognuno dei quali svolge una particolare attività: Init viene lanciato all’avvio o dopo il reset da parte del tecnico e inizializza la cabina a partire da una posizione casuale controllando che tutti i sensori funzionino; Figlio gestisce il movimento vero della cabina; infine GSE, GEM, GDE e GPP sono i figli che vengono lanciati per gestire le diverse ocndizioni di errore o emergenza qualora queste venissero rilevate durante il funzionamento degli ascensori (SE = Sensor Error, EM = emergenza, DE = door error, PP = ..non lo ricordo..)

    Infine CheckSeq è quella parte che si preoccupa di controllare la sequenza dei sensori e di conseguenza il loro corretto funzionamento. Il ragionamento è semplice: per rendeci conto del fatto che un sensore si è rotto, visto che l’impianto da solo non se ne accorge, dobbiamo verificare una sequenza di sensori errata durante il movimento della cabina. In poche parole una cabina muovendosi in condizioni di perfetto funzionamento del sistema incontrerà per esempio la sequenza di sensori:

    RAMPA_IN -> PIANO -> RAMPA_OUT -> RAMPA_IN -> PIANO -> ..e così via..

    Ma se per esempio il sensore di PIANO è rotto allora la sequenza risulterà errata in questo modo

    RAMPA_IN -> RAMPA_OUT

    Questa sequenza è errata, ovvero il sensore di PIANO non si è attivato. Ciò significa che è stato rilevato un errore di sensore e possiamo andare ad attivare il corrispondente segnale.

    Spero di essere stato abbastanza esaustivo, ma soprattutto chiaro. Per altre domande magari più mirate sono sempre qua!

    Auguri con IsaGraf…

  3. Stefano Bianchini on

    Mamma mia che ricordi che mi hai fatto riaffiorare a mente…un programma di merda per un progetto di merda. Ma nella vita incredibilmente non si sa mai cosa ti riserva il destino…ed ecco che, grazie ad ISAGRAF e alle cose che ho imparato, ho INSEGNATO AUTOMAZIONE in un corso di formazione!!!!!!!!!!!

    Si, sono ancora stupito anche io…

  4. DIANA on

    SCUSA POTRESTI GENTILMENTE SPIEGARMI COME FUNZIONA MASK (SHR, AND, OR) NELL’ST PERCHè NELLO USER’S GUIDE NON SI CAPISCE COME FUNZIONI E IO HO VISTO CHE TU NELLE FUNZIONI LO HAI USATO MOLTO.GRAZIE PER LA DISPONIBILITà.


Rispondi