京準:NTP時鐘服務器(NTP時鐘服務器)研究分析
京準:NTP時鐘服務器(NTP時鐘服務器)研究分析
安徽京準電子科技官微——ahjzsz
-------------------------------------
隨著資訊技術和網路技術的飛速發展,網路互連已經滲透到國民經濟的各行各業,而網路時間同步也越來越受到重視,特別是局域網時間同步在國家安全和國民經濟的諸多領域(如國防軍工、電信網、金融業、交通運輸、電子商務和電力系統等部門)越發不可或缺,隨著嵌入式技術的發展,嵌入式與網路時間同步技術的結合,無疑具有良好的發展前景,
1 方案設計
目前網路授時的實作方法有很多種,本文采用自行設計的嵌入式系統并在上面實作SNTP協議,從而完成網路時間的同步,其系統框圖如圖l所示,
本系統采用C/S模型,分為網路授時同步服務器和客戶端兩大部分,本文主要對網路授時服務器部分進行研究,
在網路授時同步服務器中,處理器STM32f103由內部RTC模塊結合日歷演算法來給出時間資訊(年月日時分秒),再從GPS獲取時間資訊,并修正自己的時間,最后結合W5100芯片搭建出一個時間服務器,當客戶端向服務器發出請求時,便可同步地統一客戶端的時間資訊,并達到ms級精度,網路傳輸時需實作SNTP應用層協議,設計中通過構造SNTP協議包,并根據同步演算法可計算出包交換的往返延遲,
本系統采用ST公司基于Cortex-M3內核的STM32系列處理器.Cortex-M3內核是專門用于設計高性能、低功耗、低成本、實時性嵌入式應用系統的處理器核,它在提升性能的同時,又提高了代碼密度的Thumb-2指令集,同時也大幅度提高了中斷回應的緊耦合嵌套向量中斷控制器的性能,所有新功能都同時具有業界最優的功耗水平,
TCP/IP協議堆疊的實作采用的韌體芯片W5100是韓國WIZnet公司推出的韌體網路芯片,它集TCP/IP協議堆疊、以太網MAC和PHY為一體,可支持TCP,UDP、ICMP、IGMP、IPv4、ARP,PPPoE、Ethemet等網路協議;同時支持4個獨立的Socket通信,內部16 K位元組的發送/接識訓沖區可快速進行資料交換,最大通信速率可達到25Mbps,此外,W5100還內嵌10BaseT/100BaseTX以太網物理層,可支持自動應答(全雙工/半雙工模式),并提供多種總線(兩種并行總線和SPI總線)介面方式,可以方便地與各種MCU連接,W5100器件的推出大大簡化了硬體電路設計,可使微控制器在沒有作業系統支持的情況下,真正的實作單芯片接入Internet,
2 SNTP協議分析
SNTP即簡單網路時間協議,它是一個用于局域網子網末端的時間同步協議,其要求在操作程序中只允許存在一個可靠的同步時鐘源,是NTP協議的一個簡化版本,
2.1 SNTP的同步原理
SNTP協議主要通過同步演算法來交換時間服務器和客戶端的時間戳,從而估算出資料包在網路上的往返延遲,進而獨立地估算系統的時鐘偏差,它的時間同步原理的傳輸模型如圖2所示,
圖2中,T1為客戶方發送查詢請求時間(以客戶方時間系統為參照),T2為服務器收到查詢請求時間(以服務器時間系統為參照),T3為服務器回復時間資訊包時間(以服務器時間系統為參照),T4為客戶方收到時間資訊包時間(以客戶方時間系統為參照),D1為請求資訊在網上傳播所消耗的時間,D2為回復資訊在網上傳播所消耗的時間,假設請求和回復在網上的傳播時間相同,即:δ1=δ2,則可得出如下公式:
式中,θ為客戶端時間與標準時間之差,δ為資訊在網上傳播的時間,可以看到,θ、δ只與T2、T1的差值和T4、T3的差值相關,而與T2、T3的差值無關,即最終的結果與服務器處理請求所需的時間無關,據此,客戶端(CLIENT)即可通過T1、T2、T3、T4十算出的時差0去調整本地時鐘,
2.2 SNTP協議格式
SNTP訊息一般封裝在UDP報文中,UDP的埠號是123,UDP頭中的源埠和目的埠是一樣的,SNTP訊息緊跟在IP和UDP報頭之后,其協議格式如圖3所示,
圖3中,U為跳躍指示器,可警告在當月最后一天的最終時刻插入的迫近閨秒(閨秒),VN表示版本號,Mode為模式,該欄位包括以下值:
O(預留);1(對稱行為);3(客戶機);4(服務器);5(廣播);6(NTP控制資訊),Stratum用于對本地時鐘級別的整體識別,Poll表示有符號整數表示連續資訊間的最大間隔,Precision表示有符號整數,表示本地時鐘精確度,Root Delay為有符號固定點序號,表示主要參考源的總延遲,如很短時間內的15到16間的分段點,Root Dispersion為無符號固定點序號表示相對于主要參考源的正常差錯,如很短時間內的位15到16間的分段點,
Reference Identifier為識別特殊參考源,Originate Timestamp是向服務器請求分離客戶機的時間,采用64位時標(Timestamp)格式, Receive Timestamp是向服務器請求到達客戶機的時間,也采用64位時標(Timestamp)格式,Transmit Timestamp是向客戶機答復分離服務器的時間,采用64位時標(Timestamp)格式,
3 硬體設計
圖4所示為W5100部分的電路圖,圖中給出了W5100與STM32的連接方式及其外圍電路,
W5100和STM32可通過SPI方式通信,通過對SEN管腳用10 kΩ電阻上拉到高電平可允許SPI模式;由于W5100處于SPI從模式,因此,其SPI作業時鐘由處于主模式的STM32提供,MISO和MOSI為用于SPI通信的兩條資料線,SCLK為SPI時鐘引腳;*****為片選引腳,低電平有效,主要用于在并行總線連接時由MCU訪問W5100內部暫存器或存盤器;INT為中斷輸出引腳,低電平有效,在W5100在SOCKET埠產生連接、斷開、接收資料、資料發送完成以及通信超時等情況下,該引腳將輸出信號以指示MCU,中斷將在寫入中斷暫存器IR或埠的中斷暫存器時被清除,所有中斷都可以被屏蔽,W5100的第5、6、8和9腳是以太網物理層信號引腳,用于與RJ45介面相連接,其中第5和第6引腳是RXIP/RXlN信號對,用于接收從介質傳來的差分資料,第8和第9引腳是TXOP/TXON信號對,用于將差分資料發送給介質;第66引腳是連接LED指示引腳,低電平表示10/100Mbps連接狀態正常,連接正常時輸出低電平,而在TX/RX狀態時閃爍;第72引腳是接收狀態LED指示引腳,低電平表示當前接收資料,第73引腳是發送狀態LED指示引腳,低電平表示當前發送資料,這些LED指示引腳應與RJ45的相應LED指示燈引腳連接,以用于指示連接狀態,除電源引腳、時鐘引腳外,W5100的其它引腳DO~D7,AO~A14及WR~RD可選擇懸空,
圖5所示是GPS模塊與STM32的連接示意圖,GPS接收模塊采用HOLUX生產的GPS模塊M87GPS,模塊的串行口輸出和輸入分別接到STM32的輸入與輸出,秒脈沖PPS信號連接到處理器的IO口,在秒脈沖(1PPS)同步的情況下,系統將實時精準地通過串口把標準的UTC時間傳送給處理器STM32,
4 SNTP服務器的軟體設計
SNTP服務器的軟體設計主要可分為兩個部分:W5100的驅動設計和SNTP協議的軟體實作,其軟體流程圖如圖6所示,
首先,利用ST公司提供的韌體庫可初始化STM32的系統配置,把SPI介面配置為兩線單向全雙工傳輸、主模式,以8位資料幀的格式進行傳輸;同時配置RTC模塊產生秒脈沖,再與日歷演算法結合得到自身的系統時間,然后通過GPS的秒脈沖PPS修正系統時間,再通過配置W5100公共暫存器和埠暫存器來完成它的基本設定、網路資訊以及埠存盤器資訊的沒置,使之為UDP服務器模式,此后,W5100處于*狀態,一旦W5100的SOCKET埠有中斷事件,W5100將觸發STM32的外部中斷,STM32若檢測到SoekRecvflag發生改變,則立即開始SNTP協議的決議,
接收SNTP協議包后,便可記錄收到報文的時間T2,然后從報文中決議出時間戳T1,再將T1、T2封裝成新的報文進行發送,同時發送時再記錄一個發送時間T3,
5 結束語
本文基于STM32和W5100搭建了一個網路服務器硬體平臺,并在其上實作了SNTP同步時間報文,經測驗,本系統運行穩定,并可實作對客戶端PC機的時鐘同步,通過該系統可有效解決工業控制等領域的時間不同步問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/6806.html
標籤:其他
上一篇:NLP的文本分析與特征工程
