文/王剛義 楊玉釗 包演生 姜濤 謝鈞安
隨著社會的發展,嵌入式系統在人們的工作和生活中應用越來越廣泛,同時,嵌入式系統也越來越復雜,嵌入式系統的可靠性面臨嚴峻的考驗。在嵌入式系統的各項測試中,上下電測試是一項重要的測試,能夠驗證測試系統的硬件和軟件可靠性及可恢復性。本文基于Python腳本語言,通過控制可編程電源實現自動上下電而達到自動測試效果,并實現監測系統是否正常上電工作,解決使用人工手動控制重復上下電,測試效果較差并且效率較低的問題。

圖1:測試系統的示意圖
Python是一種解釋型、交互式、面向對象、動態語義、語法優美的腳本語言,自從1989年由Guido Van Rossum設計出來后,經過十余年的發展,已經同Tcl、Perl一起,成為目前應用最廣的三種跨平臺腳本語言。Python的主要特點有:
(1)免費開源 Python是FLOSS(自由/開放源碼軟件)之一。簡單地說,你可以自由地發布這個軟件的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用于新的自由軟件中。
(2)高層語言當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節。
(3)可移植性由于它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工作在不同平臺上)。這些系統包括如Linux、Windows、Solaris、Mac OS、Windows CE等等,甚至還有PocketPC。
(4)面向對象 Python提供類、類的繼承、類的私有和公有屬性、例外處理等完善的對面向對象方法的支持。
(5)可嵌入性可以方便地把Python嵌入C /C++程序中,為程序提供腳本功能。
(6)可擴展性如果希望一段關鍵代碼運行得更快或者希望某些算法不公開,可以把部分程序用C或C++編寫,然后在Python程序中使用它們。
(7)第三方庫 Python有大量的第三方模塊,能大量節省開發者的時間,從而能更多時間關注自己的問題。
基于以上的特點,Python特別適合于作為腳本語言嵌入到應用程序中,并且Python有一個專門為儀器設計的開發庫——VISA(Virtual Instrument Software Architecture,簡稱為VISA)庫。VISA提供用于儀器編程的標準I/O函數庫,是計算機與儀器的標準軟件通信接口,計算機通過它來控制儀器。本文也通過VSIA庫來控制可編程電源。
Keysight N5700 系列直流電源采用緊湊型(1U)機箱,提供750W和1500W可編程直流輸出,共有24種型號,能適應各種簡單直流電源應用。它們提供穩定的輸出功率,內置的電壓和電流測量能力,以及6V到600V的電壓和1.3A到180A的電流。帶有標準配置的GPIB、Ethernet/LAN和USB 2.0通訊接口,為您提供選擇當前和未來I/O接口的靈活性。
本文以N5700系列中的一種電源型號為例,嘗試使用Ethernet/LAN和USB 2.0作為通訊接口來控制該電源的上下電操作。
為了通過使用Python腳本語言VISA庫來控制可編程電源N5700系列電源,首先應完成測試環境搭建;其次,完成Python腳本開發;最后通過一定的測試來驗證是否可行。
首先,系統環境的整體搭建如圖1所示。其中PC機已經安裝好相應軟件,以太網線束為RJ45轉RJ45,USB線束為USB type A轉USB type B,并且把可編程電源電壓輸出端同待測試設備電源輸入端連接。
其次,要實現Python腳本控制電源,PC機需要對軟件環境進行相關的配置:
(1)安裝N5700系列電源的驅動軟件。驅動軟件可以到相應官網進行下載,如本文下載的是KeysightInstrumentControlBund le_4.2018軟件,其中包括相應驅動軟件和相應的編程IDE;
(2)搭建Python開發環境。具體可以參考網上一些教程,這里就不詳細介紹了,值得注意的是注意配置PATH環境變量、安裝VISA庫及Python編程環境。
(3)確保PC機上有visa32.dll文件的存在,一般該文件存放位置在c:/windows/system32/visa32.dll。
首先,獲取可編程電源的USB或者以太網地址,把USB線束或者以太網線束將可編程電源和PC機相連,然后打開已安裝好的Keysight Connection Expert軟件,該軟件中會自動識別出該電源的相應地址,如圖2所示。

圖2:軟件識別出的相應地址
其次,定義相應通訊接口,這里以以太網為例。利用VISA庫的API函數visa.ResourceManager創建visa實例對象,調用對象中的open_resource函數傳入上述所查詢的地址建立相應的通訊連接。然后調用相應的SCPI指令實現控制(詳細的指令信息可查看 IEEE488.2,根據需要選擇性的使用),如發送“*IDN?”查看可編程電源相關信息,同時也可以驗證是否和可編程電源通訊成功。
最后,通過Python語言定義一個循環,循環中通過發送SCPI指令來控制可編程電源的電壓輸出,并監測上電情況下可編程電源的電流值,作為判斷可編程電源是否正常啟動的標志。值得注意的是,設置斷電控制是把電壓設置一個比較小的電壓(低于設備的供電電壓),而不是設置為0,這樣減少對可編程電源的沖擊;設置時間間隔的話需要考慮可編程電源電壓輸出至穩定輸出的時間。具體的控制流程圖如圖3所示。
在完成設備相關連接及可編程電源的Python腳本控制的設計后,給相應設備上電進行調試。通過以太網連接可編程電源和PC,運行Python腳本,觀察可編程電源的電壓變化情況,并觀察測試設備的上下電情況。通過觀察,可編程電源按照設定的時間間隔調整電壓輸出,并且測試設備根據電壓變換正常上下電,完成測試設備的上下電自動化測試,驗證了設備軟硬件的可靠性。
文章介紹Python、可編程電源和上下電測試實現的一些關鍵技術,在硬件平臺的基礎上,采用Python腳本語言和SCPI指令,實現了可編程電源的電壓控制,較好地解決了測試設備的上下電的自動化測試,測試設備在正常運行中異常掉電對設備軟硬件的影響,驗證設備軟硬件的可靠性。實驗結果表明,測試設備自動化上下電測試執行效率高,并且檢測準確,對自動化測試有一定的參考價值!

圖3:控制流程圖