孟獻儀 ,王智群
(1.徐州和緯信電科技有限公司,江蘇徐州, 221008;2.無錫益多環(huán)保熱電有限責(zé)任公司,江蘇無錫,214135)
本文設(shè)計一款以STC單片機系統(tǒng)板STC8A8K64S4A12 為處理器的授時服務(wù)器,采用中科微公司生產(chǎn)的GPS/BD雙模衛(wèi)星接收模塊,用作外部高精度時間源,負(fù)責(zé)提供標(biāo)準(zhǔn)UTC時間信息,定時精度10毫秒;擁有以太網(wǎng)接口可以與客戶端進行時間同步;擁有串行接口,可以進行設(shè)備調(diào)試、系統(tǒng)開發(fā),可以獲取外部時鐘源信號; 擁有EEPROM 電路,可以存放需要掉電保護的一些數(shù)據(jù),比如IP地址以及參數(shù)配置等。授時服務(wù)器的應(yīng)用組成如圖1所示。
圖1 授時服務(wù)器的組成
采用CH9126網(wǎng)絡(luò)接口芯片作為服務(wù)器是本設(shè)計一大亮點,可以用來進行網(wǎng)絡(luò)數(shù)據(jù)處理,既可以做服務(wù)器又可以做客戶端。它具有授時精度高、集成度高、穩(wěn)定性佳和低功耗等特點。具體特性指標(biāo)如下:
(1)內(nèi)置SNTP協(xié)議;(2)授時精度為10ms;(3)自帶以太網(wǎng)介質(zhì)傳輸層(MAC)和物理層(PHY),在CH9126內(nèi)部,可以自動完成對網(wǎng)絡(luò)數(shù)據(jù)的解析。(4)支持10/100M,全雙工/半雙工自適應(yīng),兼容802.3協(xié)議,可以在不同的網(wǎng)絡(luò)環(huán)境下實現(xiàn)數(shù)據(jù)處理; (5)兼容 802.3x全雙工流控和半雙工背壓流控;(6)支持MDI/MDIX線路自動轉(zhuǎn)換;(7)支持通過網(wǎng)絡(luò)和串口配置模塊參數(shù),串口支持5、6、7或者8個數(shù)據(jù)位以及 1 或者2個停止位,支持奇、偶、無校驗、空白0、標(biāo)志1等校驗方式,波特率支持 300-921600bps,支持一個獨立的數(shù)據(jù)通道,提供網(wǎng)絡(luò)轉(zhuǎn)串口的數(shù)據(jù)透傳功能。
基于以上特性,使用CH9126網(wǎng)絡(luò)接口芯片作為網(wǎng)絡(luò)數(shù)據(jù)傳輸處理芯片可以簡化電路設(shè)計和軟件編程。
將衛(wèi)星時鐘源部分與數(shù)據(jù)處理和控制部分進行硬件連接,即GPS/BD雙模衛(wèi)星時鐘源模塊通過串行接口與STC單片機進行通信,GPS/BD雙模衛(wèi)星時鐘源模塊向STC單片機提供1PPS 秒脈沖信號以及時碼信號,用I/O口進行硬件連接;時碼信號所帶的UTC時間信息通過串口傳送給單片機,并保持和秒脈沖信號上升沿的同步。
網(wǎng)絡(luò)接口部分通過串行接口與數(shù)據(jù)處理和控制部分進行通信,即STC單片機和 CH9126之間通過串口和I/O口進行數(shù)據(jù)交換,將時間信息同步。網(wǎng)絡(luò)接口與用戶接口的連接即為SNTP時間服務(wù)器與SNTP客戶端的連接,網(wǎng)絡(luò)授時芯片CH9126通過RJ45接口以及網(wǎng)線,完成與客戶端的數(shù)據(jù)交換。
(1)GPS/BD雙模衛(wèi)星接收模塊通過串口通信為STC單片機提供標(biāo)準(zhǔn)時碼和1PPS 秒脈沖的串口信號。服務(wù)器可以獲取不同外部時鐘源,包括中科微的3通道 GPS衛(wèi)星接收模塊、3通道北斗衛(wèi)星定位導(dǎo)航模塊和國家授時中心的原子頻標(biāo)時間基準(zhǔn)等作為時鐘源,用來獲取標(biāo)準(zhǔn)時鐘信號且不依賴于計算機網(wǎng)絡(luò);(2)網(wǎng)絡(luò)接口芯片CH9126連接電以太網(wǎng)RJ45接口,可以用于連接客戶端進行時間同步;(3)Micro USB接口電路為系統(tǒng)提供相應(yīng)的軟件調(diào)試接口;(4)RS485接口通過串口通信,可以幫助系統(tǒng)進行開發(fā)、調(diào)試、配置等功能;(5)擁有EEPROM 電路,可以存放需要掉電保護的一些數(shù)據(jù),比如IP地址以及參數(shù)配置等。
客戶端主要采用STC作為數(shù)據(jù)處理及控制核心,使用CH9126芯片的客戶端模式以及外圍相對應(yīng)的系統(tǒng)各部分。CH9126芯片通過以太網(wǎng)向SNTP服務(wù)器獲取標(biāo)準(zhǔn)時間,通過串口通信輸出給單片機,同時還可以通過LCD12864顯示屏實時顯示。從而完成時間同步。主要框圖設(shè)計如圖2所示。
圖2 SNTP客戶端的設(shè)計
授時服務(wù)器的數(shù)據(jù)處理核心使用STC8A8K64S4A12單片機來完成系統(tǒng)的數(shù)據(jù)處理和控制部分,在SNTP網(wǎng)絡(luò)時間服務(wù)器系統(tǒng)中,通過接收并解析GPS/BD雙模衛(wèi)星接收模塊獲取的標(biāo)準(zhǔn)UTC時間信息,主要接收串口信號以及1PPS秒脈沖信號,再由 STC8A8K64S4A12內(nèi)部的TIMx計數(shù)器功能來提取精確時間信息(年月日時分秒),并修正自己的時鐘信息,使其與GPS時鐘源保持同步。
系統(tǒng)采用了C/S 模式(主從模式),主控芯片的工作過程為:當(dāng)客戶端需要時間同步的時候,回向服務(wù)器發(fā)送基于SNTP標(biāo)準(zhǔn)的數(shù)據(jù)包,通過網(wǎng)絡(luò)授時芯片CH9126將數(shù)據(jù)包解析之后,發(fā)送給STC8A8K64S4A12,此時CH9126 芯片向STC8A8K64S4A12發(fā)送中斷請求;當(dāng) STC8A8K64S4A12 接收到信號時并將數(shù)據(jù)包解析,把此刻服務(wù)器端獲取的轉(zhuǎn)換過后的時間信息再次打包、封裝后,生成一個基于SNTP時間協(xié)議的通信數(shù)據(jù)包,由CH9126芯片通過RJ45接口和網(wǎng)線發(fā)送給客戶端,此時授時精度可以達到毫秒級;通過客戶端與服務(wù)器的兩次通信,即可完成兩者之間的時間同步。STC8A8K64S4A12的電路原理圖如圖3所示。
圖3 STC8A8K64S4A12的電路原理圖
網(wǎng)絡(luò)接口采用RJ45接口,完成網(wǎng)絡(luò)服務(wù)器與客戶端之間進行SNTP數(shù)據(jù)包通信。網(wǎng)絡(luò)授時芯片CH9126和RJ45接口進行電氣連接,從而實現(xiàn)數(shù)據(jù)包的發(fā)送和接收。其電路圖如圖4所示:其中,RJ45接口RXN/RXP信號對與CH9126的第1引腳和第2引腳相連;TXN/TXD信號對與CH9126的第3引腳和第6引腳相連;ELINK引腳與CH9126的第10引腳和第11引腳相連,在低電平時工作,在10/100Mbps時連接正常。
圖4 網(wǎng)絡(luò)數(shù)據(jù)接口
串行接口設(shè)計采用RS485標(biāo)準(zhǔn),其四線制僅僅可以實現(xiàn)點對點的通信方式,應(yīng)用較窄。所以本設(shè)計采用兩線制。但是STC8A8K64S4A12核心板微處理器的TTL電路中的高、低電平信號不同于RS485標(biāo)準(zhǔn)定義的高、低電平信號。RS485傳輸差分信號標(biāo)準(zhǔn)邏輯“1”對應(yīng)的兩線間的電壓差為+(2—6)V;標(biāo)準(zhǔn)邏輯“0”對應(yīng)的兩線間的電壓差為-(2—6)V。TTL的標(biāo)準(zhǔn)邏輯“1”是在2V~3.3V電平,標(biāo)準(zhǔn)邏輯“0”是在0V~0.4V電平。兩者電壓不匹配,因此,采用的是RS485轉(zhuǎn)TTL模塊實現(xiàn)電平轉(zhuǎn)換。
電源電路可以向授時服務(wù)器各部分提供能使其穩(wěn)定運行的電源電壓,從外部通過USB轉(zhuǎn)micro b接口獲取電源。電源分為3.3V和5V,其電路原理圖如圖5所示:5V穩(wěn)壓采用的是AMS1117-5V芯片,3.3V穩(wěn)壓采用的是RT9193-33穩(wěn)壓芯片。其中5V主要給BD/GPS雙模接收模塊供電,3.3V給STC單片機、網(wǎng)絡(luò)接口芯片CH9126以及其他外圍電路供電。
圖5 電源電路
基于SNTP的時間同步服務(wù)器軟件設(shè)計由兩部分組成,是SNTP授時服務(wù)器的軟件設(shè)計和SNTP客戶端的軟件設(shè)計。本設(shè)計的重點在于對SNTP授時服務(wù)器進行分析、研究、設(shè)計。
(1)本設(shè)計采用CH9126網(wǎng)絡(luò)授時芯片,具有Server/Client兩種工作模式,所以設(shè)計兩種構(gòu)架。
(2)軟件設(shè)計的程序通過Keil μVision5軟件開發(fā)平臺進行編程。使用C51編譯器進行程序編寫編譯、調(diào)試排錯。
(3)由串口獲取GPS提供的標(biāo)準(zhǔn)時間信息UTC,通過子程序精確取出所需要的時間信息并進行時區(qū)轉(zhuǎn)換,再通過Server/Client模式進行SNTP數(shù)據(jù)包的收發(fā),從而達到時間同步作用。
SNTP授時服務(wù)器的軟件設(shè)計主要分為四個部分:系統(tǒng)初始化、參數(shù)配置、時間同步與授時程序設(shè)計和SNTP授時服務(wù)。當(dāng)STC8A8K64S4A12單片機獲取標(biāo)準(zhǔn)時間信息后,經(jīng)過轉(zhuǎn)換提取處理,將信息通過串口在LCD12864上顯示出來。同時授時芯片CH9126通過串口獲取標(biāo)準(zhǔn)時間,再通過LWIP協(xié)議棧給客戶端進行時間同步。
圖7 授時測試
本設(shè)計分為SNTP時間同步服務(wù)器和SNTP時間同步客戶端兩部分,所以擁有主時鐘和從時鐘兩種模式,可以用SNTP協(xié)議配置軟件在上位機進行配置。軟件設(shè)計的主程序主要作用在于完成串口數(shù)據(jù)和網(wǎng)絡(luò)數(shù)據(jù)的處理,串口1負(fù)責(zé)與上位機通信,串口2負(fù)責(zé)接收GPS/BD衛(wèi)星接收模塊的標(biāo)準(zhǔn)時間信息,串口3負(fù)責(zé)連接LCD12864顯示屏,串口4用以連接CH9126網(wǎng)絡(luò)授時模塊。其中時鐘源來自GPS/BD雙模衛(wèi)星接收模塊接收的標(biāo)準(zhǔn)時間信息UTC,標(biāo)準(zhǔn)時間信息UTC通過串行接口2完成與數(shù)據(jù)處理核心的通信。
圖6 主程序流程圖
例舉一個簡單測試方法,使用網(wǎng)線把PC機網(wǎng)口和服務(wù)器的網(wǎng)口連接起來,若有多個PC機,使用網(wǎng)絡(luò)交換機進行聯(lián)機。
在Windows系統(tǒng)中,打開控制面板中的管理工具,選中服務(wù)打開,然后找到windows time服務(wù)。依次單擊本地組策略編輯器、計算機配置、管理模板、系統(tǒng)、windows time服務(wù),在時間提供程序里設(shè)置啟用Windows NTP服務(wù)器。將目標(biāo)地址與授時服務(wù)器IP地址(如192.168.1.133)設(shè)為一致,即可自動對時。
隨著社會經(jīng)濟不斷發(fā)展,自動化設(shè)備應(yīng)用越來越廣泛,在廣電網(wǎng)絡(luò)、鐵路信息系統(tǒng)、油氣管道生產(chǎn)監(jiān)控、智能電網(wǎng)、移動通信等行業(yè)信息化建設(shè)中,人們對信息控制系統(tǒng)精度要求越來越高,本文設(shè)計了一款低成本的授時服務(wù)器,授時精度在局域網(wǎng)內(nèi)可以達到毫秒級別,在廣域網(wǎng)內(nèi)可以達到幾十個毫秒,具有較高的應(yīng)用價值。