我有一个函数块A,它有一个变量output (在FUNCTION_BLOCK A方法中定义)和这个FB_init方法:
METHOD FB_init : BOOL
VAR_INPUT
bInitRetains : BOOL; // if TRUE, the retain variables are initialized (warm start / cold start)
bInCopyCode : BOOL; // if TRUE, the instance afterwards gets moved into the copy code (online change)
END_VAR
VAR_OUTPUT
output : REAL := 0;
END_VAR
THIS^.output := output;当我按如下方式调用此构造函数时:
a : A(output => outputLocal);Identifier 'output' not defined。但是我确实在构造函数方法中定义了这个参数。当我试图编译这个项目时,我得到了另一个错误:No matching FB_init method found for instantiation of Alocaloutput链接到FB output ( FB A)。发布于 2021-11-24 19:15:53
通过在方法的VAR_OUTPUT部分中声明输出,可以使其成为方法的本地输出变量,而不是输入变量。
您需要在FunctionBlock中声明一个FunctionBlock,在构造函数中声明一个VAR_INPUT,并将输入变量从构造函数分配给REF=的FunctionBlock-probably的输出变量,否则只会得到值。
发布于 2021-02-13 07:03:16
尽管技术上可以在FB_Init-method中获得输出参数,但是您无法从FB_Init调用中获取它们。我的猜测是,它与对象是如何在时间上被构造有关的,因此它是没有意义的。
更重要的问题是:你在努力实现什么?在上面的示例中,您似乎试图从FB_Init调用访问参数输出,我假设它是整个函数块的输出。您似乎是从方法调用的输出写入函数块的输出,这没有任何意义。
如果您只想将参数作为函数块的输出传递,那么在这种情况下为什么不将其作为输入参数提供呢?(通过复制或引用)?
https://stackoverflow.com/questions/66180096
复制相似问题