unita` 3 automazione
Transcript
unita` 3 automazione
ITIS G. CARDANO PREMESSA In questa lezione analizziamo le diverse modalità di programmazione del PLC, soffermandoci in particolare sulle programmazioni KOP e AWL. MODALITA’ DI PROGRAMMAZIONE DEI PLC Durante il processo di programmazione del PLC viene utilizzata una interfaccia tra l’operatore che deve organizzare la logica di comando e la CPU presente nel controllore. Questa interfaccia permetterà all’operatore di tradurre il processo in una serie di codici equivalenti alle espressioni delle equazioni logiche booleane che il controllore dovrà utilizzare per stabilire il valore delle uscite in base a quello degli ingressi. Ogni casa costruttrice utilizza un ambiente di programmazione proprietario ed anche le istruzioni disponibili possono essere diverse a seconda del PLC impiegato. L’organismo internazionale IEC (International Electrotechnical Commission), pertanto, ha sentito la necessità di introdurre uno standard che potesse permettere una più facile convergenza tra i diversi costruttori nello sviluppo di software per la programmazione. La norma di riferimento, la IEC 1131, è stata ripresa dalla comunità europea con la normativa EN 61131 e successivamente riportata dalla norma italiana CEI 65-40. Nella parte terza della normativa IEC vengono definiti i cinque differenti linguaggi di programmazione: LINGUAGGI DI PROGRAMMAZIONE GRAFICI Linguaggio a contatti Ladder Diagram (LD) Diagramma a blocchi funzionali Function Block Diagram (FBD) Diagramma Funzionale Sequenziale Sequential Function Charts (SFC) Lista di istruzioni Instruction List (IL) Testo strutturato Structured Text (ST) TESTUALI L’aspetto è la caratteristica che differenzia sostanzialmente tra loro i diversi linguaggi. I primi tre vengono definiti grafici visto che si basano su software che permettono all’operatore di programmare il PLC mediante la costruzione di diagrammi e grafici che in qualche modo ricalcano la struttura dei diagrammi a relè dei circuiti elettromeccanici o gli schemi elettrici dei circuiti logici integrati. I secondi sono definiti testuali poiché si basano su un linguaggio puramente testuale di livello basso o alto a seconda della tipologia adottata. Gli ambienti di programmazione normalmente permettono di mescolare i linguaggi di programmazione adottati internamente ad un progetto in modo da poter sfruttare le peculiarità di ciascuno di essi. Ogni costruttore, inoltre, stabilisce i nomi degli indirizzi degli elementi del PLC e danno queste indicazioni agli operatori per poter predisporre nella programmazione i segnali corretti. La tabella riportata sotto può dare una idea delle diversità presenti tra le diverse case costruttrici e permetterà di comprendere meglio gli esempi che saranno riportati successivamente nella trattazione dei diversi linguaggi di programmazione. With the support of the Lifelong Learning Programme of the European Union. This project has been funded with support from the European Commission. 1 ITIS G. CARDANO OPERANDI DEI PLC SIEMENS S7 300 (CPU 314C-2 DP) SIEMENS S7 200 (CPU 226) OMRON CJ1M (CPU 21) Nr. da A Nr. da a Nr. da a Ingressi Digit. 24 E124.0 E126.7 24 I0.0 I1.0 I2.0 I0.7 I1.7 I2.7 10 000 009 Uscite Digit. 16 A124.0 A125.7 16 Q0.0 Q1.0 Q0.7 Q1.7 6 100 105 2048 M0.0 M255.7 256 M0.0 M0.255 ¥ 1000 1015 256 Z0 Z255 256 C0.0 C0.255 512 CNT000 CNT511 256 T0 T255 256 T0.0 T0.255 512 TIM000 TIM512 Relé interni (memorie) Contatori Timer LADDER DIAGRAM (LD) Il Ladder Diagram (LD) detto anche Linguaggio a contatti o KOP è un linguaggio grafico che si presenta composto da una sequenza di rami formati da una parte decisionale (contatti) a sinistra ed una parte attuativa (bobine) a destra compresi tra due linee di alimentazione verticali. Questa disposizione della struttura genera una rappresentazione grafica che ricorda una scala a pioli (ladder) e proprio da questa similitudine ne deriva il nome. Il Ladder Diagram è un metodo di programmazione che riproduce gli schemi realizzati nei circuiti elettromeccanici e si basa su di un flusso di corrente elettrica che attiva le bobine solo quando le condizioni dei contatti nella parte decisionale ne permette il passaggio. La normativa IEC 1131 prevede, inoltre, che questo flusso di corrente sia ipotizzato da sinistra verso destra nel rung (piolo) e che la logica sia eseguita dall’alto verso il basso, accrescendo così il valore dell’ordine dei rung. La nascita di questo linguaggio di programmazione è storicamente legata all’esigenza di far accettare l’idea di programmare, e quindi utilizzare i PLC, a chi tradizionalmente era abituato a realizzare le logiche di controllo con i relè elettromeccanici. Il blocco di decisione equivale alla espressione logica che determina l’attivazione della bobina di uscita (interna o esterna) ed è formato da una combinazione di elementi logici (AND, OR, NOT) realizzati seguendo uno schema a contatti. In corrispondenza dei contatti e delle bobine si indicheranno gli indirizzi degli elementi che rappresentano. I simboli utilizzati per la programmazione sono: SIMBOLO TIPOLOGIA FUNZIONAMENTO Contatto normalmente aperto (N.A.) INGRESSO Il contatto fa passare corrente se l’ingresso associato ha valore 1 Contatto normalmente chiuso (N.C.) INGRESSO Il contatto fa passare corrente se l’ingresso associato ha valore 0 Bobina monostabile USCITA Si attiva e rimane attiva solo quando le condizioni logiche dei contatti garantiscono la continuità elettrica With the support of the Lifelong Learning Programme of the European Union. This project has been funded with support from the European Commission. 2 ITIS G. CARDANO Bobina a ritenuta bistabile (SET) Bobina a ritenuta bistabile (RESET) USCITA Si attiva quando le condizioni logiche dei contatti garantiscono la continuità elettrica USCITA Si disattiva quando le condizioni logiche dei contatti garantiscono la continuità elettrica Collegamento in serie Funzione logica AND Collegamento in parallelo Funzione logica OR Temporizzatore Attiva l’uscita con un certo ritardo (TV) rispetto all’inserzione condizionata (Start). Presenta a volte un ingresso di reset (Stop) Contatore bidirezionale Attiva l’uscita quando il conteggio arriva al valore impostato (PV). Presenta un canale per incrementare il valore (Up), uno per il decremento (Down) ed uno per il Reset Vediamo alcuni esempi di programmazione KOP: Siemens S7: l’uscita Q0.0 si attiva quando è presente il segnale di ingresso I0.0 Siemens S7: l’uscita Q0.1 si attiva quando sono contemporaneamente presenti i segnali di ingresso I0.0 e I0.1 Siemens S7: l’uscita Q0.1 si attiva quando è presente il segnale di ingresso I0.0 e contemporaneamente è assente il segnale di ingresso I0.1 Omron: l’uscita 200 è attiva quando è presente o il segnale di ingresso 010 o il segnale di ingresso 002 With the support of the Lifelong Learning Programme of the European Union. This project has been funded with support from the European Commission. 3 ITIS G. CARDANO Omron: l’uscita 100 è attiva quando è presente il segnale di ingresso 010 o non è presente il segnale di ingresso 002 Omron: l’uscita 100 è attiva quando sono è presente il segnale 010 o manca il segnale 004 e contemporaneamente manca il segnale 002 o è presente il segnale 005 Omron: l’uscita 100 è attiva quando è presente il segnale 010 e manca il segnale 002 oppure quando manca il segnale 004 ed è presente il segnale 005. FUNCTION BLOCK DIAGRAM (FBD) I Diagrammi a blocchi funzionali sono un linguaggio di programmazione grafico. Questo linguaggio è basato su una rappresentazione delle leggi di attivazione delle uscite ottenute facendo passare dei segnali (condizioni) attraverso dei blocchi grafici interconnessi tra loro e ciascuno dotato di specifiche regole di trasformazione del segnale. Ogni blocco funzionale ha perciò due caratteristiche principali: il tipo di dati in ingresso ed uscita e l’algoritmo che analizzando il valore degli ingressi e delle variabili interne produce i nuovi valori delle uscite. Questo metodo di programmazione si basa su tre regole sintattiche fondamentali: - nessun elemento deve essere analizzato prima che siano stati acquisiti i valori di tutti i propri ingressi - la valutazione di un elemento non sarà completo finché non sono stati determinati i valori di tutte le sue uscite - la valutazione complessiva della rete termina quando tutte le uscite di tutti i suoi elementi sono state determinate. Un esempio di programmazione FBD può essere lo schema riportato sotto: I0.0 I0.1 & I0.2 I0.3 1 Q2.5 L’uscita Q2.5 è attiva quando sono presenti contemporaneamente i segnali I0.0 e I0.1 o quando è presente il solo segnale I0.3 o manca il solo segnale I0.2. 1 With the support of the Lifelong Learning Programme of the European Union. This project has been funded with support from the European Commission. 4 ITIS G. CARDANO SEQUENTIAL FUNCTION CHARTS (SFC) Il Diagramma Funzionale Sequenziale si basa su una rappresentazione grafica del processo tramite una sequenza di fasi (entro cui si eseguono le azioni), legate tra loro dalle transizioni (con cui, al verificarsi di certe condizioni, si passa da una fase attiva ad un’altra). Questo metodo di programmazione serve solo a dare una vista generale del sistema e consente di realizzare delle sequenze di fasi in parallelo o eventualmente con delle priorità e di inserire delle sequenze di retroazione. Non permette di programmare nello specifico le fasi o le condizioni di transizione, perciò essa andrà effettuata successivamente con uno degli altri linguaggi di programmazione. Un esempio di struttura di programma SFC può essere lo schema riportato sotto: Fase 0 Transizione a 1 Azione 1 2 Azione 2 Azione 3 b c 3 Azione 4 d 5 Azione 6 6 Azione 7 Sequenze simultanee e 4 Azione 5 f 7 Azione 8 g INSTRUCTION LIST (IL) L’Instruction List (detto anche AWL) è un linguaggio di programmazione testuale a basso livello. Vista la sua maggior complessità viene usato principalmente per programmare piccole applicazioni o per migliorare parti di una applicazione più complessa. E’ un linguaggio di tipo assemblativo e come tale si basa su di una sintassi del tipo: operatore operando I principali operatori variano a seconda della casa costruttrice del PLC. Un esempio di operatori è rappresentato nella tabella riportata: OPERATORI SIEMENS OMRON Descrizione Inizio linea logica UoO LD Contatto d'ingresso NA Inizio linea negata UN o ON LN NOT Contatto d’ingresso NC Assegnazione = OUT Attivazione bobina non ritentiva Assegnazione tipo Flip-Flop SR S KEEP Attivazione bobina ritentiva With the support of the Lifelong Learning Programme of the European Union. This project has been funded with support from the European Commission. 5 ITIS G. CARDANO Disattivazione bobina ritentiva Assegnazione tipo Flip-Flop SR R Congiunzione U AND Collegamento in serie con un secondo contatto N.A. Congiunzione negata UN AND NOT Collegamento in serie con un secondo contatto N.C. Disgiunzione O OR Collegamento in parallelo con un secondo contatto N.A. Disgiunzione negata ON OR NOT Collegamento in parallelo con un secondo contatto N.C. Collegamento in serie tra gruppi U( … ) AND LD Collegamento in serie tra due gruppi precedentemente definiti Collegamento in parallelo tra gruppi O OR LD Collegamento in parallelo tra due gruppi precedentemente definiti Attivazione temporizzatore L KT T TIM Attivazione temporizzatore Incremento contatore ZV L KZ CNT Incrementa di una unità il valore del contatore Fine programma BE END (FUN 01) Fine programma Come esempio di programmazione AWL vediamo la traduzione della programmazione KOP precedentemente vista per un PLC Omron: U = I0.0 Q0.0 (Siemes) U U = I0.0 I0.1 Q0.1 (Siemens) U UN = I0.0 I0.1 Q0.1 (Siemens) LD 010 OR 002 OUT 200 (Omron) With the support of the Lifelong Learning Programme of the European Union. This project has been funded with support from the European Commission. 6 ITIS G. CARDANO LD OR NOT OUT 010 002 100 (Omron) LD OR NOT LD NOT OR AND LD OUT 010 004 002 005 (Omron) (risultato intermedio A) LD AND NOT LD NOT AND OR LD OUT 010 002 004 005 (risultato intermedio B) (A*B) 100 (Omron) (risultato intermedio A) (risultato intermedio B) (A+B) 100 STRUCTURED TEXT (ST) Lo Structured Text è un linguaggio di programmazione testuale ad alto livello simile al Pascal o ad alcuni Basic. Il vantaggio di questa modalità di programmazione è evidente quando occorre realizzare complesse elaborazioni matematiche o test condizionali con molteplici alternative. In questi casi la programmazione con ST si riduce a poche righe di programma. Questo tipo di programmazione prevede sempre prima la dichiarazione delle variabili e successivamente il codice delle operazioni da effettuare per controllare le uscite. Un esempio di codice scritto in ST potrebbe essere: IF Velocita > 1000 THEN Tensione := Tensione - 10; END_IF Q0.1 := 1; In questo codice viene posta una condizione sulla variabile Velocita ed in base a questa viene ridefinito il valore di una seconda variabile Tensione. Nella parte finale del codice viene assegnato il valore 1 all’uscita Q0.1. With the support of the Lifelong Learning Programme of the European Union. This project has been funded with support from the European Commission. 7