顏士博
(上海鐵路通信有限公司,上海 200071)
自動測試系統(tǒng)(Automatic Test System,ATS)主要是指采用計算機技術實現自動化測試的設備或系統(tǒng)。從系統(tǒng)構成上看,通常主要包括:測試條件發(fā)生-信號輸入、數據采集、數據處理、顯示-輸出等幾部分,實際應用中也包括報表生成、故障統(tǒng)計等功能。從軟硬件構成的角度講,可分為測試設備和測試程序集兩部分:前者主要指各種儀器儀表和相關的硬件設備。后者主要指各種軟件,包括底層的儀器儀表設備驅動軟件、各個業(yè)務測試項目軟件和應用軟件,其中業(yè)務軟件主要的實現方法是通過軟件定義對象和過程,利用計算機技術自動完成對被測對象的建模、輸入/輸出控制、狀態(tài)控制、收集對象和過程數據,然后根據需要對數據進行分析處理,最后形成測試結果或測試報告。
自動化測試與人工測試相比較,通常具備速度快、精度準、錯誤少、效率高、存儲和查詢方便快捷等優(yōu)勢,特別是對產能大、重復性高、參量多和測量范圍廣等場合非常適用。近年來,隨著智能化、自動化和信息化技術的深入發(fā)展,自動化測試裝備、測試技術已經成為研發(fā)和生產企業(yè)投入的一個重要領域和研究方向。
本文介紹的測試系統(tǒng)是為某公司所生產的一款相對復雜的產品系統(tǒng)開發(fā)的。該產品系統(tǒng)在研發(fā)階段與生產初期,已經分別購置了幾套昂貴、獨立式的專業(yè)儀器儀表,用于各階段各種需求項指標的測試。這個階段的各項測試主要是通過技術人員手動操作各類儀器儀表,通過人工讀取并記錄測試結果和數據,最終完成測試。由于被測試系統(tǒng)的構成相對復雜,由十幾個單板級的板卡構成,如電源板、發(fā)送板、解碼板、接收板、MVB通信板、記錄板、射頻單元等。對該系統(tǒng)的測試,共涉及十幾款儀器儀表的使用操作,如不同程式的程控電源、示波器、信號發(fā)生器、網絡分析儀、頻譜分析儀、功率計、萬用表等。在全人工測試的模式下,無法滿足生產測試需求。
由于前期已投入不少資源在儀器儀表等設備購置上,為充分利用此類資產,減少投資浪費,優(yōu)先利用已有的儀器儀表,通過軟件集成的方案實現。
按照這一思路,系統(tǒng)所采用的儀表都具備通信能力,提供不同形式的通信接口,如常用的以太網口、GPIB口、USB口和串口等。有網口的通過交換機連接到測試平臺計算機,GPIB口、USB口或串口設備則通過直連的方式連接到測試平臺計算機,通過計算機軟件完成對所連接的各種儀器儀表的驅動、控制和遠程操作。系統(tǒng)的主要硬件設備構成如圖1所示。主要包括:測試接口單元、功率計、萬用表、網絡分析儀、頻譜分析儀、信號發(fā)生器、示波器、程控電源和I/O控制器等,為便于實現人機交互,還設計了輔助操作設備。
圖1 系統(tǒng)構成Fig.1 System composition diagram
系統(tǒng)的整個工作流程如下。
測試時將被測板卡插入測試接口單元中,測試接口通過測試矩陣完成測試所需要的條件輸入和測試結果輸出的自動化配置工作,如:測試需要的電壓由程控電源提供,需要的輸入波形由信號發(fā)生器提供,輸出的結果通常由萬用測量獲取,射頻信號的測量則由網絡分析儀采集讀取等。
測試平臺軟件的驅動層完成各儀表測試時的初始化,測試過程的設置、輸入/輸出控制,并從儀器儀表中讀取需要的測試結果;測試平臺業(yè)務處理層主要是依據測試大綱的各測試項,通過軟件完成對測試過程的定義,實現各測項的測試,最終將各測試項編成測試序列,形成一個測試集,由系統(tǒng)按序自動完成所有項的測試。對于人工參與或干預的測試項,則開發(fā)了直觀的測試人機接口 (HMI)界面,輔助并引導測試人員快速完成該測試項的測試。
系統(tǒng)測試完并確認后,根據需要自動生成測試報表和報告,記錄每項的過程數據,并經過自動處理得出測試結論,最終輸出測試報告。
整個系統(tǒng)軟件框架的設計如圖2所示,主要包括3層:儀器儀表驅動、各測試項業(yè)務邏輯和各測試板卡測試項序列文件,每一層都設計專用的應用程序接口(API)為上層提供服務。此外還包括報表處理、操作界面和用戶管理功能模塊,系統(tǒng)每一部分都采用模塊化設計思想設計實現。
圖2 系統(tǒng)軟件框架Fig.2 System software framework
設備驅動相對比較復雜,主要是不同功能的儀器儀表涉及不同的廠商,不同類型的接口,不同的接口協(xié)議,雖然各式各樣,但是大多數廠商都會提供相關的驅動,或第三方的驅動,只需在此基礎上做二次驅動程序的開發(fā)即可。常見的協(xié)議有SCPI、USBTMC、VISA等,因此,系統(tǒng)軟件的開發(fā)主要集中在對儀器儀表類的開發(fā),本系統(tǒng)主要采用面向對象的軟件設計方法,每個儀器儀表都作為一個單獨的類進行定義,向下封裝了該設備的底層驅動,向上提供API。程序在運行時按照單例創(chuàng)建對象,避免底層的資源搶占和沖突。例如程控電源相關部分API設計參考如圖3所示,包括程控電源對象的創(chuàng)建、系統(tǒng)參數設置、狀態(tài)控制和輸出參數設置、參數讀取等。
圖3 程控電源部分API設計Fig.3 API design of programmed power supply
除了儀器儀表對象的開發(fā),另一個開發(fā)的重點是根據測試項進行的業(yè)務邏輯的開發(fā)。測試項通常要封裝成動態(tài)鏈接庫(DLL),由更上一層的應用調用,每個測試項通常對應一個或多個API。每個鏈接庫均由一組模塊化的程序實現,以下是一個為發(fā)送板測試項而開發(fā)的部分API,如圖4所示。
圖4 發(fā)送板各測試項部分API設計Fig.4 API design of each test item of sending board
除了測試項業(yè)務邏輯的開發(fā),測試過程中需要一些交互HMI圖形化操作界面、告警或提示信息的圖形化界面,也需要在此進行開發(fā)并封裝到DLL中,供應用層測試序列程序調用,為操作人員提供良好的操作界面。
測試序列程序是按照測試大綱,通過Teststand軟件完成開發(fā)、調用、判決、執(zhí)行的。該軟件是一個專門為自動化測試而開發(fā)的流程編輯與執(zhí)行為一體的軟件。本方案主要用到的功能包括底層測試項API的調用,上下文數據生成,測試項條件的輸入、輸出和處理,測試結果的輸出與測試報表的自動生成等。軟件主要將各個板卡的測試項按照序列文件的形式編輯在一起,以實現流程流水化,同時設計以不同的出條件、入條件等邏輯關系,以及過程參數的設置和結果的收集處理。
本系統(tǒng)最終開發(fā)的集成-執(zhí)行-界面如圖5所示。左側一欄為各個待測板卡測試序列文件列表;右側一欄為一個具體的測試序列文件,包括若干測試項,每個測試項又分為測試步驟、測試描述、設置3個屬性對象;variable-value一欄則為測試過程變量和過程數據,可實時顯示過程結果。
圖5 測試序列文件開發(fā)集成界面Fig.5 Integrated interface of test sequence file development
目前該測試系統(tǒng)已經應用到產線上,實踐證明該系統(tǒng)可以大幅提高產品的測試效率,減輕員工的勞動強度,提高自動化水平和效率。但在開發(fā)和應用過程中也發(fā)現一些問題,其中有一個比較突出的是:由于前期研發(fā)階段對生產自動化測試需求考慮的不是很周全,沒有預留足夠的測試點,造成測試夾具制作起來比較困難,部分測試仍需輔助以手動點觸才能完成測試。因此,自動化測試需要從設計、研發(fā)階段就開始統(tǒng)籌考慮,生產階段需要作為重點,持續(xù)跟進、實施和落實。