Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39...
Transcript of Linguaggi di Programmazione - CNRstaff.icar.cnr.it › famularo › Ladder.pdf · STO m2 LD u39...
Linguaggi di Programmazione
�IEC 1131� Linguaggio a contatti (Ladder Diagram)
� Diagramma a blocchi funzionali (FBD)
� Diagramma sequenziale funzionale (SFC)
� Lista di istruzioni
� Testo strutturato
Ladder Diagram
I1:4
I1:7
I1:7
I1:4
U3:15
Functional Block Diagram
&
&
+
&
I22
M3
I2
I15
I4
U31
M22
U6
Sequential Functional Chart
10
1
20
31 41
11
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
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
Ladder Logic
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
Esempio di Rung
I1 I3 I4
I5
I7
I2 U1
I6
Programmazione di una XOR
I1:4
I1:7
I1:7
I1:4
U3:15
I1:4
U3:15
I1:7
Programmazione di un elemento di memoria
I2:2
U1:1
I3:9
I2:2
U1:1
I3:9 U1:1
Riconoscimento di Fronte di Salita
I1:1
W1:1
W1:2
I1:1 W1:2 W1:1
W1:2
Riconoscimento di Fronte di Discesa
I1:1
W1:1
W1:2
I1:1 W1:2 W1:1
W1:2
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
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
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.
TemporizzatoriI3:1
T2
W5:2
U3:2
T26000
I4:2
T4R1000
T2 W1:5T4
T4R
RES
Ritardo di Spegnimento
I1:1
T1
U2:1
5s
I1:1 T1 U2:1
U2:1
T1500
I1:1
Oscillatore ad Onda Quadra
I10:3
T6
T5
U2:4
2s 3s
I10:3
U2:4
T5200
T5
T6300
T6
Impulso all’Accensione
I3:2
T1
U2:1
1s
I3:2
U2:4
T1100
T1
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
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
Contatore
I1:2
C2
W1:4
U2:4
C2122
C2
RES
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
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
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.
Esempio di Utilizzo del Salto
W1:1 200
JMP
(procedura di inizializzazione)
L
W1:1
200
LBL
(programma)
Esempio di Utilizzo del Master Control Relay
MCR
MCR
(zona controllata)
Esempio di Utilizzo del Salto a Sottoprogramma
JSR
RET
(sottoprogramma)
300
JSR
300
SBR
300
Istruzione MOV
MOVOP1OP2
� Trasferimento di memoria� Il contenuto di una word è
trasferito in un’altra word
Operazioni Aritmetico/Logiche
XXXOP1OP2RES
� Operazioni aritmetico/logiche a due operandi� ADD
� MUL
� SUB
� DIV
� AND
� OR
Istruzioni di Comparazione
yyyOP1OP2
� Le istruzioni di comparazione fanno parte delle condizioni di attivazione dei rung� EQU
� NEQ
� GEQ
� LEQ
� GRT
� LES
Esempio di Utilizzo di Operazioni Aritmetiche e istruzioni di Comparazione
W3:1
SUBI225
W1
MOVW1
W125
MCR
MCR
GECW190
LEQW1120
Altra Versione dell’Oscillatore
I10:3
GRTT5.acc
200
T5
T5500
U2:4
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
Esempio di Utilizzo del Registro a Scorrimento
I22:1EQUI23654
U1:1
RSDW5
I22:1
U1:2W5:12
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.
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
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