Код:
FUNCTION_BLOCK EMA (* Фильтр экспоненциальное скользящее среднее *)
VAR_INPUT
input : REAL; (* // Вход *)
END_VAR
VAR_OUTPUT
output : REAL; (* // Выход *)
END_VAR
VAR
reset : BOOL; (* // Сброс фильтра *)
EMAt : REAL;
first_run : BOOL := TRUE;
coeff : REAL:=0.001; (* // Коэффициент от 1(MIN) до 0(MAX) *)
END_VAR
IF reset OR first_run THEN
EMAt := input;
first_run := FALSE;
ELSE
EMAt := coeff * input +(1 - coeff)*EMAt;
END_IF
output := EMAt ;
end_function_block