Modificadores y operadores en IL
Puede utilizar los siguientes modificadores en Lista de instrucciones.
C |
con JMP, CAL, RET: |
La instrucción sólo se ejecutará si el resultado de la expresión anterior es TRUE. |
N |
con JMPC, CALC, RETC: |
La instrucción sólo se ejecutará si el resultado de la expresión anterior es FALSE. |
N |
con operadores según la tabla Operadores siguiente (N en la columna Modificadores) |
Negación del operando (no del acumulador). |
( |
con operadores según la tabla Operadores siguiente (( [paréntesis izquierdo] en la columna Modificadores) |
Se utiliza en operandos complejos. Para obtener más información, consulte la lista de casos de uso de operandos complejos. |
NOTA: Por lo general, no es recomendable utilizar la instrucción CALC (/RETC/JMPC) directamente después de un operador STN, S o R, puesto que estas instrucciones modifican arbitrariamente el valor del acumulador y, por lo tanto, pueden producir errores de programación difíciles de detectar.
En la siguiente tabla se muestran los operadores que se pueden utilizar en combinación con los modificadores especificados.
El acumulador guarda el valor actual, resultante de la operación anterior.
Operador |
Modificadores |
Significado |
Ejemplo |
---|---|---|---|
LD |
N |
Carga el valor (negado) del operando en el acumulador. |
LD iVar |
ST |
N |
Guarda el contenido (negado) del acumulador en la variable de operando. |
ST iErg |
S |
– |
Establece el operando (tipo BOOL) en TRUE cuando el contenido del acumulador es TRUE. |
S bVar1 |
R |
– |
Establece el operando (tipo BOOL) en FALSE cuando el contenido del acumulador es TRUE. |
R bVar1 |
AND |
N,( |
AND a nivel de bit del acumulador y el operando (negado). |
AND bVar2 |
OR |
N,( |
OR a nivel de bit del acumulador y el operando (negado). |
OR xVar |
XOR |
N,( |
OR a nivel de bit exclusivo del acumulador y el operando (negado). |
XOR N, (bVar1,bVar2) |
NOT |
– |
Negación a nivel de bit del contenido del acumulador. |
– |
ADD |
( |
Suma de acumulador y operando; el resultado se copia en el acumulador. |
ADD iVar1 |
SUB |
( |
Resta de acumulador y operando; el resultado se copia en el acumulador. |
SUB iVar2 |
MUL |
( |
Multiplicación de acumulador y operando; el resultado se copia en el acumulador. |
MUL iVar2 |
DIV |
( |
División de acumulador y operando; el resultado se copia en el acumulador. |
DIV 44 |
GT |
( |
Verifica si el acumulador es mayor que el operando; el resultado (BOOL) se copia en el acumulador; > |
GT 23 |
GE |
( |
Verifica si el acumulador es mayor o igual que el operando; el resultado (BOOL) se copia en el acumulador; >= |
GE iVar2 |
EQ |
( |
Verifica si el acumulador es igual que el operando; el resultado (BOOL) se copia en el acumulador; = |
EQ iVar2 |
NE |
( |
Verifica si el acumulador no es igual que el operando; el resultado (BOOL) se copia en el acumulador; <> |
NE iVar1 |
LE |
( |
Verifica si el acumulador es menor o igual que el operando; el resultado (BOOL) se copia en el acumulador; <= |
LE 5 |
LT |
( |
Verifica si el acumulador es menor que el operando; el resultado (BOOL) se copia en el acumulador; < |
LT cVar1 |
JMP |
C, CN |
Salto incondicional (condicional) a la etiqueta oJMP = salto incondicional oJMPC = salto condicional si el acumulador es TRUE oJMPCN = salto condicional si el acumulador es FALSE |
JMP next |
CAL |
C, CN |
Llamada incondicional (condicional) de un PROGRAM o FUNCTION_BLOCK oCAL = llamada incondicional oCALC = llamada condicional si el acumulador es TRUE oCALCN = llamada condicional si el acumulador es FALSE |
CAL prog1 |
RET |
C, CN |
Retorno incondicional (condicional) de la POU y salto hacia atrás a la POU de llamada oRET = retorno incondicional oRETC = retorno condicional si el acumulador es TRUE oRETCN = retorno condicional si el acumulador es FALSE |
RET |
) |
– |
Evaluar operación diferida |
– |
Consulte también Operadores IEC y Trabajar en el editor IL para obtener información sobre cómo utilizar y gestionar múltiples operandos, operandos complejos, llamadas de función/método/bloque de funciones/programa/acción y saltos.
Programa IL de ejemplo con diversos modificadores:
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
En la tabla se enumeran los casos de uso de los operandos:
Caso de uso |
Descripción |
Ejemplos |
---|---|---|
Varios operandos para un solo operador |
Opciones oEspecifique los operandos en filas consecutivas, separadas por comas en la 2.a columna. oRepita el operador en filas consecutivas. |
oOpción 1: LD 2 oOpción 2: LD 2 |
Operandos complejos |
Para un operando complejo, introduzca el paréntesis izquierdo ( en la primera columna. Introduzca el paréntesis derecho en la primera columna en una fila separada seguido de las entradas de operando en las filas siguientes. |
La cadena rota un carácter con cada ciclo: LD stRotate |
Llamada de bloque de funciones, llamada de programa |
Fila 1: oColumna 1: Operador CAL o CALC oColumna 2: Nombre de la instancia del bloque de funciones o del programa y paréntesis izquierdo (. Si no hay parámetros que sigan, introduzca aquí el paréntesis derecho ). Filas siguientes: oColumna 1: Nombre del parámetro seguido de: o:= para los parámetros de entrada o=> para los parámetros de salida oColumna 2: Valor del parámetro seguido de una coma , si le siguen otros parámetros. Introduzca el paréntesis derecho ) después del último parámetro. Según el estándar IEC, no se permiten en este caso expresiones complejas. Este tipo de construcciones de asignan al bloque de funciones o al programa antes de que sean llamados. |
CAL POUToCall( |
Llamada de función |
Fila 1: oColumna 1: LD oColumna 2: Variable de entrada Fila 2: oColumna 1: Nombre de la función oColumna 2: Otros parámetros de entrada, separados por comas El valor de retorno se escribe en el acumulador. Fila 3: oColumna 1: ST oColumna 2: Variable en la que se escribe el valor de retorno |
LD X7 |
Llamada de acción |
Similar a la llamada de bloque de funciones o de programa. El nombre de la acción se añade al nombre de la instancia del bloque de funciones o del programa. |
CAL POU1.ResetAction |
Salto |
oColumna 1: Operador JMP o JMPC oColumna 2: Nombre de la etiqueta de salto de la red de destino. oSalto incondicional: La secuencia de instrucciones anterior debe finalizar con uno de los siguientes comandos: oST oSTN oS oR oCAL oRET oJMP oSalto condicional: La ejecución del salto depende del valor cargado. |
LD BVar1 |