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