NTPサーバーのローカルタイムゾーンの設定
ローカルタイムゾーンを設定する必要があるのは、フレキシブルタイムゾーンの場合だけです。
このFP命令は、システムレジスタ530 FP_NTP_SYNCHRONIZEによって設定されている場合に使用されます。
によって設定されたタイムゾーンをローカルタイムゾーンで一時的に上書きします。このローカルタイムゾーンは、PLC時間が入力
GMT (グリニッジ標準時)に基づいてタイムゾーンを指定します。
構文: +HHMM
/-HHMM
値:フォーマット:記号(+/-)およびHHMM (HH =時間(00~23)、MM =分(00~59))
変換例:
フランス、イタリア、スペイン、ドイツの場合:'+0100'
日本の場合:'+0900'
ハワイの場合:'-1000'
出力
動作が実行されずに異常終了した場合、TRUEに設定します。例:sys_bIsEthernetInitializingが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サーバーの時刻を同期中の場合。
Ethernet初期化中に命令を実行した場合は、sys_iEthernetConnectionErrorCodeが「11:Ethernet初期化中」に設定されます。
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;