作者 | Stuart Cording(Elektor)
譯者 | 禾沐
測試有時是一件單調和枯燥的事情,尋找故障也十分具有挑戰性。那么,為什么不利用測試和測量儀器上的通信接口來簡化我們的測試過程呢?本文中我們將探索用Python進行控制,不需要昂貴的軟件和授權的工具。
對于大多數開發者而言,測試和測量設備在工作臺上只是靜靜地在等待任務。不過你把設備轉到背面時,往往會看到通信接口。只要有合適的軟件,我們就可以控制測量過程,并收集結果以供事后分析。尋找偶發事件和故障,或者在測試應用的多個系統參數時,這會非常有幫助。產品下線測試和元件的分級也可以用類似方式進行自動化測試。
1 實驗室電源設備的遠程控制
電源控制是一個很好的起點。大多數應用的硬重置都需要一次電源重啟,更進階的測試可能包括極端電源輸入,甚至是過電壓測試。這類測試在汽車中很常見,系統需要能承受400ms的87V輸入(ISO 7637-2)。另一種和電源相關的常見故障模式是電壓逐漸升高或降低。此時電路往往會進入欠壓狀態,不能自行恢復。最后,自動測試系統中的設備應該能夠設定電壓和最大電流,特別是系統會用于不同產品時。
近年來,實驗室電源設備的價格大幅下降,面對大量低價的設備,知名廠商往往不愿意(或者無法)在價格上競爭,而是增加更多功能。我們不知道英國劍橋的Aim and Thurlby Thandar Instruments(Aim-TTi)是不是也是如此,但他們的產品確實無愧于公司口號“測得到的好價值”。在他們的直流電源產品中,入門級的EL-R系列(見圖1)值得關注,特別是如果你想要試著搭建自動測試系統時。該系列的設備使用低噪音線性調節提供單、雙和三輸出,設備散熱不使用風扇,輸出范圍是30到130W。設備上有一個或兩個LED顯示和模擬控制,一些型號還包括遙感終端。單輸出的EL302P(支持RS-232接口)和EL302P-USB(支持USB接口)是值得關注的兩個型號,它們的輸出功率為60W,輸出電壓0-30V,電流0-2A。
圖1 EL-R系列直流電源通過串行接口(RS-232或通過USB)實現的虛擬COM)支持測試自動化(來源:Aim-TTi)
這兩個型號的設備包括軟件驅動,廠家網站上還提供PSU Sequencer工具,幫助用戶通過手動或者自動的方式逐步調整電壓/電流設定(見圖2)。軟件還可以從數據表中引入預先準備好的序列。
圖2:通過Aim-TTi的PSU Sequencer軟件可以簡單地進行電壓/電流的重復設定(來源:Aim-TTi)
2 用Python進行電源控制
根據你的測試需要開發控制軟件也不困難。設備的硬件RS-232接口的波特率為600到9600,USB接口則會以一個虛擬COM口的形式出現。用戶手冊中給出了全部的命令,稍做規劃就可以開發一個將每個命令單獨包裝為函數/方法的軟件庫。一種方法是運用Arduino和一個RS-232收發器來控制電源供應,這種做法還有可以和其他測試功能結合的優勢,例如信號傳輸中繼或是捕捉模擬/數字信號。
或者,Python提供pySerial模塊,利用它可以很容易地編寫一個Python命令接口模塊(見例1),實現自動控制機制。對文檔稍加研究,還可以實現TCP/IP到串口的接口;實驗性的RFC2217備忘錄中定義了這一功能,讓用戶可以在遠程PC上配置串口接口并實現通信。
例1:通過pySerial獲取PSU ID的Python代碼
3 示波器和自動化
示波器也能夠遠程控制。示波器有許多功能,從捕獲模擬/數字信號到快速傅里葉變換,我們可以在多種自動測試中使用示波器。例如,一些故障需要一系列復雜事件以特定順序出現才會發生。如果你的團隊發現了觸發故障的方法,下一步就是配置示波器捕獲相關的信號,幫助尋找故障的原因。
Arduino和樹莓派等開發板可以通過模擬輸出和數字信號很快變成觸發故障的工具,需要時還可以增加信號中繼或是場效應管。這些開發板還能向示波器提供準確的觸發信號,幫助采集分析故障所需的數據。
大多數示波器上有USB和LAN接口,但是一些型號只支持私有軟件或是只能從瀏覽器上進行配置。好消息是,我們已經有了一個基于USB的測試和測量類規格(USBTMC)。類似于存儲設備類(閃存盤等)和人機接口設備類(鍵盤、鼠標等),這一USB類預先定義好了與測試和測量設備交互的命令。
一些示波器支持USBTMC,像是200MHz、2GSa/s(GSa/s:每秒千兆采樣)的B&K Precision 2567B混合信號示波器(見圖3)。該設備上搭載4個模擬頻道,有一個16頻道的數字接口,內置50MHz隨機波形產生器,支持高級觸發方式。雖然它10.1寸的觸摸屏讓手動配置變得十分簡單,我們同樣可以很容易地通過USB進行配置。
圖3 B&K Precision 2560B系列混合信號示波器的USB接口兼容USBTMC規格,
可以很容易地用Python進行自動化(來源:B&K Precision)
4 示波器的遠程配置
多虧了Alex Forencich在GitHub上的USBTMC開源項目,Python是進行示波器遠程配置的最佳編程語言。在Linux上使用這一模塊需要適當的權限,在Windows上則需要先安裝PyUSB和libusb。
首先,你需要指定用于識別USB設備的廠商(VID)和產品(PID)信息。在Linux上,你可以連接你的設備,然后在命令行運行lsusb,命令的結果會包括這些信息。在Windows上,你可以從設備管理器的設備屬性中找到必要的信息。在兩種系統中VID和PID都應該是16位的16進制數值。
然后,需要在Python代碼中引入usbtmc模塊,并使用其中的接口(API)。代碼基本上就是在屏幕上打印文字,并讀取鍵盤輸入。USBTMC的本質就是和測試/測量儀器進行通信的包裝層,控制命令是根據示波器的編程指南實現的ASCII字符串,其中包含設備支持的選項。如果設備支持,也可以使用VISA資源字符串。
設備的VID和PID是針對產品,而不是特定單元的。因此,如果有兩臺以上同型設備,可以用它們的序列號作為第三個參數。一般可以從設備的標簽上獲得序列號,或者通過“*IDN?”命令查詢(見例2)。
例2:通過usbtmc控制B&K Precision示波器的Python代碼
示波器間的主要區別是帶寬、取樣速度和存儲容量。有時候,一些型號上會搭載實用的小功能。B&K系列支持矮脈沖觸發(見圖4),即一個信號跨過一個闕值,但是并未達到另一個闕值(例如,負矮脈沖跨過了較高的電平,而沒有越過較低的電平)。分析故障時,設備上的小功能有時會非常有幫助。
圖4 矮脈沖觸發可以幫助尋找沒有完全升起或降低的脈沖(來源:B&K Precision)
5 無顯示的測試設備
Red Pitaya的測試設備讓我們產生了疑問,每個工具都需要自己的顯示器嗎?強大的FPGA和以太網接口能夠讓你的PC/筆記本電腦成為用戶界面。Liquid Instruments的Moku:Lab也采用了類似的思路,只有餐盤大小的設備上有一系列模擬輸入和輸出接口,讓Moku:Lab成為了盒子里的實驗室。
Moku:Lab的正面有四個BNC接頭(見圖5),右邊的一對提供模擬輸出,支持1GSa/s(每秒10億)采樣率,分辨率為16位,帶寬大于300MHz(3dB衰減)。左邊的一對是模擬輸入,帶寬為200MHz(3dB衰減),輸入阻抗50Ω,12位分辨率下采樣率為每頻道500MSa/s(每秒5億)。設備內部的時基精度好于500ppb。設備支持觸發輸入,提供同步多個單元用的接頭。有線連接通過以太網和USB接口實現,第二個USB口還可以用來給平板電腦充電。最后,還有一個SD卡槽和直流電源接口。
圖5 餐盤大小的Moku:Lab是一臺12合一的儀器,可以通過Python API進行配置(來源:Liquid Instruments)
盡管Moku:Lab上搭載了有線接口,它的設計主要是通過Wi-Fi(802.11b/g/n)配合iPad上配套的應用使用。在應用的用戶界面上可以選擇12種不同的儀器,從我們熟悉的示波器和頻譜分析器,到少見的PID控制器和激光鎖盒。設備還可以用作數據記錄儀,采樣率不到100kSa/s(每秒10萬)時,存儲上限由插入的SD卡決定(即直接寫入SD卡);采樣率較高時,可以以最高1MSa/s(每秒百萬)的速率在內部存儲中進行記錄。
與其他現代的工具類似,Moku:Lab提供Python API,支持MATLAB和LABVIEW,并附帶數個樣例(例3)。設備可以很快地整合到一個自動測試系統中,也非常適合射頻設備的大規模測試和元件的分級。
例3:在Moku:Lab上生成隨機波形的Python代碼
6 節省時間、提升準確性
在復雜系統中,測試設備就是工程師的眼睛,但它們也不是萬能的。偶發事件很難進行跟蹤,只有知道故障成因時才能提出解決方案。雖然復雜度各不相同,如今很多測試和測量儀器都提供編程API,而易于學習的Python往往是首選的編程語言。如果你想要的測量場景很難觸發,需要多組操作來完成一輪測試,或者需要大量重復操作,那么實現自動化是解決之道,也許并沒有你想的那么困難。
審核編輯:湯梓紅
-
led
+關注
關注
241文章
23136瀏覽量
658471 -
編程
+關注
關注
88文章
3592瀏覽量
93596 -
測量儀器
+關注
關注
3文章
779瀏覽量
42111 -
電源設備
+關注
關注
0文章
91瀏覽量
11867
原文標題:通過編程實現測試和測量的自動化
文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論