回复:求教STL或者SCL做一个实时连续小时平均数据

已锁定

askab

  • 帖子

    409
  • 精华

    5
  • 被关注

    34

论坛等级:侠圣

注册时间:2005-07-24

黄金 黄金 如何晋级?

发布于 2021-10-10 11:05:02

8楼

FUNCTION_BLOCK FB44


CONST

load_cout:= 20;                     //本例采集10个

END_CONST


VAR_INPUT

WriteReq:BOOL;                      // 写请求  每10秒发一次 写入请求

New_value:INT:=0;                   // 需要写入的数据

reset:BOOL:=false;                 // 复位

END_VAR


VAR_IN_OUT

Last_WriteReq:BOOL;  

END_VAR


VAR_OUTPUT

average_out:REAL;   // 平均值输出

max_data:REAL;      // 分拣出最大值

min_data:REAL;      // 分拣出最小值

sum_data:REAL;      // 总和值

number:INT;         // 计数值

END_VAR


VAR

WriteReq_P:BOOL;                      // 写请求上升沿    

Index   :INT;                       // 压入数据的个数记录    

stop_write:BOOL;                    // 停止写入

store:ARRAY[0..load_cout] OF REAL;    //存储数据组

num:INT;

I:INT;

END_VAR


WriteReq_P:= WriteReq AND NOT Last_WriteReq;

Last_WriteReq:= WriteReq;

IF Index >= load_cout THEN

    stop_write:= true;

ELSE

    stop_write:= false;

END_IF;

IF NOT stop_write THEN

                  IF WriteReq_P THEN

                                store[Index]:= New_value;

                                Index := Index + 1;

                  END_IF;

 END_IF;

 

 //以上为数据周期采集并存储。

 min_data:= store[0];     ////每次运行默认第一个为最小值,开始进行比较

    FOR I:= 0 TO load_cout BY 1 DO

        IF store[I] <= min_data THEN  min_data:= store[I]; END_IF;  //求最小值

        IF store[I] >= max_data THEN  max_data:= store[I]; END_IF;  //求最大值

        IF I=0 THEN sum_data:= store[1]; 

        ELSE

            sum_data:= sum_data + store[I];

        END_IF;

        IF Index =   load_cout THEN

            average_out:=  sum_data / INT_TO_REAL(Index);

        END_IF;

        IF reset  THEN

            Index:=0;

            store[I]:=0;

            sum_data:=0.0;

            min_data:=0.0;

            max_data:=0.0;

            average_out:=0.0;

            END_IF;   

    END_FOR;

   number:= Index;

END_FUNCTION_BLOCK


DATA_BLOCK DB44  FB44

//

// Block Comment...

//

BEGIN


END_DATA_BLOCK



大家同行,you ok ? me !
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54793条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。