La versione 1.1 di EcoStruxure Machine Expert non supporta i controllori M258, LMC058 e LMC078.

Modificatori e operatori in IL

Modificatori

Nel linguaggio Instruction List è possibile utilizzare i seguenti modificatori:

C

con JMP, CAL, RET:

L'istruzione viene eseguita solo se il risultato dell'espressione precedente è TRUE.

N

con JMPC, CALC, RETC:

L'istruzione viene eseguita solo se il risultato dell'espressione precedente è FALSE.

N

con operatori secondo la tabella Operatori riportata di seguito (N nella colonna Modificatori)

Negazione dell'operando, non dell'accumulatore.

(

con operatori secondo la tabella Operatori riportata di seguito (( (parentesi sinistra) nella colonna Modificatori)

Da utilizzare per operandi complessi. Per i dettagli, consultare elenco dei casi di utilizzo per operandi complessi.

NOTA: In genere non è consigliabile usare l'istruzione CALC (/RETC/JMPC) direttamente dopo un operatore STN, S o R, perché questo tipo di istruzione modifica in modo arbitrario il valore dell'accumulatore e quindi potrebbe causare errori di programmazione difficili da individuare.

Operatori

La tabella mostra quali operatori è possibile utilizzare in combinazione con i modificatori specificati.

L'accumulatore memorizza il valore corrente, che risulta dall'operazione precedente.

Operatore

Modificatori

Significato

Esempio

LD

N

Carica il valore (negato) dell'operando nell'accumulatore.

LD iVar

ST

N

Memorizza il contenuto (negato) dell'accumulatore nella variabile dell'operando.

ST iErg

S

Imposta l'operando (tipo BOOL) su TRUE quando il contenuto dell'accumulatore è TRUE.

S bVar1

R

Imposta l'operando (tipo BOOL) su FALSE quando il contenuto dell'accumulatore è TRUE.

R bVar1

AND

N,(

Bitwise AND dell'accumulatore e dell'operando (negato).

AND bVar2

OR

N,(

Bitwise OR dell'accumulatore e dell'operando (negato).

OR xVar

XOR

N,(

Bitwise OR esclusivo dell'accumulatore e dell'operando (negato).

XOR N, (bVar1,bVar2)

NOT

Negazione bitwise del contenuto dell'accumulatore.

ADD

(

Addizione di accumulatore e operando, il risultato è copiato nell'accumulatore.

ADD iVar1

SUB

(

Sottrazione di accumulatore e operando, il risultato è copiato nell'accumulatore.

SUB iVar2

MUL

(

Moltiplicazione di accumulatore e operando, il risultato è copiato nell'accumulatore.

MUL iVar2

DIV

(

Divisione di accumulatore e operando, il risultato è copiato nell'accumulatore.

DIV 44

GT

(

Verifica se l'accumulatore è uguale all'operando, il risultato (BOOL) è copiato nell'accumulatore; >

GT 23

GE

(

Verifica se l'accumulatore è maggiore o uguale all'operando, il risultato (BOOL) è copiato nell'accumulatore; >=

GE iVar2

EQ

(

Verifica se l'accumulatore è uguale all'operando, il risultato (BOOL) è copiato nell'accumulatore; =

EQ iVar2

NE

(

Verifica se l'accumulatore non è uguale all'operando, il risultato (BOOL) è copiato nell'accumulatore; <>

NE iVar1

LE

(

Verifica se l'accumulatore è minore o uguale all'operando, il risultato (BOOL) è copiato nell'accumulatore; <=

LE 5

LT

(

Verifica se l'accumulatore è minore dell'operando, il risultato (BOOL) è copiato nell'accumulatore; <

LT cVar1

JMP

C, CN

Salto non condizionale (condizionale) alla label

oSalto non condizionale JMP =

oSalto condizionale JMPC = se l'accumulatore è TRUE

oSalto condizionale JMPCN = se l'accumulatore è FALSE

JMP next

CAL

C, CN

Chiamata non condizionale (condizionale) di un PROGRAMMA o BLOCCO_FUNZIONE

oChiamata non condizionale CAL =

oChiamata condizionale CALC = se l'accumulatore è TRUE

oChiamata condizionale CALCN = se l'accumulatore è FALSE

CAL prog1

RET

C, CN

Ritorno non condizionale (condizionale) della POU e salto all'indietro alla POU chiamante.

oRitorno non condizionale RET =

oRitorno condizionale RETC = se l'accumulatore è TRUE

oRitorno condizionale RETCN = se l'accumulatore è FALSE

RET

)

Valuta operazione differita

Per informazioni su come utilizzare e gestire più operandi, operandi complessi, chiamate di funzione/metodo/blocco funzionale/programma/azione e salti, vedere anche Operatori IEC e Uso dell'editor IL.

Esempio

Esempio di programma IL con alcuni modificatori

LD      TRUE        load TRUE to accumulator
ANDN    bVar1       execute AND with negative value of bVar1
JMPC    m1         if accum. is TRUE, jump to label "m1"
LDN     bVar2      store negated value of bVar2...
ST      bRes       ... in bRes
___________________________________________________________

m1:
LD      bVar2      store value of bVar2...
ST      bRes      ... in bRes

Uso degli operandi

La tabella elenca i casi d'uso per gli operandi:

Caso d'uso

Descrizione

Esempi

Più operandi per un operatore

Opzioni

oImmettere gli operandi in righe consecutive, separati da virgole nella 2a colonna.

oRipetere l'operatore nelle righe consecutive.

oOpzione 1:

LD     2
ADD    3,
       4,
       6
ST     iVAR

oOpzione 2:

LD     2
ADD    3
ADD    4
ADD    6
ST     iVAR

Operandi complessi

Per un operando complesso, immettere la parentesi sinistra ( nella prima colonna.

Immettere la parentesi destra nella prima colonna in una riga separata seguita dalle voci dell'operando nelle righe seguenti.

Una stringa viene ruotata di un carattere a ogni ciclo:

LD      stRotate
RIGHT(  stRotate
LEN
SUB
     1
)
CONCAT(
 stRotate,
LEFT    1
)
ST
      stRotate

Chiamata blocco funzione, chiamata programma

Riga 1:

oColonna 1:

Operatore CAL o CALC

oColonna 2:

Nome dell'istanza del blocco funzione o del programma e parentesi sinistra (. Se non segue alcun parametro, la parentesi destra ) viene inserita qui.

Righe seguenti:

oColonna 1:

Nome parametro seguito da:

o:= per i parametri di ingresso

o=> per i parametri di uscita

oColonna 2:

Valore parametro seguito da una virgola , se seguito da ulteriori parametri.

Inserire la parentesi destra ) dopo l'ultimo parametro.

In base allo standard IEC, le espressioni complesse non sono consentite qui. Assegnare tali costrutti al blocco funzione o al programma prima della chiamata.

CAL            POUToCall(
     iCounter:=1,
   iDecrement:=1000,
       wError:=wResult)

LD             POUToCall.bError,
ST             bErr

Chiamata di funzione

Riga 1:

oColonna 1:

LD

oColonna 2:

Variabile di ingresso

Riga 2:

oColonna 1:

Nome della funzione

oColonna 2:

Ulteriori parametri di ingresso, separati da virgole

Il valore restituito viene scritto nell'accumulatore.

Riga 3:

oColonna 1:

ST

oColonna 2:

Variabile in cui viene scritto il valore di restituzione

LD          X7
GeomAverage 25
ST          Ave

Chiamata d'azione

Simile alla chiamata al blocco funzione oppure alla chiamata al programma.

Il nome dell'azione viene aggiunto al nome dell'istanza del blocco funzione o programma.

CAL          POU1.ResetAction

Salto

oColonna 1:

Operatore JMP o JMPC

oColonna 2:

Nome della label di salto della rete di destinazione.

oSalto non condizionale:

La sequenza di istruzioni precedente deve terminare con uno dei comandi seguenti:

oST

oSTN

oS

oR

oCAL

oRET

oJMP

oSalto condizionale:

L'esecuzione del salto dipende dal valore caricato.

LD            BVar1
JMPC          Label1