FP_NTP_SYNCHRONIZE

NTP 서버로부터 시간 동기화 요청

이 FP 명령은 NTP 서버에 요청을 전송하여 시간을 동기화합니다.

입력

nNumberOfRetries (WORD, INT, UINT)

시간 동기화를 요청하는 재시도 횟수

값: 0-20

nRetryInterval (WORD, INT, UINT)

시간 동기화 간격

값: 16-600

출력

nResult (WORD, INT, UINT)

실행 결과 코드

16#FFFF

진행 중

16#0

정상 완료

16#10

더블 시작 에러

시간 동기화를 요청하는 명령어가 실행 중입니다.

주석

시간 동기화 요청 명령을 취소하기 위해 0으로 설정된 재시도 횟수와 함께 명령어가 실행될 때는 더블 시작 에러가 발생하지 않습니다.

16#11

SNTP 서버 어드레스 설정 에러

ET-LAN 설정, SNTP 서버 어드레스 설정 = "0.0.0.0"

16#12

연결 끊김 에러

이더넷의 연결이 끊겼습니다.

16#13

이더넷 초기화 활성 에러

요청을 전송하는 이더넷 유닛에 할당된 IP 어드레스가 없습니다. (sys_bIsEthernetIPAddressAssignedFALSE임)

16#14

재시도 횟수 설정 에러

지정된 재시도 횟수가 범위를 벗어났습니다.

16#15

재시도 간격 설정 에러

지정된 재시도 간격이 범위를 벗어났습니다.

16#20

응답 타임아웃 에러

시간 동기화 요청을 처리하는 응답 시간이 미리 정의된 시간을 초과합니다.

주석

이 에러는 NTP IP 어드레스가 확인되지 않은 경우에도 발생합니다.

16#30

이더넷 태스크 응답 타임아웃

이 에러는 이더넷 태스크에서 응답이 반환되지 않을 때 발생합니다.

주석

  • 인터럽트 프로그램에서는 이 명령을 사용할 수 없습니다.

  • 시간 동기화 타임아웃을 예측할 수 있는 경우 nNumberOfRetries를 더 높은 값으로 설정하십시오.

  • 시간을 동기화하려는 추가 시도를 취소하려면 nNumberOfRetries를 0으로 설정합니다. 이 경우 실행 결과 코드는 nResult에 저장되지 않습니다.

  • 한 번의 동기화 시도에 대한 타임아웃 기간이 3초로 고정됩니다.

  • 다중 횟수 동기화 시도가 지정되면 타임아웃 기간이 경과한 후(3초) 처리 간격이 지나면 새 요청이 시작됩니다(nRetryInterval에 의해 지정됨).

  • 시간 동기화를 위한 총 타임아웃 기간(초)은 다음 공식을 사용하여 얻을 수 있습니다. nRetryInterval x 3 + (nRetryInterval x (nNumberOfRetries-1)). (여기서 nNumberOfRetries는 0보다 큼)

에러 플래그

sys_bIsOperationErrorHold(TRUE로 전환되어 TRUE로 유지됨)
  • 인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.

  • 명령을 인터럽트 프로그램에서 실행한 경우.

sys_bIsOperationErrorNonHold(스캔 1회에 대해 TRUE로 전환)
  • 인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.

  • 명령을 인터럽트 프로그램에서 실행한 경우.

POU 헤더

이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다.모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.

	VAR
		bRequestSynchronization: BOOL:=FALSE;
		iNumberOfRetries: INT:=3;
		iRetryInterval: INT:=20;
		wResult: WORD:=0;
		bEnable: BOOL:=FALSE;
			END_VAR

LD 본문

시스템 변수 sys_bIsEthernetInitializingFALSE이고 변수 bEnableTRUE로 설정되면 펑션이 실행됩니다.

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_CONTACT,,sys_bIsEthernetInitializing,6,1,8,3,N);
B(B_CONTACT,,bEnable,15,1,17,3,);
B(B_F,FP_NTP_SYNCHRONIZE!,,22,0,35,5,,?DEN?DnNumberOfRetries?DnRetryInterval?AENO?AnResult);
B(B_VARIN,,iNumberOfRetries,20,2,22,4,);
B(B_VAROUT,,wResult,35,2,37,4,);
B(B_VARIN,,iRetryInterval,20,3,22,5,);
L(1,0,1,5);
L(1,2,6,2);
L(8,2,15,2);
L(17,2,22,2);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

if NOT (sys_bIsEthernetInitializing) AND (bEnable) then
    FP_NTP_SYNCHRONIZE(nNumberOfRetries := iNumberOfRetries,
    nRetryInterval := iRetryInterval,
    nResult => wResult);
end_if;

최종 수정일: 2024-03-07이 페이지에 대한 피드백Panasonic 직통 전화