遠(yuǎn)程通信節(jié)點(diǎn)的系統(tǒng)測(cè)試方法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1 概 述
在基于遠(yuǎn)程通信的分布式控制系統(tǒng)中,為了增強(qiáng)系統(tǒng)的兼容性和靈活性,可將控制節(jié)點(diǎn)的遠(yuǎn)程通信功能單獨(dú)分離出來(lái),交給遠(yuǎn)程通信節(jié)點(diǎn)去管理。這樣,各遠(yuǎn)程節(jié)點(diǎn)之間的通信就完全等效為控制節(jié)點(diǎn)間的本地通信,而無(wú)需關(guān)心其是否具有遠(yuǎn)程通信能力,從而簡(jiǎn)化控制節(jié)點(diǎn)的設(shè)計(jì)。
一個(gè)典型的遠(yuǎn)程通信節(jié)點(diǎn)的例子是基于單片機(jī)實(shí)現(xiàn)的、具有2個(gè)RS-232串行口、1個(gè)485總線端口的系統(tǒng)。單片機(jī)選用具有存儲(chǔ)功能的89C51,RS-232串口選用具有握手功能的接口芯片16C550,485總線接口選用75176接口芯片與單片機(jī)的串口相連,而對(duì)于待轉(zhuǎn)發(fā)數(shù)據(jù)的存儲(chǔ)則采用靜態(tài)RAM芯片6264。在89C51系統(tǒng)中,由于I/O端口地址與外部RAM單元地址處于同一個(gè)地址空間,因此采用一個(gè)統(tǒng)一的3-8譯碼器就可以實(shí)現(xiàn)對(duì)I/O端口和對(duì)外部RAM單元的操作。
通用異步收發(fā)器(UART)是實(shí)現(xiàn)遠(yuǎn)程通信的核心部件,也是系統(tǒng)測(cè)試的重點(diǎn)。本方案所選用的16C550是一個(gè)穩(wěn)定性好、可靠性高、編程功能很強(qiáng)的UART。它除了完成對(duì)收發(fā)數(shù)據(jù)的"串-并"和"并-串"轉(zhuǎn)換之外,還可通過(guò)對(duì)其內(nèi)部11個(gè)寄存器的編程方便地設(shè)置芯片的工作方式、數(shù)據(jù)幀格式等控制參數(shù)以及讀取芯片的工作狀態(tài)和MODEM的狀態(tài)等數(shù)據(jù),從而實(shí)現(xiàn)遠(yuǎn)程通信節(jié)點(diǎn)之間的全雙工通信。16C550有三種工作模式:查詢、中斷和回路自測(cè)試。系統(tǒng)正常工作時(shí)宜采用中斷方式,以提高系統(tǒng)的效率;而查詢方式和回路自測(cè)試方式主要用于系統(tǒng)測(cè)試場(chǎng)合。
遠(yuǎn)程通信節(jié)點(diǎn)是一個(gè)軟硬件結(jié)合、本地和遠(yuǎn)程通信功能并存的復(fù)雜系統(tǒng),給系統(tǒng)測(cè)試帶來(lái)一定難度:一方面硬件系統(tǒng)的邏輯正確性有待驗(yàn)證,另一方面系統(tǒng)軟件的邏輯功能也有待進(jìn)一步調(diào)試。在兩種因素都不確定的情況下,如何能夠確認(rèn)系統(tǒng)邏輯的正確性,值得深入研究。解決這類問(wèn)題的基本思路是對(duì)相關(guān)因素進(jìn)行解耦,即將多個(gè)相互關(guān)聯(lián)的因素按一定的邊界條件分解為相對(duì)獨(dú)立的因素,然后對(duì)這些獨(dú)立的因素分別加以處理。
完成對(duì)遠(yuǎn)程通信節(jié)點(diǎn)的測(cè)試需要用到如下幾種儀器設(shè)備:萬(wàn)用表、邏輯筆、數(shù)字存儲(chǔ)示波器以及單片機(jī)的仿真器、MODEM、公用電話線路、PC機(jī)等。
2 系統(tǒng)測(cè)試步驟
在系統(tǒng)測(cè)試之前,應(yīng)首先確定系統(tǒng)測(cè)試的總體方案及流程,根據(jù)總體流程把系統(tǒng)功能分解為功能相對(duì)獨(dú)立的單元模塊,對(duì)單元模塊逐個(gè)進(jìn)行軟硬件測(cè)試;然后,從邏輯上將單元模塊進(jìn)行集成測(cè)試;最后,對(duì)系統(tǒng)的遠(yuǎn)程撥號(hào)及系統(tǒng)整體功能進(jìn)行測(cè)試。具體地說(shuō),對(duì)遠(yuǎn)程通信節(jié)點(diǎn)系統(tǒng)的測(cè)試步驟如下:
第一步,對(duì)I/O端口的讀/寫訪問(wèn)測(cè)試;
第二步,對(duì)UART的連結(jié)邏輯和狀態(tài)測(cè)試;
第三步,本地?cái)?shù)據(jù)通路測(cè)試,即測(cè)試從CPU到RS-232的本地?cái)?shù)據(jù)通路是否形成;
第四步,通信節(jié)點(diǎn)與MODEM之間握手信號(hào)的應(yīng)答測(cè)試,以及MODEM對(duì)AT指令的響應(yīng)測(cè)試;
第五步,通信節(jié)點(diǎn)撥號(hào)功能測(cè)試與數(shù)據(jù)鏈路測(cè)試;
第六步,通信節(jié)點(diǎn)的整體測(cè)試。
2.1 CPU外圍電路及外部RAM、I/O端口的測(cè)試
在對(duì)CPU及其外圍電路測(cè)試之前,應(yīng)在斷電的情況下,用常規(guī)方法檢查主要芯片的連線是否正確。如果連線和焊接全部正確,再對(duì)通信節(jié)點(diǎn)上電測(cè)試,檢查其工作電壓是否正常。如果這些檢查都正常,則繼續(xù)測(cè)試。
(1)CPU外圍電路的測(cè)試
將通信節(jié)點(diǎn)與仿真器連接,通過(guò)仿真器以單步工作方式向單片機(jī)內(nèi)的I/O端口(如P1口)送出測(cè)試信號(hào)。用萬(wàn)用表或邏輯筆測(cè)試單片機(jī)芯片引腳的狀態(tài),依此驗(yàn)證單片機(jī)的外圍電路是否正常工作。
(2)外部RAM及I/O端口的測(cè)試
在回路自測(cè)試模式下,對(duì)MCR的位操作將會(huì)引起MSR相應(yīng)位的狀態(tài)發(fā)生變化,回路自測(cè)試的判斷邏輯為:
MSR.5 = MCR.0
MSR.4 = MCR.1
MSR.6 = MCR.2
MSR.7 = MCR.3
即在給定MCR值的情況下,如果從MSR能得到相應(yīng)的值,則說(shuō)明UART工作正常,外圍電路的連接邏輯正確;否則,說(shuō)明UART沒(méi)有正常工作。對(duì)回路自測(cè)試結(jié)果進(jìn)行分析判斷的程序如下:
MOV DPTR,#MCR ; 取MCR的地址
MOV A,#0BH
MOVX @DPTR,A ; 將MCR的值設(shè)置為0BH
MOV DPTR,#MSR ; 取MSR的地址
MOVX A,@DPTR ; 從MSR讀取相應(yīng)的狀態(tài)數(shù)
; 據(jù),判斷其是否為B0H
由此可見(jiàn),回路自測(cè)試功能是非常有用的,使用這種方法可以迅速判斷16C550的連接邏輯是否正確。
2.3 對(duì)本地?cái)?shù)據(jù)通路的測(cè)試
在完成通信節(jié)點(diǎn)核心部分的單元測(cè)試之后,需要對(duì)2個(gè)RS-232串口之間的本地?cái)?shù)據(jù)通路進(jìn)行測(cè)試。測(cè)試的方法是:選取一組測(cè)試數(shù)據(jù),通過(guò)仿真器以連續(xù)方式向16C550的串行輸出口發(fā)送這些測(cè)試數(shù)據(jù),使用數(shù)字存儲(chǔ)示波器分別在16C550的串行輸出口、RS-232轉(zhuǎn)換芯片的輸出端及RS-232連接器的TxD引腳等位置上觀察測(cè)試信號(hào)的波形,再將波形與測(cè)試數(shù)據(jù)編碼進(jìn)行對(duì)比。例如,如果把數(shù)據(jù)幀格式定義為8位數(shù)據(jù)位、1位起始位、1位停止位、無(wú)奇偶校驗(yàn)位,則可以選取55H、00H和FFH作為測(cè)試數(shù)據(jù)。此時(shí),55H對(duì)應(yīng)的輸出波形是方波;00H對(duì)應(yīng)的輸出波形只有停止位上有一個(gè)1,其余位置全為0;而FFH 對(duì)應(yīng)的輸出波形只有起始位上有一個(gè)0,其余位置全為1。在16C550的串行輸出口上測(cè)到的波形分別如圖1所示。
進(jìn)行此項(xiàng)測(cè)試時(shí)應(yīng)注意兩點(diǎn):第一,測(cè)試數(shù)據(jù)的選取要考慮輸出波形的易判別性,波形特征要明顯;第二,MAX232轉(zhuǎn)換器的編碼方式是負(fù)邏輯,即MAX232轉(zhuǎn)換器輸出端的波形與輸入端的波形是反相的。
2.4 通信節(jié)點(diǎn)與MODEM之間的應(yīng)答測(cè)試
建立通信節(jié)點(diǎn)與MODEM之間的應(yīng)答關(guān)系,是實(shí)現(xiàn)遠(yuǎn)程通信的關(guān)鍵,是數(shù)據(jù)鏈路形成的基礎(chǔ)與核心。對(duì)該功能的測(cè)試包含兩項(xiàng)主要內(nèi)容:通信節(jié)點(diǎn)與MODEM之間的握手信號(hào)測(cè)試和MODEM對(duì)AT指令的響應(yīng)測(cè)試。對(duì)這些功能的測(cè)試均需要編寫相應(yīng)的輔助測(cè)試程序。
(1)通信節(jié)點(diǎn)與MODEM之間握手信號(hào)的測(cè)試
通信節(jié)點(diǎn)與MODEM之間的握手信號(hào)是指:數(shù)據(jù)終端準(zhǔn)備好信號(hào)DTR、MODEM準(zhǔn)備好信號(hào)DSR、發(fā)送請(qǐng)求信號(hào)RTS、允許發(fā)送信號(hào)CTS、振鈴信號(hào)RI和數(shù)據(jù)載波信號(hào)RLSD。
測(cè)試程序中,通信節(jié)點(diǎn)以查詢方式與MODEM進(jìn)行交互,即先由通信節(jié)點(diǎn)向MODEM發(fā)送終端設(shè)備準(zhǔn)備好信號(hào)DTR=1,MODEM對(duì)此信號(hào)做出回應(yīng),并返回準(zhǔn)備好信號(hào)DSR。如果測(cè)試程序檢測(cè)到DSR=1,再向MODEM發(fā)出信號(hào)RTS=1并等待回應(yīng)。如果MODEM給出回應(yīng)信號(hào)CTS=1,則表示握手成功,通信節(jié)點(diǎn)就可以向MODEM發(fā)送AT指令了。
(2)MODEM對(duì)AT指令的響應(yīng)測(cè)試
通信節(jié)點(diǎn)與MODEM之間進(jìn)行會(huì)話的途徑是,在命令模式下通過(guò)通信節(jié)點(diǎn)的RS-232串口以ASCII碼的形式向MODEM發(fā)送AT指令。因此,MODEM對(duì)AT指令能否做出正確響應(yīng)是通信鏈路建立的基礎(chǔ)。測(cè)試方法是:通過(guò)仿真器向MODEM發(fā)送命令A(yù)TS0=1(置MODEM為自動(dòng)應(yīng)答狀態(tài)),然后,觀察MODEM的AA指示燈是否被點(diǎn)亮,據(jù)此,判斷MODEM是否對(duì)AT指令做出正確響應(yīng)。一旦MODEM進(jìn)入自動(dòng)應(yīng)答狀態(tài),就可以進(jìn)行撥號(hào)功能測(cè)試和數(shù)據(jù)鏈路測(cè)試了。
2.5 通信節(jié)點(diǎn)的撥號(hào)功能及通信鏈路測(cè)試
通信節(jié)點(diǎn)的撥號(hào)功能是通過(guò)通信的節(jié)點(diǎn)向MODEM發(fā)送自動(dòng)撥號(hào)AT指令來(lái)完成的。測(cè)試方法是:把兩個(gè)MODEM同時(shí)接入PSTN,一個(gè)作為主叫方,另一個(gè)作為被叫方,通過(guò)通信節(jié)點(diǎn)的RS-232串口與MODEM進(jìn)行連接。被叫方MODEM由通信節(jié)點(diǎn)將其初始化為自動(dòng)應(yīng)答方式,而主叫方的通信節(jié)點(diǎn)通過(guò)AT指令向MODEM發(fā)送待呼叫的電話號(hào)碼(以ASCII碼表示),MODEM根據(jù)收到的電話號(hào)碼向被叫方發(fā)出呼叫。如果被叫方在收到振鈴信號(hào)后能對(duì)發(fā)起呼叫者作出正確回應(yīng),則說(shuō)明通信節(jié)點(diǎn)的撥號(hào)功能有效,且兩個(gè)通信節(jié)點(diǎn)之間數(shù)據(jù)鏈路可以成功建立。
2.6 全雙工通信功能的綜合測(cè)試
全雙工通信功能的測(cè)試方法是:將主叫方和被叫方的MODEM與各自的通信節(jié)點(diǎn)按照上述辦法進(jìn)行連接后,在通信節(jié)點(diǎn)的第2個(gè)RS-232串口上各連1臺(tái)PC機(jī),將MODEM初始化為自動(dòng)應(yīng)答方式,而通信節(jié)點(diǎn)自身處于等待中斷并接收數(shù)據(jù)的狀態(tài)。然后,在2臺(tái)PC機(jī)上分別運(yùn)行連續(xù)發(fā)送數(shù)據(jù)的程序和接收數(shù)據(jù)的程序(這2個(gè)程序均是事先調(diào)試好的),再將接收到的數(shù)據(jù)與對(duì)方發(fā)送的數(shù)據(jù)進(jìn)行比較。如果兩者一致,說(shuō)明整個(gè)數(shù)據(jù)鏈路沒(méi)有問(wèn)題;如果兩者不一致,則說(shuō)明數(shù)據(jù)鏈路工作不正常。應(yīng)按照下述方法進(jìn)行檢查:首先,檢查通信節(jié)點(diǎn)的中斷接收子程序和發(fā)送子程序是否有問(wèn)題;然后,再按照前述方法的倒序逐級(jí)檢查出錯(cuò)原因。