Sei sulla pagina 1di 28

Corso PLC Siemens S7-200

Set Istruzioni Base 2

2010-2012 Gilberto Padovani - Tutti i diritti riservati - E espressamente vietata qualsiasi duplicazione del presente documento.
Tutti i diritti sono riservati a norma di legge. Nessuna parte di questo documento pu essere riprodotta senza lautorizzazione dellautore, Gilberto Padovani.
E espressamente vietato trasmettere ad altri il seguente documento, n in formato cartaceo, n elettronico, n per denaro n a titolo gratuito.
Tutti i marchi , i brevetti registrati, i software o porzioni di essi descritti in questo documento, sono dei legittimi proprietari.

ADD_I

ADD_I
EN ENO
IN1
IN2 OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN1: Primo valore per la somma
IN2: Secondo valore per la somma
OUT: Risultato della somma

Listruzione

ADD_I somma numeri interi a 16 bit.


Loperazione somma il contenuto di IN1 con IN2 e
pone il risultato in OUT.
E0.0

ADD_I
EN
VW0

IN1

21

IN2

M31.0

ENO

OUT

VW2

VW0

70

Quando il bit E0.0 passa da


OFF ad ON, il contenuto di
VW0 viene sommato a 21.
Il risultato viene
memorizzato in VW2.
VW2

+21

91

SUB_I

SUB_I
EN ENO
IN1
IN2 OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN1: Primo valore (dal quale si sottrae)
IN2: Valore da sottrarre dal primo valore
OUT: Risultato della sottrazione

Listruzione

SUB_I esegue una sottrazione tra numeri


interi a 16 bit. Loperazione sottrae a IN1 il contenuto
di IN2 e pone il risultato in OUT.
E0.0

SUB_I
EN
VW4

IN1

21

IN2

M31.0

ENO

OUT

VW6

VW4

91

Quando il bit E0.0 passa da


OFF ad ON, il contenuto di
VW4 viene sottratto a 21. Il
risultato viene memorizzato
in VW6.
VW6

-21

70

MUL_I

MUL_I
EN ENO

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN1: Primo valore per la moltiplicazione
IN2: Secondo valore per la moltiplicazione
OUT: Risultato della moltiplicazione

IN1
IN2 OUT
Listruzione

MUL_I esegue una moltiplicazione tra


numeri interi a 16 bit. Loperazione moltiplica IN1 con
IN2, il risultato viene posto in OUT (16 bit).
E0.0

MUL_I
EN
VW8

IN1

VW10

IN2

M31.0

ENO

OUT

VW12

VW8

VW10

130

20

Quando il bit E0.0 passa da


OFF ad ON, il contenuto di
VW8 viene moltiplicato con
VW10. Il risultato viene
memorizzato in VW12.
=

VW12

2600

DIV_I

DIV_I
EN ENO

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN1: Dividendo
IN2: Divisore
OUT: Risultato della divisione

IN1
IN2 OUT
Listruzione

DIV_I esegue una divisione tra numeri


interi a 16 bit. Loperazione divide il contenuto di IN1
con IN2, il risultato viene posto in OUT.
E0.0

DIV_I
EN
VW14

IN1

VW16

IN2

M31.0

ENO

OUT

VW18

VW14

VW16

20000

10

Quando il bit E0.0 passa da


OFF ad ON, il contenuto di
VW14 viene diviso con
VW16. Il risultato viene
memorizzato in VW18.
=

VW18

2000

ADD_R

ADD_R
EN ENO
IN1
IN2 OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN1: Primo valore per la somma
IN2: Secondo valore per la somma
OUT: Risultato della somma

Listruzione

ADD_R somma numeri in virgola mobile


(numeri reali). Loperazione somma il contenuto di IN1
con IN2 e pone il risultato in OUT.
E0.0

ADD_R
EN
VD20

IN1

3.50

IN2

M31.0

ENO

OUT

VD20

12,40

VD24

Quando il bit E0.0 passa da


OFF ad ON, il contenuto di
VD20 viene sommato alla
costante 3.50. Il risultato
viene memorizzato in VD24.
=

3.50

VD24

15,90

SUB_R

SUB_R
EN ENO
IN1
IN2 OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN1: Primo valore (da cui sottrarre)
IN2: Valore da sottrarre al primo valore
OUT: Risultato della sottrazione

Listruzione

SUB_R esegue una sottrazione tra numeri


in virgola mobile. Loperazione sottrae il contenuto di
IN1 con IN2 e pone il risultato in OUT.
E0.0

SUB_R
EN
VD28

IN1

3.50

IN2

M31.0

ENO

OUT

VD28

12,80

VD32

Quando il bit E0.0 passa da OFF


ad ON, il contenuto di VD28
viene sottratto a 3.50. Il risultato
viene memorizzato in VD32.

3,50

VD32

9,30

MUL_R

MUL_R
EN ENO

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN1: Primo valore per la moltiplicazione
IN2: Secondo valore per la moltiplicazione
OUT: Risultato della moltiplicazione

IN1
IN2 OUT
Listruzione

MUL_R esegue una moltiplicazione tra


numeri in virgola mobile. Loperazione moltiplica IN1
con IN2, il risultato viene posto in OUT.
E0.0

MUL_R
EN
VD36

IN1

VD40

IN2

M31.0

ENO

OUT

VD44

VD36

VD40

7,3

4,6

Quando il bit E0.0 passa da OFF


ad ON, il contenuto di VD36
viene moltiplicato con VD40.
Il risultato viene memorizzato
in VD44.
=

VD44

33,58

DIV_R

DIV_R
EN ENO
IN1
IN2 OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN1: Dividendo
IN2: Divisore
OUT: Risultato della divisione

Listruzione

DIV_R esegue una divisione tra numeri in


virgola mobile. Loperazione divide il contenuto di IN1
con IN2, il risultato viene posto in OUT.
E0.0

DIV_R
EN
VD48

IN1

VD52

IN2

M31.0

ENO

OUT

VD56

VD48

VD52

20,5

6,3

Quando il bit E0.0 passa da


OFF ad ON, il contenuto di
VD48 viene diviso con VD52.
Il risultato viene memorizzato
in VD56.
=

VD56

3,25

NOTE SULLE ISTRUZIONI MATEMATICHE


Lesecuzione

delle istruzioni matematiche possono


introdurre degli errori nel caso in cui i risultati,
determinano dei valori fuori range.
E0.0

ADD_I
EN
MW0

IN1

MW2

IN2

ENO

OUT

M31.0
NOT

MW4

In

questo caso se il risultato delladdizione non rientra


nel campo permesso per un numero a 16 bit.
Si puo utilizzare il merker M31.0 per controllarne lesito.

Controllare

i merker SM1.0 (risultato uguale a 0)


SM1.1 (overflow) SM1.2 (risultato negativo).
10

MOV_B
MOV_B
EN ENO

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN: Valore di origine

IN

OUT: Indirizzo di destinazione

OUT

Listruzione

MOV_B (Move Byte) trasferisce il valore


specificato allingresso IN, copiandolo nellindirizzo
specificato alluscita OUT.
E0.0

MOV_B

MB20

EN

ENO

IN

OUT

M31.0

VB60

Quando il segnale di ingresso


E0.0 passa da OFF ad ON, il
contenuto di MB20 viene
trasferito in VB60.

11

MOV_W
MOV_W
EN ENO
IN

OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN: Valore di origine
OUT: Indirizzo di destinazione

Listruzione

MOV_W (Move Word) trasferisce il valore


specificato allingresso IN, copiandolo nellindirizzo
specificato alluscita OUT.
E0.0

MOV_W

MW22

EN

ENO

IN

OUT

M31.0

VW62

Quando il segnale di ingresso


E0.0 passa da OFF ad ON, il
contenuto di MW22 viene
trasferito in VW62.

12

BLKMOV_W

BLKMOV_W

EN

ENO

IN

OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN: Primo indirizzo da trasferire
N: Numero di word da trasferire
OUT: Primo indirizzo di arrivo

Listruzione

BLKMOV_W (Muovi blocchi di Word)


trasferisce a partire dallindirizzo IN il numero di
word specificato dalloperando N copiandole a
partire dallindirizzo specificato in OUT.
E0.0

BLKMOV_W

VW64
4

EN

ENO

IN

OUT

M31.0

VW100

Quando il segnale di ingresso


E0.0 passa da OFF ad ON, il
contenuto da VW64 a VW70
viene trasferito in VW100,
VW102, VW104, VW106.

13

Le

istruzioni di confronto vengono eseguite tra due


valori (costanti e/o contenuti dei canali specificati) e
creano una condizione di esecuzione ON quando la
condizione di confronto vera.

Per

il confronto si possono utilizzare numeri Interi a 8


Bit, numeri Interi a 16 e a 32 Bit, numeri in Virgola
mobile (numeri reali).

Sono

disponibili un totale di 24 istruzioni di


comparazione, a seconda della specificit delle
applicazioni, o delle esigenze.

14

I tipi fondamentali di confronto sono:

==
<>
>
<
>=
<=
Ognuno

opzioni:

Uguale
Diverso
Maggiore di
Minore di
Maggiore o uguale
Minore o uguale

di questi operatori pu assumere le seguenti

B
I
D
R

Numeri Interi a 8 bit (byte)


Numeri Interi a 16 bit (word)
Numeri Interi a 32 bit
Numeri in Virgola mobile

15

==

<IN1> IN1: Dati di confronto 1

==I
<IN2> IN2: Dati di confronto 2

Compara

se il contenuto di IN1 e IN2 (costanti o valori


dei canali specificati) sono uguali.
VW110

M31.0

==I
10

Se

il contenuto di VW110 uguale a 10, la condizione di


esecuzione vera e il merker M31.0 diventa ON.

16

<>

<IN1> IN1: Dati di confronto 1

<>I
<IN2> IN2: Dati di confronto 2

Compara

se il contenuto di IN1 e IN2 (costanti o valori


dei canali specificati) sono diversi.
VW110

M31.1

<>I
10

Se

il contenuto di VW110 diverso da 10, la condizione di


esecuzione vera e il merker M31.1 diventa ON.

17

>

<IN1> IN1: Dati di confronto 1

>I
<IN2> IN2: Dati di confronto 2

Compara

se il contenuto di IN1 maggiore di IN2


(costanti o valori dei canali specificati).
VW110

M31.2

>I
10

Se

il contenuto di VW110 maggiore di 10, la condizione


di esecuzione vera e il merker M31.2 diventa ON.

18

<
<IN1> IN1: Dati di confronto 1

<I
<IN2> IN2: Dati di confronto 2

Compara

se il contenuto di IN1 minore di IN2


(costanti o valori dei canali specificati).
VW110

M31.3

<I
10

Se

il contenuto di VW110 minore di 10, la condizione di


esecuzione vera e il merker M31.3 diventa ON.

19

>=
<IN1> IN1: Dati di confronto 1

>=I
<IN2> IN2: Dati di confronto 2

Compara

se il contenuto di IN1 maggiore o uguale a


IN2 (costanti o valori dei canali specificati).
VW110

M31.4

>=I
10

Se

il contenuto di VW110 maggiore o uguale a 10, la


condizione di esecuzione vera e il merker M31.4 diventa ON.

20

<=
<IN1> IN1: Dati di confronto 1

<=I
<IN2> IN2: Dati di confronto 2

Compara

se il contenuto di IN1 minore o uguale a


IN2 (costanti o valori dei canali specificati).
VW110

M31.5

<=I
10

Se

il contenuto di VW110 minore o uguale a 10, la


condizione di esecuzione vera e il merker M31.5 diventa ON.

21

I_DI
I_DI
EN ENO
IN

OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN: Valore da convertire
OUT: Risultato

Listruzione

I_DI (Intero-Doppio Intero) converte un


numero Intero a 16 bit, in un numero Intero a 32 Bit.
M3.7

I_DI

VW74

EN

ENO

IN

OUT

VW74

25230

M31.0

VD76
VD76

I_DI

25230

Quando il merker M3.7 passa


da OFF ad ON, il contenuto di
VW74 viene letto come un
numero intero a 16 bit e
convertito in un numero intero
a 32 bit su VD76.

22

DI_R
DI_R
EN ENO
IN

OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN: Valore da convertire
OUT: Risultato

Listruzione

DI_R (Intero-Reale) converte un numero


Intero a 32 bit, in un numero a Virgola mobile.
M4.0

DI_R

VD80

EN

ENO

IN

OUT

VD80

27210

M31.0

VD84
VD84

DI_R

27210.0

Quando il merker M4.0 passa


da OFF ad ON, il contenuto di
VD80 viene letto come un
numero intero a 32 bit e
convertito in un numero a
virgola mobile su VD84.

23

SHR_W

SHR_W
EN ENO
IN
N

OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN: Valore da far scorrere
N: Num. di posizioni di bit da far scorrere
OUT: Risultato dello scorrimento

Listruzione

SHR_W (Shift Register) realizza la funzione


di far scorrere una word a 16 bit verso destra.

Quando

in esecuzione, listruzione fa scorrere a destra


bit per bit, i bit da 0 a 15 dell'ingresso IN.

24

SHR_W
M4.1

SHR_W
EN

ENO

VW90

IN

OUT

VW92

Listruzione

SHR_W viene attivata se M4.1 = ON.


VW90 viene caricata e fatta scorrere a destra nella
misura del numero di bit specificato nelloperando N.
Il risultato viene scritto in VW92.

25

SHL_W

SHL_W
EN ENO
IN
N

OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN: Valore da far scorrere
N: Num. di posizioni di bit da far scorrere
OUT: Risultato dello scorrimento

Listruzione

SHL_W (Shift Register) realizza la funzione


di far scorrere una word verso sinistra.

Quando

in esecuzione, listruzione fa scorrere a


sinistra bit per bit, i bit da 0 a 15 dell'ingresso IN.

26

WAND_W
WAND_W
EN ENO
IN1
IN2 OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN1: Primo valore per loperazione logica
IN2: Secondo valore per loperazione logica
OUT: Risultato dell operazione logica

Listruzione

WAND_W esegue un AND logico tra i Bit


corrispondenti nei valori dei canali e/o costanti
specificati in In1 e In2. Il risultato viene posto in Out.

IN1

IN2

OUT
Esempio:

IN1 01010101 01010101


IN2 00000000 00001111
OUT 00000000 00000101

27

WOR_W
WOR_W
EN ENO
IN1
IN2 OUT

EN: Ingresso di abilitazione


ENO: Uscita di abilitazione
IN1: Primo valore per loperazione logica
IN2: Secondo valore per loperazione logica
OUT: Risultato dell operazione logica

Listruzione

WOR_W esegue un OR logico tra i Bit


corrispondenti nei valori dei canali e/o costanti
specificati in In1 e In2. Il risultato viene posto in Out.
IN1

IN2

OUT
Esempio:

IN1 01010101 01010101


IN2 00000000 00001111
OUT 01010101 01011111

28