|
类型: |
功能块 |
|
适用的版本: |
V1.0.7.0 |
FB_SntpClient 功能块提供 SNTP 客户端功能。
FB_SntpClient 功能块是 SNTP 通讯的用户接口。
功能块需要处于启用状态并且为执行请求做好了准备。开始执行请求时,使用来自输入的信息生成包含时间请求的 SNTP 报文。利用 UDP 将报文发送到单个服务器。
功能块等待来自服务器的响应、处理这个响应并在输出 q_stTimeResponse 处呈现所接收的信息。只要功能块正在执行请求,输出 q_xBusy 便被设置为 TRUE,并且 q_etResult 会显示操作状态。输出 q_xDone 指示成功执行,q_xError 显示在执行期间功能块是否检测到任何问题,其中 q_etResult 和 q_sResultMsg 显示与所检测到的错误的性质和原因有关的信息。如果检测到错误,则需要通过禁用并再次启用的方式复位功能块。
根据输入 i_xSyncRtc,使用计算值来将控制器的 RTC 设置为已从服务器接收的值(包含利用输入 i_diTimeZone 定义的偏移)。UTC 同步的最大精确度可达到 1 秒。
注意: 此功能块不考虑夏令时。您必须在应用程序中进行相应设置。另请参阅 RTC Control / Timezone / Daylight Saving Time Example Guide 文档。
输入 i_uiMaxRtcOffset 可用作真实性检查,以用于在设置控制器的 RTC 之前验证来自服务器的结果。
注意: 在对控制器的 RTC 进行设置之后,会在控制器日志文件中生成相应条目。因此,为保证自动调整,每天使用该功能的次数不要超过一次。
|
输入 |
数据类型 |
描述 |
|---|---|---|
|
i_xEnable |
BOOL |
功能块的激活与初始化。 |
|
i_xExecute |
BOOL |
利用输入 iq_stTimeRequest 指定的请求在此输入的上升沿时执行。 |
|
i_xSyncRtc |
BOOL |
如果此输入设置为 TRUE,则会在从 (S)NTP 时间服务器接收到响应之后,自动设置控制器的 RTC。 缺省值:FALSE 注意: 在对控制器的 RTC 进行设置之后,会在控制器日志文件中生成相应条目。因此,为保证自动调整,每天使用该功能的次数不要超过一次。 |
|
i_diTimeZone |
DINT |
加到从 (S)NTP 时间服务器接收的时间戳(以秒为单位)中的偏移。 缺省值:0 值范围:-86400...+86400(24 小时 x 60 分钟 x 60 秒) |
|
i_uiMaxRtcOffset |
UINT |
i_xSyncRtc 为 TRUE 时,RTC 的当前值与新值之间允许的最大差。 可用作真实性检查,以便防止意外设置 RTC。例如,如果 RTC 与时间服务器同步一次,则任何后续同步(偏移)应在 ±30 秒的范围内。 缺省值:0(功能不活动) 最大值:7200 秒(2 小时) |
|
i_stTimeRequest |
包含与 (S)NTP 时间服务器有关的必需用户输入数据的结构。 |
|
输出 |
数据类型 |
描述 |
|---|---|---|
|
q_xActive |
BOOL |
如果此功能块活动,则该输出设置为 TRUE。 |
|
q_xReady |
BOOL |
如果功能块已准备好接收用户输入,则为 TRUE。 |
|
q_xBusy |
BOOL |
如果此输出设置为 TRUE,则功能块正在处理。 |
|
q_xDone |
BOOL |
如果此输出设置为 TRUE,则功能块已成功完成所请求的命令。可从 iq_stTimeRequest 收集其他数据。 |
|
q_stTimeResponse |
包含以下信息的结构:同步时间戳(包括偏移 i_diTimeZone)、控制器本地 RTC 与 (S)NTP 时间服务器之间的时钟偏移、以及往返延迟。 |
|
|
q_Error |
BOOL |
如果此输出设置为 TRUE,则检测到错误。有关详细信息,请参阅 q_etResult和 q_etResultMsg。 |
|
q_etResult |
以数字值的形式提供诊断和状态信息。 |
|
|
q_sResultMsg |
STRING[255] |
以文本消息的形式提供附加的诊断和状态信息。 |