EtherNet/IP 입력 리프레쉬
이 FP 명령은 노드의 수신 버퍼에서 입력되는 입력 데이터와 지정된 연결 번호를 새로 고칩니다. 데이터는 PLC의 수신 버퍼에서 PLC의 연산 메모리로 복사됩니다.
입력
새로 고칠 입력 데이터의 노드 번호입니다. 스캔 리스트 범위: 1-256
지정된 값이 스캔 목록 범위를 벗어나면 에러가 발생합니다.
예약된 노드가 지정된 경우에도 에러가 발생합니다.
새로 고칠 입력 데이터의 노드 연결 번호입니다. 범위: 1-256
지정된 값이 스캔 목록 범위를 벗어나면 에러가 발생합니다.
출력
리프레쉬 결과를 저장하는 메모리 영역.
0: 리프레쉬 연산이 완료되었습니다.
1: 수신한 데이터가 없습니다. 리프레쉬가 수행되지 않습니다.
2: 이더넷/IP가 통신할 준비가 되지 않았습니다.
명령을 실행하기 전에 FP_ETHERNETIP_GET_STATE_TABLE_RUN을 사용하여 지정된 연결의 통신이 정상적으로 실행되는지 확인합니다.
sys_bIsEtherNetIPReady가 TRUE로 바뀐 후에 이 명령을 호출합니다. sys_bIsEtherNetIPReady가 TRUE로 바뀌기 전에 이 명령이 호출되면 이더넷/IP가 통신할 준비가 되지 않았음을 나타내는 에러가 반환됩니다.
통신 부하를 줄이기 위해 한 번의 스캔에서 이 명령을 연속으로 실행하지 마십시오.
[EtherNet/IP 설정]에서 [리프레쉬 방법]으로 [명령]이 선택된 연결에 대해서만 이 명령을 사용합니다.
이더넷 유닛 구성에서 EtherNet/IP 기능을 사용하지 않는 경우.
인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.
파라미터에 지정된 값이 허용 범위를 벗어난 경우.
s1_NodeNumber 및 s2_ConnectionNumber에서 지정한 노드 또는 연결이 존재하지 않는 경우.
연결에 대해 선택한 리프레쉬 방법이 [명령]이 아닌 경우.
지정된 연결의 입력 데이터 수가 0인 경우.
지정된 연결의 리프레쉬된 데이터 수가 0인 경우.
이더넷 유닛 구성에서 EtherNet/IP 기능을 사용하지 않는 경우.
인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.
파라미터에 지정된 값이 허용 범위를 벗어난 경우.
s1_NodeNumber 및 s2_ConnectionNumber에서 지정한 노드 또는 연결이 존재하지 않는 경우.
연결에 대해 선택한 리프레쉬 방법이 [명령]이 아닌 경우.
지정된 연결의 입력 데이터 수가 0인 경우.
지정된 연결의 리프레쉬된 데이터 수가 0인 경우.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bEnable: BOOL:=FALSE;
iNodeNumber: INT:=0;
iConnectionNumber: INT:=0;
wResult: WORD:=0;
END_VAR
VAR
bEnable: BOOL:=FALSE;
iNodeNumber: INT:=0;
iConnectionNumber: INT:=0;
wResult: WORD:=0;
END_VAR
변수 sys_bIsEtherNetIPReady와 bEnable이 TRUE로 설정되면 기능이 실행됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_VARIN,,iNodeNumber,13,4,15,6,);
B(B_VARIN,,iConnectionNumber,13,5,15,7,);
B(B_VAROUT,,wResult,31,4,33,6,);
B(B_CONTACT,,bEnable,13,1,15,3,);
B(B_CONTACT,,sys_bIsEtherNetIPReady,5,1,7,3,);
B(B_F,FP_ETHERNETIP_REFRESH_INPUT!,,15,2,31,7,,?DEN?Ds1_NodeNumber?Ds2_ConnectionNumber?AENO?Cd_Result);
L(1,2,5,2);
L(7,2,13,2);
L(15,2,15,4);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF (sys_bIsEtherNetIPReady) AND (bEnable) then
FP_ETHERNETIP_REFRESH_INPUT(s1_NodeNumber := iNodeNumber,
s2_ConnectionNumber := iConnectionNumber,
d_Result => wResult);
END_IF;