以下是一个卷取平均转速的滤波算法,通常我做的是去除最小和最大值取平均值来计算滤波值,为什么下面会用给定转速和滤波值的差值累计然后再除以32来计算滤波转速呢?谢谢!
#dif_n := ABS(#NRef)-#AVE_N;//转速滤波,SUM_N=SUM_N+DIF_N-AVE_N,AVE_N=SUM_N/32,32为采样次数
#dif_t := #TRef-#AVE_T0;//力矩滤波,SUM_T0=SUM_T0+DIF_T-AVE_T0,AVE_T0=SUM_T0/32,32为采样次数
IF ABS(#dif_n) >= 100.0 THEN // 如果速度输入值有大改动,立即跟随这一改动。
#SUM_N := ABS(#NRef)*32.0;
#dif_n := 0.0;
END_IF;
IF ABS(#dif_t) >= 100.0 THEN // 如果力矩输入值有大改动,立即跟随这一改动。
#SUM_T0 :=#TRef*32.0;
#dif_t :=0.0;
END_IF;
//计算总和并输出转速\力矩平均值。
#SUM_N:=#dif_n+#SUM_N;//
#AVE_N:=#SUM_N/32.0;//#AVE_N=(ABS(#NRef0)+ABS(#NRef1)+ABS(#NRef31)-#AVE_N0-#AVE_N1-#AVE_N31)/32
#SUM_T0:=#dif_t+#SUM_T0;
#AVE_T0:=#SUM_T0/32.0;
#COUNT := #COUNT + 1;
IF #COUNT<32 THEN
RETURN;
END_IF;
#COUNT:=0;//计数复位