カテゴリー
Raspberry Pi 測定器 電子工作

備忘録 Raspberry PI VISA&SCPI

 これは自分のためのメモです。
 この備忘録を見られて真似されても結構ですが、動作の保証は出来かねます。
 また、真似られたことで不測の不具合が発生しましても、私は一切の責任を負いません。


[pip pip3 インストール]
 

$sudo apt install pip -y


[pyvisa インストール]

※いろいろと先人のご苦労を拝見しては真似てやりましたが、バージョンによって少し違うみたいで、なかなか上手くできません。

一応、以下の方法は自分自身で3回構築しなおして再現性あるので大丈夫のはずです。

pip3 install pyvisa
pip3 install pyvisa-py

[USB関連インストール]

pip3 install pyusb

[usbデバイスのルール設定]

① usb アドレス確認
pi@raspberrypi:~$ lsusb
Bus 001 Device 005: ID 0bda:8152 Realtek Semiconductor Corp. RTL8152 Fast Ethernet Adapter
Bus 001 Device 004: ID 1ab1:044d Rigol Technologies DHO802
Bus 001 Device 003: ID 6656:0834 uni-trend UTG900E
Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@raspberrypi:~$

※ Device 003: ID 6656:0834 uni-trend UTG900E と判明する
※ Device 004: ID 1ab1:044d Rigol Technologies DHO802 と判明する

② sudo vi /etc/udev/rules.d/99-com.rules の1行目に追加する
 先の6656:0834と1ab1:0443が重要


#UNI-T Funcrion Arvitrary Waveform Generator UTG900
SUBSYSTEMS=="usb",ACTION=="add",ATTRS{idVendor}=="6656",ATTRS{idProduct}=="0834",GROUP="usbtmc",MODE="0660"
#Rigol Technologies DHO802 Oscilloscope
SUBSYSTEMS=="usb",ACTION=="add",ATTRS{idVendor}=="1ab1",ATTRS{idProduct}=="044d",GROUP="usbtmc",MODE="0660"


③ tcbtmcの権限設定する

sudo groupadd usbtmc
sudo usermod -aG usbtmc pi

④ 必ずrebootする

sudo reboot


[]
・visaアドレス確認

pi@raspberrypi:~$ python
Python 3.7.3 (default, Jul 25 2020, 13:03:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyvisa as visa
>>> r = visa.ResourceManager()
>>> print(r.list_resources())
('USB0::6833::1101::DHOxxxxxxxx::0::INSTR','USB0::26198::2100::89xxxxxx::0::INSTR')



・scpiコマンド *IDN? 実行

① test.pyを作る
pi@raspberrypi:~$ vi test.py
#! /usr/bin/python3

import pyvisa as visa

awgAddr = 'USB0::26198::2100::89xxxxxxx::0::INSTR'
dsoAddr = 'USB0::6833::1101::DHOxxxxxxx::0::INSTR'

rm = visa.ResourceManager()

instr = rm.open_resource(awgAddr)
st_q = instr.query("*IDN?")
print("AWG *IDN? = " + st_q)

instr = rm.open_resource(dsoAddr)
st_q = instr.query("*IDN?")
print("dso *IDN? = " + st_q)

②実行権限を与える
pi@raspberrypi:~$ chmod +x test.py

③実行する
pi@raspberrypi:~$./test.py
awg *IDN? = UNI-T Technologies,UTG900E,89xxxxxxx,1.09
dso *IDN? = RIGOL TECHNOLOGIES,DHO802,DHOxxxxxxx,00.01.00

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です