EcoStruxure Machine Expert versión 1.1 no soporta los controladores M258, LMC058 y LMC078.

Modificadores y operadores en IL

Modificadores

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.

Operadores

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.

Ejemplo

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

Uso de operandos

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
ADD    3,
       4,
       6
ST     iVAR

oOpción 2:

LD     2
ADD    3
ADD    4
ADD    6
ST     iVAR

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
RIGHT(  stRotate
LEN
SUB
     1
)
CONCAT(
 stRotate,
LEFT    1
)
ST
      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(
     iCounter:=1,
   iDecrement:=1000,
       wError:=wResult)

LD             POUToCall.bError,
ST             bErr

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
GeomAverage 25
ST          Ave

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
JMPC          Label1