一. 基本方法
定时采集模拟量,将这个值放在一个数组里面。 每次定时接通,把新采集的值放在数组里的下一个变量里。
二. 程序
// 定时 #Timer(IN:=NOT #Timer_Q, PT:=t#1s, Q=>#Timer_Q); IF #Timer_Q THEN #Ai_arr[#Count] := #Ai_in; #Count := #Count + 1; END_IF; // 如果数值填充满了 IF #Count >= 10 THEN // 初始化数值 #Max_V := #Ai_arr[0]; #Min_V := #Ai_arr[0]; #Sum_V := 0; FOR #i := 0 TO 9 DO // 最大值 IF #Ai_arr[#i] > #Max_V THEN #Max_V := #Ai_arr[#i]; END_IF; // 最小值 IF #Ai_arr[#i] < #Min_V THEN #Min_V := #Ai_arr[#i]; END_IF; // 累加 #Sum_V := #Sum_V + INT_TO_DINT(#Ai_arr[#i]); END_FOR; // 求平均值 // 累加值是dint, 减去int, 结果为dint. #Aver := DINT_TO_REAL(#Sum_V - #Max_V - #Min_V) / 8.0; // count 归0 #Count := 0; END_IF;