NTPサーバーの時刻同期要求
このFP命令は、NTPサーバーに時刻同期要求を送信します。
入力
時刻同期要求のリトライ回数
値:0~20
時刻同期間隔
値:16~600
出力
実行結果コード
16#FFFF |
処理中 |
|
16#0 |
正常完了 |
|
16#10 |
重複起動エラー |
時刻同期を要求する命令が実行中です。 注記 時刻同期要求命令をキャンセルするため再試行回数を0に設定して命令を実行すると、重複起動エラーは発生しません。 |
16#11 |
SNTPサーバーアドレス設定エラー |
ET-LAN設定、SNTPサーバーアドレス設定 = "0.0.0.0" |
16#12 |
接続の切断エラー |
Ethernetが未接続です。 |
16#13 |
Ethernet初期化中エラー |
要求を送信するEthernetユニットにIPアドレスが割り当てられていません。(sys_bIsEthernetIPAddressAssignedがFALSE) |
16#14 |
再試行回数設定エラー |
指定した再試行回数が範囲外です。 |
16#15 |
リトライ間隔設定エラー |
指定したリトライ間隔が範囲外です。 |
16#20 |
レスポンス待ちタイムアウトエラー |
時刻同期要求処理のレスポンス時間が事前定義された時間を超過しました。 注記 このエラーはNTPのIPアドレスが未解決の場合にも発生します。 |
16#30 |
Ethernetタスクのレスポンス待ちタイムアウト |
このエラーはEthernetタスクからのレスポンスがない場合に発生します。 |
この命令は、割り込みプログラム中で使用することはできません。
時刻同期タイムアウトが見込まれる場合は、nNumberOfRetriesの設定値を高くします。
時間の同期の追加リトライをキャンセルするには、nNumberOfRetriesを0に設定します。この場合、実行結果コードはnResultに格納されません。
時刻同期の試行1回あたりのタイムアウト時間は3秒に固定されています。
時刻同期を複数回試行するよう指定した場合、新たな要求はタイムアウト時間(3秒)経過後、さらに処理間隔(nRetryIntervalで指定)の時間経過後に開始されます。
時刻同期のタイムアウト合計時間(秒)は以下の式で求められます。nRetryInterval x 3 + (nRetryInterval x (nNumberOfRetries - 1))。(ここでnNumberOfRetriesは0より大きい数)
インデックス修飾時にエリアを超えたとき
命令が割り込みプログラム内で実行された場合。
インデックス修飾時にエリアを超えたとき
命令が割り込みプログラム内で実行された場合。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。POUヘッダは全プログラム言語で使用できます。
VAR
bRequestSynchronization: BOOL:=FALSE;
iNumberOfRetries: INT:=3;
iRetryInterval: INT:=20;
wResult: WORD:=0;
bEnable: BOOL:=FALSE;
END_VAR
システム変数sys_bIsEthernetInitializingがFALSEのとき変数bEnableをTRUEに設定すると、ファンクションが実行されます。
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
if NOT (sys_bIsEthernetInitializing) AND (bEnable) then
FP_NTP_SYNCHRONIZE(nNumberOfRetries := iNumberOfRetries,
nRetryInterval := iRetryInterval,
nResult => wResult);
end_if;