【问题标题】:Syntax for Getting Ouput Variable in Structured Text在结构化文本中获取输出变量的语法
【发布时间】:2018-11-09 12:23:06
【问题描述】:

我正在尝试使用具有以下接口的库定义函数(CCaux for Cross Control Products):

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

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

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 作为上下文。

【问题讨论】:

    标签: plc st


    【解决方案1】:

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

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

    以下代码应返回“照度值”:

     CCAux.Lightsensor_GetIlluminance(value => illumen);
    

    【讨论】:

      【解决方案2】:

      如果你有这样的输出变量

      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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-02
        • 1970-01-01
        • 2014-07-31
        • 2020-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多