• 【Codesys】两种滤波的实现,那种更快?


    方法1
    (* 方法1 *)
    (*---------------声明部分----------------------*)
    FUNCTION_BLOCK Filter_ActLoad
    VAR_INPUT
    Act_B:REAL;
    END_VAR
    VAR_OUTPUT
    Act_F:REAL;
    END_VAR
    VAR
    arr:ARRAY[0..6] OF REAL := 7(0);
    MaxValue,MinValue:REAL := 0;
    i:INT;
    END_VAR

    (*---------------实现部分----------------------*)

    Arr[6] := Arr[5];
    Arr[5] := Arr[4];
    Arr[4] := Arr[3];
    Arr[3] := Arr[2];
    Arr[2] := Arr[1];
    Arr[1] := Arr[0];
    Arr[0] := Act_B;

    MaxValue :=Arr[0];
    MinValue :=Arr[0];

    FOR i:=0 TO 6 DO
    IF arr[i] > MaxValue THEN
    MaxValue := arr[i];
    END_IF

    IF arr[i] < MinValue THEN
    MinValue := arr[i];
    END_IF
    END_FOR

    Act_F := (Arr[0]+Arr[1]+Arr[2]+Arr[3]+Arr[4]+Arr[5]+Arr[6]-MaxValue-MinValue)/5.0;
    方法2
    (* 方法2 *)
    (*---------------声明部分----------------------*)
    FUNCTION_BLOCK Filter_ActLoad_
    VAR_INPUT
    Act_B:REAL;
    END_VAR
    VAR_OUTPUT
    Act_F:REAL;
    END_VAR
    VAR
    A1,A2,A3,A4,A5,A6,A7:REAL := 0;
    MaxValue,MinValue:REAL;
    END_VAR

    (*---------------实现部分----------------------*)

    Arr[6] := Arr[5];
    Arr[5] := Arr[4];
    Arr[4] := Arr[3];
    Arr[3] := Arr[2];
    Arr[2] := Arr[1];
    Arr[1] := Arr[0];
    Arr[0] := Act_B;

    MaxValue :=Arr[0];
    MinValue :=Arr[0];

    FOR i:=0 TO 6 DO
    IF arr[i] > MaxValue THEN
    MaxValue := arr[i];
    END_IF

    IF arr[i] < MinValue THEN
    MinValue := arr[i];
    END_IF
    END_FOR

    Act_F := (Arr[0]+Arr[1]+Arr[2]+Arr[3]+Arr[4]+Arr[5]+Arr[6]-MaxValue-MinValue)/5.0;



    没事,别怕,这是签名→→┃ 青山幽谷笛声扬,白鹤振羽任翱翔。往事前尘随风逝,携手云峰隐仙乡。 ┃
  • 相关阅读:
    HDU 1232 畅通工程(并查集分析)
    NYOJ 2 括号配对问题
    HDU 1205 吃糖果
    HDU 1201 18岁生日
    [ACM] hdu Find a way
    [ACM] hdu Ignatius and the Princess I

    pongo(英雄会)编程挑战: 人人code,整数取反
    [ACM] POJ 1852 Ants
    波司登杯2013微软office应用创意大赛烟台大学校园赛参赛历程
  • 原文地址:https://www.cnblogs.com/dabiao/p/2389940.html
Copyright © 2020-2023  润新知