-> Hier kostenlos registrieren
Hab mir gerade den Funktionsblock CLICK_MODE angesehen ...
Hat es einen Grund warum der Eingang hier nicht entprellt wird?
Oder seh ich es einfach nicht?
Hat es einen Grund warum der Eingang hier nicht entprellt wird?
Oder seh ich es einfach nicht?
Code:
FUNCTION_BLOCK CLICK_MODE
VAR_INPUT
IN : BOOL;
END_VAR
VAR_OUTPUT
SINGLE : BOOL;
DOUBLE : BOOL;
LONG : BOOL;
TP_LONG : BOOL;
END_VAR
VAR_INPUT CONSTANT
T_LONG : TIME := t#500ms;
END_VAR
VAR
Timer : TP;
cnt : INT;
last : BOOL;
END_VAR
(* when input goes high start the timer to decode pulses *)
timer(in := IN, PT := T_LONG);
single := FALSE;
double := FALSE;
IF timer.Q THEN
(* decode pulses while the timer is active *)
IF NOT in AND last THEN cnt := cnt + 1; END_IF;
ELSE
CASE cnt OF
1 : single := TRUE;
2 : double := TRUE;
END_CASE;
cnt := 0;
END_IF;
last := in;
TP_LONG := NOT timer.Q AND (NOT LONG) AND IN;
LONG := NOT timer.Q AND in;
Zuletzt bearbeitet: