馬 敏,黃 莉,賴 靜
(電子科技大學 自動化工程學院,四川 成都 611731)
測試系統(tǒng)集成技術是測試計量技術及儀器專業(yè)的本科生和研究生的基本課程。課程內容主要是通過軟件編程的實驗方式,組建各種類型的自動測試系統(tǒng),讓學生們深入理解與掌握自動測試技術及測試系統(tǒng)的組建技術。該課程與普通的專業(yè)課相比,理論聯系實際,課程的80%學時都是通過教師指導學生自己動手編寫軟件,實際控制各種測試儀器。
現今測試儀器逐步從普通的GPIB總線[1-2]升級為網絡儀器[3-4]。為了支持測試系統(tǒng)集成技術課程的建設,實驗室配備了大量的網絡儀器,希望學生在測試技術方面,學習最新型的儀器,進一步了解網絡化測試。由于經費有限,實驗室主要配備的是LXIC級儀器,不支持網絡同步與觸發(fā)[5],為了配合實驗室建設,本教研室自主研發(fā)了一款LXI A級同步觸發(fā)盒,它可以與實驗室的網絡儀器相連,既能實現IEEE 1588 協議[6-8]的網絡同步觸發(fā),也可以支持硬件總線觸發(fā)[9],觸發(fā)同步指標較高,可達5 ns。
如圖1所示,為LXI A同步觸發(fā)盒外觀圖。該觸發(fā)盒的功能主要如下:支持網絡程控;支持VXI-11網絡發(fā)現協議;支持LAN觸發(fā)、IEEE 1588觸發(fā)及LXI硬件總線觸發(fā)等;支持延時觸發(fā),能夠產生周期性觸發(fā)脈沖。
該觸發(fā)盒的主要指標有如下幾項。
1)IEEE1588定時觸發(fā)同步:時間數量20;
2)設置步進:10 ns;
3)同步精度:通過1.5 m網線直接相連,平均值±13 ns;
4)標準偏差:30 ns;
5)通過交換機(交換式集線器TP-LINKTL-SF1008+):平均值±130 ns,標準偏差200 ns(該指標隨著使用的交換機型號的不同精度有差異,或者同一型號的不同交換機也會對精度有影響)
6)硬件總線觸發(fā):±5 ns(同軸線長度是0.5 m)。
圖1 LXI A級同步觸發(fā)盒
該同步觸發(fā)盒的設計方案如圖2所示。
圖2 LXI A級同步觸發(fā)盒設計
上位機通過網頁界面程控觸發(fā)盒,也可通過SCPI指令對儀器進行程控。
上位機通過網絡設置同步觸發(fā)盒的觸發(fā)方式,觸發(fā)盒收到指令后進行解析,代碼解析后若是LAN觸發(fā),則接收到上位機的LAN數據包后通過TTL觸發(fā)口向儀器發(fā)出觸發(fā)脈沖。如果是IEEE 1588定時觸發(fā)[10],則計時開始,計時到達后,通過TTL觸發(fā)口向儀器發(fā)出觸發(fā)脈沖。如果是LXI總線觸發(fā),則通過硬件總線管理模塊通過LXI總線向儀器發(fā)出觸發(fā)脈沖。
LXI同步觸發(fā)盒主要支持3種觸發(fā)方式(LAN觸發(fā)、1588同步觸發(fā)及LXI硬件總線觸發(fā)),本課程針對觸發(fā)盒的特點,設計了3個實驗,下面將詳細敘述實驗的具體設計。
圖3 儀器連接圖
本實驗中,觸發(fā)盒與上位機通過網絡相連如圖3所示,示波器觸發(fā)口與觸發(fā)盒的TTL觸發(fā)輸出相連。通過此連接方式,當上位機向觸發(fā)盒發(fā)送LAN數據包時,觸發(fā)盒輸出觸發(fā)脈沖觸發(fā)示波器。此時,示波器能夠接收來自網絡的LAN消息觸發(fā),如圖4所示。
圖4 觸發(fā)盒LAN觸發(fā)設置
通過安捷倫公司的I/O Library 軟件中的LXI測試控件,可以顯示上位機給觸發(fā)盒發(fā)送的LAN包,并收到觸發(fā)盒發(fā)出的響應LAN包,如圖5所示。
圖5 安捷倫公司軟件測試觸發(fā)盒LAN觸發(fā)功能
LXI同步觸發(fā)盒里實現了IEEE 1588同步協議,網絡同步精度可達納秒級。本實驗中學生將兩臺觸發(fā)盒同時接入以太網,通過上位機設置,啟動IEEE 1588同步功能,同步5 min后,發(fā)送同步測試命令,并將觸發(fā)盒的秒脈沖輸出連接到示波器兩個通道中,如圖6所示。根據示波器捕捉到的波形,對比兩個脈沖的間隔,并記錄數據。
圖6 測試觸發(fā)盒的網絡同步精度測試連接圖
表1 兩臺觸發(fā)盒通過網線直連IEEE1588同步精度
本實驗,記錄100次測量數據如表1所示,根據表1進行計算,兩臺同步觸發(fā)盒的網絡同步精度的平均值是0.258 ns,標準偏差為5.349 959 ns,最大偏差為-15~16 ns。該指標在國際上已屬領先水平。通過該實驗,學生可熟悉當前較新的IEEE 1588精準時鐘同步標準[11-12],了解實現網絡同步的難點技術及同步測試的方法。
實驗1、2分別演示了LXI儀器LAN消息觸發(fā)、IEEE1588同步觸發(fā)測試,本實驗作為實驗1、實驗2的綜合實驗,通過命令觸發(fā)的方式(發(fā)送SCPI指令)程控LXI觸發(fā)盒、信號源及示波器完成實驗1~3的內容。本實驗主要目的為在LabWindows/CVI環(huán)境下搭建基于命令觸發(fā)、LANI事件消息觸發(fā)及IEEE1588同步觸發(fā)等多種觸發(fā)方式的自動測試系統(tǒng)。
實驗設計界面如圖7所示。
圖7 實驗3自動測試系統(tǒng)界面設計
學生在界面上可以配置觸發(fā)盒的觸發(fā)輸入及觸發(fā)輸出種類,能夠配置信號源信號的波形、頻率等參數,在某按鍵按下時完成示波器的初始化,觸發(fā)模式、觸發(fā)源、觸發(fā)類型等參數的設置。測量輸出、自動設置頻率、掃頻、參數測量等功能,然后將測量結果用戶界面上,測試程序設計如圖8所示的流程圖。
圖8 實驗程序流程圖
圖9 新線程程序流程圖
設計程序無需按鍵,示波器觸發(fā)后界面自動顯示示波器波形(擴展)Trigger Event Register(TER)是DSO5102A示波器觸發(fā)事件寄存器,當有示波器觸發(fā)事件發(fā)生時,寄存器被置為1,讀取該寄存器或者使用*CLS命令都可以將寄存器清零。設置觸發(fā)盒IEEE1588定時觸發(fā)示波器采集波形,并不是按下某個鍵后觸發(fā)示波器采集,這要求界面能夠自動更新示波器波形。所以程序設計可以另開辟一個線程去循環(huán)地讀取示波器觸發(fā)事件寄存器直到有觸發(fā)事件發(fā)生,程序流程圖如圖9所示。
本實驗還可以讓學生練習使用SCPI指令程控儀器,熟悉VISA函數。示波器DSO5012A相關的SCPI命令:
1)*RST
DSO5012A復位。
2):AUTOSCALE
自動定標命令。
3):ACQUIRE:TYPE
::={NORMAL|AVERAGE|
HRESOLUTION|PEAK}
4):DIGITIZE[
[,..,
::=CHANNEL
參數可以最多重復5次。
:DIGITIZE命令是一個特殊的“運行”命令。它使儀器根據:ACQUIRE命令子系統(tǒng)的設置采集波形,采集完成后,儀器停止運行。如果沒有指定參數,:DIGITIZE命令采集當前顯示的那些通道,如果沒有通道顯示,則所有的通道都采集。
5):WAVeform:FORMat
該命令指定波形點數據傳輸的模式,ASCII格式指定數據以ASCII字符格式傳遞,WORD格式指定數據以16位(2字節(jié))的形式傳遞,BYTE格式指定數據以8位1字節(jié)的形式傳遞。
6):WAVeform:POINts<# points>
<# points>::={100|250|500|1000|
該命令用于指定在:WAVeform:DATA?詢問時要傳送的波形點數。
7):WAVeform:PREamble?
該命令用于請求指定波形源的前導信息,前導數據包含與對應通道有關數據的垂直和水平標度的信息。
8):WAVeform:DATA?
該命令以IEEE 488.2任意塊數據格式返回采樣數據點二進制數據塊,數據塊具體格式取決于:WAVeform:UNSigned,:WAVeform:BYTeorder,:WAVeform:FORMat和:WAVeform:SOURce命令設置的情況,返回的點數受控于:WAVeform:POINts命令。
9):MEASure:SOURce
信號源33220A相關的SCPI命令如下。
①APPLy:SINusoid[<頻率>[,<振幅>[,<偏移>]]],該命令使信號源產生一定頻率、振幅、偏移的正弦波。
②APPLy:SQUare[<頻率>[,<振幅>[,<偏移>]]],該命令使信號源產生一定頻率、振幅、偏移的方波。
③APPLy:RAMP[<頻率>[,<振幅>[,<偏移>]]],該命令使信號源產生一定頻率、振幅、偏移的鋸齒波。
④APPLy:PULSe[<頻率>[,<振幅>[,<偏移>]]],該命令使信號源產生一定頻率、振幅、偏移的脈沖。
Visa相關函數如下:
①ViStatus_VI_FUNC viOpen DefaultRM(ViPSession vi)
②ViStatus_VI_FUNC viOpen(ViSession sesn,ViRsrc name,ViAccessMode mode,ViUInt32 timeout,ViPSession vi)
該函數用于打開資源會話,其中參數name用于指定儀器資源名稱,參數vi用于返回取得的會話資源。
③ViStatus_VI_FUNC viClose(ViObject vi)
該函數用于關閉會話。
④ViStatus_VI_FUNC viClear(ViSession vi)
該函數用于清除vi指定的接口。
⑤ViStatus_VI_FUNCC viPrintf(ViSession vi,ViString writeFmt,...)
該函數用于向儀器輸出特定的SCPI命令字符串,典型的應用方式如viPrintf(vi,"*RST
"),向指定儀器發(fā)送*RST命令viPrintf(vi,":AUTOSCALE
⑥ViStatus_VI_FUNCC viScanf(ViSession vi,ViString readFmt,...)
該命令用于讀回波形數據,典型用法如下:
viScanf(vi,"%#b
其中,vi用于指定儀器資源,readfmt指定數據格式,waveform_size指定并返回數據個數,返回的數據保存在waveform_data指針指向的位置上。
⑦ViStatus_VI_FUNCC viQueryf(ViSession vi,ViString writeFmt,ViString readFmt,...)
該函數用于發(fā)送SCPI命令并返回命令執(zhí)行結果,典型用法如下:
ViQueryf(vi,"MEASure:FREQuency?
通過3個自主設計的實驗,學生不僅可以對課堂教學中學到的網絡測試及自動測試等技術有直觀的認識,還可以更好地學習網絡同步觸發(fā)技術、網絡同步測試方法及測試系統(tǒng)組建的基本設計等,同時也學習了LabWindows CVI語言和VISA函數,為其今后從事測試系統(tǒng)軟件編程的相關工作打下良好的基礎。