top of page

PFDA

基礎

VISA通信プログラミング

前回の記事でVISA通信について解説いたしましたが、今回は、VISA通信の実装方法について解説します。


 

NI-VISAをインストール

 VISAを利用するには、VISAを制御するためのライブラリが必要となります。

 VISAライブラリは複数企業が開発していますが、今回は「National Instruments 社」が提供しているNI-VISAというライブラリを利用します。

 NI-VISAのインストーラーはこちらからダウンロードが可能です。


 

Python編

 PythonではPyVISAというPythonライブラリを利用します(PyVISAの中では、さらにNI-VISAを利用しています)。


 筆者の環境

  • Python:3.9.6

  • PyVISA: 1.12.0

 1. PyVISAのインストール
$ pip install pyvisa

インストールができたら、実装していきましょう。

 2. Resourceリストを取得
import pyvisa

rm = pyvisa.ResourceManager()
visa_list = rm.list_resources()

ここでの「Resource」はデバイスのことを指しています。

 VISAに対応したデバイスが、PCと接続されていれば、その接続数の分だけvisa_listに格納されます。


 3. 接続したいデバイスのResourceを確保
inst = None
for src in visa_list:
    inst = rm.open_resource(src)

    out = inst.query('*IDN?')

    if out == “Device Name”:
        break

 多くのデバイスで「*IDN?」(IEEE-488標準で規定)と送信すると、そのデバイス固有の名前が応答されます。

 上記コードでは、”Device Name”を対象のデバイス名に変更することで、対象のデバイスのResourceを取得できます。

 また、送信のみだけだと`write`ですが、送信かつ応答を受け取りたい場合は、`query`を利用します。

もちろん、`write`と`read`を組み合わせても同様なことを実現できます。

 デバイス名が分からなければ、対象のデバイスだけPCに接続し、「*IDN?」を送信してあげると、そのデバイス名だけ取得できます。

 実際には、1つしかデバイスがつながっていない場合は、visa_list[0]を利用して、

inst = rm.open_resource(visa_list)

 と、処理してあげれば、そのデバイスを操作することができます。

複数デバイスが接続される場合は、デバイス名を知っていることで、visa_listに格納される順番を気にしないで、対象のデバイスのみを操作することができます。


 4. コマンドを送信
inst.write(“command”)

 5. 応答を受信
message = inst.read()

 基本的には、デバイスにコマンドを送信して、その応答を受けることがほとんどなので、`query`で対応ができます。

`read`では、終端文字やエンコーディングの指定を行うことができます。


 6. ResourceとResourceManagerの解放
inst.before_close()
inst.close()

rm.close()

 この後、instで`write`や`query`などを実行すると、Exceptionが発生します。


 7. 全コード
import pyvisa

# Get Resource List
rm = pyvisa.ResourceManager()
visa_list = rm.list_resources()

# Connect a specified device
inst = None
for src in visa_list:
    inst = rm.open_resource(src)

    out = inst.query('*IDN?')

    if out == “Device Name”:
        break

# Send Command
inst.write(“command”)

# Read response
message = inst.read()
print(message)

# Close Resource and Resource Manager
inst.before_close()
inst.close()

rm.close()

 

おわりに

 本記事では、VISA通信のPythonプログラミング方法を記載しました。

 今後、C#やLabViewのプログラミング方法を追記していきます。


関連製品
お問い合わせ
目的

お問い合わせありがとうございます。担当者より改めてご連絡させていただきます。

bottom of page