1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

測定器の遠隔制御がわからん!を解決した

Last updated at Posted at 2021-12-01

上司「ウチにあるスペアナなんだけど自動化できるかな?できるよね?(圧)」
上司「今度の検査で使うから」
上司「じゃ、頼んだわ」

ワイ「え?前にレンタルした奴じゃダメなんすか?」
ワイ「使用実績もありますけど」

上司「いや~あれ結構したんだよねえ~」
上司「あ、校正も出しといてね」

ワイ「へい…」

##今回の環境
###用意したもの
・PC(windows10)
・スペアナ (E4407B, Agilent)
・GPIB-USB変換ハブ (GPIB-USB-HS, NATIONAL INSTRUMENTS)
・資料を読み漁る根性

###使用技術
・GPIB
・Python(pyVisa)
・Google翻訳

##第一弾完成まで

ワイ「変換ハブのドライバをインストールして…おっっっも」
ワイ「スペアナ動かすのは公式でアプリかなんかあるやろ」1
ワイ「Agilent時代の機器だけどKeysightで探して…」
ワイ「あるやん!チョッロ!」

しかし…

ワイ「英語でよくわからんけどなんかアラートが出てるな…翻訳したろ」

アプリ「その機器には対応してへんで。すまんな」

ワイ「」

####機器が古すぎた

ワイ「公式だとアプリは出てなさそうやな」
ワイ「まあQiitaなら誰かしらやってるやろ」
ワイ「None…だと…」

####その後も検索して…

ワイ「Githubでスクショするだけのコードは見つけたで」2
ワイ「とりあえず上司に聞いてみるか」

上司「うーん、OK!」
上司「あと見づらいから白黒だけ反転させといてや」

ワイ「は?めんどくさ(おかのした)」

上司「え?」

ワイ「はい?」

###第一弾コード:機器画面のスクショ&色反転

prtscr_E4407B.py
import pyvisa
import tkinter
import tkinter.filedialog as fd
import datetime
from PIL import Image, ImageOps

rm = pyvisa.ResourceManager()
inst_1 = rm.open_resource("GPIB0::18::INSTR")
inst_1.timeout = 10000
print("connect")
inst_1.write(":MMEM:STOR:SCR 'R:PICTURE.GIF'")
capture = inst_1.query_binary_values(message=":MMEM:DATA? 'R:PICTURE.GIF'", container=list, datatype='c')
print("capture")
root = tkinter.Tk()
root.withdraw()

today = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")

filename = fd.asksaveasfilename(filetypes=[("GIF", ".gif")], initialfile=today, defaultextension="gif")

with open(filename, 'wb') as fp:
    for byte in capture:
        fp.write(byte)

#色調を反転させる
img = Image.open(filename).convert('RGB')
im_inv = ImageOps.invert(img)
im_inv.save(filename, 'gif')

inst_1.write(":MMEM:DEL 'R:PICTURE.GIF'")
print("save")
inst_1.close()
rm.close()

ワイ「成し遂げたぜ」

#第二弾完成まで

ワイ「第一弾のコードじゃ物足りないねんな」
ワイ「csvデータが欲しい言われたら詰むし」
ワイ「せや!やれるようにしたろ!」

~以下はただの苦労話なのでそんなんいらんて人は第二弾コードまで飛んで、どうぞ~

ワイ「とりあえずpyVISA公式にそれっぽいのあるし試してみるか」3

ワイ「SPAN変更ヨシ!中心周波数取得ヨシ!マーカー取得ヨシ!」
ワイ「いけるやん!あとは電力一覧の取得や!」

ワイ「どうやってもタイムアウトになる………」

~数日後~

ワイ「どうやっても…でき…」
ワイ「ん?SCPI…?」4

ワイ「これや!」

###第二弾コード:電力値のトレース

Trace_E4407B.py
import pyvisa
import matplotlib.pyplot as mp
import numpy as np

rm = pyvisa.ResourceManager()
inst_1 = rm.open_resource("GPIB0::18::INSTR")
inst_1.timeout = 10000

inst_1.write("*rst; status:preset; *cls")

inst_1.write("initiate")
inst_1.write(":FREQ:START 1000000; STOP 2000000")

pow = inst_1.query(":TRAC? TRACE1")
inst_1.close()
rm.close()

pow2 = list(map(np.double, pow.split(',')))
freq = np.arange(1.0*10**6, 2.0*10**6+1, 2500.0)

mp.grid()
mp.ylim(-100,0)
mp.plot(freq, pow2)
mp.show()

ワイ「なんかよくわからんけど録れたからヨシ!」

#終わりに
ワイ「最初からSCPIに行き着いてたらすぐ終わったんやなって」
ワイ「改めて見たら色んな所に書いてるわ」
ワイ「公式資料はよく読めってことやなあ…」5

#参考資料
https://qiita.com/Yuziii/items/8e0437b33555647b0fc4
SCPIコマンド集
Agilent機器公式リファレンス
E4407Bスクショコード

  1. アドバンテストは有情です

  2. [E4407B pyvisa] でググったら出てきました。 最初からやれや

  3. pyVISA User guide

  4. Standard Commands for Programmable Instruments 言語。機器によって対応バージョンが違い、E4407BはSCPI-1997に対応しているようです

  5. 今回一番の学び

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?