我有一个输入变量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