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