zur regelungstechnik ist vielfach ein totzeitglied noetig, welches aber in software nur unzureichend implememtiert werden kann da es nur endliche samples eines eingangs innerhalb gegebener zeit machen kann.
da je nach anwendung unterschiedliche aufloesung (anzahl der samples) nötig sind haben wir uns entschlossen mehrere totzeitglieder (verzoegerungsglied) mit unterschiedlicher auflösung zu programmieren.
FT_TN8, FT_TN16 und FT_TN64
anbei der code fuer das FT_TN8
FUNCTION_BLOCK FT_TN8
VAR_INPUT
in : REAL;
T : TIME;
END_VAR
VAR_OUTPUT
out : REAL;
END_VAR
VAR
length : INT := 8;
X : ARRAY[0..7] OF REAL;
cnt : INT;
last : TIME;
tx: TIME;
init: BOOL;
END_VAR
(*
version 1.0 1 Jan 2007
programmer hugo
tested by tobias
FT_TN8 is delay function, it will delay a signal by a specified time : T and will store 8 values of in before they are put thru to out.
if higher resolution is needed, pls use FT_TN16 or FT_TN64 instead.
*)
tx := TIME();
IF NOT init THEN
x[cnt] := in;
init := TRUE;
last := tx;
ELSIF tx - last >= T / length THEN
IF cnt = length - 1 THEN cnt := 0; ELSE cnt := cnt + 1; END_IF;
Out := X[cnt];
x[cnt] := in;
last := tx;
END_IF;