用EXCEL內嵌的Visual Basic for Application 編程,通過 UGSimple USB-GPIB 控制器來驅動儀器34401A,並從34401A讀取數據


現在市場上有很多中USB-GPIB 控制器,或叫 USB 轉GPIB鏈接線。 每種GPIB控制器都有它的 函數庫(dll庫)。各種GPIB 控制器的價錢插別很大。這里以一種價錢較便宜的USB-GPIB 控制器UGSimple USB-GPIB 控制器為例,看它的VBA編程時怎么用的。UGSimple USB-GPIB 控制器在淘寶上有賣。

用EXCEL內嵌的VBA編程的好處是 儀器測試讀取的數據可以同時放入EXCEL表格里,並同時進行數據處理。並且VBA 相對其它編程語言來講,容易好學。這里用一個Office 2003的EXCEL 來說明。

拿到UGSimple 以后,首先是安裝 。現將UGSimple插入電腦的USB接口。然后啟動UGSimple_setup.exe,按照它的安裝過程安裝好UGSimple 軟件。

這里用一台 安捷倫的 6位半萬用表 34401A為例。安裝好UGSimple 軟件后,將UGSimple 的GPIB 接頭 (GPIB host)插入34401A的GPIB設備接口 (GPIB device),GPIB接頭插好后,硬件就連接好了。然后,打開 34401A的電源, 設置 34401A的GPIB 地址為 22。

下來該做軟件的工作了。我們先看一下UGSimple是否連接正確。點電腦上的Start->All Programs->LQ Electronics->UGSimple->UGSimple (不好意思,我的電腦是用的英文界面),打開UGSimple 的主控板。在Address欄輸入22,在GPIB command 欄 寫入 *IDN?,然后點擊 主控板上的Command Write鍵,這時,*IDN?指令就送到34401A里去了。然后再點擊 主控板上的Data Read鍵, 如果讀回HEWLETT-PACKARD,34401A,0,11-5-2,則所有連接正確, 見下圖。

 

打開Office2003 的 EXCEL,在 (2, “B”) 單元格寫入 “直流電壓”,在(2, “D”)單元格寫入“交流電壓”。之后,我們將會把讀到的數據寫入相應的直流或交流電壓下面。點擊菜單 Tools->Macro->Visual Basic. 如果右邊是灰色,點擊左邊的Sheet1(Sheet1),右邊的VBA編輯器就出現了。

首先在最上面寫上 UGSimple 的GPIB 指令 發送函數 Gwrite 和 讀取指令Gread的函數聲明, 以及用於延時的函數Sleep的函數聲明。

Private Declare Function Gwrite Lib "C:\Program Files\LQElectronics\UGSimple\UGSimpleAPI\LQUGSimple_s.dll" Alias "#100" (ByVal address As Integer, ByVal SCPI As String) As Integer

Private Declare Function Gread Lib "C:\Program Files\LQElectronics\UGSimple\UGSimpleAPI\LQUGSimple_s.dll" Alias "#101" (ByVal address As Integer) As String

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

然后在開始VBA 編程。其程序如下,

Private Sub sendread()

Dim command, data As String

Dim success, r As Integer

For r = 3 To 7                           '設循環

success = Gwrite(22, "MEAS:VOLT:DC?")    '發送直流電壓讀取指令

If success <> "0" Then                   '判斷發送指令是否成功,

MsgBox ("Something Wrong!")              '顯示出錯

GoTo out                                 '退出

End If                                      '判斷結束

Sleep (200)                                 '延時0.2秒,等34401A准備數據

data = Gread(22)                            '讀取數據

Worksheets("Sheet1").Cells(r, "B") = CDbl(data) '將數據寫入相應欄里

success = Gwrite(22, "MEAS:VOLT:AC?")   '發送交流電壓讀取指令

If success <> "0" Then                  '判斷發送指令是否成功

MsgBox ("Something Wrong!")             '顯示出錯

GoTo out                                '退出

End If                                  '判斷結束

Sleep (800)                             '延時0.8秒,等34401A准備數據

data = Gread(22)                        '讀取數據

Worksheets("Sheet1").Cells(r, "D") = CDbl(data) '將數據寫入相應欄里

Next r                                  '下一個循環

out:                                    '退出

End Sub

           

           

安裝好的程序里也有EXCEL的例子。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM