产品中有RTC,但是要不定时校准,这个校准的时间有没有好的策略,还是就是定一个固定的时间进行校准一下呢。
测一下时间差再选择性校准有没有必要
时间差是没有必要的,只要确定某个时间点上的时间是对的,那么其他的时间也是按这个时间基准来计算误差的。
所以,只要是特定的时间来校准就可以了,如果要精度高一些,可以把校准的时间减小一些,比如10分钟校准一次
你的校准过程是怎么样的?
如果能在程序中自动获取NTP服务来校准,则采用启动后校准,以及执行中定期(定时)校准就好。
如果这个过程不能自动获取NTP服务来校准,其实校准就只能靠人工啦,你就需要在相应工作中安排相应操作(比如每天、每周、每月——这个依据时间精度要求、系统误差累积偏向情况 来定)。
一般来说,都是定时、重启校准,主要是程序设计简单一些。
但是根据我的经验来说,一般网络设备(交换机、路由器、服务器等等)没有定时校准,开通时候校准时间,跑个几年可能会出现几十分钟或者一两个小时的差异,其间可能重启过多次。如果不是要求太高,一般都不需要再次校准。
这个实际上说明了,如果你的精度要求是分钟级,也许需要一周或者十天校准一次,如果是小时级,一年校准一次也就够了。
没有必要检测时间差,直接把NTP得到的时间赋值到变量就好了。因为逻辑上都是让时间变成NTP授时的时间。
在工控终端那里,一般是主机拥有网络时间,主机定时获取NTP,然后把校准时间广播到所有从机里
如果只是单一的设备,就要看你的时间要求了,有网络可以用楼上那些办法,没有网络的,十天半个月,固定周期校准就行了。合格的RTC,一天的时差最多1S,没必要天天校准
写入RTC是需要消耗时间的,因此RTC不宜频繁写入,一般的校时策略就是先获取一个网络时间,然后跟RTC对比一下,如果相差不超过10秒就不校了
可以每次开机都校准一次
另外可以在固定的时间点校准一次