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