林奕翔
深圳市計量質量檢測研究院 廣東深圳 518055
本文采用免費的Python語言環(huán)境開發(fā)射頻參數測試軟件,完成測試以及報告結果輸出功能。
無線通信產品的射頻參數測試通常使用頻譜分析儀進行,主流頻譜分析儀均可通過GPIB或以太網接口進行控制。
在需要進行其它射頻參數測試的情況下,可以增加連接連續(xù)波信號源、矢量信號源等儀器。連接方式與頻譜分析儀相同。
本文采用的軟件方案,應用層采用Python3.7版本配合PyVisa庫,儀器驅動部分直接采用SCPI命令接口。VISA為儀器通用的測試接口庫,在頻譜分析儀等測量儀器的隨機軟件中均有包含,通常下載NIVISA或KeysightVISA庫,直接在計算機系統(tǒng)中進行安裝即可。計算機安裝Python和PyVisa庫和VISA驅動程序軟件后即可進行測試軟件開發(fā)[1]。
Python進行自動化控制連接需要使用PyVISA庫(1)進行。根據儀器制造商提供的例程(2)可以快速的實現(xiàn)儀器初始化。
import visa
rm = visa.ResourceManager()
specan = rm.open_resource(‘TCPIP::192.168.48.149::INS TR’) #IP地址需修改為儀器實際地址
specan.write_termination = ‘ ’
specan.clear()
idn_response = specan.query(‘*IDN?’)
print (idn_response)
后續(xù)頻譜儀操作只需要使用specan.write和specan.query向儀器發(fā)送SCPI命令即可實現(xiàn)控制和獲取測量結果功能。儀器可用的SCPI命令可在儀器制造商的支持文件 (3)中進行查找。
在程序中可以用函數對測試功能進行定義,例如對產品常用的射頻參數功率、占用帶寬、帶內雜散、帶外雜散、頻率誤差等測試功能進行函數定義,復用代碼。
Python的語法靈活,無需進行變量類型定義,便于非專業(yè)編程人員對數據進行處理。對于簡易的測試,可以采用Python中的字典數據類型,將測試結果在測試過程中保存在字典中。例如在進行占用帶寬測量設置后,可通過字典的update方法將測量結果保存到字典中。
ResultDict = {}
ResultDict.update({‘11b_CH1_OBW’ : specan.query(CALC:MARK:FUNC:POW:RES? OBW)}
每次測量后保存的字典key關鍵字如不存在,軟件將自動增加一個,如存在則對值進行更新。在進行完所有的測量后,可以將結果保存到json文件中。
import json
with open(‘test_result.txt’, ‘w’) as json_file:
json.dump(ResultDict, json_file,ensure_ascii=False, indent=4)
為將測試結果輸出為常用的Word文件,可以采用Python的docxtpl庫進行Word模板文件輸出。Docxtpl庫用任意現(xiàn)有的Word文件作為模板文件,僅需在顯示測試結果的位置插入特定標簽,以{{}}符號標識即可。例如前述測試結果的11b_CH1_OBW,只需要在適當位置插入文本{{11b_CH1_OBW }}。Docxtpl庫采用字典類型數據作為模板的填充數據來源,因此可以直接采用前面測試所得的ResultDict字典變量[2]。主要代碼如下:
from docxtpl import DocxTemplate
tpl = DocxTemplate(template.docx)
tpl.render(ResultDict)
tpl.save(report.docx)
軟件編制完成運行界面采用wxPython進行軟件用戶界面設計,為用戶提供儀器連接地址配置、測試模式、天線增益等測試所需參數輸入功能。以免用戶最終需要采用命令行方式進行測試[3]。
測試軟件可將測量結果輸出至word文檔中,可以用正常辦公軟件進行編輯,輸出為最終測試報告。
本文設計的射頻參數測試軟件可完成頻譜分析儀參數設置,測量結果讀取,測量結果記錄以及按照報告模板輸出報告的功能。運行結果表明,采用Python自動化測試可以大幅度減少射頻參數測試時間,保持測試準確率、可重復性,且該軟件具有操作簡單,可靈活修改測量參數的特點,可以應用于日常自動化測試的快速開發(fā)。