| 作者 | 主题 |
|---|---|
|
tangying 侠士 经验值:1874 发帖数:81 精华帖:1 |
楼主
主题:用SCL写了一个中位值滤波的功能块
FUNCTION_BLOCK FB1000
CONST Length :=21; //数据记录宽度(为奇数) END_CONST VAR_INPUT //定义输入参数 Realtime_Value :REAL; //实时采样值 END_VAR VAR_OUTPUT //定义输出参数 Filted_Value :REAL; //滤波后采样值 END_VAR VAR_TEMP //定义临时变量 Loop_Count :INT; //循环计数 Squence_Count :INT; //排序计数 Temp_Data :REAL; //临时数据 END_VAR VAR //定义静态变量 Data_Store :ARRAY[1..Length] OF REAL; //数据记录区 END_VAR BEGIN FOR Loop_Count := 1 TO (Length - 1) BY 1 DO Data_Store[Loop_Count] := Realtime_Value; FOR Squence_Count := 1 TO (Length - Loop_Count) BY 1 DO IF Data_Store[Squence_Count] > Data_Store[Squence_Count + 1] THEN Temp_Data := Data_Store[Squence_Count]; Data_Store[Squence_Count] := Data_Store[Squence_Count + 1]; Data_Store[Squence_Count + 1] := Temp_Data; END_IF; END_FOR; END_FOR; Filted_Value := Data_Store[(Length - 1) / 2]; END_FUNCTION_BLOCK |