黃國雄,莊乾波,殷文濤
●(中國衛(wèi)星海上測控部,江蘇江陰 214431)
基于船鐘信號的網(wǎng)絡(luò)時間同步系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
黃國雄,莊乾波,殷文濤
●(中國衛(wèi)星海上測控部,江蘇江陰 214431)
通過對大型船舶子母鐘系統(tǒng)進(jìn)行研究分析,獲得船鐘信號特征;基于船鐘時間信號的高精度特點(diǎn),提出一種采用船鐘信號作為基準(zhǔn)來同步計(jì)算機(jī)網(wǎng)絡(luò)時間的方法;設(shè)計(jì)開發(fā)出隔離型串口轉(zhuǎn)換電路、網(wǎng)絡(luò)時間同步服務(wù)器和客戶端軟件,實(shí)現(xiàn)計(jì)算機(jī)網(wǎng)絡(luò)時間與船鐘時間的同步調(diào)整;解決了在無互聯(lián)網(wǎng)時間同步服務(wù)器的情況下,船舶穿越不同時區(qū)時的時間自動校準(zhǔn)和同步調(diào)整問題。
子母鐘;接口轉(zhuǎn)換;時間校準(zhǔn);時間協(xié)議
大型遠(yuǎn)洋船舶在各大洋航行時經(jīng)常穿越不同時區(qū),在到達(dá)新時區(qū)時,常常要調(diào)整船上的時鐘時間來適應(yīng)時區(qū)變化帶來的時間變化。為了實(shí)現(xiàn)船舶上大量時鐘時間的同步調(diào)整,船用時鐘一般采用子母鐘系統(tǒng),配置一臺母鐘和若干臺子鐘,其中,母鐘作為統(tǒng)一的時間基準(zhǔn),各子鐘時間同步在母鐘上。子鐘具備自走時功能,當(dāng)母鐘信號中斷時子鐘會繼續(xù)走時以保證時間的連續(xù)性,當(dāng)需要改變時間時,只要調(diào)整好母鐘的時間,子鐘就會自動同步到母鐘的時間上。采用子母鐘系統(tǒng)可實(shí)現(xiàn)全船時間的同步調(diào)整,省去逐臺時鐘人工調(diào)整的麻煩,且時鐘同步精度遠(yuǎn)遠(yuǎn)高于人工調(diào)整。
計(jì)算機(jī)時間由軟件計(jì)算的方法產(chǎn)生,時鐘走時精度受操作系統(tǒng)軟件的影響較大,往往走時精度不高,月誤差高達(dá)數(shù)分鐘。在計(jì)算機(jī)網(wǎng)絡(luò)中,各計(jì)算機(jī)之間的時鐘各自獨(dú)立運(yùn)行,會產(chǎn)生較大誤差,在一些對時間較敏感的應(yīng)用(比如數(shù)據(jù)同步記錄)中是不可接受的。然而,遠(yuǎn)洋船舶接入互聯(lián)網(wǎng)困難,不能使用互聯(lián)網(wǎng)的時間同步服務(wù)器來同步網(wǎng)絡(luò)中的計(jì)算機(jī)時間。船用子母鐘系統(tǒng)采用高精度晶體振蕩器作為時鐘源,走時精度遠(yuǎn)遠(yuǎn)高于計(jì)算機(jī)內(nèi)部時鐘,可作為參考時間基準(zhǔn)。鑒于此,本文提出了一種通過船鐘信號來同步網(wǎng)絡(luò)中計(jì)算機(jī)時間的方法,對提高全網(wǎng)時間精度具有重大意義。
子母鐘系統(tǒng)原理框圖見圖1。母鐘采用89C51單片機(jī)為核心,采用高穩(wěn)定晶體振蕩器為單片機(jī)提供工作時鐘,同時作為計(jì)時基準(zhǔn)。母鐘通過標(biāo)準(zhǔn)信號接收單元接口接收GPS接收機(jī)、定時接收機(jī)等信號,對時間進(jìn)行修正,單片機(jī)完成計(jì)時運(yùn)算、數(shù)據(jù)存儲、譯碼顯示等,產(chǎn)生時間編碼信號,通過信號變換電路轉(zhuǎn)換成標(biāo)準(zhǔn)RS-422電平,從輸出接口向各子鐘發(fā)送,對子鐘進(jìn)行校準(zhǔn)。子鐘接收母鐘信號后,經(jīng)信號變換電路轉(zhuǎn)換成TTL電平信號,由內(nèi)部單片機(jī)進(jìn)行解碼得到時間,內(nèi)部走時系統(tǒng)同步到接收到的時間上,通過驅(qū)動電路驅(qū)動走時機(jī)構(gòu)。
圖1 子母鐘系統(tǒng)原理框圖
母鐘與子鐘通過四芯電纜連接,子鐘與子鐘之間為并聯(lián)連接,所有子鐘統(tǒng)一由母鐘提供工作電源。子鐘端四芯電纜接口定義分別為R+、R-、+24V、VSS,其中,R+、R-分別為RS-422接口差分輸入正負(fù)端,分別連接到母鐘輸出接口的T+、T-,+24V為24V直流供電,VSS為電源低電平端,即電源地線。信號采用廣播方式發(fā)送,母鐘只發(fā)送信號不接收信號,子鐘只接收信號不發(fā)送信號。
查閱子母鐘說明書得知船鐘信號采用串行傳輸,除此之外無任何其他信息可供參考,如果需要從船鐘信號中解調(diào)出時間,必須知道船鐘信號的傳輸速率、幀格式等關(guān)鍵信息。通過示波器測量船鐘信號波形可知,每幀數(shù)據(jù)寬度約12.5 ms,最小脈沖寬度約208 μs,則:
數(shù)據(jù)傳輸率率=1/208μs≈4800bit/s
每幀bit數(shù)=12.5ms/208μs≈60bit
串行通信中,每次傳輸1個字節(jié),一般采用1位起始位、8位數(shù)據(jù)位、1位停止位的子幀結(jié)構(gòu),每子幀占用10bit,由此得出船鐘信號每幀數(shù)據(jù)包含 6個字節(jié)。按照以上設(shè)置,采用串口調(diào)試軟件接收船鐘信號,接收到的數(shù)據(jù)見圖2。由接收數(shù)據(jù)可知,船鐘信號數(shù)據(jù)傳輸率為 4800bit/s,數(shù)據(jù)格式為8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn),每秒鐘傳輸1幀數(shù)據(jù),每幀數(shù)據(jù)包含6個字節(jié),采用二進(jìn)制傳輸,幀格式為:ABHMSV,其中:AB為幀同步碼,占用2個字節(jié),有兩種同步碼,分別為二進(jìn)制FAFB、FCFD,交替出現(xiàn);H為小時,占用1個字節(jié);M為分鐘,占用1個字節(jié);S為秒鐘,占用1個字節(jié);V為校驗(yàn)碼,占用1個字節(jié),且V=H+M+S。
圖2 串口調(diào)試數(shù)據(jù)
船鐘信號從計(jì)算機(jī)的串口輸入,由于船鐘信號為RS-422接口電平,計(jì)算機(jī)串口為RS-232接口電平,兩者不能相互兼容,必須進(jìn)行接口轉(zhuǎn)換。鑒于船鐘信號傳輸速率不高,且為單向傳輸,為提高系統(tǒng)抗干擾性和簡化設(shè)計(jì),本文中的接口轉(zhuǎn)換沒有采用專用RS-422/RS-232接口轉(zhuǎn)換器,而是設(shè)計(jì)了一款隔離型接口轉(zhuǎn)換器,電路原理見圖3。
圖3 RS-422/RS-232接口轉(zhuǎn)換電路原理圖
RS-422接口數(shù)據(jù)為正邏輯判決[1],船鐘信號通過串行差分端口R+、R-輸入,R+為正電平輸入,R-為負(fù)電平輸入,差分電壓為±2~±6V,當(dāng) R+電平大于 R-電平時代表邏輯“1”,反之代表邏輯“0”。RS-232接口數(shù)據(jù)為負(fù)邏輯判決,數(shù)據(jù)從RXD端口輸入計(jì)算機(jī),電壓范圍為±3~±15V,當(dāng)信號電壓小于-3V時代表邏輯“1”,信號電壓大于3V時代表邏輯“0”。計(jì)算機(jī)串口兼容非標(biāo)準(zhǔn)RS-232電平,對正邏輯的判決范圍進(jìn)行了擴(kuò)展,即信號電壓大于3V代表邏輯“0”,信號電壓小于3V代表邏輯“1”[2]。
本文設(shè)計(jì)的隔離型接口轉(zhuǎn)換器采用串口自供電設(shè)計(jì),電路工作電壓由串口的DTR、RTS信號產(chǎn)生,DTR、RTS信號通過隔離二極管D1、D2組成的加法器后,經(jīng)電容C1濾波,產(chǎn)生約8V的直流電壓為其他電路提供工作電壓。差分電壓從R+、R-端接入光電隔離器U1的輸入端,當(dāng)R+電平大于 R-時,光電耦合器輸出端3、4腳導(dǎo)通,串口接收端RXD接地為低電平,當(dāng)R+電平小于R-時,光電耦合器輸出端3、4腳截止,在上拉電阻R2的作用下,串口接收端RXD為約8V電壓的高電平。光電耦合器不僅起到了信號隔離的作用,而且實(shí)現(xiàn)了輸入信號的極性變換,即將輸入的RS-422接口的正邏輯判決轉(zhuǎn)換成RS-232接口的負(fù)邏輯判決,使得輸入信號邏輯正確。圖3中各元件參數(shù)通過實(shí)驗(yàn)確定,確保在輸入電壓±2~±6V范圍內(nèi)輸出電壓滿足RS-232接口電平規(guī)范要求。
網(wǎng)絡(luò)時間同步服務(wù)器端軟件主要實(shí)現(xiàn)兩個功能:一是船鐘時間的接收解調(diào)與顯示、本地計(jì)算機(jī)時間的顯示、實(shí)時計(jì)算本機(jī)時間與船鐘時間的誤差,根據(jù)設(shè)置可控制本機(jī)時間是否同步到船鐘時間;二是提供網(wǎng)絡(luò)時間同步服務(wù),將本地計(jì)算機(jī)作為網(wǎng)絡(luò)時間服務(wù)器,響應(yīng)客戶端的請求,并按照規(guī)定的協(xié)議向客戶端傳送時間信息。網(wǎng)絡(luò)時間同步服務(wù)采用RFC868時間協(xié)議,這個協(xié)議可工作在TCP和UDP協(xié)議下,本文設(shè)計(jì)的網(wǎng)絡(luò)時間同步服務(wù)工作在 UDP協(xié)議下,通過UDP協(xié)議工作的時間協(xié)議的工作過程為:S: 檢測端口37;C: 發(fā)送一個空數(shù)據(jù)報(bào)到端口37; S:接收這個空數(shù)據(jù)報(bào);S:發(fā)送包含32位二進(jìn)制數(shù)(用于表示時間)的數(shù)據(jù)報(bào);C: 接收時間數(shù)據(jù)報(bào)。這里S代表服務(wù)器,C代表客戶。
服務(wù)器在端口37上監(jiān)聽數(shù)據(jù)包。當(dāng)一個數(shù)據(jù)包來到后,服務(wù)器返回一個包含32位的時間的數(shù)據(jù)包。如果服務(wù)器不能決定現(xiàn)在是什么時間,服務(wù)器會拋棄接收到的數(shù)據(jù)報(bào)而不作出任何應(yīng)答。
服務(wù)器端軟件采用Delphi 2007開發(fā),軟件界面見圖4。船鐘信號接收由串口通信控件ComPort實(shí)現(xiàn),串口初始化參數(shù):波特率4800bps,8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn),流控制參數(shù)中DTR、RTS設(shè)置為Enable,用于為接口轉(zhuǎn)換電路提供電源。時間協(xié)議服務(wù)器由 Indy控件中的TdTimeUDPServer組件實(shí)現(xiàn),軟件啟動時讀取本機(jī)IP地址作為時間協(xié)議服務(wù)器地址。船鐘時間由接收到的串口數(shù)據(jù)包中提取,本機(jī)時間由GetLocalTime(LocalTime)函數(shù)取得,同步時間由SetLocalTime(ShipTime)函數(shù)實(shí)現(xiàn),時間誤差單位為秒,計(jì)算公式如下:
圖4 網(wǎng)絡(luò)時間同步服務(wù)器端軟件界面
圖5 網(wǎng)絡(luò)時間同步客戶端軟件界面
網(wǎng)絡(luò)時間同步客戶端軟件采用Delphi 2007開發(fā),界面見圖5??蛻舳塑浖?shí)現(xiàn)兩個功能:一是本地計(jì)算機(jī)時間顯示、計(jì)算本機(jī)時間與服務(wù)器時間的誤差;二是利用服務(wù)器時間校準(zhǔn)本機(jī)時間。時間協(xié)議客戶端由Indy控件中的Td Time UDP組件實(shí)現(xiàn)[3],獲取服務(wù)器時間時,客戶端向設(shè)置的服務(wù)器地址發(fā)送請求,從返回的數(shù)據(jù)報(bào)中提取服務(wù)器時間,本機(jī)時間由 GetLocalTime(LocalTime)函數(shù)取得,校對時間由IdTimeUDP組件的SyncTime方法實(shí)現(xiàn),時間誤差的計(jì)算與服務(wù)器端軟件相同。
船子母鐘系統(tǒng)的母鐘采用高穩(wěn)定晶體振蕩器作為頻率源,其頻率準(zhǔn)確度約 1×10-7~1×10-8以上,取平均值5×10-8計(jì)算,估算年誤差為:
ΔTShip=5×10-8×365×24×60×60=1.6s
年誤差不到2s,走時精度比較高。如果定期采用外部標(biāo)準(zhǔn)時間信號(一般采用GPS時間)進(jìn)行校準(zhǔn),走時精度將更高。
計(jì)算機(jī)一般采用普通晶體振蕩器作為頻率源,其頻率準(zhǔn)確度約5×10-5~1×10-5,取平均值2.5×10-5計(jì)算,估算年誤差為:
ΔTPC=2.5×10-5×365×24×60×60 =788.4 s
平均每天誤差2 s左右,由于計(jì)算機(jī)時間受操作系統(tǒng)和所運(yùn)行的軟件影響較大,實(shí)際誤差比理論估算值更大。時間協(xié)議的同步誤差小于1 s。結(jié)合以上估算結(jié)果知,采用船鐘信號作為基準(zhǔn)的網(wǎng)絡(luò)時間同步系統(tǒng)可將計(jì)算機(jī)時間精度提高近500倍,可滿足大多數(shù)對時間敏感的分布式應(yīng)用系統(tǒng)對計(jì)算機(jī)時間精度的要求。
本文設(shè)計(jì)的基于船鐘信號的網(wǎng)絡(luò)時間同步系統(tǒng)在某大型船舶辦公計(jì)算機(jī)網(wǎng)絡(luò)時間同步、工作計(jì)劃自動廣播系統(tǒng)中得到了推廣應(yīng)用。該系統(tǒng)較好的解決了無互聯(lián)網(wǎng)時間同步服務(wù)器和船舶跨時區(qū)時計(jì)算機(jī)時間同步的問題,大大提高了計(jì)算機(jī)時間精度。
[1]郭詮水. 通信設(shè)備接口協(xié)議手冊[M]. 北京: 人民郵電出版社, 2005.
[2]李江全, 曹衛(wèi)彬, 鄭瑤, 等. 計(jì)算機(jī)典型測控與串口通信開發(fā)軟件應(yīng)用實(shí)踐[M]. 北京: 人民郵電出版社, 2008.
[3]呂偉臣, 霍言, 高小山. Delphi2005入門與提高[M].北京: 清華大學(xué)出版社, 2006.
Design and Realization of Network Time Synchronization System Based on Ship-borne Clock
HUANG Guo-xiong, ZHUANG Qian-bo, YIN Wen-tao
(China Satellite Maritime Tracking and Control Department, Jiangsu Jiangyin 214431, China)
The feature of ship-borne clock is obtained by the analysis of network time synchronization system. Based on precise ship-borne clock, the system including low-cost serial peripheral, network time synchronization server and client are put forward. The computers can check time by system, which are on offshore ship without world-wide network time synchronization server. Not only the precision of computer time is improved greatly, but also the time automatic check can be realized across the time zone.
primary-secondary clock; low-cost peripheral; time check; time protocol
TP393.0
A
黃國雄(1977-),男,工程師。主要從事通信總體工作。