搬家第三天-中控软件做班累积和日累计功能
中控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
保存之后就可以反复调用这个块了。