Indice |
Correva l'anno 1987
Gianni salì al mio laboratorio quella sera.
Era, come sempre, pimpante, come se la giornata di lavoro stesse per iniziare.
Fece l'ultimo scalino e chiuse la porta con un gesto automatico.
Nella mano sinistra stringeva un foglio arrotolato.
Lo sguardo era concentrato su un'immagine dentro i suoi pensieri.
Gianni è un elettricista che si è fatto imprenditore. Una lunga gavetta, come si dice. Inizia a quattordici anni a "tirar fili" alle dipendenze di Buson l'elettricista più famoso del paese.
Dopo vent'anni di lavoro dipendente si mette in proprio. Pian piano molti dei lavori della zona cominciano a passare tra le sue mani e, sempre più numerose, piccole attività industriali, locali e non, gli affidano la soluzione di problemi di vario tipo.
Le applicazioni che in quel periodo lo stimolavano maggiormente, ma con le quali doveva combattere battaglie che rischiava di perdere, erano di automazione. Gianni ci riusciva realizzando, con i relè, logiche anche abbastanza complesse. Se incontrava ostacoli che la non regolare preparazione teorica gli impediva di superare, sapeva anche trovare chi gli indicava la via da seguire.
La complessità delle funzioni richieste però cresceva. Gianni sentiva che con i relè era dura farvi fronte e che avrebbe dovuto intraprendere una nuova strada.
Ma quale? Come? Con chi?
Primissimi anni 80: il 6502
- Da qualche tempo mi chiedeva informazioni sulle eurocard a microprocessore sviluppate per una ditta farmaceutica.
- A partire da una scheda didattica per il 6502, l'AIM 65, eravamo approdati, io ed il mio socio, alla realizzazione di un microcomputer. Ci eravamo attrezzati anche con Apple II e PET CBM Commodore. Ecco una foto dei primissimi anni 80 nella cantina-laboratorio.
- Ci sentivamo dei pionieri e ciò che riuscivamo a fare programmando esclusivamente in assembler, mi appariva quasi miracoloso.
- Ciononostante io non riuscii nemmeno ad immaginare i progressi che sarebbero avvenuti nei successivi due decenni. Non solo, ma la cantina non si trasformò nemmeno in una multinazionale :(
- Ma questa è un'altra storia.
Gianni mi si sedette di fianco guardandomi trafficare nel groviglio di schede e cavi piatti; digitare sulla tastiera linee di codice astruse; dare il comando di Run; azionare pulsanti; guardare led rossi verdi e gialli accendersi e spegnersi, mentre sul piccolo monitor a fosfori verdi una grande scritta OK affiancata da una colonna di dati si alternava ad allarmi simulati, descritti nella videata che sostituiva l'OK con uno STOP lampeggiante.
Ma non vedeva l'ora che la smettessi per espormi il suo problema.
L'avevo capito.
Così fermai il pulsare dei led; sullo schermo l' OK fu sostituito dal cursore dei comandi; digitai "save" facendo partire, con uno schiocco metallico, il drive del floppy disk da 5 pollici ed un quarto, 110 kB. Conclusi le operazioni con un:
"Sembra che il tutto funzioni......SEMBRA...".
- Sapevo che non bisognava illudersi troppo per la riuscita delle simulazioni. L'imprevisto si manifestava proprio nel momento cruciale della prova sul campo, con un'intelligenza diabolica in cui il Caso è maestro. Ricordo ancora la volta in cui la macchina stava già per essere imballata e spedita in Messico il mattino successivo. Dopo una settimana di prove positive, alle otto di sera il programma si bloccò. Il committente mi disse: "Se non funziona, chiudiamo anche lei nell'imballo!".
- Ma anche questa è un'altra storia.
"Devi trovarmi una soluzione per il nuovo silo" disse Gianni, srotolando sulla scrivania il foglio che teneva in mano. Era lo schema delle celle con le serrande e le coclee da comandare.
Senza tanti preamboli me lo illustrò:
"Bisogna avviare i motori delle coclee, azionare le elettrovalvole delle serrande di carico e di scarico. Il grano deve arrivare alla cella giusta con sicurezza. La coclea di carico deve girare solo quando una serranda di carico è aperta. Per ogni cella c'è un indicatore di livello di pieno. Cinque celle servono per miscelare il grano per il tipo di farina desiderato. Qui oltre alle serrande di scarico ci sono, in uscita, dei dosatori elettronici che devono essere settati correttamente."
L'indice che si spostava sul foglio come la freccia di un mouse, si fermò. Gianni, alzando lo sguardo per studiare le mie reazioni, aggiunse:
"Forse ce la potrei fare anche con i miei soliti relè, ma ho pensato che tu, con le tue schede, potresti farlo meglio"
Guardai il foglio steso sulla scrivania
Il problema era meno complesso, dal punto di vista della logica, di quanto stavo facendo con il mio microcomputer. Ma non era la logica da realizzare l'ostacolo. Era il grande ( per me allora...) numero di ingressi ed uscite, anche se solo on-off, che non ero preparato a gestire. A occhio e croce, una cinquantina di uscite per le elettrovalvole ed i motori, più di cento ingressi per i finecorsa di controllo e livellostati. Poi i pulsanti di comando le visualizzazioni dello stato dell'impianto. Mi occorrevano almeno 10 delle mie schede di IN-OUT. Se si vuole si può fare tutto, pensai. Ma bisogna vedere in quanto tempo e come, tenendo ben presente che non si deve sottovalutare ciò che appare concettualmente semplice.
Gli dissi che ciò di cui disponevo non serviva molto. O meglio avrebbe potuto servire, ma occorrevano schede molto migliori di ingresso- uscita. Conclusi che era meglio se risolveva il problema con i metodi che aveva sempre usato.
Non fu entusiasta della risposta, anche se, conoscendomi, se l'aspettava.
I problemi di automazione mi piacevano, ma, al primo impatto, un nuovo lavoro sempre mi incuteva timore, specie se invece che con una macchina, dovevo confrontarmi con un impianto esteso. Tendevo a vedere difficoltà di vario tipo ed ero incapace di nasconderlo. Gianni lo sapeva per cui subito mi disse:
"Non esagerare su ciò che non hai o pensi di non saper fare. Quello che c'è da realizzare lo realizzeremo. Tu dimmi cosa e lo faremo. Non deve mica essere per domani. Ci metteremo il tempo che ci vuole. Ma in questo lavoro voglio cambiare tecnica e tu mi devi dare una mano. Siamo amici da tanto tempo ed io ho fiducia in te. Pensaci."
Detto questo se ne andò.
Rimasi solo ad osservare
lo schema
In effetti eseguire tutto in modo tradizionale con una logica di soli relè, per quanto semplice fosse, non era il massimo in quel periodo. Gianni aveva ragione. Per questo si sentiva di fronte ad uno di quei problemi che, sì, avrebbe saputo risolvere, ma che lo avrebbe lasciato insoddisfatto. Sentiva che c'era una strada migliore della sua, anche se non la conosceva .
Aveva ragione.
L'impresa cominciava ad attrarmi, ma anch'io dovevo incamminarmi su una nuova strada.
L'elettronica consentiva di centralizzare i comandi e sorvegliare l'intero impianto effettuando le operazioni in sicurezza, ma tutto doveva essere robusto ed affidabile. In questo caso poi in modo particolare. L 'ambiente di installazione era ostile: polvere, rumore, personale non avvezzo a tastiere e schermi di computer. No, le mie schede non avevano le caratteristiche che ritenevo indispensabili.
Fu così che pensai quasi subito ai PLC, che però non avevo mai usato e di cui, a parte il significato della sigla, non sapevo assolutamente nulla. Ma questa era l'occasione buona per conoscerli.
Il giorno successivo mi informai meglio con diverse telefonate ai rappresentanti dei principali costruttori. (Internet doveva ancora venire...). Mi convinsi ancora di più che sarebbe stata sciocca una qualsiasi diversa soluzione. Per Gianni rappresentava un salto di qualità nel mondo dell'automazione. Per me un motivo per capire e sfruttare le potenzialità del PLC con un'applicazione importante.
Ovvia la difficoltà di effettuare una scelta del PLC, come quella successiva di impararne struttura e programmazione. Ma superati questi ostacoli tutto sarebbe stato in discesa.
Non ci pensai in realtà moltissimo e rapidamente scelsi
OMRON Sysmac C-500
Acquistammo tutto il necessario per studiarlo e partire: rack base, alimentatore, cpu, moduli di ingresso e di uscita, modulo di memoria ram, tastierino di programmazione (già non c’era ancora la possibilità di sviluppare il software su PC con apposito programma grafico).
Il materiale arrivò in poco tempo e l’avventura iniziò.
Mi confortava constatare che la programmazione non era particolarmente difficile e che l'abitudine all'assembler mi facilitava il compito.
Il problema a quel punto, diventava quello tipico che un progetto software pone, con la proliferazione delle soluzioni possibili a parità di struttura fisica. Mancavano completamente specifiche precise da parte della committenza, ma ci ero abituato. In questo caso poi esse si riducevano a: "Queste sono le elettrovalvole ed i motori: fatemi funzionare il tutto nel modo corretto".
L'impianto tradizionale sarebbe stato fatto con un pulsante di marcia ed arresto per ogni motore e per l' azionamento delle serrande. L'operatore avrebbe effettuato la giusta sequenza "stando attento a non sbagliare". Gli interblocchi per evitare tutti i possibili errori avrebbero richiesto un impressionante numero di cavi e relè. Ci si sarebbe limitati a quelli irrinunciabili, affidandosi all'esperienza del mugnaio.
Ma con il PLC si poteva fare molto di più: ridurre il numero di pulsanti e stabilire per mezzo del software procedure di lavorazione controllate. Modificando il software si potevano realizzare le più idonee senza intervenire nei collegamenti.
Si doveva solo decidere
l'interfaccia utente
Con "interviste" agli operatori più esperti optai per un semplice pannello con pulsanti di comando e led di segnalazione.
Ora, più di vent'anni dopo, si farebbe molto meglio con programmi di supervisione predisposti, sinottici di impianto, comandi touch screen. Ma allora già quel semplice pannello permetteva un salto di qualità, nelle possibilità funzionali e di controllo, rispetto alla realizzazione tradizionale, che si affidava quasi esclusivamente all'intelligenza ed all'attenzione del mugnaio. Poteva impedire all'operatore possibili sbagli, come spedire il grano in una cella invece che in un'altra, ad esempio, od intasare le coclee avviando i motori con serrande di carico chiuse.
Le basi
Il sistema operativo, chiamiamolo così, del PLC, è un programma che controlla lo stato degli ingressi ciclicamente, in un tempo detto ciclo di scansione, attivando o disattivando le uscite in base allo stato degli ingressi e secondo il programma dell'utente.
Il programma utente consiste, come ogni programma, in una sequenza di istruzioni, rappresentate, nel caso del PLC, come blocchi di righe circuitali. Un blocco circuitale è un insieme di contatti in serie ed in parallelo che attivano un'uscita. Può trattarsi di un'uscita fisica (es: relè fisico) od una particolare funzione interna: un timer, un generatore di impulso, un relè set-reset, un'operazione logico-aritmetica su singole celle di memoria (bit) o su blocchi di celle contigue (byte (8 bit) e doppi byte).
Gli ingressi (finecorsa, livellostati, pulsanti ecc. ) e le uscite (elettrovalvole, motori ecc.) sono individuati da un indirizzo, esattamente come una qualsiasi cella di memoria, mediante un numero di 4 cifre in codice BCD. Le prime due individuano il canale, le seconde l'ingresso o l'uscita. Quindi, ad esempio il numero 1109 indica l'ingresso n.9 del canale 11.
Se vogliamo che un ingresso di indirizzo 1509 attivi l'uscita di indirizzo 0405 la riga circuitale si presenta così.
Come elettrotecnico, la prima volta che vidi quel simbolo, mi chiesi cosa c'entrasse un condensatore. Ma quel simbolo è adottato per indicare un contatto aperto, NA, lo '0' della logica booleana. Un contatto fisico NA collegato ad un ingresso è visto dal sistema operativo come uno '0' logico e quando il contatto si chiude, come un '1'. Un'uscita è attivata ponendola ad '1' ed è disattivata ponendola a '0'. Il circuito precedente esegue allora questa operazione. Quando l'ingresso passa da '0' ad '1', quindi quando il contatto fisico commuta cioè il NA chiude, l' '1' è trasferito all'uscita che quindi viene attivata.
Si potrebbe però desiderare il contrario, pur avendo fisicamente lo stesso contatto. Cioè finché il contatto fisico è nella sua condizione di riposo, l'uscita è attivata, mentre è disattivata quando commuta. E' ciò che fa un contatto fisico normalmente chiuso, NC. Un contatto NC è rappresentato dallo stesso simbolo con un sbarretta inclinata. La sbarretta indica la negazione dello stato dell'ingresso. Per ottenere il funzionamento opposto al precedente, con lo stesso ingresso, la riga circuitale è allora
Lo '0' dell'ingresso è trasformato in '1' dal sistema operativo e trasferito all'uscita, che quindi è attivata. Quando il contatto commuta l'ingresso diventa '1'. Il sistema operativo lo trasforma in uno '0' che trasferito all'uscita la disattiva. Lo stesso contatto dunque, lo si può far funzionare come un NA od un NC fisici. Ovviamente se il contatto fisico è un NC, quindi pone all'ingresso un '1', gli stessi due circuiti attiveranno le uscite in modo opposto.
Se due contatti NA, posti negli ingressi 1507 ed 1508, devono chiudersi per attivare l'uscita 0410, oppure la stessa uscita deve essere attivata quando un contatto NA posto all'ingresso 1509 è aperto la riga o blocco circuitale diventa.
Questo modo di rappresentare il programma, molto vicino al disegno degli schemi funzionali, è detto ladder diagram. Ora con programma apposito su computer è agevole e divertente tracciare questi blocchi circuitali. Ma a quel tempo dovevo ancora scrivere con il tastierino la sequenza di istruzioni. Ogni singola istruzione era individuata da un numero progressivo, il suo indirizzo, ed i tre blocchi circuitali precedenti dovevano essere scritti come nella seguente tabella. L'istruzione LD (Load) dà sempre inizio ad una nuova riga circuitale; AND corrisponde alla serie; OR al parallelo; NOT rovescia lo stato del contatto; OUT specifica l'uscita da atttivare.
Non è mia intenzione scrivere un manualetto di istruzioni per PLC. Tra l'altro quello fornito dal produttore era molto ben fatto ed è in pratica il testo vero di chi desidera imparare ad usare un PLC.
Era giusto per dare un'idea a chi forse non ha ancora iniziato a lavorarci. Anche per poter concludere con
Alcuni blocchi del programma
che realizzai.
Complessivamente ne comprendeva oltre 350, per un totale di alcune migliaia di righe di istruzione. Scritte in buona parte con il tastierino, ma per fortuna portate a termine con il PC quando finalmente uscì la prima versione di Sysmate.
Il controllo attuato per il nuovo silo fu esteso poi alla parte vecchia del mulino e ci fu anche l'implememtazione di un sinottico su computer che si affiancava e sostituiva l'iniziale pannello.
Ma anche questa è un'altra storia.
Quattro sostanzialmente erano le operazioni sulle celle del silo
- Carico di una cella
- Scarico di una cella per macinazione
- Scarico di più celle per miscelazione e macinazione
- Scarico di una cella su camion.
Il carico delle celle 3 e 6 richiedeva l'apertura di una serranda (tipo SP nel disegno). Per le altre bisognava azionarne due. La prima (una SP) dava l'accesso ad una coppia di celle, la seconda (VP nel disegno), in cascata, deviava il grano verso una delle due celle. L'operazione di carico poteva avere luogo solo per una cella. Quindi il carico di una cella doveva impedire l'azionamento delle elettrovalvole delle altre. L'operazione di carico di una cella poteva avvenire ovviamente solo se la cella non era piena. Se una cella si riempiva le coclee di alimentazione dovevano essere fermate.
Per lo scarico si doveva selezionare se scaricare per macinazione o su camion. Le celle 1, 2, 3, scaricavano solo attraverso i dosatori; la 4 e la 6 attraverso i dosatori o direttamente verso la macinazione come le altre. Le celle 7,8,9,10 potevano scaricare sui camion.La posizione di ogni serranda era indicata da due finecorsa.
Una volta predisposte le serrande per la lavorazione scelta si avviavano i motori delle coclee.
Ecco,come esempio, come i precedenti ragionamenti relativi alla funzione di carico, furono tradotti in blocchi circuitali del linguaggio ladder.
La pressione di un qualsiasi tasto Px genera un impulso ImpPx
L'impulso predispone il carico della cella, (MCSx=1), o termina l'operazione di carico (MCSx=0). La predisposizione consiste appunto nel valore '1' della cella di memoria MCSx, trattato come l'uscita di un flip-flop di tipo RS che corrisponde alla funzione 11 del sistema operativo del PLC, chiamata Keep. La linea circuitale superiore che entra nel blocco Keep è il SET; quella inferiore il Reset. Ovviamente il carico è permesso se l'indicatore di troppo pieno non è attivato (Livx=0). L'attivazione del pieno (Livx=1) determina la cessazione del carico. L'interblocco tra le celle in carico è ottenuto controllando che nessuna cella sia predisposta per il carico (MCSEnable=0)
In definitiva il blocco circuitale di predisposizione carico risulta così
Il contatto MFC normalmente aperto abilita la funzione scelta con uno dei quattro tasti funzione del pannello (Carico, Scarico, Miscela. Scarico su camion). L'impulso relativo generato abilita la funzione scelta disabilitando le altre. Anche MFC corrisponde ad un blocco circuitale con la funzione Keep: nella linea di set l'impulso funzione-carico; in quella di reset l'impulso di uno qualsiasi degli altri tasti funzione.Quindi con il tasto di cella si agisce, a seconda della funzione scelta, sulle serrande di carico, su quelle di miscelazione o su quelle di scarico.
Il pulsante di reset azzera ogni predisposizione riportando tutte le serrande ad una situazione di partenza nota e femando le coclee.
Per ottenere l'interblocco usai i seguenti circuiti
Il primo trasferisce sul canale DM1 (16 bit) i primi 12 bit del canale di predisposizione (CanMCS) con l'operazione di mascheramento (perché adibiti ad altre funzioni) degli ultimi (a partire da destra) quattro bit, posti a zero dall'operazione ANDW #0FFF (esadecimale del binario 0000 1111 1111 1111). Il contatto di indirizzo 6113 è un relè interno speciale mantenuto sempre ON (chiuso) dal sistema operativo del PLC.
Il secondo circuito confrontava il canale DM1 con il valore zero. Se il risultato della comparazione è di uguaglianza, nessuna cella è predisposta per il carico.. Se una qualsiasi cella è invece predisposta per il carico il risultato della comparazione è maggiore di zero.
I risultati della comparazione sono segnalati dal sistema operativo mediante l'attivazione (chiusura, quindi bit=1) dei relè speciali 6305 (maggiore) e 6306 (uguale). Il primo dunque setta l'interblocco MCSEnable; il secondo lo resetta. MCSEnable è dunque un flip-flop SET-RESET.
Infine vediamo l'attivazione delle elettrovalvole delle serrande SP e VP.
A riposo la serranda comandata dall'elettrovalvola VPx,x+1 (quindi per x=1 la VP12 ) dà l'accesso alla cella x. L'accesso alla x+1 richiede l'attivazione VPx,x+1. Se dunque la predisposizione di carico è per la cella x ( MSCx=1), basta attivare solo l'elettrovalvola SPx,x+1. Se invece la predisposizione di carico è per la cella x+1 occorre aprire anche la VP, attivando l'elettrovalvola VPx,x+1. L'apertura della relativa serranda è segnalata dal finecorsa fcax,x+1 che, chiudendosi, alimenta, (o meglio attiva luscita che alimenta), anche l'elettrovalvola della SP.
Il primo PLC non si scorda mai
potrei dire.
E così è diventato un racconto per Electroportal (ora ElectroYou) ;-).
Ma nel ricordo non c'è solo ciò che ho raccontato.
C'è un pezzo di vita, un groviglio di storie.
Materiali ed immateriali.
Iniziate.
Continuate.
Finite.
Ma tutto questo è un'altra storia.
Interno del laboratorio con i miei due figli: Marco in primo piano e Nicolò, il futuro webmaster di ElectroYou ;).