Aritmética y lógica de archivo (FAL)
Esta instrucción se aplica a los controladores
Compact GuardLogix
5370 y Compact GuardLogix
5380, CompactLogix
5370, CompactLogix
5380, y ControlLogix
5570, ControlLogix
5580, ControlLogix 5590, y GuardLogix
5570 y GuardLogix
5580.La instrucción FAL realiza operaciones de copia, aritmética, lógica y función en los datos almacenados en una matriz. Cuando el valor de condición de entrada de reglón de la instrucción FAL pasa de falso a verdadero, la expresión proporcionada se ejecutará a lo largo del modo de iteración especificado.
Hay reglas para operadores admisibles en aplicaciones de seguridad. Consulte Operadores válidos.
Idiomas disponibles
Diagrama de lógica de escalera

Bloque de funciones
Esta instrucción no está disponible en el bloque de funciones.
Texto estructurado
Esta instrucción no está disponible en texto estructurado.
Operandos
IMPORTANTE:
Puede ocurrir un funcionamiento inesperado si:
- Los operandos de etiqueta de salida se sobrescriben.
- Los miembros de un operando de estructura se sobrescriben.
- A no ser que se especifica, los operandos de estructura son compartidos por varias instrucciones.
Existen reglas de conversión de datos para utilizar diversos tipos de datos numéricos en una instrucción. Ver Conversión de Datos.
Diagrama de lógica de escalera
Operando | Tipo de datos Controladores CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 y GuardLogix 5570 | Tipo de datos controladores CompactLogix 5380, ControlLogix 5580, Compact GuardLogix 5380, GuardLogix 5580 y ControlLogix 5590 | Formato | Descripción |
|---|---|---|---|---|
Control | CONTROL | CONTROL | Etiqueta | Estructura de control para la operación |
Length | DINT | DINT | Inmediato | Esto representa la estructura de CONTROL .LEN |
Position | DINT | DINT | Inmediato | Esto representa la estructura de CONTROL .POS |
Mode | DINT | DINT | Inmediato | Muestra cómo distribuir la operación Selecciona INC, ALL o introduce un número en el rango de 1 a 2147483647 |
Expression | SINT INT DINT REAL | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL | Inmediato Etiqueta | Una expresión que consta de etiquetas y/o valores inmediatos separados por operadores. |
Destination | SINT INT DINT REAL | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL | Etiqueta | El valor de Expression se almacenará en Destination. |
Longitud y Posición (correspondiente a .LEN y .POS en la etiqueta de control) son pseudo-operandos. Para obtener más información, vea Inicialización del pseudo-operando.
Estructura de CONTROL
Mnemónico | Tipo de datos | Descripción |
|---|---|---|
.EN | BOOL | El bit de habilitación indica que la instrucción FAL está habilitada. |
.DN | BOOL | El bit de efectuado se establece cuando la instrucción ha operado en el último elemento (.POS = .LEN). |
.ER | BOOL | Si se produce un desbordamiento, las dos plataformas establecerán el valor de .ER y dejarán de ejecutar la instrucción. Los siguientes controladores generarán un desbordamiento:
|
.LEN | DINT | La longitud especifica el número de elementos en la matriz en los que opera la instrucción FAL. |
.POS | DINT | La posición se inicializa a 0 cuando comienza la instrucción y se incrementa cada vez que el lazo opera. |
El valor de la expresión se almacena en la etiqueta de destino. Si se produce un desbordamiento, establecerá el bit ER y detendrá la ejecución. Una vez la instrucción FAL completa todas las iteraciones configuradas, se establece el bit .DN.
Seleccionar el modo de funcionamiento
En el caso de las instrucciones FAL, el modo indica al controlador cómo distribuir la operación de matriz.
Si: | Seleccione este modo: |
|---|---|
Operando en todos los elementos especificados de una matriz antes de pasar a la siguiente instrucción. | Todas |
Distribuyendo una operación de matriz a lo largo de varios escaneados. Introducir el número de elementos para operar por escaneado (1-2147483647). | Numérico |
Manipulando un elemento de la matriz cada vez que el valor de EnableIn pasa de falso a verdadero. | Incremental |
Modo Todos
En el Modo todos, la instrucción opera en todos los elementos especificados de la matriz antes de seguir a la siguiente instrucción. La operación comienza cuando EnableIn de la instrucción realiza una transición de falso a verdadero. El valor de posición (.POS) en la estructura de control apunta al elemento de la matriz que la instrucción está utilizando actualmente. La operación se detiene cuando el valor de .POS es igual o superior al valor de .LEN y cuando se produce un desbordamiento en la expresión y el bit .ER se establece en verdadero.

El siguiente diagrama de temporización muestra la relación entre los bits de estado y la operación de la instrucción. Cuando finaliza la ejecución de la instrucción, el bit .DN es verdadero. El bit .DN, el bit .EN y el valor .POS se borran cuando EnableIn es falso. Solo entonces puede desencadenarse otra ejecución de la instrucción mediante una transición de falso a verdadero de EnableIn.

Modo Numérico
El modo Numérico distribuye el funcionamiento de la matriz sobre una serie de escaneados. Se utiliza este modo cuando trabaje con datos que no sean críticos o cuando el volumen de datos sea grande. Se introduce el número de elementos a operar en cada escaneado, que reduce el tiempo de escaneado.
La ejecución se desencadena cuando EnableIn realiza una transición de falso a verdadero. Una vez desencadenada, la instrucción se ejecuta cada vez que se escanea con el número de escaneados necesarios para completar la operación sobre toda la matriz. Cuando está desencadenada, EnableIn puede cambiar repetidamente sin interrumpir la ejecución de la instrucción.

Evita usar los resultados de una instrucción de archivo que opere en el modo numérico hasta que se haya establecido el bit .DN.
El siguiente diagrama de temporización muestra la relación entre los bits de estado y la operación de la instrucción. Cuando se haya completado la ejecución de la instrucción, se establece el bit .DN.

Si EnableIn es verdadero al finalizar, los bits .EN y .DN son verdaderos hasta que EnableIn pase a falso. Cuando EnableIn se vuelve falso, estos bits y el valor .POS se borran.
Si EnableIn es falso al finalizar, el bit .EN se borra inmediatamente. Después de borrarse el bit .EN, en el siguiente escaneado se borran el bit .DN y el valor .POS.
Modo Incremental
El modo Incremental manipula un elemento de la matriz cada vez que EnableIn pase de falso a verdadero.

El siguiente diagrama de temporización muestra la relación entre los bits de estado y la operación de la instrucción. La ejecución se produce solo en un escaneado en el que EnableIn pasa de falso a verdadero. Cada vez que esto ocurre, solo se manipula un elemento de la matriz. Si EnableIn permanece verdadero durante más de un escaneado, la instrucción solo se ejecuta durante el primer escaneado.

El bit .EN se establece cuando el valor de EnableIn es verdadero. El bit .DN se establece cuando se ha manipulado el último elemento de la matriz. Cuando se ha manipulado el último elemento y el valor de EnableIn pasa a falso, se borran los valores del bit .EN, del bit .DN y de .POS.
La diferencia entre el modo Incremental y el modo Numérico a un régimen de un elemento por escaneado es:
El modo Numérico con cualquier cantidad de elementos por escaneado requiere solo una transición de falso a verdadero de EnableIn para iniciar la ejecución. La instrucción continúa ejecutando el número de elementos especificado en cada escaneado hasta su finalización, independientemente del estado de EnableIn.
El modo Incremental requiere que EnableIn cambie de falso a verdadero para manipular un elemento de la matriz.
Expresiones de formato
Para cada operador que utilice en una expresión, debe proporcionar uno o dos operandos (etiquetas o valores inmediatos). Se usa la siguiente tabla para dar formato a los operadores y operandos dentro de una expresión.
Para operadores que operan en: | Se usa este formato: | Ejemplo |
|---|---|---|
Un operando | operador(operando) | ABS(etiqueta) |
Dos operandos | operand_a operador operand_b | tag_b + 5 tag_c AND tag_d (tag_e**2) MOD (tag_f / tag_g) |
Determinar el orden de operación
La instrucción realiza las operaciones dentro de una expresión en un orden estipulado, no necesariamente en el orden en que aparecen. Se puede especificar el orden de la operación agrupando los términos en paréntesis, lo que obligará a la instrucción a realizar las operaciones dentro los paréntesis antes de otras operaciones.
Las operaciones del mismo orden se realizarán de izquierda a derecha.
Order | Operación |
|---|---|
1 | ( ) |
2 | ABS, ACOS, ASIN, ATAN, COS, DEG, BCD_TO, LN, LOG, RAD, SIN, SQRT, TAN, TO_BCD, TRUNC |
3 | ** |
4 | - (negar), NOT |
*, /, MOD | |
6 | - (restar), + |
7 | AND |
8 | XOR |
9 | OR |
Afecta a las marcas de estado matemáticas
Controladores | Afecta a las marcas de estado matemáticas |
|---|---|
controladores CompactLogix 5380, ControlLogix 5580, Compact GuardLogix 5380, GuardLogix 5580 y ControlLogix 5590 | No |
Controladores CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 y GuardLogix 5570 | Sí |
Fallos mayores/menores
Se producirá un fallo mayor si: | Tipo de fallo | Código de fallo |
|---|---|---|
.POS < 0 o .LEN < 0 | 4 | 21 |
Consulte el Índice a través de matrices para ver si hay fallos de indexación de matrices.
Ejecución
Diagrama de lógica de escalera
Condición/estado | Acción realizada |
|---|---|
Pre-escaneado | N/A |
La condición de entrada de renglón es falsa | Establecer la condición de salida de renglón a condición de entrada de renglón. Consultar el Diagrama de flujo de FAL (Condición de salida de reglón es falsa) |
La condición de entrada de renglón es verdadera | Establecer la condición de salida de renglón a condición de entrada de renglón. Consultar el Diagrama de flujo de FAL (Condición de salida de reglón es verdadera) |
Post-escaneado | N/A |
Diagrama de flujo de FAL (Condición de salida de reglón es falsa)

Diagrama de flujo de FAL (Condición de salida de reglón es verdadera)

Diagrama de flujo de FAL (Modo Todos)

Diagrama de flujo de FAL (Modo Numérico)

Diagrama de flujo de FAL (Modo Incremental)

Ejemplos
Ejemplo 1
De matriz a matriz.
Diagrama de lógica de escalera
(54)_v31.png/_jcr_content/renditions/original)
Cuando se habilita, la instrucción FAL copia cada elemento de array_2 en la misma posición dentro de array_1.

Ejemplo 2
Copia de elemento a matriz.
Diagrama de lógica de escalera
(56)_v31.png/_jcr_content/renditions/original)
Cuando está habilitada, la instrucción FAL copia value_1 dentro de las primeras 10 posiciones de la segunda dimensión de array_2.

Ejemplo 3:
Copia de matriz a elemento.
(58)_v31.png/_jcr_content/renditions/original)
Cada vez que se habilita la instrucción FAL, copia el valor actual de array_1 en value_1. La instrucción FAL usa el modo incremental, de modo que solo se copia un valor de matriz cada vez que se habilita la instrucción. La próxima vez que se habilita la instrucción, esta sobrescribirá value_1 utilizando el siguiente valor de array_1.

Ejemplo 4:
Operación aritmética: matriz / matriz a matriz
(60)_31.png/_jcr_content/renditions/original)
Cuando se habilita, la instrucción FAL divide el valor en la posición actual de array_2 por el valor que haya en la posición actual de array_3 y almacena el resultado en la posición actual de array_1.

Ejemplo 5:
Operación aritmética: matriz / matriz a matriz
(62)_v31.png/_jcr_content/renditions/original)
Cuando se habilita, la instrucción FAL añade value_1 y value_2 y almacena el resultado en la posición actual de array_1.

Ejemplo 6:
Operación aritmética: matriz / elemento a matriz
(64)_v31.png/_jcr_content/renditions/original)
Cuando se habilita, la instrucción FAL añade el valor de la posición actual de array_1 a value_1 y almacena el resultado en la posición actual de array_3. La instrucción debe ejecutarse 10 veces para que se manipulan completamente el array_1 y array_3.

Ejemplo 7:
Operación aritmética: (elemento + matriz) a elemento
(66)_v31.png/_jcr_content/renditions/original)
Cada vez que se habilita la instrucción FAL, añade value_1 al valor actual de array_1 y almacena el resultado en value_2. La instrucción FAL usa el modo incremental, de modo que solo se añade un valor de matriz a value_1 cada vez que se habilita la instrucción. La próxima vez que se habilita la instrucción, esta sobrescribirá value_2.

Ejemplo 8:
Operación aritmética: (elemento * matriz) a elemento
(68)_v31.png/_jcr_content/renditions/original)
Cuando se habilita la instrucción FAL, multiplica el valor actual de array_1 por el valor actual de array_3 y almacena el resultado en value_1. La instrucción FAL usa el modo incremental, de modo que solo se multiplica un par de valores de matriz cada vez que se habilita la instrucción. La próxima vez que se habilita la instrucción, esta sobrescribirá value_1.

Entregue su opinión