本發(fā)明涉及一種基于核密度估計(jì)法(Kernel Density Estimate,KDE)的北斗衛(wèi)星導(dǎo)航系統(tǒng)(BeiDou Navigation Satellite System,BDS)與全球定位系統(tǒng)(Global Positioning System,GPS)雙源秒脈沖(1Pulse Per Second,1PPS)無縫切換方法,屬于衛(wèi)星授時(shí)技術(shù)領(lǐng)域。
背景技術(shù):
移動(dòng)通信以及智能電網(wǎng)和智能化變電站的快速推進(jìn)要求全網(wǎng)協(xié)調(diào)一致,對時(shí)間同步的要求日益迫切,需要準(zhǔn)確、安全、可靠的時(shí)鐘信號為系統(tǒng)各類運(yùn)行設(shè)備和業(yè)務(wù)提供精確的時(shí)間服務(wù)。
目前,在移動(dòng)通信領(lǐng)域中,基站的時(shí)間同步要求為:①基站應(yīng)支持通過1PPS信號和TOD信息輸入獲得同步定時(shí)信息,使基站與傳輸網(wǎng)絡(luò)上游時(shí)間同步設(shè)備之間滿足空口時(shí)間和頻率精度要求的同步;②對于1PPS秒脈沖,采用上升沿作為準(zhǔn)時(shí)沿,上升時(shí)間應(yīng)小于50ns,脈寬應(yīng)為20ms~200ms;③TOD信息波特率默認(rèn)為9600,無奇偶校驗(yàn),1個(gè)起始位(用低電平表示),1個(gè)停止位(用高電平表示),空閑幀為高電平,8個(gè)數(shù)據(jù)位,應(yīng)在1PPS上升沿1ms后開始傳送TOD信息,并在500ms內(nèi)傳完,此TOD消息標(biāo)示當(dāng)前1PPS觸發(fā)上升沿時(shí)間。TOD協(xié)議報(bào)文發(fā)送頻率為每秒1次。
電力系統(tǒng)對時(shí)間同步精度的要求是:①故障記錄的同步精度要求1ms;②對狀態(tài)量采集的同步精度要求40μs;③繼電保護(hù)現(xiàn)場試驗(yàn)的同步精度要求10μs;④相量實(shí)時(shí)測量的同步精度要求5μs;⑤行波故障,若要達(dá)到300m的定位精度,同步精度要求1μs,考慮散射因素的影響,同步精度要求0.5μs左右。根據(jù)時(shí)間傳播技術(shù)的現(xiàn)狀和應(yīng)用前景,電力系統(tǒng)統(tǒng)一時(shí)鐘的精度可以定為0.5~1μs。
由于在通信系統(tǒng)和電力系統(tǒng)對時(shí)間同步的要求都很高,保證時(shí)鐘同步的授時(shí)時(shí)鐘源成為了系統(tǒng)核心設(shè)備,授時(shí)時(shí)鐘源設(shè)備的失效將會(huì)引起整個(gè)系統(tǒng)的崩潰。為了增加授時(shí)時(shí)鐘源的可靠性,我們需要配備多個(gè)時(shí)鐘源并實(shí)現(xiàn)多個(gè)時(shí)鐘源的在線無縫切換,因此研究多時(shí)鐘源在線無縫切換方法對保證通信系統(tǒng)、電力系統(tǒng)的可靠性有較高的實(shí)際應(yīng)用價(jià)值。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種基于核密度估計(jì)法(KDE)的中國北斗衛(wèi)星導(dǎo)航系統(tǒng)(BDS)與全球定位系統(tǒng)(GPS)雙源秒脈沖(1PPS)無縫切換方法,通過這種方法可以降低雙源秒脈沖切換時(shí)的抖動(dòng),提高秒脈沖的授時(shí)精度。
為實(shí)現(xiàn)上述目的,本發(fā)明所采用的具體技術(shù)方案為:
一種基于核密度估計(jì)法的BDS與GPS雙源秒脈沖無縫切換方法,包括以下步驟:
1、通過FPGA(Field Programmable Gate Array)的內(nèi)部鎖相環(huán)把外部的50MHz恒溫晶振時(shí)鐘CLOCK_50M進(jìn)行擴(kuò)頻,獲得200MHz高頻時(shí)鐘脈沖CLOCK_200M;
2、利用CLOCK_200M時(shí)鐘脈沖驅(qū)動(dòng)64位計(jì)數(shù)器,獲得每個(gè)時(shí)鐘的計(jì)數(shù)索引SystemCountIndex;同時(shí)在CLOCK_200M時(shí)鐘脈沖驅(qū)動(dòng)下,分別對BDS與GPS的秒脈沖上升沿進(jìn)行檢測,獲得BDS與GPS的秒脈沖上升沿位置編號BDS_PulseEdgeCountIndex、GPS_PulseEdgeCountIndex,再根據(jù)前后的位置差獲得BDS與GPS的秒脈沖寬度計(jì)數(shù)BDS_PulseEdgeSpan、GPS_PulseEdgeSpan;
3、利用核密度估計(jì)法計(jì)算BDS與GPS的秒脈沖寬度計(jì)數(shù)的統(tǒng)計(jì)特性,獲得其概率密度函數(shù)、均值、標(biāo)準(zhǔn)方差,再根據(jù)三倍方差剔除法去除抖動(dòng)較大的秒脈沖;
4、剔除抖動(dòng)較大的秒脈沖后,根據(jù)BDS與GPS的秒脈沖寬度計(jì)數(shù)BDS_PulseEdgeSpan、GPS_PulseEdgeSpan,利用線性預(yù)測方法分別預(yù)測計(jì)算BDS與GPS當(dāng)前的秒脈沖上升沿計(jì)數(shù)BDS_CalculatedEdgeCountIndex、GPS_CalculatedEdgeCountIndex及秒脈沖寬度計(jì)數(shù)BDS_CalculatedEdgeSpan、GPS_CalculatedEdgeSpan;
5、根據(jù)狀態(tài)管理,利用BDS與GPS的秒脈沖上升沿計(jì)數(shù)BDS_CalculatedEdgeCountIndex、GPS_CalculatedEdgeCountIndex及BDS與GPS的秒脈沖寬度計(jì)數(shù)BDS_CalculatedEdgeSpan、GPS_CalculatedEdgeSpan計(jì)算系統(tǒng)當(dāng)前的秒脈沖上升沿計(jì)數(shù)DTS_PulseEdgeCountIndex以及秒脈沖寬度計(jì)數(shù)DTS_PulseEdgeSpan,生成雙源無縫切換的秒脈沖。
本發(fā)明提供了一種基于核密度估計(jì)法的BDS與GPS雙源秒脈沖無縫切換方法,當(dāng)給授時(shí)時(shí)鐘源配備BDS與GPS雙源時(shí),通過這種方法可以降低雙源秒脈沖切換時(shí)的抖動(dòng),提高秒脈沖的授時(shí)精度,進(jìn)而能夠大大提高授時(shí)時(shí)鐘源的可靠性。
附圖說明
圖1為本發(fā)明基于核密度估計(jì)法的BDS與GPS雙源秒脈沖無縫切換方法的系統(tǒng)框圖。
圖2為本發(fā)明一個(gè)小時(shí)秒脈沖的核密度估計(jì)結(jié)果。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明做進(jìn)一步的詳細(xì)說明。
如圖1所示,本發(fā)明基于核密度估計(jì)法的BDS與GPS雙源秒脈沖無縫切換方法包括以下步驟:
1、通過FPGA(Field Programmable Gate Array)的內(nèi)部鎖相環(huán)把外部的50MHz恒溫晶振時(shí)鐘CLOCK_50M進(jìn)行擴(kuò)頻,獲得200MHz高頻時(shí)鐘脈沖CLOCK_200M;
2、利用CLOCK_200M時(shí)鐘驅(qū)動(dòng)64位計(jì)數(shù)器,獲得每個(gè)時(shí)鐘的計(jì)數(shù)索引SystemCountIndex;同時(shí)在CLOCK_200M時(shí)鐘驅(qū)動(dòng)下,分別對BDS與GPS的秒脈沖上升沿進(jìn)行檢測,獲得BDS與GPS的秒脈沖上升沿位置編號BDS_PulseEdgeCountIndex、GPS_PulseEdgeCountIndex,再根據(jù)前后的位置差獲得BDS與GPS的秒脈沖寬度計(jì)數(shù)BDS_PulseEdgeSpan、GPS_PulseEdgeSpan;
3、利用核密度估計(jì)法計(jì)算BDS與GPS的秒脈沖寬度計(jì)數(shù)的統(tǒng)計(jì)特性,獲得其概率密度函數(shù)、均值、標(biāo)準(zhǔn)方差,再根據(jù)三倍方差剔除法去除抖動(dòng)較大的秒脈沖,以確保誤差加大的秒脈沖不進(jìn)入后續(xù)的切換計(jì)算,保證切換系統(tǒng)的穩(wěn)定性;
4、剔除抖動(dòng)較大的秒脈沖后,根據(jù)BDS與GPS的秒脈沖寬度計(jì)數(shù)BDS_PulseEdgeSpan、GPS_PulseEdgeSpan,利用線性預(yù)測方法分別預(yù)測計(jì)算BDS與GPS當(dāng)前的秒脈沖上升沿計(jì)數(shù)BDS_CalculatedEdgeCountIndex、GPS_CalculatedEdgeCountIndex及秒脈沖寬度計(jì)數(shù)BDS_CalculatedEdgeSpan、GPS_CalculatedEdgeSpan;
5、根據(jù)狀態(tài)管理,利用BDS與GPS的秒脈沖上升沿計(jì)數(shù)BDS_CalculatedEdgeCountIndex、GPS_CalculatedEdgeCountIndex及BDS與GPS的秒脈沖寬度計(jì)數(shù)BDS_CalculatedEdgeSpan、GPS_CalculatedEdgeSpan計(jì)算系統(tǒng)當(dāng)前的秒脈沖上升沿計(jì)數(shù)DTS_PulseEdgeCountIndex以及秒脈沖寬度計(jì)數(shù)DTS_PulseEdgeSpan,生成雙源無縫切換的秒脈沖。
在所述步驟2、3、4、5中,分別采用1PPS上升沿檢測模塊、KDE檢查模塊、KDE預(yù)測模塊、1PPS上升沿切換計(jì)算模塊作為核心模塊對數(shù)據(jù)進(jìn)行處理,以下詳細(xì)說明各核心模塊的具體處理過程。
一、所述步驟2采用的核心模塊是1PPS上升沿檢測模塊,其具體處理過程為:
輸入:1PPS方波脈沖;
輸出:1PPS上升沿的200MHz 64位計(jì)數(shù)位置索引PulseEdgeCountIndex;
處理過程:
步驟101:初始化狀態(tài)管理變量S為空閑狀態(tài),S=EDGE_CHECK_IDLE;狀態(tài)維持計(jì)數(shù)SC=0;
步驟102:每個(gè)循環(huán)執(zhí)行周期,當(dāng)前周期計(jì)數(shù)為SystemCountIndex,按S的當(dāng)前值執(zhí)行不同的處理過程;如果S=EDGE_CHECK_IDLE執(zhí)行“步驟103”,如果S=EDGE_CHECK_START執(zhí)行“步驟104”,如果S=EDGE_CHECK_LOW執(zhí)行“步驟105”,如果S=EDGE_CHECK_HIGH執(zhí)行“步驟106”;
步驟103:如果1PPS為低電平:則檢測SC大小,如果SC大于最高閾值,則設(shè)置狀態(tài)為S=EDGE_CHECK_START,并且SC=0,否則SC累加一;如果1PPS為高電平計(jì)數(shù)重新開始SC=0;
步驟104:如果1PPS為低電平:則檢測SC大小,如果SC大于最高閾值,則設(shè)置狀態(tài)為S=EDGE_CHECK_LOW,并且SC=0,否則SC累加一;如果1PPS為高電平計(jì)數(shù)重新開始SC=0;
步驟105:如果1PPS為低電平:則檢測SC大小,如果SC大于最高閾值,則設(shè)置狀態(tài)為S=EDGE_CHECK_HIGH,并且SC=0,否則SC累加一;如果1PPS為高電平計(jì)數(shù)重新開始SC=0;
步驟106:如果1PPS為高電平:則檢測SC大小,如果SC大于最高閾值,則設(shè)置狀態(tài)為S=EDGE_CHECK_IDLE,輸出結(jié)果PulseEdgeCountIndex,并且SC=0,否則SC累加一;如果1PPS為低電平計(jì)數(shù)重新開始SC=0,其中
PulseEdgeCountIndex=SystemCountIndex-最高閾值-1。
二、所述步驟3采用的核心模塊是KDE檢查模塊,其具體處理過程為:
輸入:1PPS上升沿的200MHz 64位計(jì)數(shù)位置索引PulseEdgeCountIndex;
輸出:該位置索引是否通過檢查;
處理過程:
步驟201:計(jì)算每秒t的計(jì)數(shù)寬度xt,
其中,xt=PulseEdgeCountIndext–PulseEdgeCountIndex(t-1)
步驟202:計(jì)算概率密度函數(shù)p(x)的核密度估計(jì)定義為:
其中:K(.)為核函數(shù)(kernel function),h為窗寬,計(jì)算結(jié)果如圖2所示;
步驟203:利用滑動(dòng)窗口,選取1個(gè)小時(shí)3600個(gè)1PPS計(jì)數(shù)寬度xt計(jì)算均值:
E=x3600p(x3600)+...+x2p(x2)+x1p(x1)
步驟204:利用滑動(dòng)窗口,選取1個(gè)小時(shí)3600個(gè)1PPS計(jì)數(shù)寬度xt計(jì)算方差:
D=(x3600-E)2p(x3600)+...+(x2-E)2p(x2)+(x1-E)2p(x1)
步驟205:根據(jù)方差計(jì)算標(biāo)準(zhǔn)差;
步驟206:根據(jù)三倍均方差準(zhǔn)則檢查當(dāng)前脈沖計(jì)數(shù):如果當(dāng)前計(jì)數(shù)xt與均值E相減大于三倍標(biāo)準(zhǔn)差,則當(dāng)前計(jì)數(shù)不通過檢查,否則通過檢查。
三、所述步驟4采用的核心模塊是KDE預(yù)測模塊,其具體處理過程為:
輸入:通過檢查的1PPS上升沿的200MHz 64位計(jì)數(shù)位置索引PulseEdgeCountIndex歷史序列xi;
輸出:當(dāng)前位置索引的預(yù)測結(jié)果x’0;
處理過程:
步驟301:計(jì)算預(yù)測權(quán)重ai;
步驟302:計(jì)算歸一預(yù)測權(quán)重a’i;
步驟303:計(jì)算居中脈沖位置索引:
x5=(a’ix0+a’ix1+a’ix2+a’ix3+a’ix4+a’ix6+a’ix7+a’ix8+a’ix9+a’ix10)/10;
步驟304:計(jì)算居當(dāng)前沖位置索引:x’0=x5+6E。
四、所述步驟5采用的核心模塊是1PPS上升沿切換計(jì)算模塊,其具體處理過程為:
輸入:BDS的1PPS方波預(yù)測脈沖BDS_CalculatedEdgeCountIndex、GPS的1PPS方波預(yù)測脈沖GPS_CalculatedEdgeCountIndex;
輸出:無縫切換計(jì)算結(jié)果DTS_PulseEdgeCountIndex;
處理過程:
步驟401:初始化切換狀態(tài)管理變量S為空閑狀態(tài),S=EDGE_PROCESS_IDLE;
步驟402:每個(gè)1PPS循環(huán)執(zhí)行周期,按S的當(dāng)前值執(zhí)行不同的處理過程;如果S=EDGE_PROCESS_IDLE執(zhí)行“步驟403”,如果S=EDGE_PROCESS_WAITPULSE執(zhí)行“步驟404”,如果S=EDGE_PROCESS_RUNNING執(zhí)行“步驟405”,如果S=EDGE_PROCESS_DONE執(zhí)行“步驟406”;
步驟403:如果BDS與GPS的KDE預(yù)測計(jì)算均在空閑狀態(tài),切換狀態(tài)為S=EDGE_PROCESS_WAITPULSE;
步驟404:如果BDS與GPS的KDE預(yù)測計(jì)算結(jié)果均有效,切換狀態(tài)為S=EDGE_PROCESS_RUNNING,1PPS切換源為BDS;如果BDS預(yù)測計(jì)算結(jié)果有效,GPS預(yù)測計(jì)算結(jié)果無效,切換狀態(tài)為S=EDGE_PROCESS_RUNNING,1PPS切換源為BDS;如果BDS預(yù)測計(jì)算結(jié)果無效,GPS預(yù)測計(jì)算結(jié)果有效,等待10ms后,如果BDS預(yù)測計(jì)算結(jié)果仍然無效,則切換狀態(tài)為S=EDGE_PROCESS_RUNNING,1PPS切換源為GPS;如果BDS與GPS的KDE預(yù)測計(jì)算結(jié)果均無效,等待100ms后,再次檢查仍然均無效,則切換狀態(tài)為S=EDGE_PROCESS_RUNNING,1PPS切換源為內(nèi)部計(jì)算DTS;
步驟405:如果1PPS切換源為BDS,則
DTS_PulseEdgeCountIndex=BDS_CalculatedEdgeCountIndex;
如果1PPS切換源為GPS,則
DTS_PulseEdgeCountIndex=GPS_CalculatedEdgeCountIndex;
如果1PPS切換源為DTS,則
DTS_PulseEdgeCountIndex=DTS_PulseEdgeCountIndex+E;
步驟406:如果該1PPS切換計(jì)算完成,則切換狀態(tài)為S=EDGE_PROCESS_IDLE。