PLC tarafından okunan analog değer bilgileri çoğu zaman etraftaki gürültülerden dolayı ne kadar topraklama yapsakta stabil olmayabilir, işte bu değerleri stabil hale getirmek için yazılımla yapılan alçak geçiren filtre örneği:
Tarafımca denenmiştir, örnekleme zamanı (OB35 gibi) ve smooth time ile oynayarak, baya güzel sabitliyor oynayan analog değerleri,
Kod:
FUNCTION_BLOCK FB_LowPassFilter
VAR_INPUT
rActualValue : REAL ; // measured value
rSamplingTime : REAL ; // Sampling time ms
rSmoothingTime : REAL ; // Smooth time constant ms
END_VAR
VAR_OUTPUT
rFilteredActualValue : REAL ;
END_VAR
VAR
rActualValue_Old : REAL ;
rFilteredValue_Old : REAL ;
rt_alpha : REAL ;
END_VAR
rt_alpha := 2.0 * rSmoothingTime / rSamplingTime ;
rFilteredActualValue := ( rFilteredValue_Old * (rt_alpha-1.0)
+ rActualValue
+ rActualValue_Old
) / ( 1.0 + rt_alpha ) ;
rActualValue_Old := rActualValue ;
rFilteredValue_Old := rFilteredActualValue ;
END_FUNCTION_BLOCK
Daha fazla bilgi:
http://en.wikipedia.org/wiki/Low-pass_filter