NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

計測器をローカル状態にする。

お世話になります。
現在、アジレント製34410Aを制御するプログラムを作成しています。
計測器の仕様でリモート状態になると、現在の測定値を表示しなくなってしまうのですが、
測定中も本体の表示値を確認したいときがあるため、必要に応じてローカル状態に切り替えようと考えています。
そこで、“VISA GPIB制御REN関数”を用いて、試してみたところ、
ローカルに切り替わる場合と切り替わらない場合があり困っています。(ほとんど切り替わらない。)
接続はGPIB-USB-Bを用いています。
他にも、Loc関数なども試してみましたが、やはり同じ結果となります。
なにか間違っている点、またはよい方法などございましたら教えていただきたいので宜しくお願いします。
0 件の賞賛
メッセージ1/12
15,075件の閲覧回数

どなたかアドバイスいただけないでしょうか。

宜しくお願いします。

0 件の賞賛
メッセージ2/12
15,021件の閲覧回数

こんにちわ。

 測定中にローカルにしたいということですが、例えばWhileループの中に『測定する』
と『ローカルに移行する』の 2つの処理があるということでしょうか。つまり、『測定
する』と『ローカルに移行する』を繰り返しているということでしょうか。

 多分、『ローカルに移行する』命令を受信してからすぐに『測定する』命令を受信し
ているために、計測器が反応し切れていないか、または移行したんだけども表示だけ反
応し切れていないかのどちらかのような気がします。

 ローカル状態の計測器が何らかの命令を受信すると、自動的にリモート状態になりま
す。リモート状態の計測器が『ローカルに移行する』命令を受信すれば、ローカル状態
になります。ローカル状態の時間が短すぎるために、そのような現象が起きているので
はないかと思います。

 試しに、『ローカルに移行する』の後に 1秒程度の『待機』命令を挿入してみてはい
かがでしょうか(それでも状態に変化がないなら、待機時間を延ばしてみてください)。
それでローカルになるならば、ローカル状態の時間が短すぎて反応し切れていないだけ
の可能性があると思います。これでもローカルにならないならば、viが間違っているか
もしれません。


 私も以前、ローカルに移行するviを作成しました。測定が終了すると結線を変更した
り非測定物を交換するために一度電源の出力を切るのですが、一々ローカルボタンを押
すのが面倒なので、GPIB関数を使って全ての計測器をローカルにしました。問題なく、
オシロ、電源、デジボルなど全ての計測器はローカルになっていました。

メッセージ3/12
15,009件の閲覧回数

お世話になります。返信ありがとうございました。

私の説明不足でしたが、ローカル切り替えの後はなにも命令していません。

極端な話、“loc関数”や“VISAGPIB制御REN関数”のみを実行してもLOCALにならない状況です。

NIに直接問い合わせしてもフォーラムに書き込んでくれと言われ、ここでもNIからのコメントはない状態。

アジレントは電話やメールでもサポートしてくれますが、この点に関してはGPIB-USBの問題とのことでNIの範疇になると言われました。

実際、アジレント製のGPIB-USBでは問題なくLOCALに切り替わるようです。(アジレントで確認してくれた。)

すでに半分諦めています。不本意ですが、LOCALに切替えたいときは計測器のLOCALボタンを押すことにしようかと思っています。

情けな過ぎますね。

0 件の賞賛
メッセージ4/12
14,990件の閲覧回数
 私はGPIB直結です。
 
 GPIB-USBコンバーターはNIの製品ということですか?
 
数年前のNIのセミナーで、 USB接続できる計測器が発売されるようになったけど、お客
で思うとおりに動かなくて泣きつかれたことがって、大変な目にあったというようなこ
とを講師の方が話していました。
 
 個人的にも USBは嫌いなので、USB による計測器制御はやったことが無いです。
0 件の賞賛
メッセージ5/12
14,981件の閲覧回数
VISAのリモートローカル制御関数という事なので、viGpibControlREN()を使用した場合の
問題と思います。REM→LOCALの動作としては、
 
viGpibControlREN( vi, VI_GPIB_REN_DEASSERT)     //RENディセーブル
viGpibControlREN( vi, VI_GPIB_REN_DEASSERT_GTL) //GTL、RENディセーブル
viGpibControlREN( vi, VI_GPIB_REN_ADDRESS_GTL) //GTL、RENイネーブル保持
のいずれかを使用することになりますが、どれも駄目なのでしょうか。
 
まずは計測器側の問題なのかVISA側の問題なのかを識別したほうが良いと思います。
 
1)他の計測器での同様動作と比較する、
2)可能ならバスアナライザ或いはロジアナ等でハンドシェークラインの確認をする、
 
といった所です。他に、34410AがサポートするSCPIコマンドでREM/LOCAL制御する
方法がもあるかも知れません。旧機種である34401Aの場合には
 
SYSTem:LOCal
というコマンドがありました。ただ34410Aのマニュアルを見ると記載がないので、廃止された
コマンドかも知れません。もちろん単にマニュアル記載をしていない非公開コマンドの可能性
もありますが。また最近のAgilent製DC電源などでは、
 
SYSTem:COMMunicate:RLSTate LOCal
というコマンドも在るようです。
 
制御をVISA/GPIBで行っているとの事ですが、VISA利用ならばUSB(USBTMC-USB488、
GPIB変換ではなくPCと計測器をUSBケーブルで直結)を使うことも可能です。恐らくアプリ側
の変更箇所はviOpen()に渡すVISAアドレスだけでいけると思います。幸いUSBTMCの場合も
viGpibControlREN()関数が(名称とは裏腹に)GPIBと同様の目的で利用できます。
 
 
メッセージ6/12
14,955件の閲覧回数

makoto様

お世話になります。

大変丁寧なアドバイスありがとうございます。

まず、VISA GPIB制御REN関数のモードについてですが、

RENアサート解除、RENアサート解除+GTL、GTL、すべてで動作いたしません。

次に、計測器の問題なのかVISAの問題なのかという点について。

あいにくロジアナ等を所有しておりませんので、それらによる確認はできませんでしたが、

横河製マルチメータで確認したところ、問題なくローカルに切り替わりました。(VISA GPIB制御REN関数を使用、どのモードでもOK)

次に、“SYST:LOC”コマンド,“SYST:COMM:RLST LOC”コマンドを試してみましたが、

34410Aでは廃止されてしまったコマンドのようです。

当方でも色々なことを試してみたところ、下記の順番でプログラムするとローカルに戻ることが分かりました。

理由はまったく分からないのですが、解決したことを報告いたします。本当にありがとうございました。

 

                           記

VISA GPIB制御REN(VI_GPIB_ASSERT_ADDRESS:モード3)送信

なんらかの命令(今回の場合、ファンクション、レンジ、入力インピーダンスなどの設定変更)

VISA GPIB制御REN(VI_GPIB_DEASSERT:モード0)送信
0 件の賞賛
メッセージ7/12
14,945件の閲覧回数
 以前作ったviを調べたところ、GPIB (488.2)関数の『ローカルを有効にする』を使っ
ていました。GPIBカードは 1枚なので、バス番号はデフォルトのままです。
0 件の賞賛
メッセージ8/12
14,881件の閲覧回数
初めての書き込みなのでうまく書けるかわかりません。問題がおきたらお許しください。
 
DMMの34410Aで「計測器をローカルにする」件ですが、私も最近、同じように苦労したので、報告します。
確かに、GPIB関数の「ローカルを有効にする」を使用すれば、確実にローカルに戻ります。
ですが、それでは、VISA関数との連続性が途切れる(GPIB関数は固定のGPIBアドレスを入れる必要があるので)ので
なんとか、VISA関数でできないものかと試行錯誤しました。
 
現在、下記の方法でローカルに戻しています。
1.「VISA GPIB Control REN」関数で、モード1(アサートにする)
2.遅延時間 1秒入れる
3..「VISA GPIB Control REN」関数で、モード2(GTLコマンドを送信してアサートを解除する)
 
どうしてこれでローカルに戻れるのか? 私には理解できていませんので詳細は不明です。
 (「アサート」の意味もわからないれべるなので)
また、この方法を使用すると、関係ない計測器が反応するとの報告もあるので、やはり問題はあるようです。
 
0 件の賞賛
メッセージ9/12
14,812件の閲覧回数

34410Aがローカルに遷移できない問題の原因は、これまでの状況からすると34410Aファームウェアのバグではないかと思います。その理由として、Yokogawa製計測器では正常にローカル遷移できたという報告が最初のほうに有ったからです。試しに、34410Aがリモートに遷移している状況下で、PC側のGPIBケーブルを無理矢理外してみてください。(外すという行為が難しい場合は、PCのシャットダウンでも良いです。) この操作で34410Aがローカルに戻れなければ、バグ(IEEE488.1規約違反)はほぼ間違いありません。

> どうしてこれでローカルに戻れるのか? 私には理解できていませんので詳細は不明です

一旦明示的にリモート&リスナ指定を行って、そのあとにローカル指定すると正常に動作しているように思えます。このあたりの状態遷移の規則はIEEE488.1仕様書で規定されていますが、状態遷移のアルゴリズムにもし問題があればこのような現象は有り得ます。(TNT, NAT4882, NAT9914, NAT7210等のLSIはレジスタレベルでこの状態遷移規則に合致していますが、計測器フロントパネルが実際にRemote→Localな動作をするかどうかは、計測器自身のファームウェア次第です。)

GPIBケーブルをホストPCから外した場合、同一バス上に繋がっている全計測器はローカルに強制的に戻ります。その理由は、RENライン信号が電流供給元(GPIBシステムコントローラ、つまりPC)から切断されてハイインピーダンス状態になり、論理的にFALSE(信号レベルは負論理なのでHi)状態になるからです。IEEE488.1の規則では、REN=FALSEの時には如何なる状態であっても計測器はローカルに戻らなければなりません。従ってもしこの動作にならない場合、その計測器はIEEE488.1規格に違反した動作になります。(計測器のファームウェアがハングしていれば仕方ないですが。。。)

追記:
アサートは、RENラインをTRUEにする事、デアサートはRENラインをFALSEにする事、と思ってください。

このメッセージは 06-29-2007 04:47 PMに Makoto が編集しています。

0 件の賞賛
メッセージ10/12
14,808件の閲覧回数