チュートリアル
Visual Basic 2008
Visual Basic 2008とVISAを使用してRS232C、USB、LAN経由でPWXシリーズと通信する場合の説明をします。
プロジェクトの設定
最初にプロジェクトに通信用ドライバ(VISAライブラリ)の設定をします。
[プロジェクト] > [参照設定]を選択してVISA COM3.0 Type Libraryを参照します。
RS232C、USB、LANで通信する
通信用ドライバの設定が終わると、RS232C、USB、LANで通信ができます。
VISAを経由しての通信手順を説明します。
VISAのオープン
VISAを経由してRS232C、USB、LAN機器と通信するには、まずVISAをオープンします。VISAをオープンするときに、I/Oリソースを指定します。
例:USBを使用する場合のVISAのオープン
Set rm = CreateObject("VISA.GlobalRM")
Set msg = rm.Open("USB::0x0B3E::0x1025::00000001::INSTR", NO_LOCK, 0, "")
"USB::0x0B3E::0x1025::00000001::INSTR"がI/Oリソースです。
I/Oリソースは以下の構文になっています。[ ]で囲まれた部分は省略可能です。斜体で書かれている部分に適切な値を入れます。
シリアル (RS232C) |
ASRL[board][::INSTR] 例:シリアルポートCOM1に接続された計測器の場合 ASRL1::INSTR |
|
---|---|---|
USB |
USB[board]::VendorID::ProductID::SerialNumber[::InterfaceNumber][::INSTR] 例:ベンダーID(VID)2878、プロダクトID(PID)4133、シリアルナンバー”00000001”を持つUSBTMC計測器の場合 USB0::0x0B3E::0x1025::00000001::INSTR |
|
LAN*1 | VXI-11 |
TCPIP[board]::hostname[::inst0][::INSTR] 例:IPアドレス(hostname)が169.254.7.8の計測器の場合 TCPIP::169.254.7.8::INSTR hostnameはホスト名でも設定できます。 |
HiSLIP |
TCPIP[board]::hostname::hislip0[::INSTR] 例:IPアドレス(hostname)が169.254.7.8の計測器の場合 TCPIP::169.254.7.8::hislip0::INSTR hostnameはホスト名でも設定できます。 |
|
SCPI-RAW |
TCPIP[board]::hostname::portno::SOCKET 例:IPアドレス(hostname)が169.254.7.8の計測器の場合(本製品のportnoは常に5025) TCPIP::169.254.7.8::5025::SOCKET hostnameはホスト名でも設定できます。 |
*1: ホスト名は、有効なmDNSホスト名(.localで終わるボンジュールホスト名)か、外部DNSサーバによって管理されるDNSホスト名(FQDN、フルクオリアファイドドメインネーム)である必要があります。mDNSホスト名を利用する場合は、使用するパソコンにApple Bonjour(またはiTunes、Safariなど)がインストールされている必要があります。
VISAでは、I/Oリソースにエイリアスを使用できます。
I/Oリソースにエイリアスを使用すると、アプリケーション内に直接エイリアス名をハードコーディングしても実行時に適切なI/Oリソース名に簡単に変換できます。
例:I/Oリソースにエイリアス(MYDEV1)を使用した場合
Set msg = rm.Open("MYDEV1", NO_LOCK, 0, "")
エイリアスを使用した場合には、実際のI/Oリソースは外部コンフィグレーション・テーブル等で指定します。下図はUSBを使用する場合(KI-VISAの例)です。
KI-VISA以外のVISAを使用している場合には、ご使用のVISAマニュアルを参照してください。
機器の制御
次に、Read、Writeなどを使用して機器を制御します。コマンド文字列には改行コードが必要です。
例:
msg.WriteString ("VOLT 80" & vbLF) '電圧値を80 Vに設定
msg.WriteString ("CURR 5" & vbLF) '電流値を5 Aに設定
msg.WriteString ("OUTP 1" & vbLF) '出力オン
VISAのクローズ
最後にVISAをクローズします。
VISAのオープン、クローズは一連の処理の中で1回実行すれば大丈夫です。
msg.Close
サンプルプログラム
Imports Ivi.Visa.Interop
Public Class Form1
Dim rm As ResourceManager
Dim msg As IMessage
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
rm = CreateObject("VISA.GlobalRM")
'msg = rm.Open("MYDEV1", AccessMode.NO_LOCK, 0, "") 'VISAエイリアスを使用した例
msg = rm.Open("USB0::0x0B3E::0x1025::00000001::INSTR", AccessMode.NO_LOCK, 0, "") 'USBを使用した例
'msg = rm.Open("TCPIP::169.254.178.141::INSTR", AccessMode.NO_LOCK, 0, "") 'LANを使用した例
msg.TerminationCharacterEnabled = True
End Sub
'IDの問い合わせ
Private Sub cmdIdn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdIdn.Click
msg.WriteString("*IDN?" & vbLF)
TextBox1.Text = msg.ReadString(256)
End Sub
'電圧設定、電流設定
Private Sub cmdCurr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCurr.Click
msg.WriteString("OUTP 0" & vbLF)
msg.WriteString("VOLT 80" & vbLF)
msg.WriteString("CURR 5" & vbLF)
msg.WriteString("OUTP 1" & vbLF)
End Sub
'電圧測定値の問い合わせ
Private Sub cmdMeas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdMeas.Click
msg.WriteString("MEAS:VOLT?" & vbLF)
TextBox1.Text = msg.ReadString(256)
End Sub
Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
msg.Close()
End Sub
END CLASS