Hinweis: Aus meiner praktischen Erfahrung über die Jahre, setze ich mittlerweile nur noch den untenstehenden FB Tiefpass ein.
Grund ist der einfache Code und die nicht mehr benötigte Zykluszeit.
Ein weiteres Beispiel aus der eigenen Sammlung von nützlichen Bausteinen.
Ein PT1-Filter, universell einsetzbar in der Analogwertverarbeitung.
Hinweis: Bitte die Zeitkonstante nur so groß wie nötig wählen, um ungewollte Signalverzögerungen zu vermeiden.
FUNCTION_BLOCK PT1_Filter
(*
##############################################################
Programmbeschreibung:
einfacher PT1 Filter zum glätten von verrauschten Signalen
##############################################################
Änderungsindex
Name:TL Version:0.1 Datum: 06.06.2012 Grund: neu
##############################################################
*)
VAR_INPUT
EN: BOOL; (*x Filter EIN*)
IN: REAL; (*r Signaleingang*)
TC: REAL := 1.0; (*r Zeitkonstante in s*)
Cycle: INT := 10; (*i Zykluszeit in ms*)
END_VAR
VAR_OUTPUT
OUT: REAL; (*r Signalausgang*)
END_VAR
VAR
K: REAL; (*K-Faktor*)
Cy: REAL; (*Zykluszeit in real*)
END_VAR
################################################
Cy:= INT_TO_REAL(Cycle);
K:= Cy / (Cy + 1000 * TC); (*Zeitfaktor berechnen*)
IF EN THEN
OUT:= OUT+K*(IN-OUT);; (*Filtern*)
ELSE
OUT:= IN; (*Bei Filter AUS, Signal durchreichen*)
END_IF
Have a lot of fun!