项目中有80个一模一样的对象,需要使用FB10来进行控制。用LAD或者STL编程的话就要调用FB10 80次,用多重背景数据块放在同一个FB里。但是我这80个FB10需要进行分组,不同条件给不同的输入参数。于是我就想到了用SCL做循环。
SCL的手册中有如下这个例子:
"TEST"是FB10的符号名,"FINALVAL"和"IQ1"是FB10的两个输入形参,"CONTROL"是输出形参。
FUNCTION_BLOCK CALL
VAR
// Local instance declaration
TEST_L : TEST ;
VARIABLE1 : REAL ;
RESULT : BOOL ;
END_VAR
BEGIN
// Call local instance:
TEST_L(FINALVAL:= 10, IQ1:= VARIABLE1) ;
RESULT := TEST_L.CONTROL ;
END_FUNCTION_BLOCK
然后我参照SIMOTION ST的编程方式,用了下面一种数组的方式来处理本地背景数据块。
FUNCTION_BLOCK CALL
VAR
// Local instance declaration
TEST_L : ARRAY[0..9] OF TEST ;
VARIABLE1 : REAL ;
RESULT : BOOL ;
END_VAR
BEGIN
// Call local instance:
TEST_L[0](FINALVAL:= 10, IQ1:= VARIABLE1) ;
RESULT := TEST_L[0].CONTROL ;
END_FUNCTION_BLOCK
结果却报错了。在SIMOTION ST编程语言中是支持这样的用法的。
不知道各位对这个问题有什么好的解决方法?