IL Linguaggio per la programmazione del PLC Ing. Marco Giannini Prof. Giuseppe Mastronardi...

Post on 01-May-2015

237 views 3 download

Transcript of IL Linguaggio per la programmazione del PLC Ing. Marco Giannini Prof. Giuseppe Mastronardi...

IL Linguaggio per la programmazione del PLC

Ing. Marco Giannini

Prof. Giuseppe Mastronardi

Architettura e Programmazionedei Microelaboratori

Anno accademico 2008/2009

Ladder Diagram(Linguaggio a contatti)

Linguaggio a contattiLinguaggio a contatti

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.

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.

Linguaggio a contattiLinguaggio a contatti

Regola fondamentale: il flusso di energia ha come unico verso quello che va dal montante sinistro al montante destro; la bobina U1 può essere accesa se sono chiusi i contatti I1, I2, I3, I4 e non quando sono chiusi i contatti I7, I5, I2, I3, I4.

Tipi di istruzioni del linguaggio a contattiTipi di istruzioni del linguaggio a contatti

1.Istruzioni di base: contatti e uscite di tipo relè2.Istruzioni di temporizzazione e conteggio3.Istruzioni per il controllo del programma4.Istruzioni per la gestione dei dati5.Istruzioni per funzioni speciali (regolatori PID)

Descrizione della memoria RAM di un PLC virtualeDescrizione della memoria RAM di un PLC virtuale

Area degli ingressi: 32 word da 16 bit con indirizzi I1-I32; Ix:y indica il bit y della word x; ad ogni ingresso digitale corrisponde un bit; ad ogni ingresso analogico corrisponde una word di 16 bit.

Area delle uscite: 32 word da 16 bit con indirizzi U1-U32; si utilizzano le stesse convenzioni dell’area degli ingressi.

Descrizione della memoria RAM di un PLC virtualeDescrizione della memoria RAM di un PLC virtuale

Area utente: 512 word da 16 bit indirizzabili con W1-W512; è utilizzata per memorizzare dati, tabelle, risultati parziali dell’elaborazione del programma utente.

Area PID: sono previste 4 strutture di tipo regolatore PID indirizzabili con P1-P4.

sono previste 16 strutture di temporizzazione con indirizzi T1-T16.

Area deiTemporizzatori

:

Modalità di esecuzione di un programma scritto in Modalità di esecuzione di un programma scritto in linguaggio a contattilinguaggio a contatti

1. Lettura degli ingressi e scrittura del loro stato in memoria.2. Esecuzione del programma un rung dopo l’altro,

procedendo dall’alto verso il basso, da sinistra verso destra.

3. Scrittura delle uscite, prelevando il loro stato dalla memoria.

Istruzioni di baseIstruzioni di base

Contatto normalmente aperto: se il bit ad esso associato è ad 1 (ON) il processore chiude il contatto; se il bit è a 0 (OFF) il contatto rimane aperto. Il bit ad esso associato può appartenere all’area di memoria degli ingressi (Ix:y), delle uscite (Ux:y) e all’area utente (Wx:y).

Contatto normalmente chiuso: se il bit ad esso associato è ad 1 (ON) il processore apre il contatto; se il bit è a 0 (OFF) il contatto rimane chiuso.Valgono le stesse considerazioni dell’istruzione precedente.

Istruzioni di baseIstruzioni di base

Bobina: è utilizzata per settare il bit ad essa associato che può essere un bit dell’area delle uscite (Ux:y) o un bit dell’area utente (Wx:y).Questa istruzione deve essere sempre inserita all’estrema destra del rung; se le istruzioni che la precedono realizzano la continuità elettrica e logica, il bit ad essa associato assume valore “1”, altrimenti assume valore “0”.

Latch bobina: mantiene lo stato ON del bit associato anche quando le condizioni che lo hanno attivato sono diventate false; l’unico modo di portarlo nello stato OFF è utilizzare l’istruzione UNLATCH BOBINA.

Istruzioni di baseIstruzioni di base

Unlatch bobina: è l’istruzione duale della LATCH BOBINA e quindi mantiene lo stato OFF del bit associato anche quando le istruzioni precedenti realizzano la continuità elettrica e logica.Per portare allo stato ON il bit associato, si deve utilizzare necessariamente l’istruzione LATCH BOBINA .

Esempi di programmi con istruzioni di baseEsempi di programmi con istruzioni di base

Si vuole memorizzare nel bit U1:1 il risultato della OR tra i bit I1:1 e I1:2.

Annotazione importanteAnnotazione importante

L’ordine in cui vengono scritti i rung è molto importante.

Nel programma a sinistra tutte le uscite vengono aggiornate in un solo ciclo di esecuzione, mentre nel programma a destra le tre uscite vengono aggiornate in tre cicli successivi una dopo l’altra.

Riconoscimento del fronte di salitaRiconoscimento del fronte di salita

Primo ciclo di esecuzione:

il primo rung viene abilitato quando I 1:1 = 1, per cui W 1:1 viene portato a 1.

Successivamente viene eseguito il secondo rung e quindi anche W 1:2 = 1.

Secondo ciclo di esecuzione:

W 1:2 era stato portato a 1 per cui W 1:1 va a 0.

Istruzioni di temporizzazione e conteggioIstruzioni di temporizzazione e conteggio

Il temporizzatore deve essere sempre posizionato all’estrema destra del rung; Tx è il suo indirizzo con x = 1 - 16; la durata massima è di 360000 centesimi di secondo (un’ora).

Se viene stabilita la continuità logica del rung, il temporizzatore inizia il conteggio e la sua locazione di memoria contiene 0; quando termina il conteggio, Tx = 1 fin quando il temporizzatore non viene resettato; se durante il conteggio si interrompe l’alimentazione, si resetta.

Temporizzatore a ritenuta: il suo funzionamento è molto simile al temporizzatore semplice; se viene interrotta l’alimentazione, viene conservato il valore raggiunto nel conteggio. Per resettare questo temporizzatore si utilizza l’istruzione -(RES)-.

Il valore corrente del conteggio è nell’indirizzo Tx.acc.

Contatore ad incremento: Cx indica l’indirizzo (x = 1- 16), e il massimo numero di eventi contati è 1000.

Deve essere sempre posizionato a destra del rung e, se il rung in cui si trova subisce una transizione falso/vero (0- 1), incrementa di uno il suo valore.

Quando il contatore raggiunge il n. di eventi impostato, il bit ad esso associato assume 1 e viene resettato automaticamente il conteggio.

Per resettare a zero il conteggio da programma, si utilizza l’istruzione -(RES)-; il valore corrente del conteggio è disponibile all’indirizzo Cx.acc.

Istruzioni di temporizzazione e conteggioIstruzioni di temporizzazione e conteggio

Istruzioni per il controllo del programmaIstruzioni per il controllo del programma

Se alimentata, permette di saltare ad un rung dove è presente l’istruzione di etichetta corrispondente indicata mediante un numero; deve essere posizionata all’estrema destra del rung.

Indica la destinazione del salto e deve essere posizionata a sinistra del rung.

Permette di controllare, attraverso un solo insieme di condizioni, l’esecuzione di un’intera parte di programma racchiuse tra due istruzioni MCR (Master Control Relay);se la prima viene alimentata, viene eseguita quella parte, altrimenti tutte le bobine di quella parte sono messe a zero. Le due istruzioni sono posizionate alla destra dei rung.

Il funzionamento del ZCL (Zone Control Last state) è identico a quello dell’istruzione precedente; l’unica differenza è che, se la prima delle due istruzioni non viene alimentata, le uscite presenti nella parte di programma controllata rimangono nel loro stato.

Salto a sottoprogramma: il sottoprogramma è racchiuso tra due istruzioni, una di inizio –I SBR I-, corredata dal numero di sottoprogramma, e l’altra di fine –( RET )-.

Istruzioni per il controllo del programmaIstruzioni per il controllo del programma

Istruzioni per la movimentazione di datiIstruzioni per la movimentazione di dati

Trasferisce il contenuto di una word di memoria (OP 1) oppure un valore assoluto in OP 2.

E’ un’istruzione di uscita e quindi va posizionata a destra del rung.

Esegue operazioni aritmetico/logiche tra due operandi; il risultato dell’operazione è memorizzato in RES.

Le operazioni sono: ADD, MUL, SUB, DIV, AND, OR.

Si posiziona a destra del rung.

Istruzioni per la attivazione dei rungIstruzioni per la attivazione dei rung

Esegue operazioni di comparazione tra due operandi; il risultato dell’operazione è memorizzato in RES.

Le operazioni sono: EQU, NEQ, GEQ, LEQ, GRT, LES.

Si posiziona a sinistra del rung.

Istruzioni PIDIstruzioni PID

Kp: guadagno proporzionale Kd : guadagno derivativo Ki: guadagno integrale rif: word del riferimento var: variabile da controllare com: valore del controllo

Istruzioni di connessioneIstruzioni di connessione

La coppia di istruzioni di connessione -->zyx> e >zyx>-- viene utilizzata per spezzare un rung troppo lungo:

I1 :1 W 1 :2

I2 :1 U 2 :1

> zyx >

> zyx >

Esempi

U3:15 = (I1:4 AND NOT(I1:7)) OR (NOT(I1:4) AND I1:7)

I1 :4

I1 :7

U 3 :1 5

Programmazione di una XORProgrammazione di una XOR

Riconoscimento del Fronte di SalitaRiconoscimento del Fronte di Salita

Riconoscimento del Fronte di DiscesaRiconoscimento del Fronte di Discesa

Flip Flop di tipo DFlip Flop di tipo D

Ritardo di spegnimentoRitardo di spegnimento

Esercizi

EsercizioEsercizio

• Tradurre in LD la seguente istruzione in ST

ENDIF

17: U1SET

T2) OR 7:6))AND(W2:OR(W2)5:W2 AND 1:I3 AND 1:((I5 IF

Soluzione ISoluzione I