FT_PT1

Begonnen von hugo, 01. Januar 2007, 13:21:12

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 6 Gäste betrachten dieses Thema.

hugo

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.

*)