Comments
Transcript
il controllore a logica programmabile (plc)
LA PROGRAMMAZIONE DEI CONTROLLORI A LOGICA PROGRAMMABILE PLC Prof. Raffaele Iervolino Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli, Federico II Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 1 Introduzione • I primi sistemi automatici programmabili furono realizzati alla fine degli anni ’60 nell’industria automobilistica per sostituire i pannelli di controllo a relè • Le caratteristiche di un PLC moderno sono rimaste sostanzialmente invariate (CPU, memoria RAM ed EPROM, interfacce di I/O) • Gli ingressi e le uscite operano in genere in modo digitale a due livelli (di solito 0-24 V) • Un PLC svolge ciclicamente sempre lo stesso programma Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 2 Esempio di funzionamento di un PLC (1/III) Si vuole realizzare un circuito elettrico con 2 interruttori normalmente aperti ed 1 lampada, che si accende solo se entrambi gli interruttori sono chiusi. T1 T2 L P L C I1 I2 T1 T2 O1 L Si noti che con il PLC i 2 interruttori non sono più in serie, ma occupano separatamente 2 ingressi del PLC. Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 3 Esempio di funzionamento di un PLC (2/III) Un generico programma che svolga le funzioni proprie del circuito elettrico può essere così articolato: 1) Controlla lo stato dell’ingresso I1 2) Controlla lo stato dell’ingresso I2 3) Solo se I1 e I2 sono entrambi alti accendi la lampada posta sull’uscita O1 4) Torna al punto 1 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 4 Esempio di funzionamento di un PLC (3/III) T2 T1 L P L C I1 I2 T1 T2 O1 L Mentre il circuito elettrico è diverso dal caso precedente, la connessione degli interruttori e della lampada sul PLC è rimasta invariata!! Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 5 Definizione di PLC (standard IEC 61131) • […] sistema elettronico a funzionamento digitale, destinato all’uso in ambito industriale, che utilizza una memoria programmabile per l’archiviazione interna di istruzioni […] e per controllare, mediante ingressi ed uscite sia digitali che analogici, vari tipi di macchine e processi. Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 6 Programmazione dei PLC • I PLC attualmente non adottano uno standard per la programmazione • Allo stato attuale esistono diversi linguaggi per PLC diversi da macchina a macchina, a volte anche tra macchine dello stesso produttore • Si usano linguaggi di basso livello • I programmi sono poco strutturati • E’ necessario istruire programmatori su diversi linguaggi/dialetti • … Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 7 Lo standard di programmazione dei PLC Si fa riferimento allo standard 61131, Controllori Programmabili, parte 3, Linguaggi di Programmazione, del IEC (Comitato Elettrotecnico Internazionale) per la programmazione dei dispositivi di controllo, recepito nel 1996 dal CEI (Comitato Elettrotecnico Italiano). Esso prevede 5 linguaggi di programmazione: 1)Testo strutturato (ST) 2)Linguaggio a contatti (LD) 3)Diagramma a blocchi funzionali (FBD) 4)Lista di istruzioni (IL) 5)Diagramma funzionale sequenziale (SFC) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 8 Variabili e Tipi di variabili Lo standard 61131 prevede alcuni tipi predefiniti di variabili: 1)INT e UINT per rappresentare numeri interi rispettivamente in [-32768, 32767] ed in [0, 216-1] 2)REAL per rappresentare numeri reali nell’intervallo ±10±38 3)TIME per rappresentare una durata temporale in unità che vanno dai giorni ai ms T#dhmsms 4)DATE e TIME_OF_DAY per rappresentare la data e l’ora 5)STRING per definire le stringhe di caratteri 6)BOOL (1 bit), BYTE (8 bit), WORD (16 bit), DWORD (32 bit), LWORD (64 bit) 7)ANY se la variabile può essere di qualsiasi tipo 8)ANY_NUM se la variabile può essere INT o REAL Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 9 Tipi derivati Possono essere introdotti vari tipi derivati in vari modi: 1) 2) 3) 4) Per equivalenza a quelli predefiniti Per enumerazione Per restrizione dei tipi già definiti Definendo insiemi ordinati di più elementi dello stesso tipo (array) 5) Definendo insiemi di più elementi di tipo diverso (struct) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 10 Esempio TYPE impulsi : UINT(0..1000); stato : (fermo,funzionante,guasto,attesa); temperatura : REAL :=20.0; sens_temp : STRUCT valore : temperatura; ult_calib : DATE; int_calib : TIME; val_max : REAL := 100.0; diagnos : BOOL; END_STRUCT dati_term_forno : ARRAY[1..10] OF sens_temp; dati_term_imp : ARRAY[1..4,1..4] OF dati_term_forno; END_TYPE Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 11 Dichiarazione delle variabili Le variabili vanno dichiarate in testa ai programmi, funzioni e blocchi funzionali, con il costrutto: VAR A,B : REAL; abil : BOOL; conteggio : impulsi; stato_forno : stato; termometro7 : temperatura :=0.0; termocoppia1 : sens_temp; forno1 : dati_term_forno; END_VAR Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 12 IL TESTO STRUTTURATO Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 13 Il Testo Strutturato (ST) E’ un linguaggio di programmazione testuale, di alto livello (Pascal), per le applicazioni dell’automazione. Esempi di operatori contemplati: 1) 2) 3) 4) 5) Assegnazione := Aritmetici +,-,*,/,MOD,** Relazione <,<=,>,>=,=,< > Logici AND, OR, XOR, NOT Parentesi ( e ) per cambiare l’ordine di esecuzione delle operazioni Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 14 Il Testo Strutturato: costrutti di selezione Esistono poi i consueti costrutti di selezione: 1) IF cond THEN istr END_IF 2) IF cond1 THEN istr1 ELSIF cond2 THEN istr2 ELSE istr3 END_IF 3) CASE var OF val_i : istr_i ELSE istr END_CASE Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 15 Il Testo Strutturato: costrutti iterativi • FOR var=val1 TO var=var2 BY step DO istr END_FOR • WHILE cond DO istr END_WHILE • REPEAT istr UNTIL cond END_REPEAT • EXIT per uscire da cicli in maniera immediata Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 16 IL LADDER DIAGRAM Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 17 Il Linguaggio a Contatti • Il linguaggio a contatti (Ladder Diagram) è il più diffuso linguaggio di programmazione per PLC. • Esso prevede l’utilizzo degli elementi: contatto aperto, contatto chiuso, bobina, temporizzatore e contatore, tipici degli schemi a relè elettromeccanici. Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 18 Il Ladder Diagram • La forma del programma deriva dalla logica a relè, con le due linee verticali laterali (i montanti della scala) rappresentati l’alimentazione e con le linee orizzontali (i pioli o rung) che alimentano una bobina se una certa combinazione di contatti abilita il flusso di energia. Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 19 Esempio di programma Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 20 Contatti e bobine • I contatti sono associati agli ingressi digitali oppure a condizioni interne al dispositivo (rappresentati entrambi da bit di memoria). • Una bobina è associata a un bit della memoria e, col suo tramite, comandare una uscita digitale o segnalare una condizione interna. Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 21 Esecuzione di un LD • Un LD viene eseguito secondo una modalità ciclica composta dalle seguenti fasi: – Lettura degli input e scrittura del loro stato in locazioni di memoria particolari – Esecuzione del programma un rung dopo l’altro, procedendo dall’alto verso il basso, da sinistra verso destra – Scrittura delle uscite, prelevando il loro stato da locazioni di memoria particolari Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 22 Es. di organizzazione dell’area dati della memoria RAM • Per fissare le idee l’area dati della RAM può ad es. essere organizzata nel seguente modo: – Area degli input formata da 32 word di 16 bit associate agli indirizzi I1-I32. Per ingressi digitali lo stato è associato al singolo bit x della word y, indirizzato come Ix:y . Gli ingressi analogici sono associati a singole word. – Area degli output con 32 word a 16 bit, con indirizzi U1-U32, relative a uscite digitali e/o analogiche. – Area utente con 512 word indirizzabili come W1W512. Serve per la memorizzazione di condizioni interne. Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 23 Uso di nomi simbolici • E’ possibile assegnare dei nomi simbolici per designare particolari indirizzi allo scopo di migliorarne la leggibilità. Ad es. POMPA=U3:14 associa il nome simbolico POMPA all’indirizzo di memoria U3:14 (uscita digitale). Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 24 Istruzioni di base • Bobine e contatti sono le istruzioni di base del linguaggio a contatti. • I contatti in un rung rappresentano le condizioni logiche da valutare per poter determinare lo stato che deve assumere l’uscita rappresentata dalla bobina. • I contatti e le bobine devono essere sempre associati a bit di memoria oppure a nomi simbolici corrispondenti. Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 25 Contatti NA e NC • Contatto NA -| |- può essere associato a un bit di input (Ix:y), di uscita (Ux:y), interno (Wx:y), … . Se il bit associato vale 1 (ON) il processore chiuderà il contatto assicurando la continuità logica (elettrica) nel rung dove si trova. Se il bit vale 0 (OFF) il contatto rimarrà aperto. • Contatto NC -|/|- è il duale del precedente. Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 26 Bobina • Bobina –( )– serve per controllare lo stato del bit a essa associato che può rappresentare un’uscita (Ux:y) o un marker interno (Wx:y). L’istruzione deve essere sempre inserita sulla destra alla fine del rung: se le condizioni logiche alla sua sinistra sono verificate (esiste cioè una continuità logica/elettrica) il suo stato viene portato a 1 (ON), altrimenti è posto a 0 (OFF). Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 27 Es.1: Programmazione di una XOR I1:4 I1:7 U3:15 U3:15 = (I1:4 AND NOT(I1:7)) OR (NOT(I1:4) AND I1:7) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 28 Es.2: Programmazione di un elemento di memoria (flip-flop SR) SET RESET I2:2 I3:9 U1:1 U1:1 = NOT(I3:9) AND (I2:2 OR U1:1) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 29 Es.3: Riconoscimento di fronte di salita I1:1 W1:2 W1:1 W1:1 = NOT(W1:2) AND I1:1 W1:2 = I1:1 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 30 Esercizio • Tradurre in LD la seguente istruzione in ST IF ((I5 : 1 AND I3 : 1 AND W2 : 5)OR(W2 : 6))AND(W2 : 7 OR T2) SET U1 : 7 1 ENDIF Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 31 Soluzione Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 32 Istruzioni di temporizzazione e conteggio • Permettono di controllare delle operazioni basandosi sul trascorrere del tempo o sul conteggio di eventi • Temporizzatore: se il rung dove si trova il temporizzatore presenta una continuità logica, il temporizzatore è abilitato a contare il trascorrere del tempo. Il suo indirizzo può essere usato come indicatore dello stato del conteggio e sarà falso durante il conteggio e vero alla fine. Si resetterà solo quando la condizione del rung diventa falsa • Temporizzatore a ritenuta: è analogo a prima, ma il valore raggiunto dal conteggio viene conservato se le condizioni di alimentazione diventano false • Contatore: se il rung dove si trova il contatore subisce una transizione falso/vero il contatore incrementa il suo valore di una unità Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 33 Istruzioni per il controllo del programma • L’istruzione di salto permette, se alimentata, di saltare a un rung dove è presente l’istruzione di etichetta corrispondente. • Si ottiene ponendo in un rung il costrutto --->>xyz dove xyz è una stringa che indica dove saltare. • Con tali istruzioni è facile implementare le strutture del tipo IF-THEN-ELSE,WHILE, REPEAT, FOR. • L’istruzione --<RETURN>-- è usata per la terminazione di funzioni e blocchi funzionali Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 34 Es. Utilizzo del salto per una procedura di inizializzazione W1:1 >> xyz (procedura di inizializzazione) W1:1 W1:1 xyz : (programma) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 35 Istuzioni di connessione • La coppia di istruzioni di connessione -->zyx> e >zyx>-- viene utilizzata per spezzare un rung troppo lungo: I1:1 W1:2 > zyx > I2:1 U2:1 > zyx > Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 36 IL DIAGRAMMA A BLOCCHI FUNZIONALI Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 37 Il Diagramma a Blocchi Funzionali • Il FBD è un linguaggio grafico in cui la programmazione avviene mediante assemblaggio di funzioni e/o blocchi funzionali (componenti) analogamente ad un circuito elettronico • Il flusso del segnale procede sempre da sinistra verso destra • Viene usato per implementare soprattutto funzioni logiche booleane e operazioni aritmetiche Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 38 Una rete in FBD • E’ una rete di funzioni e/o blocchi funzionali collegati tra loro • L’ingresso di una funzione o di un blocco funzionale può anche essere direttamente il valore di una variabile o una costante • Le uscite possono anche essere valori di variabili • La negazione di una variabile booleana si può realizzare o mediante una funzione NOT o con un cerchietto posto prima dell’ingresso nel blocco grafico Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 39 Esempio di una rete in FBD F1 I1 x1 I2 x2 y1 F2 x1 I3 y1 U1 x2 x3 y2 F3 I4 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino x1 y1 x2 y2 U2 40 LA LISTA DI ISTRUZIONI Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 41 La Lista di Istruzioni • E’ un linguaggio di basso livello, di tipo assemblativo, composto da sequenze di istruzioni su righi diversi • Ogni istruzione è composta da un operatore (e da un modificatore) e da un operando • Un’istruzione può essere preceduta da una etichetta del tipo x: • Ogni operatore fa riferimento ad un accumulatore e all’operando Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 42 Operatori Predefiniti Gli operatori predefiniti sono: – LD per assegnare all’acc il valore dell’operando – ST per porre il valore dell’acc nella variabile indicata dall’operando – S per porre una variabile booleana a 1 se il valore nell’acc è 1 – R per porre una variabile booleana a 0 se il valore nell’acc è 1 – AND, OR, XOR per operazioni logiche – ADD, SUB, MUL, DIV per operazioni aritmetiche – GT, GE, EQ, NE, LE, LT per comparazioni – JMP per saltare all’etichetta indicata nel campo operando – CAL per realizzare la chiamata di un blocco funzionale – RET per realizzare il ritorno da una funzione o da un blocco funzionale Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 43 I Modificatori Gli operatori possono essere seguiti da modificatori: – N indica una negazione dell’operando – ( indica che l’operatore viene valutato solo se si trova la corrispondente ) – C , usato solo per gli operatori JMP, CAL e RET, serve per indicare che l’operatore è eseguito solo quando il valore corrente dell’acc è 1 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 44 Es. Istruzioni per la XOR LD ANDN OR( ANDN ) ST a b b a c (* metti il valore di a nell’acc *) (* AND dell’acc con il NOT di b *) (* OR dell’acc con l’espressione *) (* conserva l’acc in c *) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 45 PROGRAM ORGANIZATION UNITS (POU) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 46 Unità di organizzazione della programmazione Esistono elementi comuni ai 5 linguaggi: • Variabili: strumento per rappresentare dati • Funzioni: quando l’uscita dipende solo dall’ingresso attuale • Blocchi Funzionali: quando l’uscita dipende dagli ingressi attuali e passati e dalle condizioni iniziali del blocco • Programmi: insieme di elementi e costrutti di programmazione che garantisce il corretto trattamento dei dati di input Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 47 Le POU • L’insieme delle variabili, funzioni, blocchi funzionali, programmi rappresentano le unità di organizzazione della programmazione (POU) • Una POU è sempre composta da 3 elementi: – definizione del tipo di POU e del suo nome – la parte dichiarativa delle variabili e dei loro attributi – Il corpo con le istruzioni nei linguaggi dello standard Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 48 I task, le risorse e la configurazione • I task regolano l’esecuzione di un programma/blocchi funzionali su base periodica, ciclica o al verificarsi di certi eventi particolari • Le risorse sono entità in grado di eseguire i programmi • La configurazione è l’elemento del linguaggio corrispondente a un dispositivo che corrisponde a una o più risorse Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 49 Le Funzioni • Sono POU riusabili che da certi valori di ingresso calcolano un solo valore in uscita (anche vettoriale) • L’uscita ha lo stesso nome della funzione e può essere usato all’interno di espressioni • Possono essere definite in maniera sia testuale che grafica Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 50 Es. Definizione testuale di una funzione FUNCTION nome_fun : tipo VAR_INPUT . . . . ; (* (* END_VAR . . . . (* (* . . . . (* (* (* END_FUNCTION (* tipo della *) (* funzione *) definizione delle *) variabili di ingresso *) altre definizioni di variabili corpo della funzione con assegnazione di un valore a nome_fun Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino *) *) *) *) *) 51 Caratteristiche di una funzione • Il corpo della funzione può essere scritto in uno dei 5 linguaggi dello standard, eccetto l’SFC • Non possono essere definite variabili di uscita, di ingresso/uscita, direttamente rappresentate, esterne, globali, accessibili, a ritenuta Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 52 Definizione grafica di una funzione • La definizione della funzione è sempre racchiusa tra le parole chiavi FUNCTION ed END_FUNCTION • Tuttavia l’interfaccia esterna è definita mediante un blocco rettangolare che ha a sinistra i parametri di input e a destra quelli di output per i quali occorre specificare i nomi e i tipi delle variabili • Occorre infine scrivere il corpo della funzione in uno dei linguaggi possibili Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 53 Es. Definizione grafica della funzione saturazione FUNCTION REAL soglia_sat dato REAL lim_soglia REAL lim_sat REAL IF ABS(dato) < lim_soglia THEN soglia_sat := 0.0; ELSE soglia_sat := MIN(MAX(dato,-lim_sat),lim_sat); END_IF END_FUNCTION Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 54 Es. Definizione testuale della funzione saturazione FUNCTION soglia_sat : REAL VAR_INPUT dato, lim_soglia, lim_sat : REAL; END_VAR IF ABS(dato) < lim_soglia THEN soglia_sat := 0.0; ELSE soglia_sat := MIN(MAX(dato,-lim_sat),lim_sat); END_IF END_FUNCTION Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 55 Funzioni predefinite (1/II) • Funzioni di conversione di tipo e di troncamento: ad es. INT_TO_REAL( ), TRUNC( ) • Funzioni numeriche: ABS, SQRT, LN, LOG, EXP, SIN, ASIN, COS, ACOS, TAN, ATAN • Funzioni aritmetiche: ADD o +, MUL o *, SUB o -, DIV o /, MOD, MOVE o :=, EXPT o ** • Funzioni applicabili a stringhe di bit: SHL o SHR per spostare N bit a sx o dx con riempimento di zeri, ROL o ROR per rotazioni circolari di N bit a sx o dx, AND o &, OR o >=1 nei linguaggi grafici, XOR o =2K+1 nei linguaggi grafici, NOT Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 56 Funzioni predefinite (2/II) • Funzioni di selezione: SEL, MUX, MAX, MIN, LIM • Funzioni di comparazione: GT o >, GE o >=, LT o <, LE o <=, EQ o =, NE o < > • Funzioni sulle stringhe di caratteri: LEN, LEFT, RIGHT, MID per l’estrazione di N caratteri a sx, dx, in mezzo, INSERT, DELETE, REPLACE, FIND • Funzioni relative a operazioni su variabili di tipo temporale Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 57 Overload e estensione delle funzioni • Alcune funzioni possono essere sovraccaricate nel senso che possono usare variabili di ingresso di tipo diverso (es. l’addizione si può usare sia qualsiasi tipo numerico) • Alcune funzioni possono essere estendibili, nel senso che il numero dei loro ingressi può essere variabile (es. l’addizione si può estendere ad un numero generico di addendi) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 58 Controllo di esecuzione • Per le funzioni definite con linguaggi grafici (LD o FBD) è possibile controllare l’esecuzione della funzione mediante un ingresso implicito booleano EN • Allo stesso modo esiste un’uscita implicita booleana ENO che diventa vera quando la funzione è eseguita senza errori • Così, in una catena di funzioni, per essere sicuri che una funzione sia eseguita prima di un’altra basta connettere l’uscita ENO della prima con l’ingresso EN della seconda Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 59 Es. Sottrazione di un offset da una misura (testuale) FUNCTION corr_sens : WORD (*codifica BCD*) VAR_INPUT corr : BOOL; in : WORD; (*codifica BCD*) offset: INT; END_VAR IF corr THEN corr_sens := INT_TO_BCD(BCD_TO_INT(in)-offset); END_IF END_FUNCTION Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 60 Es. Sottrazione di un offset da una misura (grafico) FUNCTION BOOL corr_sens corr WORD in INT offset corr WORD BCD_TO_INT ENO EN SUB EN ENO INT_TO_BCD EN corr_sens in offset END_FUNCTION Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 61 I blocchi funzionali • Sono delle POU dove i valori delle uscite non dipendono solo dagli ingressi ma anche dalle variabili interne • Ciò significa che i valori delle variabili interne e di uscita si devono conservare tra due esecuzioni successive del blocco funzionale • Il corpo del blocco funzionale può essere scritto in uno dei 5 linguaggi dello standard, compreso l’SFC Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 62 Es. Definizione testuale di un blocco funzionale FUNCTION_BLOCK esempio VAR_INPUT . . . . ; (* definizione delle *) (* variabili di ingresso *) END_VAR VAR_OUTPUT . . . . ; (* definizione delle *) (* variabili di uscita *) END_VAR . . . . (* altre definizioni di variabili *) . . . . (* corpo del blocco funzionale *) END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 63 Definizione grafica di un blocco funzionale • La definizione grafica di un blocco funzionale è sempre racchiusa tra le parole chiavi FUNCTION_BLOCK e END_FUNCTION_BLOCK • Tuttavia l’interfaccia esterna è definita mediante un blocco rettangolare che ha a sinistra i parametri di input e a destra quelli di output. Per le variabili interne bisogna specificare i nomi e i tipi • Occorre infine scrivere il corpo della funzione in uno dei linguaggi possibili Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 64 Blocchi funzionali predefiniti Lo standard prevede che vi siano blocchi funzionali predefiniti: – due flip-flop, per memorizzare una condizione logica (priorità del set e del reset) – due rilevatori di fronte (salita e discesa) – contatori a incremento, a decremento e bidirezionali – temporizzatori o timer a impulso, on-delay, offdelay Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 65 Es. Blocco flip-flop SR FUNCTION_BLOCK SR VAR_INPUT S1,R : BOOL ; END_VAR VAR_OUTPUT Q1 : BOOL; END_VAR Q1 := S1 OR (Q1 AND NOT R) END_FUNCTION_BLOCK Q1 S1 Q1 R SR BOOL S1 BOOL R Q1 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino BOOL 66 Es. Blocco flip-flop RS FUNCTION_BLOCK RS VAR_INPUT S,R1 : BOOL ; END_VAR VAR_OUTPUT Q1 : BOOL; END_VAR Q1 := NOT R1 AND (Q1 OR S) END_FUNCTION_BLOCK S R1 Q1 Q1 RS BOOL S BOOL R1 Q1 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino BOOL 67 Es. Rilevatore di fronte di salita FUNCTION_BLOCK R_TRIG VAR_INPUT CLK : BOOL ; R_TRIG END_VAR VAR_OUTPUT BOOL CLK Q : BOOL; END_VAR VAR RETAIN AUX : BOOL:=0; END_VAR LD CLK (* corpo in IL *) ANDN AUX ST Q LD CLK ST AUX END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino Q BOOL 68 Es. Rilevatore di fronte di discesa FUNCTION_BLOCK F_TRIG VAR_INPUT CLK : BOOL ; END_VAR VAR_OUTPUT Q : BOOL; END_VAR VAR RETAIN AUX : BOOL:=1; END_VAR CLK AUX Q F_TRIG BOOL CLK Q BOOL (* corpo in LD *) AUX END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 69 Osservazioni sui rilevatori di fronte • I riconoscitori di fronte possono essere anche utilizzati implicitamente sulle variabili di input di altri blocchi funzionali • Tali variabili vanno però definite con il tipo BOOL esteso con i qualificatori R_EDGE o F_EDGE • In caso di definizione grafica sulle linee di ingresso si pongono i simboli > o < Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 70 Es. Contatore a incremento FUNCTION_BLOCK CTU VAR_INPUT CU : BOOL R_TRIG; R : BOOL; BOOL PV : INT; END_VAR VAR_OUTPUT BOOL Q : BOOL; CV : INT; INT END_VAR IF R THEN CV := 0; ELSIF CU AND (CV<PV) THEN CV := CV+1; ENDIF Q := (CV=PV); END_FUNCTION_BLOCK CTU >CU Q BOOL R CV INT PV Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 71 Es. Contatore a decremento e contatore bidirezionale CTUD BOOL CTD BOOL >CD Q BOOL LD CV INT BOOL PV INT >CU BOOL >CD BOOL R BOOL LD INT QU BOOL QD BOOL CV INT PV Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 72 Legenda variabili contatori • • • • • • CU = ingresso sui cui fronti di salita il contatore è incrementato CD = ingresso sui cui fronti di salita il contatore è decrementato R = reset (porta a zero il conteggio) PV = valore del conteggio di ingresso LD = carica il contatore con il valore PV Q = segnala che il contatore ha finito il conteggio (ha raggiunto il valore del conteggio per il CTU oppure zero per il CTD) • QD = segnala che il contatore CTUD ha raggiunto lo zero • QU = segnala che il contatore CTUD ha raggiunto il valore PV • CV = valore raggiunto dal contatore Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 73 Osservazioni sui contatori • Occorre sempre prevedere un limite massimo al valore del conteggio PV assegnabile ad un contatore • Questo limite può essere superato ponendo i contatori in cascata Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 74 Timer a impulso, on-delay e off-delay • TP o timer a impulso genera in uscita una finestra rettangolare di durata prestabilita quando l’ingresso diventa vero • TON o timer on-delay alza la sua uscita dopo che è trascorso il tempo impostato da quando l’ingresso è alto, che deve restare tale, altrimenti il timer si resetta (ritardo di accensione) • TOF o timer off-delay ha un’uscita alta quando l’ingresso è vero e si abbassa dopo il tempo impostato quando l’ingresso diventa falso (ritardo di spegnimento) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 75 Es. Definizione grafica del TP IN TP BOOL IN Q BOOL TIME PT ET TIME Q PT PT PT t t dove: • IN = ingresso che fa partire la temporizzazione • PT = tempo da contare • Q = uscita booleana su cui il temporizzatore agisce • ET = tempo trascorso Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 76 Es. Definizione grafica del TON IN TON BOOL IN Q BOOL TIME PT ET TIME Q PT PT t t dove: • IN = ingresso che fa partire la temporizzazione • PT = tempo da contare • Q = uscita booleana su cui il temporizzatore agisce • ET = tempo trascorso Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 77 Es. Definizione grafica del TOF IN TOF BOOL IN Q BOOL TIME PT ET TIME Q PT PT t t dove: • IN = ingresso che fa partire la temporizzazione • PT = tempo da contare • Q = uscita booleana su cui il temporizzatore agisce • ET = tempo trascorso Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 78 Osservazioni sui temporizzatori • Anche per i temporizzatori è previsto un tetto massimo al PT • Tale valore può essere superato mettendo in cascata vari timer, realizzando così un conteggio di tempo pari alla somma dei singoli valori • E’ possibile anche mettere in cascata ad un timer un contatore, e in tal caso il valore del conteggio è dato dal prodotto dei valori PT e PV Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 79 Note sui blocchi funzionali • Un blocco funzionale può contenere la chiamata ad altri blocchi funzionali o funzioni • All’atto della definizione di un blocco è creata una loro istanza con nome e struttura dati univoci • Un’istanza di un blocco funzionale si definisce come una variabile, con la sua stessa visibilità • Oltre ai blocchi funzionali predefiniti, è possibile creare blocchi funzionali definiti dall’utente Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 80 Es. Gestione di una risorsa comune (testuale) FUNCTION_BLOCK semaforo VAR_INPUT richiesta, rilascio : BOOL; END_VAR VAR_OUTPUT impegnata : BOOL; END_VAR VAR aux : BOOL :=0; END_VAR impegnata := aux; IF richiesta THEN aux := 1; ELSIF rilascio THEN impegnata := 0; aux := 0; ENDIF END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 81 Es. Gestione di una risorsa comune (grafica) FUNCTION_BLOCK BOOL semaforo richiesta impegnata BOOL BOOL rilascio VAR aux : BOOL:=0; END_VAR ... (* corpo in uno dei linguaggi *) ... END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 82 Es. Realizzazione di un’onda quadra su una variabile booleana (testuale - ST) FUNCTION_BLOCK ondaquadra VAR_INPUT abilita : BOOL; durata_ON, durata_OFF : TIME; END_VAR VAR_OUTPUT uscita : BOOL; END_VAR VAR timer1, timer2 : TON; (*due istanze di timer TON*) END_VAR timer1(IN:=NOT(timer2.Q) AND abilita, PT:=durata_OFF); timer2(IN:=timer1.Q, PT:=durata_ON); uscita:=timer1.Q; END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 83 Es. Realizzazione di un’onda quadra su una variabile booleana (grafica) abilita timer2.Q timer1 durata_OFF timer1.Q IN Q PT ET N.B. il solo corpo della funzione ondaquadra è in linguaggio a contatti timer2 durata_ON IN Q PT ET uscita Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 84 Es. Realizzazione di un’onda quadra su una variabile booleana (grafica) abilita timer1 AND durata_OFF IN Q PT ET uscita timer2 durata_ON IN Q PT ET N.B. il solo corpo della funzione ondaquadra è in FBD Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 85 Es. Realizzazione di un’onda quadra su una variabile booleana (testuale - IL) LDN AND ST LD ST CAL CAL LD ST timer2.Q abilita timer1.IN durata_OFF timer1.PT timer1 timer2(IN:=timer1.Q, PT:=durata_OFF) timer1.Q uscita N.B. il solo corpo della funzione ondaquadra è in IL Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 86 Es. Chiamata del blocco funzionale ondaquadra ondaquadra(abilita:=ing, durata_ON:=t#2s, durata_OFF:=t#3s, uscita:=led); ondaquadra ing t#2s abilita uscita durata_ON t#3s durata_OFF Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino led 87 Es. Blocco funzionale antirimbalzo (grafica-FBD) FUNCTION_BLOCK antirimbalzo BOOL in TIME durata out BOOL N.B. Serve per valutare un valore booleano solo se è rimasto costante per un certo tempo VAR T1, T2 : TON; FLIPFLOP : SR; END_VAR in IN T1 PT IN durata Q ET T2 PT Q FLIPFLOP S1 Q1 R out ET END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 88 I Programmi • Sono insiemi di elementi e costrutti dei 5 linguaggi di programmazione dello standard per il controllo di una macchina o di un processo • Si possono considerare come dei macro-blocchi funzionali con le seguenti caratteristiche: – definizione di variabili direttamente rappresentate in memoria – sono le uniche POU che possono accedere alle variabili rappresentative degli input e output fisici del PLC – definizione di variabili globali e variabili di accesso che altri programmi remoti possono indirizzare (VAR_ACCESS) – non possono istanziare se stessi – istanze di programmi possono solo essere dichiarate a livello di risorsa Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 89 Es. Definizione testuale di un programma PROGRAM nome VAR_INPUT . . . . ; (* definizione delle *) (* variabili di ingresso *) END_VAR VAR_OUTPUT . . . . ; (* definizione delle *) (* variabili di uscita *) END_VAR . . . .(* altre definizioni di variabili *) . . . .(* corpo del programma *) END_PROGRAM Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 90 I Compiti/Task • Il compito/task serve per far eseguire un programma o un blocco funzionale in maniera periodica o al verificarsi di certi eventi • Per definire un compito si possono usare: – il parametro SINGLE di tipo BOOL, che indica la variabile booleana il cui fronte di salita è l’evento che causa un’unica esecuzione di un programma/blocco funzionale – il parametro INTERVAL di tipo TIME che indica la durata del ciclo per un compito di tipo periodico – in mancanza dei due parametri sopra descritti si definisce un compito ciclico continuo – il parametro PRIORITY di tipo UINT che indica la priorità del compito (0 è la massima) ed è usato dallo schedulatore del dispositivo per gestire i vari compiti Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 91 Osservazione sulle priorità dei task • Se non viene definita la priorità di un task è quella minima • Lo schedulatore (o algoritmo di schedulazione) dipende dal particolare PLC e può essere pre-emptive (i task di priorità maggiore possono interrompere quelli a priorità minore) o non pre-emptive Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 92 Es. Definizioni di task TASK TASK TASK TASK ciclo_controllo(INTERVAL:=t#20ms,PRIORITY=0); allarme(SINGLE:=flag_allarme,PRIORITY=2); background ciclo_refresh(INTERVAL:=t#10ms,PRIORITY=5); dove: ciclo_controllo è un task periodico da eseguire ogni 20ms a priorità massima allarme è un task da eseguire una sola volta quando la variabile booleana flag_allarme passa da falso a vero background è un compito ciclico a minima priorità ciclo_refresh è un compito periodico da eseguire ogni 10ms Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 93 Utilizzo dei task • Per assegnare un programma/blocco funzionale ad un particolare compito in maniera testuale si usa la parola chiave WITH • In maniera grafica si scrive il nome del task nel blocco grafico • Se un programma/blocco funzionale non è associato a un task, per default è eseguito in maniera ciclica continua con la minima priorità Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 94 Le Risorse • Una risorsa/resource è un entità che è capace di eseguire un programma • Si definisce con la parola chiave RESOURCE + nome identificativo + ON + tipo di processore su cui va caricata; alla fine della definizione va posta la parola chiave END_RESOURCE • Vanno definite poi eventuali variabili globali, ad accesso remoto, compiti e programmi che la compongono • Per i programmi vanno assegnate le loro variabili di input e output collegandole a indirizzi di memoria corrispondenti a input e output fisici • In particolare viene creata una istanza del programma, definito come un blocco funzionale, collegata a un compito e alle variabili su cui deve operare Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 95 La Configurazione • Corrisponde alla definizione di tutto il software che va caricato su un PLC • Lo scopo della configurazione è: – definire le risorse a disposizione e allocare su di esse i programmi – indicare la priorità di esecuzione dei programmi – definire le variabili globali accessibili da tutti i programmi Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 96 Definizione di una configurazione • Si definisce con la parola chiave CONFIGURATION + nome • Vanno poi definite le variabili globali visibili da tutti gli elementi della configurazione e le variabili di accesso remoto • Vanno poi definite le risorse che la compongono (in pratica sono i processori a disposizione), che contengono i compiti e i programmi da assegnare ad ogni processore • La parola chiave END_CONFIGURATION chiude la definizione Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 97 Es. Definizione di una configurazione CONFIGURATION controllore_cella VAR_GLOBAL A : REAL; (* variabili visibili in tutta *) B : TIME; (* la configurazione *) END_VAR RESOURCE processore_1 ON pentium VAR_GLOBAL flag_allarme : BOOL; (* visibile in tutta *) (* la risorsa *) END_VAR TASK ciclo(INTERVAL:=t#20ms,PRIORITY=0); TASK allarme(SINGLE:=flag_allarme,PRIORITY=2); PROGRAM tornio : controllo_macchina (IN1:=…,IN2:=…,…,OUT1:=…,OUT2:=…,…) WITH ciclo; PROGRAM all_tornio : gestione_allarmi (IN1:=…,IN2:=…,…,OUT1:=…,OUT2:=…,…) WITH allarme; END_RESOURCE RESOURCE processore_2 ON AB486 PROGRAM cella : coordinamento (IN1:=…,IN2:=…,…,OUT1:=…,OUT2:=…,…); END_RESOURCE END_CONFIGURATION Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 98 IL DIAGRAMMA FUNZIONALE SEQUENZIALE Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 99 Diagramma funzionale sequenziale • Il linguaggio GRAFCET, adottato sin dal 1988 dal CEI come linguaggio per la descrizione dei sistemi di automazione industriale, è stato incluso nello standard 61131-3 con il nome di Sequential Functional Chart (SFC) • Le sue caratteristiche ed i suoi scopi tuttavia sono diversi da quelli degli altri 4 linguaggi dello standard Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 100 Caratteristiche del SFC • Si usa principalmente per la programmazione di algoritmi di controllo di tipo logico-sequenziale • Poiché il comportamento di un algoritmo in SFC dipende dallo stato precedente, si può utilizzare per programmare blocchi funzionali e programmi ma non funzioni • Gli elementi base di un SFC sono – la fase (o tappa/passo) con le eventuali azioni associate – la transizione, con la condizione associata – l’arco orientato che connette fasi e transizioni Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 101 La fase • E’ una condizione del sistema modificabile solo all’occorrenza di un determinato evento, che genera una transizione che porta il sistema in una nuova fase • Può essere in un certo istante attiva o inattiva • La condizione di un SFC è data dall’insieme delle sue fasi attive • Se una fase è attiva, il comportamento del programma/blocco funzionale descritto con l’SFC è definito dalle azioni associate a quella fase Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 102 Definizione di una fase • Graficamente si definisce con un rettangolo al cui interno viene scritto il nome della fase • Il rettangolo può essere connesso ad altri elementi (transizioni) attraverso connettori sul bordo superiore e inferiore • Esiste anche una definizione testuale con il costrutto: STEP nome_fase : azioni associate END_STEP • Le fasi iniziali (attivate all’inizio dell’esecuzione) si distinguono graficamente ponendo due lineette verticali nel rettangolo, ovvero testualmente con: INITIAL_STEP nome_fase : azioni associate END_STEP • Lo standard prevede una sola fase iniziale per ogni grafo SFC • Un blocco funzionale/programma può essere costituito da più grafi SFC non connessi Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 103 Note addizionali (1/II) • La definizione di una fase nome_fase comporta la definizione di una variabile booleana nome_fase.X detta segnalatrice /marker della fase, il cui valore è 1 se la fase è attiva, altrimenti è 0 • Il valore di questa variabile è disponibile per la connessione grafica alla destra del rettangolo della fase • Inizialmente vale 1 per le fasi iniziali, e 0 per tutte le altre • Solo a scopo illustrativo, per indicare graficamente lo stato di una fase si ricorre per convenzione ad un pallino all’interno del rettangolo per indicare la fase correntemente attiva Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 104 Note addizionali (2/II) • La definizione di una fase nome_fase comporta la definizione di una variabile TIME nome_fase.T che rappresenta la durata dell’ultima attivazione della fase (se la fase è attiva, è il tempo trascorso dalla sua attivazione, se inattiva è la durata dell’ultima attivazione) • Inizialmente questa variabile è impostata al valore t#0s per tutte le fasi • Le variabili nome_fase.X e nome_fase.T non sono modificabili dall’utente, che può però utilizzarle • Esse vanno inoltre considerate come variabili locali nella POU in cui l’SFC è definito Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 105 La transizione • E’ indicata da una barretta trasversale sull’arco orientato che collega le fasi • Rappresenta la condizione che potrebbe far cambiare lo stato delle fasi • Ad ogni transizione pertanto è associata una condizione, ossia una funzione booleana di variabili booleane, ovvero un’equazione a valori booleani o asserzioni Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 106 Definizione di una transizione • Lo standard prevede vari modi per definire le condizioni delle transizioni: – espressione in ST a destra della barretta – rete in LD a sinistra della barretta o collegata ad essa con un connettore – rete in FBD a sinistra della barretta o collegata ad essa con un connettore – assegnando un nome alla transizione, a destra della barretta, e definendola a parte con il costrutto TRANSITION nome := …; (* condizione *) END_TRANSITION – utilizzando il costrutto (senza nominare la transizione) TRANSITION FROM fase1 To fase2 := …; (* condizione *) END_TRANSITION Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 107 Gli archi orientati • Collegano tra loro le fasi, stabilendone la sequenza, e sono interrotti dalle barrette delle transizioni • L’orientamento va sempre dal bordo inferiore di una o più fasi al bordo superiore di una o più fasi • Anche se non necessario, si possono orientare gli archi con freccette, specialmente per connessioni dal basso verso l’alto Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 108 Note addizionali • Se più fasi convergono in una stessa transizione o se alla transizione succedono più fasi, si usa una doppia linea orizzontale per evidenziare le sequenze che devono evolvere in parallelo • Per definizioni testuali dell’SFC, l’orientamento è fissato con i costrutti che definiscono le transizioni • In generale, un grafo composto da fasi, transizioni e archi orientati è un SFC se: – due fasi non sono connesse direttamente, ma vi è una transizione tra loro – due transizioni non sono connesse direttamente, ma vi è almeno una fase tra loro Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 109 Es. Definizione grafica di un SFC quiete a AND b avvio c d fase_C fase_A e AND NOT(f) TR25 TRANSITION TR25 :=(fase_C.T>=t#30s)AND(fase_B.X); END_TRANSITION fase_D fase_B 1 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 110 Es. Definizione testuale di un SFC INITIAL_STEP quiete : END_STEP STEP avvio : END_STEP STEP fase_A: END_STEP STEP fase_B: END_STEP STEP fase_C: END_STEP STEP fase_D: END_STEP TRANSITION FROM quiete TO avvio:= a AND b; END_TRANSITION TRANSITION FROM avvio TO fase_A,fase_C:=c OR d; END_TRANSITION TRANSITION FROM fase_A TO fase_B:= e AND NOT(f); END_TRANSITION TRANSITION FROM fase_C TO fase_D:=(fase_C.T GE t#30s) AND (fase_B.X); END_TRANSITION TRANSITION FROM fase_B, fase_D TO quiete:=1; END_TRANSITION Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 111 Le azioni • Ad ogni fase si possono associare delle azioni • Si possono definire sia graficamente, indicandone il nome e il corpo di istruzioni, sia testualmente con il costrutto ACTION nome_azione: . . . (*corpo dell’azione*) END_ACTION • Anche una semplice variabile booleana può essere un’azione, nel senso che se eseguita la variabile è portata a 1 (in tal caso non è presente il corpo dell’azione) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 112 Definizione grafica di un’azione (1) (2) (3) (4) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 113 Definizione del blocco di azione (1/II) Nel campo (1) va posto il qualificatore dell’azione che può essere: – assente o N per qualificare l’azione come non memorizzata, da eseguire fintanto che la fase è attiva e ancora una volta quando la fase è disattivata – P per qualificare un’azione da eseguire una sola volta quando la fase è attivata – D insieme ad una costante di tipo TIME per qualificare un’azione ritardata nel tempo se la fase è ancora attiva e sino alla fine dell’attivazione, e poi ancora per una volta – L insieme ad una costante di tipo TIME per qualificare un’azione limitata nel tempo, eseguita per la durata indicata o per la durata dell’attivazione della fase se minore, e poi ancora per una volta – S o R per indicare il set o reset di un’azione memorizzata, che se settata in una fase resta in esecuzione anche dopo la disattivazione della fase, fino a quando non viene resettata, e poi ancora per un ciclo di scansione – DS insieme ad una costante di tipo TIME per qualificare un’azione ritardata e memorizzata dopo la durata indicata se la fase è ancora attiva – SL insieme ad una costante di tipo TIME per qualificare un’azione come memorizzata e limitata nel tempo, cioè eseguita per il tempo indicato anche se la fase si è disattivata Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 114 Definizione del blocco di azione (2/II) • Nel campo (2) va posto il nome dell’azione • Nel campo (3) va posta una variabile indicatrice (booleana) che è messa a 1 quando l’esecuzione dell’azione è terminata (ha solo scopi di documentazione e può essere omessa) • Nel campo (4) va posto il corpo dell’azione, cioè quello che deve essere fatto, utilizzando uno dei linguaggi standard (compreso lo stesso SFC). Tale campo può essere omesso se l’azione viene definita a parte Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 115 Connessione delle azioni alle fasi • Il blocco di azione può essere connesso alla fase graficamente, tramite un collegamento a destra del rettangolo della fase, che stabilisce una relazione con la variabile segnalatrice della fase • Una fase può essere connessa a più blocchi di azione • In alternativa si può ricorrere ad una definizione testuale del tipo: STEP nome_fase: var_booleana(N); (* azioni senza *) altra_var_booleana(P); (* corpo *) AZIONE_COMPLESSA(L,t#30s,ind); (*a parte*) END_STEP Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 116 Corpo dell’azione in SFC • Lo standard consente di definire il corpo di un’azione anche in SFC • Ciò consente di sviluppare un programma in SFC con una metodologia top-down, individuando prima le macro-fasi in cui passa il sistema e poi, per ognuna di esse, sviluppando in dettaglio nelle azioni le sequenze previste Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 117 Note addizionali sui blocchi di azione • Lo standard consente l’uso di una variabile booleana associata implicitamente ad ogni azione nome_azione.Q che è vera quando l’azione deve essere eseguita • Le fasi cui non sono associate azioni possono essere qualificate come fasi di attesa (prima di passare ad un’altra fase) • Lo standard prevede che i blocchi di azione possono essere utilizzati anche nel LD e nel FBD (in LD il blocco è attivato se alimentato; in FBD il blocco è attivato se l’ingresso booleano è vero) • In ambedue i linguaggi LD e FBD, la variabile indicatrice del blocco di azione (campo (3)) può essere usata per segnalare il completamento dell’azione Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 118 Regole di evoluzione 1) Date le seguenti definizioni: – – una transizione è detta abilitata se tutte le fasi a monte di essa sono attive una transizione è detta superabile se è abilitata e la condizione a essa associata è vera una prima regola di evoluzione dell’SFC afferma che se una transizione è superabile essa viene effettivamente superata: tutte le fasi a monte vengono disattivate e tutte le fasi a valle vengono attivate 2) Le operazioni di disattivazione/attivazione si susseguono nell’ordine indicato e la loro durata effettiva, piccola ma non nulla, è legata alla particolare implementazione ed è data dal tempo che intercorre tra due valutazioni successive del grafo Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 119 Il problema dell’ambiguità Può capitare che più transizioni distinte diventino superabili nello stesso istante. Per rimuovere tale ambiguità, si è introdotta la regola: 3) Se più transizioni diventano superabili nello stesso istante, esse sono tutte superate contemporaneamente Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 120 Il problema della stabilità Un altro problema che può verificarsi è che una fase sia instabile, nel senso che ha la condizione associata alla transizione di uscita già vera quando la fase viene attivata. In questo caso lo standard stabilisce che le azioni associate siano comunque eseguite prima della disattivazione della fase (cioè la durata dell’attivazione di una fase non può essere nulla) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 121 Strutture classiche di programmazione in SFC A A B A cond1 cond1 B B Sequenza semplice cond2 cond2 C Scelta o divergenza Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino C Convergenza 122 Osservazioni sulla divergenza • Quando è presente una scelta/divergenza, occorre che le condizioni di scelta siano mutuamente esclusive • La mutua esclusione tra le condizioni di scelta è garantita quando esse non sono mai vere contemporaneamente per loro natura • In caso contrario occorre impostarla per costruzione ad es.: cond1’:=cond1; cond2’:=cond2 & (NOT cond1); Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 123 Osservazioni sulla convergenza • La convergenza è la chiusura naturale di una scelta • Casi particolari di scelta+convergenza sono il salto di una sequenza e il ciclo di una sequenza Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 124 Salto e ciclo di una sequenza A A B B C C Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 125 Parallelismo o concorrenza f1 T1 f11 f21 f31 Se T1 diventa superabile si attivano contemporaneamente f11,f21, f31, dando luogo a diverse sequenze che evolvono indipendentemente Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 126 Sincronizzazione f21 f11 f31 T1 Perché T1 sia superata occorre che f11,f21,f31 siano tutte attive. Esse cioè sono sincronizzate dalla transizione T1. Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 127 Sincronizzazione locale f3 f45 T4 f4 f5 f20 f46 f47 La sequenza di destra deve attendere che la sequenza di sinistra superi T4 per poter procedere Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 128 Struttura errata: scelta con sincronizzazione f10 T10 T2 f11 f21 f17 f24 T20 La transizione T20 non diventerà mai superabile!!! Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 129 Struttura errata: struttura ambigua f1 T1 f11 f21 f17 f24 T17 f2 T24 La fase f2 rischia di essere attivata due volte!!! Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 130 Vantaggi dell’SFC • Il linguaggio SFC è il migliore per la programmazione del controllo logico-sequenziale • Le applicazioni di tali controllo esulano da quelle dell’automazione industriale: controllo di un sistema semaforico, di una stazione ferroviaria, dell’accesso a un canale di comunicazione, degli accessi a un data-base, della coda di un server Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 131 Progetto del controllo con SFC (1/II) • Scrittura dell’SFC funzionale: 1) individuare le specifiche funzionali dell’impianto da automatizzare 2) esprimere tali specifiche in un linguaggio che non permette ambiguità, ad es. adoperando l’SFC già nella scrittura delle specifiche, esprimendo le azioni da eseguire e le condizioni da valutare in linguaggio naturale (“apri valvola”, “spegni pompa”, “vai a destra”) • L’SFC funzionale prodotto è utile anche ai fini della documentazione perché descrive esattamente quello che il sistema deve fare Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 132 Progetto del controllo con SFC (2/II) • Scrittura dell’SFC di controllo: 1) a partire dalla descrizione funzionale del controllo si può passare alla stesura del programma vero e proprio 2) una fase individuata a livello funzionale potrebbe poi dover essere realizzata come una sequenza di fasi intermedie (programmazione top-down) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 133 Note addizionali • La scrittura dell’SFC di controllo e/o funzionale è vantaggiosa anche in fase di debugging del programma: se il sistema si blocca in una fase si deve capire solo perché la transizione di uscita non è stata superata • Dal punto di vista implementativo/computazionale, un programma in SFC ha una maggiore efficienza poiché in ogni valutazione del grafo vanno effettivamente eseguite solo le azioni associate alle fasi attive e valutate solo le transizioni in uscita a tali fasi Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 134 Es. Il carrello automatico Un carrello trasportatore, a richiesta di un operatore, deve spostarsi alla destra di un binario, essere caricato per ribaltamento di un serbatoio e riportarsi a sinistra per scaricare il materiale. g R fr fs fd S D Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 135 Architettura del sistema • Il sistema comprende: – 3 segnali provenienti dai sensori di fine corsa, di cui 2 per il carrello (cui corrispondono le variabili booleane fs e fd) ed 1 per il serbatorio (variabile fr) – 1 segnale legato ad un pulsante di attivazione del ciclo (variabile g) – 2 comandi di attuazione per il moto del carrello (variabili S e D) – 1 segnale per il ribaltamento del serbatoio (variabile R) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 136 SFC funzionale per il carrello automatico quiete parti vai a destra arrivato a destra carica caricato vai a sinistra arrivato a sinistra Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 137 SFC di controllo per il carrello automatico quiete g vai_a_dx N D N R N S fd carica fr vai_a_sx fs Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 138 Es. Il trapano automatico R p S a D m x O b y Segnali di input digitali: -p pulsante per comandare la partenza -a finecorsa slitta trapano in alto -m contatto di media corsa della slitta -b finercorsa della slitta trapano in basso -x contatto che segnala l’altezza del pezzo Segnali di output/comando digitali: -S che comanda la salita del trapano -D che comanda la discesa del trapano -R che attiva la rotazione del trapano -O che attiva l’oliatore Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 139 Specifiche funzionali • Il ciclo inizia quando l’operatore preme il pulsante di partenza, se è presente un pezzo • Se il pezzo è basso il trapano viene messo in rotazione e fatto scendere fino al finecorsa basso; poi viene fatto risalire sino al finecorsa alto dove viene fermata la rotazione • Se il pezzo è alto, il trapano in rotazione deve scendere fino al contatto medio e poi risalire; poi deve essere attivata la pompa oliatrice per 2s; infine il trapano deve scendere fino al finecorsa basso e poi risalire ed essere fermato • Un nuovo ciclo può avviarsi solo se il pezzo trattato viene rimosso e sostituito con un altro Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 140 Es. Distributore automatico di bibite Gli input di controllo sono: – 1 segnale moneta dalla gettoniera – 1 segnale aperto che indica se il vano prelievi e stato aperto Gli output di controllo sono: – 2 segnali BLOCCA e SBLOCCA che agiscono sulla porta del vano prelievo – 2 segnali SA e SB per il comando di 2 pistoncini lineari (se il segnale è presente il pistoncino va a dx, altrimenti una molla di richiamo lo riporta a sx) L’obiettivo è che all’inserimento di una moneta, una sola bibita sia fatta cadere nel vano e sia possibile prelevarla Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 141 SFC di controllo per il distributore BLOCCA f1 moneta f11 SBLOCCA f21 f21.T>=t#2s aperto f22 f12 L t#1s SB L t#1s SA f22.T>=t#2s f23 1 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 142 Esempi di programmazione completi 1) Descrizione dell’impianto da controllare e degli ingressi e delle uscite del sistema di controllo 2) Specifiche di funzionamento da soddisfare 3) Decomposizione funzionale del problema per individuare funzionalità che si possono sviluppare autonomamente 4) Scrittura del programma di controllo 5) Definizione delle risorse e della configurazione del sistema di controllo Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 143 Controllo sistema di illuminazione Lscala P3scala P2scala L1 L2 P1scala P1 P2 • Due capannoni identici per cui occorre controllare i sistemi di illuminazione • In ogni capannone sono presenti una scala e un ambiente di lavoro Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 144 Caratteristiche sistema di controllo • Ingressi di controllo: – P1scala, P2scala, P3scala, P1, P2 segnali provenienti dai pulsanti di accensione • Uscite di controllo: – Lscala, L1, L2 segnali di controllo illuminazione Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 145 Specifiche • Le luci della scala si devono accendere alla pressione di uno dei pulsanti di accensione e rimanere accese per 60s • Se durante l’accensione delle luci della scala viene premuto di nuovo uno dei pulsanti il conteggio del tempo deve ripartire • Se viene premuto il pulsante P1 [P2] si deve accendere l’impianto L1 [L2] nell’ambiente di lavoro • Se uno dei pulsanti P1 o P2 viene premuto due volte entro mezzo secondo, si devono accendere tutti e due gli impianti L1 e L2 • Se uno dei pulsanti P1 o P2 viene tenuto premuto per più di mezzo secondo, si devono spegnere tutti e due gli impianti L1 e L2 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 146 Funzionalità • Gestione di un impianto luminoso: blocco funzionale che può accendere, spegnere o cambiare lo stato di un’uscita • Accensione temporizzata di un impianto luminoso: blocco funzionale che permette l’accensione per una durata impostabile e lo spegnimento immediato dell’impianto • Riconoscimento doppia pressione su un pulsante: blocco funzionale che permette di distinguere se c’è un solo fronte di salita o due sull’ingresso • Riconoscimento di una pressione continua del pulsante: blocco funzionale per distinguere tra segnale d’ingresso durato meno o più dell’intervallo prefissato Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 147 Gestione luce FUNCTION_BLOCK BOOL on BOOL off BOOL com gest_luce luce BOOL Il fronte di salita sull’ingresso on mette a 1 l’uscita luce che è riportata a zero da un fronte di salita sull’ingresso off. Un fronte di salita su com fa cambiare lo stato dell’uscita. spenta on P com P accesa luce off P com P END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 148 Accensione temporizzata FUNCTION_BLOCK BOOL timer_luce >on BOOL >off TIME durata luce BOOL Permette l’accensione per una durata impostabile e lo spegnimento immediato f1 on f2 luce (f2.T>durata OR off)AND NOT(on) on f3 luce 1 END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 149 Riconoscimento doppia pressione FUNCTION_BLOCK BOOL doppia_pres in singolo BOOL TIME durata BOOL doppio quiete in primo in P GE EN ENO primo.T durata LT EN ENO primo.T durata uno singolo 1 due doppio 1 END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 150 Riconoscimento pressione continua FUNCTION_BLOCK lung_pres corto BOOL in TIME durata lungo BOOL BOOL quiete in premuto in AND (premuto.T>=durata) NOT(in) prima corto 1 dopo lungo 1 END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 151 PROGRAM gest_luci_cap VAR_INPUT P1,P2,P1scala,P2scala,P3scala : BOOL; END_VAR VAR_OUTPUT L1,L2,Lscala : BOOL; END_VAR VAR timer_scala : timer_luce; luce1,luce1:gest_luce; lungo1,lungo2:lung_pres; doppio1,doppio2:doppia_pres; END_VAR P1scala P2scala P3scala OR timer_scala on luce off t#60s in P1 t#500ms P2 lungo1 corto durata lungo OR OR OR lungo OR in t#500ms luce1 luce L1 com lungo2 corto durata on off durata doppio in t#500ms Programma gestione luci capannone durata doppio1 singolo in t#500ms Lscala luce2 on luce off L2 com doppio2 singolo durata doppio END_PROGRAM Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 152 Risorse e Configurazione • Occorre definire le risorse e la configurazione • Si supponga di utilizzare un controllore con una sola risorsa di elaborazione PLC586 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 153 Es. Configurazione 1 CONFIGURATION contr_imp_luci RESOURCE controllore ON PLC586 PROGRAM capan1:gest_luci(P1:=%I3.4,P2:=%I3.5, P1scala:=%I3.6,P2scala:=%I3.7,P3scala:=%I3.8, Lscala:=%Q1.1,L1:=%Q1.2,L2:=%Q3.4); PROGRAM capan2:gest_luci(P1:=%I2.2,P2:=%I2.3, P1scala:=%I2.4,P2scala:=%I2.5,P3scala:=%I2.6, Lscala:=%Q4.1,L1:=%Q4.2,L2:=%Q4.4); END_RESOURCE END_CONFIGURATION Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 154 Es. Configurazione 2 CONFIGURATION contr_imp_luci RESOURCE primo_capan ON PLC586 PROGRAM capan1:gest_luci(P1:=%I3.4,P2:=%I3.5, P1scala:=%I3.6,P2scala:=%I3.7,P3scala:=%I3.8, Lscala:=%Q1.1,L1:=%Q1.2,L2:=%Q3.4); END_RESOURCE RESOURCE secondo_capan ON PLC486 TASK periodo(INTERVAL:=t#10ms) PROGRAM capan2:gest_luci(P1:=%I2.2,P2:=%I2.3, P1scala:=%I2.4,P2scala:=%I2.5,P3scala:=%I2.6, Lscala:=%Q4.1,L1:=%Q4.2,L2:=%Q4.4) WITH periodo; END_RESOURCE END_CONFIGURATION Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 155 Sistema di nastri trasportatori • Sistema composto da 3 nastri trasportatori identici • I pacchi posati sul primo nastro vengono portati alla fine del terzo nastro da dove sono prelevati • Allo scopo le movimentazioni dei 3 nastri devono essere opportunamente coordinate Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 156 Schematizzazione funzionale nastro1 nastro2 nastro1 fotocellula fotocellula Input di controllo: 1) photo: segnale dalle fotocellule poste alla fine dei nastri 2) p_dopo: indica se il dispositivo successivo è pronto per accettare il pacco fotocellula Output di controllo: 1) ava: controlla la movimentazione del nastro 2) p_acc: indica al dispositivo precedente che il nastro è pronto a ricevere 3) p_cons: indica al dispositivo successivo che il nastro è pronto a consegnare Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 157 Gestione nastro FUNCTION_BLOCK BOOL BOOL gest_nastro ava photo p_acc p_dopo p_cons BOOL BOOL BOOL ava f1 p_acc photo p_cons f2 N consegna p_dopo p_acc NOT(photo) ava END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 158 Programma gestione nastri PROGRAM tre_nastri VAR_INPUT phi1,phi2,ph3,pronto_a_valle: BOOL; END_VAR VAR_OUTPUT ava1,ava2,ava3,pronto_ad_accettare, pronto_a_consegnare : BOOL; END_VAR VAR nastro1,nastro2,nastro3 : gest_nastro; END_VAR pronto_ad_accettare nastro1 ph1 nastro2 ava photo p_acc p_dopo p_cons ava1 ph2 photo nastro3 ava ava2 p_acc p_dopo p_cons ph3 photo ava p_acc p_dopo p_cons pronto_a_valle pronto_a_consegnare END_PROGRAM Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 159 ava3 Sistema di nastri trasportatori e girello automatico ph3 nastro3 nastro1 nastro2 ava2 ava1 ph1 ph2 Input di controllo girello: ava3 1) photo segnale dalla fotocellula per indicare un pacco trasferito sul girello 2) fs finecorsa antioraria del girello fs 3) fd finecorsa oraria del girello sin 4) p_dopo indica se il dispositivo dopo fd è pronto per accettare un pacco ava des 5) p_prima indica se il dispositivo prima photo è pronto a consegnare un pacco girello Output di controllo girello: 1) ava movimentazione rulli del girello 2) sin fa ruotare il girello in senso antiorario 3) des fa ruotare il girello in senso orario 4) p_acc indica che il girello è pronto ad accettare un pacco dal dispositivo prima 5) p_cons indica che il girello è pronto a consegnare un pacco al dispositivo dopo Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 160 FUNCTION_BLOCK BOOL BOOL BOOL BOOL BOOL gest_girello ava photo sin fs des fd p_acc p_prima p_dopo p_cons BOOL BOOL BOOL BOOL BOOL fermo p_prima ricevi Gestione girello ava p_acc photo gira_sn sin fs consegna p_cons consegna N NOT(photo) gira_ds p_dopo ava sin fd END_FUNCTION_BLOCK Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 161 PROGRAM nastri_girello VAR_INPUT phi1,phi2,ph3,phg,fsg,fdg,pronto_a_valle: BOOL; END_VAR VAR_OUTPUT ava1,ava2,ava3,avag,sing,desg,pronto_ad_accettare, pronto_a_consegnare : BOOL; END_VAR VAR nastro1,nastro2,nastro3 : gest_nastro; girello : gest_girello; END_VAR nastro3 ph3 pronto_a_valle photo ava ava3 p_acc p_dopo p_cons pronto_a_consegnare phg fsg fdg gest_girello ava photo sin fs des fd p_acc p_prima p_dopo p_cons avag sing desg pronto_ad_accettare nastro1 ph1 photo nastro2 ava p_acc p_dopo p_cons ava1 ph2 photo ava ava2 p_acc p_dopo p_cons Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 162 Traduzione del SFC • Non tutti i PLC comprendono l’SFC tra i possibili linguaggi di programmazione • E’ necessaria una procedura di traduzione in modo che sia implementabile su qualsiasi macchina • La procedura deve essere semplice e dettagliata, con relazioni biunivoche • Ogni eventuale modifica dell’SFC deve poter essere convertita nelle modifiche alla traduzione Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 163 Formalizzazione di un SFC • • Propedeutica alla traduzione di un SFC è la “formalizzazione” del suo comportamento Occorre cioè trovare equazioni booleane o algoritmi di evoluzione che descrivano le regole con cui le fasi evolvono: 1. Una fase diventa attiva se una delle transizioni a monte è superabile 2. Una fase viene disattivata se essa è attiva e se risulta superabile una delle transizioni a valle Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 164 Equazioni booleane equivalenti i Ti jd j1 Fi Tj Fj n fe f1 Tk Fk Tf Ff n.X : i.X Fi Fj jh.X Regola di attivazione della fase n i j h n.X : n.X NOTFk Ff fh.X Regola di disattivazione f h k Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 165 Osservazioni • L’equazione booleana complessiva è data dall’OR delle due equazioni scritte • In entrambe le equazioni booleane equivalenti trovate, la n.X e le condizioni delle transizioni sono valutati all’istante attuale, viceversa i segnalatori delle fasi all’istante precedente • Oltre alle equazioni di attivazione e disattivazione delle fasi occorre scrivere le equazioni delle azioni da eseguire Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 166 Traduzione in equazioni booleane • E’ richiesta la traduzione in equazioni booleane equivalenti per tutte le fasi e per tutte le azioni • E’ necessaria poi un procedura di lettura degli ingressi e di scrittura delle uscite • Tale procedimento è poco flessibile in quanto prevede l’inclusione delle condizioni delle transizioni nelle equazioni delle fasi Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 167 Algoritmo di evoluzione Fase di inizializzazione lettura ingressi inizializzazione SFC Ciclo iterativo lettura ingressi determinazione transizioni superabili aggiornamento condizione SFC esecuzione azioni scrittura uscite Rappresentazione in forma algoritmica delle regole di evoluzione di un SFC Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 168 Caratteristiche di un algoritmo di evoluzione • Fase di inizializzazione: – lettura degli ingressi fisici – attivazione delle fasi iniziali ed esecuzione delle azioni associate • Ciclo iterativo: – aggiornamento degli ingressi fisici – determinazione delle uscite di controllo a partire dalle transizioni superabili, dalle fasi attive e dall’esecuzione delle azioni – scrittura delle uscite fisiche Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 169 Codifica dell’algoritmo di evoluzione • L’algoritmo evolutivo prevede la codifica dell’inizializzazione delle fasi, della valutazione delle transizioni, della determinazione della nuova condizione e delle azioni associate da svolgere • E’ stato scelto il LD come linguaggio di codifica Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 170 Operazioni preliminari • Associare ad ogni fase una variabile booleana come segnalatore della fase (ad es. il nome della fase) • Associare ad ogni transizione una variabile booleana come segnalatore della transizione (ad es. Tr+numero transizione) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 171 Sezioni dell’algoritmo in LD L’algoritmo di evoluzione codificato in LD presenterà 4 sezioni in sequenza: 1. 2. 3. 4. Sezione di inizializzazione Sezione di valutazione delle transizioni Sezione di aggiornamento della condizione Sezione di esecuzione delle azioni Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 172 Sezione di inizializzazione • E’ eseguita una sola volta all’inizio • Serve per porre a 1 i segnalatori delle fasi iniziali dell’SFC • Ciò è possibile con bobine a memorizzazione associati ai segnalatori delle fasi iniziali Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 173 Es. Inizializzazione in LD INIZ fase_iniz_1 S fase_iniz_n Il bit di stato INIZ è 1 solo alla prima scansione!! S AZIONI Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 174 Sezione di valutazione delle transizioni • Valuta se tutte le transizioni sono superabili o meno, aggiornando lo stato dei segnalatori di transizione • E’ necessaria così una istruzione in LD per ogni transizione per valutarne la superabilità Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 175 Es. Valutazione delle transizioni in LD fase_i cond Tri fase_j cond Trj fase_k fase_f cond Trk Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 176 Sezione di aggiornamento della condizione • Per ogni transizione superabile, disattiva le fasi a monte e attiva quelle a valle • Per ogni transizione quindi occorre un rung che disattivi le fasi a monte seguito da un rung che attivi le fasi a valle, quando la transizione è superabile Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 177 Sezione di esecuzione delle azioni • E’ preceduta dall’etichetta AZIONI cui punta il salto condizionato nella Sezione inizializzazione • Si usa la variabile segnalatrice dello stato di attivazione di una fase per condizionare l’esecuzione dell’azione associata Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 178 Traduzione delle variabili temporali • In un SFC possono essere presenti variabili temporali associate alle fasi per condizionare le transizioni e nelle azioni limitate o ritardate nel tempo (L o D) • Nel LD vanno implementate tramite il blocco funzionale predefinito dei temporizzatori TON Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 179 Errori comuni f1 AAA f1 f2 AAA f2 NO Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino AAA SI 180 Es. Il carrello automatico g R fr fs fd S D Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 181 Es. Il carrello automatico in SFC quiete g vai_a_dx N D N R N S fd carica fr vai_a_sx fs Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 182 Es. Il carrello automatico in LD 1/III INIZ quiete S Sezione di inizializzazione AZIONI g Tr1 vai_a_dx fd Tr2 quiete carica fr Tr3 vai_a_sx fd Tr4 Sezione di valutazione delle transizioni Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 183 Es. Il carrello automatico in LD 2/III Tr1 quiete R Tr2 vai_a_dx R Tr3 carica R Tr4 vai_a_sx R Tr1 Sezione di aggiornamento delle condizioni vai_a_dx S Tr2 carica S Tr3 vai_a_sx S Tr4 quiete S Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 184 Es. Il carrello automatico in LD 3/III AZIONI: vai_a_dx D carica R vai_a_sx S Sezione di esecuzione delle azioni (tutte con il qualificatore N) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 185 Es. La cella robotizzata • Si consideri una cella robotizzata costituita da un robot che deve servire: – 2 nastri trasportatori di alimentazione – 1 nastro trasportatore di distribuzione • Il robot deve trasferire dei carichi che arrivano in maniera random dai nastri di alimentazione al nastro di distribuzione Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 186 Es. La cella robotizzata Nastro 1 P0 P1 AVA1 Nastro 3 PRES1 P3 Nastro 2 AVA2 P2 AVA3 PRES3 OGG3 PRES2 Input di controllo: 1) PRESi: presenza oggetto nella posizione Pi, i=1..3 2) OGG3: presenza oggetto alla fine del nastro 3 3) OKi: avvenuto posizionamento del robot in Pi, i=0..3 Output di controllo: 1) AVAi: avanzamento nastro i, i=1..3 2) VAIi: posizionamento del robot in Pi, i=0..3 3) CHIUDI: comando chiusura pinza del robot 4) APRI: comando apertura pinza del robot Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 187 SFC di controllo dei nastri quiete1 quiete2 NOT PRES1 T10 T11 PRES1 NOT PRES2 T20 AVA1 f11 quiete3 AVA2 f21 T21 PRES3 AND quiete0 T30 PRES2 AVA3 f31 OGG3 T31 f32 T32 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino NOT OGG3 188 quiete0 PRES1 T1 VAI1 f1 T3 PRES2 AND NOT PRES1 T2 VAI2 f2 OK1 OK2 T4 CHIUDI f3 f3.T>=0.5s AND quiete3 T5 CHIUDI f4 SFC di controllo del robot VAI3 OK3 T6 APRI f5 f5.T>=0.5s T7 VAI0 f6 T8 OK0 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 189 Es. La cella robotizzata in LD 1/IX INIZ quiete0 S quiete1 S quiete2 Sezione di inizializzazione S quiete3 S AZIONI Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 190 Es. La cella robotizzata in LD 2/IX quiete0 PRES1 Tr1 quiete0 PRES2 PRES1 Tr2 f1 OK1 Tr3 f2 OK2 Tr4 f3 timer1.Q quiete3 Sezione di valutazione delle transizioni Tr5 f4 OK3 Tr6 f5 timer2.Q Tr7 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 191 f6 OK0 Tr8 quiete1 PRES1 Tr10 f11 PRES1 Tr11 quiete2 PRES2 Tr20 PRES2 Tr21 quiete3 PRES3 quiete0 Tr30 f21 f31 OGG3 Tr31 f32 OGG3 Tr32 Es. La cella robotizzata in LD 3/IX Sezione di valutazione delle transizioni Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 192 Tr1 quiete0 R Tr2 Tr3 Es. La cella robotizzata in LD 4/IX f1 R Tr4 f2 R Tr5 f3 Sezione di aggiornamento delle condizioni R Tr6 f4 R Tr7 f5 R Tr8 f6 R Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 193 Tr10 quiete1 R Tr11 f11 Es. La cella robotizzata in LD 5/IX R Tr20 quiete2 R Tr21 f21 R Tr30 Sezione di aggiornamento delle condizioni quiete3 R Tr31 f31 R Tr32 f32 R Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 194 Tr1 f1 S Tr2 f2 S Tr3 Es. La cella robotizzata in LD 6/IX f3 S Tr4 Tr5 f4 Sezione di aggiornamento delle condizioni S Tr6 f5 S Tr7 f6 S Tr8 quiete0 S Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 195 Tr10 f11 S Tr11 quiete1 S Tr20 Es. La cella robotizzata in LD 7/IX f21 S Tr21 quiete2 S Tr30 Sezione di aggiornamento delle condizioni f31 S Tr31 f32 S Tr32 quiete3 S Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 196 AZIONI: f3 CHIUDI Es. La cella robotizzata in LD 8/IX f4 f1 VAI1 f2 VAI2 f4 VAI3 f5 APRI f6 VAI0 Sezione di esecuzione delle azioni Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 197 f11 AVA1 f21 AVA2 f31 AVA3 Es. La cella robotizzata in LD 9/IX Sezione di esecuzione delle azioni f3 timer1 t#500ms IN Q PT ET f4 timer2 t#500ms IN Q PT ET Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 198 Macrofase e macroazione • I concetti di macrofase e macroazione sono stati introdotti di recente per facilitare la programmazione in SFC • Essendo cronologicamente posteriori, essi non sono presenti nello standard Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 199 Macrofase • La macrofase è un concetto introdotto per facilitare la descrizione di sistemi complessi • Viene utilizzata per descrivere una particolare porzione di un SFC detta espansione della macrofase • L’espansione della macrofase deve avere una sola fase di ingresso e una sola fase di uscita e non ci devono essere archi orientati che entrano o escano dalla espansione della macrofase Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 200 Es. Macrofase 4 i30 5 M30 6 Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino O30 201 Macroazione • La macroazione è un’azione operata da un SFC che ha effetti sulla condizione di un altro SFC • Viene introdotta per poter realizzare gerarchie tra gli SFC • Per avere effetti deve agire cambiando i valori delle variabili segnalatrici dello stato Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 202 Esempi di macroazioni • SOSPENSIONE: permette ad un SFC di rendere inattive tutte le fasi di un altro SFC (equivale ad inserire una transizione superabile in uscita a tutte le fasi dell’SFC da sospendere) • FORZATURA: permette ad un SFC di forzare la condizione di un altro SFC a prescindere dalle regole di evoluzione (equivale ad inserire una transizione superabile in uscita a tutte le fasi che non devono diventare attive, ed una in ingresso a tutte le fasi che devono diventare attive) Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 203 Es. Sospensione G1 G2 Interpretazione 4 f11 f11 a 5 SOSPENDERE(G2) f12 f5.X b f5.X c f5.X f12 b 6 a f13 f13 c Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino 204 Es. Forzatura G1 G2 Interpretazione 4 f11 f11 a 5 FORZARE(G2,f12) f5.X f12 a f12 b 6 f5.X f13 b f13 c Tecnologie dei Sistemi di Automazione - Prof. Raffaele Iervolino c f5.X 205