Top Banner
Programmazione di dispostivi industriali IEC 61131-3 Stefano Miani 1 1 Dipartimento di Ingegneria Elettrica, Gestionale e Meccanica Universit´ a degli Studi di Udine A.A. 2007-08 Stefano Miani
89

Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Dec 05, 2018

Download

Documents

vokhuong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Programmazione di dispostivi industriali IEC61131-3

Stefano Miani1

1Dipartimento di Ingegneria Elettrica, Gestionale e MeccanicaUniversita degli Studi di Udine

A.A. 2007-08

Stefano Miani

Page 2: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Premessa

I > uso dei PLC grazie al miglioramento prestazioni eminiaturizzazione tecnologia

I controllo e supervisione di sistemi sempre piu complessi

I differenze di velocita, comunicazione, I/O

Stefano Miani

Page 3: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Desiderata

I Utilizzo simultaneo di diversi linguaggi di programmazione

I Modifica “online” di programmi

I “Reverse documentation” dei programmi

I Riutilizzo di moduli

I Verifica e simulazione off-line del funzionamento

I Documentazione del progetto e verifica della qualita

I Utilizzo di sistemi non proprietari

Stefano Miani

Page 4: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Lo standard IEC 61131-3 cerca di risolvere/ovviare alcuni deiproblemi e differenti sistemi di sviluppo potranno implementarnesolo parte.Perche dovrebbe funzionare?

I Crescita costo formazione personale

I Crescita sviluppo di programmi sempre piu complessi

I Costo sviluppo di sistemi di programmazione piu complessi

Stefano Miani

Page 5: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Vantaggi al produttore

I Possibilita di modifiche della definizione degli standard

I Riduzione dei costi mediante standardizzazione

I Riduzione rischi prodotto inadatto

I Riduzioni time-to-market per nuovi prodotti

Vantaggi all’utilizzatore

I Possibilita di lavorare con sistemi con caratteristiche prevalentisimili

I Facilita nella scelta di sistemi di sviluppo

I Portabilita dei programmi (parte)

Stefano Miani

Page 6: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Certificazione soddisfacimento standard

I Base level: istruzioni fondamentali comuni

I Portability level: costrutti fondamentali portabili su diversisistemi a livello di moduli

I Full level: interscambio totale

Formato di interscambio (certificazione, luogo, produttore, etc.)

Stefano Miani

Page 7: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Le POU (blocchi dei vecchi sistemi di sviluppo), ProgrammingOrganisation Unit, sono le piu piccole unita software di unprogramma. Le POU possono effettuare chiamate ad altre POU.

1. Function (FUN): tempo invarianti, stessi ingressi generanosempre la stessa uscita (function value, valore della funzione);

2. Function Block (FB): dispongono di data record e sonotempo varianti, ovvero permettono di memorizzare dati eriutilizzarli alla chiamata successiva (si veda piu avantil’istanziazione di FB );

3. Program (PROG): in cima alla gerarchia e permettono diaccedere agli I/O del dispositivo e renderli disponibili ad altrePOU;

Stefano Miani

Page 8: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Lo standard stabilisce la struttura delle POU (realizzatedall’utente) e l’interfaccia di I/O di funzioni standard (standardFUN ) e function block standard (standard FB ).

Stefano Miani

Page 9: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Variabili: servono a memorizzare ed elaborare dati di processo.

I Corrispondono a flag o bit dei vecchi sistemi di sviluppo.

I Nel nuovo standard l’allocazione delle variabili non viene fattadall’utente, ma in modo trasparente dal sistema di sviluppo.

I Il tipo di dati (data-type) delle variabili e obbligatorio e fisso.Alcuni tipi sono predefiniti (Bool, Byte, Real, etc.) e c’e lapossibilita di definirne di nuovi (record, array, etc.).

I E possibile associare alcune variabili a specifici I/O e puregarantirne la memorizzazione in caso di caduta di tensione.

Alle variabili viene inoltre associato un tipo (variable type) aseconda che siano dichiarate

I Al di fuori di una POU (globali);

I Come parametro di chiamata di una POU (di interfaccia);

I All’interno di una POU (locali).

Stefano Miani

Page 10: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Dichiarazione di tipo di dati: in modo testuale (mediantelinguaggio) sempre, in modo grafico (parametri di interfaccia) inalcuni casi

VAR INPUT (* ingresso *)ValidFlag :BOOL (*booleano*)

END VARVAR OUTPUT (*uscita *)

RevPM :REAL (*reale*)END VARVAR RETAIN (*locali, backup *)

MotorNR :INT (*intera*)MotorName :STRING[10]EmStop AT %IX2.0 :BOOL (*bit 2.0 I/O*)

END VAR

Stefano Miani

Page 11: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

1. Instruction List (IL) (assembler, testuale);

2. Structured Text (ST) (linguaggio alto livello, testuale);

3. Ladder Diagram (LD) (schema a contatti, grafico);

4. Functional Block Diagram (FBD) (blocchi funzionali, grafico);

5. Sequential Function Chart (SFC) (diagrammi di flusso,grafico).

Si vedano figure 2.1 e 2.2 del testo per i diversi linguaggi e lefigure 2.3, Example 2.2 e Example 2.3 per un esempio diprogrammazione elementare.

Stefano Miani

Page 12: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

I PLC = + CPU e processori dedicati (risorse);

I ogni programma puo essere eseguito su una o piu risorse;

I i programmi differiscono in priorita e modalita (ciclico,periodico, interrupt);

I i programmi vengono associati ad un task al fine di essere resieseguibili;

Stefano Miani

Page 13: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Il file di configurazione permette di rispondere alle seguentidomande

I Su quale PLC deve essere eseguito il programma?

I Con quali modalita di esecuzione e priorita?

I Si devono associare variabili a indirizzi fisici dell’I/O del PLC?

I Ci sono variabili globali o esterne da condividere con altriprogrammi?

Si vedano l’esempio 2.4 e la figura 2.4 del libro di testo.Un PLC project consiste di POU fornite dal produttore del PLCoppure create dall’utente. Le POU possono essere utilizzate per larealizzazione di librerie (hardware-independent).

Stefano Miani

Page 14: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Tipo di POU keyword funzionalita

PROG PROGRAMProgramma principale, assegnazione I/Ovariabili globali

FB FUNCTION BLOCKRoutine con variabili di ingresso e uscita,con possibilita di memorizzare datitra una call e la successiva

FUN FUNCTION Funzione a piu ingressi e un solo valore

La POU e la piu piccola unita indipendente che puo esserecompilata (necessita di conoscere i parametri di interfaccia) elinkata ad altre POU .Il nome della POU e globale e noto all’intero progetto e non sonopermesse subroutine

Stefano Miani

Page 15: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

I Tipo di POU e nome (e valore, per FB );

I Dichiarazioni di variabili;

I Codice.

PROGRAM nome programmaFUNCTION BLOCK nome fnct blockFUNCTION nome funzione tipo funzione

La parte di dichiarazione contiene tutte le variabili necessarieall’esecuzione della POU , di interfaccia e interne. La dichiarazionedi interfaccia puo essere programmata graficamente.Il codice, o corpo del programma, puo essere programmatoutilizzando uno dei linguaggi di programmazione (testuale ografico).Si veda la figura 2.6, l’esempio 2.5 e 2.6 per esempi di definizionedi POU .

Stefano Miani

Page 16: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Variabili dichiarate prima del codice. Variabili caratterizzate da

I tipo di dato (bool, real, etc.), mediante keyword dopo il nomedella variabile

I tipo di variabile, mediante posizionamento in apposite sezioni(VAR INPUT, VAR IN OUT, etc.).

Si veda l’esempio 2.7 e 2.8.

Tipo di variabile PROG FB FUNVAR 1 1 1VAR INPUT 1 1 1VAR OUTPUT 1 1 0VAR IN OUT 1 1 0VAR EXTERNAL 1 1 0VAR GLOBAL 1 0 0VAR ACCESS 1 0 0

Stefano Miani

Page 17: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

I Interfaccia di ingresso: parametri formali (sostituiti conparametri attuali all’atto della chiamata);

I Interfaccia di uscita: variabili di uscita o valore della funzione;

I Interfaccia globale: variabili globali (global, external e access).

Tipo di interfaccia Tipo variabile Note

IngressoVAR INPUT per valoreVAR IN OUT per riferimento

anche in forma grafica

Uscita VAR OUT per valore anche in forma graficaGlobali VAR GLOBAL, VAR EXTERNAL, VAR ACCESSLocali VAR (RETAIN) variabili interne

Per variabili con dimensioni consistenti, la chiamata per riferimentoe meno onerosa.La lettura/scrittura di variabili dipende dal tipo. Si veda la tabella2.4.

Stefano Miani

Page 18: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Codice

I Sequential Function Chart: grafo di flusso per la gestione disequenze/operazioni in serie/parallelo;

I Ladder Diagram: schema grafico a contatti per larealizzazione di funzioni logiche. Le POU scritte in LD sonodivise in sezioni dette “reti” (networks);

I FBD: schema grafico a blocchi per operazionilogiche/aritmetiche. Sezioni=reti (networks). Reti booleaneesprimibili in LD e viceversa;

I IL: linguaggio di basso livello (assembler);

I ST: linguaggio di alto livello per il controllo e calcolimatematici complessi;

I Altri linguaggi di alto livello: C, Basic, nel rispetto deglistandard.

Stefano Miani

Page 19: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Istanziazione di FB

I FB devono essere istanziati come le variabili (tipo di dati=tipodel FB , nome della variabile=nome del FB )VAR

Valve: BOOL; (*Valve e istanza di un booleano*)

END VAR

Supponiamo sia dato il FB MotorType, alloraVAR

Motor1: MotorType; (*Motor1 e istanza del FB MotorType*)

END VAR

Le istanze di FB sono visibili all’interno della POU in cui sonodichiarate. Se dichiarate come globali, possono essere accessibili dapiu POU . Le FUN sono invece sempre globali e prive di istanza.Tipo di FB : definisce i parametri di I/O e il comportamentoIstanza (nome) di FB : utilizzo all’interno di altre POU . Contienele variabili memorizzate (contatori, FF, etc.).Il meccanismo di istanziazione permette di implementare in diversimodi la POU corrispondente al FB .

Stefano Miani

Page 20: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

VAR

Counter: CTUD; (*Counter e istanza di contatore UP-DOWN*)

END VAR

A seguito dell’istanziazione, la struttura dati del FB Counter puoessere utilizzata (si veda esempio 2.14) con l’interfaccia riportatanell’esempio 2.13.Ad esempio, il valore del contatore UP viene memorizzato nellavariabile Counter.CU (cosı come avviene per le strutture). I valoridel contatore non utilizzati vengono comunque inizializzati.Per ciascuna istanza di un FB le VAR, VAR INPUT e VAR OUTvengono memorizzate in un’area staticaEsiste la possibilita di definire variabile dinamiche (VAR DYN).Le VAR IN (formali) mantengono il valore tra una chiamata al FBe la successiva (non alterati dal FB ). VAR OUT mantengono ilvalore tra una chiamata e la successiva.

Stefano Miani

Page 21: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

I Non sono ammessi riferimenti a indirizzi del PLC (%Q, %I,%M). E ammesso l’utilizzo di indirizzi se dichiaratiglobalmente (fuori dal FB );

I Non si possono definire variabili globali o di accesso;

I I dati possono essere passati al FB solo tramite interfaccia(VAR INPUT, VAR INOUT, VAR EXTERNAL).

Un FB puo manipolare blocchi di dati solo tramite l’interfacciaUn FB e una struttura dati indipendente e incapsulata associataad un algoritmo che lavora sui suddetti datiNei sistemi di sviluppo precedenti le FB lavoravano su blocchi dimemoria globali (I/O, flag, memoria condivisa).Un FB puo avere qualsiasi numero di ingressi e uscite. Un FB puoessere dichiarato RETAIN, oppure solo alcune variabili di esso (nonvar IN e OUT). Per VAR IN OUT il RETAIN equivale amemorizzare il puntatore, dunque occorre dichiarare come RETAINanche la variabile puntata.

Stefano Miani

Page 22: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

FUN

I La FUN produce sempre la stessa uscita (valore dellafunzione) a parita di ingressi

I Puo essere utilizzata com operatore in IL e operando in ST.

I Le FUN sono globali, ovvero il nome e noto a ciascuna POUdel progetto PLC.

I Esistono funzioni standard predefinite dallo standard.

I Hanno numero arbitrario di ingressi, e una uscita (qualsiasitipo).

I Variabili interne senza memoria: no RETAIN

Stefano Miani

Page 23: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Codice o programma

I FUN e FB =subroutine, PROG =programma principale(main)

I Accesso a indirizzi fisici del PLC (I/O, memoria)

I Definizione variabili globali e di accesso (scambio dati fraprogrammmi)

I Associato ad un task mediante la configurazione, per renderloeseguibile sul PLC

I Non chiamato da altre POU

Stefano Miani

Page 24: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Chiamata di FB e FUN

I PROG ⇒ FB e PROG ⇒ FUN

I FB ⇒ FB e FB ⇒ FUN

I FUN ⇒ FUN

I Ricorsione non ammessa (A chiama se stessa, A chiama B e Bchiama A)

Si veda il testo, Figura 2.7, esempio 2.17 e 2.18 per chiamate nonammesse.I parametri formali devono o meno essere specificati a seconda dellinguaggio usato e della POU

Linguaggio FUN FB PROGIL no sı (tre modi) sıST indifferente sı sıLD e SFC sı sı sı

Si veda l’esempio 2.20 per le regole di chiamata in IL e ST el’esempio 3.18 per LD.

Stefano Miani

Page 25: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

I Inizializzazione (per tipo, o dall’utente) delle variabili FB eFUN anche se alcuni parametri vengono omessi. Per FB ,l’inizializzazione avviene solo alla prima chiamata.

I Nel caso di omissione, occorre specificare i parametri formali(vedi esempio 2.21)

I Se sono presenti tutti i parametri formali, l’ordine e irrilevante,se alcuni assenti, lo e.

Stefano Miani

Page 26: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Istanze di FB come parametri attuali di FB e FUN

Istanze di FB e ingressi e uscite di istanze di FB possono essereutilizzate come parametri attuali di altri FB e FUN . Si vedal’esempio 2.22 e la tabella 2.8.Chiamata indiretta

I Se l’istanza e passata come VAR INPUT, l’istanza e le suevariabili di uscita non possono essere alterati o chiamati nellaFB chiamante, ma possono essere lette da questa;

I Come VAR IN OUT non puo essere passata l’uscita (ilpuntatore) di un’istanza di FB (alterazione al di fuori del FB) e neppure l’uscita di una FUN .

Chiamata diretta

I Se passate come VAR EXTERNAL o VAR OUTPUT e solopossibile leggere le variabili.

Si veda l’esempio 2.23.

Stefano Miani

Page 27: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Per le FUN , e possibile passare come ingresso un’istanza di FB ovariabili di essa (l’istanza non viene chiamata, ma vengonoutilizzati i dati)FUN possono esser utilizzate come ingresso ad altre FUN e FB .All’atto del passaggio la FUN viene chiamata e il suo valorepassato come parametro attuale alla FUN oFB .Si veda la tabella 2.9 per un riassunto delle proprieta delle POU .

Stefano Miani

Page 28: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

1. Delimitatatori (delimiters);

2. Parole chiave (keywords);

3. Letterali (literals);

4. Identificatori (identifiers).

FUNCTION RealAdd: REALVAR INPUT

Inp1,Inp2; REAL;END VARRealAdd:=Inp1+Inp2+7.456E-3

END FUNCTION

Significato Esempio

DelimitatoriCaratteri speciali condiverso significato

(,),+,-

KeywordParole chiave del linguaggiodi programmazione

RETAIN, VAR INPUT, REAL

Letterali Valori di variabili 12, 3.1415, 1e4, 16#a5Identificatori Nomi di variabili, POU , tipi Out1, Pippo, TipoMotore

Stefano Miani

Page 29: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Keywords

I Non possono essere usate per definire variabili;

I Maiuscole, minuscole, miste (VAR iNpUT);

Sono keywords riservate:

1. Nomi di tipi elementari

2. Nomi di FUN standard (ad esempio, LOG)

3. Nomi di FB standard (ad esempio, SR, CTUD);

4. Nomi di parametri di ingresso a standard FUN e di I/O di FB;

5. Operatori in IL (esempio, LD, CAL, ORN);

6. Elementi del linguaggio ST (ad esempio, FOR, CASE,WHILE);

7. Elementi del linguaggio SFC.

Si veda l’appendice H.1 del testo.

Stefano Miani

Page 30: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Letterali

I Rappresentano i valori di variabili numericheI Booleani: FALSE/TRUEI Byte: 11, 16#0B, 2#000 1101I Double Word: 16#ABCDEF, 16#ab cdefI Interi: 12, 273;I Virgola mobile: 13.4, 27.7, 14e-14;

I Stringhe di caratteri: ’pippo’, ”. Letterali “speciali”richiedono il simbolo $: $$=$, $’=’ (si veda la tabella 3.4).

I Letterali temporali (rappresentano valori temporali, overflowammesso, acronimo o completo, si veda tabella 3.3)

I Durata: t#2d3h4m, time#4s89.4ms, time#1h 22m,time#-1h, TIMe#1h 1m 0s;

I Data: d#2006-10-11, DaTe#2006-10-11;I Ora del giorno: tod#10:30:01.00,

TimE OF daY#hh:mm:ss.cs;I Data e ora: dt#1988-08-08-15:15:00.00,

date AnD timE#aa-mm-gg-hh:mm:ss.cs;

Stefano Miani

Page 31: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Identificatori

Devono iniziare con una lettera o un singolo underscore .Maiuscole=minuscole.

I Label di JUMP (nome routine) o di reti;

I Costanti enumerative (si veda avanti enumeration);

I Configurazioni, risorse etc.;

I Programmi etc;

I Variabili;

I Tipi di dati derivati (Tipi di Dati definiti dall’utente);

I Transizioni e step in SFC.

Lo standard prevede le prime 6 lettere come significative(bravis simo=bravis sima), ma > numero dipende dal sistema disviluppo Si veda la tabella 3.6 per esempi di identificatori ammessi.

Stefano Miani

Page 32: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Variabili dichiarate nella parte dichiarativa di una POU .Dichiarazione indipendente da linguaggio usato. Dichiarazione:nome var:tipo var. LE dichiarazioni di nuovi tipi di dati eglobale;Classica programmazione PLC: accesso diretto alla memoria o I/O(M 3.1, IW 4). Tipo di dato consistente con la cella di memoria,I/O.Soluzione: creazione tabella di simboli per associare nomi a I/O ememoria.IEC-61131-3: utilizzo variabili.

Tabella assegnazione Dichiarazione variabili IEC-61131-3VAR

I 3.4= InpVar InpVar AT %IX3.4: BOOL ;M 70.7= FlagVar FlagVar: BOOL;Q 1.0= OutVar OutVar AT%QX1.0: BOOL;

AT %MX70.6: BOOL;END VAR

Stefano Miani

Page 33: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Nome dela variabile: posizione di memoria assegnata sul PLC(trasparente). Tipo di dati (data type): definisce le proprieta diuna variabile

I Valore iniziale;

I Campo di valori (range);

I Dimensione della variabile.

Ulteriori proprieta associate alla tipo di variabile (IN, OUT, etc.).Type checking in fase di compilazione e funzionamento: riduzioneerrori e individuazione malfunzionamenti mediante avvertimenti(warning).Sistemi di sviluppo classici/ IEC 631: allocazione ”manuale” dellamemoria/allocazione automatica.Assenza errore doppia assegnazione stessa allocazione.

Stefano Miani

Page 34: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Tipi di dati

Portabilita codice: uniformita tipi di dati standard.

Booleani/stringhe bit Interi Interi senza segno Reali Temporali/stringheBOOL INT UINT REAL TIMEBYTE SINT USINT LREAL DATEWORD DINT UDINT TIME OF DAYDWORD LINT ULINT DATE AND TIMELWORD STRING

Dimensione fissa eccetto per temporali (dipende dal sistema disviluppo).Si veda l’appendice D per le proprieta dei tipi di dati.

Stefano Miani

Page 35: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Definizione nuovi Tipi di dati (derivati)

TYPERealeLungo: LREAL; (* nome facile *)FP: RealeLungo; (*definizione basata su nuovo

tipo*)FP I1: LREAL:=1.0; (*nuovo valore iniziale*)tControl: BOOL:=TRUE; (*nuovo valore iniziale*)

END TYPE;

Proprieta SignificatoVal inizialeEnumerativo Valori come da lista (interi)Range Valori nel campo definitoArray Matrice di elementi stesso tipoStruttura Elemento complesso con piu tipi di dati

Stefano Miani

Page 36: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

TYPEColore: (ros, gia, ara); (*enumerativo*)Semaforo: Colore;Filamacchine: INT (0..20); (* range, inizializzato

a sx*)Altre file: ARRAY[1:8] of FilaMacchine;Incrocio a 4: (*struttura*)STRUCTSemafori: ARRAY[1..4] OF Semaforo;File: array[1..4] OF FilaMacchine;

END STRUCT;END TYPE

VARFile Persone: Altre File:=[1,3,2(1,4),0,5];

END VAR;Array o strutture di FB non sono al momento permessi (futuraintroduzione).Nesting (annidamento) di array e strutture permesso (senzaricorsione)

Stefano Miani

Page 37: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Tipi di dati generici

Tipi di dati gerarchicizzati. Tipi generici utilizzati per overloadingdi funzioni, vietati nelle dichiarazioni.Lo standard prevede una strutturazione dei tipi di dati:

I BOOL, BYTE, WORD, etc., sono “figli” di ANY BIT;

I INT, SINT, UINT, DINT etc. sono “figli” di ANY INT;

I REAL, LREAL sono “figli” di ANY REAL;

I ANY INT e ANY REAL sono “figli di ANY NUM;

I DATE, TIME OF DAY, DATE AND TIME sono figli di“ANY DATE;

I ANY BIT, ANY NUM e ANY DATE sono figli di “ANY”.

Stefano Miani

Page 38: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Variabili

I Proprieta specificata dal tipo di dato;

I Inizializzazione esplicita variabile;

I Informazioni sulle dimensioni dell’array;

I Tipo di variabile (blocco dichiarativo) e attributo

tipo di variabile︷ ︸︸ ︷VAR OUTPUT

attributo︷ ︸︸ ︷RETAIN

Pippo︸ ︷︷ ︸Nome variabile

: BYTE︸ ︷︷ ︸tipo

:=12︸ ︷︷ ︸Val iniz.

;

END VAR;Enumerazioni, range e strutture non possono essere inizializzati.La dichiarazione di un’istanza di FB equivale a dichiarazione di unavariabile, quella di un FB al tipo (inizializzato qui).

Stefano Miani

Page 39: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

I/O e memoria

I Rappresentazione diretta (old style);

I Rappresentazione simbolica (new style);

AT+%+(I,Q,M)+( ,X,B,W,D,L)+v.w.x.y.z=PLC.bus.modulo.word.bit (dipende dal sistema)

%I30 Bit 80, ingresso%IW20 Word 7, ingresso%M3.0 Flag 0 della word 2, memoria%QX5.2.1 Byte 1 della word 1 del modulo 5, uscita

VARAT %IW6: WORD;AT %QD3: DINT;OUT HG AT %QW7: WORD;AD 3 AT %QD3: WORD;

END VAR

Stefano Miani

Page 40: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Array, strutture e inizializzazione

VAR Prova: Incrocio a 4;END VAR;...Prova.Semafori[1]:=ros;Prova.File[2]:=17;

Priorita di inizializzazione:

1. RETAIN (warm restart) >

2. Inizializzazione con variabile (cold restart) >

3. Inizializzazione con tipo (cold restart).

Il valore iniziale di Ingressi e uscite dipende dal sistema.Inizializzazione non permessa per: EXTERNAL e VAR IN OUT

Stefano Miani

Page 41: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Attributi e rappresentazione grafica di variabili

I RETAIN, CONSTANT: associati all’intera sezione (IN, OUT,etc.);

I R EDGE, F EDGE, READ ONLY, READ WRITE: singola variabile(si veda capitolo 5 per R EDGE)

TIPO DI VAR RETAIN CONSTANT R/F EDGE(g) READ ONLY/WRITEVAR 1 1 0 0IN(g) 0 0 1 0OUT(g) 1 0 0 0IN OUT(g) 0 0 0 0EXTERNAL 0 0 0 0GLOBAL 1 1 0 0ACCESS 0 0 0 1

Table: Attributi e possibilita di rappresentazione grafica delle variabili

Stefano Miani

Page 42: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

IL

Label: Operatore/Funzione Operand1,(Operando2,..) commentoNome etichetta Operatore o funzione uno o piu operandi (* ...*)

EsempioCND1: LD In1 (* carica in1 su accumulatore *)

AND Out2 (* AND di accumulatore con Out2 *)....

JMPCN CND1 (* se accu=1, salta a CND1

NOTA: ; non ammesso in IL.Risultato intermedio (tipo di dato elementare, derivato, functionblock) memorizzato nell’accumulatore virtuale (Current Result,CR). Vedi esempio in aula. Alcuni operatori possono modificare ilCR: Crearlo (C, es: LD), Elaborarlo (P, es: GT), Lasciarloimmutato (U, es ST),lasciarlo indefinito (-, es: return da FB).

Stefano Miani

Page 43: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Operatori, modificatori

Operatore+N+C+(

I N negazione operando: ANDN, ORN, LDN;

I ( parentesi (anche piu livelli);

I C condizionale (= se CR=TRUE): JMPC;

I Operatori Booleani: LoaD, AND, AND(, OR, OR(,XclusiveOR, XOR(, STore, Set (operando= TRUE seCR=TRUE), Reset (operando=FALSE se CR=TRUE), );

I Operatori generici: LD, ST, ADD, SUB (CR-operando),DIV (CR/operando), GreaterThan (CR>operando), GT(,GE, GE(, EQ, EQ(, NE, NE(, LE, LE(, LT, LT(, );

I Operatori di salto o chiamata: JuMP, JMPC+N(salti/condizionato a label), CALl, CALC+N(esecuzione/condizionata FB ), RETurn, RETC+N(return/condizionato da FB o FUN ), nome funzione;

Stefano Miani

Page 44: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Chiamata di Funzioni e Function Block

FUNLD operando1 (*modificatori (N, C, ( non ammessi*)

nome funzione+spazio+operando2,+operando3,+..FB

I chiamata con nome parametri attuali e formali di ingresso traparentesi: Time1(IN1:=1, IN2:=-1)

I memorizzando i parametri formali negli attuali +CALnome FB:LD 1 (* Attuale *)

ST Time1.IN1 (* Formale *)

LD -1 (*Attuale *)

ST Time1.IN2 (* Formale *)

CAL Time1 (* Chiamata *)

LD Time1.OUT (* formale *)

ST Mio out (* Attuale, POU chiamante *)

Stefano Miani

Page 45: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Esempio IL

1. Tre sensori, S1, S2 e S3, segnalano la presenza in ciascunastazione. La variabile StationStop memorizza il numero distop;

2. Il controllo del motore avviene mediante:Direction (1=avanti, 0=indietro), a tenutaStartStop: (1=start, 0= stop)

3. All’interno della cabina, il controllo dell’apertura della portaavviene mediante il segnale DoorOpenSignal (1=apri,0=chiudi);

4. I motori per l’apertura/chiusura della porta vengono attivatidal fronte di OpenDoor e CloseDoor;

5. L’avvio/stop del sistema avviene mediante il pulsante MrStart,MrEnd.

6. E necessario segnalare con un segnale di pericolo il sistema instato di stop.

Stefano Miani

Page 46: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

FUNCTION BLOCK MRCONTROL

VAR INPUT

MRsTart: BOOL R EDGE;

MREnd: BOOL;

S1, S2, S3: BOOL R EDGE;

DoorOpenSignal: BOOL;

END VAR

VAR IN OUT

STartStop: BOOL;

END VAR

VAR OUTPUT

OpenDoor, CloseDoor: BOOL;

END VAR

VAR OUTPUT RETAIN

EndSignal: BOOL;

END VAR

VAR

StationStop: CTU; (*contatore numero di stop*)

DoorTime: TON; (*chiusura ritardata porta*) END VAR

VAR RETAIN

Direction: BOOL; (direzione: su=1, giu=0*) END VAR

(* Prima partenza? Azzera tutte le variabili *)

LD MRstart

R EndSignal

JMPC ResCount

JMP Arrive

ResCount: LD 1

ST StationStop.Reset LD 9999

ST StationStop.pv

CAL StationStop (*FB *)

JMP Closecabin

Stefano Miani

Page 47: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Arrive:LD S1

OR S2

OR S3

R StartStop

CALC StationStop(RESET:=0, CU:=1)

LD S1

XO3 S3

JMPCN NoDirChange

LD Direction

STN Direction

NoDirchange:LD OpendoorSignal

ANDN STartStop

ST Opendoor

LD Mrend

ANDN StartStop

S EndSignal

JMPC Pouend

CloseCabin:LD DoorOpenSignal

STN CloseDoor

LDN DoorOpenSignal

ANDN StartStop

ST Doortime.IN

LD T#10s

ST Doortime.PT

CAL DoorTime

LD DoorTime.Q

S StartStop

PouEnd: RET

END FUNCTION BLOCK

Stefano Miani

Page 48: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

ST

Pro: Alto livello, formulazione/scrittura compatta, chiara, potentee strutturata (niente JMP o GOTO)Contro: assenza controllo compilazione, minore efficienza.Istruzioni (statement) separate da ’;’. L’EOL o LF=spazio. Piuistruzioni su una linea o istruzione su piu linee. Commentiall’interno delle istruzioniA:=(*operatore assegnazione *) IN1 (*ingresso*) AND

(*operatore*) IN2;

Stefano Miani

Page 49: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Statement

I assegnazione: a:=10;

I chiamata FB : nome FB(IN1:=10,IN2:=10,mio out);

I terminazione POU ante tempo: RETURN (*a POU chiamante *);Assegnare la variabile di uscita di una FUN prima delRETURN

I selettore binario: IF a<3 THEN g:=4; ELSEIF a=3 THEN g:=7;ELSE g:=0; END IF;

I selettore multiplo: CASE nome var OF 1: g:=11; 2: g:=12; ELSEg:=0; END CASE;

CONTINUA

Stefano Miani

Page 50: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

I ciclo (numerato) FOR: FOR nome var:=val ini TO val fin BY passoDO h:=h/2; END FOR;1) nome var, val ini, val fin e passo dello stesso tipo2) non alterare nome var, val ini e val fin all’interno del loop(passo?);

I ciclo (controllo inizio) WHILE: WHILE nome var=TRUE DOh:=h/2; IF h<= 1 THEN nome var:=FALSE; END IF;END WHILE;

I ciclo (controllo fine) REPEAT: REPEAT nome var:=nome var*2;UNTIL nome var¡=100; END REPEAT;

I terminazione ciclo: EXIT; (* esce dal LOOP prima del verificarsidella condizione di fine loop*)

I vuota: ;; (* per migliore leggibilita codice *);

Stefano Miani

Page 51: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Espressioni e operatori

I PROG=lista di istruzioni, istruzione= lista di espressioni,espressioni= operando+operatore+operando

I Operatori: parentesi, chiamata di funzione (nomefunzione+parametri), potenza **, opposto -,NOT, AND, OR,XOR, confronto <, <=, >,>=, =, etc.

I Regole di precedenza classiche (* > + e -, parentesi > altre,etc.), definite da standard (tabella 4.6)

I non utilizzare mai FB all’interno di espressioni (nonproducono un valore come le FUN ).

Stefano Miani

Page 52: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Esempio ST

I Regolazione dei due speaker a seconda del valore delbilanciamento (balance), INT tra -5 e +5, e del volume , INTtra 0 e 10. L’uscita agli amplificatori e un REAL;

I Controllo del volume. Un LED deve segnalare se il volumeeccede un valore di sicurezza per un tempo predefinito e taleevenienza deve essere segnalata al programma chimante;

I Il programma deve essere parametrizzato per due modelli.

L

−5 5

0 0

−10 10

Bal Vol

R

Figure: Diramazioni, crossing e wired-OR

Stefano Miani

Page 53: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

FUNCTION BLOCK Volume

VAR INPUT

BalControl: SINT(-5..5); (* bilanciamento, intero da -5 a 5 *)

VolControl: SINT(0..10); (* volume, intero da O a 10 *)

ModelType: BOOL; (* 2 modelli: TRUE o FALSE *)

END VAR

VAR OUTPUT

RightAmplif, LeftAmplif: REAL; (* variabile regolazione ampli dx e sx*)

LED: BOOL; (* LED di allarme on: TRUE; off: FALSE *)

END VAR

VAR IN OUT

Critical: BOOL; (* return value *)

END VAR

VAR

MaxValue: REAL:=26; (* max. amplificazione; se attiva a lungo, LED=ON *)

HeatTime: TON; (* istanziazione FB*)

(* per controllare tempo attivazione max amplif.*)

Overdrive: BOOL; (* stato di allarme *)

END VAR

Stefano Miani

Page 54: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

(* Regolazione ampli destro in funzione di bilanciamento e volume*)

RightAmplif:= Norm (LCtrlK := VolControl,Type := ModelType,BIK := BaIControl+5);

(*Regolazione ampli sx*)

LeftAmplif:=Norm (LCtrlK := VolControl,Type := ModelType,BIK:= ABS(BaIControl- 5));

(* Amplificazione troppo alta? *)

IF MAX(LeftAmplif, RightAmplif) >= MaxValue THEN

Overdrive := TRUE;

ELSE

Overdrive := FALSE;

END IF;

(* Amplificazione troppo alta per piu di 2 secondi? *)

HeatTime (IN := Overdrive, PT := T#2s);

LED := HeatTime.Q;

IF HeatTime.Q = TRUE THEN

Critical:= 1;

END IF;

END FUNCTION BLOCK

Stefano Miani

Page 55: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

FUNCTION Norm: REAL

VAR INPUT

BIK: SINT;(* bilanciamento *)

LCtrIK:SINT;(* volume *)

Type: BOOL;(* 2 tipi: TRUE o FALSE *)

END VAR

TYPE

CalType : REAL := 5.0; (* nuovo tipo di dato con val. iniz. =5.0 *)

END TYPE

VAR

Calib:CaIType; (* Fattore di scala per l’uscita su ampli *)

END VAR

(* Calcola il valore dell’ampli a seconda di volume, bilanciamento e modello *)

Norm := SINT TO REAL(BIK) + (* bilanciamento *)

Calib + (* + fattore di scala *)

SEL(G := Type, IN0 := 4.0, IN1 := 6.0) + (* + fz. del modello *)

SINT TO REAL(LCtrIK); (* + volume*)

END FUNCTION

Stefano Miani

Page 56: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Struttura FBD e LD

1. Intestazione e conclusione della POU

2. Dichiarazione di variabili

3. Codice: suddiviso in reti (networks), numerate in sequenza inmaniera automatica (0001, 0002 ). Il numero svolge il ruolo di“numero di riga” di un classico linguaggio di programmazione.Ogni rete consiste di

3.1 Etichetta (label): per raggiungere le istruzioni della rete daaltra rete (JUMP). Il nome e locali=visibilita limitata allaPOU in cui si trova.

3.2 Commento3.3 Grafico funzionale (funzionamento della rete)

numerazione automaticaz}|{0010

nome scelto dall’utentez }| {Nome label :

(∗ Commento∗)

grafico funzionale

Stefano Miani

Page 57: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Elemento1

Elemento2

Elemento3

Elemento4

Elemento1 Elemento3

Elemento4Elemento2

Wired OR solo in LD

Figure: Diramazioni, crossing e wired-OR

network_X:

seconda_parte

prima_parte conn1

conn1

schermo

connettore (locale POU)

Figure: Connettori

Stefano Miani

Page 58: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

funzione

AND

VarAnd1

VarAnd2 CTUCU

R

PV

Counter_1

Blocco funzionaleistanza

1000

Var_start

Q

CV

VarOut

ab

d

>=1

c&

ab

c d+

*d=c and (a or b) d=c+ab

Figure: Connessione di FUN eFB

a

c d+

*ab

c d+

*d

feedback implicito feedback esplicito

Figure: Feedback

Stefano Miani

Page 59: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Oggetto Nome Significato Esempio

1—<RETURN>RETURN incondizionatoRET

restituisce il controllo alla POU chiamante [0005]

nwp—<RETURN>RETURN condizionatoLD nwpRETC

se nwp==1 termina la POU e ritornaa chiamantese nwp==0, ignora

[0005]

1—>>nome labelsalto incondizionatoJMP nome label

salta a network indicata

nwp—>> nome labelsalto condizionatoLD nwpJMPC nome label

se nwp==1 salta a nome labelse nwp==0, ignora

[0004]

Reti elaborate dall’alto al basso (eventualmente con JUMP).Regole di elaborazione della singola rete: 1) necessariaelaborazione di tutti gli ingressi di un elemento (FUN o FB )prima dell’esecuzione dell’elemento 2) l’elaborazione di unelemento e completata solo quando tutti le uscite sono stateelaborate 3) l’elaborazione di una rete e completata quando tuttigli elementi sono stati elaborati

Stefano Miani

Page 60: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Esempio FBD

FUNCTION BLOCK Volume

VAR INPUT

BalControl: SINT(-5..5); (* bilanciamento, intero da -5 a 5 *)

VolControl: SINT(0..10); (* volume, intero da O a 10 *)

ModelType: BOOL; (* 2 modelli: TRUE o FALSE *)

END VAR

VAR OUTPUT

RightAmplif, LeftAmplif: REAL; (* variabile regolazione ampli dx e sx*)

LED: BOOL; (* LED di allarme on: TRUE; off: FALSE *)

END VAR

VAR IN OUT

Critical: BOOL; (* return value *)

END VAR

VAR

MaxValue: REAL:=26; (* max. amplificazione; se attiva a lungo, LED=ON *)

HeatTime: TON; (* istanziazione FB*)

(* per controllare tempo attivazione max amplif.*)

Overdrive: BOOL; (* stato di allarme *)

END VAR

Stefano Miani

Page 61: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Figure: Esempio codice FBD (continua)

Stefano Miani

Page 62: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Figure: Esempio codice FBD (continua)

Stefano Miani

Page 63: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

FUNCTION Norm: REAL

VAR INPUT

BIK: SINT;(* bilanciamento *)

LCtrIK:SINT;(* volume *)

Type: BOOL;(* 2 tipi: TRUE o FALSE *)

END VAR

TYPE

CalType : REAL := 5.0; (* nuovo tipo di dato con val. iniz. =5.0 *)

END TYPE

VAR

Calib:CaIType; (* Fattore di scala per l’uscita su ampli *)

END VAR

Stefano Miani

Page 64: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Figure: Esempio codice FBD

Stefano Miani

Page 65: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

LD

I deriva dagli schemi a contatti elettromeccanici

I principalmente utilizzato per funzioni logiche

I codice ordinato per networks, come in FBD

I ogni network e organizzata tra le “linee di potenza” a sx e dx

I la linea a sx e caricata al valore 1 (alto)

I i vari contatti lungo la linea lasciano passare (o fermano) ilvalore 1

Var1 Var2 Varout

Var3

0001 Prima_rete

Varout=Var1 and (Var2 or Var3)

Figure: LD

Stefano Miani

Page 66: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Contatti e bobineA

= (vsx) AND (NOT A)

AP

AA=vsx

Nota: con la lettera M nellabobina A e’ di tipo RETAIN

A=TRUE se frontedi salita di vsxA= immutato altrimenti

AP

A= (vsx) AND A Contatto aperto/chiuso

AN

= TRUE se

=FALSE altrimenti

= TRUE se

2) vsx=TRUE=FALSE altrimenti

1) fronte salita A

1) fronte discesa A2) vsx=TRUE

AA=NOT(vsx)

AS

A=TRUE se vsx=TRUE immutato, altrimenti

AR A=FALSE se vsx=TRUE

immutato, altrimenti

Contatto rising edge

Contatto falling edge

Bobina

Bobina negata

Bobina set

Bobina reset

Nota: anche SM

Nota: anche RM

Bobina rising/falllingedge

AN

vsx

Figure: LD

Stefano Miani

Page 67: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Controllo del programma

Oggetto Nome Significato Esempio

——<RETURN>RETURN incondizionatoRET

restituisce il controllo alla POU chiamante [0011]

—nwp—<RETURN>RETURN condizionatoLD nwpRETC

se nwp==1 termina la POU e ritornaa chiamantese nwp==0, ignora

[0005]

——>>nome labelsalto incondizionatoJMP nome label

salta a network indicata [0002,4]

—nwp—>> nome labelsalto condizionatoLD nwpJMPC nome label

se nwp==1 salta a nome labelse nwp==0, ignora

[0001,8]

Stefano Miani

Page 68: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Chiamata di FB

Come in FBD, ma almeno un ingresso e un’uscita devono essereBOOL e collegati alle linee di potenza sx e dx.

nwp nwpCTU

CU

R

PV

Counter_1

Blocco funzionaleistanza

Q

CVSetValue

ResVar

Figure: Chiamata FB

Stefano Miani

Page 69: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Chiamata di FUNLe FUN dispongono di ulteriori I/O BOOL: EN e ENO, dacollegare (direttamente o tramite altre reti) alle line potenza.

I Se EN=FALSE, la funzione non viene eseguita eENO=FALSE;

I Se EN=TRUE, ENO viene inizializzato a TRUE;I Durante l’esecuzione della funzione ENO puo essere assegnato;I Se durante l’esecuzione della FUN c’e un errore (vedi

appendice E), ENO=FALSE.

nwp nwpSEL

EN

IN1

SelVar GIN0

Var2

Var1

ENOOutVar

Figure: Chiamata FUN

Stefano Miani

Page 70: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Esecuzione e feedback

Come in FBD, riga per riga da alto verso basso. Per quantoriguarda l’elaborazione della singola rete, dipende dal sistema,tipicamente, da sx a dx. Si vedano figure 4.38 e figura 4.39.In LD e ammesso il solo feedback implicito (nessunaretroconnessione).

Var1 Var2

Var3

0001 Prima_rete

Var1

Figure: Feedback

Si sconsigila l’utilizzo di feedback con variabili di uscita di FB

Stefano Miani

Page 71: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Esempio in LD

FUNCTION BLOCK MRCONTROL

VAR INPUT

MRsTart: BOOL; (*segnale avvio*)

MREnd: BOOL; (* avvio procedura stop*)

S1, S2, S3: BOOL; (* sensori di stazione*)

DoorOpenSignal: BOOL;(switch apertura porta: 1=aperta, 0=chiusa*)

END VAR

VAR IN OUT

STartStop: BOOL; (* movimento cabina: 1=movimento, 0=ferma*)

END VAR

VAR OUTPUT

OpenDoor, CloseDoor: BOOL; (* motori apertura/chiusura porta*)

EndSignal: BOOL; (* segnale avviso sistema spento*)

END VAR

VAR OUTPUT RETAIN

EndSignal: BOOL;

END VAR

VAR

StationStop: CTU; (*FB contatore numero di stop*)

DoorTime: TON; (*FB chiusura ritardata porta*)

Dirswitch: SR; (*FB flip-flop SR per cambio direzione*)

END VAR

VAR RETAIN

Direction: BOOL; (* direzione attuale*)

END VAR

Stefano Miani

Page 72: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

0001:

(* Se il sistema viene avviato per la prima volta dopo shut-down, resetta EndSignal*)

0002:

|--------->> Arrive

0003 ResCount:

(*Risetta il contatore di stazioni*)

0004:

|--------->> CloseCabin

0005 Arrive:

(* incrementa il valore del contatore di stazioni se la cabina arriva ad una stazione *)

Stefano Miani

Page 73: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

0006:

(* Cambio di direzioni su stazione 1 e 3*)

0007:

(* se sono verificate le condizioni per aprire la porta, attiva OpenDoor *)

0008:

(*se richiesto il poweroff, segnalalo e esci*)

0009 CloseCabin:

(* chiudi la porta quando l’interruttore di apertura porta viene chiuso *)

Stefano Miani

Page 74: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

0010:

(* la cabina riparte 10 secondi dopo l’attivazione dell’interruttore porte*)

0011 PouEnd:

(* return a POU chiamante *)

|---------<RETURN>

END FUNCTION BLOCK

Stefano Miani

Page 75: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

SFC

I utilizzato per scomporre in sottounita programmi ad elevatacomplessita;

I scomposizione in processi sequenziali e paralleli;

I la temporizzazione delle sottounita dipende da condizionistatiche (variabili funzione del programma) e dinamiche (I/Odel PLC);

I le sottounita sono programmate in uno dei quattro linguaggivisti (LD, IL, ST, FBD);

I SFC deriva dalle reti di PETRI e viene verificato formalmente;

I linguaggio grafico (immediato), ma ammette descrizione informato testuale (interscambio, backup);

I descrizione di funzioni in SFC non permessa

I se una POU e scritta in SFC, allora tutta la POU deve esserestrutturata in SFC

Stefano Miani

Page 76: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Processo chimico

1. Riempimento serbatoio fino a sensore pieno;

2. Chiusura valvola riempimento e attivazione mixer fino araggiungimento mixing desiderato;

3. Interruzione mixer, svuotamento serbatoio mediante aperturavalvolva uscita.

Lavabiancheria

1. Apertura valvola acqua e riempimento serbatoio fino a sensorepieno;

2. Rotazione cestello per intervallo funzione del carico e cicloscelto

3. ...

4. Centrifuga, svuotamento

Stefano Miani

Page 77: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

I POU in SFC suddivisa in una o piu reti (networks), ciascunacomposta da passi (step) e transizioni (transitions);

I step: attivo o inattivo. Se attivo, viene ripetuto un set diistruzioni (actions) fino alla disattivazione;

I transition: disattivano gli step a monte e attivano gli step avalle: lo stato di attivo (token) viene passato dai predecessoriai successori;

I i token non possono moltiplicarsi o circolare in manieraincontrollata: strumenti per la verifica formale del correttofunzionamento;

I il verificarsi di una transizione dipende dalla condizione ditransizione=espressione booleana;

I una POU ha sempre uno step iniziale da cui parte;

Stefano Miani

Page 78: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Stefano Miani

Page 79: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Sequenza singola: ST=⇒ Trans =⇒ SB Se ST e attiva, alverificarsi di Trans, il token viene passato a SB.

Percorso divergente (1/3): selezione di una sola sequenza, conpriorita decrescente da sx a dx (asterisco) Se ST e attiva, letransizioni Trans1, Trans2,.... vengono verificate e la prima diqueste che e vera (l’iesima), disattiva ST e attiva a vallel’iesimo step SB. Anche in formato testo

Percorso divergente (2/3) con priorita assegnata: selezione di

una sola sequenza, con priorita assegnata dall’utente. Solo

grafico.

Stefano Miani

Page 80: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Percorso divergente (3/3) mutuamente esclusivo: come ildivergente, ma senza precedenza e con condizioni di transizionemutuamente esclusive (una sola TRUE per volta). Solo grafico.

Convergenza di sequenze: quando uno degli step STn e attivoe la corrispondente Transn diventa TRUE, STn viene disattivatoe il token passato a SB.

Sequenze simultanee (parallelo): if ST=ACTIVE and Trans=TRUE then stop(ST); start(SB1); start(SB2); end if.

Convergenza di sequenze in parallelo: se tutte le STn sono

attive e Trans =TRUE, allora interrompile tutte e attiva SB.

Stefano Miani

Page 81: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Anello: come il divergente sotto (1/3, 2/3, 3/3), con lapossibilita di ritornare a uno step a monte.

Sequenza di bypass: come il divergente a monte (1/3, 2/3,3/3), step vuoto su un canale.

Stefano Miani

Page 82: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

I Rete insicura: token incontrollato;

I Rete irragiungibile: token non puo mai raggiungere alcunistep;

Figure: Rete insicura (sx) e rete irragiungibile (dx)

Stefano Miani

Page 83: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Step

I step=set di istruzioni eseguite fino a che lo step e attivo

I deattivazione tramite transition=condizione booleana ditransizione

I transizioni programmate in IL, FBD, LD, ST

Stefano Miani

Page 84: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Collegamento all’action blockfornisce flag attivazione

nome_step

Nome dello step

(*corpo dello step *)END_STEP

STEP nome_step:

Collegamento all’action blockfornisce flag attivazione

nome_step

Nome dello step

(*corpo dello step *)END_STEP

INITIAL_STEP nome_step:

Figure: Rappresentazione grafica e testuale di uno step

I nome step.X (WP), variabile definita in modo implicito, flagdi attivazione dello step (step flag)=TRUE/FALSE

I nome step.T (WP), tempo di attivazione dello step. =0 se lostep non e mai stato attivo, altrimenti la durata dell’ultimaattivazione. Se e necessario utilizzare tale informazione alciclo successivo: POU di tipo RETAIN

Stefano Miani

Page 85: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Transition

Una transizione attiva gli step a valle se (a) tutti i passi a montesono attivi e (b) la condizione di transizione e vera.Descrizione di una transition:

1. Sintassi immediata: condizione di transizione scritta a fiancodella transizione (ST, LD, FBD). Espressioni booleane consola assegnazione alla variabile di transizione (FUN OK, FBKO);

2. Connettori: condizione di transizione fornita dalla reteassociata al connettore (LD, FBD);

3. Nome della transizione: la transizione viene descrittaseparatamente (LD, ST, FBD, IL). La stessa descrizione puoessere utilizzata per piu transizioni.

Stefano Miani

Page 86: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Stefano Miani

Page 87: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Stefano Miani

Page 88: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

Stefano Miani

Page 89: Programmazione di dispostivi industriali IEC 61131-3 · Premessa I > uso dei PLC grazie al miglioramento prestazioni e miniaturizzazione tecnologia I controllo e supervisione di sistemi

TRANSITION FROM (stepM 1,..,stepM n) TO (stepV 1,..,stepV n):

LD Var1

AND Var2 (*il CR deve contanere un BOOL alla fine*)

END TRANSITION

TRANSITION FROM (stepM 1,..,stepM n) TO (stepV 1,..,stepV n)

:= Var1 & Var2 (*espressione booelana*)

END TRANSITION

Desiderata non ancora implementati:TRANSITION nome transition FROM (stepM 1,..,stepM n) TO (stepV 1,..,stepV n):

(* condizione di transizione*)

END TRANSITION

Stefano Miani