基于TCP/IP的多數(shù)據(jù)流傳輸測控系統(tǒng)的設計與實現(xiàn)
摘要:為保證子測控設備的獨立測量、狀態(tài)監(jiān)控和實時數(shù)據(jù)的同步傳輸,設計基于TCP/IP的多數(shù)據(jù)流傳輸測控系統(tǒng),對需求參數(shù)進行測量,采用基于多重事件的網(wǎng)絡通信技術、數(shù)據(jù)采集技術及基于隊列的多數(shù)據(jù)同步處理技術,利用現(xiàn)有的局域網(wǎng)資源,實現(xiàn)設備的控制,實現(xiàn)數(shù)據(jù)的實時獲取、存儲,數(shù)據(jù)流整合,實現(xiàn)信息、資源及任務的綜合共享及管理。該系統(tǒng)經(jīng)長期運行,穩(wěn)定可靠,達到了設計的要求。
關鍵詞:測控系統(tǒng);TCP/IP;多數(shù)據(jù)流;多重事件;數(shù)據(jù)隊列
0 引言
隨著工業(yè)的發(fā)展,工業(yè)現(xiàn)場的規(guī)模越來越大,幾臺甚至十幾臺計算機在不同的地理位置完成不同的工業(yè)測量或控制任務,體現(xiàn)出網(wǎng)絡化、集成化、分布化、節(jié)點智能化發(fā)展的趨勢,伴隨而來的是數(shù)據(jù)源的增多和設備監(jiān)控復雜度的增加,為此設計一種多數(shù)據(jù)流網(wǎng)絡傳輸測控系統(tǒng)。本系統(tǒng)以TCP/IP技術為基礎而搭建的網(wǎng)絡測控平臺,實現(xiàn)了分布式的多臺計算機的信息交互和設備控制,具有簡單、高效、實時性高等優(yōu)點。
1 系統(tǒng)原理與組成
多數(shù)據(jù)流傳輸測控系統(tǒng)可以分為:數(shù)據(jù)源設備模塊、數(shù)傳與實時處理模塊、遠程控制臺模塊、控制臺設備模塊、前端單片機采集設備模塊五個部分。系統(tǒng)組成如圖1所示。在這個測控系統(tǒng)中各個測控部分相對獨立,可完成電壓、電流等多種參數(shù)的采集;結果以多個數(shù)據(jù)流方式發(fā)送到數(shù)據(jù)與實時處理設備或控制臺設備實時接收存儲和處理,并通過網(wǎng)絡把數(shù)據(jù)傳送到遠程控制臺監(jiān)控界面;遠程控制臺監(jiān)控界面完成對前端數(shù)據(jù)的顯示與綜合,以便對前端設備狀態(tài)進行分析。圖1中,數(shù)據(jù)源設備和數(shù)傳與實時處理設備之間采用TCP協(xié)議,數(shù)據(jù)源設備為服務器端(Server),數(shù)傳與實時處理設備為客戶端(Client),客戶端向服務器請求數(shù)據(jù)成功后,將多個服務器提供的數(shù)據(jù)流進行存儲、綜合和發(fā)送到遠程控制臺。數(shù)傳與實時處理設備同遠程控制臺之間采用UDP協(xié)議通信。與此同時,用戶通過遠程控制臺發(fā)送控制命令到控制臺設備,完成對控制臺設備遠程命令控制,控制臺設備完成動作后將通過RS 422串行通信接口將接收到的單片機測控模塊的采集信號轉用網(wǎng)絡接口發(fā)送回遠程控制臺??刂婆_設備和遠程控制臺設備之間采用UDP協(xié)議通信。
下面分別介紹多數(shù)據(jù)流傳輸測控系統(tǒng)五個主要部分的基本組成及功能。
1.1 數(shù)據(jù)源設備模塊和單片機模塊
數(shù)據(jù)源設備模塊和單片機采集模塊以兩個獨立模塊作為前端數(shù)據(jù)采集設備。數(shù)據(jù)源設備為數(shù)傳與實時處理設備提供多路TCP數(shù)據(jù)流,單片機為控制臺設備提供串口數(shù)據(jù)幀。
1.2 數(shù)傳與實時處理模塊
數(shù)傳與實時處理模塊的系統(tǒng)框圖如圖2所示。
數(shù)傳與實時處理模塊作為客戶端,數(shù)據(jù)源設備計算機作為服務器端。二者通過交換機連接到網(wǎng)絡上,基于TCP協(xié)議與數(shù)據(jù)源設備模塊進行多數(shù)據(jù)流通信,數(shù)據(jù)以二進制文件格式寫入到本地磁盤。接收完成一次完整數(shù)據(jù)(定長TCP流數(shù)據(jù))后將用戶感興趣的部分數(shù)據(jù)進行整合為一個數(shù)據(jù)幀,通過UDP協(xié)議方式發(fā)送到遠程控制臺的監(jiān)控界面。同時用戶也可通過手動或自動選擇多條碼流的部分數(shù)據(jù)進行本地數(shù)據(jù)曲線圖形顯示或數(shù)據(jù)柱狀圖形顯示。
1.3 遠程控制臺模塊
遠程控制臺負責對數(shù)傳與實時處理模塊、控制臺模塊的網(wǎng)絡喚醒和網(wǎng)絡監(jiān)控,以及完成對遠程設備電源的相關操作。遠程控制臺接收相鄰模塊的網(wǎng)絡數(shù)據(jù)幀(包括數(shù)傳與實時處理模塊對多數(shù)據(jù)流進行整合的數(shù)據(jù)幀和控制臺模塊轉發(fā)的單片機采集數(shù)據(jù)幀),對控制臺發(fā)送網(wǎng)絡控制幀(完成參數(shù)設置、系統(tǒng)開啟關閉、板卡操作、串口操作等任務),采用UDP協(xié)議進行通信。
1.4 控制臺設備模塊
控制臺設備模塊由CPCI工控計算機和繼電器板卡組成。供電電源繼電器卡采用NI PXI-2564 16路5 A SPST開關模塊,它是大功率繼電器卡,可進行電源輸入和電源備份;斷電及轉電控制信號繼電器卡采用ADLINK PXI-7901 16路通用SPDT開關模塊,可進行電源的控制切換。系統(tǒng)結構及外部接口關系如圖3所示。
系統(tǒng)采用Agilent N6700系列模塊電源供電,控制臺由RS 422串行通信接口連接到單片機測控模塊、網(wǎng)絡連接到遠程控制臺。為通信的穩(wěn)定可靠,控制臺與遠程控制臺間的千兆以太網(wǎng)通過光電轉換器轉為光纖連接??刂婆_接受遠程控制臺的控制,對來自單片機采集模塊的數(shù)據(jù)進行解碼及顯示并傳向遠程控制臺,通信采用UDP協(xié)議。
2 軟件設計與實現(xiàn)
2.1 多重事件方式實現(xiàn)網(wǎng)口及串口通信
控制臺模塊需要接收遠程控制臺的遠程控制命令幀和來自RS 422串行通信接口(與單片機采集模塊相連)的串行數(shù)據(jù),并把串行數(shù)據(jù)打包成既定格式UDP數(shù)據(jù)幀轉發(fā)送到遠程控制臺,為此控制臺軟件需建立后臺管理器(CTConManager)來開啟網(wǎng)絡監(jiān)控線程、串口監(jiān)控線程兩個獨立線程進行監(jiān)控網(wǎng)口和串行口。二者流程圖如圖4所示。
軟件需要把串口數(shù)據(jù)進行協(xié)議轉換為UDP數(shù)據(jù)幀發(fā)送,所以網(wǎng)絡監(jiān)控線程采用等待多重事件的方式來處理由WSACreateEvent函數(shù)創(chuàng)建的網(wǎng)絡事件(m_evtNetWork)和串口事件(m_evtOverlappedSeira1),串口監(jiān)控流程采用異步事件模式監(jiān)控串行口的數(shù)據(jù)接收。網(wǎng)絡事件由WSAEvent Select函數(shù)與當前的socket接口綁定,串口事件由串口接收一個完整數(shù)據(jù)幀后設置到網(wǎng)絡監(jiān)控線程。當控制臺網(wǎng)絡可以接收到遠程控制臺的網(wǎng)絡幀(即有網(wǎng)絡事件發(fā)生)時,線程調(diào)用ProcessNetworkEvent函數(shù)來處理這個事件(即開始解析遠程命令幀),相應串口事件調(diào)用網(wǎng)絡監(jiān)控線程的ProcessSerialEvent函數(shù)來處理這個事件(即發(fā)送數(shù)據(jù)幀)。線程中的網(wǎng)絡超時事件(WSA_WAIT_TIME OUT)處理超時任務(ProcessTimeOut Event)包括串口和板卡狀態(tài)的循環(huán)檢測以及狀態(tài)數(shù)據(jù)包的發(fā)送。
軟件采用這種機制能及時響應多重事件,實現(xiàn)了串口和網(wǎng)絡接口的對接,節(jié)省了設備資源,使系統(tǒng)效率得到了提高。
2.2 TCP多數(shù)據(jù)流整合同步處理
根據(jù)系統(tǒng)要求,數(shù)傳與實時處理模塊將多個TCP流的相同或不同字段的數(shù)據(jù)進行提取并整合為一個UDP數(shù)據(jù)報文并發(fā)送至遠程控制臺。
由于多個TCP數(shù)據(jù)流發(fā)送過程中很可能會出現(xiàn)某個數(shù)據(jù)流到達時間相對其他數(shù)據(jù)流有延遲,這就會造成在整合為UDP數(shù)據(jù)報文的過程中數(shù)據(jù)的不同步。為解決這個問題,軟件采用基于數(shù)據(jù)隊列的方式實現(xiàn)碼流同步。首先將多個既定長度的TCP流數(shù)據(jù)(TCPDataValue)加入(push)多個相應隊列(CDataQueue),當所有隊列的長度大于等于1,即所有隊列有元素時,將隊列中的第一個(即最先壓入隊列)元素彈出(GetFirstDa ta),然后進行碼流的數(shù)據(jù)提取。
下面以三個數(shù)據(jù)流為例說明這種機制的實現(xiàn),主要代碼如下:
軟件利用這種機制既保證了多數(shù)據(jù)流數(shù)據(jù)的同步性,同時又不會對數(shù)據(jù)的實時性產(chǎn)生較大影響。
3 系統(tǒng)測試
軟件測試環(huán)境為裝有系統(tǒng)硬件環(huán)境的工控機,工控機之間通過千兆以太網(wǎng)絡以光纖連接。本系統(tǒng)現(xiàn)有插裝繼電器板卡的控制臺設備一套;LINKSYS(型號為SRW2024)24端口千兆帶寬交換機若干臺;數(shù)據(jù)源設備3套,單一數(shù)據(jù)源設備的數(shù)據(jù)采集周期為20 ms,整幀長度為4 096 B;單片機測控設備(32路數(shù)據(jù)通道)一套,數(shù)據(jù)采集周期為200 ms,整幀長度為32 B。將本系統(tǒng)進行一段時間的數(shù)據(jù)測試積累,來獲取系統(tǒng)的吞吐量、命令響應時間、資源消耗和效率等。
經(jīng)過長時間的測試運行表明本系統(tǒng)網(wǎng)絡能達到6~7 MB/s的吞吐量,且數(shù)據(jù)穩(wěn)定、可靠、同步性高,與數(shù)據(jù)源對比沒有出現(xiàn)亂序、丟包等現(xiàn)象;控制臺設備可以較好地分配網(wǎng)口與串口的CPU調(diào)度處理時間,接收到遠程控制命令可靠,硬件響應時間短;整個系統(tǒng)在一般配置計算機運行占用資源少,運行流暢,達到了設計的要求。
4 結語
基于TCP/IP的多數(shù)據(jù)流傳輸測控系統(tǒng)實現(xiàn)了各數(shù)據(jù)采集系統(tǒng)設備的控制、數(shù)據(jù)的傳輸和處理。本系統(tǒng)利用TCP/IP技術、數(shù)據(jù)采集技術和面向對象的軟件開發(fā)技術,利用現(xiàn)有的網(wǎng)絡資源,以高性價比實現(xiàn)信息的實時獲取存儲、設備的高效控制和用戶軟件界面的直觀顯示。通過幾個月的測試運行,穩(wěn)定可靠,實時性高,達到了多數(shù)據(jù)流傳輸測控的目的。