Skip to main content

SA0170: 出力変数のアドレスは使用できません

出力変数のアドレスが含まれるコードの位置を検出します (VAR_OUTPUTVAR_IN_OUTファンクションブロックの)を使用します。

理由: ファンクション ブロック出力のアドレスを次の方法で使用することは許可されていません。

  • 経由 ADR-オペレーター

  • によって REF=

例外: 出力変数が同じ関数ブロック内で使用されている場合、エラーは報告されません。

重要性:中

128.

ファンクションブロック FB1 持っています VAR_OUTPUT 変数 iOutVal : INT;

別のブロックで次のアクセスを行うと、エラーSA0170が生成されます。

//FB1_inst is of type FB1
addr1 := ADR(FB1_inst.iOutVal);    //SA0170
refINT REF= FB1_inst.iOutVal;    //SA0179

機能ブロック内での後続のアクセス FB1 また、エラーが発生します。

//other is a POINTER TO FB1
ptr := ADR(other^.iOutVal);    //SA0170

以下は、機能ブロック内で直接アクセスします。 FB1 エラーは発生しません:

//iInputVal is a VAR_INPUT of FB1
iOutVal := iInputVal; 
//ptr is a POINTER TO INT
ptr := ADR(THIS^.iOutVal); 
ptr := ADR(iOutVal);

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

  • sa_icon_message.png SA0170: 出力変数のアドレスを受け取るべきではありません