Skip to main content

オペレーター:ADR

演算子は、IEC61131-3規格の拡張です。

ADR 引数の32ビットアドレス(または可能であれば64ビットアドレス)を生成します。このアドレスを製造元の関数に渡すか、プロジェクト内のポインターに割り当てることができます。

構文

VAR
    <address name> : DWORD | LWORD | POINTER TO < basis data type> | __XWORD ;
END_VAR

<address name> := ADR( <variable name> );
FUNCTION_BLOCK FB_Adress
VAR
        piAddress1: POINTER TO INT;
        iVar1 : INT := 5;

        lwAddress2 : LWORD;
        iVar2 : INT := 10;

        xwAddress3 : _XWORD;
        iVar3 : INT;
END_VAR
piAddress1 := ADR(iVar1); // piNumber is assigned to address of iVar1
lwAddress2 := ADR(iVar2); // works for 64 bit run time system
xwAddress3 := ADR(iVar3); // works for 32 bit and 64 bit systems 

重要

と違う CoDeSys V2.3、あなたは使用することができます ADR 関数名、プログラム名、関数ブロック名、およびメソッド名を持つ演算子。したがって、 ADR を置き換えます INDEXOF オペレーター。

関数ポインタを使用する場合、関数ポインタを外部ライブラリに渡すことはできますが、内部から関数ポインタを呼び出すことはできないことに注意してください。 CODESYS。システムコール(ランタイムシステム)を有効にするには、それぞれのオブジェクトプロパティを設定する必要があります(建てる タブ)関数オブジェクト用。

注意

オンライン変更を使用すると、アドレスの内容が変わる可能性があります。結果として、 ポインタ 変数が無効なメモリ領域を指している可能性があります。問題を回避するには、ポインタの値がサイクルごとに更新されることを確認する必要があります。

注意

戻らない Pointer-TO 関数とメソッドの変数を呼び出し元に割り当てるか、グローバル変数に割り当てます。