0

我有一个输入变量c_timTransmissionRate,通常使用持久变量列表进行初始化。然后,功能块中持久变量列表的默认值TxRaw被实例化功能块“TxDbc”覆盖。这又是持久变量列表本身中特定于应用程序的覆盖。

在少数情况下,值c_timTransmissionRate由实例化功能块TxTsc1在运行时动态提供。

我的问题是我目前总是TIME#0ms在调试器中看到原始值,而不是持久变量列表中给出的值。

我当前代码的摘录:

FUNCTION_BLOCK TxRaw
 VAR_INPUT PERSISTENT CONSTANT
  c_timTransmissionRate : TIME := T#0ms;
 END_VAR
  (* instructions *)
END_FUNCTION_BLOCK

FUNCTION_BLOCK Tx
VAR
 tx : TxRaw;
END_VAR
  (* instructions *)
 tx();
  (* instructions *)
END_FUNCTION_BLOCK

FUNCTION_BLOCK TxTsc1 EXTENDS Tx
  (* instructions *)
  tx.c_timTransmissionRate := PI()*THUMB();
  SUPER^();
END_FUNCTION_BLOCK

FUNCTION BLOCK TxDbc EXTENDS Tx
VAR
 tx : TX := (c_timTransmissionRate := T#20ms);
END_VAR
  (* instructions *)
  SUPER^();
END_FUNCTION_BLOCK
4

0 回答 0