Python, PyVISAでTOS5301からデータを取得する方法【①PCと機器との通信方法】
なぜ測定機器からデータを取得するのにPCやプログラミング(Python, PyVISA)を使わないといけないのか?
なぜかと言うと、この手の機器にはOSが入っていなく、機器側にはデータの外部出力というメニューが用意されていません。(外部出力端子がついているだけ、ケーブルすら付属していない)
したがって、PCをプライマリ機、測定機器をセカンダリ機として、なんらかのプログラミング言語でPCから指示出しをしてあげる必要があります。
まず今回はPythonとPyVISAモジュールを使い、query("*IDN?")というコマンドで機種名を取得してみます。
環境
・windows10
・Python
・Vidual Studio Code
準備するもの(ハード)
・安全試験器 菊水電子工業 TOS5301
https://kikusui.co.jp/w2-2/safety-tester/voltage-testers/tos5301/
・USB2.0ケーブル (Type-A オス − USB Type-B オス)
https://www.buffalo.jp/product/detail/bsuab210bk.html
インストールするもの
・フロントエンド pyVISA
pip install pyvisa
・バックエンド NI-VISA
https://www.ni.com/ja-jp/support/downloads/drivers/download.ni-visa.html#460225
※PyVISA-py(デフォルトのバックエンド)やKI-VISA(メーカー公式のバックエンド)では、なぜか重要なコマンドが利用できませんでした。
私がトライした限り、全てのコマンドが利用できるのはNI-VISAだけでした。2023年7月現在、windows11まで対応しています。
・USBケーブルのドライバー
https://ftdichip.com/drivers/
"Click here to download the Windows 7 to Windows 11 ..."のhereのリンクからダウンロードして、zipファイルを解凍することでインストールできます。
PCと測定機器を通信して機種名を取得するPythonコード
#測定器と通信する準備
import pyvisa
import sys
#グローバル変数としてinst, rmを作成
rm = ""
inst = ""
#=======実際の処理=============
rm = pyvisa.ResourceManager()
ports = rm.list_resources()
if len(ports) == 0:
print("エラー: COMポートがありません")
else:
#前面のUSBポートにケーブルが刺さった状態で、COMポート番号を自動で取得してオープンする
port = ports[0]
inst = rm.open_resource(port)
#タイムアウトを設定する
inst.timeout = 5000
#クエリコマンドで機種名を取得する
try:
idn = inst.query("*IDN?")
if len(idn) <= 5:
print("エラー: 試験機側の通信設定が正しくありません")
#COMポートを閉じる
inst.close()
sys.exit()
elif len(idn) > 6:
print(idn)
except:
print("エラー: 本体の電源がOFF、または通信パラメータの設定が正しくありません")
inst.close()
sys.exit()
VSCodeのデバッグ機能で動作確認する
メニューバーの「実行」→「Start Debugging」→Select a debug configurationで「Pythonを選択する」
で、コードのデバッグができます。
正常に通信できていると、上記コードで"KIKUSUI TOS〇〇"のような機種名をターミナルに表示することができます。