CTUD

Compteur croissant/décroissant

Le bloc fonction CTUD (count up/down) permet de programmer des procédures de comptage (croissant et décroissant).

  • Compteur croissant (CU définie sur TRUE)

    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.

  • Compteur décroissant (CD définie sur TRUE)

    Le compteur décroissant démarre à zéro jusqu’à ce que la valeur minimale -32768 soit atteinte. À chaque front montant du compteur décroissant CD, la valeur courante CV est décré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 détecté sur CU, sauf lorsque R et/ou LD est/sont activé(s).

CD (BOOL)

Compteur décroissant

La valeur 1 est déduite de la valeur courante CV à chaque front montant détecté sur CD, sauf lorsque R et/ou LD est/sont activé(s).

Lorsque CU et CD sont définis sur TRUE simultanément, le comptage n’est pas exécuté.

R (BOOL)

Réinitialiser

CV est réinitialisée à zéro à chaque front montant de R et le comptage s’arrête. La sortie QU/QD est définie sur FALSE.

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

LD (BOOL)

Chargement

Lorsque LD est activée, PV est chargée dans CV et QU est définie sur TRUE. Cependant, ceci ne s’applique pas si R est activée simultanément. Dans ce cas, LD est ignoré.

PV (INT)

Valeur de consigne

Détermine la valeur de consigne à atteindre par l’addition ou la soustraction.

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

Sortie

QU (BOOL)

Sortie de signal - Compteur croissant

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

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

QD (BOOL)

Sortie de signal - Compteur décroissant

Définie sur TRUE lorsque CV = zéro

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

CV (INT)

Valeur courante

  • Résultat de l’addition/soustraction

  • Comptage croissant :

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

  • Comptage décroissant :

    Lorsque CV atteint zéro, la sortie QD est définie sur TRUE, mais le comptage continue jusqu’à ce que la valeur minimale -32768 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
		CTUD1: CTUD;
		bCountUp: BOOL:=FALSE;
			(*increments CV if TRUE*)
		bCountDown: BOOL:=FALSE;
			(*decrements CV if TRUE*)
		bReset: BOOL:=FALSE;
			(*sets CV to zero if TRUE*)
		bLoad: BOOL:=FALSE;
			(*sets CV to PV if TRUE*)
		iPresetValue: INT:=3;
			(*if CV reaches this value,
output QU is set*)
		bUpCounting_PV_reached: BOOL:=FALSE;
			(*is set, if CV reaches PV*)
		bDownCounting_zero_reached: BOOL:=FALSE;
			(*is set, if CV reaches zero*)
		iCurrentValue: INT:=0;
			(*contains the current value*)
	END_VAR

Corps du POU

Compteur croissant :

Lorsque bReset est activé, iCurrentValue(CV) est réinitialisée. Lorsque bCountUp est activé, la valeur 1 est ajoutée à iCurrentValue. Cette procédure est répétée à chaque front montant détecté sur bCountUp jusqu’à ce que iCurrentValue soit supérieure/égale à la valeur iPresetValue. bUpCounting_PV_reached est alors défini sur TRUE. La procédure n’est pas exécutée lorsque bReset et/ou bLoad est/sont activé(s).

Compteur décroissant :

Lorsque bReset est activé (état = TRUE), la valeur de consigne iPresetValue (PV) est chargée dans la valeur courante iCurrentValue. Lorsque bCountDown est activé, la valeur 1 est soustraite de iPresetValue. Cette procédure est répétée à chaque front montant détecté jusqu’à ce que la valeur courante iCurrentValue soit inférieure/égale à zéro. bDownCounting_zero_reached est alors défini sur TRUE. La procédure n’est pas exécutée lorsque bReset et/ou bLoad est/sont activé(s). Lorsque CU et CD sont activés en même temps, le comptage n’est pas exécuté.

Corps en LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 14 ;
        NETWORK_BODY
B(B_CONTACT,,bCountUp,5,3,7,5,);
B(B_CONTACT,,bCountDown,5,5,7,7,);
B(B_FB,CTUD!,CTUD1,12,4,18,11,,?BCU?BCD?BR?BLD?BPV?AQU?AQD?ACV);
B(B_COIL,,bUpCounting_PV_reached,25,5,27,7,);
B(B_CONTACT,,bReset,5,7,7,9,);
B(B_COIL,,bDownCounting_zero_reached,25,8,27,10,);
B(B_CONTACT,,bLoad,5,9,7,11,);
B(B_VAROUT,,iCurrentValue,20,10,22,12,);
B(B_VARIN,,iPresetValue,7,11,9,13,);
L(1,0,1,14);
L(1,4,5,4);
L(7,4,10,4);
L(10,4,10,6);
L(1,6,5,6);
L(7,6,9,6);
L(10,6,12,6);
L(18,6,25,6);
L(9,6,9,7);
L(9,7,12,7);
L(18,7,20,7);
L(20,7,20,9);
L(1,8,5,8);
L(7,8,12,8);
L(18,8,19,8);
L(19,8,19,11);
L(9,9,12,9);
L(20,9,25,9);
L(9,9,9,10);
L(1,10,5,10);
L(7,10,9,10);
L(10,10,12,10);
L(10,10,10,12);
L(19,11,20,11);
L(9,12,10,12);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

CTUD1(CU := bCountUp, CD := bCountDown, R := bReset, LD := bLoad, 
	  PV := iPresetValue, QU => bUpCounting_PV_reached,
	  QD => bDownCounting_zero_reached, CV => iCurrentValue);

Corps en IL

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