Skip to main content

SA0014:インスタンスへの割り当て

機能ブロックインスタンスへの割り当てを決定します。ポインタ変数または参照変数を持つインスタンスの場合、これらの割り当てにはリスクが伴う可能性があります。

理由:これはパフォーマンスの警告です。インスタンスが別のインスタンスに割り当てられている場合、すべての要素とサブ要素が1つのインスタンスから別のインスタンスにコピーされます。データへのポインタもコピーされますが、参照データはコピーされないため、ターゲットインスタンスとソースインスタンスには、割り当て後に同じデータが含まれます。インスタンスのサイズによっては、このような割り当てに時間がかかる場合があります。たとえば、インスタンスを処理のために関数に渡す場合は、インスタンスへのポインタを渡す方がはるかに効率的です。

あるインスタンスから別のインスタンスに値を選択的にコピーする場合は、コピーメソッドが便利です:

inst_First.Copy_From(inst_Second)

重要性:中

27.
PROGRAM PLC_PRG
VAR
    inst_First : My_FB;
    inst_Second : My_FB;
END_VAR
inst_First();
inst_Second := inst_First;  // SA0014

での出力 メッセージ ビュー:

  • sa_icon_message.png SA0014: インスタンスの割り当て