FP_FIFO_DEFINE

Définir la zone tampon FIFO

Cette instruction FP spécifie la zone de départ d_Start du tampon FIFO (First-In-First-Out) et la taille de la mémoire n_Words du tampon FIFO.

Paramètres

Entrée

n_Words (WORD, INT, UINT)

Indique la taille de la mémoire tampon

Valeurs : 1–4096

Sortie

d_Start (WORD, INT, UINT)

Zone de départ des données du tampon

Remarques

Format du tampon de données

  1.  (1) Taille du tampon
  2.  (2) Nombre des données sauvegardées
  3.  (3) Pointeur de lecture
  4.  (4) Pointeur d’écriture
  5.  (5) Zone de données du tampon (non réinitialisée)

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si une valeur spécifiée pour un paramètre est en dehors de l’intervalle autorisé.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si une valeur spécifiée pour un paramètre est en dehors de l’intervalle autorisé.

Exemple

En-tête du POU

Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU.Le même en-tête de POU est utilisé pour tous les langages de programmation.

	VAR
		bDefineBuffer: BOOL:=FALSE;
		dutTestError: BOOL32_OVERLAPPING_DUT;
		iWords: INT:=8;
		arrFifo: ARRAY [0..11] OF INT:=[12(0)];
	END_VAR

Corps du POU

La fonction est exécutée lorsque la variable bDefineBuffer est sur TRUE.

Corps en LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_F,E_NE!,,13,2,19,7,,?DEN?D?D?AENO?C);
B(B_VARIN,,iWords,11,4,13,6,);
B(B_VARIN,,arrFifo[0],11,5,13,7,);
B(B_VAROUT,,dutTestError.b0,19,4,21,6,);
B(B_CONTACT,,bDefineBuffer,5,3,7,5,);
B(B_COMMENT,,Check the Buffer size,2,1,13,2,);
L(7,4,13,4);
L(1,4,5,4);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_F,FP_FIFO_DEFINE!,,13,1,22,5,,?DEN?Dn_Words?AENO?Cd_Start);
B(B_VARIN,,iWords,11,3,13,5,);
B(B_VAROUT,,arrFifo[0],22,3,24,5,);
B(B_CONTACT,,bDefineBuffer,5,2,7,4,);
L(7,3,13,3);
L(1,3,5,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

if (bDefineBuffer) then    
    FP_FIFO_DEFINE(n_Words := iWords, d_Start => arrFifo[0]);
        (* Check the Buffer size *)
        dutTestError.b0 := arrFifo[0] <> iWords;
end_if;

Modifié le : 2022-07-06Commentaires sur cette pageAssistance téléphonique