質問するログイン新規登録
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

336閲覧

【Python / PyVISA / GPIB】機器を入れ替えてアドレスを変更しただけなのに動きません(初心者です)

dfmr0222

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2025/09/10 01:25

0

1

■質問本文(詳細):

Pythonで、GPIB接続された制御機器を扱っています。
全部で3台あり、それぞれを切り替えて使えるようにしています。

このたび3号機の機器を入れ替えたため、GPIBアドレスを GPIB0::10::INSTR から GPIB0::19::INSTR に変更しました。

■試しているコードのイメージ(PyVISA)
if machine_flag == 3:
DEVICE_ADDR = "GPIB0::19::INSTR"
else:
DEVICE_ADDR = "GPIB0::10::INSTR"

・machine_flag は手動で 1〜3 を切り替えて使っています。
・上記のように、3号機のときだけアドレスを変更しているだけです。

■困っていること
・アドレスを変えただけなのに、なぜか動作しません
・IndentationError や TabError が出ることもあります
→ タブとスペースは統一しているつもりです
・アドレス19にしたときだけ、反応がなくなる・エラーになるなどの現象が発生します
・アドレス10に戻せば問題なく動きます

■補足
・使用ライブラリは PyVISA(pyvisa)です
・Pythonのレベルは初心者で、GPIBや機器制御もあまり詳しくありません
・コードの構造や初歩的なミスを見落としている可能性があります
・機器名などは業務上の事情で伏せています(申し訳ありません)

■教えてほしいこと
・アドレス切り替え時にありがちなミスや注意点
・IndentationError や TabError の確実な防止方法
・PyVISAで複数GPIB機器を扱うときのベストプラクティス
・GPIBアドレスが間違っている/機器が接続されていない場合に出る典型的なエラー内容など

以上、長くなりましたが、アドバイスいただけると大変助かります。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2025/09/10 02:28

念の為に確認しますが、接続しているGPIB機器のアドレス(GPIB0::19::INSTR)はどの様にして確認したのでしょうか? 以下の公式ドキュメントに書かれている方法でしょうか? PyVISA: Control your instruments with Python — PyVISA 1.15.1.dev27+g908d86744 documentation https://pyvisa.readthedocs.io/en/latest/
dfmr0222

2025/09/10 02:44

接続しているGPIB機器のアドレス(GPIB0::19::INSTR)は、Keysightの「Connection Expert」で確認しました。 実際にConnection Expert上で該当機器が表示されており、アドレス19番(GPIB0::19::INSTR)で認識されていることを確認済みです。
melian

2025/09/10 03:02

Connection Expert ではなく、PyVISAのドキュメントに記載されている方法でも同じ結果になっていますでしょうか? import pyvisa rm = pyvisa.ResourceManager() print(rm.list_resources())
dfmr0222

2025/09/10 03:53

ご指摘の通り PyVISA を使って確認したところ、GPIB0::19::INSTR は list_resources() で正しく認識されていました。 そのため、物理的な接続やアドレスの設定ミスではなさそうです。
bebebe_

2025/09/11 00:05

機器は同一の機種になりますか? また Connection Expert からコマンドを送信した場合はどうなりますか?
dfmr0222

2025/09/11 05:54

はい、両方とも同じ型番です。 Interactive IO から *IDN? を送ると応答がありました(=接続成功)
dodox86

2025/09/11 07:08

@質問者 dfmr0222 さん 質問文中の説明が少し足りないようで、読んだ者には誤解を生みやすいです。 「アドレスを変えただけなのに」とありますが、 (1) GPIBで接続された外部機器が3台存在する。それぞれ1号機=A, 2号機=B, 3号機=Cとする。 (2) 3号機のCを新しく用意したDに差し替えた。そのDは、アドレスを「GPIB0::19::INSTR」としている。 (3) 元の3号機=Cは、アドレスが"GPIB0::10::INSTR"のまま。 と言うことですか?で、アドレス10に戻せば、と言うのはもとの3号機=Cに繋ぎ変えた、と言うことでしょうか。アドレスを変えただけと言うのはPythonのプログラム上の話で、外部機器としては型番は同じかもしれないけど新しい機器を接続したということでしょうか? 一般的な話ですが、仮に型番が同じでもその外部機器の設定やファームウェア(外部機器に組み込まれているソフトウェア)のバージョンが違えば違う挙動になる可能性もあります。 また、PythonもGPIBの接続機器についても初心者、とのことですが、この提示されたいち部分のコードは質問者さんが修正されたりしたものですか?
dodox86

2025/09/11 07:15

> また、PythonもGPIBの接続機器についても初心者、とのことですが、この提示されたいち部分のコードは質問者さんが修正されたりしたものですか? これは「IndentationError や TabError が出ることもあります」とのことなので、単に修正したPythonのプログラムが虚弱で不安定で、machine_flagなる変数に正しい値が入っていないで、つねにアドレス=10の選択肢(else:の方)になっているだけなのではないか?と思ったためです。その辺りは確認しましたか?
dfmr0222

2025/09/11 08:49

丁寧な解説ありがとうございます。 このコードはAIを使いながら、私が修正したものです。 ご指摘は分岐がちゃんとできてないのではと言うこと理解しましたが、その認識で正しいでしょうか? でしたら以下のコードを入れれば分岐できているかどうかわかりますかね? ----------------------------------------- if machine_flag == 3: print("アドレスは19を使います") else: print("アドレスは10を使います")
quickquip

2025/09/11 09:26 編集

コードがおかしいのにそれを隠しているから何も回答することがない という状況のように(何も分からない私からは)見えます > GPIBアドレスを GPIB0::10::INSTR から GPIB0::19::INSTR に変更しました。 >■試しているコードのイメージ(PyVISA) >if machine_flag == 3: >DEVICE_ADDR = "GPIB0::19::INSTR" >else: >DEVICE_ADDR = "GPIB0::10::INSTR" であるなら、**書き換える前** は if machine_flag == 3: DEVICE_ADDR = "GPIB0::10::INSTR" else: DEVICE_ADDR = "GPIB0::10::INSTR" だったのでは、と読めてしまいますが、これは「そんなわけはない」コードでしかないです。ですので、何か「質問するのに絶対に必要なコード」が隠されているのだろうな、としか思えません とにかく元のコードがどうで、どう直したらどうなる。がまったく伝わってないように見えます > ・machine_flag は手動で 1〜3 を切り替えて使っています。 > ・上記のように、3号機のときだけアドレスを変更しているだけです。 これは if machine_flag == 3: の部分を 1号機の時はif machine_flag == 1: に、2号機の時は if machine_flag == 2: に書き換えて実行しています、という意味でしょうか? コメント欄での返信は要らないです。質問を書き換えてもらえればそれでよいです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問