|
//
// 加权平均滤波 Weighted Mean Filter
// 对信号进行连续多次采样,对采样值进行加权平均,一般采样值越新,权重越高
// 适用:抑制周期性干扰和随机干扰,且实时性好
//
#T_On(IN := NOT #T_Off.Q,
PT := #Period / 2);
#T_Off(IN := #T_On.Q,
PT := #Period / 2);
#Trigger(CLK := #T_On.Q); // 采样触发,周期 = Period
IF #Trigger.Q THEN
IF #Index <= 0 OR #Index > #Qty THEN
#Index := 1;
END_IF;
IF #Index > 0 AND #Index <= #Qty THEN
#Buff[#Index] := #Sample_In;
#Index := #Index + 1;
END_IF;
IF #Index > #Qty THEN // 加权平均
FOR #j := 1 TO #Qty DO
#sum_sample := #sum_sample + #Buff[#j] * #COE[#j];
#sum_coe := #sum_coe + #COE[#j];
END_FOR;
#Filter_Out := #sum_sample/#sum_coe;
#sum_sample := 0.0;
#sum_coe := 0;
#Index := 0;
END_IF;
END_IF;
|
|