【自動計測】pythonで計測器を制御する方法 (pyvisa)

実験は,初期段階は方法が確立していないため,様々な工夫をして,いろんな角度からのアプローチが必要になります.

しかし,方法が確立するとただの繰り返しになってしまいますよね

その際に,すぐに終わるような実験であればよいですが,測定回数が多すぎる,計測器が多すぎるといった場合は大変です

実は,PCと計測器を接続さえできればpythonから制御して,自動で測定することが可能です

本記事はAnacondaへのpyvisaインストールからpyvisaを使った計測器との通信,制御,測定の方法を解説します

目次

Anacondaへのpyvisaの環境構築

anacondaにpyvisaをインストールします

::Anaconda.orgにアクセスして,pyvisaと検索します

上記2つのconda-forge/pyvisaconda-forge/pyvisa-pyをインストールします

各ページにインストールコマンドが記載されています

Anaconda Promptを起動して下記コマンドを打ち込んで,pyvisaをインストールします

conda install -c conda-forge pyvisa

次にpyvisa-pyもインストールしましょう

conda install -c conda-forge pyvisa-py

最後にインストールされたか確認しましょう

conda list
# pyvisa                    1.12.0           py38haa244fe_0    conda-forge
# pyvisa-py                 0.5.3              pyh6c4a22f_0    conda-forge

pythonで計測器とのLANケーブルを用いたEthernet通信

LANケーブルを使って,計測器とのEthernet通信を行います

IPアドレスの確認

PCと計測器のIPアドレスを確認します

PCのIPアドレスはwindowsのコマンドプロンプトを起動して確認できます

コマンドプロンプトでipconfigと打つと,IPv4アドレスというのがあります

192.168.1.100というのがIPアドレスです

ipconfig

# Windows IP 構成

# Wireless LAN adapter Wi-Fi:
#    IPv4 アドレス . . . . . . . . . . . .: 192.168.1.100
#    サブネット マスク . . . . . . . . . .: 255.255.255.0
#    デフォルト ゲートウェイ . . . . . . .: 192.168.1.1

計測器のIPアドレスは,計測器のカタログをから設定方法を探してみてください

手順はおおよそ下記のとおりです

手順
  1. PCと計測器をLANケーブルで接続
  2. DHCP(Dynamic Host Configuration Protocol)サーバー設定をOFF
  3. 自動IPアドレス設定をOFF
  4. 固定IPアドレスを設定

固定IPアドレスはPCのIPアドレスの最後の数字を適当に変更してください

もしPCのIPアドレスが192.168.1.100であれば

計測器のIPアドレスは192.168.1.101のようにします

PCとの通信確認

ここでLANケーブルで接続したPCと計測器が正常に接続されているか確認します

先ほど設定した計測器の固定IPアドレスをPCから計測器に飛ばし,反応を確認します

ping IPアドレスとコマンドプロンプトで打ちます

ping 192.168.1.101

# 192.168.1.101 に ping を送信しています 32 バイトのデータ:
# 192.168.1.100 からの応答: 宛先ホストに到達できません。
# 192.168.1.100 からの応答: 宛先ホストに到達できません。
# 192.168.1.100 からの応答: 宛先ホストに到達できません。
# 192.168.1.100 からの応答: 宛先ホストに到達できません。

上記は失敗例ですが,しっかり計測器から通信が返ってくれば大丈夫です

pythonから計測器と通信する

ここで接続したい機器を指定して通信を行います

rm.open_resourceの中にTCPIP::固定IPアドレス::port番号::SOCKETと文字列を入力してください

うまくいかない場合は,TCPIP::固定IPアドレスだけでも良い場合もあります

import pyvisa
rm = pyvisa.ResourceManager()
rm.list_resources()

inst = rm.open_resource('TCPIP::192.168.1.101::5000::SOCKET')
print(inst.query("*IDN?"))

print(inst.query(“*IDN?”))の*IDN?はSCPI共通コマンドです

SCPIはプログラマブル計測器用標準コマンドで,KIKUSUIのPDFがわかりやすいので参照してください

pythonから計測器を制御する

あとはinst.query(“*IDN?”)を書き換えることでデータを継続的に測定することが可能になります

基本的に,inst.writeで計測器の設定を変更し,測定を行います

測定値はinst.query(“:READ?”)などで読み取り,リストなどに格納して出力します

pyvisaについてより詳しく知りたい方は公式ドキュメントを参照してみてください

お疲れ様でした

シェアしてくださると嬉しいです!
  • URLをコピーしました!

コメント

コメントする

目次