potass' blog

ポタシウムのことが書いてないブログ。

pyVISA を使ってみた

まずはクエリを拾うことから。

使用環境

PC:Windows 8.1 (64 bit)
接続:NI GPIB-USB-HS(PC 側:USB、測定器側:GPIB)
測定器:Keithley 2000(デジボル)、ADCMT 6144(直流ソースメータ)

pyVISA のインストール

easy_install さえ入っていれば速攻で終わる。

$ easy_install pyvisa

ちなみに version は 1.5 だった。

NI-VISA のインストール

今回は(LabView を使ってることもあり)National Instruments 社 の NI-VISA を使用する。他にも Agilent Technologies 社 の VISA ツールがあるらしい。

NI-VISA 5.4 - National Instruments から NI-Windows 8 (64 bit) 用の NI-VISA 5.4 のインストーラを落としてインストールするだけ。容量 600 MB 超となかなかに重い。(ちなみにこの後アップデートして NI MAX の version が 5.5.0 になった。)

NI 488.2 のインストール

デバイスに該当するのかイマイチ理解できていないが NI 488.2 をインストール。
NI-488.2 3.1.2 - National Instruments より落としてインストール(version は 3.1.2 だった。)。これまた重い。

測定器を認識しているかの確認

NI GPIB-USB-HS を正しくつけて測定器の電源がついた状態で PC が測定器を正しく認識しているかを NI MAX を使ってひとまず確認する。

1. NI MAX を起動する。
2. [マイシステム]>[デバイスとインタフェース]>[GPIB-USB-HS"GPIB0"]*1 と行き、[測定器をスキャン]をクリック。
3. 接続されている機器の GPIB アドレスが左側に表示される(例:測定器 0 "GPIB0::1::INSTR")のでそれをクリックし、[測定器と通信する]をクリック。
4. 送信文字列が *IDN? になっていることを確認し、[クエリ]を押す。これで受信文字列にそれっぽい *2 のが出たらまず成功。

pyVISA でクエリを受信する

さっき表示されたものを python でも表示させましょう。
面倒なのでインタラクティブシェルから行う。
デジボルとソースメータともに接続済みかつ NI MAX で接続確認済みとする。

>>> import visa
>>> rm = visa.ResourceManager()
>>> rm.list_resources()
('GPIB0::1::INSTR', 'GPIB0::8::INSTR') # 今回は GPIB アドレスが 1 と 8 だった
>>> aa = rm.get_instrument("GPIB0::1")
>>> kk = rm.get_instrument("GPIB0::8")
>>> print(aa.ask("*IDN?") + kk.ask("*IDN?"))

とするとさっきのクエリの出力結果が出てくる。
なお、今の PC の環境で vpp43.py を import するには

from pyvisa.legacy import vpp43

とする必要がある。

参考にしたサイト

PyVISA: Python wrapper for the VISA library
https://pyvisa.readthedocs.org/en/latest/

*1:他につけてなければ GPIB のボード番号は 0 のはず。

*2:Keithley 2000 の場合は "Return the manufacturer, model number, serial numberand firmware revision levels of the unit"(User's Manual より)らしいです。 ADCMT の方は説明書見ても特に記載なかったがどうやら画面の表示値がクエリとして出るらしい。例えば、+0.3 V の場合は DV+0.3000E+0 のように表示された。 (2014-11-22 追記)Keithley 2000 は IEEE-488.2 を,ADCMT の方は IEEE-488.1 を規格としている。このクエリ *IDN? は IEEE-488.2 において製品情報を表示させるもので IEEE-488.1 には有効ではない。