基于TCP/IP的多數據流傳輸測控系統的設計與實現
1.3 遠程控制臺模塊
遠程控制臺負責對數傳與實時處理模塊、控制臺模塊的網絡喚醒和網絡監控,以及完成對遠程設備電源的相關操作。遠程控制臺接收相鄰模塊的網絡數據幀(包括數傳與實時處理模塊對多數據流進行整合的數據幀和控制臺模塊轉發的單片機采集數據幀),對控制臺發送網絡控制幀(完成參數設置、系統開啟關閉、板卡操作、串口操作等任務),采用UDP協議進行通信。
1.4 控制臺設備模塊
控制臺設備模塊由CPCI工控計算機和繼電器板卡組成。供電電源繼電器卡采用NI PXI-2564 16路5 A SPST開關模塊,它是大功率繼電器卡,可進行電源輸入和電源備份;斷電及轉電控制信號繼電器卡采用ADLINK PXI-7901 16路通用SPDT開關模塊,可進行電源的控制切換。系統結構及外部接口關系如圖3所示。
系統采用Agilent N6700系列模塊電源供電,控制臺由RS 422串行通信接口連接到單片機測控模塊、網絡連接到遠程控制臺。為通信的穩定可靠,控制臺與遠程控制臺間的千兆以太網通過光電轉換器轉為光纖連接。控制臺接受遠程控制臺的控制,對來自單片機采集模塊的數據進行解碼及顯示并傳向遠程控制臺,通信采用UDP協議。
2 軟件設計與實現
2.1 多重事件方式實現網口及串口通信
控制臺模塊需要接收遠程控制臺的遠程控制命令幀和來自RS 422串行通信接口(與單片機采集模塊相連)的串行數據,并把串行數據打包成既定格式UDP數據幀轉發送到遠程控制臺,為此控制臺軟件需建立后臺管理器(CTConManager)來開啟網絡監控線程、串口監控線程兩個獨立線程進行監控網口和串行口。二者流程圖如圖4所示。
軟件需要把串口數據進行協議轉換為UDP數據幀發送,所以網絡監控線程采用等待多重事件的方式來處理由WSACreateEvent函數創建的網絡事件(m_evtNetWork)和串口事件(m_evtOverlappedSeira1),串口監控流程采用異步事件模式監控串行口的數據接收。網絡事件由WSAEvent Select函數與當前的socket接口綁定,串口事件由串口接收一個完整數據幀后設置到網絡監控線程。當控制臺網絡可以接收到遠程控制臺的網絡幀(即有網絡事件發生)時,線程調用ProcessNetworkEvent函數來處理這個事件(即開始解析遠程命令幀),相應串口事件調用網絡監控線程的ProcessSerialEvent函數來處理這個事件(即發送數據幀)。線程中的網絡超時事件(WSA_WAIT_TIME OUT)處理超時任務(ProcessTimeOut Event)包括串口和板卡狀態的循環檢測以及狀態數據包的發送。
軟件采用這種機制能及時響應多重事件,實現了串口和網絡接口的對接,節省了設備資源,使系統效率得到了提高。
2.2 TCP多數據流整合同步處理
根據系統要求,數傳與實時處理模塊將多個TCP流的相同或不同字段的數據進行提取并整合為一個UDP數據報文并發送至遠程控制臺。
由于多個TCP數據流發送過程中很可能會出現某個數據流到達時間相對其他數據流有延遲,這就會造成在整合為UDP數據報文的過程中數據的不同步。為解決這個問題,軟件采用基于數據隊列的方式實現碼流同步。首先將多個既定長度的TCP流數據(TCPDataValue)加入(push)多個相應隊列(CDataQueue),當所有隊列的長度大于等于1,即所有隊列有元素時,將隊列中的第一個(即最先壓入隊列)元素彈出(GetFirstDa ta),然后進行碼流的數據提取。
tcp/ip相關文章:tcp/ip是什么
評論