Modificatori e operatori in IL
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.
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 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
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 oOpzione 2: LD 2 |
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 |
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( |
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 |
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 |