Le tampon FIFO (first-in-first-out) est une zone mémoire en tampon circulaire. Les données sont sauvegardées dans l’ordre dans lequel elles sont écrites dans le tampon et lues dans l’ordre dans lequel elles ont été sauvegardées en commençant par le premier élément sauvegardé. Il convient particulièrement pour sauvegarder temporairement des objets dans l’ordre séquentiel.
La zone qui doit être utilisée est définie comme tampon FIFO à l’aide de l’instruction FP_FIFO_DEFINE. (Ceci doit être fait une seule fois, avant la lecture ou l’écriture.)
Les données sont écrites dans le tampon à l’aide de l’instruction FP_FIFO_WRITE et lues à partir du tampon à l’aide de l’instruction FP_FIFO_READ.
Lorsque les données sont écrites, elles sont sauvegardées dans l’ordre séquentiel, à partir de la première zone de sauvegarde des données. Le pointeur d’écriture indique la zone suivante vers laquelle les données doivent être écrites. Le nombre de mots sauvegardés augmente de 1.
Lorsque la zone de sauvegarde des données est pleine, c.-à-d. lorsque le nombre de mots sauvegardé est égal à n-1, il est impossible d’écrire d’autres données.
Lorsque les données sont lues, elles sont transférées à partir du premier élément sauvegardé. Le pointeur de lecture indique la zone suivante à partir de laquelle les données doivent être lues. Le nombre de mots sauvegardés diminue de 1.
Une erreur apparaît si le système tente de lire des données lorsque la zone de sauvegarde des données est vide, lorsque le nombre de mots sauvegardés est égal à la taille de la mémoire du tampon FIFO ou égal à zéro.
Si les données sont écrites pendant que le tampon FIFO est à l’état indiqué ci-dessous, les données seront sauvegardées dans la zone indiquée par 3. Le pointeur d’écriture se déplace vers 4, ce qui signifie que l’élément suivant sera écrit vers 4. Si les données sont lues, elles le seront à partir de la zone indiquée par 0. Le pointeur de lecture se déplace vers 1, ce qui signifie que l’élément suivant sera lu à partir de 1.