分布式測試系統的一種網絡通信設計
1 引言
本文引用地址:http://www.104case.com/article/193431.htm在測試系統中,常需要對多臺儀器設備進行集中控制,并對它們的數據進行統一分析處理。測試系統智能化和自動化程度的提高對測試設備間的數據交換提出了更高的要求,這里,分布式控制成為一種十分有效的方式[1]。
在分布式測試系統中,數據交換主要在主處理機與各智能控制單元間進行,根據測試系統的特點,其通信系統應具有良好的可靠性、通用性、擴展能力和簡單的連接方式,并應能適應長距離傳輸的需要,在系統通信方式及其協議的制定中應充分考慮以上特點,以使其適應不同測試應用的需要。
為適應多控制節點和長距離通信的需要,本文采用RS—485半雙工串行通信協議作為本測試控制網絡的通信標準。由于采用了平衡驅動、差分接收方式,有效地減小了共模干擾等影響,從而使其傳輸距離和帶負載能力等都較RS—232C有很大提高[2]。
由于目前的PC機都配有RS—232C接口,故設計了一種RS—485接口,它可以安放在普通的轉接頭內,直接插到PC機的串口上,把PC機的RS—232C輸出轉換為RS—485輸出,其結構如圖1所示。與其它方法相比,這一方法具有接口方式簡單、通用性強、體積小、成本低等優點。另外,我們還可在這一接口中加入智能控制單元,以適應與常規儀器設備通信的需要。
圖1 串行接口適配器
3 數據傳輸協議與軟件設計
分布式測試系統中,各測試設備主要與主處理機間進行數據通信,根據這一特點,本文決定采用較為明確的主從式通信作為系統通信方式[3],以保持系統功能的統一性并同時滿足其余節點間通信的需要。
3.1 信息幀格式
系統中數據與命令的傳輸均采用打包方式,數據幀格式如圖2所示。其中,地址字節最高位規定為0,用以標志幀起始;采用可變長數據域,數據長度范圍為1~255字節;采用兩個字節進行數據校驗;尾標志規定為0FFH,用以標志幀結束。字節傳輸格式規定為11位,即8位數據位,1位地址/數據標志位,1位起始位和1位停止位。為便于實現多機通信,把傳輸字節劃分為地址類碼與數據類碼,地址類碼第9位標志為1,可為所有處于聽者狀態的下位機接收;數據類碼第9位標志為0,只能被指定的下位機接收。
通信中,主機發送的命令和數據可分為針對指定下位機的址令和針對所有下位機的通令。為此,我們規定地址7FH為通令地址,發向該地址的命令可為所有下位機接收。為保證數據傳輸可靠,均采取應答方式進行通信,下位機接收到主機發出的數據后,立即回送狀態信息。若超過指定時間仍未收到應答信息,則進行超時報警。本系統中約定用4個字節分別表示系統的通信和工作狀態。其中,兩個字節代表通信狀態,兩個字節代表控制器當前工作狀態,可根據具體應用進行調整。這里,采用CRC方式進行數據校驗,當發現數據傳輸錯誤時,主機采用自動反饋重發方法進行糾正。
圖2 數據通信幀格式
3.2 基于中斷的通信軟件設計
為了保證主處理機進行數據處理等工作的時間,通信過程應盡量減小其影響,故在軟件設計時,主要過程均采用中斷驅動。發送信息時,只需將數據寫入緩沖區,其后的過程即由中斷接管;同樣,接收過程也完全由中斷管理,使主機在進行其它處理過程中無需任何等待。為適應不同的通信任務,特別是大數據量通信的需要,接收及發送部分均采用了環形緩沖區結構。為充分利用硬件資源,主要過程采用匯編語言編寫,采用嵌入式匯編與匯編調用相結合的方法編寫C語言通信函數,以實現與高層程序的接口。另外,各主要通信過程均構成獨立的通信函數,可在任何采用該協議的通信網絡中使用。圖3所示為其中的串口中斷處理流程。這里,數據的發送及接收均采取逐字節方式進行,以避免集中占用主機工作時間。
采用以上通信協議和軟件,基于總線型網絡,我們方便地實現了PC機之間以及PC機與智能儀器間的數據通信,實驗證明它們具有良好適應性。
評論