楊 林
(中國空間技術(shù)研究院西安分院,西安,710000)
空間行波管放大器廣泛應(yīng)用于通信、導(dǎo)航、遙感等衛(wèi)星中,是星載有效載荷系統(tǒng)中的重要的功放設(shè)備。隨著國產(chǎn)化空間行波管放大器研制的突破,產(chǎn)品構(gòu)成的復(fù)雜性和集成度越來越高,功能越來越強,頻段覆蓋L/Q波段,在北斗導(dǎo)航、載人飛船、貨運飛船、通信衛(wèi)星等58顆星船中實現(xiàn)批量飛行應(yīng)用,形成型譜化開發(fā)和產(chǎn)業(yè)化的發(fā)展。目前國內(nèi)多家行波管放大器研制單位都已建成了一些測試系統(tǒng),實現(xiàn)了行波管放大器的自動化測試[1]。早期研發(fā)的測試系統(tǒng)大多數(shù)屬于定制化開發(fā),只針對特定產(chǎn)品、特定項目和特定儀器完成自動化測試。當增加新的測試儀器或測試項目時,需要重新進行開發(fā),現(xiàn)有測試系統(tǒng)存在設(shè)備分散、功能單一、通用性差等問題。隨著產(chǎn)品交付種類和數(shù)量增加,現(xiàn)有的測試系統(tǒng)已經(jīng)無法滿足行波管放大器的測試需求,尤其在新的測試項目和儀器的擴展上、測試數(shù)據(jù)的分析方面存在困難[2]。國產(chǎn)化行波管放大器進入了質(zhì)量問題多發(fā)與交付進度大量延期的雙重困境。
根據(jù)國產(chǎn)化行波管放大器產(chǎn)品的測試需求和功能特點,本文提出一種基于三層架構(gòu)的行波管放大器測試軟件。該軟件以Python為開發(fā)語言,利用其強大的第三方依賴庫與高效的開發(fā)速率,設(shè)計并實現(xiàn)了行波管放大器自動測試軟件。內(nèi)置了完整的行波管放大器測試方法和豐富的儀器驅(qū)動程序,開放的軟件接口支持多種儀器驅(qū)動和新測試項目的擴展,實現(xiàn)測試過程中數(shù)據(jù)的自動采集、存儲、處理和分析比對。最后的測試結(jié)果標明軟件的設(shè)計大大提高了行波管放大器測試效率,降低了測試風(fēng)險。
行波管放大器是通信衛(wèi)星有效載荷系統(tǒng)中的關(guān)鍵裝置,其工藝技術(shù)復(fù)雜、研制難度高,必須對其進行全面、精確的測試,對測試系統(tǒng)提出了更高的要求[3-4]。系統(tǒng)應(yīng)滿足各類行波管放大器的測試需求,實現(xiàn)測試項目全覆蓋,并支持國內(nèi)外不同廠家的測試儀器,且具備良好的擴展性,實現(xiàn)一種通用的行波管放大器測試系統(tǒng)。
軟件擬實現(xiàn)的功能:1)實現(xiàn)對儀器的控制和測試數(shù)據(jù)的采集;2)內(nèi)置的測試方法完成測試項目的自動測試;3)對測試數(shù)據(jù)進行統(tǒng)一管理,完成數(shù)據(jù)的保存、分析和比對。
根據(jù)軟件的設(shè)計要求和功能需求,本系統(tǒng)采用三層結(jié)構(gòu),包括數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層、表示層[5],如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
1)數(shù)據(jù)訪問層實現(xiàn)儀器的控制與訪問,系統(tǒng)調(diào)用標準的VISA庫,實現(xiàn)對儀器的讀取數(shù)據(jù)和發(fā)送指令,完成對儀器的參數(shù)設(shè)置、數(shù)據(jù)讀取、軌跡截取等操作。
2)業(yè)務(wù)邏輯層實現(xiàn)測試方法的編寫,完成所有測試項目的功能實現(xiàn)。接收表示層的用戶指令,將指令處理成儀器可識別的SCPI指令之后發(fā)送到數(shù)據(jù)訪問層,再將儀器返回的數(shù)據(jù)回傳到表示層。
3)表示層實現(xiàn)數(shù)據(jù)的顯示和輸入,用戶通過圖形界面輸入測試信息和測試指令,同時為測試工程師和設(shè)計師提供直觀的數(shù)據(jù)展示。
系統(tǒng)軟件分為數(shù)據(jù)處理、測試方法設(shè)置、儀器操作控制三個部分。每一個模塊中含有一些主模塊,每個主模塊中有若干子模塊,每個子模塊之間相互獨立,且只實現(xiàn)目的單一的功能。在數(shù)據(jù)處理層主要完成文件管理、數(shù)據(jù)處理和數(shù)據(jù)展示,用戶完成測試文件編輯后,直接開始測試,將需要測試的項目傳遞到業(yè)務(wù)邏輯層中;在業(yè)務(wù)邏輯層完成測試方法的設(shè)置,包括測量項目設(shè)置、被測件設(shè)置、寄存器選擇、測量參數(shù)設(shè)置等模塊,將儀器操作的要求傳遞到數(shù)據(jù)訪問層;在數(shù)據(jù)訪問層完成儀器的具體操作要求,包括寄存器調(diào)用、初始化、測量準備、執(zhí)行操作和數(shù)據(jù)讀取,并將測試數(shù)據(jù)回傳到業(yè)務(wù)邏輯層進行暫存,最后回傳到表示層;在表示層對數(shù)據(jù)進行數(shù)據(jù)修正、單位換算,最后以圖像、表格化的形式進行展示,系統(tǒng)數(shù)據(jù)流圖如圖2所示。
圖2 系統(tǒng)數(shù)據(jù)流圖
采用三層結(jié)構(gòu),體現(xiàn)系統(tǒng)的“高內(nèi)聚、低耦合”特性,用戶表示層只需要對數(shù)據(jù)進行輸入和顯示,業(yè)務(wù)邏輯層對測試項目進行邏輯判斷和執(zhí)行操作,數(shù)據(jù)訪問層對邏輯業(yè)務(wù)層下發(fā)的操作指令進行具體實現(xiàn)。層次之間劃分清晰,相互獨立,可以自由擴展和維護[6]。
數(shù)據(jù)訪問層是所有儀器的控制中心,封裝了對儀器各種操作的集合,儀器的設(shè)置、讀取和觸發(fā)等所有操作都在這里完成。實現(xiàn)對儀器的指令操作、數(shù)據(jù)讀取,并將讀取數(shù)據(jù)反饋到業(yè)務(wù)邏輯層。數(shù)據(jù)訪問層只用來執(zhí)行邏輯業(yè)務(wù)層發(fā)來的操作指令,不需要對其進行邏輯判斷。
行波管放大器測試所需要的儀器種類包括矢量網(wǎng)絡(luò)分析儀、頻譜儀、信號發(fā)生器、功率計、功率頭、脈沖信號發(fā)生器、指令發(fā)生器、數(shù)據(jù)采集器等十余種儀器。國內(nèi)外主流的儀器廠商包括是德科技、羅德與施瓦茨公司、泰克科技、中電41所和中科四點零等國內(nèi)外多個廠家,雖然廠家不同,但都提供標準的VISA庫。VISA庫是一種國際標準的I/O接口,廣泛應(yīng)用于國內(nèi)外儀器儀表的控制。PyVISA是基于VISA標準庫的 Python第三方庫,以 NI-VISA 作為后臺驅(qū)動[7]。針對不同廠家的不同儀器,通過開放VISA接口進行二次封裝,使不同廠家的儀器形成統(tǒng)一的驅(qū)動程序。
數(shù)據(jù)訪問層流程設(shè)計如下:首先在程序中導(dǎo)入PyVISA第三方庫;其次根據(jù)儀器的連接方式,通過執(zhí)行ResourceManager( )方法查詢儀器資源管理器,獲取已連接到電腦的硬件資源;在得到已連接的儀器資源管理器后,就執(zhí)行l(wèi)ist_resources( )方法對本地儀器資源進行查詢,獲取保存儀器的物理地址,每個地址作為儀器資源的唯一標識符;查詢到本地所有的硬件資源地址后,調(diào)用open_resource ()方法選擇某一儀器建立通訊進行訪問;之后利用PyVISA模塊的內(nèi)置函數(shù)Write()進行儀器設(shè)置,Query()進行數(shù)據(jù)的讀取,根據(jù)儀器廠家提供的手冊進行儀器的訪問和控制,完成驅(qū)動程序的開發(fā),并拷貝到根目錄中;最后將儀器的名稱、型號、類別和驅(qū)動名稱保存到儀器數(shù)據(jù)庫中。新儀器的擴展只需要對數(shù)據(jù)驅(qū)動層進行二次開發(fā),按照廠家提供的編程手冊對新儀器開發(fā)驅(qū)動程序,將編譯好的驅(qū)動程序文件拷貝到軟件根目錄中,最后將儀器的名稱、型號、類別和驅(qū)動名稱保存到儀器數(shù)據(jù)庫中,即可完成對新儀器的擴展與更新。
數(shù)據(jù)驅(qū)動層通過對不同儀器編寫相應(yīng)的驅(qū)動程序,實現(xiàn)儀器控制的模塊化設(shè)計,只實現(xiàn)目的單一的儀器控制功能。業(yè)務(wù)邏輯層根據(jù)功能需求直接調(diào)用相應(yīng)儀器驅(qū)動程序,完成儀器的控制和訪問。儀器驅(qū)動程序后期的維護和擴展,工程師只需要在數(shù)據(jù)訪問層進行二次開發(fā),不需要對整個測試系統(tǒng)進行更新維修。
業(yè)務(wù)邏輯層是測試系統(tǒng)的核心部分,完成行波管放大器測試項目的邏輯判斷、執(zhí)行操作、軌跡獲取和數(shù)據(jù)讀取的功能。行波管放大器的技術(shù)參數(shù)有很多,不同類型的行波管有一些特殊的性能參數(shù),主要包括輸出功率、增益、輸入輸出特性、插損等基本的特性也包括諧波輸出、三階交調(diào)噪聲功率譜密度等其他特性參數(shù)[8],如圖3所示。
圖3 功能結(jié)構(gòu)圖
2.3.1 測試項目流程設(shè)計與實現(xiàn)
在行波管自動測試系統(tǒng)中,測試項目的處理步驟如圖4所示:首先,系統(tǒng)與測試儀器建立連接通訊,判斷連接是否正常;其次,根據(jù)測試項目選擇正確測試方法,并對輸入?yún)?shù)進行判讀,若不符合邏輯條件則報錯,若符合要求測試方法會控制儀器按照要求進行參數(shù)的自動設(shè)置,等待設(shè)置完成后,按照要求進行數(shù)據(jù)讀取[9],如果測試方法中有軌跡截取的要求,則將軌跡數(shù)據(jù)按照二進制進行保存;最后,所有的測試項目逐一完成測試后,將測試數(shù)據(jù)和軌跡曲線進行統(tǒng)一保存。
圖4 單項目測試流程圖
2.3.2 異常處理機制
在業(yè)務(wù)邏輯層處理業(yè)務(wù)數(shù)據(jù)時,可能會出現(xiàn)不可預(yù)估的異常情況,如儀器通訊故障、數(shù)據(jù)讀取超時或者文件操作權(quán)限不夠等。軟件利用Python提供的異常處理機制,包含了異常的信息和對異常進行處理的方法如圖5所示,在異常出現(xiàn)的時候及時捕獲,并從內(nèi)部自我消化掉,保證軟件的正常運行。軟件通過“try…except…finally”結(jié)構(gòu)實現(xiàn)異常捕獲并處理,finally 塊無論是否發(fā)生異常都會被執(zhí)行,通常用來釋放try 塊中申請的資源。在數(shù)據(jù)讀取、文件操作和遠程控制等可能會發(fā)生異常的地方加入try語句塊,當執(zhí)行該段程序時,如果try塊中拋出異常,則利用Except捕獲異常,繼續(xù)執(zhí)行后續(xù)操作;如果沒有拋出異常,則利用else語句塊執(zhí)行后續(xù)操作,最后finally 塊釋放資源,執(zhí)行后續(xù)語句,保證軟件不會因為突發(fā)的異常導(dǎo)致程序中斷。
圖5 異常處理機制
業(yè)務(wù)邏輯層是表示層和數(shù)據(jù)訪問層的橋梁,實現(xiàn)三層架構(gòu)之間的數(shù)據(jù)交互和指令傳遞。一方面接受表示層傳來的測試要求,經(jīng)過邏輯判斷和處理后下達到數(shù)據(jù)訪問層進行儀器控制和數(shù)據(jù)讀取;另一方面接收數(shù)據(jù)訪問層傳回的測試數(shù)據(jù),經(jīng)過數(shù)據(jù)處理和運算后上傳到表示層,完成數(shù)據(jù)展示。
表示層給用戶提供直接的圖形界面,實現(xiàn)系統(tǒng)的人機交互,是測試系統(tǒng)的最頂層。主要功能是實現(xiàn)測試要求輸入與測試數(shù)據(jù)的展示,不需要任何邏輯判斷,直接將測試要求傳遞到業(yè)務(wù)邏輯層中進行業(yè)務(wù)數(shù)據(jù)邏輯處理,待指令執(zhí)行結(jié)束后會將測試數(shù)據(jù)回傳到表示層,將最終的數(shù)據(jù)進行圖形化展示[10]。
2.4.1 軟件界面設(shè)計
軟件采用Python提供的PyQt5庫實現(xiàn)界面的設(shè)計,PyQt5是Qt和Python結(jié)合的一個產(chǎn)物,為了將Qt的功能用于Python開發(fā)的一個Qt的Python包裝器。Qt是一個基于面向?qū)ο蟮目梢暬_發(fā)工具,能夠為自動測試系統(tǒng)開發(fā)人員提供建立人機交互界面的功能,具有操作簡便、易擴展,并可以用于多種應(yīng)用系統(tǒng)的開發(fā)[11],軟件主界面如圖6所示。
圖6 用戶界面
2.4.2 測試數(shù)據(jù)圖形化展示
行波管放大器在測試過程中會產(chǎn)生大量的測試數(shù)據(jù),飽和輸出功率、幅頻特性和增益步進性等基本測量參數(shù)都是以圖片和數(shù)值的方式進行展示。輸入輸出特性需要觀察行波管過飽和激勵特性,測試行波管的過飽和承受能力。在指定的頻率下,從小到大逐步增加激勵信號,同時測量行波管的輸入功率和輸出功率,記錄輸入功率從小到大變化過程。測試過程中需要輸出功率、電壓遙測和電流等參數(shù)的變化過程[12],部分輸入輸出特性數(shù)據(jù)如表1所列。軟件利用Python強大可視化功能實現(xiàn)測試數(shù)據(jù)的圖形化展示,用圖形方式從大量數(shù)據(jù)中提取信息。
表1 輸入輸出特性表
軟件采用Matplotlib包實現(xiàn)數(shù)據(jù)曲線的繪制。Matplotlib是基于Matlab編寫的Python第三方庫[13],首先,創(chuàng)建畫布,在畫布中創(chuàng)建子圖;其次,添加圖形標題、坐標軸名稱、刻度等信息;再次,利用內(nèi)部封裝的函數(shù)創(chuàng)建曲線、柱狀、餅圖等2D圖形和一些3D圖;最后,將圖形進行保存和顯示,繪制流程圖如圖7所示。
圖7 繪制流程圖
在輸入輸出特性數(shù)據(jù)中,輸出功率、電流、電壓遙測、功耗等數(shù)據(jù)的量級差異較大[14],以XX-2行波管放大器為例,測試數(shù)據(jù)如表1所列,輸出功率的變化范圍在20~50 dBm;功耗變化范圍80~200 W,螺流遙測變化范圍0.4~1.6 V,母線電流遙測變化范圍在1.0~2.0 V;軟件需要將不同量級的數(shù)據(jù)進行同時繪制在一張圖中,從而反映不同輸入與輸出、遙測等關(guān)系變化。實現(xiàn)流程如下所示:首先,讀取EXCEL 中原始數(shù)據(jù),輸入功率作為X軸數(shù)據(jù),輸出功率、電流、功耗、遙測電壓分別存放到列表中作為Y軸數(shù)據(jù)。其次,分別每一組Y軸數(shù)據(jù)做歸一化,計算出他們的間隔和范圍。之后,利用ParasiteAxes函數(shù)[15],在同一畫布中添加該數(shù)據(jù),最后將曲線保存。如圖8所示,相比直接看數(shù)據(jù)表格,圖表可以包含更多信息量,也更能直接體現(xiàn)數(shù)據(jù)間的關(guān)系。
圖8 輸入輸出特性圖
2.4.3 防錯糾錯機制
測試人員在輸入數(shù)據(jù)時,可能會出現(xiàn)誤操作情況:(1)輸入不合理數(shù)據(jù),如頻率輸入為負值;(2)輸入數(shù)據(jù)遠遠超出儀器設(shè)備自身能力的數(shù)據(jù),如信號源功率輸出最大為20 dB,軟件輸入數(shù)據(jù)為30 dB,頻譜儀的起始頻率大于終止頻率等;(3)輸入非法的信息,如在本應(yīng)輸入數(shù)字的地方輸入文本,或者在整數(shù)的地方輸入小數(shù)等。為防止意外情況發(fā)生,軟件中設(shè)置了多種防差錯機制:
1)只要輸入錯誤數(shù)據(jù),軟件自動清空數(shù)據(jù),等待測試人員重新輸入正確值;
2)只要是錯誤輸入自動糾正為默認值或者原值,并彈出提示框,提示測試人員確認數(shù)據(jù)。
用戶通過圖形界面,填寫產(chǎn)品信息、選擇測試項目、設(shè)置測試參數(shù)等信息,之后將這些信息傳到業(yè)務(wù)邏輯層;業(yè)務(wù)邏輯層根據(jù)測試項目,選擇相應(yīng)的測試方法,根據(jù)測試方法將測試指令傳到數(shù)據(jù)處理層;數(shù)據(jù)處理層根據(jù)指令對儀器發(fā)送指令,最后將測試數(shù)據(jù)逐步上傳到表示層。
基于Python的行波管放大器測試軟件采用三層架構(gòu),各層之間相互獨立,體現(xiàn)系統(tǒng)“高內(nèi)聚、低耦合”的特性,解決了新儀器、新測試項目難的問題。目前該軟件已成功應(yīng)用于北斗三號、天宮、海洋二號等多個衛(wèi)星型號中,完成200余臺行波管放大器的測試試驗,測試時間縮短了30%。在使用過程中還存在重復(fù)性的儀器參數(shù)配置工作,如頻譜儀的分辨率帶寬(resolution bandwidth,RBW),后期可以根據(jù)產(chǎn)品和頻譜儀的實際情況,優(yōu)化分辨率帶寬的識別算法,自動將分辨率參數(shù)寫入軟件,減少人工操作,進一步提高測試效率。