CTU

Compteur croissant

Le bloc fonction CTU (count up) permet de programmer des procédures de comptage.

Le compteur croissant démarre à zéro jusqu’à ce que la valeur maximale 32767 soit atteinte. À chaque front montant du compteur croissant CU, la valeur courante CV est incrémentée de 1.

Paramètres

Entrée

CU (BOOL)

Compteur croissant

La valeur 1 est ajoutée à la valeur courante CV à chaque front montant de CU, sauf lorsque R est activé.

R (BOOL)

Réinitialiser

Un front montant en R réinitialise la valeur courante CV à zéro et le comptage s’arrête. La sortie Q est définie sur FALSE.

Le front descendant suivant en R redémarre le comptage.

PV (INT)

Valeur de consigne

Si CV est égale/supérieure à PV, Q est définie sur TRUE.

Si aucune valeur de consigne n’est définie ou si la valeur de consigne est zéro la sortie Q est définie sur TRUE immédiatement après le démarrage du comptage.

Sortie

Q (BOOL)

Sortie de signal

Définie sur TRUE lorsque CV est supérieure/égale à PV

Définie sur FALSE lorsqu’un front montant est détecté sur R.

CV (INT)

Valeur courante

  • Contient le résultat de l’addition.

  • Lorsque CV atteint la valeur de consigne PV, la sortie Q est définie sur TRUE, mais le comptage continue jusqu’à ce que la valeur maximale 32767 soit atteinte.

  • La valeur peut être modifiée pendant le comptage en écrivant dans la variable à partir de l’éditeur de programmation.

Chronogramme

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
		CTU1: CTU;
		bReset: BOOL:=FALSE;
			(*sets CV to zero if TRUE*)
		iPresetValue: INT:=3;
			(*if CV reaches this value,
output Q is set*)
		bUpCounting_PV_reached: BOOL:=FALSE;
			(*is set, if CV reaches PV*)
		iCurrentValue: INT:=0;
			(*contains the current value*)
	END_VAR

Corps du POU

Lorsque bReset est activé (état = TRUE), iCurrentValue (CV) est réinitialisée. Lorsqu’un front montant est détecté sur CU, la valeur 1 est ajoutée à iCurrentValue. Lorsqu’un front montant est détecté sur CU, cette procédure est répétée jusqu’à ce que iCurrentValue soit supérieure/égale à iPresetValue. bUpCounting_PV_reached est alors défini sur TRUE.

Corps en LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_CONTACT,,sys_bPulse1s,5,2,7,4,);
B(B_FB,CTU!,CTU1,12,1,17,6,,?BCU?BR?BPV?AQ?ACV);
B(B_COIL,,bUpCounting_PV_reached,23,2,25,4,);
B(B_CONTACT,,bReset,5,4,7,6,);
B(B_VAROUT,,iCurrentValue,18,4,20,6,);
B(B_VARIN,,iPresetValue,7,6,9,8,);
L(1,0,1,8);
L(1,3,5,3);
L(7,3,12,3);
L(17,3,23,3);
L(9,4,12,4);
L(9,4,9,5);
L(17,4,17,5);
L(1,5,5,5);
L(7,5,9,5);
L(10,5,12,5);
L(17,5,18,5);
L(10,5,10,7);
L(9,7,10,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

CTU1(CU := sys_bPulse1s, R := bReset, PV := iPresetValue,
     Q => bUpCounting_PV_reached, 
	 CV => iCurrentValue);

Corps en IL

Modifié le : 2023-03-10Commentaires sur cette pageAssistance téléphonique