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(对于一次扫描变为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并且变量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

ST本体

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

最后更新日期: 2024-03-07此页面上的反馈松下热线