甘 瑩,鄒文景,唐良運,孫 剛
(南方電網數字電網研究院有限公司,廣東廣州 510663)
目前,網絡發展十分迅速,通信雙方在網絡上進行數據傳輸時,要想實現數據實時準確交流,協同工作必不可少。實現數據同步傳輸的首要條件就是接收方準確地知道發送方發送數據的時間和順序,否則會產生很大偏差。同步傳輸的兩個關鍵因素是位置和時間,接收方只有準時接收和處理數據,才能對數據進行準確合理解釋[1-2]。
傳統的多路數據同步傳輸系統主要有基于NTP 的數據傳輸系統和基于GPS 的數據傳輸系統,其中基于NTP 的系統主要應用在因特網中,但需要網絡協議的支持[3]。而基于GPS 的數據傳輸系統,存在同步精度低的問題,無法達到亞微秒級的時間同步精度[4]。
分布式資源庫是一個集成的系統,主要包括Web Service 中間體、存儲節點和只讀實例。分布式資源庫的數據可以實現讀寫分離,存儲效率極高,每個中間體之間可以完成數據的連接和互聯互通。中間體用于管理存儲節點,匯集查詢結果,存儲節點用于存儲分表,只讀實例是存儲節點的從屬[5]。
綜上所述,該文設計了一種新的分布式資源庫多路數據同步傳輸系統。
多路數據采集模塊主要負責分布式資源庫多路數據的采集,如圖1 所示。

圖1 多路數據采集模塊
觀察圖1 可知,多路數據采集模塊主要由指令計數器、指令寄存器、存儲單元、運算單元、數據傳感器、放大器、ADC、CPID、電源部分以及壓力傳感器構成[6-7]。采集模塊中的ADC 使用的是A/D7492,可以同時采集10 路分布式資源庫的數據。CPID 能夠控制采集與錄入數據的順序,并且決定著數據傳輸的速率。電源部分為ADC 和CPID 提供穩定的工作電壓。為了使采集模塊能夠適應分布式資源庫的采集,該文使用trigger 觸發采樣,trigger 的輸出作為系統時鐘的輸入。
分布式資源庫傳輸利用PIC16f877 單片機的l01 型收發控制芯片實現,數據收發控制芯片采用RF24l01 芯片,工作電壓為3.6~9 V,工作溫度為-40~+85 ℃,有125 個不同頻道信號可供選擇,雙向通信重發速率最高達到2 Mbit/s,具有自動進行應對和同時重發兩種功能[8-9]。
傳輸模塊以單向方式傳輸電流,模塊內部芯片RFl01 采用了新型的Shock burst 通信技術,多通道數據的處理依靠Shock burst 技術簡化了傳輸流程。通信過程中,當發送方向接收方發送數據后,接收方會對數據進行實時反饋,隨機回傳的數據信號將告知發送方數據發送的結果;如果數據未傳輸到接收方,則發送方會在一段時間后自動重新發送該數據,通過這種機制,接收方和發送方可以實現數據的同步傳輸,避免了數據的丟失[10-12]。
PIC16f877 單片機監控平臺主機內部設有兩個全方位主機雙工中文串行系列并行輸入口,接口基本工作結構功能很強,雙工并列串行口可以同時使用4 種工作功能查詢中斷方式,以滿足用戶的不同使用需求[13]。多通道數據通信接口如圖2 所示。

圖2 多通道數據通信接口
根據圖2 可知,多通道數據接口主要以corba 接口為核心,通過數據寫入FIFO 實現信號輸出,能保障數據傳輸效率的最大化。波特率中斷參數設置可由片內控制軟件自動進行設置,由片內的硬件中斷中止定時器/硬件中斷中止計數器自動計算產生,同時,通過硬件和軟件查詢中斷數據的接收和傳輸[14-15]。
系統軟件工作流程如圖3 所示。

圖3 系統軟件工作流程
為了對分布式資源庫中的多路數據進行同步采樣,設計多路數據全局時鐘同步機制。采用全局時鐘進行同步可以對數據流進行快速恢復,并采用鎖相環將恢復后的數據進行精準分發,最后經過時鐘調理后向下級節點發送。多路數據經過逐級傳輸后,最后匯總至數據源,完成多路數據的全局時鐘分發。
分布式資源具有性能高、可用度高、擴展性強的特點。此次設計傳輸系統包括兩路數據傳輸通道,其中一條通道負責發送系統的傳輸命令與恢復時鐘的本地采集,此通道為下行通道;另一條通道負責以流水線的方式進行數據傳輸,流水線傳輸即通過單路節點逐級向上傳輸,此通道為上行通道。
分布式資源由多種形式組成,在數據傳輸的過程中可能出現傳輸錯誤,為了有效保證分布式資源多路數據在線傳輸的準確性,通過檢測幀類型和幀長度確定數據是否完整,利用CRC 分析數據冗余性,判斷數據在傳輸過程中是否發生改變。
利用線性數據編碼校驗理論實現CRC 編碼校驗,采用多項式函數進行波特率的計算,具體計算公式為:
其中,M為波特率;T1為溢出率;MOD 為多項式函數;TH為定時器值;Fosc 表示監測系數。
根據式(1)得到:
數據接收端通過邏輯算法同時檢測所有數據,通過并行傳輸的方式檢驗邏輯正確性和數據完整性。
實際設計使用中,選擇多項式函數,計算公式為:
其中,g(x)為多項式函數;x為被檢測的邏輯數據。當數據再次上傳時,每一級上傳節點都會對上傳數據幀狀態進行三種動態校驗,當出現異常時,丟棄異常以及校驗存在問題的數據,將保留的數據傳輸至下一級。因此在每個級別的節點處都需要緩存模塊,以便進行數據校驗,保證數據的完整性[16]。
為了檢測該文設計的分布式資源庫多路數據同步傳輸系統的有效性,選用該文系統和基于NTP 的數據傳輸系統和基于GPS 的數據傳輸系統進行實驗對比。
通過無加擾模式對數據子波的運行狀態進行分析,確定置零抑制情況,該文選用的實驗環境如圖4所示。

圖4 實驗環境
觀察圖4 可知,該文設定的實驗環境主要由監測儀表、數據黑匣子、RAM 存儲器、USB 攝像頭、Kinect 體感傳感器和LCD 控制器組成。
設定實驗參數如表1 所示。

表1 實驗參數表
根據上述參數進行實驗,選用三種系統進行對比實驗,計算數據傳輸誤碼率,計算公式如下:
其中,W表示傳輸誤碼率;Z表示誤碼數據量;V表示傳輸的總數據量。得到同步傳輸系統的誤碼率實驗結果如圖5 所示。

圖5 同步傳輸系統誤碼率
根據圖5 可知,隨著時間的增加,三種傳輸系統的誤碼率也在不斷增加,但該文設計的傳輸系統誤碼率遠低于兩種傳統系統。該文設計的系統采用VME 總線進行數據傳輸,引用全局時鐘分發機制,使多通道數據進行同步傳輸,并通過誤碼率驗證實驗,證明該文設計系統能夠降低多路數據同步傳輸的誤碼率。
造成這種現象的原因是該文設計的系統時鐘恢復主要通過芯片里的時鐘恢復和鎖相環功能模塊實現,將時鐘調制在數據流中,達到同步傳輸的目的。得到恢復的時鐘后,本地鎖相環進行相位的校準,以提供給ADC 采樣使用。分布式資源中的部分數據往往只有讀取、刪除和修改操作,傳輸效率較高。為了實現分布式資源的實時傳輸,采集節點逐級上傳采用兩級乒乓FIFO 緩存的方法實現,其中第一級乒乓FIFO 負責本地數據幀的緩存在;第二級乒乓FIFO負責當前節點數據幀和后級節點數據幀的緩存。第一級乒乓FIFO 的輸出接入第二級乒乓FIFO 的輸入,使得當前節點和后級節點的數據幀能夠無間斷地實時上傳,不會出現丟幀的情況,減少誤碼。
系統傳輸數據的延遲時間如表2 所示。

表2 系統傳輸數據延遲時間實驗結果
根據表2 可知,該文系統的傳輸延遲時間較短,GPS 系統的延遲時間最長。該文設計系統使用本地ADC 采樣時鐘,同時本地PLL 調節相位,使其與恢復時鐘相位對齊,由于多路數據之間的數據長度是固定的,所以傳輸延遲也是固定的,前級發送時鐘和本級恢復時鐘有固定的相位差,此相位差可以事先測量好,通過本地PLL 進行相位補償去除。前路數據發送時鐘,后路數據時鐘恢復后,輸入本地PLL,本地PLL 輸出兩個時鐘,一個給本地ADC 使用,一個發送給后路數據。
分布式資源數據交叉節點由于需要將三個方向傳輸上來的數據上傳,因此沒有采用乒乓緩存的方法,而是將數據緩存在RAM 中,采用先到先轉發的機制,將數據上傳。當數據幀傳輸到匯總節點時,匯總節點上的FPGA 根據協議對數據幀進行剝離,將多通道數據進行時序轉換、浮點數轉換等操作,在數據完全上傳完畢后,通過USB 或以太網接口向分析控制系統實時上傳,從而完成整個分布式資源的實時數據傳輸。
隨著互聯網的不斷發展,人類產生的數據量越來越多,分布式資源的出現大大緩解了數據庫所面臨的挑戰。分布式資源具有可彈性伸縮的結構,能夠實現自動化拆分,擴展了服務的能力。該文利用全局時鐘分發的機制,實現了分布式資源多路數據的同步傳輸,傳輸過程采用兩級乒乓FIFO 緩存法,并輔以CRC 校驗算法,在確保多路數據同步傳輸的同時,保證了數據傳輸的準確性。該文未驗證系統長時間工作狀態下的實時傳輸性能以及長距離傳輸狀態下的錯誤率,在下一次的研究中,將對這兩點進行驗證。