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