FIFO

Instrucciones  Índex 

 En un FIFO (First In First Out, o primero en entrar y primero en salir) el valor del acumulador es puesto en un registro de desplazamiento al mismo tiempo que el acumulador recibe el dato más antiguo  del mismo:

  FIFO ini, fin

o también 

  FIFO ini, cnt

ini: 1º variable del registro de desplazamiento.

fin: Última variable (más antigua) o constante (cnt) con la cantidad de variables del registro de desplazamiento.

fifo_simple.png

Al ejecutar el Acc es introducido al registro de desplazamiento empujando todo su contenido. Entonces, el mas antiguo (fin) sale del registro y entra en Acc.

Solo para variables tipo entero (16bit).

Ejemplo de uso aquí.

Con tres argumentos

A partir del CP121 2.70, CP122 2.20, CP123 2.30, CP125 1.10, CP127 1.00, CP128 1.00, CP220 1.00 varias instrucciones de dos argumentos son reemplazadas por tres argumentos. El comportamiento de cada uno resulta en la siguiente forma:

FIFO arg1, arg2, arg3              equivale a                 arg1 = dato a arg2 y dato de arg3

Los argumentos (arg 1, 2 y 3) pueden ser de 16bit o 32bit (Ver tipo de dato), sin mezclarse.

arg1: variable con el dato a ingresar al FIFO y que recibe la salida de éste.

arg2: primer variable del registro de desplazamiento

arg3: última variable del registro de desplazamiento o cantidad de variables contiguas que conformas el registro de desplazamiento.
Si arg3 es una variable debe ser posterior a arg2.

La ejecución es condicional.

 fifo_desc.png 

 Al ejecutar el arg1 es introducido al registro de desplazamiento empujando todo su contenido. Entonces, el mas antiguo (arg3) sale del registro y entra en arg1.
 
En Ladder, por causa de la representación gráfica, el arg1 al final en vez de al principio. Esto ocurre con ADD, DIV, FAVG, FIFO, FILL, MOD, MUL, SCALE, STDVT y SUB.
 

En 32 bits

En caso de alguna versión que no cuente con la variante de 32 bits de esta instrucción, se puede implementar con la de 16 bits. El ejmplo se puede descargar aquí, que es también para FAVG.