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
File Arithmetic and Logic (FAL) (45)_v31
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:
  • CompactLogix
    5370
  • ControlLogix
    5570
.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.
FAL_All Mode
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.
FAL_All Mode 2
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.
FAL_numerical mode
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.
FAL numerical mode 2
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.
FAL_Incremental Mode
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.
FAL_Incremental Mode 2
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)
FAL FLOW CHART ENABLEIN IS FALSE
Diagrama de flujo de FAL (Condición de salida de reglón es verdadera)
FAL Flow Chart EnableIn is True
Diagrama de flujo de FAL (Modo Todos)
AllModeFlowChart
Diagrama de flujo de FAL (Modo Numérico)
NumModeFlowChart
Diagrama de flujo de FAL (Modo Incremental)
IncModeFlowChart
Ejemplos
Ejemplo 1
De matriz a matriz.
Diagrama de lógica de escalera
File Arithmetic and Logic (FAL) (54)_v31
Cuando se habilita, la instrucción FAL copia cada elemento de array_2 en la misma posición dentro de array_1.
FAL_example 1_array
Ejemplo 2
Copia de elemento a matriz.
Diagrama de lógica de escalera
File Arithmetic and Logic (FAL) (56)_v31
Cuando está habilitada, la instrucción FAL copia value_1 dentro de las primeras 10 posiciones de la segunda dimensión de array_2.
FAL_example 2_array
Ejemplo 3:
Copia de matriz a elemento.
File Arithmetic and Logic (FAL) (58)_v31
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.
FAL_example 3_array
Ejemplo 4:
Operación aritmética: matriz / matriz a matriz
File Arithmetic and Logic (FAL) (60)_31
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.
FAL_example 4
Ejemplo 5:
Operación aritmética: matriz / matriz a matriz
File Arithmetic and Logic (FAL) (62)_v31
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.
RSLogix500 Linked Icons PNG File Template
Ejemplo 6:
Operación aritmética: matriz / elemento a matriz
File Arithmetic and Logic (FAL) (64)_v31
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.
FAL_example 6
Ejemplo 7:
Operación aritmética: (elemento + matriz) a elemento
File Arithmetic and Logic (FAL) (66)_v31
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.
FAL_example 7
Ejemplo 8:
Operación aritmética: (elemento * matriz) a elemento
File Arithmetic and Logic (FAL) (68)_v31
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.
L5K_FAL_example 8
Entregue su opinión
¿Tiene dudas o comentarios acerca de esta documentación? Por favor deje su opinión aquí.
Normal