资源中心有一个标准程序计算总和,感觉是是积分的概念,但是测试了一下没测试出功能来。不知道谁又没有用过这个块?
程序源代码附上
FUNCTION_BLOCK FB 100
VAR_INPUT
VALUE : REAL ; // Measured value per time interval
INTERVAL : TIME ; // Time interval unit of measurement
CYCLE : TIME ; // Sampling time
COM_RST : BOOL ; // Clear accumulated total
END_VAR
VAR_OUTPUT
TOTAL : REAL ; // Accumulated total value
END_VAR
VAR
ACCUM : REAL ; // Accumulated total value (static storage)
END_VAR
VAR_TEMP
tINTERVAL : REAL ; // Temp. time INTERVAL in REAL format
tCYCLE : REAL ; // Temp. CYCLE time in REAL format
END_VAR
BEGIN
NETWORK
TITLE =check for a complete reset
A #COM_RST;
JCN nw2;
L 0.000000e+000;
T #ACCUM;
T #TOTAL;
SET ;
SAVE ;
BEU ;
NETWORK
TITLE =convert INTERVAL and CYCLE to REAL numbers
nw2: NOP 0;
L #INTERVAL;
DTR ;
T #tINTERVAL;
L #CYCLE;
DTR ;
T #tCYCLE;
NETWORK
TITLE =add incremental value to accumulated and total values
L #VALUE;
L #tCYCLE;
*R ;
L #tINTERVAL;
/R ;
这一步为什么要除以INTERVAL; 没大明白?
// now that incremental value is calculated,
// add this to the accumulated value
// and send it to the output TOTAL
L #ACCUM;
+R ;
T #ACCUM;
T #TOTAL;
NETWORK
TITLE =exit
SET ;
SAVE ;
BeU ;
END_FUNCTION_BLOCK
按照字面意思理解,应该到了INTERVAL 时间后,就不会再计算总和了,为什么用PLCSIM测试,最终程序也不会到了 INTERVAL 时间后,就停止计算了。现场测试怎么老是一直累加