programmable logic controllers - plcstatic.gest.unipd.it/~oboe/aut_ind/lucidi/lez_plc_3.pdf · plc-...
TRANSCRIPT
Programmable Logic Controllers - PLC
Lezione 3
PLC- Programmazione
Introdurremo nel seguito i fondamenti della programmazione dei PLC Siemens, disponibili in laboratorio
Il laboratorio ha 10 postazioni con Simatic S7-300, che vengono programmati col linguaggio STEP 7
Tale linguaggio consente la programmazione sia a contatti, che a blocchi che con liste di istruzioni
Generalità
Un programma per PLC è costituito da blocchi che vengono richiamati all'interno di un blocco principale e/o di altri blocchi.
Il blocco principale, denominato OB1, deve essere sempre presente nella memoria del PLC.
Possono essere realizzati:Blocchi Organizzativi, OBFunzioni, FCBlocchi Funzionali, FB
Blocchi organizzativi
Si tratta di blocchi messi a disposizione dal sistema operativo che normalmente non vengono usati per realizzare delle logiche di funzionamento di impianto, bensì per caratterizzare il funzionamento del PLC: decidere le modalità di avviamento, scegliere le
reazioni del PLC in caso di errori di programmazione, fissare il tempo di ciclo massimo, programmare routine di interruzione a tempo, ecc.
Blocchi organizzativi
Il numero e il tipo di OB a disposizione sono variabili a seconda del PLC. Essi vengono individuati dalla sigla OB seguita da un numero: così ad esempio OB10 è il blocco organizzativo numero 10.
Il più importante tra questi blocchi è OB1il sistema operativo del PLC inizia l'esecuzione del
programma utente proprio con OB1E' il blocco principale dal quale possono essere
richiamati tutti gli altri.
Blocchi organizzativi
Blocchi organizzativi
Blocchi organizzativi
Funzioni
Sono blocchi programmabili adatti a realizzare logiche di funzionamento di impianto.
Il set di istruzioni messo a disposizione dal linguaggio Step7 consente una programmazione strutturata e quindi la realizzazione di cicli iterativi e strutture decisionali di tipo IF-THEN-ELSE
Anche questi blocchi vengono individuati dalla sigla (FC) seguita dal numero
Funzioni
Sono blocchi programmabili adatti a realizzare logiche di funzionamento di impianto.
Il set di istruzioni messo a disposizione dal linguaggio Step7 consente una programmazione strutturata e quindi la realizzazione di cicli iterativi e strutture decisionali di tipo IF-THEN-ELSE
Anche questi blocchi vengono individuati dalla sigla (FC) seguita dal numero
Funzioni
La quantità totale di funzioni a disposizione dipende dal tipo di PLCAd esempio per la CPU 315 del PLC S7-300 ne sono
disponibili 128, da FC1 a FC128
Come per le routine dei comuni linguaggi di programmazione, alle funzioni in esecuzione viene assegnata un’area di memoria di lavoro, detta stack
Funzioni
Le funzioni possono avere dei parametri di ingresso e/o di uscita: si tratta di variabili che quando si scrive la funzione
vanno dichiarate in maniera formale e che, quando la funzione viene richiamata all’interno di un blocco, devono essere sostituite con degli operandi reali.
Per una funzione possono anche essere definite delle variabili temporanee locali (memorizzate nello stack), utilizzate esclusivamente nell’ambito della funzione stessa.
Funzioni
L’istruzione di richiamo di una funzione è CALL. Quando il sistema operativo incontra questa
istruzione passa ad eseguire la funzione con i parametri specificati nella sintassi di chiamata.
E’ anche possibile eseguire il richiamo condizionato di una funzione con l’istruzione CC (conditional call) l’esecuzione della funzione avviene se un
determinato bit (denominato risultato logico combinatorio, RLC) aggiornato dal SO vale 1. In caso contrario il richiamo viene ignorato.
Blocchi Funzionali
Si tratta di blocchi analoghi alle funzioni, con la differenza che essi danno la possibilità di definire anche delle variabili statiche.
Inoltre, a ogni blocco funzionale devono essere collegate specifiche aree di memoria denominate blocchi dati di istanza, le quali permettono la memorizzazione del valore dei parametri e delle variabili statiche.
Blocchi Funzionali
Più in dettaglio, come sarà chiarito in seguito, con il termine blocco dati si intende in generale un insieme di variabili raggruppate in un area specifica identificata dal numero del blocco.
Quando un blocco dati di istanza viene associato a un blocco funzionale, il sistema di sviluppo automaticamente riporta nel blocco dati tutti i parametri del blocco funzionale e le variabili statiche.
Blocchi Funzionali
La sintassi di chiamata di un blocco funzionale prevede che venga specificato anche il blocco dati di istanza associato. Pertanto, ad esempio, l’istruzione CALL FB10, DB15
esegue il richiamo del blocco funzionale 10 usando come blocco dati di istanza il numero 15.
Il sistema operativo del PLC ha il compito, durante l’esecuzione del blocco funzionale, di mantenere aggiornati i valori delle variabili nel blocco dati di istanza associato.
Operandi ed istruzioni
Un'istruzione nel linguaggio di programmazione Step7 è costituita da codice operativo e operando.
Il codice operativo identifica univocamente l’istruzione, mentre l’operando specifica “l’oggetto” dell’istruzione stessa.
I principali tipi di operandi sono i seguenti:Ingressi UsciteMerkerDati
Ingressi
Gli ingressi sono operandi che provengono direttamente dal collegamento del PLC con il campo.
Essi vengono identificati univocamente con il numero di byte.
Normalmente un PLC mette a disposizione i byte di ingresso che iniziano dal numero 0 e vanno sino a un valore che dipende dalle caratteristiche del PLC (63, 127, 255, ecc.).
Ingressi
Anche i bit che compongono i byte di ingresso possono essere usati come operandi; per identificarli è necessario specificare il byte e il
numero del bit all’interno del byte.
E’ inoltre possibile riferirsi a strutture più complesse quali ad esempio una word o una doppia word di ingresso. Una word di ingresso è costituita da due byte contigui; una doppia word da quattro byte contigui. sono identificate dal numero del primo byte che le
compone.
Ingressi
Esempi di operandi Step7 di tipo ingresso sono:E 5.4 bit 4 del byte di ingresso 5EB 7 byte di ingresso 7EW 10 word di ingresso 10 (byte 10 e 11) ED 4 doppia word di ingresso 4 ( byte 4, 5, 6, 7).
Si noti infine che l’uso del simbolo E per gli ingressi deriva dalla lingua tedesca (Eingabe).
Uscite
Le uscite sono gli operandi che permettono al PLC di inviare comandi verso il campo.
Per quanto riguarda la loro organizzazione valgono tutte le considerazioni fatte per gli ingressi.
Il simbolo che individua le uscite è A (dal tedesco Ausgabe).
Uscite
Esempi di operandi Step7 di tipo uscita sono:A 6.3 bit 3 del byte di uscita 6AB 100 byte di uscita 100AW 88 word di uscita 88, ( byte 88 e 89)AD 16 doppia word di uscita 16 (byte 16, 17, 18, 19)
Come già visto per gli ingressi, anche il numero di byte di uscita a disposizione dipende dal tipo di controllore programmabile.
Merker
I merker sono dei registri residenti nella memoria di sistema del PLC da usare come memorie di lavoro.
Il sistema operativo del PLC garantisce l’accesso ai merker con modalità analoghe a quelle viste per gli ingressi e le uscite.
E’ anche possibile specificare il comportamento dei merker a ogni avviamento ad esempio si può scegliere che essi vengano azzerati,
oppure che il loro valore precedente venga mantenuto.
Merker
Esempi di operandi Step7 di tipo merker sono:M 3.3 bit 3 del byte di merker 3MB 108 byte di merker 108MW 18 word di merker 18, (byte 18 e 19) MD 20 doppia word di merker 20 ( byte 20, 21, 22, 23).
Il numero di byte di merker a disposizione dipende dal tipo di PLC.
Dati
I blocchi dati sono delle aree di memoria, identificati da un numero e definibili con ampia libertà dall’utente, che devono essere inserite nella memoria di programma del PLC.
Successivamente alla loro introduzione, i dati all’interno dei blocchi possono essere acceduti con modalità analoghe a quelle viste per ingressi, uscite e merker.
Dati
I blocchi dati sono organizzati a byte, tuttavia oltre ai formati usuali dei dati (bit, byte, word, doppia word) possono essere introdotti formati molto più complessi quali array e strutture.
Esempi di operandi Step7 di tipo dato sono:DB10.DBX 3.7 Bit 7 del byte 3 del blocco dati numero10DB100.DBB 11 Byte 11 del blocco dati numero 100DB8.DBW 12 Word 12 del blocco dati 8 (byte 12 e 13)DB16.DBD 4 Doppia word 4 del blocco dati 16 ( byte 4, 5, 6, 7).
Dati
Si noti che non è sempre necessario specificare il numero di blocco dati per identificare l’operando. può essere usata l’istruzione AUF DBn con la quale
viene “aperto” il blocco dati specificato dal numero n. Nella parte di programma successiva a tale istruzione si
possono usare ad esempio operandi del tipo DBX 2.1 che identifica il bit 1 del byte 2 del blocco dati aperto in precedenza, oppure anche DBB12 che individua il byte 12 sempre del blocco dati aperto.
Dati
I blocchi dati devono essere esplicitamente introdotti dall’utente nella memoria di programma, e come tali occupano parte di questa memoria, riducendo quella a disposizione per il programma utente è opportuno usare i blocchi dati solo quando essi sono
effettivamente necessari e prestando attenzione alle loro dimensioni.
Lo stesso problema non si presenta con i merker in quanto essi sono in numero fisso e risiedono nella memoria di sistema del PLC.
Formato dei numeri
Il linguaggio dà la possibilità di usare diversi formati per la rappresentazione dei numeri.
booleano (1 bit)esadecimali a 8/16/32 bit interi a 8/16/32 bitvirgola mobile a 32 bit
Sono inoltre disponibili formati speciali per esprimere tempi, date, valori di conteggio.
I PLC che si stanno analizzando sono dotati di due accumulatori a 32 bit (ACCU1 e ACCU2)
Operazioni su bit
Le operazioni logiche combinatorie a bit interpretano gli stati di segnale di 1 e 0, e li combinano secondo la logica booleana per eseguire una varietà di funzioni.
Queste combinazioni producono un risultato di 1 o 0 che è chiamato “risultato logico combinatorio” (RLC).
Operazioni su bit
Per le combinazioni logiche con operandi a bit vi sono le seguenti operazioni di base: U AND UN AND negato O OR ON OR negato X OR esclusivo XN OR esclusivo negato
Operazioni su bit
Operazioni su bit
Operazioni su bit
Parola di stato
I bit di stato che sono raccolti nella parola di stato forniscono informazioni sul risultato oppure sullo stato di operazioni.Il bit 0 (/bit ER) della parola di stato è il cosiddetto
bit di prima interrogazione. Se lo stato di segnale del / bit ER è uguale a "0", allora la catena combinatoria inizia con una prima interrogazione.
Lo stato del segnale "0" indica quindi che con la prossima operazione combinatoria nel programma applicativo comincia una nuova sequenza combinatoria.
Parola di statoIl bit 1 della parola di stato è il bit di RLC (RLC=
"Risultato Logico Combinatorio") e serve come memoria intermedia nelle combinazioni binarie.
Una operazione in una catena di operazioni combinatorie interroga lo stato del segnale di un contatto e combina il risultato dell'interrogazione (bit di stato), secondo le regole della logica booleana, con il bit di RLC. Il risultato viene nuovamente depositato nel bit di RLC.
Il bit 2 (bit di stato) memorizza il valore di un bit interrogato e, nelle operazioni di interrogazione (A, AN, O, ..) opp. di scrittura (=, S, R), mostra sempre lo stato del bit interrogato.
RLCSi tratta di un bit che viene continuamente
elaborato dal PLC. Ogni istruzione del linguaggio Step7 può dipendere
dal RLC, lo può influenzare oppure può essere indipendente dall’RLC.
All'inizio di una sequenza logico combinatoria l’RLC assume il valore del primo bit interrogato (indipendentemente dal tipo di operazione)
Nelle istruzioni successive l’RLC è calcolato tenendo in considerazione il suo valore precedente, il tipo di operazione e il valore dell'operando.
RLCL'elaborazione dell’RLC continua fino ad incontrare una
istruzione che la termina, quale ad esempio l’istruzione di assegnazione (=).
Il calcolo di un nuovo RLC riprende con la prima istruzione di interrogazione di una nuova sequenza logico combinatoria
Si può quindi affermare che le istruzioni U e O dipendono dall’RLC e lo influenzano, mentre l’istruzione = dipende dall’RLC ma non lo influenza (anche se ne termina l’elaborazione).
AND negato
AND negato
AND prima di OR
AND prima di OR
Istruzioni con parentesi
Si possono adoperare le seguenti operazioni per combinare espressioni a parentesi: U( AND con diramazione UN( AND negato con apertura parentesi O( OR con apertura parentesi ON( OR negato con apertura parentesi X( OR esclusivo con apertura parentesi XN( OR esclusivo negato con apertura parentesi ) Chiusura parentesi
AND con parentesi
AND con parentesi
Set, reset e assegnazione
Si può terminare una stringa logica a bit usando una delle seguenti operazioni: = Assegnazione R Resetta S Imposta
Durante il funzionamento del PLC l’operando dell’operazione di assegnazione può assumere dinamicamente valori diversi a seconda dell’RLC e quindi in definitiva dei valori dei bit coinvolti nelle operazioni logico combinatorie
Set, reset e assegnazione
Le istruzioni Set (S) e Reset (R) dipendono dall’RLC ma non lo influenzano. Il loro funzionamento consiste nel settare o
resettare l’operando quando l’RLC vale 1. Se per esempio si usa l’istruzione di Set, la prima
volta che l’RLC vale 1 l’operando viene posto anch’esso uguale a 1. Tutte le successive esecuzioni del programma con qualsiasi valore dell’RLC sono ininfluenti e l’operando rimane al valore 1.
Analogamente l'istruzione di Reset (R) azzera il valore dell’operando quando l’RLC vale 1.
Set e Reset terminano l’elaborazione dell’RLC.
Set, reset e assegnazioneSi può adoperare una delle seguenti operazioni
per modificare il risultato logico combinatorio (RLC): NOT Nega RLC SET Imposta RLC (=1) CLR Resetta RLC (=0) SAVE Salva RLC nel registro BIE
Altre operazioni rispondono ad una transizione di fronte di salita: FN Fronte di discesa FP Fronte di salita