Programmable Logic Controller Seconda Parte Sistemi per l automazione industriale Stefano Maggi Marco Bassetti Dipartimento di Elettrotecnica lunedì 10 novembre 2008
Contenuti Principio di funzionamento di un PLC e limiti imposti da questo Limiti imposti dalla programmazione tradizionale e caratteristiche principali dello standard IEC 1131 Modello software di PLC, a singolo o multi processore, rete di PLC, struttura gerarchica del SW, comunicazione tra PLC, partenza di PLC Linguaggio Ladder Maggi Bassetti Mauri lunedì 10 novembre 2008 1
Principio di funzionamento dei PLC Lettura degli ingressi Copia Ingressi in RAM Programma Uso della RAM in accordo al programma Aggiornamento delle Uscite Copia dalla RAM verso le Uscite Program Scan: tipicamente 2-3 ms per Kbyte di programma Maggi Bassetti Mauri lunedì 10 novembre 2008 2
Limiti imposti dal funzionamento (1/2) Limite sul periodo dei segnali di input: Teorema di Shannon se f è la frequenza di variazione, essa deve essere minore o uguale a 1/(2 durata del Program Scan) Esempio: se la durata del Program Scan è 40 ms, allora la massima frequenza del segnale di input può essere 1/(0.08)=12.5 Hz. Maggi Bassetti Mauri lunedì 10 novembre 2008 3
Limiti imposti dal funzionamento (2/2) Ritardi Casuali tra dati di ingresso e uscita del programma Maggi Bassetti Mauri lunedì 10 novembre 2008 4
Limiti della programmazione tradizionale dei PLC (1/2) Stessi linguaggi ma differenti implementazioni, o differenti linguaggi di programmazione Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software riutilizzabile Limiti nella definizione di strutture dati più complesse Maggi Bassetti Mauri lunedì 10 novembre 2008 5
Limiti della programmazione tradizionale dei PLC (2/2) Limiti dei linguaggi di programmazione tipo Ladder per applicazioni di sequencing Difficoltà nel differenziare l'esecuzione di pezzi di uno stesso programma o di più programmi in base alle esigenze temporali Difficoltà nell'eseguire semplici funzioni matematiche (somma, prodotto) in linguaggi di natura elettrica come il Ladder Maggi Bassetti Mauri lunedì 10 novembre 2008 6
Caratteristiche principali dello standard IEC 1131-3 (1/2) Lo standard definisce più linguaggi (5): Ladder, Sequential Function Chart, Instruction List, Function Block Diagram, Structured Text Lo standard permette approcci: top-down e bottom-up. Un programma viene decomposto in Program Organisation Unit (POU) (funzioni, function block, programmi) Lo standard permette il pieno controllo dell'esecuzione di ciascun programma o function block, tramite l'assegnazione a task Maggi Bassetti Mauri lunedì 10 novembre 2008 7
Caratteristiche principali dello standard IEC 1131-3 (2/2) Lo standard permette la definizione di strutture dati Lo standard garantisce la portabilità di gran parte del software. Ciò avviene se coincidono: i sottoinsieme di caratteristiche di linguaggio che ciascun produttore di PLC offre gli aspetti implementativi di ciascun linguaggio Lo standard permette lo sviluppo di programmi orientati al sequencing (ad esempio tramite il Sequential Function Chart - SFC) Lo standard è basato sulla programmazione grafica Maggi Bassetti Mauri lunedì 10 novembre 2008 8
Modello software di un PLC Maggi Bassetti Mauri lunedì 10 novembre 2008 9
Il modello software: CONFIGURATION La configurazione definisce il software per un PLC completo o di un sistema di controllo programmabile Una configurazione è specifica per un particolare tipo di PLC e per una particolare configurazione hardware che include: Risorse di calcolo (schede con certi tipi di microprocessore) Indirizzi di memoria per i canali di input o output Caratteristiche di sistema (es. numero max di task diversi ammissibili e tempo di esecuzione delle istruzioni) Maggi Bassetti Mauri lunedì 10 novembre 2008 10
Il modello software - RESOURCE Una risorsa definisce il supporto per l esecuzione dei programmi IEC. Una risorsa è definita all interno di una configurazione usando la parola RESOURCE seguita da un identificatore e dal tipo di processore sulla quale la risorsa deve essere caricata. La definizione di risorsa contiene la definizione di: Variabili globali Acces path ovvero le variabili che permettono l accesso remoto Programmi Task e function blocks Maggi Bassetti Mauri lunedì 10 novembre 2008 11
Il modello software - TASK Generalmente le differenti parti di un programma sono eseguite a differenti velocità determinate dalle caratteristiche del sistema. La dichiarazione di una task è introdotta dalla parola chiave TASK, dall identificatore della task e dal valore dei seguenti parametri: Parametro Tipo Descrizione SINGLE BOOL Passando da 0 a 1 causa l esecuzione del task una volta sola INTERVAL TIME Il periodo che passa tra due esecuzioni successive PRIORITY UINT La priorità del task. 0 è la più alta. Maggi Bassetti Mauri lunedì 10 novembre 2008 12
Il modello software - PROGRAM Il concetto di programma è quello di un blocco software di considerevoli dimensioni (ad es.il controllo di una parte dell impianto) Può contenere la dichiarazione di variabili globali e ad allocazione fissa Può anche fare riferimento ad access variables Non può contenere istanze di altri programmi Può contenere istanze di Function Blocks che possono essere eseguiti da task diversi Il corpo del programma può essere definito con uno dei linguaggi definiti dalla norma. Maggi Bassetti Mauri lunedì 10 novembre 2008 13
Il modello software - FB Un FUNCTION BLOCK (FB) è caratterizzato da: variabili di ingresso variabili di uscita variabili locali variabili locali che identificano il suo stato un algoritmo espresso utilizzando uno dei linguaggi permessi dalla norma Le variabili interne del FB non sono accessibili dall esterno E possibile accedere ai valori correnti delle variabili di ingresso e uscita di un FB Maggi Bassetti Mauri lunedì 10 novembre 2008 14
Il modello software FUNCTION Spesso le FUNCTION sono scambiate per FB Una FUNCTION è un elemento software che con un particolare set di input produce un risultato primario. (ad es. la funzione SIN()) Le FUNCTION a differenza dei FB non hanno uno stato interno: producono sempre lo stesso risultato per medesimi ingressi. Una funzione ha solo un output (per controllare il flusso dati nei linguaggi grafici ci sono un input e output addizionali, EN ed ENO) Maggi Bassetti Mauri lunedì 10 novembre 2008 15
Il modello software - POU Lo standard definisce program, function blocks e function come Program Organisation Units (POU). Le POU sono componenti dal comportamento ripetitivo che possono essere usate in differenti parti di una applicazione Le POU incoraggiano la riusabilità del codice dal macro-livello con i program, al micro-livello con le function A differenza dei linguaggi di alto livello, la IEC 1131-3 impedisce l utilizzo di POU ricorsive. Questo perché è difficile testare il software ricorsivo e non è predicibile il suo comportamento real-time. Program e Function blocks possono essere descritte con ST, IL, FBD, LD, SFC. Le function con ST, IL, FBC, LD. Maggi Bassetti Mauri lunedì 10 novembre 2008 16
PLC a singolo processore Maggi Bassetti Mauri lunedì 10 novembre 2008 17
PLC multi-processore Maggi Bassetti Mauri lunedì 10 novembre 2008 18
Rete di PLC Maggi Bassetti Mauri lunedì 10 novembre 2008 19
Struttura gerarchica del SW di un PLC Maggi Bassetti Mauri lunedì 10 novembre 2008 20
Comunicazione tra PLC Maggi Bassetti Mauri lunedì 10 novembre 2008 21
Partenze di un PLC COLD Durante una partenza COLD tutte le variabili sono inizializzate a valori di default o a quelli ridefiniti dall utente WARM HOT Durante una partenza WARM solo le variabili NON-RETENTIVE (attributo RETAIN non presente) sono inizializzate ai valori di default o a quelli ridefiniti dall utente. Le variabili con attributo RETAIN non vengono inizializzate ma continuano ad assumere l ultimo valore precedente alla WARM start Durante una partenza HOT nessuna variabile viene inizializzata Maggi Bassetti Mauri lunedì 10 novembre 2008 22
Linguaggio di programmazione Ladder E' il più vecchio linguaggio di programmazione per PLC Si basa su simboli di provenienza "elettrica": binari di potenza (power rail), contatti elettrici e avvolgimenti magnetici (coil) Si articola in linee orizzontali dette rung Ciascun rung può contenere contatti, coil, Function Block e Funzioni Ciascun "rung" deve essere connesso necessariamente al binario di potenza sinistro (left power rail), mentre il collegamento con quello destro è opzionale Maggi Bassetti Mauri lunedì 10 novembre 2008 23
Elementi di base Ladder Power rail Linee Elettriche orizzontali Connessioni ai power rail Contatto normalmente aperto Contatto normalmente chiuso Coil Negated coil Maggi Bassetti Mauri lunedì 10 novembre 2008 24
Utilizzo dei contatti Ad ogni contatto viene associata una variabile binaria. Tale variabile viene solamente letta (può coincidere con un ingresso). Contatto Normalmente Aperto: la corrente fluisce da sinistra a destra se la variabile IN è 1. La corrente fluisce a destra per qualunque scansione del Programma Ladder fino a quando la variabile IN diviene 0 IN Contatto Normalmente Chiuso: la corrente fluisce da sinistra a destra se la variabile IN è 0. La corrente fluisce a destra per qualunque scansione del Diagramma Ladder fino a quando la variabile IN diviene 1 IN Maggi Bassetti Mauri lunedì 10 novembre 2008 25
Utilizzo dei coil Ad ogni coil viene associata una variabile binaria. La variabile viene scritta (può coincidere con una uscita fisica). Coil: la variabile OUT associata al Coil è posta a 1 se vi è una corrente che fluisce da sinistra. La variabile rimane a 1 per qualunque scansione del Programma Ladder fino a quando la corrente cessa di fluire da sinistra. OUT Negated Coil: la variabile OUT associata al Negated Coil è posta a 0 se vi è una corrente che fluisce da sinistra. La variabile rimane a 0 per qualunque scansione del Programma Ladder fino a quando la corrente cessa di fluire da sinistra. OUT Maggi Bassetti Mauri lunedì 10 novembre 2008 26
Altri contatti del linguaggio Ladder (1/2) Contatto sensibile alla transizione 0-1 (Positive Transition-Sensing Contact) IN P La corrente fluisce da sinistra a destra del Positive Transition-Sensing Contact, se la variabile IN passa da 0 a 1. La corrente fluisce a destra solo per una scansione del Programma Ladder (quella relativa alla transizione). Scansione Valore di IN quando viene valutato il rung Corrente alla Destra 1 OFF OFF 2 ON ON 3 ON OFF 4 ON OFF 5 OFF OFF Maggi Bassetti Mauri lunedì 10 novembre 2008 27
Altri contatti del linguaggio Ladder (2/2) Contatto sensibile alla transizione 1-0 (Negative Transition-Sensing Contact) IN N La corrente fluisce da sinistra a destra del Negative Transition-Sensing Contact, se la variabile IN passa da 1 a 0. La corrente fluisce a destra solo per una scansione del Diagramma Ladder (quella relativa alla transizione). Scansione Valore di IN quando viene valutato il rung Corrente alla Destra 1 ON OFF 2 OFF ON 3 OFF OFF 4 OFF OFF 5 ON OFF Maggi Bassetti Mauri lunedì 10 novembre 2008 28
Altri coil del linguaggio Ladder Set Coil OUT S La variabile OUT associata al coil e' posta a 1 se vi e' una corrente che fluisce da sinistra. La variabile rimane a 1 per qualunque scansione del Diagramma Ladder fino a quando viene utilizzato un coil RESET. OUT Reset Coil R La variabile OUT associata al coil e' posta a 0 se vi e' una corrente che fluisce da sinistra. La variabile rimane a 0 per qualunque scansione del Diagramma Ladder fino a quando viene utilizzato un coil SET. Maggi Bassetti Mauri lunedì 10 novembre 2008 29
Logiche Ladder di base Logica AND START STOP M FAN Logica OR START STOP M FAN S IN Maggi Bassetti Mauri lunedì 10 novembre 2008 30
Regole di esecuzione dei Rung Un programma scritto in linguaggio Ladder viene eseguito valutando un rung alla volta. L'ordine di valutazione dei rung è quello che procede dal primo rung in alto verso l'ultimo rung in basso. Quando l'ultimo rung viene valutato, si inizia nuovamente a valutare il primo rung (dopo aver aggiornato le uscite e letti gli ingressi). Nel caso in cui vengano disegnati rung adiacenti, l'ordine di valutazione generalmente procede dal rung posto a sinistra verso quello posto alla destra. Maggi Bassetti Mauri lunedì 10 novembre 2008 31
Effetti collaterali delle regole di esecuzione dei Rung L'ordine di valutazione comporta la necessità di riunificare i rung che operano delle modifiche (Write) sulle stesse variabili o sulle stesse uscite. Esempio: L'effetto di IN1, IN2, e IN3 sulla variabile FAN è nullo. La variabile può essere modificata solo da IN4 e IN5, a causa della posizione del rung che li contiene Riunificando i rung, la variabile FAN verrà aggiornata solo dopo aver valutato il rung composto dagli ingressi IN1, IN2, IN3, IN4 e IN5 IN1 IN4 IN1 IN4 IN2 IN5 Maggi Bassetti Mauri lunedì 10 novembre 2008 32...... IN2 IN5 IN3 FAN IN3... FAN FAN
Uso di istanze di Function Block e di Funzioni E' possibile connettere contatti con gli ingressi dell'istanza del FB o della funzione, purché essi siano binari E' possibile connettere coil con le uscite dell'istanza del FB o della funzione, purché esse siano binarie Nel caso in cui una Istanza di FB o una funzione richieda un ingresso binario sempre TRUE, e' possibile collegare tale ingresso direttamente al power rail di sinistra Eventuali variabili analogiche o valori analogici (interi, reali, temporali, etc.) possono essere connessi direttamente ai corrispondenti ingressi dell'istanza del FB o della funzione Nome Istanza In1 FB1 Out1 In2 In3 Out2 y x T#1s In4 In5 Maggi Bassetti Mauri lunedì 10 novembre 2008 33
Feedback Paths E' possibile che un rung IN1 IN2 IN3 FAN presenti dei contatti e dei coil ai quali vengono associate le IN4 FAN stesse variabili FAN OUT Il valore della variabile associata al contatto FAN è quello valutato nell'ultima valutazione (rung precedente). NOTA: L'uso dei Feedback può essere pericoloso, in quanto può portare ad una instabilità delle uscite del PLC. Ad esempio, l'uscita FAN diviene instabile se inizialmente FAN=0 e nel tempo gli ingressi IN1, IN2, IN3 e IN4 si mantengono costanti e pari a IN1=0, IN2=0, IN3=1, IN4=1 Maggi Bassetti Mauri lunedì 10 novembre 2008 34
Tecnica di programmazione Ladder Rappresentare la soluzione del problema con una macchina a stati. Ogni stato viene rappresentato da una variabile locale. Per ogni stato vengono identificate le azioni da eseguire. Vengono identificate gli eventi che producono il passaggio di stato. Ciascun evento dovrà corrispondere ad una variabile. Il programma in Ladder si compone di tre porzioni: Rappresentazione dell attivazione di un nuovo stato a partire da ciascuno stato per un determinato evento Rappresentazione della disattivazione di ciascuno degli stati a causa dell attivazione di un altro stato Rappresentazione delle azioni eseguite in ciascuno degli stati Maggi Bassetti Mauri lunedì 10 novembre 2008 35