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