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