Python – pyvisaでGPIB機器の制御を行う方法

はじめに

一昔前に発売された計測機器にはUSB端子がなく、GPIBでしかパソコンからの制御を行うことができないものも散見されます。

今回はこのようなGPIB機器をパソコンから動作させ、データを取得する方法の解説を行います。

使用機器

GPIBの規格には2021年7月9日現在、「IEEE488」とその上位プロトコルの「IEEE488.2」が存在しています。

IEEE488.2は、IEEE488の転送規格に各機器が共通して仕様できるコマンドやクエリ(問い合わせ)などの規定を追加したもので、IEEE488.2に対応した機器はIEEE488規格の機器に対しても使用することができるようになっています。

今回はパソコンとGPIB機器の接続に、このIEEE488.2対応のUSB/GPIBインターフェースAgilent 82357B を使用しています。

環境構築

パソコンからGPIB機器を制御する場合、上記したケーブル(インターフェース)以外に制御用のライブラリが必要となります。

このライブラリ、VISAと呼ばれるものを用いるために、今回は「Keysight IO Library Suite」と「pyvisa」を使用します。

また、VISAについて説明をしておくと、VISAとは、Virtual Instrument Software Architecture の略語で、パソコンと計測器つの通信を行う場合に物理的なインターフェースに関係なく、同じプログラムで制御することを目的として作成されたライブラリのことです。

PythonからGPIB機器を制御する流れは以下のようになっています。

Python → VISAフロントエンド → VISAバックエンド → USBポート → GPIB機器

以下でこのVISAフロントエンドとVISAバックエンドに当たる部分のインストールを行って行きます。

環境構築手順1

環境構築手順1では、VISAフロントエンドにあたるPythonの外部ライブラリである「pyvisa」のインストールを行います。

pipを用いることのできる環境の方は以下のコマンドを用いてライブラリのインストールを行ってください。

pip install pyvisa

学校や会社など、セキュリティの影響でpipを用いることができない環境の場合は「pipを使用することができない場所でPythonライブラリをインストールする」を参考にライブラリのインストールを行ってください。

環境構築手順2

環境構築手順2では、VISAバックエンドにあたる「Keysight IO Library Suite」のインストールを行います。

Keysightのソフトウェアダウンロードページからご自身のプラットフォームに合わせてインストールを行ってください。

Keysight IOライブラリ・スイートのダウンロード・アーカイブ:すべてのダウンロード
Keysight IOライブラリ・ソフトウェアの以前のリビジョンへのダウンロード・アクセス。

これらで環境構築は完了です。

GPIB機器との接続・データ取得

ここからは実際にGPIB機器とパソコンの接続・データ取得を行う方法の解説を行います。

まず、GPIB機器とパソコンをケーブルで接続し、GPIB機器の電源をオンにしてください。

数秒でパソコンとの接続が完了するので、「Keysight IO Library Suite」を起動し、その画面で接続完了の確認を行ってください。パソコンと機器の接続に上記したAgilent 82357Bを用いている場合は接続ランプが緑色に点灯していることでも確認を行うことができます。

接続の完了が確認できればあとはPythonでGPIB機器を動かす段階になります。

以下のサンプルコードgpib1.pyは、GPIB機器との接続を行い、その機器の情報を取得するといった内容になっています。

import pyvisa

rm = pyvisa.ResourceManager() #インスタンス生成
ls_visa = rm.list_resources() #PCに接続された機器のVISAリソース名取得
usb = ls_visa[0] #複数機器が接続されている場合は[]内の数字で指定
inst = rm.open_resource(usb) #接続

inst.write('*IDN?') #指令の送信、*IDN?は多くの機器に設定されている機器情報を聞く指令
print(inst.read()) #指令に対しての返答をプリント

内容を解説すると

  1. 2 ~ 4行目: パソコンに繋がれている機器の確認を行い、その中の0番目との接続を指定
  2. 8 ~ 9行目: GPIB機器に機器の情報を聞く指令を送信し、それに対する返答を出力

といったものになっています。

1 ~ 4行目のものは共通して使用するもので、それ以降は機器に何をさせたいかによって変化させる部分になっています。

今回用いた指令(‘*IDN?’)はほとんどのGPIB機器に共通して設定されている機器情報要求指令です。

これ以外はGPIB機器やメーカーによって独自の指令文が設定されているため、使用している機器の取り扱い説明書を確認してください。

リソース名の取得が行えない場合

環境によってはgpib1.pyの4行目に使用しているrm.list_resources()でリソース名の取得を行うことができない場合があります。

その場合rm.list_resources()に対して空のリストが返されるため、5行目のls_visa[0]でエラーが発生します。

このようなエラーが生じた場合は「Keysight IO Library Suite」を起動すると、どこかに下画像のようなVISAアドレスを表示している欄があるのでそこを探してください。

このアドレスを以下のサンプルコードgpib2.pyのようにしてrm.openresources()の引数に直接指定することで、GPIB機器との接続を行うことができます。

import pyvisa

rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP0::156.140.93.131::inst0::INSTR")

inst.write('*IDN?') 
print(inst.read()) 

コメント

タイトルとURLをコピーしました