Function Block - Up/down counter.
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
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
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.
(* MyCounter is a declared instance of CTUD
function block *)
MyCounter (CU, CD, RESET, LOAD, PV);
QU := MyCounter.QU;
QD := MyCounter.QD;
CV := MyCounter.CV;
(* 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