VISA対応機器をPythonから制御する。

オシロスコープ、電源、電子負荷、DMM、信号発生器等の装置を、PCから自動制御して、測定や評価の自動化をすすめるための準備と、Pythonのプログラムと、Excelの設定ファイルを使った簡易シーケンサーをプロトタイプとして作成した。

背景

様々な装置を用いて、測定や評価を継続的に行う際、何度も繰り返す作業を出来る限り自動化し、手作業の削減と再現性の向上を図る取り組みは、どこでも行われている。そのために必要な環境は、National InstrumentのTestStandや、KeySightのVEEなど、様々な製品が世の中に存在するが、基本的には有料のソフトウエアであり、高度なトレーニングを必要とするものも多いため、手軽に誰でも、「ちょっと自動化してみようか」という訳には行かないのが実情かと思われる。

ここでは、基本的に「無償」で、「誰でも使える」簡単なツールをプロトタイプとして作成して見ることにした。無償のソフトウエア環境としては、Excel等に標準で搭載されているVBAが使われることもよくあるが、ここでは拡張性とプログラムの見やすさ、書きやすさ、トライ・アンド・エラーのやりやすさという面から、Pythonを選択した(Python 3)。

image

様々な装置を制御するために、コマンド体系としては、業界標準のVISAを基本とするが、VISA以外の装置に対しても対応出来るようにする。

VISAの詳細仕様はIVI foundationのサイト(英語)を参照。また、Keysightのページも簡単でわかりやすい。


接続概要

ハードウエア的には、機器との接続は出来る限りUSBでのインターフェースを用いる。理由としては、PCに標準で装備されている点、安価なHUBで容易に拡張出来る点、通信速度が十分に速い点が挙げられる。

GPIBしか無い装置はUSB・GPIBインターフェース・アダプターを購入する必要がある(例:KeySightの823578B)。

clip_image001

シリアルポートしか無い装置は、USB・シリアルアダプターを購入する必要がある。端子制御等の装置は、別途GPIOを制御出来る装置(Arduinoで作ったこんな装置とか)経由で制御する必要がある。

image


PythonからVISAを使えるようにする

Pythonから装置を制御するためのスタックとしては、下記のイメージで考えると、Pythonアプリ→VISA フロントエンド(pyVISA)→VISA バックエンド(IO Library Suite) → USBポート → USB対応のVISA機器(あるいは、GPIB対応のVISA機器)という流れになる。PC上の環境として、これらのソフトウエアをインストールして準備する必要がある。

image

Windows上にVISAをインストール

前述したVISAのバックエンドとして、各種のライブラリが世の中に存在するが、ここでは、Keysightが無償で提供している、IO Library Suiteを利用することにする。このIO Library Suiteをインストールすると、VBA等からも利用できる VISA-COMライブラリも同時にインストールされる。

Keysightのサイト(ここ)のサイトから、メールアドレスを登録すると exe ファイルを一つダウンロード出来る(約266Mbyte。私が実行した時は”IOLibSuite_18_1_23218.exe”)。

このファイルを実行し、画面の指示に従ってインストールを進めると、下記画面が表示されてインストールが完了する(特に難しい点は無い)

image

これで、Windows上で使える、IO Library Suite (VISAのバックエンド)と、VISA-COM (VBAや、VC++で使えるVISAのフロントエンド)のインストールが完了。

“Keysignt Connection Expert” というプログラムがインストールされるので、それを実行すると、短い紹介ビデオが再生された後、次のような画面が表示される。これは、どのような機器が接続されているかを確認したりするために非常に便利なツールである。

image

Windows上に pyVISAをインストール

Windows上にPython3がインストールされている状態から準備する。Python3のインストールは様々な記事がネット上にあふれているのでここでは省略する。

PyVISAの詳細は、本家のサイトを参照。(PyVISA: Python wrapper for the Virtual Instrument Software Architechture library)

PyVISAのインストールは、pipを使えば簡単に出来る。

これで、PythonからPyVISA経由で、IO Library SuiteのVISAライブラリを使う環境が整った事になる。