NTP 서버의 현지 시간대 설정
유연한 시간대에서만 현지 시간대를 설정하면 됩니다.
이 FP 명령은 일시적으로 시스템 레지스터 530FP_NTP_SYNCHRONIZE에서 PLC 시간을 설정할 때 사용됩니다.
로 설정된 시간대를 현지 시간대로 덮어씁니다. 이 현지 시간대는입력
GMT(그리니치 표준시)를 기준으로 시간대를 지정합니다.
구문: +HHMM
/-HHMM
값: 형식: 기호(+/-) 및 HHMM(HH=시간(00–23), MM=분(00–59))
예:
프랑스, 이탈리아, 스페인, 독일: '+0100'
일본: '+0900'
하와이: '-1000'
출력
실행 없이 연산이 비정상적으로 종료되는 경우(예: sys_bIsEthernetInitializing 이 TRUE인 경우)에 TRUE로 설정합니다.
에러가 발생하면 시스템 변수 sys_iEthernetConnectionErrorCode에서 에러 코드 번호를 확인하십시오.
인터럽트 프로그램에서는 이 명령을 사용할 수 없습니다.
이 명령은 시스템 레지스터 530에 설정된 시간대를 삭제하거나 영구적으로 덮어쓰지 않지만, sTimeZone에 지정된 값으로 일시적으로 치환합니다.
다음과 같은 경우 PLC가 시스템 레지스터에서 설정으로 돌아갑니다.
전원이 꺼져 있습니다.
[PROG 모드]에서 [RUN 모드]로 전환합니다.
다른 프로젝트로 전환합니다.
FP_IPV4_SET_ADDRESS 명령을 실행해도 설정 데이터가 손실되지 않습니다.
명령을 실행하기 전에 sys_bIsEthernetInitializing이 FALSE인지 확인하십시오. 명령이 실행되면 sys_bIsEthernetInitializing이 TRUE로 전환됩니다. sys_bIsEthernetInitializing이 TRUE일 때 명령을 실행하면 에러가 발생합니다.
이 명령이 성공적으로 실행되면 시스템 변수 sys_bIsCarry 및 sys_iEthernetConnectionErrorCode가 초기화됩니다.
에러가 발생하면 시스템 변수 sys_iEthernetConnectionErrorCode에서 에러 코드 번호를 확인하십시오.
파라미터에 지정된 값이 허용 범위를 벗어난 경우.
명령을 인터럽트 프로그램에서 실행한 경우.
시스템이 NTP 서버와 시간을 동기화하는 경우.
파라미터에 지정된 값이 허용 범위를 벗어난 경우.
명령을 인터럽트 프로그램에서 실행한 경우.
시스템이 NTP 서버와 시간을 동기화하는 경우.
이더넷 초기화 중에 명령이 실행되면 sys_iEthernetConnectionErrorCode가 "11: 이더넷이 초기화 중입니다"
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다.모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
sTimeZone: STRING[32]:='+0100';
bIsError: BOOL:=FALSE;
bEnable: BOOL:=FALSE;
END_VAR
시스템 변수 sys_bIsEthernetInitializing이 FALSE이고 변수 bEnable가 FALSE에서 TRUE로 설정되면 펑션이 실행됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_CONTACT,,sys_bIsEthernetInitializing,6,4,8,6,N);
B(B_CONTACT,,bEnable,14,4,16,6,R);
B(B_F,FP_NTP_SET_TIME_ZONE!,,18,3,31,7,,?DEN?DsTimeZone?AENO?AbError);
B(B_VARIN,,sTimeZone,16,5,18,7,);
B(B_VAROUT,,bIsError,31,5,33,7,);
L(1,0,1,7);
L(1,5,6,5);
L(8,5,14,5);
L(16,5,18,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if (NOT (sys_bIsEthernetInitializing) AND DF(bEnable)) then
FP_NTP_SET_TIME_ZONE(sTimeZone := sTimeZone,
bError => bIsError);
end_if;