賈成龍,亓常松
(浙江海洋學(xué)院數(shù)理與信息學(xué)院,浙江舟山 316022)
國家電網(wǎng)公司發(fā)布的技術(shù)規(guī)范中明確要求新投運的需要授時的變電站自動化系統(tǒng)間隔層設(shè)備原則上應(yīng)采用GPS&IRIG-B碼對時方式實現(xiàn)對時。GPS&IRIG-B碼時間系統(tǒng)是把GPS衛(wèi)星信號和現(xiàn)代化靶場間通用的IRIG-B串行時間碼封裝于一體的、高精度的、廉價的、可單獨建立的對時網(wǎng)絡(luò),在設(shè)備終端前安裝解碼器即可完成設(shè)備精確對時,因此IRIG-B碼解碼是變電站對時系統(tǒng)中最關(guān)鍵和最復(fù)雜的部分。
目前國內(nèi)已有許多IRIG-B(DC)解碼方法和相關(guān)產(chǎn)品,但是均存在一些不足?;贑PLD、FPGA等技術(shù)的解碼設(shè)計精度達到了要求,但是過于復(fù)雜;西安同步電子科技公司等生產(chǎn)的解碼器為機箱式,體積大、功耗大;深圳云辰科技有限公司開發(fā)了一系列IRIG-B解碼專業(yè)芯片,一種實現(xiàn)了量產(chǎn),單片價格在40元左右,價格相對來說非常高。
基于以上問題,本文提出了利用定時器邊沿捕獲技術(shù)來測量IRIG-B(DC)碼脈沖的脈寬以實現(xiàn)B碼解碼的新的設(shè)計方法,開發(fā)的解碼器結(jié)構(gòu)簡單、精度高、體積小、功耗小,完全能夠達到變電站GPS&IRIG-B碼精確對時要求。文章第二部分介紹了IRIG-B(DC)碼原理,第三部分描述了利用STM8S103芯片定時器邊沿捕獲方法進行IRIG-B(DC)碼解碼器硬件、軟件設(shè)計開發(fā)的過程,第四部分通過了解碼功能仿真測試和設(shè)備測試,最后進行了研究總結(jié)。
IRIG-B碼(簡稱B碼)是IRIG(Inter-Range Instrumentation Group)六種串行格式碼的一種,包含準(zhǔn)時秒起始點信息和絕對時間信息,以其實際突出的優(yōu)越性能成為時統(tǒng)設(shè)備首選的標(biāo)準(zhǔn)碼型,其中未經(jīng)幅度調(diào)制的B碼叫IRIG-B(DC)碼,標(biāo)準(zhǔn)IRIG-B(DC)碼幀結(jié)構(gòu)如圖1所示。
圖1 標(biāo)準(zhǔn)IRIG-B(DC)碼幀結(jié)構(gòu)Fig.1 Frame structure of the standard IRIG-B(DC)code
B碼時幀發(fā)送速率為1幀/s,時間信息格式用脈寬碼表示,索引計數(shù)間隔10 ms,每幀100個碼元,碼元分為8 ms、5 ms和2 ms三種。表示一個時間格式幀開始的參考標(biāo)志是由一個位置識別標(biāo)志(P0)和相鄰的參考碼元(PR)組成,位置識別標(biāo)志P0的前沿在幀參考點(即PR)前一個索引計數(shù)間隔處,以后每十個碼元有一個位置識別標(biāo)志,依次為P1、P2......、P9,脈寬均為8 ms;表示二進制“1”和“0”的碼元脈寬分別為5 ms和2 ms。B碼時序為秒-分-時-天-年(天格式為這一年的第幾天),位置在P0到P6之間,其中秒7位、分7位、時6位、天10位、年8位,每種時間度量級的第5位為脈寬2 ms的索引標(biāo)志,通過每個碼元代表的時間信息進行加權(quán)計算最后解析出通用標(biāo)準(zhǔn)絕對時間。
IRIG-B(DC)碼解碼器的設(shè)計要求是能實時地解出編碼信息中的年、天、時、分、秒信息,并實時通過異步通信口送往其他設(shè)備,本次提出了利用定時器邊沿捕獲技術(shù)來測量B(DC)碼脈沖的脈寬以實現(xiàn)解碼的設(shè)計新方法。
解碼器主控芯片選用STM8S103F3P6,其具有16位高級控制定時器TIM1,含4個捕獲/比較通道,完全能夠同步靈活的在脈沖沿出現(xiàn)的位置抓取計數(shù)值。同時,芯片具有用戶可調(diào)整的內(nèi)部16MHz RC,具有3級流水線的哈佛結(jié)構(gòu),8 K字節(jié)Flash,1 K字節(jié)RAM。
設(shè)計的解碼器電路包括電源電路、晶振電路、復(fù)位電路、串口電路、以及程序燒寫電路,選用2個輸入捕獲通道,供電電源為3.3 V/5 V。
IRIG-B(DC)碼解碼器利用STM8S103F3P6定時器TIM1的輸入捕獲功能進行脈沖邊沿計數(shù)捕捉,通過計數(shù)值計算出脈沖高電平時間寬度,從時間碼幀中判斷出秒的準(zhǔn)時點開始位置,根據(jù)5 ms和2 ms脈沖出現(xiàn)的位置提取時間信息,轉(zhuǎn)化為BCD碼存儲在內(nèi)存中,存儲完成后解析時間并以盡可能小延時通過串口將時間傳輸給其他裝置完成對時。IRIG-B(DC)碼解碼流程圖如圖2所示。
2.2.1 TIM1邊沿捕獲
無論采用何種技術(shù)體制進行IRIG-B碼的解碼,其關(guān)鍵都在于時間碼元的識別、提取,本次提出了利用定時器邊沿捕獲技術(shù)實現(xiàn)解碼的新方法。本次選用的STM8S103F3P6芯片,其高級控制計數(shù)/定時器TIM1由一個16位的自動裝載計數(shù)器組成,由一個可編程的預(yù)分頻器驅(qū)動,共有四個獨立的輸入捕獲/比較通道。定時器的I/O引腳(TIM1_CCi)可以用作輸入捕獲或者輸出比較,這個功能可以通過配置捕獲/比較通道模式寄存器(TIM1_CCMRi)的CCiS通道選擇位來實現(xiàn)。每一個捕獲/比較通道都是圍繞著一個捕獲/比較寄存器來構(gòu)建的,捕獲/比較模塊由一個預(yù)裝載寄存器和一個影子寄存器組成,在捕獲模式下捕獲發(fā)生在影子寄存器上,然后再復(fù)制到預(yù)裝載寄存器中。
設(shè)計過程中TIM1頻率定為0.5 MHz,將TIM1的輸入捕獲通道3、通道4分別設(shè)置為脈沖上升沿捕獲和下升沿輸入捕獲模式,設(shè)置定時器TIM1為向上計數(shù)模式,并使能輸入捕獲通道。當(dāng)每次檢測到IC3/IC4信號上相應(yīng)的邊沿后,計數(shù)器的當(dāng)前值會被鎖存到捕獲/比較寄存器TIM1_CCR3/TIM1_CCR4中。當(dāng)發(fā)生捕獲事件時,相應(yīng)的CC3IF/CC4IF標(biāo)志(TIM1_SR寄存器)被置1;如果發(fā)生捕獲事件時CC3IF/CC4IF標(biāo)志已經(jīng)為高,那么重復(fù)捕獲標(biāo)志CC3OF/CC4IF(TIM1_SR2寄存器)被置1。寫CCiIF=0或讀取存儲在TIM1_CCRiL寄存器中的捕獲數(shù)據(jù)都可清除CCiIF,寫CCiOF=0可清除CCiOF。每次捕獲完成后立即將TIM1_CCR3/TIM1_CCR4中的計數(shù)值保存到內(nèi)存,同時對相關(guān)變量和計數(shù)器TIM1進行清零,以此循環(huán)地進行脈沖邊沿捕捉。
圖2 IRIG-B(DC)解碼流程圖Fig.2 Flow chart of IRIG-B(DC)decoded
2.2.2 判斷IRIG-B(DC)碼時間幀秒準(zhǔn)時點
通過連續(xù)兩次捕獲的計數(shù)值差值和TIM1計數(shù)頻率可以計算出脈沖脈寬。IRIG-B(DC)碼格式中連續(xù)兩個8 ms寬脈沖中的第二個8 ms脈沖前沿為秒的準(zhǔn)時起始點,只有正確判斷出秒的準(zhǔn)時起始點才能解析出正確的時間信息。
2.2.3 轉(zhuǎn)BCD碼并存儲
IRIG-B(DC)碼共有3種碼元,其中5 ms和2 ms寬度的碼元包含了時間信息,在轉(zhuǎn)BCD碼時二進制BCD碼“1”和“0”分別代表5 ms和2 ms脈寬。脈寬計算時難免會存在誤差,轉(zhuǎn)碼時根據(jù)B碼3種碼元寬度設(shè)定了各自不交叉的范圍。脈寬轉(zhuǎn)碼表見表1。
表1 脈寬轉(zhuǎn)BCD碼Tab.1 Pulse switch BCD code
由于IRIG-B(DC)碼時間信息保存在P0-P6之間的38個碼元中,因此所開內(nèi)存必須大于38。通過檢測得出TIM1捕獲、轉(zhuǎn)碼、存儲P0開始的96個脈沖所需時間約為950 ms。存儲完后立即進行加權(quán)計算解析和絕對時間信息輸出,這段時間約為非常短。為減小誤差,內(nèi)存開個96個字節(jié),一個字節(jié)存儲一個時間碼元BCD碼,連續(xù)存儲前96個碼元信息。
2.2.4 絕對時間計算和輸出
根據(jù)秒-分-時-天-年的位置提取時間BCD碼信息進行加權(quán)計算,計算秒時間時在原來基礎(chǔ)上加一秒,解析后通過接口將絕對時間傳輸給其他裝置完成對時。
將模擬的IRIG-B(DC)碼時間信號通過引入TIM1輸入捕獲通道3、通道4對應(yīng)的引腳PC3和PC4進行解碼測試。B碼模擬信號如圖3所示。
模擬信號時間輸出如圖4所示。
同步對時精度<50 ms,檢測的誤差精度如圖5所示。
測試結(jié)果顯示對輸入的IRIG-B(DC)碼,此次運用16位高級控制定時器邊沿捕獲方法設(shè)計的IRIG-B(DC)碼解碼器能夠長期、準(zhǔn)確、穩(wěn)定地進行解碼輸出,完全可以滿足變電站GPS&IRIG-B(DC)授時系統(tǒng)解碼授時的要求。
已有的IRIG-B(DC)碼解碼方式由于器件本身的限制和實現(xiàn)方法的原因,存在解碼過程復(fù)雜、體積大、功耗大等不足之處。深入研究IRIGB(DC)碼原理后提出了利用定時器邊沿捕獲技術(shù)來測量IRIG-B(DC)碼脈沖的脈寬以實現(xiàn)B碼解碼的新的設(shè)計方法,選用STM8S103F3P6設(shè)計的解碼器完全能夠?qū)崿F(xiàn)B碼準(zhǔn)確解碼授時的要求。各項測試結(jié)果表明該設(shè)計方法是一種解決變電站自動化系統(tǒng)精確對時問題的有效方案,并且具有結(jié)構(gòu)簡單、體積小、功耗小、精度高等優(yōu)點,目前已在某變電站GPS&IRIGB(DC)授時系統(tǒng)中得到成功運用。
圖3 IRIG-B(DC)碼模擬信號Fig.3 Analog signal of IRIG-B(DC)
圖4 模擬信號時間輸出Fig.4 Analog signal output time
圖5 誤差精度Fig.5 Error precision
[1]曾立萍.GPS與IRIG-B在電網(wǎng)授時系統(tǒng)中的應(yīng)用[J].中國電力教育,2010:324-325.
[2]RM0016 Reference Manual STM8S microcontroller family,4nd Edition[S].ST,2009.
[3]KING K N.C Programming:A Modern Approach,2nd Edition[M].W W Norton&Company,2008.
[4]IRIG SERIAL TIME CODE FORMATS[S].U.S.Army White Sands Missile Range,2004.
[5]童寶潤.時間統(tǒng)一系統(tǒng)[M].北京:國防工業(yè)出版社,2003.