1.VISA COM を利用した測定システム構築について
実験機器を制御するために用いられる通信規格とそれを用いたシステムの構築について必要な知識をコンパクトにまとめました。
2.GPIB 通信の基礎知識
2.1.GPIB とは
GPIB(General Purpose Interface Bus) は短距離デジタル通信の経路(バス)として設計されました。もともとは米 Hewlett Packard 社の HP-IB が IEEE に承認されたものです。IEEE 488 とも呼ばれています。要はデバイス間の通信の際のコネクタの形状などを取り決める物理層のインターフェースのひとつだということです。この物理層にある他のインターフェースには今日広く使われている LAN や USB、RS-232C などがあります。GPIB は測定器の通信規格として最も普及しているため、測定システムを構築する際はほぼ間違いなく取り扱うことになると思います。
2.2.測定機器の接続規約
GPIB を使って機器同士を接続する際には (1) ループ接続をしない、(2) 接続機器の最大ケーブル長を 20m 以内にするという 2 点に注意して下さい。
3.VISA COM ライブラリを用いた測定システムの構築
3.1.VISA とは
VISA(Virtual Instrument Software Architecture) は、物理層のインターフェース GPIB, VXI, GPIB-VXI, RS-232C, LAN, PXI, USB の違いをマスクし、測定器を制御を容易にするインターフェースです。VISA/VISA COM ライブラリの私用は業界標準化団体(IVI Foundation) によって決められています。小難しいことは抜きに VISA を用いる利点を記します。まず、VISA を用いず GPIB ボードのライブラリを使ってシステムを構築すると違うメーカーの GPIB ボードが載った環境に移植する際に通信用の関数を書き換えなければなりません。これはメーカーにより測定プログラムを組む際の GPIB 通信用関数が違っていることに起因しています。機器に命令を送る関数は Contec なら GpTalk()、Interface なら GpSend() などというように関数の名前も引数も違っています。しかし VISA COM ライブラリを用いれば、VISA 規格に対応している GPIB ボードならば同じ記述で動作させることが出来るため非常に都合が良いです。
また、GPIB ボードのメーカーの違いだけではなく、物理層のインターフェースの違いも吸収してくれます。たとえば GPIB 接続していた機器を LAN 接続や USB 接続の機器に置き換えるようなシチュエーションに直面したとしましょう。もし VISA でシステムを構築していたとすれば、そのときにすることは VISA アドレスの指定を変更することと、機器特有のコマンドを書き換えるだけです[1]。LAN 接続や USB 接続のためのライブラリを追加したり、命令を書き換える必要がありません。これは非常に強力です。
[1] 機器の内部コマンドも SCPI(Standard Command for Programmable Instruments, スキッピ) という規格があったりします。Keithley 2000/2001 などはこの規格に準拠してます。
3.2.VISA アドレスについて
制御する機器を識別する際、VISA では GPIB アドレスの代わりに、VISA アドレスというものを使います。測定器が接続されるインターフェースの情報と、そのインターフェースにおける機器を特定するための情報から構成されています。例えば GPIB で接続されているアドレス 3 の機器の VISA アドレスは GPIB0::3::INSTR となります。LAN で接続された IP アドレス 192.168.0.3 の機器は、 TCPIP0::192.168.0.3::inst0::INSTR となります。
Pinned Articles
About
ウェブ界隈でエンジニアとして労働活動に励んでいる @gomi_ningen 個人のブログです
Tags
JavaScript
PowerShell
kibana
elasticsearch
fluentd
nginx
イベント
五十嵐裕美
村川梨衣
logrotate
IoT
Scala
Java
C言語
iputils
ICMP
WUG
mastodon
Swift
AWS
Clock
Windows
アーキテクチャ
PoEAA
iOS
DeviceFarm
プログラミング言語
OS
StepFunctions
Lambda
Serverless
terraform
ポエム
RHEL
ネットワーク
GraphQL
CloudWatch
Linux
Coreutils
network
nc
telnet
LinuxKernel
fpinscala
ELB
IAM
AppSync
EFS
Gradle
english