die version 1.0 des pt1 gliedes weist fehler auf bei sehr kleinen t werten.
die version 1.1 korrigiert diese fehler:
FUNCTION_BLOCK FT_PT1
VAR_INPUT
in : REAL;
T : TIME;
END_VAR
VAR_OUTPUT
out : REAL;
END_VAR
VAR
last : TIME;
tx: TIME;
init: BOOL;
END_VAR
(*
version 1.1 1 jan 2007
programmer hugo
tested by tobias
FT_PT1 is an low pass filter with a programmable time T.
*)
tx := TIME();
IF NOT init THEN
last := tx;
init := TRUE;
ELSIF T = t#0s THEN
out := in;
ELSE
out := out + (in - out) * TIME_TO_REAL(Tx - last) / TIME_TO_REAL(T);
IF out > in THEN out := in; END_IF;
END_IF;
last := tx;
(*
hm 1.1.2007 rev 1.1
corrected error while startup value was not correct
for very small time values real output would run out of range.
*)