이더넷/IP 유닛과 메시지 교환
이 펑션블록은 지정된 대상에서 EtherNet/IP 유닛과 명시적 메시지를 교환합니다.
입력
상승 엣지에서 데이터 교환 시작
대상 이더넷/IP 유닛의 정보가 포함된 데이터 단위 유형.
전송 데이터 버퍼의 데이터 단위 유형.
FP_ETHERNETIP_DATA_SET 명령을 사용하여 전송 데이터 버퍼에 데이터를 쓸 수 있습니다.
출력
대상 이더넷/IP 대상 유닛과 데이터 교환이 진행 중임을 나타내는 플래그.
명령 실행 결과의 데이터 유닛 유형
수신 데이터 버퍼의 데이터 단위 유형.
데이터는 FP_ETHERNETIP_DATA_GET 및 FP_ETHERNETIP_DATA_GET_BYTES 명령을 사용하여 수신 데이터 버퍼에서 읽을 수 있습니다.
인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.
이더넷 유닛 구성에서 EtherNet/IP 기능을 사용하지 않는 경우.
명령을 인터럽트 프로그램에서 실행한 경우.
dutReceiveData에 대한 수신 데이터 버퍼의 크기가 허용 범위(3–253워드)를 벗어난 경우.
dutResult에 대한 수신 데이터 버퍼의 크기가 3워드 미만인 경우.
인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.
이더넷 유닛 구성에서 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;