Set di operazioni

Le operazioni AWL implementate nel PLC simulato, cioè quelle che il compilatore interno di PC-Sim riconosce e compila correttamente, costituiscono, come abbiamo appena visto, un ampia parte del set di operazioni del corrispondente PLC reale.

La Tabella 42 riporta sinteticamente l’elenco delle operazioni implementate nel PLC simulato In essa, le colonne relative al risultato logico combinatorio (RLC) hanno il significato espresso in Tabella 41.

Le differenze di scrittura tra la notazione Simatic e quella internazionale per la stessa operazione sono evidenziate nelle colonne S ed I.

Tabella 42: Set di operazioni per S7 300

Operazione

Operandi ammessi RLC      

Descrizione

Sim.

Int.

D I L

Operazioni sugli accumulatori

TAK

N N N

Scambia il contenuto di ACCU1 con quello di ACCU2

INC

n = 0…255

N N N

Incrementa di n il byte basso della parola bassa di ACCU1

DEC

n = 0…255

N N N

Decrementa di n il byte basso della parola bassa di ACCU1

NOP0

N N N

Nessuna operazione

NOP1

N N N

Nessuna operazione

Operazioni logiche a bit

U A

E, A, M, DBX, T, Z

N S N

Combinazione AND o test sullo stato “1”

UN

AN

E, A, M, DBX, T, Z

N S N

Combinazione AND con negazione operando o test sullo stato “0”

O

E, A, M, DBX, T, Z

N S N

Combinazione OR o test sullo stato “1”

ON

E, A, M, DBX, T, Z

N S N

Combinazione OR con negazione operando o test sullo stato “0”

X

E, A, M, DBX, T, Z

N S N

Combinazione XOR o test sullo stato “1”

XN

E, A, M, DBX, T, Z

N S N

Combinazione XOR con negazione operando o test sullo stato “0”

O

N S S

Combinazione OR di funzioni AND

U(

A(

  N S S

Combinazione AND di espressione tra parentesi

UN(

AN(

  N S S

Combinazione AND NOT di espressione tra parentesi

O(

N S S

Combinazione OR di espressione tra parentesi

ON(

N S S

Combinazione OR NOT di espressione tra parentesi

X(

N S S

Combinazione XOR di espressione tra parentesi

XN(

N S S

Combinazione XOR NOT di espressione tra parentesi

)

N S N

Fine di un’espressione tra parentesi

FP

M, DBX

N S N

Fronte di salita

FN

M, DBX

N S N

Fronte di discesa

NOT

N S N

Inverte RLC

SET

N 1 N

Imposta a 1 RLC

CLR

N 0 N

Resetta a 0 RLC

S

E, A, M, DBX

S N S

Attivazione dell’operando su RLC=1

R

E, A, M, DBX

S N S

Disattivazione dell’operando su RLC=1

=

E, A, M, DBX

N N S

Assegnazione dell’operando al valore di RLC

Operazioni di caricamento e trasferimento

L

±n

N N N

Caricamento di una costante a 16 bit in ACCU1

L

L#±n

N N N

Caricamento di una costante a 32 bit in ACCU1

L

B#16#hh

N N N

Caricamento di una costante esadecimale a 8 bit in ACCU1

L

W#16#hhhh

N N N

Caricamento di una costante esadecimale a 16 bit in ACCU1

L

DW#16#hhhh_hhhh

N N N

Caricamento di una costante esadecimale a 32 bit in ACCU1

L

2#bbbb_bbbb_bbbb_bbbb

N N N

Caricamento di una costante binaria a 16 bit in ACCU1

L

2#bbbb_bbbb_bbbb_bbbb_bbbb_bbbb_bbbb_bbbb

N N N

Caricamento di una costante binaria a 32 bit in ACCU1

L

S5TIME#aH_bbM_ccS_dddMS

N N N

Caricamento di una costante di tempo in ACCU1 espressa in ore, minuti, secondi e millesimi di secondo

L

Z#n

N N N

Caricamento di una costante di conteggio in ACCU1

L

EB

N N N

Caricamento di un byte dell’IPI in ACCU1

L

EW

N N N

Caricamento di una word dell’IPI in ACCU1

L

ED

N N N

Caricamento di una doppia word dell’IPI in ACCU1

L

AB

N N N

Caricamento di un byte dell’IPU in ACCU1

L

AW

N N N

Caricamento di una word dell’IPU in ACCU1

L

AD

N N N

Caricamento di una doppia word dell’IPU in ACCU1

L

MB

N N N

Caricamento di un merker byte in ACCU1

L

MW

N N N

Caricamento di una merker word in ACCU1

L

MD

N N N

Caricamento di una doppia merker word in ACCU1

L

DBB

N N N

Caricamento di un byte di dati in ACCU1

L

DBW

N N N

Caricamento di una data word in ACCU1

L

DBD

N N N

Caricamento di una doppia data word in ACCU1

L

T,Z

N N N

Caricamento di un valore di tempo o di conteggio in ACCU1

LC

T,Z

N N N

Caricamento di un valore di tempo o di conteggio, codificato BCD, in ACCU1

T

EB

N N N

Trasferimento del contenuto di ACCU1 in un byte dell’IPI

T

EW

N N N

Trasferimento del contenuto di ACCU1 in una word dell’IPI

T

ED

N N N

Trasferimento del contenuto di ACCU1 in una doppia word dell’IPI

T

AB

N N N

Trasferimento del contenuto di ACCU1 in un byte dell’IPU

T

AW

N N N

Trasferimento del contenuto di ACCU1 in una word dell’IPU

T

AD

N N N

Trasferimento del contenuto di ACCU1 in una doppia word dell’IPU

T

MB

N N N

Trasferimento del contenuto di ACCU1 in un merker byte

T

MW

N N N

Trasferimento del contenuto di ACCU1 in una merker word

T

MD

N N N

Trasferimento del contenuto di ACCU1 in una doppia merker word

T

DBB

N N N

Trasferimento del contenuto di ACCU1 in un byte di dati

T

DBW

N N N

Trasferimento del contenuto di ACCU1 in una data word

T

DBD

N N N

Trasferimento del contenuto di ACCU1 in una doppia data word

Operazioni di temporizzazione

SI

SP

T

N S

Attivazione di un temporizzatore ad impulso

SV

SE

T

N S

Attivazione di un temporizzatore ad impulso prolungato

SE

SD

T

N S

Attivazione di un temporizzatore con ritardo all’eccitazione

SS

T

N S

Attivazione di un temporizzatore con ritardo all’eccitazione con memoria

SA

SF

T

N S

Attivazione di un temporizzatore con ritardo alla diseccitazione

R

T

S N S

Reset di un temporizzatore

Operazioni di conteggio

ZV

CU

Z

N S

Incrementa il contatore

ZR

CD

Z

N S

Decrementa il contatore

S

Z

N S

Impostazione del contatore

R

Z

S N S

Reset del contatore

Operazioni matematiche con numeri interi

+I

N N N

Somma la parola bassa di ACCU1 alla parola bassa di ACCU2 con risultato nella parola bassa di ACCU1

-I

N N N

Sottrae la parola bassa di ACCU1 dalla parola bassa di ACCU2 con risultato nella parola bassa di ACCU1

*I

N N N

Moltiplica la parola bassa di ACCU1 per la parola bassa di ACCU2 con risultato in ACCU1 (32 bit)

/I

N N N

Divide la parola bassa di ACCU2 per la parola bassa di ACCU1, il risultato viene memorizzato nella parola bassa di ACCU1, il resto nella parola alta di ACCU1.

+D

N N N

Somma il contenuto di ACCU1 a quello di ACCU2 con risultato in ACCU1

-D

N N N

Sottrae il contenuto di ACCU1 da quello di ACCU2 con risultato in ACCU1

*D

N N N

Moltiplica il contenuto di ACCU1 quello di ACCU2 con risultato in ACCU1

/D

N N N

Divide il contenuto di ACCU2 per quello di ACCU1 con risultato in ACCU1

MOD

N N N

Divide il contenuto di ACCU2 per quello di ACCU1 e memorizza il resto in ACCU1

+

±n

N N N

Somma la costante a 16 bit alla parola bassa di ACCU1 e memorizza il risultato in ACCU1

+

L#±n

N N N

Somma la costante a 32 bit al contenuto di ACCU1 e memorizza il risultato in ACCU1

Operazioni di confronto

==I

N S N

Verifica se la parola bassa di ACCU2 è uguale alla parola bassa di ACCU2

<>I

N S N

Verifica se la parola bassa di ACCU2 è diversa dalla parola bassa di ACCU2

>I

N S N

Verifica se la parola bassa di ACCU2 è maggiore della parola bassa di ACCU2

<I

N S N

Verifica se la parola bassa di ACCU2 è minore della parola bassa di ACCU2

>=I

N S N

Verifica se la parola bassa di ACCU2 è maggiore o uguale alla parola bassa di ACCU2

<=I

N S N

Verifica se la parola bassa di ACCU2 è minore o uguale alla parola bassa di ACCU2

==D

N S N

Verifica se il contenuto di ACCU2 è uguale al contenuto di ACCU2

<>D

N S N

Verifica se il contenuto di ACCU2 è diverso dal contenuto di ACCU2

>D

N S N

Verifica se il contenuto di ACCU2 è maggiore del contenuto di ACCU2

<D

N S N

Verifica se il contenuto di ACCU2 è minore del contenuto di ACCU2

>=D

N S N

Verifica se il contenuto di ACCU2 è maggiore o uguale del contenuto di ACCU2

<=D

N S N

Verifica se il contenuto di ACCU2 è minore o uguale del contenuto di ACCU2

Operazioni di conversione

INVI

N N N

Esegue il complemento a 1 la parola bassa ACCU1

NEGI

N N N

Esegue il complemento a 2 la parola bassa di ACCU1

INVD

N N N

Esegue il complemento a 1 il contenuto di ACCU1

NEGD

N N N

Esegue il complemento a 2 il contenuto di ACCU1

Operazioni logiche su parola

UW

AW

  N N N

Combinazione AND (bit a bit) tra la parola bassa di ACCU1 e quella di ACCU2 con risultato in ACCU1

OW

N N N

Combinazione OR (bit a bit) tra la parola bassa di ACCU1 e quella di ACCU2 con risultato in ACCU1

XOW

N N N

Combinazione XOR (bit a bit) tra la parola bassa ACCU1 e quella di ACCU2 con risultato in ACCU1

UD

AD

  N N N

Combinazione AND (bit a bit) tra ACCU1 e ACCU2 con risultato in ACCU1

OD

N N N

Combinazione OR (bit a bit) tra ACCU1 e ACCU2 con risultato in ACCU1

XOD

N N N

Combinazione XOR (bit a bit) tra ACCU1 e ACCU2 con risultato in ACCU1

Operazioni di scorrimento e rotazione

SLW

n = 0…15

N N N

Scorrimento verso sinistra della parola bassa di ACCU1 per il numero di bit indicato nell’operando. Le posizioni liberate vengono riempite con 0.

SLW

N N N

Scorrimento verso sinistra della parola bassa di ACCU1 per il numero di bit indicato nel byte basso della parola bassa di ACCU2. Le posizioni liberate vengono riempite con 0.

SRW

n = 0…15

N N N

Scorrimento verso destra della parola bassa di ACCU1 per il numero di bit indicato nell’operando. Le posizioni liberate vengono riempite con 0.

SRW

N N N

Scorrimento verso destra della parola bassa di ACCU1 per il numero di bit indicato nel byte basso della parola bassa di ACCU2. Le posizioni liberate vengono riempite con 0.

SLD

n = 0…32

N N N

Scorrimento verso sinistra del contenuto di ACCU1 per il numero di bit indicato nell’operando. Le posizioni liberate vengono riempite con 0.

SLD

N N N

Scorrimento verso sinistra del contenuto di ACCU1 per il numero di bit indicato nel byte basso della parola bassa di ACCU2. Le posizioni liberate vengono riempite con 0.

SRD

n = 0…15

N N N

Scorrimento verso destra del contenuto di ACCU1 per il numero di bit indicato nell’operando. Le posizioni liberate vengono riempite con 0.

SRD

N N N

Scorrimento verso destra del contenuto di ACCU1 per il numero di bit indicato nel byte basso della parola bassa di ACCU2. Le posizioni liberate vengono riempite con 0.

RLD

n = 0…32

N N N

Rotazione verso sinistra del contenuto di ACCU1 per il numero di bit indicato nell’operando. Le posizioni liberate vengono riempite con i bit traslati fuori dall’accumulatore.

RLD

N N N

Rotazione verso sinistra del contenuto di ACCU1 per il numero di bit indicato nel byte basso della parola bassa di ACCU2. Le posizioni liberate vengono riempite con i bit traslati fuori dall’accumulatore.

RRD

n = 0…32

N N N

Rotazione verso destra del contenuto di ACCU1 per il numero di bit indicato nell’operando. Le posizioni liberate vengono riempite con i bit traslati fuori dall’accumulatore.

RRD

N N N

Rotazione verso destra del contenuto di ACCU1 per il numero di bit indicato nel byte basso della parola bassa di ACCU2. Le posizioni liberate vengono riempite con i bit traslati fuori dall’accumulatore.

Operazioni per blocchi dati

AUF

OPN

DB

N N N

Apre il blocco dati specificato come operando

Operazioni di salto

SPA

JU

Etichetta

N N N

Salto assoluto all’etichetta

SPB

JC

Etichetta

S 1 S

Salto condizionato all’etichetta (se RLC=1)

SPBN

JCN

Etichetta

S 1 S

Salto condizionato all’etichetta (se RLC=0)

SPO

JO

Etichetta

N N N

Salto per overflow

SPZ

JZ

Etichetta

N N N

Salto se risultato nullo

SPN

JN

Etichetta

N N N

Salto se risultato non nullo

SPP

JP

Etichetta

N N N

Salto se risultato positivo

SPM

JM

Etichetta

N N N

Salto se risultato negativo

SPMZ

JMZ

Etichetta

N N N

Salto se risultato negativo o nullo

SPPZ

JPZ

Etichetta

N N N

Salto se risultato positivo o nullo

Operazioni di controllo del programma

CC

FC

N N N

Richiamo condizionato di un blocco (se RLC=1)

UC

FC

N N N

Richiamo incondizionato di un blocco

CALL

FC

N N N

Richiamo incondizionato di un blocco

BE

N N S

Fine blocco

BEB

BEC

  S 1 S

Fine blocco condizionata

BEA

BEU

  N N S

Fine blocco assoluta

Tabella 43: influenza delle operazioni su A1 ed A0

Operazioni Indicatori
Matematiche Logiche Confronto Scorrimento Conversione A1 A0
Risultato=0 Risultato=0 ACCU2=ACCU1 Bit spostato=0

Risultato=0

0 0

Risultato<0

  ACCU2<ACCU1  

Risultato<0

0 1

Risultato>0

Risultato¹0 ACCU2>ACCU1 Bit spostato=1

Risultato>0

1 0

 

^