搬家第三天-中控软件做班累积和日累计功能

中控DCS有时候需要对一些关键的计量做累积功能,由于计算的算法都是一样的,因此可以做成自定义功能块,假设一天三个班,每个班需要做累积,每天也需要做累积,用ST语句写自定义功能快如下:

FUNCTION_BLOCK SUM

VAR_INPUT

    IN1:SFLOAT;

    IN2:STRUCTACCUM;

    IN6:FLOAT;

END_VAR

 

VAR_OUTPUT

    SUM:STRUCTACCUM;

    OUT2:INT;

    OUT3:INT;

    OUT4:INT;

    SUM8:STRUCACCUM;

    SUM16:STRUCACCUM;

    SUM0:STRUCACCUM;

END_VAR

 

VAR

     IN3:INT;

     IN4:INT;

     IN5:INT;

END_VAR

 

IN3=SECOND();

IN4=MINUTE();

IN5:HOUR();

OUT2:SECOND();

OUT3:MINUTE();

OUT4:HOUR();

SUM=TOTAL_ACCUM(IN2,IN1);

 

IF IN5=23 AND IN4=59 AND IN3=50 THEN

   SUM0=SUB_ACCUM(SUM,SUM16);

   SUM0=SUB_ACCUM(SUM0,SUM8);

END_IF;

 

IF IN5=23 AND IN4=59 AND IN3=54 THEN

   SUM=SUB_ACCUM(SUM,SUM);

END_IF;

 

IF IN5=7 AND IN4=59 AND IN3=50 THEN

   SUM8=SUM;   

END_IF;

 

IF IN5=15 AND IN4=59 AND IN3=50 THEN

   SUM16=SUB_ACCUM(SUM,SUM8);

END_IF;

END_FUNCTION_BLOCK

 

保存之后就可以反复调用这个块了。

posted @ 2021-01-31 11:35  来自金沙江的小鱼  阅读(563)  评论(0编辑  收藏  举报