Cherry 发表于 2019-8-22 10:36:31

基于机智云开发的设备,获取NTP网络时间

摘要:网络时间同步现在有2种同步协议NTP和PTP,Ntp与PTP不同在于时间戳的产生位置。NTP是通过软件来记录协议相关网络包的发出和到达时刻,受操作系统影响很大(系统约忙,延时越大)。同步精度优于10ms。
开发基于机智云平台的智能设备,可以通过调用gizwisGetNTP函数即可获取网络时间。
在机智云自助开发平台开发一款智能设备有很多在线工具快速实现,若需要获取时间,依靠MCU本身自带的时钟比较麻烦,是否可以直接使用函数调用外界时间呢?机智云有什么API可以用来获取网络时间呢?答案是有这么一个函数gizwitsGetNTP( )可以获取网络时间,我们机友用这个函数实现了水墨画定时控制系统、节点的时间同步、采集地震的波形时进行每个节点的数据同步。
什么是NTP网络协议

[*]用于同步它所有客户端时钟的服务。NTP服务器将本地系统的时钟与一个公共的NTP服务器同步然后作为时间主机提供服务,使本地网络的所有客户端能同步时钟。
NTP时间服务器是一个简单的常用的服务器,工作中我们只要做到会用就行,能搭建起来就可以了,不用太去深入研究ntp时间服务器的原理。

为什么需要NTP服务,主要原因有两个

[*]网络上的各台计算机上的时间不同步:不同步的原因有很多,比如手动修改了操作系统的时间,比如CMOS电池重置导致的时间复位等等。
[*]网络上的各台计算机时间不精确:我们所使用的钟表,精度有一定的误差,一般较高的精度平均每年也会达到一分钟左右的误差,虽然对日常使用基本不造成影响,但是在计算机的世界这已经会造成问题。
实际业务需求中由于两台server的时间不一致。导致漏数据。损失巨大,被user批的不行不行的。还好IT有一台 server 专门用来校时,使用机智云平台开发物联网设备时,通常使用使用gizwtisGetNTP函数来实现。

什么是准确的

[*]目前最为准确的装备是什么呢?
[*]原子钟是目前世界上最准确的计时工具,它在20世纪50年代出现,利用院子袖手或释放能量是发射出的电磁波来计时,非常稳定,再加上一些列精密仪器的控制,可以达到2000万年才误差1秒,这个精确度基本能够实现目前所有的需求。

为什么不能直接使用格林威治时间

[*]格林威治时间是以地球自转为基础的,而由于地球自转本身就不规则,而且在缓慢加速。因为格林威治时间计时的基础都存在偏差,所以格林威治时间已经不再作为标准时间使用。

什么是新的标准时间

[*]缩写为UTC(Universal Time Coordinated)的世界协调时是准确的标准时间,UTC正式使用原子钟进行报时的国际标准时间。

获取的方式

[*]而获取的方式也多种,可以通过卫星,比如GPS或者北斗。也可以直接从网络上的NTP服务器进行获取。关于使用ntpdate进行时间同步的相关说明,可以参看如下文章:https://blog.csdn.net/liumiaocn/article/details/79250793

[ gizwitsGetNTP函数 ]基于机智云的物联网设备开发如何进行获取NTP网络时间,参考方式有几种1)视频教学操作版:https://b23.tv/av61558323特点:此方法通俗易懂,代码添加原理、修改位置均知道准备材料:机智云自助开发平台账号、开发版、机智云APP作用:节点的时间同步、采集地震的波形时进行每个节点的数据同步,调用gizwisGetNTP函数即可实现。第一步:需要配网成功才能获取精确时间 (配网成功返回一个值,添加一个标志位和变量,记住当前是否联网的状态)。第二步:调用gizwitsGetNTP函数时不能一直调用,所以我们这里设置两个定时器,(定时器初始化和一秒钟的时间值)。第三步:在中断函数中编写相关代码(联网成功时请求获取时间、以及打印时间的函数)。第四步:将程序编译,无问题,则将程序下载到开发版中。第四步:打开机智云APP,进行配网,配网成功后,可以在XCOM中查看打印出的时间。2)水墨画定时控制系统之Gokit时间获取及其分析:http://club.gizwits.com/thread-8037-1-1.html3)MCU请求网络时间例程:http://club.gizwits.com/thread-4088-1-1.html4)Arduino获取网络时间:http://club.gizwits.com/thread-165362-1-1.html



页: [1]
查看完整版本: 基于机智云开发的设备,获取NTP网络时间