VISA-COMって、そもそもナニ?

はじめに:計測器と「話す」とはどういうことか
電源評価試験の現場では、電子負荷や電源装置をPCから自動制御することがよくあります。「電圧を5Vに設定して」「今の電流値を読み取って」といった指示を、PCから計測器へ送るわけですね。
でも、計測器はどうやってその「指示」を受け取るのでしょうか?
接続方式だけ見ても、GPIB・USB・RS-232C・LAN(Ethernet) とさまざまな種類があります。それぞれで通信の作法が違うのに、毎回ゼロからプログラムを書き直すのは大変すぎます。
そこで登場したのが VISA という「共通言語」のしくみです。
合わせて読みたい
VISAとは?
VISA は Virtual Instrument Software Architecture(仮想計測器ソフトウェアアーキテクチャ)の略で、「どんなインターフェースの計測器でも、同じAPIで制御できるようにしよう」という思想のもと、1993年にVXI Plug&Play Systems Allianceが策定した業界標準規格で、現在は IVI Foundation が管理しています。
主要な計測器メーカー(Keysight、Rohde & Schwarz、Tektronix等)はほぼすべてVISAに対応しており、事実上の業界標準となっています。
VISA-COMって、何が違うの?
VISAには、実装・呼び出し方のバリエーションがあります。
| 種類 | 特徴 | 主な利用場面 |
| VISA C API | C言語用のヘッダ(visa.h)ベース | C/C++、LabVIEW |
| VISA COM | COM(Component Object Model)オブジェクトとして実装 | Visual Basic、Excel VBA、旧来のWindows開発 |
| VISA.NET | .NETラッパー | C#、VB.NET |
| PyVISA | Python用ラッパー | Python自動化スクリプト |
VISA-COM とは、このうち Windows の COM 技術を使ってVISAを呼び出す方式 のことです。VisaComLib というタイプライブラリを参照し、VBやExcel VBAからも比較的簡単に計測器制御ができるのが特徴でした。
ただし現在の現場では「VISA-COM」という呼び方は広義に使われることも多く、「VISAを使った通信」全般を指して使われることもあります。本記事でも以降は 「VISAによる計測器通信」 として話を進めます。
もう一方の選択肢:Raw TCPとは?
Raw TCP(ローTCP、生ソケット通信とも呼ばれる)は、余計なミドルウェアを挟まずに TCP/IPソケットを直接使って計測器と通信する方式 です。
LAN対応の計測器の多くは、特定のポート番号(一般的には 5025番ポート )で接続を待ち受けており、そこに向けてSCPIコマンドをテキストで流し込むだけで動作します。
# Raw TCP の例(Python)
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('192.168.1.10', 5025)) # 計測器のIPとポート
sock.sendall(b'VOLT 5.0\n') # SCPI コマンド送信
sock.sendall(b'MEAS:CURR?\n') # 電流値クエリ
response = sock.recv(1024)
print(response.decode())
sock.close()
合わせて読みたい
シンプルですね。特別なライブラリのインストールも不要で、どんなOSでも動きます。
VISAとRaw TCP、何が違うのか比べてみよう
① 抽象化レイヤーの有無
VISAの最大の強みは 「インターフェースを意識しなくていい」 点です。
# VISAの例(PyVISA)
import pyvisa
rm = pyvisa.ResourceManager()
# LAN接続でも…
inst = rm.open_resource('TCPIP0::192.168.1.10::inst0::INSTR')
# GPIBでも…
# inst = rm.open_resource('GPIB0::5::INSTR')
# USBでも…
# inst = rm.open_resource('USB0::0x0957::0x0407::MY12345678::INSTR')
# コマンド送信部分はまったく同じ!
inst.write('VOLT 5.0')
current = inst.query('MEAS:CURR?')
print(current)
接続インターフェースが変わっても、コマンド部分のコードは変えなくてよいのです。
② 比較表でまとめると
| 比較項目 | VISA | Raw TCP |
| 対応インターフェース | GPIB / USB / Serial / LAN など多数 | LAN(TCP/IP)のみ |
| 追加ソフトの必要性 | VISAランタイムの導入が必要 | 不要(標準ライブラリだけでOK) |
| コードの再利用性 | 高い(I/F変更に強い) | 低い(LAN専用コードになる) |
| タイムアウト管理 | VISAが自動管理 | 自分で実装が必要 |
| エラー処理 | 標準化されている | 自分で実装が必要 |
| リソースロック機能 | あり(複数PCから同じ機器を共有する場合に便利) | なし |
| セットアップのしやすさ | やや手間(ライブラリインストール等) | 簡単 |
| 動作OS | 主にWindows(Linux/macも対応は拡大中) | OS問わず |
| 処理の軽さ | 抽象化レイヤー分のオーバーヘッドあり | 軽量・直接的 |
| IVIドライバとの連携 | 可能 | 不可 |
VISAのメリット:「統一感」が生む恩恵
- メリット1:インターフェースが変わっても資産が活きる
試験室で長く働いていると、「GPIBしか持っていない古い電源にUSBアダプタを付けた」「新しい機器はLAN接続になった」といった変化はよくあること。VISAを使っていれば、接続文字列(リソース名)を変えるだけでコードはそのまま使えます。 - メリット2:タイムアウトやエラー処理が標準化されている
「コマンドを送ったけど返事が来ない」という状況は計測器制御ではよく起きます。VISAはタイムアウト設定が一元管理でき、エラーコードも統一されているため、堅牢な自動化プログラムを比較的簡単に作れます。 - メリット3:IVIドライバや大手計測ソフトと親和性が高い
LabVIEW、MATLAB、Python(PyVISA)など、計測・制御の定番ツールはVISAと密接に統合されています。機器メーカーが提供するドライバもVISA前提が多く、エコシステムが充実しています。 - メリット4:複数ユーザーによる機器の共有管理
VISA にはリソースロック機能があり、「AさんのPCが制御中に、BさんのPCから誤って同じ機器に書き込んでしまう」といった事故を防ぐことができます。複数の試験員が同じ機器を使い回す環境で役立ちます。
VISAのデメリット:「便利さ」の裏側
- デメリット1:VISAランタイムのインストールが必要
NI-VISA(National Instruments)やKeysight IO Libraries Suiteなどのソフトをあらかじめインストールしておく必要があります。顧客先のPCや組み込みLinux環境など、自由にソフトを入れられない環境では使いにくいのが難点です。 - デメリット2:Windowsへの依存が(まだ)強め
VISA自体はクロスプラットフォーム化が進んでいますが、歴史的にWindowsとの親和性が高い設計になっており、Linux・macOS環境での対応は完全ではないケースもあります。PyVISAなどの普及で改善されつつありますが、注意は必要です。
合わせて読みたい
- デメリット3:セットアップがやや面倒
ライブラリのインストール、ドライバの設定、リソース名の確認など、最初の環境構築に一定の手間がかかります。「ちょっとだけ動作確認したい」という場面では、Raw TCPの手軽さが魅力に映ることもあります。 - デメリット4:わずかなオーバーヘッド
抽象化レイヤーを挟む分、理論上は Raw TCP より若干のオーバーヘッドがあります。ただし、通常の計測器制御では体感できるほどの差はないため、実用上ほぼ問題ありません。
どちらを選べばいい? ・・ 選択の目安

まとめ
| VISA(VISA-COM) | Raw TCP | |
| 一言で言うと | 計測器通信の「共通プラットフォーム」 | 「直結」のシンプル通信 |
| 向いている場面 | 複数I/F・長期保守・大規模試験システム | LAN専用・軽量スクリプト・環境制約あり |
VISA-COMは「計測器の種類や接続方式が変わっても、同じやり方で制御できる」ための業界共通の土台です。最初のセットアップに少し手間はかかりますが、複数の機器を組み合わせた自動試験環境や、長く使い続ける試験システムの構築には、VISA(VISA-COM)を選んでおくと後々の資産が守られます。
一方でRaw TCPは「余計なものを入れずに今すぐLAN接続で動かしたい」という場面では非常に有効な選択肢です。
「最初の1台をLANでちょっと動かしてみたい」ならRaw TCP、「本格的な自動試験システムを作るなら」VISAを選ぶ──この基準が最初の指針になるでしょう。


