郭超一,袁平路
(北京中水科水電科技開發(fā)有限公司,北京 100038)
隨著自動控制系統(tǒng)在各行各業(yè)的應(yīng)用越來越廣,為各個系統(tǒng)中運(yùn)行的自動化裝置進(jìn)行統(tǒng)一的對時也成為一種必須的要求,目前應(yīng)用比較多的對時系統(tǒng)是衛(wèi)星同步時鐘對時系統(tǒng)。為保證時鐘對時系統(tǒng)的穩(wěn)定、高可靠性,電力系統(tǒng)的時間同步系統(tǒng)技術(shù)規(guī)范規(guī)定,主時鐘的輸入時源信號主要包括獨(dú)立時間源基準(zhǔn)信號和關(guān)聯(lián)時間源基準(zhǔn)信號。為實(shí)現(xiàn)多源判決機(jī)制,需要對時間源的有效性進(jìn)行檢測。在時間源的可用有效性檢測中主要是檢測多時間源之間以及與內(nèi)部時鐘的一致性和秒沿互差是否小于某一閾值(如1 μs)。
為實(shí)現(xiàn)檢測兩個時間源的秒沿互差,需要設(shè)計(jì)硬件電路提取兩個秒沿互差,然后通過軟件對差值進(jìn)行測量,從而判斷時間源的可用有效性,選取滿足精度要求的時間源進(jìn)行跟隨。
硬件電路的作用主要是用比較的方式,將兩個脈沖前沿的差值提取出來,便于后續(xù)的測量。在實(shí)際測試中,使用“異或門”進(jìn)行兩個秒沿互差的提取比較簡單[1]。電路如圖1 所示。
圖1 秒沿互差提取電路
在電路中,分別將時間源A 的秒脈沖和時間源B 的秒脈沖接入到“異或門”的兩個輸入端,在輸出端會將A 與B 的差值(A-B)以脈沖的形式表現(xiàn)出來,脈沖的高電平寬度即是兩個時間源的秒沿互差。
因?yàn)闀r間源A 和時間源B 的秒脈沖在前沿和后沿都可能會存在差值,所以圖中的電路在輸出端(A-B)可能會產(chǎn)生前后兩個脈沖。如圖2 所示。
圖2 秒沿互差提取電路的輸出結(jié)果
輸出結(jié)果顯示的兩個脈沖,即為兩個時間源脈沖前沿的差值和脈沖后沿的差值。在時間源可用性分析時所測量的秒沿互差為脈沖前沿的差值,因此秒沿互差 (A-B) 不能直接輸出到CPU 的測量IO 口,需要在硬件電路的輸出端加入一個“與門”控制端“Ctrl”,通過CPU 的IO 口來控制秒沿互差的輸出結(jié)果,將脈沖前沿的差值 (PPSX) 輸入到CPU 的測量端口,從而正確的測量秒沿互差。圖3 即為通過IO口進(jìn)行控制后,CPU 測量IO 口的輸入波形。
圖3 CPU 測量IO 口的輸入波形電路的輸出結(jié)果
脈沖寬度測量軟件程序主要包括主程序[2],定時器中斷子程序,外部中斷子程序,計(jì)算子程序,信息輸出子程序等部分。
主程序是進(jìn)行整個系統(tǒng)的初始化,按照既定的任務(wù)調(diào)取各個子程序進(jìn)行各自相應(yīng)的功能;定時器中斷子程序是用于計(jì)算秒沿互差的值;外部中斷子程序是標(biāo)定基準(zhǔn)秒脈沖的測算時刻;計(jì)算子程序是對測量到的秒沿互差值進(jìn)行處理,得到標(biāo)準(zhǔn)規(guī)定的差值格式;信息輸出子程序是將測量的秒沿互差信息按照約定格式進(jìn)行輸出。
主程序需要進(jìn)行系統(tǒng)參數(shù)、定時器中斷參數(shù)、外部中斷參數(shù),計(jì)算單元參數(shù)的初始化,通過IO 口控制秒沿互差PPSX 輸出到測量IO 口,調(diào)用計(jì)算子程序進(jìn)行計(jì)算并將計(jì)算結(jié)果輸出等工作(圖4)。
圖4 主程序流程圖
外部中斷子工作流程如圖5 所示。在A 或B秒脈沖到來時,記錄下此時的時刻,重置啟動定時器的初值。以便在下一次A 和B 脈沖前沿的秒沿互差到來之前,打開輸出到CPU 測量IO 口的PPSX信號,并在A 和B 脈沖后沿的秒沿互差到來之前關(guān)閉PPSX 信號的輸出,從而將后沿秒沿互差屏蔽掉,防止CPU 測量到秒脈沖后沿的秒沿互差,對前沿差的測量造成干擾或產(chǎn)生錯誤值。
圖5 外部中斷處理流程
定時器中斷子程序用于測量CPU 的IO 口輸入的秒沿互差脈沖的寬度,其工作流程如圖6 所示。
圖6 定時器中斷處理流程
在定時器初始化時,應(yīng)該將工作模式設(shè)置為從模式中的門控模式[3]。當(dāng)秒沿互差的脈沖前沿到來時,定時器會捕獲當(dāng)前定時器的計(jì)數(shù)值,當(dāng)秒沿互差的脈沖后沿到來時,定時器會停止計(jì)數(shù)。當(dāng)定時器產(chǎn)生中斷時,表明定時器已經(jīng)完成了一個計(jì)時周期,計(jì)時周期數(shù)加1。
當(dāng)秒沿互差的后沿到來后,將定時器的捕獲初值,定時器的終值和定時器的溢出周期數(shù)進(jìn)行保存,以便在計(jì)算和處理子程序中對秒沿互差進(jìn)行計(jì)算和處理。
本文使用硬件電路將兩個時間源的秒沿互差提取成一個單脈沖,利用單片機(jī)定時器的門控模式功能進(jìn)行單脈沖的寬度測量,再通過計(jì)算得出兩個時間源的秒沿互差值,并通過串口的方式將差值進(jìn)行輸出。
根據(jù)本文介紹的秒沿互差的測量方法,通過在BSS-3 型衛(wèi)星同步時鐘上,對北斗衛(wèi)星信號時間源、GPS 衛(wèi)星信號時間源和其他關(guān)聯(lián)信號時間源進(jìn)行測試,能夠?qū)y量精度精確到100 ns 的級別,滿足了時鐘系統(tǒng)在多時間源可用有效性檢測中的應(yīng)用,符合相關(guān)標(biāo)準(zhǔn)的要求。