Sei sulla pagina 1di 6

SISTEMI E TECNOLOGIE PER LAUTOMAZIONE LM

A.A. 2011/2012
ENSINI DAVIDE, 610474
PIRACCINI MARCO, 606422

Tema di progetto n1
Controllo di sequenze di un ascensore
Il problema
Si richiede di implementare il controllo logico di un ascensore, dallazionamento del motore alla gestione
delle pulsantiere per la prenotazione. necessario poter memorizzare le chiamate, e che esse vengano
servite con una certa efficienza. Sono dati i tempi di attesa per lapertura e la chiusura delle porte, e
questultima deve essere effettuata con riguardo alleventuale presenza di ostacoli.
previsto che lutente dellascensore possa segnalare una situazione di pericolo. In questo caso si deve
fermare lascensore al piano pi vicino e permettere agli occupanti di uscire; alla segnalazione di cessato
pericolo si dovr ripristinare il corretto funzionamento, servendo anche le chiamate giunte nel periodo di
fermo.
Infine richiesta la verifica di corretto funzionamento dei sensori che indicano quando lascensore si trova
in corrispondenza di una rampa o di un piano; il caso di fault va segnalato e gestito.
Nelle seguenti tabelle sono riportati i sensori e gli attuatori del sistema.

Aperta :BOOL Sensore porta aperta (fine corsa)
Chiusa :BOOL Sensore porta chiusa (fine corsa)
FineGiu :BOOL Sensore fine corsa inferiore vano ascensore
FineSu :BOOL Sensore fine corsa superiore vano ascensore
SensorePiano :BOOL Presenza ascensore su qualsiasi sensore di piano
SensoreRampa :BOOL Presenza ascensore su qualsiasi sensore di rampa
Presenza :BOOL Sensore di presenza ostacolo tra le porte
Emergenza :BOOL Pulsante emergenza pulsantiera interna
PX: BOOL con X in
{T,1,2,3,4,5,6,7}
Sensori di chiamata da pulsantiera interna
SuPianoX: BOOL con X
in {T,1,2,3,4,5,6}
Sensori di chiamata da pulsantiera esterna (verso
lalto)
GiPianoX: BOOL con
X in {7,6,5,4,3,2,1}
Sensori di chiamata da pulsantiera esterna (verso il
basso)

Apri :BOOL
Comando apertura porta
Chiudi :BOOL
Comando per chiudere porta
Motore :BOOL
Comando azionamento motore ascensore
Su :BOOL
Direzione motore. Se 1 ascensore verso l'alto se 0 verso il basso
Vel :BOOL
Velocit ascensore. Se 1 velocit alta, se 0 velocit bassa
PresenzaVis :BOOL
Variabile segnalazione di presenza ostacolo tra le porta
EmergenzaVis :BOOL
LED per visualizzazione emergenza pulsantiera interna
Destinazione :INT
Variabile Indicazione destinazione dell'ascensore
PianoCorrente :INT
Variabile Indicazione piano corrente su puls. Interna ed Esterne
FaultSensoreAlarm: BOOL
Variabile gestione LED segnalazione fault su sensore di piano
FaultRampaAlarm: BOOL
Variabile gestione LED segnalazione fault su sensore di rampa
PXVis: BOOL con X in
{T,1,2,3,4,5,6,7}
Variabili gestione LED pulsantiera interna
SuPianoXVis: BOOL con X
in {T,1,2,3,4,5,6}
Variabili gestione LED pulsantiera esterna (verso lalto)
GiuPiano7Vis: BOOL con X
in {7,6,5,4,3,2,1}
Variabili gestione LED pulsantiera esterna (verso il basso)
Analisi
Lanalisi del problema volta ad identificare le azioni di base porta alla seguente associazione tra ogni azione
ed i sensori ed attuatori necessari a portarla a compimento. Sono sottolineati i sensori e gli attuatori che
sono condivisi da pi azioni.



Il passo successivo consiste nellindividuare i possibili Attuatori Generalizzati con i quali comporremo la
nostra soluzione. Le uniche due azioni di base che condividono sensori o attuatori sono quelle che
riguardano il movimento dellascensore e il rilevamento del malfunzionamento dei sensori di rampa e
piano; per questo le riconduciamo ad un unico attuatore generalizzato.

Progetto
A questo punto analizziamo pi da vicino le responsabilit di ogni attuatore generalizzato, integrando i
requisiti con le scelte di progetto che sono risultate necessarie.

Attuatore generalizzato che gestisce il movimento ed il fault: MovimentoGA
La funzione primaria di questo attuatore muovere lascensore tra i piani, sia che siamo in condizioni
normali di funzionamento, sia che ci troviamo in stato di emergenza o di fault. Non meno importante la
responsabilit di rilevare i possibili fault dei sensori di rampa e di piano. Secondariamente, lAG gestisce gli
indicatori PianoCorrente e Destinazione.
un GA di tipo DO/DONE, e ha due modalit di funzionamento, una normale ed una di inizializzazione:
durante questultima si comporta come da requisiti.
Linterfaccia tra questo GA ed il livello superiore, quello delle politiche di funzionamento, include:
Comandi per lavvio del movimento e la selezione del piano di destinazione
Un comando per il passaggio alla modalit di emergenza
Azione Sensori Attuatori
Movimento
ascensore
Su
FineSu,
SensorePiano,
SensoreRampa
Motore, Vel, Su,
Destinazione,
PianoCorrente

Gi
FineGi,
SensorePiano,
SensoreRampa
Motore, Vel, Su
Rilevamento guasto
sensori
SensorePiano,
SensoreRampa
FaultSensoreAlarm,
FaultRampaAlarm
Porta
Apri Aperta Apri

Chiudi Chiusa, Presenza Chiudi, PresenzaVis

Gestione emergenza Emergenza EmergenzaVis

Gestione
prenotazioni
PX, SuPianoX,
GiPianoX
PXVis, SuPianoXVis,
GiPianoXVis

Un insieme di flag booleani, uno per piano, che il GA consulta quando si sta approssimando ad un
piano per sapere se deve fermarsi presso di esso. Questo utile per intercettare le chiamate che
arrivano mentre lascensore gi in movimento
Variabile di uscita OutPianoAttuale che insieme alla variabile State (ready|busy|fault)
e al flag SafeCondition fornisce al livello superiore informazioni sullo stato di funzionamento e
sul piano presso il quale la cabina ferma
Un aspetto che merita particolare attenzione quello del rilevamento dei fault, attivit che ha assorbito
buona parte dello sforzo progettuale. Per riconoscere la mancata accensione di un sensore di piano o di
rampa effettuiamo, durante il movimento, due tipi di controllo:
Sulla sequenza: i sensori di rampa (r) ed i sensori di piano (p) sono disposti in sequenza r-r-p; se
durante il movimento viene rilevata una sequenza diversa abbiamo la certezza di un
malfunzionamento.
Sul tempo: essendo noto il tempo che il plant impiega per i propri spostamenti, siamo in grado di
verificare la correttezza del funzionamento cronometrando le percorrenze. Questo, rispetto al solo
rilevamento di sequenze, ci fornisce due dati importanti:
o Siamo in grado di rilevare la rottura di unintera sequenza di sensori (due r ed un p
adiacenti), mentre con il solo controllo sulla sequenza non ci riusciremmo.
o Siamo in grado di rilevare pi prontamente i malfunzionamenti che coinvolgono numerosi
sensori, eventualmente anche tutti, senza dover aspettare una sequenza scorretta o i
segnali fineSu e fineGiu.
Quando si riscontra un fault, qualunque ne sia la natura, il GA si porta in una speciale modalit di
funzionamento, chiamata panic, durante la quale lascensore percorre a bassa velocit tutto il vano,
fermandosi presso il primo sensore di piano disponibile o, qualora non ve ne siano pi, presso uno dei
sensori di fine vano. Dopodich il GA restituisce il controllo al livello delle politiche, comunicandogli la
situazione di fault.

Attuatore generalizzato che gestisce le porte: PortaGA
Questo GA di tipo DO/DONE ha il compito di governare il movimento della porta dell'ascensore, garantendo
la corretta tempistica di esecuzione delle azioni di apertura e chiusura (corrispondenti ai due stati di
funzionamento del GA). Durante l'operazione di chiusura porta, prevista un'opportuna politica per gestire
la situazione di rilevamento ostacolo: nel caso il sensore Presenza rilevi un impedimento, viene subito
attivato l'attuatore PresenzaVis e si riapre la porta, la quale sar mantenuta aperta fintanto che il
sensore Presenza non si abbassa (viene spento il led PresenzaVis e si riparte con il timeout di 2
secondi prima di tentare nuovamente di chiudere la porta).

Attuatore generalizzato che gestisce le segnalazioni di emergenza: EmergenzaGA
Lo scopo di questo GA semplicemente rilevare una situazione di emergenza e segnalarla al livello delle
politiche di funzionamento, che si occuper di gestirla opportunamente.
un GA di tipo START/STOP, attivato dalle politiche immediatamente dopo la fase di inizializzazione.
La comunicazione tra questo GA e le politiche avviene attraverso:
Una variabile di uscita SegnaleEmergenza; settata alla pressione del pulsante Emergenza,
comporta l'ingresso del sistema in uno stato di emergenza. Durante questo stato verr ignorata
ogni altra pressione del pulsante.
Una variabile di ingresso EmergenzaGestita; segnala che l'emergenza stata opportunamente
gestita (come specificato da requisiti). A questo punto, una successiva pressione del pulsante
Emergenza comporta il ritorno del sistema ad uno stato di funzionamento normale.

Attuatore generalizzato che gestisce linterfaccia per le prenotazioni: UserInterfaceGA
Anche questo GA di tipo START/STOP e si occupa di gestire i pulsanti di prenotazione e i relativi LED.
Sono stati utilizzati tre array di boolean Up, Down, Inside che memorizzano rispettivamente prenotazioni
esterne verso l'alto, esterne verso il basso ed interne per consentire al sistema di rilevare pi prenotazioni
simultanee e servirle in modo efficiente.
Ha due modalit di funzionamento: gestione pulsantiera in situazione normale e in caso di fault (lampeggio
di tutti il LED di prenotazione).
In situazione di funzionamento regolare questo GA svolge due compiti:
monitora i sensori associati ai pulsanti e alla loro pressione (attivazione dei sensori) accende i
corrispondenti led e setta i corrispondenti valori nei tre array.
attende dalle politiche il segnale di arrivo ad un piano (PianoToReset e RestPiano) per
spegnere il corrispondente led e resettare il corrispondente valore in tutti e tre gli array.
L'interfaccia tra UserInterfaceGA e politiche, per quanto riguarda gli aspetti comunicativi non standard,
composta da:
due variabili di input PianoToReset e RestPiano che forniscono informazioni utili per la
corretta gestione dei led delle pulsantiere interne ed esterne oltre che dei tre array Up, Down,
Inside indicando quale piano stato appena servito.
un segnale DoneReset di output per sincronizzazione tra GA e politiche.
i tre array Up, Down, Inside come variabili di output utili alle politiche per eseguire un efficiente
algoritmo di scheduling per selezionare il prossimo piano da servire.

Di seguito sono riportate le istanze dei GA scritte tramite Function Block Diagram.














IN OUT
PortName Values PortName Values
PORTA
DO
TRUE
DONE
TRUE
FALSE FALSE
DOWhat
Apertura
DoneWhat
Apertura
Chiusura Chiusura
SensorePortaAperta Aperta State Init | Ready | Busy
SensorePortaChiusa Chiusa AttApriPorta Apri
SensorePresenza Presenza AttChiudiPorta Chiudi
AttPresenzaVis PresenzaVis
MOVIMENTO
e
RILEVAMENTO
FAULT
DO
TRUE
DONE
TRUE
FALSE FALSE
DOWhat
Vai
DoneWhat
Vai
Inizializza Inizializza
SensoreFineSu FineSu State Init | Ready | Busy | Fault
SensoreFineGi FineGi AttMotore Motore
InSensorePiano SensorePiano AttVel Vel
InSensoreRampa SensoreRampa AttSu Su
MovToPiano [0..7] SafeCondition TRUE|FALSE
InEmergenza TRUE|FALSE AttFaultSensoreAlarm FaultSensoreAlarm
ArrM array[0..7] AttFaultRampaAlarm FaultRampaAlarm
AttDestinazione Destinazione
AttPianoCorrente PianoCorrente
OutPianoAttuale [0..7]
GESTIONE
INTERFACCIA
UTENTE
Start
TRUE
DONE
TRUE
FALSE FALSE
Stop
TRUE
DoingWhat
Scheduling
FALSE Fault
StartWhat
CheckAndSet State
Init | Ready | Busy |
BusyFault
Fault AttPXVis PXVis
SensorePX PX AttSuPianoXVis SuPianoXVis
SensoreSuPianoX SuPianoX AttGiPianoXVis GiPianoXVis
SensoreGiPianoX GiPianoX DoneReset TRUE|FALSE
PianoToReset [0..7] Up [0..6]
ResetPiano TRUE|FALSE Down [1..7]
Inside [0..7]
EMERGENZA
Start
TRUE
DONE
TRUE
FALSE FALSE
Stop
TRUE DoingWhat Working
FALSE State Init | Ready | Busy
StartWhat Rileva AttEmergenzaVis EmergenzaVis
SensoreEmergenza Emergenza SegnaleEmergenza TRUE|FALSE
EmergenzaGestita TRUE|FALSE


Scelte progettuali e coordinamento dei GA: Livello delle politiche
Il sistema configurato e gestito dal Main program che ingloba in se le politiche di funzionamento.
Compito delle politiche coordinare i vari attuatori generalizzati, gestendo in modo opportuno i vari stati di
funzionamento del sistema (normale, emergenza, fault).
Nel nostro caso stato loro attribuito anche il compito di determinare il prossimo piano da servire sulla
base di un efficiente algoritmo di scheduling che verr descritto in seguito.

Per prima cosa viene eseguita la fase di inizializzazione che, come da requisiti, termina con l'ascensore al
piano terra pronto per servire eventuali prenotazioni.
A questo punto, le politiche si occupano di monitorare i tre array Up, Down, Inside, variabili di output
di UserInterfaceGA, attraverso i quali determinano se ci sono o meno prenotazioni pendenti e quindi se
attivare o meno l'esecuzione dell'algoritmo per determinare il prossimo piano da servire.

Lo scheduling delle chiamate viene eseguito secondo l'algoritmo LOOK scheduling, che funziona in questo
modo:
Se stiamo andando verso lalto:
se siamo al piano N guardiamo se per ogni piano X>N sono presenti chiamate interne o esterne per
salire; nel caso in cui non ce ne siano, controlliamo se sono presenti chiamate interne o esterne
per scendere lungo tutto il percorso dell'ascensore; in mancanza anche di queste guardiamo, se ci
sono chiamate per salire nei piani X<N.
Se stiamo scendendo il comportamento il duale.

Una volta servito un piano viene inoltrata l'informazione al GA UserInterface, che si occupa di aggiornare il
valore dei tre array e spegnere il led di prenotazione relativo al piano.
necessario sottolineare che una volta fermi ad un piano vengono resettate tutte le chiamate relative ad
esso, anche quelle la cui direzione non in quel momento coerente con il movimento dellascensore.

Per garantire una buona reattivit di risposta del sistema, previsto che, anche una volta in movimento,
siano monitorate le prenotazioni (interne e esterne): ad esempio, qualora l'ascensore rilevi la prenotazione
del piano immediatamente successivo (sempre conformemente all'algoritmo descritto sopra) in un tempo
sufficiente per arrestarsi in sicurezza, tale prenotazione verr servita, altrimenti rimarr semplicemente
memorizzata e sar servita in seguito.