入出力アドレスの取得(オフセット付き)
ファンクションの入出力変数のオフセット付きアドレスを取得します。
入力
このピンは、基本ファンクションの入出力に接続してください。有効なデータ型はINT型、WORD型です。
入出力変数が割り付けられたメモリエリアの先頭アドレス(16ビットオフセット付き)が取得されます。
16ビットオフセットアドレスを取得する入出力変数を指定します。
出力
最終アドレス(16ビット)を取得する入出力変数を指定します。
入出力変数Varの内容が格納されているアドレス(16ビット)に、Offsの値を加算し、Adrに格納します。この入出力は、ファンクションの入出力(16ビット)に直接接続してください。このファンクションをSTRING型のデータに対して使用する場合は、ヘッダ部を除く文字列データに対してのみ使用することができます。
このファンクションは、LDエディタとFBDエディタでのみ使用することができます。「命令」ペインで「入力命令」または「出力命令」を使って、必要な命令をプログラミングウィンドウに挿入してください。
グローバル変数リストでは、プロジェクト内のすべてのPOUからアクセスできる変数を宣言します。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR_EXTERNAL
ReceiveBuffer: ARRAY [0..15] OF WORD:=[16(0)];
END_VAR
VAR
Receive: BOOL:=FALSE;
ReceiveString: STRING[30]:='';
END_VAR
VAR CONSTANT
StringTotLenPos: INT:=0;
StringActLenPos: INT:=1;
StringHeaderSize: INT:=2;
END_VAR
VAR
@'': @'';
END_VAR
ReceiveがONになり、受信完了文字が受信されると(R9038がONになると)、シリアルインターフェース経由で受信されたバッファReceiveBufferの文字が、文字列ReceiveStringにコピーされます。受信文字数は、ReceiveBuffer[0]に格納され、この後に受信文字列が続きます。従って、この位置からReceiveBufferを文字列の該当エリアに直接コピーすることができます。(STRING型参照)。バッファReceiveBufferの位置は、システムレジスタ 417と418の設定に従って、グローバル変数リストで指定しておく必要があります。(詳しくは、CPU用受信バッファの設定参照)。
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 10 ;
NETWORK_BODY
B(B_COIL,,sys_bIsComPort1ReceptionDone,7,1,9,3,);
B(B_CONTACT,,Receive,16,1,18,3,);
B(B_F,F10_BKMV!,Instance,20,0,28,5,,?DEN?Ds1_Start?Ds2_End?AENO?Cd_Start);
B(B_VARIN,,ReceiveBuffer[0],18,2,20,4,);
B(B_VARIN,,ReceiveBuffer[15],18,3,20,5,);
B(B_F,Adr_Of_VarOffs_I!,Instance,20,6,29,10,,?D@'Var'?DOffs?CAdr);
B(B_VARIN,,StringActLenPos,18,8,20,10,);
B(B_VAROUT,,ReceiveString,29,7,31,9,);
L(1,2,7,2);
L(9,2,16,2);
L(18,2,20,2);
L(28,3,28,6);
L(20,6,28,6);
L(20,6,20,8);
L(1,0,1,10);
END_NETWORK_BODY
END_NET_WORK
END_BODY