計測制御技術ラウンジ >> GPIB技術ラウンジ 全部 1- 最新50

同期の取り方(STB?)に付いて

1 名前: GPIB初心者Z 投稿日:2006/06/27(火) 11:06 ID:XqIDw6Yw
測定器制御プログラムをVB6.0で作成しています
GPIBで制御コマンドは送れており、一応問題無く動作はしています
でも、動作時間短縮の為に、ステータスバイトを
用いてみたいのですが、GPIBに付いてあまりよくわかってません

ステータスバイトを読み込むためには、どいのでしょうか?
測定器にコマンドを送るのとは違うんですか?(*STB?とかではないの?)

詳しい板とかの紹介だけでも有難いです

宜しくお願いします

2 名前: 匿名488 投稿日:2006/06/27(火) 11:16 ID:???
488.2 のコマンドのことでしょうか?
488.2 ならステータスの読み取りはクエリ(末尾が?)を出して、
データの引き取りをする形でしょうから、
測定器にコマンドを送ったり、
データを引き取ったりするのと同じです。

高速化とどうつながるのかいまいち不明ですが、
ホストからのポーリングをやめて、SRQ を使いたい、
ということでしょうか?

3 名前: GPIB初心者Z 投稿日:2006/06/27(火) 11:44 ID:Q.RPj1H.
>488.2 のコマンドのことでしょうか?
古いスペクトラムアナライザを制御してます
きっと、「488.2」何だと思います(小生、なんか勘違いしてますかね?)
一応、「488-1978標準装備」となってます

測定の為に必要な設定を行い、一定のスリープを設けて、
その後に、クエリーコマンドで測定データを取得しています

最初の設定で、スイープ開始を指示しており、スイープが
終了した後でないと、正しいデータを取得できないのです

現状の一定スリープではなく、スペクトラムアナライザの
ステータスバイトに割り当ててある、「スイープ終了標示ビット」を
確認してから、クエリーを実行したいです

4 名前: ka 投稿日:2006/06/28(水) 11:00 ID:gMVuIvtA
488.2は488上で動作する標準コマンド(*IDN?とか*STB?)を指します。
したがって、488対応と488.2対応は異なります。
ややこしいのがステータスバイトの取得方法で、488では
スペアナが発行するサービスリクエスト(SRQ)に対してPCが
シリアルポーリングという手段で取得する方法が主流でしたが、
488.2では*STB?というクエリコマンドでの取得も可能になりました。
まずスペアナの取説を見て、前者なのか、後者なのかを調べてください
(前者のような気がしますが)。
前者ですと、PCにシリアルポーリングを行わせなくてはならないので、
お使いのGP-IBボードの取説からシリアルポーリングの実行方法と、
それで受け取ったステータスバイトの取得方法を調べてください。
スペアナによっては、サービスリクエスト(SRQ)の発生を許可させる
コマンドを送る必要もあるかもしれません。
 VB上で以上の動作をおこなう方法については私はわからないので
他の人にお願いしますが、上記の内容やお使いのGP-IBボードが
わからないと、これ以上のアドバイスは無理かと思われます。

5 名前: 匿名488 投稿日:2006/06/28(水) 11:50 ID:???
*IDN? で返事が返って来る機器なら ka さんのおっしゃる
後者になるかとおもいます。

488.1 は主に GPIB バスの物理仕様と状態遷移などのとりきめです。(e.g. Ethernet + IP,RS232C + SLIP)

488.2 は 488.1 で決められたバスでどんなデータを流すかのとりきめです (e.g. http, smtp)

488.2 は元は 488.1 で決められたバス上での実装が前提でしたが、
仕様自身は物理層に縛られないつくりなので、
同様のコマンドを使って 232C や Ethernet,IP で通信を行うことが可能で、
そのような実装の計測器があまた存在しています。
(いまはそちらの方が主流になりつつあるかもしれません)

6 名前: GPIB初心者Z 投稿日:2006/06/29(木) 09:27 ID:gLwiWzWU
皆様、ご回答ありがとうございます
結局、私が知りたいことは、488.2の仕様に付いてだと
認識できました

「*IDN?」は使用できています
かなり古い計測器でして、プログラミングマニュアルは廃却してしまった状態です

ちなみにLabViewでのポーリング制御は上手く出来ています
(新しい機種用を改造してます)

今となっては、書籍・WEBともに情報が少なくなってますよね・・・

7 名前: マニク◆Jy2pR/5Y 投稿日:2006/06/29(木) 09:39 ID:FYrJYM5.
要するにこういう手順でやればいいのでは。一応VISA風に書きます。

' STBチェック
Dim stb as Integer
WHILE stb AND (チェックしたいビット)
 vs = viReadSTB( vi, &stb)
WEND

vs = viWrite( vi, "クエリ?", hoge, hoge)
vs = viRead( vi, hoge, hoge) 

ちなみに、viReadSTB(= シリアルポーリング)の代わりに*STB?クエリ
とそのレスポンス読み込みを使うことも出来ますが、速度効率は
シリアルポーリングよりも悪いです。

シリアルポーリングの関数が何なのかは使っているGPIBライブラリ
で違ってくるので、そのあたりはライブラリのマニュアルを見てね。

8 名前: マニク◆Jy2pR/5Y 投稿日:2006/06/29(木) 09:41 ID:kJMBwo.s
WHILE文の条件が逆さだった。ゴメソ。
こっちが正しい。

DO
 vs = viReadSTB( vi, &stb)
LOOP UNTIL stb AND (チェックしたいビット)

新着レスの表示

名前 : E-mail(省略可) :

文責:計測制御技術ラウンジ, Powered by ©タカヒロ@みちのく掲示板 [12ch BBS 2.03]