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