本发明涉及设备校时技术领域,特别涉及一种自动校时方法及装置。
背景技术:
在通信领域,一般采用全球定位系统(globalpositioningsystem,gps)提供的国际协调时间(coordinateduniversaltime,utc)来校正通信设备的系统时钟,以实现处于不同位置的通信设备同步工作。
由于通信设备的系统时钟基于定时器硬件系统,定时器硬件系统的晶振频率的偏差会导致系统时钟误差积累,因此,需要对系统时钟进行校时。现在一般采用的校时方式是定时校时,由程序控制在固定时间点校时或由操作人员在固定时间手动校时。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
由于通信设备所处的环境不同,通信设备的系统时钟与utc时间的误差也会不同。如果校正时间隔时间过短,会增加系统负担。如果校正时间隔时间过长,可能会导致系统时钟误差积累过大而未及时校正,而系统时钟误差累积过大会对系统应用产生不良影响,从而影响通信设备的正常工作。
技术实现要素:
本发明实施例提供了一种自动校时方法及装置,能够实时检测通信设备的系统时钟和utc时间的误差,当误差值超过误差阈值时,自动对系统时钟进行校时。所述技术方案如下:
一方面,本发明提供了一种自动校时方法,所述自动校时方法包括:
通信设备接收全球定位系统发送的秒脉冲;
在达到所述秒脉冲的上升沿时,获取所述通信系统的系统时钟;
获取所述全球定位系统发送的定位信息中的国际协调时间;
确定所述通信设备的系统时钟与所述国际协调时间的误差;
比较所述误差与误差阈值的大小;
当所述误差超过误差阈值时,对所述通信设备的系统时钟进行校时。
进一步地,所述获取所述全球定位系统发送的定位信息中的国际协调时间,包括:
在达到所述秒脉冲的上升沿时,接收所述全球定位系统发送的定位信息,所述定位信息包括所述全球定位系统的定位状态,所述全球定位系统的定位状态包括已定位和未定位;
当所述全球定位系统的定位状态为已定位时,获取所述定位信息中的国际协调时间。
进一步地,所述确定所述通信设备的系统时钟与所述国际协调时间的误差,包括:
将获取到的所述通信设备的系统时钟中的纳秒值转换成毫秒值,所述通信设备的系统时钟的毫秒值为所述通信设备的系统时钟与所述国际协调时间的误差。
进一步地,所述对所述通信设备的系统时钟进行校时,包括:
将获取到的所述国际协调时间转换成日历时间;
将所述通信设备的系统时钟的纳秒值清零;
将所述日历时间的秒值加1s,并将秒值加1s后的所述日历时间配置为所述通信设备的系统时钟。
进一步地,所述误差阈值为0~100ms。
进一步地,所述自动校时方法还包括:
接收误差阈值设置指令;
根据所述误差阈值设置指令设置所述误差阈值。
进一步地,所述自动校时方法还包括:
在所述通信设备启动时,对所述通信设备的系统时钟进行初始化。
进一步地,所述对所述通信设备的系统时钟进行初始化,包括:
获取全球定位系统发送的定位信息中的国际协调时间;
将获取到的所述国际协调时间转换成日历时间;
将所述日历时间的秒值加1s,并将秒值加1s后的所述日历时间配置为所述通信设备的系统时钟。
另一方面,本发明提供了一种自动校时装置,所述自动校时装置包括:
第一接收模块,用于接收全球定位系统发送的秒脉冲;
第一获取模块,用于在达到所述秒脉冲的上升沿时,获取通信系统的系统时钟;
第二获取模块,用于获取所述全球定位系统发送的定位信息中的国际协调时间;
确定模块,用于确定所述通信设备的系统时钟与所述国际协调时间的误差;
比较模块,用于比较所述误差与误差阈值的大小;
校时模块,用于当所述误差超过误差阈值时,对所述通信设备的系统时钟进行校时。
进一步地,所述第二获取模块包括:
第二接收单元,用于在达到所述秒脉冲的上升沿时,接收所述全球定位系统发送的定位信息,所述定位信息包括所述全球定位系统的定位状态,所述全球定位系统的定位状态包括已定位和未定位;
第二获取单元,当所述全球定位系统的定位状态为已定位时,获取所述定位信息中的国际协调时间。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例提供的自动校时方法由通信设备接收gps发送的秒脉冲,在达到秒脉冲的上升沿时,获取通信系统的系统时钟,然后获取gps发送的定位信息中的utc,接着确定通信设备的系统时钟与utc的误差,比较该实时误差与误差阈值的大小。当通信设备的系统时钟与utc的实时误差超过误差阈值时,对通信设备的系统时钟进行自动校时。与现有的定时校时方法相比,该自动校时方法能够实时检测通信设备的系统时钟和utc时间的误差,并在当误差超过误差阈值时,自动对系统时钟进行校时,避免了因校正时间间隔过长或过短对通信设备造成不良的影响,保证通信设备的正常工作。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种自动校时方法的方法流程图;
图2是本发明实施例提供的一种系统时钟快于utc的校时示意图;
图3是本发明实施例提供的一种系统时钟慢于utc的校时示意图;
图4是本发明实施例提供的另一种自动校时方法的方法流程图;
图5是步骤201的方法流程图;
图6是步骤202的方法流程图;
图7是本发明实施例提供的一种自动校时装置的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种自动校时方法,图1是本发明实施例提供的一种自动校时方法的方法流程图,如图1所示,该自动校时方法包括:
步骤101、通信设备接收gps发送的秒脉冲。
在本发明实施例中,通信设备可以为具有移动通信功能的设备,例如电台等。
通信设备中设置有gps模块,或外接gps模块,通过gps模块接收gps发送的秒脉冲和定位信息。
步骤102、在达到秒脉冲的上升沿时,获取通信系统的系统时钟。
具体地,步骤102可以包括:
在达到秒脉冲的上升沿时,读取通信设备的系统时钟,并将通信设备的系统时钟中的纳秒值转换成毫秒值。
在本实施例中,通信设备采用vxworks嵌入式实时操作系统。在vxworks系统中可以通过clock_gettime函数获取系统时钟的日历时间,即从1970-1-10:0:0开始到当前时刻的秒数值。该日历时间包含两部分,一部分为秒值,一部分为纳秒值。理论上系统时钟的时钟精度可达到纳秒级,而根据通信设备的应用需求,要求系统时钟与utc的误差为毫秒级别。因此,在获取到通信设备的系统时钟的日历时间后,需要将系统时钟的日历时间的纳秒值转换成毫秒值。
可选地,通信设备可以调用vxworks系统中的clock_gettime函数读取通信设备的系统时钟。
步骤103、获取gps发送的定位信息中的utc。
其中,gps发送的定位信息中包括时间字段,时间字段中包括utc。
具体地,步骤103可以包括:
在达到秒脉冲的上升沿时,接收gps发送的定位信息,该定位信息包括gps的定位状态,gps的定位状态包括已定位和未定位。当gps的定位状态为已定位时,获取gps的定位信息中的utc。
在本实施例中,当gps的定位状态为已定位时,表示gps模块输出的定位信息有效,当gps的定位状态为未定位时,表示gps模块输出的定位信息无效,通过确定gps的定位状态,从而判断gps模块输出的定位信息是否有效。
步骤104、确定通信设备的系统时钟与utc的误差。
具体地,步骤104可以包括:
将获取到的通信设备的系统时钟中的纳秒值转换成毫秒值,确定通信设备的系统时钟的毫秒值为通信设备的系统时钟与utc的误差。
由于每个秒脉冲的上升沿时刻对应utc的整秒,因此utc的毫秒值为0,此时通信设备的系统时钟的毫秒值即为误差值。
例如,在某一秒脉冲的上升沿时刻,通信设备的系统时钟为1418955427秒11467940纳秒,将系统时钟的纳秒值转换成毫秒值,该毫秒值即为误差值,则可以计算出系统时钟的误差为11ms。
进一步地,在执行步骤105之前,该自动校时方法还可以包括:
接收误差阈值设置指令,根据误差阈值设置指令设置误差阈值m。
其中,校正人员可以通过通信设备的触摸屏或按键输入误差阈值设置指令,通信设备接收用户输入的误差阈值设置指令。
误差阈值m可以根据实际需要进行设置。在本实施例中,误差阈值可以设置为0~100ms,以保证通信设备的系统时钟和utc之间的误差不会过大,影响通信设备的正常工作。
步骤105、比较误差与误差阈值的大小。
由于每个秒脉冲的上升沿时刻对应utc的整秒,如果通信设备的系统时钟和utc完全同步,则系统时钟的毫秒值n应该为0。若n不为0,则表明系统时钟和utc存在误差,误差阈值为m。
图2是本发明实施例提供的一种系统时钟快于utc的校时示意图,如图2所示,其中n表示在达到秒脉冲的上升沿时系统时钟,△t表示在每个秒脉冲的上升沿时系统时钟与utc的差值,若△t≤m,表明系统时钟比utc快,且系统时钟与utc的误差小于误差阈值m,此时无需对系统时钟进行校时。若△t>m,表明系统时钟比utc快,且系统时钟与utc的误差大于误差阈值m,此时则需继续执行步骤106,以对系统时钟进行校时。
图3是本发明实施例提供的一种系统时钟慢于utc的校时示意图,如图3所示,其中n表示在达到秒脉冲的上升沿时的系统时钟,△t表示在每个秒脉冲的上升沿时系统时钟与utc的差值,若△t≥1000-m,表明系统时钟比utc慢,且系统时钟与utc的误差小于误差阈值m,此时无需对系统时钟进行校时。若△t<1000-m,表明系统时钟比utc慢,且系统时钟与utc的误差大于误差阈值m,此时则需继续执行步骤106,以对系统时钟进行校时。
步骤106、当误差超过误差阈值时,对通信设备的系统时钟进行校时。
具体地,步骤106可以包括:
将步骤103中获取到的utc转换成日历时间,将通信设备的系统时钟的纳秒值清零,将日历时间的秒值加1s,并将秒值加1s后的日历时间配置为通信设备的系统时钟,以完成对通信设备的系统时钟的校时。
具体地,结合图2,假设在第三个秒脉冲的上升沿时刻,△t>m,表明系统时钟比utc快,且系统时钟与utc的误差大于误差阈值m,此时执行步骤106。
结合图3,假设在第三个秒脉冲的上升沿时刻,△t<1000-m,表明系统时钟比utc慢,且系统时钟与utc的误差大于误差阈值m,此时执行步骤106。
本发明实施例提供的自动校时方法由通信设备接收gps发送的秒脉冲,在达到秒脉冲的上升沿时,获取通信系统的系统时钟,然后获取gps发送的定位信息中的utc,接着确定通信设备的系统时钟与utc的误差,比较该实时误差与误差阈值的大小。当通信设备的系统时钟与utc的实时误差超过误差阈值时,对通信设备的系统时钟进行自动校时。与现有的定时校时方法相比,该自动校时方法能够实时检测通信设备的系统时钟和utc时间的误差,并在当误差超过误差阈值时,自动对系统时钟进行校时,避免了因校正时间间隔过长或过短对通信设备造成不良的影响,保证通信设备的正常工作。
图4是本发明实施例提供的另一种自动校时方法的方法流程图,参见图4,该自动校时方法流程包括:
步骤201、通信设备启动时,对通信设备的嵌入式系统进行初始化。
在本实施例中,通信设备采用vxworks嵌入式实时操作系统。
在本发明实施例中,通信设备可以为具有移动通信功能的设备,例如电台等。通信设备中设置有gps模块,或外接gps模块,通过gps模块接收gps发送的秒脉冲和定位信息。
图5是步骤201的方法流程图,如图5所示,步骤201可以包括:
步骤2011、在通信设备启动时,创建时间解析任务。
其中,时间解析任务用于解析gps发送的定位信息,gps发送的定位信息包括utc和gps的定位状态,gps的定位状态包括已定位和未定位。
步骤2012、配置通信设备的中断优先级。
其中,通信设备的中断优先级是预先配置好的,后续中断按照预先配置好的中断优先级来执行。
在本实施例中,配置vxworks系统的秒脉冲中断的中断优先级为高优先级,配置串口中断的中断优先级低于秒脉冲中断的中断优先级,以使得vxworks系统在接收到gps发送的秒脉冲信号后,可以先获取通信系统的系统时钟,再接收gps发送的定位信息。
具体地,配置秒脉冲中断的中断优先级时,可以挂接秒脉冲中断处理函数到vxworks系统的外部中断进行配置。配置串口中断的中断优先级时,可以挂接串口中断处理函数到vxworks系统的串口中断进行配置。
步骤202、对通信设备的系统时钟进行初始化。
由于vxworks系统的系统时钟基于定时器硬件系统,在vxworks系统启动时,其系统时钟是从1970年1月1日0时0分0秒开始计时的,因此,每次启动vxworks系统时,均需要对vxworks系统的系统时钟进行初始化设置。vxworks系统提供了和posix1003.1b兼容的时间机制,可以通过clock_settime函数设置vxworks系统的系统时钟。vxworks系统还可以通过clock_gettime函数获取系统时钟的日历时间,即从1970-1-10:0:0开始到当前时刻的秒数值。该日历时间包含两部分,一部分为秒值,一部分为纳秒值。理论上系统时钟的时钟精度可达到纳秒级,而根据通信设备的应用需求,要求系统时钟与utc的误差为毫秒级别。因此,在获取到通信设备的系统时钟的日历时间后,需要将系统时钟的日历时间的纳秒值转换成毫秒值。
在本实施例中,可以定义一个全局变量a作为状态字,用于表明系统时钟的状态,系统时钟主要包括3个状态:“时间未获取,未校时”、“时间已获取,未校时”和“时间已获取,已校时”。状态字a初始化为“时间未获取,未校时”。状态字a可以为1字节无符号的整数。
具体地,在vxworks系统启动后第一次接收到gps发送秒脉冲时,vxworks系统可以在秒脉冲中断处理函数中判断状态字a,若状态字a的状态为“时间未获取,未校时”,则不进行步骤202。若状态字a的状态为“时间已获取,未校时”,则执行步骤202。若状态字a的状态为“时间已获取,已校时”,则跳过步骤202,直接执行步骤203。
在本实施例中,还可以定义一个全局变量m作为vxworks系统的系统时钟和utc的误差阈值,单位为毫秒。全局变量m可以为2字节无符号的整数。
图6是步骤202的方法流程图,如图6所示,步骤202可以包括:
步骤2021、获取gps发送的定位信息中的utc。
具体地,可以通过定位信息中的utc时间字段获取定位信息中的utc。
在获取gps发送的定位信息后,时间解析任务会解析gps发送的定位信息中的utc时间字段,当gps的定位状态为已定位时,则获取定位信息中的utc。此时,可以将状态字a的状态改为“时间已获取,未校时”。
当gps的定位状态为未定位时,则不获取定位信息中的utc,等待下一次获取gps发送的定位信息。
可选地,在本发明实施例中,还可以限定连续若干次获取到gps的定位状态均为已定位时才执行步骤2022,例如,若连续三次获取到gps发送的定位信息,且三次解析到的gps的定位状态均为已定位,则继续执行步骤2022,以保证接收到的gps发送的定位信息的稳定性。
步骤2022、将获取到的utc转换成日历时间。
具体地,可以调用mktime函数将utc转换为日历时间。
步骤2023、配置通信设备的系统时钟。
具体地,将日历时间的秒值加1s,并将秒值加1s后的日历时间配置为通信设备的系统时钟。
由于vxworks嵌入式系统先接收gps发送的秒脉冲,在达到秒脉冲的上升沿时,获取通信系统的系统时钟,再接收gps发送的定位信息,因此,在处理某一次的秒脉冲时,还未收到该次脉冲对应的gps定位信息,故需将日历时间的秒值加1s。
具体地,可以调用clock_settime函数将日历时间配置为通信设备的系统时钟。在完成系统时钟的初始配置后,可以改变状态字a为“时间已获取,已校时”。
步骤203、接收gps发送的秒脉冲。
具体地,vxworks嵌入式系统可以在秒脉冲中断处理函数中判断状态字a,此时状态字a的状态为“时间已获取,已校时”。
步骤204、在达到秒脉冲的上升沿时,获取通信系统的系统时钟。
具体地,步骤204可以包括:
在达到秒脉冲的上升沿时,读取通信设备的系统时钟,并将通信设备的系统时钟中的纳秒值转换成毫秒值。
可选地,通信设备可以调用vxworks系统中的clock_gettime函数读取通信设备的系统时钟。
步骤205、获取gps发送的定位信息中的utc。
其中,gps发送的定位信息中包括时间字段,时间字段中包括utc。
具体地,步骤205可以包括:
在达到秒脉冲的上升沿时,接收gps发送的定位信息,该定位信息包括gps的定位状态,gps的定位状态包括已定位和未定位。当gps的定位状态为已定位时,获取gps的定位信息中的utc。
在本实施例中,当gps的定位状态为已定位时,表示gps模块输出的定位信息有效,当gps的定位状态为未定位时,表示gps模块输出的定位信息无效,通过确定gps的定位状态,从而判断gps模块输出的定位信息是否有效。
步骤206、确定通信设备的系统时钟与utc的误差。
具体地,步骤206可以包括:
将获取到的通信设备的系统时钟中的纳秒值转换成毫秒值,确定通信设备的系统时钟的毫秒值为通信设备的系统时钟与utc的误差。
由于每个秒脉冲的上升沿时刻对应utc的整秒,因此utc的毫秒值为0,此时通信设备的系统时钟的毫秒值即为误差值。
步骤207、比较误差与误差阈值的大小。
由于每个秒脉冲的上升沿时刻对应utc的整秒,如果通信设备的系统时钟和utc完全同步,则系统时钟的日历时间毫秒值n应该为0。若n不为0,则表明系统时钟和utc对应的日历时间存在误差,误差阈值为m。
步骤208、当误差超过误差阈值时,对通信设备的系统时钟进行校时。
具体地,步骤208可以包括:
将步骤205中获取到的utc转换成日历时间,将通信设备的系统时钟的纳秒值清零,将日历时间的秒值加1s,并将秒值加1s后的日历时间配置为通信设备的系统时钟,以完成对通信设备的系统时钟的校时。
需要说明的是,步骤203至步骤208的具体实现方式与步骤101至步骤106相同,本发明在此不再赘述。
本发明实施例提供的自动校时方法由通信设备接收gps发送的秒脉冲,在达到秒脉冲的上升沿时,获取通信系统的系统时钟,然后获取gps发送的定位信息中的utc,接着确定通信设备的系统时钟与utc的误差,比较该实时误差与误差阈值的大小。当通信设备的系统时钟与utc的实时误差超过误差阈值时,对通信设备的系统时钟进行自动校时。与现有的定时校时方法相比,该自动校时方法能够实时检测通信设备的系统时钟和utc时间的误差,并在当误差超过误差阈值时,自动对系统时钟进行校时,避免了因校正时间间隔过长或过短对通信设备造成不良的影响,保证通信设备的正常工作。
图7是本发明实施例提供的一种自动校时装置的结构框图,如图7所示,该自动校时装置700包括第一接收模块701、获取模块702、第二接收模块703、计算模块704、比较模块705和校时模块706。
第一接收模块701,用于接收gps发送的秒脉冲。
第一获取模块702,用于在达到秒脉冲的上升沿时,获取通信系统的系统时钟。
第二获取模块703,用于用于获取gps发送的定位信息中的utc。
确定模块704,用于确定通信设备的系统时钟与utc的误差。
比较模块705,用于比较误差与误差阈值的大小。
校时模块706,用于当误差超过误差阈值时,对通信设备的系统时钟进行校时。
可选地,第二获取模块703还用于:
在达到秒脉冲的上升沿时,接收gps发送的定位信息,定位信息包括gps的定位状态,gps的定位状态包括已定位和未定位。当gps的定位状态为已定位时,获取定位信息中的国际协调时间。
可选地,确定模块704还用于:
将获取到的通信设备的系统时钟中的纳秒值转换成毫秒值。确定通信设备的系统时钟的毫秒值为通信设备的系统时钟与utc的误差。
进一步地,校时模块706还用于:
将获取到的utc转换成日历时间,将通信设备的系统时钟的纳秒值清零,将日历时间的秒值加1s,并将秒值加1s后的日历时间配置为通信设备的系统时钟。
在本实施例中,误差阈值可以设置为0~100ms。
可选地,该自动校时装置还可以包括初始化模块707,该初始化模块707用于在通信设备启动时,对通信设备的系统时钟进行初始化。
进一步地,初始化模块707还用于:
获取gps发送的定位信息中的utc,将获取到的utc转换成日历时间,将日历时间的秒值加1s,并将秒值加1s后的日历时间配置为通信设备的系统时钟。
可选地,该自动校时装置还可以包括指令接收模块708和阈值设置模块709。
指令接收模块708,用于接收误差阈值设置指令。
阈值设置模块709,用于根据误差阈值设置指令设置误差阈值。
本发明实施例中,由通信设备接收gps发送的秒脉冲,在达到秒脉冲的上升沿时,获取通信系统的系统时钟,然后获取gps发送的定位信息中的utc,接着确定通信设备的系统时钟与utc的误差,比较该实时误差与误差阈值的大小。当通信设备的系统时钟与utc的实时误差超过误差阈值时,对通信设备的系统时钟进行自动校时。该自动校时装置能够实时检测通信设备的系统时钟和utc时间的误差,并在当误差超过误差阈值时,自动对系统时钟进行校时,避免了因校正时间间隔过长或过短对通信设备造成不良的影响,保证通信设备的正常工作。
需要说明的是:上述实施例提供的自动校时装置在自动校时时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将通信设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的自动校时装置与自动校时方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。