2
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 5 years have passed since last update.

Prologix GPIB-USBの基礎動作確認

Last updated at Posted at 2019-12-27

#Prologix GPIB-USB Converter
古めの計測器を読み取るのにGPIBポートから読み出すことは良くある。
PCと接続するのにGPIB-USB変換,GPIB-Ethernet変換あるいはGPIBと無線LANの変換を用いるといった手段があるが、今回はひょんなことからPrologix社製のGPIB-USB変換を手に入れて遊んだので、基礎動作の確認部分を記しておく。
http://prologix.biz/?sef_rewrite=1

GPIB-USB変換といえばNational InstrumentsのGPIB-USB-HS等があるが、格段に値段が安いので、もしかしたらオススメかもしれない。日本だと、Compass lab社から取り扱いがあるようだ。(もちろんPrologix社から直接購入するという手段もある。納期1週間程度らしい。私の場合は前者からで、納期も値段も当時の場合はお得であった。)

GPIBという規格の基礎についても、是非記事にしたいと思っている。

#必要なもの

重要な点として、Prologix GPIB-USBのUSB部分はUSB type-Bのジャック、受け部分になっているので、通常のPCと繋ぐのであればUSB typeA-TypeBケーブルが必要になる。
これとPCとPrologix GPIB-USBさえあればとりあえずOK。

#pyserialで通信してみる

該当機器に固有なコマンドについては、Prologix社のサイトにマニュアルが落ちているので、それを読めば大体のことがわかると思う。英語が苦手な人はCompass Lab社に和訳がある。

また、USBの認証にドライバーが必要な場合があるかもしれない。FTDI社のドライバー(VCP driverあるいはD2XX driverのどちらか)が必要だろう。
https://www.ftdichip.com/Drivers/VCP.htm
https://www.ftdichip.com/Drivers/D2XX.htm

ここではMac OSを用いた(High Sierra, Mojave)を用いた。ちなみにiMacではドライバーを入れずとも動作した。Macbookでもその可能性があるが、ドライバー無しの状態でテストすることを忘れてVCPドライバーを入れたので、私の方では未確認。

後学のため、Pythonスニペットをここでは提示しておく。Python3.6.3を用いた。pyserialが入っていない場合は適宜pip install pyserial等でインストールしておくこと。

USBポートの指定があるので、機器をPCに繋いだ状態でls /dev/等で確認し、適宜変更すること。
(Mac OSの場合)
/dev/cu.usbserial-XXXXX
/dev/tty.usbserial-XXXXX
のような形で存在していると思う。

import serial
try:
    ser = serial.Serial('/dev/cu.usbserial-XXXXX',timeout=1)
    print(ser.name)
    print(ser.is_open)
    print("address")
    ser.write(b"++addr\n")
    t=ser.read(256)
    if len(t)>0:
        print(t)
    print("mode")
    ser.write(b"++mode\n")
    s=ser.read(256)
    if len(s)>0:
        print(s)

    ser.close()
    print(ser.is_open)

except serial.SerialException:
    print("serial exception")
except serial.SerialTimeoutException:
    print("timeout")

このGPIB-USB変換は++XXXXという形で++というものを文字列の先頭につけた形のコマンドを受け付ける。例えば今回は"++addr\n"でこの機器のGPIBアドレスを確認している(0-30で初期値は多分5)。送るのはバイナリなのでser.write()関数の引数の先頭にbを付けることを忘れずに。

同様にser.write(b"++mode\n")部分が動作モードの確認をしている。答えは0 or 1で、デバイスモードとコントローラモードにそれぞれ対応している。初期設定であれば1(コントローラモードを示す)が返ってくるはず。

GPIBアドレスやモードを書き換えるには、++addr 10や++mode 0などとすれば良い(コマンドと数字の間の半角スペースを忘れずに)。この場合、書き換えた先の数字は返ってこないので、確認するにはもう一度++addrコマンドや++modeコマンドを送る必要がある。

2
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
2
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?