Questo blocco funzione esegue la gestione di un counter in incremento e decremento. Agendo sull’ingresso di reset R è possibile in qualsiasi momento azzerare il valore del counter CV. Agendo sull’ingresso di load LD è possibile in qualsiasi momento trasferire il valore di preset impostato sul parametro PV nel counter CV.
Ad ogni fronte di attivazione dell’ingresso CU, il valore del counter viene incrementato. Quando il valore raggiunge il valore di preset, definito su PV, l’uscita QU viene settata ed il conteggio si arresta. Solo agendo sull’ingresso di reset si potrà resettare il counter e fare ripartire un nuovo conteggio.
Ad ogni fronte di attivazione dell’ingresso CD, il valore del counter viene decrementato, quando il valore raggiunge 0, l’uscita QD viene settata ed il conteggio si arresta. Solo agendo sull’ingresso di load è possibile presettare il counter e fare ripartire un nuovo conteggio.
Descrizione
CU (BOOL) Comando incremento counter, ad ogni fronte attivazione il valore del counter CV si incrementa.
CD (BOOL) Comando decremento counter, ad ogni fronte attivazione il valore del counter CV si decrementa.
R (BOOL) Comando di reset, attivando l’ingresso il valore del counter CV si resetta.
LD (BOOL) Comando di load, attivando l’ingresso il valore di preset PV, viene trasferito nel valore del counter CV.
PV (INT) Valore di preset, quando il valore del counter CV raggiunge questo valore l’uscita QU si attiva ed il counter non si incrementa più.
QU (BOOL) Uscita counter up, attiva se il valore del counter CV raggiunge il valore definito in preset PV.
QD (BOOL) Uscita counter down, attiva se il valore del counter CV raggiunge il valore 0.
CV (INT) Valore di conteggio counter. Su comando incremento counter, quando raggiunge il valore di preset PV, l’uscita QU si attiva ed il counter non si incrementa più. Su comando decremento counter quando raggiunge il valore 0 l’uscita QD si attiva ed il counter non si decrementa più.

Esempi
Come utilizzare gli esempi.
Nell’esempio viene gestito un counter in incremento/decremento, attivando Load il counter viene presettato a 10, attivando Reset viene resettato a 0. Ad ogni fronte di attivazione di CUp il valore del counter si incrementa, quando il valore diventa 10 si attiva UpOutput.
Ad ogni fronte di attivazione di CDw il valore del counter si decrementa, quando il valore diventa 0 si attiva DwOutput.
LogicLab (Ptp115, IL_CTUD)
PROGRAM IL_CTUD
VAR
CUp : BOOL; (* Clock up command *)
CDw : BOOL; (* Clock down command *)
Reset : BOOL; (* Reset command *)
Load : BOOL; (* Load command *)
UpOutput : BOOL; (* Counter up output *)
DwOutput : BOOL; (* Counter down output *)
CValue : INT; (* Counter value *)
Counter : CTUD; (* Counter *)
END_VAR
(* ************************************************************************** *)
(* PROGRAM "IL_CTUD" *)
(* ************************************************************************** *)
(* This program shows the use of CTUD function block. *)
(* ------------------------------------------------------------------------- *)
(* ---------------------------------------------------------------------- *)
(* COUNTER *)
(* ---------------------------------------------------------------------- *)
LD CUp (* Clock up command *)
ST Counter.CU
LD CDw (* Clock down command *)
ST Counter.CD
LD Reset (* Reset command *)
ST Counter.R
LD Load (* Load command *)
ST Counter.LD
LD 10
ST Counter.PV
CAL Counter (* Call the function block *)
LD Counter.QU
ST UpOutput (* Counter up output *)
LD Counter.QD
ST DwOutput (* Counter down output *)
LD Counter.CV
ST CValue (* Counter value *)
(* [End of file] *)
LogicLab (Ptp115, ST_CTUD)
PROGRAM ST_CTUD
VAR
CUp : BOOL; (* Clock up command *)
CDw : BOOL; (* Clock down command *)
Reset : BOOL; (* Reset command *)
Load : BOOL; (* Load command *)
UpOutput : BOOL; (* Counter up output *)
DwOutput : BOOL; (* Counter down output *)
CValue : INT; (* Counter value *)
Counter : CTUD; (* Counter *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_CTUD"
// *****************************************************************************
// This program shows the use of CTUD function block.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// COUNTER
// -------------------------------------------------------------------------
Counter(CU:=CUp, CD:=CDw, R:=Reset, LD:=Load, PV:=10); //Call the function block
UpOutput:=Counter.QU; //Counter up output
DwOutput:=Counter.QD; //Counter down output
CValue:=Counter.CV; //Counter value
// [End of file]