CTUD / CTUDr

Function Block - Up/down counter.

Inputs

CU : BOOL     Enable counting. Counter is increased on each call when CU is TRUE
CD : BOOL     Enable counting. Counter is decreased on each call when CD is TRUE
RESET : BOOL  Reset command. Counter is reset to 0 called with RESET to TRUE
LOAD : BOOL   Re-load command. Counter is set to PV when called with LOAD to TRUE
PV : DINT     Programmed maximum value

Outputs

QU : BOOL     TRUE when counter is full, i.e. when CV = PV
QD : BOOL     TRUE when counter is empty, i.e. when CV = 0
CV : DINT     Current value of the counter

Remarks

The counter is empty (CV = 0) when the application starts. The counter does not include a pulse detection for CU and CD inputs. Use R_TRIG or F_TRIG function blocks for counting pulses of CU or CD input signals. In LD language, CU is the input rung. The output rung is the QU output.

CTUr, CTDr, CTUDr function blocks operate exactly as other counters, except that all boolean inputs (CU, CD, RESET, LOAD) have an implicit rising edge detection included. Not that these counters may be not supported on some target systems.

ST Language

(* MyCounter is a declared instance of CTUD function block *)
MyCounter (CU, CD, RESET, LOAD, PV);
QU := MyCounter.QU;
QD := MyCounter.QD;
CV := MyCounter.CV;

FBD Language

CtudFbd.gif (1604 octets)

LD Language

CtudLd.gif (1724 octets)

IL Language:

(* MyCounter is a declared instance of CTUD function block *)
Op1: CAL    MyCounter (CU, CD, RESET, LOAD, PV)
     LD     MyCounter.QU
     ST     QU
     LD     MyCounter.QD
     ST     QD
     LD     MyCounter.CV
     ST     CV

See also

CTU   CTD