Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39...

39
Linguaggi di Programmazione IEC 1131 Linguaggio a contatti (Ladder Diagram) Diagramma a blocchi funzionali (FBD) Diagramma sequenziale funzionale (SFC) Lista di istruzioni Testo strutturato

Transcript of Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39...

Page 1: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Linguaggi di Programmazione

�IEC 1131� Linguaggio a contatti (Ladder Diagram)

� Diagramma a blocchi funzionali (FBD)

� Diagramma sequenziale funzionale (SFC)

� Lista di istruzioni

� Testo strutturato

Page 2: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Ladder Diagram

I1:4

I1:7

I1:7

I1:4

U3:15

Page 3: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Functional Block Diagram

&

&

+

&

I22

M3

I2

I15

I4

U31

M22

U6

Page 4: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Sequential Functional Chart

10

1

20

31 41

11

Page 5: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Linguaggi Testuali

� Lista di istruzioni

Start LD i25

ADD var

MUL 10

SUB livello

GT 25

STO m2

LD u39

� Testo strutturatoIf (livello<livello_max)

then

valvola1 = true

else

allarme = true

valvola1 = false

end_if

aux=i25*10-4

Page 6: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Linguaggio a contatti virtuale

�Area degli ingressi� I1-I32 ���� Ix:y

�Area delle uscite� U1-U32 ���� Ux:y

�Area dei Temporizzatori� T1-T16 ���� Tx

�Area Contatori� C1-C6 ���� Cx

�Area PID� P1-P4 ���� Px

�Area Utente� W1-W512 -> Wx:y

�Database (eventuale)� Address/Symbols

� Instruction comments

� Rung comments

Page 7: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Ladder Logic

Page 8: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Istruzioni di base

� Contato normalmente aperto� Si chiude se il bit vale 1

� Contatto normalmente chiuso� Si apre se il bit vale 1

� Bobina� Se le condizioni logiche alla sua sinistra

sono verificate l’uscita associata andrà ad 1 (ON)

� Latch bobina� Mantiene lo stato ON anche quando le

condizioni di attivazione vengono a mancare

� Unlatch bobina� Riporta ad OFF un’uscita

L

U

Page 9: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Esempio di Rung

I1 I3 I4

I5

I7

I2 U1

I6

Page 10: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Programmazione di una XOR

I1:4

I1:7

I1:7

I1:4

U3:15

I1:4

U3:15

I1:7

Page 11: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Programmazione di un elemento di memoria

I2:2

U1:1

I3:9

I2:2

U1:1

I3:9 U1:1

Page 12: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Riconoscimento di Fronte di Salita

I1:1

W1:1

W1:2

I1:1 W1:2 W1:1

W1:2

Page 13: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Riconoscimento di Fronte di Discesa

I1:1

W1:1

W1:2

I1:1 W1:2 W1:1

W1:2

Page 14: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Flip-Flop di tipo D

I1:1

W1:1

W1:2

U2:1

I1:1

W1:1

W1:2 W1:1

W1:2

U2:1

U2:1

U

L

U2:1

U2:1

Page 15: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Due Programmi Non Equivalenti

I1:1 U4:1

U4:1 U1:15

U1:15 U6:3 I1:1 U4:1

U4:1 U1:15

U1:15 U6:3

L’ordine con cui vengono eseguiti i vari Rung è fondamentale

Page 16: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Istruzioni di Temporizzazione

� Temporizzatore ���� Tx� Se il rung che lo contiene è abilitato conta il trascorrere del

tempo fino ad un valore preimpostato.

� Quando arriva a questo valore Tx diventa vero.

� In Tx.acc è possibile leggere il tempo trascorso

� Se il rung torna falso prima del completamento del tempo Tx si disattiva.

� Temporizzatore a ritenuta ���� TxR� Continua a contare anche se il rung di attivazione diventa falso.

� Reset temporizzatore ���� RES� Resetta un temporizzatore a ritenuta.

Page 17: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

TemporizzatoriI3:1

T2

W5:2

U3:2

T26000

I4:2

T4R1000

T2 W1:5T4

T4R

RES

Page 18: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Ritardo di Spegnimento

I1:1

T1

U2:1

5s

I1:1 T1 U2:1

U2:1

T1500

I1:1

Page 19: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Oscillatore ad Onda Quadra

I10:3

T6

T5

U2:4

2s 3s

I10:3

U2:4

T5200

T5

T6300

T6

Page 20: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Impulso all’Accensione

I3:2

T1

U2:1

1s

I3:2

U2:4

T1100

T1

Page 21: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Impulso allo Spegnimento

I1:1

W2:2

W2:1

U1:1

T92s

I1:1 I1:1

W2:2 W2:1

T9200

W2:1 W2:2T9

I1:1 U1:1W2:2

Page 22: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Istruzioni di Conteggio

� Contatore ad incremento� Se il rung di attivazione subisce una transizione

falso����vero il contatore Cx si incrementa di un’unità.

� Cx.acc contiene il valore attuale del contatore

� Cx diventa vero quando il contatore raggiunge il limite preimpostato.

� Reset contatore� Riporta a zero il contatore Cx

Page 23: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Contatore

I1:2

C2

W1:4

U2:4

C2122

C2

RES

Page 24: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Conteggio di EventiI1:1 W1:2

W2:1

C43

C4 U1:1

C4

W1:1

U1:1 W1:1

C4

RES

I1:1

W1:1

U1:1

C4

W1:2

Page 25: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Temporizzatori e Contatori in Cascata

I1:1

T1360000

T2180000

T1

T56000

T5

C51000

T5

I2:2 C5

RES

I5:4

C7500

C810

C7

C7

RES

Page 26: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Controllo del programma

� Etichetta --|LBL|--� Label per salti

� Salto --(JMP)--� Se il rung è abilitato il programma passa al rung con l’etichetta indicata

� Salto a sottoprogramma –(JSR)–� Inizio sottoprogramma --|SBR|--� Ritorno da sottoprogramma –(RET)–� Master Control Relay –(MCR)– … –(MCR)–

� I rung della zona delimitata non vengono eseguiti e le bobine di uscitavengono resettate

� Zone control Last State –(ZCL)– … –(ZCL)–� I rung della zona delimitata non vengono eseguiti ma le bobine di uscita

rimangono inalterate.

Page 27: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Esempio di Utilizzo del Salto

W1:1 200

JMP

(procedura di inizializzazione)

L

W1:1

200

LBL

(programma)

Page 28: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Esempio di Utilizzo del Master Control Relay

MCR

MCR

(zona controllata)

Page 29: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Esempio di Utilizzo del Salto a Sottoprogramma

JSR

RET

(sottoprogramma)

300

JSR

300

SBR

300

Page 30: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Istruzione MOV

MOVOP1OP2

� Trasferimento di memoria� Il contenuto di una word è

trasferito in un’altra word

Page 31: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Operazioni Aritmetico/Logiche

XXXOP1OP2RES

� Operazioni aritmetico/logiche a due operandi� ADD

� MUL

� SUB

� DIV

� AND

� OR

Page 32: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Istruzioni di Comparazione

yyyOP1OP2

� Le istruzioni di comparazione fanno parte delle condizioni di attivazione dei rung� EQU

� NEQ

� GEQ

� LEQ

� GRT

� LES

Page 33: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Esempio di Utilizzo di Operazioni Aritmetiche e istruzioni di Comparazione

W3:1

SUBI225

W1

MOVW1

W125

MCR

MCR

GECW190

LEQW1120

Page 34: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Altra Versione dell’Oscillatore

I10:3

GRTT5.acc

200

T5

T5500

U2:4

Page 35: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Registro a Scorrimento a Destra

RSDW3I2:1

� Registro di scorrimento a destra� Nel caso in cui il rung sia attivato la word W viene

shiftata a destra di un bit

� A sinistra entra il bit indicato come secondo operando

Page 36: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Esempio di Utilizzo del Registro a Scorrimento

I22:1EQUI23654

U1:1

RSDW5

I22:1

U1:2W5:12

Page 37: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Sequenziatore

SEQout

wordnum

� Realizza sequenze fissate di bit in uscita� Ad ogni esecuzione sull’uscita “out” vengono scritte la ciclicamente

le parole comprese tra “word” e “word”+num-1.

Page 38: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Istruzione PID

PIDKpKdKirifvarcon

� Regolatore Proporzionale Integrale Derivativo� Kp: guadagno proporzionale

� Kd : guadagno derivativo

� Ki: guadagno integrale

� rif: word del riferimento

� var: variabile da controllare

� com: valore del controllo

Page 39: Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39 Testo strutturato If (livello

Istruzioni Di Comunicazione Via Rete

SENDnumindlun

GETnumindlun

� SEND� Invia un blocco di word ad

un altro PLC connesso in rete

� num: identificativo del PLC� ind: indirizzo di partenza del

blocco da spedire� lun: lunghezza del blocco

� GET� Riceve un blocco di word da

un altro PLC connesso in rete