如何使功能块方法的输入可选

  • 本文关键字:何使 功能块 方法 twincat
  • 更新时间 :
  • 英文 :


在调用函数块的方法时,是否可以使某些输入变量可选?如果我在没有为所有输入变量赋值的情况下调用fbA.methA((,TwinCAT会抛出一个错误:";函数methA正好需要"x"个输入"有时一些输入是不必要或不相关的,但到目前为止,我不得不为这些输入分配伪值,以使代码得以编译。

我认为这是不可能的。您可以创建额外的方法,这些方法都调用一个基方法。

例如:

FUNCTION_BLOCK Multiplier
METHOD Multiply : REAL
VAR_INPUT
number1 : REAL;
number2 : REAL;
END_VAR
METHOD MultiplyByTwo : REAL
VAR_INPUT
number : REAL;
END_VAR
MultiplyByTwo := Multiply(2, number);

这样,您还可以减少方法的输入数量,从而使测试和使用更容易。

您也可以在中传递参数时对其进行筛选(仍然需要参数,但它们没有意义,也就是总是传递"0"(

FUNCTION_BLOCK CAT
METHOD DECIBELS: REAL
VAR_INPUT
MEOW, PURR: BOOL;
END_VAR
// body
DECIBELS := 0.0;
IF MEOW <> 0
DECIBELS := DECIBELS + 10.0;
END_IF;
IF PURR <> 0
DECIBELS := DECIBELS + 5.0;
END_IF;
END_METHOD
END_FUNCTION_BLOCK

你可以调用这样的:

PROGRAM MAIN
VAR
C: CAT;
RESULT: ARRAY [1..4] OF REAL;
END_VAR
// body
RESULT[1] := C.DECIBELS(TRUE, TRUE); // will return 15.0
RESULT[2] := C.DECIBELS(TRUE, 0); // will return 10.0
RESULT[3] := C.DECIBELS(0, TRUE); // will return 5.0
RESULT[4] := C.DECIBELS(0, 0); // will return 0.0
END_PROGRAM

希望这能帮助

最新更新