本发明属于嵌入式通讯系统技术领域,具体涉及一种嵌入式通讯系统的授时方法和系统。
背景技术:
在当今很多的应用场景需要依赖计算机精确的同步时间来完成,尤其在需要多机互联完成的任务中。大多数嵌入式系统的计算机的计时通过晶体振荡器实现,即实时时钟(rtc芯片),晶体振荡器是从一块石英晶体上按一定方位角切下的薄片,当施加一定的电压后会以相对固定的频率发出电脉冲信号,计算机通过对脉冲信号计数实现了时间的计算。
在嵌入式通讯系统和自动化控制领域,往往需要对整个系统进行授时,从而记录系统运行过程中的数据以及相关故障信息。一般通过系统的时钟芯片授时只能进行秒级授时,大部分对时间精度要求很高或是运行无法连接互联网的场合都依赖gps系统(全球定位系统)实现时间的调节,可是由于计算机系统的非实时特性,即使gps可以提供很精确的时间信号,但通过gps对整个系统进行高精度授时,这种方式受天气和地理位置影响较大,因此仍然无法保证系统可以及时的进行时间调节。可知,通过gps对整个系统进行高精度授时,这种方式对gps的依赖性太大。
因此,需要一种无需依赖gps就可以行毫秒级别的时钟授时方法。
技术实现要素:
为了解决上述问题,本发明提供了一种嵌入式通讯系统的授时方法和系统,能够实现毫秒级定时器与系统时钟芯片计时的精确衔接匹配,从而使系统的输出时刻精确到毫秒级。
根据本发明提供了一种嵌入式通讯网络的授时方法,包括以下步骤:
步骤s1:微控制器完成冷启动初始化;
步骤s2:判断初始化校正标志是否有效;
步骤s3:若判断初始化校正标志为无效;则微控制器的毫秒定时器需要校正与系统时钟芯片的偏差。
在一个实施例中,所述步骤s1之后步骤s2之前,微控制器在完成冷启动初始化后,毫秒定时器即刻开始计数。
在一个实施例中,所述步骤s3,又具体包括以下步骤:
步骤s31:判断时钟芯片计秒是否跳动;
步骤s32:若判断时钟芯片计秒跳动,则毫秒定时器校正与系统时钟芯片的偏差;
步骤s33:设置初始化校正标志为有效;
步骤s34:输出毫秒时钟。
在一个实施例中,所述步骤s32具体为:当微控制器捕捉到时钟芯片的秒级输出上升沿信号时;微控制器的毫秒定时器则通过归零重新计数的方式与时钟芯片匹配。
在一个实施例中,在步骤s31后,若判断时钟芯片计秒不跳动,则毫秒定时器继续计数。
在一个实施例中,在步骤s2后,若判断初始化校正标志为有效,则直接输出毫秒时钟。
本发明还提供一种嵌入式通讯网络的授时系统,包括:主节点、多个从节点和数据记录装置,其中,各个从节点均与主节点连接,且主节点对各个从节点进行毫秒级授时,主节点和各个从节点将运行数据以及故障时间发送到数据记录装置。
在一个实施例中,主节点设有时钟芯片和微控制器,时钟芯片采用i2c接口与微控制器进行通讯。
在一个实施例中,时钟芯片的编码采用bcd编码,微控制器内设置毫秒级定时器,定时器采用中断机制进行毫秒计时。
在一个实施例中,主节点和各个从节点通过modbus总线、can总线、以太网总线中的任意一种方式与数据记录装置通讯。
本发明通过将嵌入式通讯网络的主节点作为高精度时钟源对各个从节点进行高精度授时,精度由秒级提高到毫秒级,从而增强数据记录的准确性;同时避免了通过gps对整个通讯网络进行高精度授时的依赖性,避免了信号干扰和信息窃取,提高了通讯可靠性和安全性。
附图说明
在下文中将基于实施例并参考附图来对本发明进行更详细的描述。其中:
图1为本发明的嵌入式通讯系统的授时方法流程图;
图2为本发明的应用场景示意图;
图3为本发明的授时拓扑示意图;
图4为本发明晶振脉冲示意图。
在附图中相同的部件使用相同的附图标记。附图并未按照实际的比例绘制。
具体实施方式
下面将结合附图对本发明作进一步说明。借此对本发明如何应用技术手段解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不存在冲突,各个实施例中所提到的各项技术特征均可以任意方式组合起来。本发明并不局限于文中公开的特定实施例,而是包括落入权利要求的范围内的所有技术方案。
本发明提供一种嵌入式通讯网络的授时方法,如图1所示,为本发明授时方法的流程图,其中,包括以下步骤:
步骤s1:微控制器完成冷启动初始化;
步骤s2:判断初始化校正标志是否有效;
步骤s3:若判断初始化校正标志为无效;则微控制器的毫秒定时器需要校正与系统时钟芯片的偏差。
所述步骤s1之后步骤s2之前,微控制器在完成冷启动初始化后,毫秒定时器即刻开始计数。
所述步骤s3,又具体包括以下步骤:
步骤s31:判断时钟芯片计秒是否跳动;
步骤s32:若判断时钟芯片计秒跳动,则毫秒定时器校正与系统时钟芯片的偏差;
步骤s33:设置初始化校正标志为有效;
步骤s34:输出毫秒时钟。
所述步骤s32具体为:当微控制器捕捉到时钟芯片的秒级输出上升沿信号时;微控制器的毫秒定时器则通过归零重新计数的方式与时钟芯片匹配。
在步骤s31后,若判断时钟芯片计秒不跳动,则毫秒定时器继续计数。
在步骤s2后,若判断初始化校正标志为有效,则直接输出毫秒时钟。
本发明还提供一种嵌入式通讯网络的授时系统,如图2所示,为本发明授时系统应用场景的示意图,包括:主节点、多个从节点和数据记录装置,其中,各个从节点均与主节点连接,且主节点对各个从节点进行毫秒级授时,主节点和各个从节点将运行数据以及故障时间发送到数据记录装置。
嵌入式通讯网络的主节点设有时钟芯片和微控制器,时钟芯片采用i2c(内部集成串行总线)接口与微控制器进行通讯。时钟芯片的编码采用bcd编码(二-十进制编码),微控制器内设置毫秒级定时器,定时器采用中断机制进行毫秒计时。
优选地,如图3所示,为本发明的授时拓扑图;时钟芯片和毫秒级定时器形成了毫秒级时钟授时节点。嵌入式通讯网络的主节点通过总线对各个从节点进行高精度授时,其精度由秒级提高到毫秒级。同时,嵌入式通讯网络的各个节点将运行数据以及故障事件通过总线发送到数据记录装置。从而实现与时钟芯片计时的精确衔接匹配。
优选地,主节点和各个从节点通过modbus总线(工业现场总线)、can总线(控制器局域网络)、以太网总线中的任意一种方式与数据记录装置通讯。
由于时钟芯片具有非易失存储单元,秒级时钟可以断电保持数据;而微控制器的定时器不具有非易失存储单元,毫秒级时钟不可以断电保持数据。因此,微控制器的毫秒定时器采用上电即计数的方式进行毫秒计时(即微控制器完成冷启动初始化即刻开始定时器计数),毫秒定时器的计时起始始时间与时钟芯片的计时的秒级起始时间可能不同步,为了实现毫秒计时器与时钟芯片计时的精确衔接匹配,微控制器需要及时捕获时钟芯片的秒级计数跳动,即秒级输出上升沿信号。当微控制器捕获了时钟芯片的秒级输出上升沿信号,毫秒定时器进行归零重新计数,从而实现微控制器作为高精度时钟源对整个嵌入式通讯网络的各个从节点进行毫秒精度的时钟授时。
进一步的详细叙述如下:嵌入式通讯网络系统上电后,毫秒定时器开始以0~999ms循环计数。同时,时钟芯片秒信号也开始跳动,但是起始时刻秒信号并不确定。例如,如图4所示,系统上电后,时钟芯片秒信号读取结果是第i秒,但是由于时钟芯片秒信号实际是晶振脉冲信号,这样计时时刻位于第i秒哪个具体时刻是不确定的,可能是istart与iend之间任意时刻。这样为了实现毫秒计时器与时钟芯片计时的精确衔接匹配,当时钟芯片秒信号跳动时,毫秒定时器需要校正偏差,即满足毫秒定时器完成一个周期1000ms计数后使得时钟芯片秒信号同步执行加一操作,而不会出现时钟芯片秒信号在毫秒定时器没有完成一个周期1000ms计数就执行加一这种错误操作。当系统完成毫秒计时与时钟芯片计时偏差的校正后,设置初始化校正标志为有效状态,从而整个系统就可以进行毫秒级别的时钟授时,而且后续上电状态无需再进行时钟偏差校正。
由此可知,在上电一次后,上电持续运行过程中不需要再校正,而由于时钟芯片具有非易失存储单元,秒级时钟可以断电保持数据;而微控制器的定时器不具有非易失存储单元,毫秒级时钟不可以断电保持数据。因此,每次上电之前都要进行一次校正。
由此可知,本发明相对于现有技术而言,优点在于:通过将嵌入式通讯网络的主节点作为高精度时钟源对各个从节点进行高精度授时,精度由秒级提高到毫秒级,从而增强数据记录的准确性;同时避免了通过gps对整个通讯网络进行高精度授时的依赖性,避免了信号干扰和信息窃取,提高了通讯可靠性和安全性。
虽然已经参考如上优选实施例对本发明进行了描述,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。