EtherNet/IPユニットとのメッセージの交換
このファンクションブロックは、指定した宛先のEtherNet/IPユニットと明示メッセージを交換します。
入力
立ち上がりエッジでデータ交換を開始します。
宛先EtherNet/IPユニットの情報を含む構造体(DUT)
送信データバッファの構造体(DUT)。
データは、FP_ETHERNETIP_DATA_SET命令を使用して送信データバッファに書き込むことができます。
出力
宛先EtherNet/IPユニットとデータ交換中であることを示すフラグ。
命令実行結果の構造体(DUT)。
受信データバッファの構造体(DUT)。
データは、FP_ETHERNETIP_DATA_GETおよびFP_ETHERNETIP_DATA_GET_BYTES命令を使用して受信データバッファから読み出すことができます。
インデックス修飾時にエリアを超えたとき
Ethernetのユニットコンフィグレーションで、EtherNet/IP機能を使用しないとき
命令が割り込みプログラム内で実行された場合。
dutReceiveDataの受信データバッファのサイズが許容範囲(3~253ワード)外の場合。
dutResultの受信データバッファのサイズが3ワード未満の場合。
インデックス修飾時にエリアを超えたとき
Ethernetのユニットコンフィグレーションで、EtherNet/IP機能を使用しないとき
命令が割り込みプログラム内で実行された場合。
dutReceiveDataの受信データバッファのサイズが許容範囲(3~253ワード)外の場合。
dutResultの受信データバッファのサイズが3ワード未満の場合。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。POUヘッダは全プログラム言語で使用できます。
VAR
dutSend: FP_ETHERNETIP_DATA_SEND_DUT;
FP_ETHERNETIP_DATA_EXCHANGE_FB1: FP_ETHERNETIP_DATA_EXCHANGE_FB;
bSend: BOOL:=FALSE;
dutDestination: FP_ETHERNETIP_DATA_DESTINATION_DUT;
dutReceive: FP_ETHERNETIP_DATA_RECEIVE_DUT;
dutResult: FP_ETHERNETIP_DATA_EXCHANGE_RESULT_DUT;
END_VAR
変数 sys_bIsEtherNetIPReady と bSend が TRUEにセットされたとき、ファンクションが実行されます。
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_CONTACT,,sys_bIsEtherNetIPReady,5,2,7,4,);
B(B_CONTACT,,bSend,13,2,15,4,);
B(B_FB,FP_ETHERNETIP_DATA_EXCHANGE_FB!,FP_ETHERNETIP_DATA_EXCHANGE_FB1,21,1,39,6,,?BbSend?BdutDestination?BdutSendData?AbInProgress?AdutReceiveData?AdutResult);
B(B_VARIN,,dutDestination,19,3,21,5,);
B(B_VAROUT,,dutResult,39,3,41,5,);
B(B_VARIN,,dutSend,19,4,21,6,);
B(B_VAROUT,,dutReceive,39,4,41,6,);
L(1,0,1,6);
L(1,3,5,3);
L(7,3,13,3);
L(15,3,21,3);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If (sys_bIsEtherNetIPReady) and (bSend) Then
FP_ETHERNETIP_DATA_EXCHANGE_FB1(bSend := bSend,
dutDestination := dutDestination,
dutSendData := dutSend,
dutResult => dutResult,
dutReceiveData => dutReceive);
End_if;