我要实现用一个采样值来动态改变设定值的功能,为此需要查表。在FB中定义了一个二维数组用于存放检索值和对应的设定值。在OB35中调用执行,采样值在不超出检索范围时执行都正常,一旦采样值超出检索范围,CPU就STOP。查诊断信息,OB35的扫描时间最长达到3.6秒。不过分析程序,在超出检索范围时能跳出FB,应该不会造成死循环。什么原因呢?请高人指教!
FUNCTION_BLOCK FB 12
TITLE =
VERSION : 0.1
VAR_INPUT
IN : REAL ;
PNT : WORD ;
END_VAR
VAR_OUTPUT
PV : REAL ;
END_VAR
VAR
buff : ARRAY [1 .. 2, 1 .. 50 ] OF REAL ;
END_VAR
VAR_TEMP
pnt_numb : WORD ;
i : WORD ;
END_VAR
BEGIN
NETWORK
TITLE =
LAR1 P#48.0;
L #PNT;
L 1;
-I ;
T #pnt_numb;
m1: L #pnt_numb;
T #i;
L #IN;
L DID [AR1,P#0.0];
<>R ;
JCB _01a;
L DID [AR1,P#200.0];
T #PV;
JCB _01b;
_01a: +AR1 P#4.0;
L #i;
LOOP m1;
_01b: SAVE ;
BEU ;
END_FUNCTION_BLOCK