CTUD

Ingresso conteggio AVANTI/INDIETRO

Il Function Block CTUD (count up/down) vi consente di programmare procedure di conteggio (avanti e indietro).

  • Count up (CU impostato su TRUE)

    Il conteggio parte da zero fino a raggiungere il valore massimo di 32767. Ogni fronte di salita al conteggio in avanti a CU aumenta il valore al valore attuale CV di 1.

  • Count down (CD impostato su TRUE)

    Il countdown parte da zero fino a raggiungere il valore minimo di -32768. Ogni fronte di salita al countdown verso CD diminuisce il valore al valore attuale CV di 1.

Parametri

Ingresso

CU (BOOL)

conteggio avanti

il valore 1 viene sommato al valore CV attuale per ogni fronte di salita rilevato in CU, eccetto quando vengono impostati R e/o LD.

CD (BOOL)

conteggio indietro

il valore 1 viene sottratto dal valore CV attuale per ogni fronte di salita rilevato in CD, eccetto quando vengono impostati R e/o LD.

se CU e CD vengono impostati simultaneamente su TRUE non si avranno operazioni di conteggio.

R (BOOL)

Reset

CV viene resettato a zero per ogni fronte di salita in R e il conteggio si arresta. L'uscita QU/QD viene impostata su FALSE.

Il successivo fronte di discesa a R riavvia il conteggio.

LD (BOOL)

Carica l'accumulatore

se LD è impostato, PV viene caricato in CV e QU viene impostato su TRUE. Questo, tuttavia, non vale se viene simultaneamente impostato R. In tal caso, LD verrà ignorato.

PV (INT)

Valore preimpostato

definisce il valore preimpostato da raggiungere con l'addizione o la sottrazione

Se non è stato impostato un valore preimpostato o se il valore preimpostato è zero, l'uscita QU viene impostata su TRUE subito dopo l'avvio del conteggio.

Uscita

QU (BOOL)

uscita segnale – conteggio avanti

viene impostata su TRUE se CV è maggiore di/uguale a PV

viene impostata su FALSE se viene rilevato un fronte di salita su R.

QD (BOOL)

uscita segnale – conteggio indietro

viene impostata su TRUE se CV = zero

viene impostata su FALSE se viene rilevato un fronte di salita su R.

CV (INT)

Valore attuale

  • è il risultato della somma/sottrazione

  • conteggio in avanti:

    Se CV raggiunge il valore preimpostato PV, l'uscita QU viene impostata su TRUE, ma il conteggio continua fino a quando il limite massimo di 32767 viene raggiunto.

  • countdown

    Se CV raggiunge lo zero, l'uscita QD viene impostata su TRUE, ma il conteggio continua fino a quando il limite minimo di -32768 viene raggiunto.

  • Il valore può essere modificato durante l'operazione di conteggio scrivendo sulla variabile dall'editor di programmazione.

Diagramma tempi

Esempio

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	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

Corpo del POU

Conteggio avanti:

Se bReset è impostato, iCurrentValue (CV) verrà resettato a zero. Se bCountUp è impostato, il valore 1 viene sommato a iCurrentValue. Questa procedura viene ripetuta per ogni fronte di salita rilevato in bCountUp finché iCurrentValue è maggiore di/uguale a iPresetValue. Dopo di che viene impostato bUpCounting_PV_reached. La procedura non viene eseguita se vengono impostati bReset e/o bLoad.

Conteggio indietro:

Se bReset è impostato (stato = TRUE), iPresetValue (PV = valore preimpostato) verrà caricato in iCurrentValue. Se bCountDown è impostato, il valore 1 viene sottratto da iPresetValue. Questa procedura viene ripetuta per ogni fronte di salita finché iCurrentValue è minore di/uguale a zero. Dopo di che viene impostato bDownCounting_zero_reached su TRUE. La procedura non viene eseguita se vengono impostati bReset e/o bLoad. Se CU e CD vengono impostati simultaneamente, il conteggio sarà in avanti.

Corpo 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

Corpo ST

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

Corpo IL

L'ultima revisione: 2021-09-27Feedback su questa paginaPanasonic hotline