当前位置:首页 > 天道酬勤 > 正文内容

wincc时间同步不能选择计算机(计算机时间同步出错怎么办)

张世龙2021年12月21日 23:56天道酬勤890

WHY

网络世界中,为了各计算机协调工作,时间同步是非常重要的基础。 计算机内部有自己的时间,这个时间是根据内部晶体振荡器产生的固定频率模拟时间的流动来计算的。 频率非常稳定,但有误差,目前的工艺水平误差足够小。 (

既然本地时间产生误差,两台服务器的时间就会不一致。 要消除不一致,需要统一的时间基准。 然后,大家以这个基准时间为基准时间,校正自己的本地时间,调整国际时间(UTC )。 关于这个时间是怎么来的,不是本文讨论的重点。

好了,另一个地方有标准时间。 如何通过网络使这个标准时间与本地计算机同步呢? 在同步过程中,如何尽量消除网络延迟带来的影响?

HOW

可以直接请求网络,获取回复时间戳,更改本地时间吗? 显然不行。 请不要忘记。 数据包在网络上传输也需要时间。 从对方提出这个请求到到达本地计算机,经过多长时间我都不知道。 这中间的延迟会大大影响时间校正的结果。

好的,现在面临的问题是网络延迟。 如果能够消除网络延迟,就可以进行正确的同步,但以现在的技术水平是不可能消除的.既然不能消除延迟,那么知道这个延迟时间的话,也可以通过计算来消除延迟的影响.

网络中的数据包传输大致如图:所示

其中各值为以下:

C1:客户端发出请求的本地时间C2:客户端返回的本地时间S1:时间服务器接收到请求的服务器时间S2:时间服务器发出响应的服务器时间SC1:客户端发出请求的服务器时间SC2: 期间CS1:请接收时间服务器请求时的本地时间CS2:时间服务器作出响应时的本地时间我们现在的目的看起来很简单。 也就是说,收到响应时,将本地时间C2校正为SC2。 首先,请明确C2和SC2不想等待。 否则,如果两者的时间相同,就不需要校正。

首先,我们在当地知道的信息是: C1、C2,服务器在返回结果中,告诉我们S1、S2。 另外,假设网络中的延迟大致一定,为S1-C1=C2-S2。

那么,现在成功地转换成了数学题。 突然变简单了吗? 步骤:

da=(C2-C1)-)- (S2 - S1)总延迟时间d=da/2 # )一次延迟时间sc1=S1-DSC2=sc1) C2-C1)您觉得如何? 巧妙地消除了网络延迟。

以上是时间同步ntp协议的内容。 但是,这样同步的时间也有误差。 首先,上面假设了往返的网络延迟相同,但是如果延迟不对称,则同步结果会不正确。 另外,如果协议在APP应用层跑,从物理层到APP应用层的延迟也会影响最终结果。

应用

我们在实际的编程中,经常写这样的代码:

$t1=time (;

//待办事项.

$t2=time (;

如果在获取$t1变量后碰巧进行了时间同步,$t2可能小于$t1,是不是很可疑? 但是,也可以选择不同的同步方式。 以下是在Ubuntu系统中进行的测试。

ntp:的时间太平滑了,保证本地时间增加,逐渐减少本地和远程的时间差。 ntpdate:将立即同步。 在这种功能情况下,可能会出现上面的$t2小于$t1的情况。 但是,我的服务器Ubuntu 18缺省情况下不使用ntp工具,而是使用timedatectl代替。 虽然其内部协议相同,但有关timedatectl的详细信息,请参阅官网的说明:3359 Ubuntu.com/server/docs/network-NTP

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/26668.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。