在结构化文本中获取输出变量的语法

Syntax for Getting Ouput Variable in Structured Text

我正在尝试使用具有以下接口的库定义函数(交叉控制产品的 CCAux):

FUNCTION Lightsensor_GetIlluminance : eErr (* return error status. 0 ERR_SUCCESS, otherwise error code.*)
VAR_OUTPUT
    value: UINT;(*Illuminace value (Lux)*)
END_VAR

我似乎找不到从输出变量中获取 "value" 的正确语法。这是我的程序中的内容:

VAR
    illumen : UINT;
END_VAR

这里我要illumen设置为Lightsensor_GetIlluminace的输出变量。以下不起作用,因为它将变量设置为 eErr:

illumen := CCAux.Lightsensor_GetIlluminance();

并且:

illumen := CCAux.Lightsensor_GetIlluminance.value;

没有用,因为我收到错误 'value' is no input of 'Lightsensor_GetIlluminance'

并且:

illumen := CCAux.Lightsensor_GetIlluminance(value := illumen);

失败,因为 Lightsensor_GetIlluminance take exactly '0' inputs

我正在使用 CoDeSys 作为上下文。

以下是具有附加输出的函数的语法:

<function> (<function output variable1> => <output variable 1>, <function output variable n> => <output variable n>)

下面的代码应该return "Illuminace value":

 CCAux.Lightsensor_GetIlluminance(value => illumen);

如果你有这样的输出变量

FUNCTION Lightsensor_GetIlluminance : eErr 
VAR_OUTPUT
    value: UINT;
END_VAR

然后在代码中你可以像这样获取额外的变量。

eErr := Lightsensor_GetIlluminance(value => illumen);

或者,如果您创建 FUNCTION_BLOCK,那么除了上述方法之外,您还可以使用类似的方法。

FUNCTION_BLOCK Lightsensor_GetIlluminance 
VAR_OUTPUT
    value: UINT;
    error : eErr;
END_VAR

并且在代码中

Lightsensor_GetIlluminance();
IF NOT Lightsensor_GetIlluminance.error THEN
    illumen := Lightsensor_GetIlluminance.value;
END_IF;

因此您可以通过 . 访问变量,但您必须预先调用 FB。