■最初にusb経由でちゃんと測定機器が接続されているか確認します。
・コマンドプロンプト上でjupyter notebookと入力(notebookを起動する)
→ 適当な場所(フォルダ)でNew → Python3(ipykernel)
(コード例)
import pyvisa
rm = pyvisa.ResourceManager()
visa_list = rm.list_resources()
visa_list
・visa_listを実行(Shiftキー押しながらEnter)したときに, USB0::0x..... が表示されればOK。
(2番目の'ASRL1::は気にしない)
(注)もしUSB0::0x... が表示されない場合は,計測器ドライバにNI-VISAが設定されていないかも知れません( →こちらの資料を参照)
(MEMO)
ここでpythonでは0,1,2とゼロから順番に数えるため,visa_listに格納された装置のうち,ゼロ番目がUSB::0x1334...(=今はこれが7351E)で,1番目がASRL1::INSTRという意味
■usb_1という変数に7351Eを指定して,IDN?を実行
usb_1 = visa_list[0] #(←リストのゼロ番目だから[0])
inst = rm.open_resource(ust_1)
print(inst.query('*IDN?'))
(実行結果) ADC Corp.,7351E,162900173,C03
こんな感じの表示がでればOK(クリックで実際の画面を表示)。
特に2台以上の装置をUSBケーブルで接続する場合など,visa_listの何番目の装置が何に当たるか*IDN?で確認しておく!
(MEMO)
query(クエリ)はwrite & read (データちょうだいって計測器にwrite()して結果を読み取る際はqueryを使用)
ADCMT社の7351Eはusb通信の場合,"ADCコマンド"という規格が使用されます。(大抵のマニュアルは分厚くて読むのキツいですが,コマンド欄はチェック必須。)
ADCコマンドの場合,例えばF1と命令すると直流電圧測定,F3なら抵抗測定のモードに切り替わります。
測定モードを指定したり,(別途説明)直流電源などで通電を開始する,といった命令は特に「装置から何かを読み取る」必要はなく,このような場合はinst.writeを使用します。
サンプルコード dmm1.ipynb (Jupyter notebook形式) (←右クリックしてリンク先を別名で保存)
サンプルコード dmm1.py (python形式) (←右クリックしてリンク先を別名で保存)
pythonではインデント(空欄)が重要な働きをして,コードの読みやすさにも繋がっています。例えばwhileの後は4つのスペースが入っています。
(while i<=10: の次の行
i=i+1の前に4つスペース)
(MEMO)
whileは「ある条件を達するまで以下のコードを繰り返せ!」という命令文。
import time
とtimeモジュールを読み込んで,time.sleep(1)と指定すると,1秒おきにwhile以下が実行され,time.sleepはデータ集録で必須と思います。
while以下には*TRGがクエリされており,これは「現在の値を読み込め!」というコマンドです。
次行のprint文は結果を画面表示せよ,というもので,無くても構いません(単にあぁちゃんと測定してくれているなぁ,という安心感のため)。
with openの部分で保存ファイル名を指定する(例ではtest.txtという名前で保存される)
保存される内容はi(=ループ回数,今回は1秒に1回測定するので,iはそのまま経過時間(s)に対応)
と抵抗値です。
[注]