FP_LIFO_DEFINE

Définir la zone tampon LIFO

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

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) Fixée à 0
  4.  (4) Pointeur LIFO
  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é.

Thèmes apparentés

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;
		arrLifo: 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 := 5 ;
        NETWORK_BODY
B(B_CONTACT,,bDefineBuffer,5,1,7,3,);
B(B_F,E_NE!,,12,0,18,5,,?DEN?D?D?AENO?C);
B(B_VARIN,,arrLifo[0],10,3,12,5,);
B(B_VAROUT,,dutTestError.b8,18,2,20,4,);
B(B_VARIN,,iWords,10,2,12,4,);
L(1,2,5,2);
L(7,2,12,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_F,FP_LIFO_DEFINE!,,12,1,21,5,,?DEN?Dn_Words?AENO?Cd_Start);
B(B_CONTACT,,bDefineBuffer,5,2,7,4,);
B(B_VARIN,,iWords,10,3,12,5,);
B(B_VAROUT,,arrLifo[0],21,3,23,5,);
L(1,3,5,3);
L(7,3,12,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

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

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