Applicazioni del PLC: software 1 Norme di Riferimento Si occupano dei PLC le Norme IEC 1131 tradotte dalle EN 61131 e classificate per il CEI dal Comitato Tecnico n˚ 65; in esse vengono trattati argomenti riguardanti l’hardware ed il software dei controllori programmabili. Ogni linguaggio per la programmazione fissato dalle norme sopracitate assume la seguente terminologia: • • • • • Ladder Diagram o schema a contatti = LD Sequential Function Chart o diagramma funzionale sequenziale = SFC Functional Block Diagram o schema a blocchi funzionali (logici) = FBD Istruction List o lista di istruzioni (mnemonico) = IL Structured Text o testuale strutturato (per algoritmi complessi) = ST Si ritiene opportuno citare alcuni termini, tratti dal catalogo SIEMENS ma non normalizzati, che tuttavia sono entrati nell’uso comune e rappresentano alcuni dei linguaggi di programmazione, in particolare: • • • il termine KOP (KOntactPlan) significa schema a contatti (ladder); il termine FUP (FUnktionsPlan) è destinato alla programmazione con blocchi funzionali; il termine AWL (AnWeisungListe) identifica il linguaggio mnemonico (lista di istruzioni). È pure molto noto il termine GRAFCET, tratto dalle norme UTE francesi, che rappresenta il diagramma funzionale sequenziale. 2 Classificazione dei linguaggi di programmazione Una prima classificazione di carattere generale dei linguaggi di programmazione comune a tutti i controllori programmabili, è fornita nello schema di figura 1, conformemente a quanto fissato dalla Norma IEC 1131-3 (CEI 65-40) che ha uniformato, almeno Fig. 1 - Schema a blocchi dei linguaggi di programmazione per PLC. www. cal der i ni . i t EDI ZI ONICALDERI NI a livello sintattico, i diversi tipi di linguaggi; infatti prima dell’entrata in vigore di questo standard i costruttori di PLC offrivano codifiche con funzionalità praticamente identiche ma con sintassi spesso differenti tra loro. Le Ditte interessate alla commercializzazione dei controllori, stanno adottando questo standard in quanto, viceversa, per i tecnici operanti su controllori diversi si renderebbe necessaria la conoscenza sia dell’hardware che del software dei controllori stessi. 3 Elementi o variabili software A differenza di quelli hardware, visti nel precedente modulo, si intendono per elementi o variabili software quelli non “tangibili”, specificati dal costruttore nei dati tecnici del PLC. Sono da considerare tali: • • • • • i temporizzatori; i contatori; i relè interni; stack logico o registro risultati; memorie dati. I temporizzatori ed i contatori equivalgono ai corrispondenti elettromeccanici ed elettronici. I relè interni, che possono essere volatili (non ritentivi) e non volatili (ritentivi), assumono varie terminologie e, a seconda del tipo di PLC, prendono il nome di: memorie interne, indicatori, relè di appoggio, variabili interne, flag, merker, ecc. Equivalgono ai relè ausiliari elettromeccanici e sono praticamente aree di memoria riservate a risultati intermedi utilizzabili al momento opportuno. Elementi estremamente importanti sono uno o più registri interni, che assumono varie terminologie del tipo stack logico o registro risultati, ed hanno la stessa funzione in tutti i PLC e cioè memorizzare i risultati intermedi delle istruzioni logiche del programma (2 esempio nella sottounità 8). Si considerano elementi software oltre che hardware, anche tutte le uscite fisiche in quanto possono essere utilizzate come contatti ausiliari, allo stesso modo degli ingressi. Le memorie dati sono destinate ad immagazzinare dati di vario tipo (numeri interi, stringhe, ecc.). Tutti gli elementi possono venire indirizzati, interrogati (test), combinati tra loro in qualsiasi modo ed in qualunque punto del programma. 4 Linguaggio (schema) ladder (Ladder diagram) Il nome deriva dall’inglese ladder e viene usualmente denominato “schema a contatti”; a tutt’oggi è quello maggiormente impiegato in campo internazionale per la programmazione dei PLC. I segni grafici utilizzati sono normalizzati IEC 1131 (Fig. 2) e spesso vengono riportati anche sulle unità di programmazione portatili. Lo schema ladder strutturalmente è composto da due linee verticali e da linee orizzontali, sulle quali vengono disegnati gli elementi costituenti il sistema da controllare (Fig. 3). Fig. 2 - Segni grafici usati per il linguaggio ladder (a contatti). Da Norma IEC 1131-3 (CEI 65-40). a) contatto ON; b) contatto OFF; c) contatto rivelatore di transizione positiva (fronte di salita); d) contatto rivelatore di transizione negativa (fronte di discesa); e) variabile esterna o interna (output); f) variabile esterna o interna negata (output not). www. cal der i ni . i t EDI ZI ONICALDERI NI Fig. 3 - a) esempio di schema ladder reale; b) esempio di schema ladder semplificato (abitualmente usato). Si distinguono: • la barra d’alimentazione (riga verticale sinistra), cui fanno capo tutti gli elementi di input; • il ritorno comune o massa (riga verticale destra che spesso viene omessa), cui fanno capo tutte le variabili d’uscita (output); • la zona di test (o zona di input): in questa parte dello schema vengono disegnati i vari input in serie e in parallelo, in chiusura e in apertura, seguendo la logica di evoluzione del processo; a seconda del loro stato verrà stabilita, attraverso il test eseguito dal microprocessore, in funzione del programma utente, la condizione della variabile d’uscita (output); • la zona di azione (o zona di output), destinata alle variabili d’uscita abilitate o meno dalla zona precedente; • i segni + stanno ad indicare che non vi è collegamento fisico tra le due zone, ma solo la logica di processo dettata dalla programmazione; pure non vi è collegamento fisico tra i vari input, ma solo il test (interrogazione), che il microprocessore esegue sul loro livello logico 1 o 0; Di conseguenza non sarà più l’installatore a cablare fisicamente i vari contatti in serie o parallelo ma si limiterà soltanto al collegamento di ogni contatto singolarmente sul modulo di ingresso del PLC. Sarà il microprocessore stesso a livello software, in base al risultato ottenuto dal test ed al programma steso dall’utente, a combinare gli ingressi in serie o in parallelo per abilitare o meno l’uscita. In base al test verrà stabilito il livello 1 (tensione presente) se il contatto sul punto di ingresso del modulo è chiuso, livello 0 se il contatto è aperto. • per semplificare il disegno usualmente il segno + si omette; lo schema prende quindi la forma di figura 4; la lettura dello schema va fatta sempre da sinistra verso destra e dall’alto verso il basso. Come stabilito dalla Norma IEC 1131-3, per l’impiego dei segni grafici già presentati in figura 2 si procede come segue: • viene usato questo segno grafico —| |— se occorre attivare un’uscita quando il contatto è ON (chiuso, livello 1, tensione presente); • viene usato questo segno grafico —|/|— (condizione negata) se occorre attivare un’uscita quando il contatto è OFF (aperto, livello 0, tensione assente). La figura 4 fornisce un esempio applicativo. Nella programmazione ladder, viene denominata linea di combinazione (Fig. 5) quella combinazione di contatti che termina con una variabile d’uscita singola o in parallelo con altre. La linea di combinazione assume varie terminologie a seconda www. cal der i ni . i t EDI ZI ONICALDERI NI Fig. 4 - Uso dei contatti ON e OFF per l’attivazione delle uscite: a) l’uscita è attiva quando il contatto è in stato ON (chiuso); b) l’uscita è attiva quando il contatto è in stato OFF (aperto). Fig. 5 - a) indicazione delle linee di combinazione in uno schema ladder; b) indicazione delle linee di combinazione con altri termini. del tipo di controllore: ad esempio per i PLC SIEMENS o OMRON viene denominata “network” o “segmento”. 5 Conversione degli schemi elettrici funzionali in schemi ladder Lo schema elettrico funzionale può essere convertito in schema ladder osservando alcune indicazioni di carattere generale per tutti i tipi di PLC: • negli schemi elettrici funzionali il flusso logico dei segnali va da sinistra verso destra, viceversa negli schemi ladder dall’alto verso il basso; • nessun output può essere collegato direttamente alla barra di sinistra; per fare ciò occorre interporre un contatto di un relè interno generico o speciale normalmente in condizione ON. Tale contatto è inesistente fisicamente, ma per il PLC è un elemento da controllare come gli altri ingressi effettivi; • non esiste limite al numero dei contatti da inserire nelle linee di combinazione (memoria permettendo); • tutti gli output possono essere utilizzati come contatti input (via software); • nessun contatto può essere disposto a destra dell’output; • è possibile collegare in parallelo più output (come già accennato); • il programma viene eseguito ciclicamente dal primo indirizzo (a cui corrisponde la prima istruzione) fino alla fine del programma. 6 Tecniche di programmazione Molti circuiti elettrici funzionali non possono essere convertiti in schemi ladder semplicemente cambiandone i segni grafici e la disposizione. Si forniscono di seguito alcuni esempi di conversione di schemi funzionali in schemi ladder, per la programmazione dei PLC. Per semplicità i contatti vengono disegnati tutti in chiusura (NO). Nelle figure 6 e 7 la conversione schema funzionale-ladder è immediata e non necessita di commenti; viceversa la figura 8 a mostra la conversione reale che può essere semplificata riscrivendo lo schema come in figura 8 b. Dal punto di vista elettrico il funzionamento non cambia, ma per la programmazione si preferisce spostare il contatto singolo (1) di un ramo parallelo nella parte in basso del ramo stesso, per evitare di usare istruzioni di operazioni tra blocchi, risparmiando memoria e tempo di scansione. Lo schema di figura 9 rappresenta una variante al precedente con aggiunta di un contatto in serie al circuito; nella figura 9a è descritta la conversione reale che può essere semplificata riscrivendo il circuito come in figura 9 b. Elettricamente nulla cambia ma per la programmazione è preferibile risolvere sempre prima i rami in paral- www. cal der i ni . i t EDI ZI ONICALDERI NI Fig. 6 - Schema funzionale con contatti in serie, convertito in schema ladder. Fig. 7 - Schema funzionale con contatti in parallelo, convertito in schema ladder. Fig. 8 - a) schema funzionale con contatti in serie e parallelo, convertito in schema ladder; b) stesso schema semplificato. Fig. 9 - a) schema funzionale complesso convertito in schema ladder; b) stesso schema semplificato. lelo (OR), tenendo presenti le considerazioni precedenti, e quindi la serie (AND). Questo tipo di soluzione è finalizzata al risparmio di righe di istruzione e semplifica la programmazione. La figura 10 propone un circuito complesso con rami in serie ed in parallelo, risolto come da figura 10 a; anche in questo caso conviene riscrivere il circuito come esemplificato nella figura 10 b. Il contatto 1 viene “esaminato” (test) dal PLC 2 volte anche se fisicamente è sempre lo stesso. Volendo paragonare lo schema ad un circuito elettromeccanico, è come se il contatto fosse sdoppiato (Fig. 10 c). Anche questa tecnica consente di evitare l’uso di operazioni tra blocchi, risparmiando memoria e tempo di scansione. La figura 11 presenta un circuito parallelo-serie, diviso in due blocchi (A-B), risolti singolarmente, e combinati successivamente in serie; viceversa per la figura 12, che propone un circuito serie-parallelo, in cui il risultato avviene risolvendo i blocchi (A-B), e combinandoli poi in parallelo1 I blocchi dei casi esposti in alcuni PLC prendono il nome di stack. 1 Con riferimento ai PLC OMRON, le risoluzioni vengono eseguite mediante istruzioni particolari: – AND-LOAD, che indica un’operazione logica di AND tra blocchi; – OR-LOAD, che indica un’operazione logica di OR tra blocchi. www. cal der i ni . i t EDI ZI ONICALDERI NI Fig. 10 - a) conversione in ladder di uno schema funzionale complesso; b) medesimo schema riscritto per semplificarne la programmazione; c) equivalente elettromeccanico del contatto 1. Fig. 11 - Schema funzionale con contatti parallelo-serie, convertito in schema ladder. Fig. 12 - Schema funzionale con contatti serie-parallelo, convertito in schema ladder. Lo schema di figura 13 propone la risoluzione di blocchi serie-parallelo combinati: nel caso esposto si divide il circuito in due blocchi (A-B), si programma ciascun blocco combinandoli successivamente in un unico circuito. Per la risoluzione ogni PLC applicherà i codici del proprio set di istruzioni. Il circuito può comunque essere semplificato usando le tecniche già studiate precedentemente. Come già accennato nella sottounità 3 tutte le uscite e gli ingressi sono considerati elementi software oltre che hardware; di conseguenza è possibile utilizzare un’uscita fisica (hardware) come elemento software, tipicamente come ingresso, in quanto il microprocessore eseguirà un test sul suo stato logico (1-0) come per qualunque altro elemento, usando il risultato in combinazione (AND-OR) con gli altri ingressi fisici, in funzione del programma utente. Tale tecnica è utilizzata, ad esempio, per operazioni di autoritenuta (Fig. 14) o per controllo di interblocchi elettrici (Fig. 15) oppure in tutti gli altri casi in cui non sia indispensabile usare un ingresso fisico (es. segnalazione) con risparmio sia economico che di cablaggio diminuendo il numero di input e quindi i moduli di ingresso. www. cal der i ni . i t EDI ZI ONICALDERI NI Fig. 13 - Risoluzione di blocchi circuitali serieparallelo. Fig. 14 - Esempio di uscita usata come ingresso in un circuito di autoritenuta. Fig. 15 - Esempio di uscita usata come ingresso per operazioni di interblocco. 7 È doverosa un’osservazione riguardante la tecnica finora adottata per la risoluzione degli schemi: i software di programmazione in schema ladder agiscono in modo tale che, anche se il programmatore inserisce le variabili d’ingresso come da schema originale e cioè senza adottare nessuna delle tecniche finora presentate, provvedono ugualmente, nella maggior parte delle combinazioni, alla codifica usando le istruzioni appropriate caso per caso. Nella impossibilità di risoluzione, il software stesso fornisce un segnale di errore; in questa eventualità sarà il programmatore a riconfigurare il circuito. È buona norma quindi, già in fase di progettazione, procedere in tal senso assicurando risparmio di memoria utente e maggiore velocità di scansione. Linguaggio con diagramma funzionale (Sequential Function Chart) È comunemente denominato GRAFCET; prima normalizzato con norme UTE francesi, è divenuto Norma CEI 3-35 (IEC 848). Detto linguaggio descrive le funzioni di comando e controllo legate al processo senza tenere conto del tipo di tecnologia usata, quindi nessun campo viene escluso: è un tipo di programmazione destinata allo svolgimento di tipo sequenziale e denominato anche “passo-passo”; presenta quindi molte affinità con il flow-chart (schema di flusso) e può essere applicato anche a sistemi non elettrici o in abbinamento a due o più tecnologie. Il linguaggio grafico, utilizzando solo segni geometrici ed una simbologia alfanumeri- www. cal der i ni . i t EDI ZI ONICALDERI NI ca, può essere scritto ed interpretato da tecnici con esperienze diverse che non abbiano una conoscenza specifica nel settore elettrico-elettronico. I segni grafici adottati sono descritti nella figura 16. Il linguaggio presenta le seguenti caratteristiche: • • • • • ad ogni passo corrispondono uno o più comandi od azioni; ad ogni transizione corrispondono una o più condizioni; ogni azione è rappresentata da output; ogni transizione è rappresentata da input; passi e transizioni sono unite da segmenti che rappresentano i collegamenti orientati (se non vi è nessuna indicazione, il collegamento è diretto dall’alto verso il basso). Un esempio di scrittura di una transizione in quattro modi diversi è rappresentato in figura 17. Fig. 16 - Segni grafici usati per la preparazione dei diagrammi funzionali per sistemi di comando e controllo (CEI 3-35). a) passo (fase) iniziale, l’asterisco deve essere sostituito dal numero assegnato al passo; b) passo (fase), l’asterisco deve essere sostituito dal numero assegnato al passo; c) passo attivo; d) passo associato ad un’azione; e) transizione; l’asterisco deve essere sostituito da una lettera o numero assegnato alla transizione, i due asterischi vanno sostituiti con le condizioni associate alla transizione: es. testo, grafico o espressione booleana; f) collegamento orientato; g) esempio di salto di passo; h) esempio di inizio sequenze simultanee; i) esempio di divergenza di selezione di sequenza. Fig. 17 - Modi di rappresentazione delle condizioni di transizione (da Norma CEI 3-35). Durante l’evoluzione del processo i passi possono essere: – – attivi; inattivi. Per passo attivo si intende che i comandi o le azioni ad esso associati sono esecutivi (es. eccitare la bobina di una elettrovalvola). Il comando non è memorizzato. Per passo inattivo si intende che i comandi o le azioni ad esso associati devono terminare o mantenere il loro stato (es. eccitare la bobina di una elettrovalvola e mantenerla eccitata). Il comando è memorizzato. www. cal der i ni . i t EDI ZI ONICALDERI NI I vari passi-azioni che si susseguono uno dopo l’altro (Fig. 18), durante il funzionamento di un sistema automatico, iniziano da una situazione di riposo e vengono eseguiti solo dopo il superamento delle condizioni necessarie (transizioni); terminato il ciclo il programma riparte dal passo iniziale. Nella stesura del programma occorre rispettare alcune regole evolutive come indicato nella Norma CEI 3-35: • si dovrà avere almeno un passo iniziale; • deve sempre esistere l’alternanza passo-transizione (Fig. 19); • il superamento di una transizione determina la disattivazione delle azioni associate ai passi precedenti, a meno che non sia diversamente e obbligatoriamente espresso, e l’attivazione delle azioni associate ai passi successivi; • la transizione viene superata quando tutte le condizioni associate sono vere e tutti i passi immediatamente precedenti sono attivi. Il linguaggio con diagramma funzionale può essere rappresentato secondo due livelli: • 1˚ livello, è denominato anche letterale, descritFig. 18 - Esempio di diagramma tivo o funzionale e il compito degli elementi funzionale. che compongono il sistema viene descritto in modo dettagliato; è comprensibile da qualsiasi tecnico (Fig. 20). • 2˚ livello, è denominato anche tecnologico e descrive gli elementi che concorrono alla risoluzione del sistema con specifici riferimenti tecnici; a questa soluzione va sempre abbinata una legenda di interpretazione delle sigle (Fig. 21). A volte è utile descrivere il sistema utilizzando entrambi i livelli (Fig. 22); si parla allora di “descrizione tecnologica (2˚ livello) con didascalie funzionali (1˚ livello)”. Fig. 19 - Descrizione dell’alternanza passotransizione; a) disposizione corretta; b) disposizione errata. Fig. 20 - Diagramma funzionale di 1˚ livello. Fig. 22 - Diagramma funzionale tecnologico con didascalie funzionali. Fig. 21 - Diagramma funzionale di 2˚ livello. www. cal der i ni . i t EDI ZI ONICALDERI NI 8 Linguaggio a lista di istruzioni (Istruction List) È un linguaggio di tipo letterale denominato anche mnemonico, risulta molto potente e non utilizza segni grafici; per contro non si ha la “visione” rapida del funzionamento del sistema come per i precedenti linguaggi. Il set di istruzioni che contiene le abbreviazioni mnemoniche o alfanumeriche del linguaggio, dipende dal tipo di PLC anche se i costruttori si stanno gradatamente uniformando allo standard internazionale IEC 1131. Comune a tutti i PLC è la riga di istruzioni così caratterizzata: INDIRIZZO (step) ISTRUZIONE (codice) OPERANDO (elemento) dove: • indirizzo – è la locazione del dato nella memoria utente; • istruzione (operatore) – è il comando tramite un codice macchina per il PLC (cioè che cosa deve eseguire); • operando o “dato” – è la conseguenza del comando (cioè su quale elemento o variabile hardware o software deve essere eseguito il comando stesso). Un eventuale commento per ogni riga o dove ritenuto più significativo, può essere scritto dopo l’operando, interponendo un carattere specifico di inizio commento (; oppure //). Ciò è importante per programmi complessi in quanto facilita la ricerca guasti o l’eventuale modifica da parte di personale che non necessariamente ha preso parte alla stesura del programma stesso. In pratica il PLC viene istruito riga per riga sull’operazione che deve compiere. Con riferimento al set di istruzioni dei PLC della ditta OMRON, si fornisce un semplice esempio di lista di istruzioni: INDIRIZZO 00000 00001 00002 ISTRUZIONE LD OUT END OPERANDO 000.00 001.01 – Dopo che il programma scritto è trasferito nella memoria utente, il PLC va posto in stato RUN (esecuzione), di conseguenza la CPU inizia a leggere riga dopo riga il programma scritto e ad eseguire sequenzialmente le istruzioni, tramite segnali che viaggiano sulle linee bus (la scansione descritta è molto semplificata). • Il program counter (contatore degli indirizzi della memoria utente), si posiziona sulla locazione 00000. • La CPU esamina l’istruzione relativa a quella locazione, in questo caso LD che significa: esegui un test sullo stato logico (1 o 0) dell’elemento n˚ 000.00 (nel caso specifico un ingresso) e memorizza il risultato nel registro risultati (2 per chiarimenti nella sottounità 3). LD viene usato all’inizio di ogni combinazione logica. • Il program counter è incrementato dalla locazione 00000 a 00001. • La CPU esamina l’istruzione relativa a quella locazione, in questo caso OUT che significa: trasferisci il contenuto del registro risultati (1 o 0) all’elemento n˚ 001.01 (nel caso specifico un’uscita, che sarà quindi attivata o disattivata). • Il program counter è incrementato dalla locazione 00001 a 00002. • La CPU esamina l’istruzione relativa a quella locazione, in questo caso END che significa: fine programma con conseguente reset del program counter alla locazione 00000 e inizio del secondo ciclo di scansione. Ogni riga di istruzioni termina quindi con un’azione; a volte necessitano due righe per l’azione completa come ad esempio per l’attivazione di un temporizzatore: la prima riga è dedicata al comando di attivazione vero e proprio, la seconda per impostare il valore di conteggio. È bene precisare che il linguaggio mnemonico descritto è l’unico comprensibile direttamente dal controllore programmabile in quanto contiene i codici del “linguaggio macchina”. Per gli altri tipi di programmazione studiati precedentemente (ladder, diagramma funzionale, blocchi logici), è l’unità di programmazione che provvede a convertirli in linguaggio macchina. www. cal der i ni . i t EDI ZI ONICALDERI NI 9 Fasi di programmazione del PLC Le varie fasi di programmazione di un PLC sono identificate da una procedura come indicata nel seguito: • • • • • studio del sistema; assegnazione variabili; scelta del linguaggio di programmazione; scrittura del programma, codifica e trasferimento; debug e archiviazione finale. Studio del sistema – È chiaramente la prima fase di preparazione e consiste nello studio del sistema da controllare e cioè un sistema esterno costituito da una o più macchine industriali o altro in ambito civile su cui effettuare un controllo; può essere eseguita mediante analisi esplicativa delle operazioni, oppure con schemi di flusso, descrivendo la sequenza logica di funzionamento nelle varie fasi operative. Nel caso il sistema risultasse piuttosto complesso, è consigliabile suddividerlo in sottoproblemi da risolvere singolarmente, conglobandoli quindi alla conclusione del lavoro. Un attento esame deve essere posto alla determinazione degli elementi necessari a garantire la sicurezza del sistema, descrivendo in modo dettagliato il funzionamento degli elementi stessi e come i medesimi vengono ad interagire con le fasi di programmazione del PLC. Assegnazione variabili – In base allo studio effettuato nella prima fase, risulta immediata l’individuazione del numero degli input, degli output, nonché del tipo di “segnale” (ON-OFF o analogico). Ogni modello di PLC possiede un numero di identificazione dei propri elementi hardware e software, descritto nel manuale d’uso; in questa fase è necessario abbinare tale numerazione agli elementi funzionali individuati nello studio del sistema. L’assegnazione può comprendere anche elementi non hardware quali: temporizzatori, contatori, memorie interne, ecc. TAB. 1 Esempio di assegnazioni variabili. www. cal der i ni . i t EDI ZI ONICALDERI NI Il sistema di assegnazione descritto dipende dal software usato per la programmazione e quindi dal costruttore del PLC; tale sistema non è infatti ancora universalmente adottato e di conseguenza, per conoscere la corrispondenza tra la rappresentazione diretta di una variabile e la locazione fisica (numero di identificazione) dell’elemento indirizzato (I, O, memoria), si rimanda il lettore a quanto specificato nei manuali d’uso a corredo dell’apparecchiatura. È invece compito del programmatore compilare le tabelle di assegnazione di cui un modello indicativo è riportato nella tabella 1. Scelta del linguaggio di programmazione – Stabilite le prime due fasi occorre definire il tipo di linguaggio destinato alla programmazione, tenendo conto del tipo di PLC considerato, dell’esperienza e del genere di preparazione del programmatore, dell’unità di programmazione disponibile e della soluzione del sistema (grafico o letterale). Si ricorda che i tipi di linguaggi normalizzati solitamente impiegati sono: ladder, lista di istruzioni, diagramma funzionale, a blocchi logici. Scrittura del programma, codifica e trasferimento – Durante la scrittura il programma può essere trasferito direttamente nel controllore, tramite l’unità di programmazione oppure tradotto (codifica) e quindi caricato in memoria. Occorre naturalmente conoscere i codici relativi alle istruzioni del PLC considerato. È utile servirsi di tabelle prestampate per snellire e facilitare la funzione di scrittura e codifica; esempi di tali tabelle sono riportati nelle tabelle 2 e 3. Debug e archiviazione finale Per debug si intendono quelle operazioni atte all’individuazione e correzione degli errori in un programma. In questa fase è possibile l’utilizzo del modulo “simulatore” (2 unità didattica L.1.11). Difficilmente si avrà l’esatta versione del programma al primo tentativo, quindi si renderà necessario apportare le correzioni e modifiche del caso. Dopo il massiccio intervento del PC per la programmazione dei PLC, anche il debug può essere eseguito con simulazione software degli I/O, verificando anticipatamente il programma che può essere scritto, ad esempio, in piccoli moduli e quindi testato. Un vantaggio del debug è la possibilità di effettuare il test con gli I/O reali che possono essere mandati in errore e quindi ogni allarme verificato a rischio zero; diversamente non usando la simulazione, il primo vero test della logica di controllo potrà essere verificato soltanto in presenza di una vera emergenza con le eventuali conseguenze. Una volta testato e verificato definitivamente il programma, è necessario “salvare” il lavoro, oltre che nella RAM del controllore, anche su supporti magnetici diversi (floppydisk, EPROM, CD-ROM). La Norma CEI 44-5 (art. 18.8 - 18.9) nei riguardi della documentazione a corredo della macchina industriale per la quale è stato progettato il programma utente, prescrive che debbano essere fornite nel manuale di funzionamento dettagliate informazioni in merito a: metodi di programmazione, verifica del programma, procedure di sicurezza aggiuntive (se richieste). www. cal der i ni . i t EDI ZI ONICALDERI NI TAB. 2 TAB. Esempio per la preparazione degli schemi ladder. 3 Esempio per la programmazione in lista di istruzioni. www. cal der i ni . i t EDI ZI ONICALDERI NI Esercizi da svolgere 1 Convertire in linguaggio ladder i seguenti circuiti: www. cal der i ni . i t EDI ZI ONICALDERI NI 2 Riconfigurare, per ottimizzare la programmazione in ladder, i seguenti circuiti: 3 Descrivere mediante il linguaggio con diagramma funzionale (Grafcet) di primo livello la movimentazione di un’unità operatrice mossa da motore asincrono trifase con comando da due posti. Prevedere la protezione termica. 4 Ripetere l’esercizio 3 con lo stesso linguaggio, ma di secondo livello. 5 Descrivere mediante il linguaggio con diagramma funzionale (Grafcet) di secondo livello con didascalie funzionali, il comando di un motore asincrono trifase con due sensi di rotazione. Prevedere interblocchi di tipo elettrico e relè termico. www. cal der i ni . i t EDI ZI ONICALDERI NI Test di verifica 1 Nella zona di test, in uno schema ladder vengono disegnati: a) solo i temporizzatori software; b) gli output; c) gli input. 2 Avendo a disposizione uno schema di flusso che riguarda l’automazione di un apparato, quale linguaggio di programmazione sarebbe logico utilizzare: a) diagramma funzionale (Grafcet); b) lista di istruzioni; c) ladder. 3 In un linguaggio a lista di istruzioni, l’operando è: a) il primo elemento; b) il secondo elemento; c) il terzo elemento. 4 Se viene usato questo segno grafico —| / |— per una variabile d’ingresso durante la programmazione in schema ladder, cosa significa? a) l’uscita è attivata dall’apertura di quell’ingresso; b) l’uscita è già attivata; c) l’uscita può essere attivata solo dopo il test di un altro ingresso in condizione ON. 5 Le uscite hardware di un PLC possono essere considerate variabili software? a) no; b) solo se non sono realmente attivate; c) sì. 6 Che scopo ha la fase di “assegnazione variabili” prima della fase di programmazione di un PLC? a) testare tutti gli I/O; b) decidere quale tipo di linguaggio usare; c) assegnare un numero di identificazione agli elementi hardware e software. 7 Cosa si intende per “debug”? a) operazione di salvataggio finale di un programma; b) operazione atta a individuare e correggere errori nel programma; c) conversione di uno schema a contatti in schema ladder. 8 Quali sono le regole fondamentali della programmazione in diagramma funzionale? 9 Descrivere i particolari di uno schema ladder. 10 Quali sono le terminologie di uso corrente, anche se non normalizzate, per indicare i principali linguaggi di programmazione? 11 Quali sono invece le terminologie secondo la Norma IEC 1131-1 per indicare i vari linguaggi di programmazione? 12 Spiegare cosa si intende per passo “attivo” e “inattivo” nel linguaggio SFC. 13 Elencare quali sono gli elementi o variabili software. 14 Elencare nell’ordine quali sono le fasi di programmazione di un PLC. www. cal der i ni . i t EDI ZI ONICALDERI NI