本發(fā)明涉及一種基于gps模塊、嵌入式系統(tǒng)的計(jì)算機(jī)精確授時(shí)方法及其實(shí)現(xiàn)系統(tǒng),屬于計(jì)算機(jī)授時(shí)技術(shù)領(lǐng)域。
背景技術(shù):
當(dāng)今很多的應(yīng)用場景需要依賴計(jì)算機(jī)精確的同步時(shí)間來完成,尤其在需要多機(jī)互聯(lián)完成的任務(wù)中。例如,金融系統(tǒng)中需要進(jìn)行國際跨行轉(zhuǎn)賬時(shí),對(duì)于錢款的到賬時(shí)間必須記錄精確并且一致。計(jì)算機(jī)的計(jì)時(shí)通過晶體振蕩器實(shí)現(xiàn)。晶體振蕩器是從一塊石英晶體上按一定方位角切下的薄片,當(dāng)施加一定的電壓后會(huì)以相對(duì)固定的頻率發(fā)出電脈沖信號(hào)。計(jì)算機(jī)通過對(duì)脈沖信號(hào)計(jì)數(shù)實(shí)現(xiàn)了時(shí)間的計(jì)算。
由于加工工藝的限制和晶體震蕩電路中阻容器件的精度等因素,晶振所產(chǎn)生的脈沖頻率與理論值之間會(huì)存在一定的誤差,隨著時(shí)間的增加誤差會(huì)被慢慢地積累放大,這也是計(jì)算機(jī)需要每隔一定時(shí)間進(jìn)行時(shí)鐘調(diào)節(jié)的原因。計(jì)算機(jī)在聯(lián)網(wǎng)的時(shí)候可以通過ntp實(shí)現(xiàn)與國際時(shí)間的同步。
但是如果計(jì)算機(jī)工作環(huán)境中不允許連接互聯(lián)網(wǎng)時(shí)就需要另外一種對(duì)時(shí)間進(jìn)行調(diào)節(jié)的方法。gps衛(wèi)星裝載了高精度的銫原子鐘可在全球范圍內(nèi)提供精確的utc時(shí)間碼和秒定時(shí)脈沖。大部分對(duì)時(shí)間精度要求很高或是運(yùn)行時(shí)無法連接互聯(lián)網(wǎng)的場合都依賴gps系統(tǒng)實(shí)現(xiàn)時(shí)間的調(diào)節(jié),可是由于計(jì)算機(jī)系統(tǒng)的非實(shí)時(shí)特性,即使gps可以提供很精確的時(shí)間信號(hào),可是仍然無法保證計(jì)算機(jī)操作系統(tǒng)可以及時(shí)的進(jìn)行時(shí)間調(diào)節(jié),很難得到毫秒級(jí)時(shí)間調(diào)節(jié)的精確度。
中國專利文獻(xiàn)cn104363069a公開了一種基于北斗衛(wèi)星定位的網(wǎng)絡(luò)授時(shí)系統(tǒng)及方法,通過基于gps/bd模塊提供的精確時(shí)間信息,并結(jié)合內(nèi)部rtc時(shí)鐘,計(jì)算并修正出時(shí)間信息(年月日時(shí)分秒),通過tcp/ip網(wǎng)絡(luò)傳輸模塊,實(shí)時(shí)與網(wǎng)絡(luò)上發(fā)起授時(shí)請求的客戶端建立授時(shí)傳輸鏈路;根據(jù)客戶端向服務(wù)器發(fā)出的請求,通過ntp協(xié)議與發(fā)送請求信號(hào)的網(wǎng)絡(luò)客戶端進(jìn)行授時(shí)同步。但是,該專利存在授時(shí)客戶端依賴網(wǎng)絡(luò)的缺陷,通過網(wǎng)絡(luò)連接服務(wù)器端才能完成授時(shí),在很多戶外作業(yè)的場景中,并沒有網(wǎng)絡(luò)連接的支持。
中國專利文獻(xiàn)cn202995290u公開了一種基于衛(wèi)星的時(shí)鐘同步實(shí)現(xiàn)裝置,特別涉及一種利用脈沖與串口相結(jié)合的基于衛(wèi)星的時(shí)鐘同步實(shí)現(xiàn)裝置。衛(wèi)星定位模塊通過脈沖輸出接口連接可編程電路或asic電路或處理器;衛(wèi)星定位模塊通過脈沖輸出接口為中斷信號(hào),每個(gè)脈沖到來時(shí),產(chǎn)生一次中斷;可編程電路或asic電路或處理器通過串口輸出接口得到衛(wèi)星定位模塊的時(shí)間信號(hào);在中斷中通過串口輸出接口得到的更新的串口數(shù)據(jù)就是最新的同步時(shí)間,這樣就能得到準(zhǔn)確的時(shí)間。但是,該專利得到精準(zhǔn)的時(shí)間后并沒有討論如何實(shí)現(xiàn)對(duì)授時(shí)設(shè)備進(jìn)行精確授時(shí)的使用方式,在與授時(shí)設(shè)備的通訊過程中,會(huì)存在不可避免的時(shí)間延遲,導(dǎo)致授時(shí)設(shè)備授時(shí)的精確度降低。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)利用gps進(jìn)行系統(tǒng)時(shí)間調(diào)節(jié)時(shí)操作系統(tǒng)的非實(shí)時(shí)性造成的調(diào)節(jié)誤差,本發(fā)明專利提出一種利用嵌入式系統(tǒng)輔助的方法提供計(jì)算機(jī)毫秒級(jí)誤差精度的時(shí)間調(diào)節(jié)方法。
本發(fā)明還提供了上述計(jì)算機(jī)精確授時(shí)方法的實(shí)現(xiàn)系統(tǒng)。
本發(fā)明可以對(duì)無法利用互聯(lián)網(wǎng)進(jìn)行調(diào)時(shí)的計(jì)算機(jī)進(jìn)行精確授時(shí),授時(shí)精度可以達(dá)到毫秒級(jí),滿足計(jì)算機(jī)對(duì)精確時(shí)間同步工作的時(shí)間要求。
術(shù)語解釋:
pps(pulsepersecond),就是每秒脈沖數(shù),在gps模塊中,gps秒脈沖信號(hào)pps每一秒鐘發(fā)出一次,用來指示整秒的時(shí)刻,而該時(shí)刻通常是用gps秒脈沖的上升沿來標(biāo)示。gps能給出utc時(shí)間,用戶收到時(shí)是會(huì)有延遲,為了精確授時(shí),引入pps信號(hào)上升沿來標(biāo)示utc的整秒時(shí)刻,精度可以達(dá)到納秒級(jí),并且沒有累積誤差。
本發(fā)明的技術(shù)方案為:
一種基于gps模塊、嵌入式系統(tǒng)的計(jì)算機(jī)精確授時(shí)方法,包括步驟如下:
gps模塊實(shí)時(shí)產(chǎn)生utc時(shí)間碼和pps信號(hào),嵌入式系統(tǒng)的外部中斷獲取gps模塊發(fā)出的pps信號(hào),嵌入式系統(tǒng)與計(jì)算機(jī)系統(tǒng)進(jìn)行通信,利用嵌入式系統(tǒng)計(jì)算通信過程延遲和計(jì)算機(jī)操作系統(tǒng)延遲獲取精確時(shí)間。
本發(fā)明引入嵌入式系統(tǒng),主要是由于嵌入式系統(tǒng)的實(shí)時(shí)性高、攜帶方便且成本低。嵌入式系統(tǒng)實(shí)時(shí)性高,利用嵌入式系統(tǒng)可以精準(zhǔn)的記錄由于計(jì)算機(jī)操作系統(tǒng)的非實(shí)時(shí)性所造成的時(shí)間延遲;嵌入式系統(tǒng)的成本低且方便攜帶,可以很方便地應(yīng)用于野外等特殊的工作環(huán)境。本發(fā)明考慮通信過程延遲和計(jì)算機(jī)操作系統(tǒng)延遲的授時(shí)方式會(huì)更加精準(zhǔn)。
根據(jù)本發(fā)明優(yōu)選的,嵌入式系統(tǒng)與計(jì)算機(jī)系統(tǒng)進(jìn)行通信,利用嵌入式系統(tǒng)計(jì)算通信過程延遲和計(jì)算機(jī)操作系統(tǒng)延遲獲取精確時(shí)間,包括步驟如下:
gps模塊每整秒發(fā)出一次pps信號(hào),其精確度在ns級(jí),通過配置gps模塊使其每隔1秒發(fā)送一次utc時(shí)間碼,利用嵌入式系統(tǒng)的外部中斷獲取gps模塊發(fā)出的pps信號(hào),設(shè)置定時(shí)器初始計(jì)數(shù)值為零,捕獲到pps信號(hào)后立即開啟定時(shí)器,記錄并保存gps模塊隨后發(fā)出的utc時(shí)間碼,嵌入式系統(tǒng)與計(jì)算機(jī)系統(tǒng)進(jìn)行通信,通信包括第一次通信、第二次通信:
a、第一次通信:嵌入式系統(tǒng)將隨后發(fā)出的utc時(shí)間碼和空的延時(shí)數(shù)據(jù)發(fā)送給計(jì)算機(jī)系統(tǒng),即發(fā)出授時(shí)請求,計(jì)算機(jī)系統(tǒng)在收到后,即計(jì)算機(jī)系統(tǒng)接收授時(shí)請求,識(shí)別到空的延時(shí)數(shù)據(jù),不調(diào)節(jié)時(shí)間,立即反饋給嵌入式系統(tǒng)一個(gè)ack信號(hào);嵌入式系統(tǒng)接收到ack信號(hào)后,記錄定時(shí)器的當(dāng)前計(jì)數(shù)值并關(guān)閉定時(shí)器,通過當(dāng)前計(jì)數(shù)值計(jì)算出從嵌入式系統(tǒng)發(fā)出授時(shí)請求到計(jì)算機(jī)系統(tǒng)接收授時(shí)請求這段時(shí)間內(nèi)通訊和軟件時(shí)延總和,即得到時(shí)延時(shí)間,第一次通信結(jié)束;該過程的意義在于預(yù)估嵌入式系統(tǒng)與計(jì)算機(jī)通信過程的時(shí)延和計(jì)算機(jī)操作系統(tǒng)的非實(shí)時(shí)性造成的時(shí)延;
b、第二次通信:嵌入式系統(tǒng)得到時(shí)延時(shí)間后,立刻將時(shí)延時(shí)間加倍,然后存入通信數(shù)據(jù)幀utc時(shí)間碼之后,再次發(fā)送給計(jì)算機(jī)系統(tǒng),計(jì)算機(jī)系統(tǒng)收到該通信數(shù)據(jù)幀之后,分析出時(shí)延時(shí)間和utc時(shí)間,將時(shí)延時(shí)間加上utc整秒時(shí)間,進(jìn)行系統(tǒng)授時(shí),授時(shí)結(jié)束后反饋給嵌入式系統(tǒng)ack信號(hào),完成授時(shí)。從而消除通訊過程和操作系統(tǒng)的非實(shí)時(shí)性對(duì)授時(shí)精確度所帶來的影響。
由于操作系統(tǒng)的非實(shí)時(shí)性,授時(shí)程序受操作系統(tǒng)工作負(fù)載的波動(dòng)較大,通過以上兩次通訊過程,可以減少嵌入式系統(tǒng)與計(jì)算機(jī)操作系統(tǒng)之間由于通訊所造成的時(shí)延和操作系統(tǒng)調(diào)度對(duì)授時(shí)軟件所造成的時(shí)延。
上述計(jì)算機(jī)精確授時(shí)方法的實(shí)現(xiàn)系統(tǒng),包括gps模塊、嵌入式系統(tǒng)、計(jì)算機(jī),gps模塊、嵌入式系統(tǒng)、計(jì)算機(jī)依次連接,所述嵌入式系統(tǒng)包括定時(shí)器;
所述gps模塊產(chǎn)生utc時(shí)間碼和pps信號(hào);利用所述嵌入式系統(tǒng)的外部中斷來捕獲pps信號(hào),捕獲到pps信號(hào)后開啟定時(shí)器,然后與計(jì)算機(jī)進(jìn)行通信,通信過程由兩次組成,第一次通信數(shù)據(jù)幀中延時(shí)時(shí)間為零,當(dāng)計(jì)算機(jī)收到嵌入式系統(tǒng)發(fā)出的串口中斷信號(hào)后立即返回嵌入式系統(tǒng)一條信息,該過程的意義在于預(yù)估嵌入式系統(tǒng)與計(jì)算機(jī)通信過程的時(shí)延和計(jì)算機(jī)操作系統(tǒng)的非實(shí)時(shí)性造成的時(shí)延;第二次通信將時(shí)延時(shí)間一同打包進(jìn)入通信數(shù)據(jù)幀,所述計(jì)算機(jī)收到帶有時(shí)延時(shí)間的數(shù)據(jù)后執(zhí)行計(jì)算機(jī)的時(shí)間調(diào)節(jié)。
根據(jù)本發(fā)明優(yōu)選的,所述gps模塊、所述嵌入式系統(tǒng)、所述計(jì)算機(jī)通過串行通信接口依次連接。
根據(jù)本發(fā)明優(yōu)選的,所述gps模塊的型號(hào)為atk-neo-6mgps,所述嵌入式系統(tǒng)型號(hào)為stm32系統(tǒng)板,所述計(jì)算機(jī)系統(tǒng)為windowsxp系統(tǒng)。
本發(fā)明的有益效果為:
1、本發(fā)明可以實(shí)現(xiàn)精確計(jì)算機(jī)授時(shí),精確度在ms級(jí),是通過嵌入式設(shè)備和授時(shí)程序的配合實(shí)現(xiàn)的,通過特有的兩次通訊手段,可以盡最大可能的降低通訊過程、軟件執(zhí)行所帶來的延時(shí)影響,實(shí)現(xiàn)對(duì)計(jì)算機(jī)操作系統(tǒng)的精確授時(shí)。
2、本發(fā)明依賴的是嵌入式系統(tǒng)實(shí)現(xiàn)對(duì)計(jì)算機(jī)的授時(shí),方便攜帶,環(huán)境適應(yīng)性比較強(qiáng),可以滿足在野外沒有網(wǎng)絡(luò)連接的情況下對(duì)計(jì)算機(jī)的精準(zhǔn)授時(shí)要求。
3、本發(fā)明嵌入式系統(tǒng)與計(jì)算機(jī)系統(tǒng)的通訊可以使用usb接口,很方便地應(yīng)用于各種計(jì)算機(jī)硬件平臺(tái)。
4、本發(fā)明授時(shí)程序做了接口封裝,作為dll可以供其他應(yīng)用程序調(diào)用,授時(shí)操作簡單方便。
附圖說明
圖1為本發(fā)明計(jì)算機(jī)精確授時(shí)方法的實(shí)現(xiàn)系統(tǒng)的結(jié)構(gòu)框圖;
圖2為基于gps模塊、嵌入式系統(tǒng)的計(jì)算機(jī)精確授時(shí)方法中兩次通信過程示意圖。
具體實(shí)施方式
下面結(jié)合說明書附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步限定,但不限于此。
實(shí)施例1
一種基于gps模塊、嵌入式系統(tǒng)的計(jì)算機(jī)精確授時(shí)方法,包括步驟如下:
(1)gps模塊以1hz的頻率每整秒發(fā)出一次pps信號(hào),其精確度在ns級(jí),通過配置gps模塊使其每隔1秒發(fā)送一次utc時(shí)間碼,gps模塊與嵌入式系統(tǒng)通訊的串口屬性設(shè)定為波特率9600bps、奇偶校驗(yàn)方式為none、數(shù)據(jù)位為8、停止位為1,并與嵌入式系統(tǒng)的串口1建立物理連接,pps信號(hào)中斷連接嵌入式系統(tǒng)的外部中斷引腳;
完成嵌入式系統(tǒng)中對(duì)高精度定時(shí)器的設(shè)定和外部中斷的初始化操作,高精度定時(shí)器的定時(shí)頻率為1mhz,外部中斷設(shè)定為上升沿觸發(fā),并使能外部中斷;
完成嵌入式系統(tǒng)中對(duì)第一次通信、第二次通信所使用的串口的初始化,串口1和串口2均設(shè)置為波特率9600bps、奇偶校驗(yàn)方式為none、數(shù)據(jù)位為8、停止位為1;設(shè)定串口1和串口2的緩存區(qū),開啟接收中斷,準(zhǔn)備數(shù)據(jù)接收;
(2)設(shè)置定時(shí)器初始計(jì)數(shù)值為零,捕獲到pps信號(hào)后立即清空高精度定時(shí)器,并開啟高精度定時(shí)器,接收隨后gps通過串口1發(fā)送過來的utc時(shí)間碼,與空的時(shí)延時(shí)間一起組成通訊幀,通過串口0發(fā)送到計(jì)算機(jī)的串口;
(3)計(jì)算機(jī)的授時(shí)程序會(huì)配置好相應(yīng)的串口,一直等待嵌入式系統(tǒng)發(fā)送通訊幀,當(dāng)收到的通訊幀中的時(shí)延時(shí)間為0時(shí),立刻返回給嵌入式系統(tǒng)一個(gè)ack信號(hào);
(4)嵌入式系統(tǒng)收到ack信號(hào)之后,會(huì)停止高精度定時(shí)器的計(jì)數(shù),并停止定時(shí)器,讀出計(jì)數(shù)值后計(jì)算出由于嵌入式系統(tǒng)與計(jì)算機(jī)通訊造成的時(shí)延和由于操作系統(tǒng)的非實(shí)時(shí)性造成的時(shí)延,將該時(shí)延時(shí)間加倍后與utc時(shí)間碼一起再次通過串口0發(fā)送到計(jì)算機(jī)串口;兩次通信過程如圖2所示。
(5)計(jì)算機(jī)收到帶有有效時(shí)延的通訊幀后,將utc時(shí)間碼解析出來,加上時(shí)延時(shí)間后調(diào)整系統(tǒng)的時(shí)間。
本實(shí)施例通過實(shí)際的測量驗(yàn)證,對(duì)計(jì)算機(jī)系統(tǒng)的授時(shí)精度可以到達(dá)10ms以內(nèi)。
實(shí)施例2
上述計(jì)算機(jī)精確授時(shí)方法的實(shí)現(xiàn)系統(tǒng),如圖1所示,包括gps模塊、嵌入式系統(tǒng)、計(jì)算機(jī),gps模塊、嵌入式系統(tǒng)、計(jì)算機(jī)依次連接,嵌入式系統(tǒng)包括定時(shí)器;gps模塊、嵌入式系統(tǒng)、計(jì)算機(jī)通過串行通信接口依次連接。gps模塊的型號(hào)為atk-neo-6mgps,嵌入式系統(tǒng)型號(hào)為stm32系統(tǒng)板,計(jì)算機(jī)系統(tǒng)為windowsxp系統(tǒng)。
gps模塊產(chǎn)生utc時(shí)間碼和pps信號(hào);利用嵌入式系統(tǒng)的外部中斷來捕獲pps信號(hào),捕獲到pps信號(hào)后開啟定時(shí)器,然后與計(jì)算機(jī)進(jìn)行通信,通信過程由兩次組成,第一次通信數(shù)據(jù)幀中延時(shí)時(shí)間為零,當(dāng)計(jì)算機(jī)收到嵌入式系統(tǒng)發(fā)出的串口中斷信號(hào)后立即返回嵌入式系統(tǒng)一條信息,該過程的意義在于計(jì)算通信過程和操作系統(tǒng)的時(shí)延;第二次通信將延時(shí)時(shí)間一同打包進(jìn)入通信數(shù)據(jù)幀,所述計(jì)算機(jī)收到帶有延時(shí)時(shí)間的數(shù)據(jù)后執(zhí)行計(jì)算機(jī)的時(shí)間調(diào)節(jié)。