回复:分享一段小程序30秒平均值

妥妥哥

  • 帖子

    99
  • 精华

    4
  • 被关注

    41

论坛等级:侠士

注册时间:2013-01-09

黄金 黄金 如何晋级?

发布于 2017-10-17 19:40:56

29楼

FUNCTION_BLOCK AverageTi

VAR_INPUT

    Hold   :BOOL:=false;//

    V      :REAL:=0.0;//输入值

    Ti     :REAL:=1.0;//时间段,1~10分钟

    Sampletime{S7_link:='false';S7_visible:='false';S7_sampletime:='true'}:REAL:=1.0;//采样时间

END_VAR

VAR_OUTPUT

    U:REAL;//平均值输出

END_VAR

VAR

    sr_count:REAL;

    sr_value:ARRAY[0..599] OF REAL;

    sr_sum:REAL;

END_VAR

VAR_TEMP

    pr_Ti:REAL;

    pr_count:REAL;

    pi:INT;

END_VAR    

BEGIN

    pr_Ti := LIMIT(MN:=1.0,MX:=10.0,IN:=Ti);

    pr_count := pr_Ti*60.0/Sampletime;

    IF sr_count <= pr_count -1 THEN

    sr_count := sr_count+1;

    END_IF;

    IF Hold THEN

        U := V;

        FOR pi := 0 TO 599 DO

        sr_value[pi] := 0.0;

        END_FOR;

        sr_count:=0.0;

    ELSE

        FOR pi := REAL_TO_INT(pr_count)-2 TO 0 BY -1 DO

        sr_value[pi+1] := sr_value[pi];

        END_FOR;

        sr_value[0] := V;

        FOR pi := 0 TO REAL_TO_INT(pr_count)-1 DO

        sr_sum := sr_sum + sr_value[pi];

        END_FOR;

        U := sr_sum/sr_count;

        sr_sum := 0.0;

    END_IF;    

END_FUNCTION_BLOCK  

CFC OB32 运行

取最近的1~10分钟数据平均值

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10815条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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