FP_EVENTS_COUNT

Compter le nombre de fronts montants pour chaque bit

Cette instruction FP compte le nombre de fronts montants de chaque bit dans la zone de données spécifiée par l’adresse de départ s1_Start et le nombre de bits n_Bits. Les résultats des comptages sont enregistrés en n_Bits éléments du type de données DINT ou UDINT à partir de d_Start.

Paramètres

Entrée

s1_Start (WORD, INT, UINT)

Adresse de départ de la zone de données des bits à évaluer.

Utilisez la formule suivante pour déterminer la taille minimale de cette zone de données :

Toutes les positions décimales du résultat de cette division de nombres entiers doivent être supprimées.

  • n_Bits de 1–16 => la taille est de 1 mot.

  • n_Bits de 17–32 => la taille est de 2 mots...

s2_WorkArea (WORD, INT, UINT)

Adresse de départ de la zone de travail. Sa taille doit être identique à celle de s1_Start.

n_Bits (INT, DINT, UINT, UDINT)

Nombre de bits (intervalle autorisé : 1–65535)

Sortie

d_Start (WORD, INT, UINT)

Adresse de départ de la zone de données dans laquelle les résultats des comptages sont enregistrés. Ces résultats se composent d’un nombre minimum de n_Bits éléments de type de données DINT ou UDINT. Utilisez les instructions Adr_Of_Var_I (LD/FBD) ou Adr_Of_Var (ST) pour affecter cette zone de données aux résultats.

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.
  • Si d_Start, s1_Start ou s2_WorkArea sont en dehors de l’intervalle autorisé.
sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.
  • Si d_Start, s1_Start ou s2_WorkArea sont 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
		bStart: BOOL:=FALSE;
		iTestIndex: INT:=0;
		iWorkAreaCount: INT:=0;
		arrCountEvents: ARRAY [0..5] of dint:=[6(0)];
	END_VAR

Corps du POU

La fonction est exécutée lorsque la variable bStart est définie 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 := 6 ;
        NETWORK_BODY
B(B_F,FP_EVENTS_COUNT!,,12,0,22,6,,?DEN?Ds1_Start?Ds2_WorkArea?Dn_Bits?AENO?Cd_Start);
B(B_VARIN,,iTestIndex,10,2,12,4,);
B(B_VARIN,,iWorkAreaCount,10,3,12,5,);
B(B_VARIN,,6,10,4,12,6,);
B(B_VAROUT,,arrCountEvents[0],33,2,35,4,);
B(B_CONTACT,,bStart,3,1,5,3,);
B(B_F,Adr_Of_Var_O!,,25,2,33,4,,?D?C);
L(1,2,3,2);
L(5,2,12,2);
L(22,3,25,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

IF (bStart) then
    FP_EVENTS_COUNT(s1_Start := iTestIndex,
                    s2_WorkArea := iWorkAreaCount,
                    n_Bits := 6,
                    d_Start => Adr_Of_Var(arrCountEvents[0]));
END_IF;

Modifié le : 2019-04-24Commentaires sur cette pageAssistance téléphonique