请求从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 |
断开连接错误 |
以太网断开连接。 |
16#13 |
以太网初始化激活错误 |
未向发送请求的以太网单元分配IP地址。(sys_bIsEthernetIPAddressAssigned为FALSE) |
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)
如果使用索引寄存器指定的区域超出限制。
如果指令是在中断程序中执行的。
如果使用索引寄存器指定的区域超出限制。
如果指令是在中断程序中执行的。
所有用于编程此函数的输入和输出变量已在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;