Hallo,
ich hätte das jetzt auf die schnelle (für CodeSys2) mal so hinprogrammiert:
Deklaration:
FUNCTION_BLOCK tendenz
VAR_INPUT
input: INT;
Totzeit: TIME;
END_VAR
VAR_OUTPUT
steigend: BOOL;
konstant: BOOL;
fallend: BOOL;
END_VAR
VAR
input_old: INT;
Last_time: TIME;
END_VAR
Impelentation:
(* Abwarten der Totzeit *)
IF Last_time + Totzeit < TIME() THEN
Last_time := TIME();
IF input = input_old THEN
steigend := FALSE;
konstant := TRUE;
fallend := FALSE;
ELSIF input < input_old THEN
steigend := FALSE;
konstant := FALSE;
fallend := TRUE;
ELSE
steigend := TRUE;
konstant := FALSE;
fallend := FALSE;
END_IF
input_old := input;
END_IF
Gruß
Alex