• ベストアンサー

GP-IB制御について

現在、VB6.0を使用して Agilent社の53132Aという計測器を使用して周波数の値を取得する プログラムを作成しているのですが、計測器が表示している計測値を取得したいのですが取得する方法がわからず困っております。 どのように取得するのかご存知でしたら教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • uruz
  • ベストアンサー率49% (417/840)
回答No.11

No10の訂正 なんか訂正文がセットに・・・・ ----------------------------------------------- ●MEASUREコマンドでレンジの指定方法 50MHzが測定出来るレンジで分解能が1Hz "MEASURE:SCALAR:VOLTAGE:FREQUENCY? 50 MHZ, 1 HZ, (@1)" 省略型 "MEASURE:FREQ? 50 MHZ, 1 HZ, (@1)" 20MHzが測定出来るレンジで分解能が0.1Hz ←▲訂正▲ "MEASURE:SCALAR:VOLTAGE:FREQUENCY? 20 MHZ, .1 HZ, (@1)" "MEASURE:FREQ? 20 MHZ, .1 HZ, (@1)" 20MHzが測定出来るレンジで分解能が0.01Hzz ←▲訂正▲ "MEASURE:SCALAR:VOLTAGE:FREQUENCY? 20 MHZ, .01 HZ, (@1)" "MEASURE:FREQ? 20 MHZ, .01 HZ, (@1)" ●CONFIGUERコマンドでレンジの指定方法 50MHzが測定出来るレンジで分解能が1Hz "CONFIGUER:FREQUENCY 50 MHZ, 1 HZ, (@1)" "CONF:FREQ 50 MHZ, 1 HZ, (@1)"

Simanohito
質問者

お礼

ご回答誠にありがとうございました。 早速、教えて頂いた内容で確認し、私が取得したい値が取得する事が 以下のプログラムで出来ました。まことにありがとうございました。 以下にプログラムの抜粋を記載します。 '測定項目を指定 Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "MEASURE:SCALAR:VOLTAGE:FREQUENCY? 20 MHZ, .1 HZ, (@1)") get_data = GetOneData '周波数を読み込む-------------------------- Private Function GetOneData() As String Dim szBuff As String Dim iRet As Integer Const MyGpibAdrs = 1 Const GpAdrsBuf = 3 Const Status = 0 Wait (1000) '1sec待ち szBuff = String(256, &H0) iRet = PCIGPIBAX.gpred(GpAdrsBuf, szBuff, Len(szBuff)) GetOneData = szBuff End Function

その他の回答 (10)

  • uruz
  • ベストアンサー率49% (417/840)
回答No.10

なんだか、だんだん深みにはまって・・・・・ また、誤らねば・・スペル間違いです CONFIGUER → CONFIGURE 前回のコードをもう一度試してください 「回答のお礼」の(4)の場合↓のようにMEASUREの後にも読み込みが必要です 【参考:"?"が付くコマンドは「問い合わせコマンド」ですから、送信後は必ず受信しなくてはなりません】 Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "MEASURE:SCALAR:VOLTAGE:FREQUENCY? (@1)") szBuff = String(256, &H0) iRet = PCIGPIBAX.gpred(GpAdrsBuf, szBuff, Len(szBuf) iRet = PCIGPIBAX.gpwrt(GpAdrsBuf, "FETCH: FREQ?") szBuff = String(256, &H0) iRet = PCIGPIBAX.gpred(GpAdrsBuf, szBuff, Len(szBuf) ----------------------------------------------- ●MEASUREコマンドでレンジの指定方法 50MHzが測定出来るレンジで分解能が1Hz "MEASURE:SCALAR:VOLTAGE:FREQUENCY? 50 MHZ, 1 HZ, (@1)" 省略型 "MEASURE:FREQ? 50 MHZ, 1 HZ, (@1)" 20MHzが測定出来るレンジで分解能が0.11Hz "MEASURE:SCALAR:VOLTAGE:FREQUENCY? 20 MHZ, .1 HZ, (@1)" "MEASURE:FREQ? 20 MHZ, .1 HZ, (@1)" 20MHzが測定出来るレンジで分解能が0.011Hz "MEASURE:SCALAR:VOLTAGE:FREQUENCY? 20 MHZ, .01 HZ, (@1)" "MEASURE:FREQ? 20 MHZ, .01 HZ, (@1)" ●CONFIGUERコマンドでレンジの指定方法 50MHzが測定出来るレンジで分解能が1Hz "CONFIGUER:FREQUENCY 50 MHZ, 1 HZ, (@1)"

  • uruz
  • ベストアンサー率49% (417/840)
回答No.9

No8 の訂正 (@1)の前のスペースが抜けてしまいました × '測定項目を指定 Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "CONFIGUER:FREQUENCY(@1)") ○ '測定項目を指定 Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "CONFIGUER:FREQUENCY (@1)")

Simanohito
質問者

お礼

ご連絡が大変遅くなりまして申し訳ございません。 ご回答ありがとうございます。 早速、確認してみました。 (1) Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "CONFIGUER:FREQUENCY (@1)") iRet = PCIGPIBAX.gpwrt(GpAdrsBuf, "FETCH: FREQ?") szBuff = String(256, &H0) iRet = PCIGPIBAX.gpred(GpAdrsBuf, szBuff, Len(szBuf) 結果:タイムアウトになり値を取得出来ませんでした。 (2) Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "CONFIGUER:FREQUENCY (@1)") iRet = PCIGPIBAX.gpwrt(GpAdrsBuf, "READ: FREQ?") szBuff = String(256, &H0) iRet = PCIGPIBAX.gpred(GpAdrsBuf, szBuff, Len(szBuf) 結果:タイムアウトになり値を取得出来ませんでした。 (3) Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "MEASURE:SCALAR:VOLTAGE:FREQUENCY? (@1)") '<1> iRet = PCIGPIBAX.gpwrt(GpAdrsBuf, "READ: FREQ?") szBuff = String(256, &H0) iRet = PCIGPIBAX.gpred(GpAdrsBuf, szBuff, Len(szBuf) 結果:タイムアウトになり値を取得出来ませんでした。 (4) Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "MEASURE:SCALAR:VOLTAGE:FREQUENCY? (@1)") iRet = PCIGPIBAX.gpwrt(GpAdrsBuf, "FETCH: FREQ?") szBuff = String(256, &H0) iRet = PCIGPIBAX.gpred(GpAdrsBuf, szBuff, Len(szBuf) 結果:タイムアウトになり値を取得出来ませんでした。 (5) Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "MEASURE:SCALAR:VOLTAGE:FREQUENCY? (@1)") '<1> szBuff = String(256, &H0) iRet = PCIGPIBAX.gpred(GpAdrsBuf, szBuff, Len(szBuf) 結果:値は取得出来ましたが、<1>通過時点で表示の値が先日連絡した内容に変化する。 と言った結果になりました。

  • uruz
  • ベストアンサー率49% (417/840)
回答No.8

>値は取得できるようになりました。 あ~~よかった "MEASURE" は測定コマンドですからコマンドを受けた時点で再測定され結果が戻されるのだと思います "MEASURE:SCALAR:VOLTAGE:FREQUENCY? (@1)") の代わりに "READ: FREQ?" または "FETCH: FREQ?" ←たぶんこっちかな? を試してください ただし最初の測定は "MEASURE:SCALAR:VOLTAGE:FREQUENCY? (@1)") で測定を行うか "CONFIGUER:FREQUENCY(@1)" で測定項目を指定しておく必要があると思われます MEASUREを使用する場合はダミーの読み込みが必要 CONFIGUER戻り値はありませんのでダミーの読み込みはいりません 測定数値についてですが、よく解りません たぶん測定レンジが変わってしまったのではないかと思うのですが 如何でしょうか? 測定後53131Aのパネルで確認してください もし測定レンジが変わっているなら初期化で行っている Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*RST") を外してみてください(たぶんこれだと) デバッグポイントを設定するなどしてどの時点で変化するか調べるといいでしょう ---------------------------------------------- 説明わかりやすくするためデータ読み込みをファクション・プロシージャに分けました '//////////////////////////////////////////////////// Dim szBuf As String MyGpibAdrs = 1 GpAdrsBuf = 3 Status = 0 Status = PCIGPIBAX.gpinit(MyGpibAdrs, 0, 0) If Status <> 0 Then Error.Text = "PCIGPIBAX.gpinit()エラー :" & Status Exit Sub End If ' タイムアウト設定 Status = PCIGPIBAX.gptmout(1) If Status <> 0 Then Error.Text = "PCIGPIBAX.gptmout()エラー :" & Status Exit Sub End If 'デリミタの設定 Call PCIGPIBAX.gpdelm("b", &HA00) '▲変更▲ 送・受信ともCR+LF+EOI '--------------------------------------------------- ' IFCラインをTRUEにする Status = PCIGPIBAX.gpcli() If Status <> 0 Then Error.Text = "PCIGPIBAX.gpcli()エラー :" & Status Exit Sub End If ' RENラインをTRUEにする Status = PCIGPIBAX.gpren() If Status <> 0 Then Error.Text = "PCIGPIBAX.gpren()エラー :" & Status Exit Sub End If ' 53131Aの初期化 'Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*RST") 'Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*CLS") 'Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*SRE 0") 'Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*ESE 0") 'Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*:STAT:PRES") '測定項目を指定 Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "CONFIGUER:FREQUENCY(@1)") '読み込み szBuf = GetOneData() '   ↓ '   ↓ szBuf = GetOneData() '   ↓ '   ↓ szBuf = GetOneData() '   ↓ '   ↓ szBuf = GetOneData() '   ↓ '   ↓ 'リモートの解除 Status = PCIGPIBAX.gplcl(GpAdrsBuf) '///////////////////////////////////////////// '///////////////////////////////////////////// '周波数を読み込む-------------------------- Private Function GetOneData() as String Dim szBuff As String Dim iRet as Integer Const MyGpibAdrs = 1 Const GpAdrsBuf = 3 Const Status = 0 '読み込み iRet = PCIGPIBAX.gpwrt(GpAdrsBuf, "FETCH: FREQ?") szBuff = String(256, &H0) iRet = PCIGPIBAX.gpred(GpAdrsBuf, szBuff, Len(szBuff)) 'イミディェイト・ウインドウに表示 Debug.Print szBuff,cSng(szBuff) GetOneData = szBuff End Function

  • uruz
  • ベストアンサー率49% (417/840)
回答No.7

あれ~ これでいけると思ったんですが・・・ ":MWASURE:SCALAR:VOLTAGE:FREQUENCY? (@1)" の先頭の":"を取り除いてみてくださ "MWASURE:SCALAR:VOLTAGE:FREQUENCY? (@1)" また省略型もためして見てください "MWAS:FREQ? (@1)" とここまで書いて気づいたコピペを繰り返してたので 「ごめん」スペルが違うWとE × "MWASURE" ○ "MEASURE"  "MEAS:FREQ? (@1)" "MEASURE:SCALAR:VOLTAGE:FREQUENCY? (@1)" ------------------------------------------------- ↑↑↑これでいけると思うけど もしだめなら 53131Aのインターフェイスを初期化して見ましょう 下記の5つのコマンドを"*REN"の後"MEASURE・・・・"の前に入れてください ' 53131Aの初期化 Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*RST") Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*CLS") Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*SRE 0") Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*ESE 0") Status = PCIGPIBAX.gpwrt(GpAdrsBuf, ":STAT:PRES") そしてここまでがREX-PCI20と53131Aの初期化とまります Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "MEASURE:SCALAR:VOLTAGE:FREQUENCY? (@1)")    ・    ・    ・    ・    ・

Simanohito
質問者

お礼

早急なご回答ありがとうございました。 スペル間違い気が付かず大変申し訳ございませんでした。 先頭の:を削除して確認した所、値は取得できるようになりました。 ありがとうございます。 ただ、 Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "MEASURE:SCALAR:VOLTAGE:FREQUENCY? (@1)") をコールした後、機器の画面に出ている値がリセットされた後、 それまで、 15.999,931,94みたな表示が16.00って表示になり 取得した値が+1.600E+007ってなります。 出来れば15.999,931,94の値で取得したいのですが出来ないのでしょうか?

  • uruz
  • ベストアンサー率49% (417/840)
回答No.6

>*IDNを送信した時、結果が『HEWLETT-PACKARD,53131A,0,4806』と返ってきました。 通信はOKですね 結果を見ると機種は 53132A ではなく 53131A のようですね ●通信の設定はIFC実行前に済ませます ●デリミタ設定で &H400 は「デリミタなし」です  「CR+LF」なら &H200 です  通常は「CR+LF+EOI」を使用します、設定値は &HA00 です 53132Aのマニュアルを再度見てみました チャンネルがCH1~CH3と3つあるようですね ":MWASURE:SCALAR:VOLTAGE:FREQUENCY?" でチャンネル指定が必要なようです CH1 の場合 ":MWAS:FREQ?" (@1)" と指定します CH2→(@2) CH3→(@3) これでど~だ! 参考------------------------------- ":MWAS:FREQ?" (@1)" で読む以外に下記でも読めそうです ● "CONF:FREQ (@1)" 'CH1の周波数を指定 ":EVENT1:LEVEL 0.05" 'トリガレベルを 50mVに設定(必要なら) "READ?"         '読み込み ● "FUNC 'FREQ 1'" "READ: FREQ?" --------------------------------- '//////////////////////////////////////////////////// Dim szBuf As String MyGpibAdrs = 1 GpAdrsBuf = 3 Status = 0 Status = PCIGPIBAX.gpinit(MyGpibAdrs, 0, 0) If Status <> 0 Then Error.Text = "PCIGPIBAX.gpinit()エラー :" & Status Exit Sub End If ' タイムアウト設定 Status = PCIGPIBAX.gptmout(1) If Status <> 0 Then Error.Text = "PCIGPIBAX.gptmout()エラー :" & Status Exit Sub End If 'デリミタの設定 Call PCIGPIBAX.gpdelm("b", &H400) '送・受信ともCR+LF '--------------------------------------------------- ' IFCラインをTRUEにする Status = PCIGPIBAX.gpcli() If Status <> 0 Then Error.Text = "PCIGPIBAX.gpcli()エラー :" & Status Exit Sub End If ' RENラインをTRUEにする Status = PCIGPIBAX.gpren() If Status <> 0 Then Error.Text = "PCIGPIBAX.gpren()エラー :" & Status Exit Sub End If Status = PCIGPIBAX.gpwrt(GpAdrsBuf, ":MWASURE:SCALAR:VOLTAGE:FREQUENCY? (@1)") ' Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*IDN?") szBuf = String(256, &H0) Status = PCIGPIBAX.gpred(GpAdrsBuf, szBuf, Len(szBuf)) 'イミディェイト・ウインドウに表示 Debug.Print szBUF 'リモートの解除 Status = PCIGPIBAX.gplcl(GpAdrsBuf) '-------------------------------------------------- 以上

Simanohito
質問者

お礼

早急なご回答ありがとうございます。 機種は 53132A ではなく 53131A でした。 大変申し訳ございませんでした。 早速上記のプログラムで実行してみましたが結果はタイムアウトしてしまい値は取得できませんでした。 参考の部分に記載して頂いた内容確認しましたが結果は同じでした。 何か根本的に間違えてるのでしょうか・・・。

  • uruz
  • ベストアンサー率49% (417/840)
回答No.5

No4の回答の訂正 ●REM(リモート)のスペルを訂正 × Status = PCIGPIBAX.gprem() ○ Status = PCIGPIBAX.gpren() ●"*IDN?"コマンドでのコードの追加 Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*IDN?") szBuf = String(256, &H0) Status = PCIGPIBAX.gpred(GpAdrsBuf, szBuf, Len(szBuf)) ------------------------------------------------- ●GP-IBカード初期化に続き必要であれば設定もしてください gpinit(・・・)  '←初期化 gptmout(・・・) '←タイムアウト時間の設定 gptdelm(・・・) '←デリミタとEOIの設定

Simanohito
質問者

お礼

ご回答ありがとうございました。 早速上記の内容でプログラムを作成してみました。 *IDNを送信した時、結果が『HEWLETT-PACKARD,53131A,0,4806』と返ってきました。 ただ、周波数の値を取得したいので、 先日教えていただいたコマンドを使用して値を取得してみたのですが、 タイムアウトで取得できませんでした。 何か方法がおかしいのでしょうか? もしご存知でしたらご教示いただけないでしょうか? お手数お掛けしますがよろしくお願い致します。 Status = PCIGPIBAX.gpwrt(GpAdrsBuf, ":MWASURE:SCALAR:VOLTAGE:FREQUENCY?") Dim szBuf As String MyGpibAdrs = 1 GpAdrsBuf = 3 Status = 0 Status = PCIGPIBAX.gpinit(MyGpibAdrs, 0, 0) If Status <> 0 Then Error.Text = "PCIGPIBAX.gpinit()エラー :" & Status Exit Sub End If ' IFCラインをTRUEにする Status = PCIGPIBAX.gpcli() If Status <> 0 Then Error.Text = "PCIGPIBAX.gpcli()エラー :" & Status Exit Sub End If ' RENラインをTRUEにする Status = PCIGPIBAX.gpren() If Status <> 0 Then Error.Text = "PCIGPIBAX.gpren()エラー :" & Status Exit Sub End If ' タイムアウト設定 Status = PCIGPIBAX.gptmout(1) If Status <> 0 Then Error.Text = "PCIGPIBAX.gptmout()エラー :" & Status Exit Sub End If Call PCIGPIBAX.gpdelm("b", &H400) '送・受信ともCR+LF Status = PCIGPIBAX.gpwrt(GpAdrsBuf, ":MWASURE:SCALAR:VOLTAGE:FREQUENCY?") ' Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*IDN?") szBuf = String(256, &H0) Status = PCIGPIBAX.gpred(GpAdrsBuf, szBuf, Len(szBuf)) Status = PCIGPIBAX.gplcl(GpAdrsBuf)

  • uruz
  • ベストアンサー率49% (417/840)
回答No.4

REX-PCI20、53132Aは使ったことないのですが・・・ また、マニュアルを斜めにしか見ていないので間違いがあったら「ごめんなさい」 ●確認事項  ■53132A機器本体の設定はできてますか?   通信モード、機器アドレス、デリミタ、EOIなど  ■GP-IBカード設定および gpinit(・・・) による初期化 この段階ではまだコマンドを送信できません 最初に IFC(インターフェイス・クリア)を実行します このIFCでPCがコントローラ(親分)である事を各機器に宣言します Status = PCIGPIBAX.gpcli()  '最初に一回だけ 次に REM(リモート)を実行し各機器(53132A)をリモートモードにします Status = PCIGPIBAX.gprem()  '最初に一回だけ これで53132Aにコマンドが送信できるようになります なお、REM(リモート)中は各機器(53132A)本体はロックされパネル操作は出来なくなります 試しに下記実行してみれください 53132Aの機器情報が帰って来るはずです Status = PCIGPIBAX.gpwrt(GpAdrsBuf, "*IDN?") Status = PCIGPIBAX.gpred(GpAdrsBuf, szBuf, Len(szBuf)) なお、計測終了後はLCL(ローカル)でREM(リモート)を解除しパネル操作が出来るようにします Status = PCIGPIBAX.gplcl("") ●REX-PCI20に通信テスト用のプログラムが付属していれば試して見てください設定が悪いのかプログラムが間違ってるのか判断できます また、サンプル・プログラムが付属してるならじっくり眺めてください 手順なと参考になります

  • uruz
  • ベストアンサー率49% (417/840)
回答No.3

>『:MWASure[:SCALar][:VOLTage]:FREQuency?』って送れば... [ ]内は省略可能を表しています また小文字も省略可能です、小文字部分を省略しない場合は全て大文字で記します 以下の例のどれでも可です :MWASURE:SCALAR:VOLTAGE:FREQUENCY? :MWASURE:SCALAR:FREQUENCY? :MWASURE:VOLTAGE:FREQUENCY? :MWASURE:FREQUENCY? :MWAS:SCAL:VOLT:FREQ? :MWAS:FREQ? なお、コマンドを送っただけでは値が取得は出来ませんので GP-IBの送信後、受信動作を行います

Simanohito
質問者

お礼

早速のご回答ありがとうございます。 早速上記の内容を送ってみたのですが、 受信動作をしてもタイムアップしてしまい取得できない状態です。 ちなみにGPIBボードはラトックシステム株式会社のREX-PCI20という製品を使用しております。 ちなみに以下のようなプログラムで取得しようとしてますが gpredの関数で戻り値がタイムアップとなってしまいます。 Status = PCIGPIBAX.gpwrt(GpAdrsBuf, ":MWASURE:SCALAR:VOLTAGE:FREQUENCY?") wait(1000)'1秒またせる Status = PCIGPIBAX.gpred(GpAdrsBuf, szBuf, Len(szBuf))

  • uruz
  • ベストアンサー率49% (417/840)
回答No.2

マニュアル「プログラミング ガイド」の コマンド リファレンス4-63 に書かれてますけど :MWASure[:SCALar][:VOLTage]:FREQuency? なお、英語/日本語の「プログラミング ガイド」は下記より入手できます。 http://www.home.agilent.com/agilent/techSupport.jspx?cc=JP&lc=jpn&nid=-536902438.536880944&pid=1000001386%3Aepsg%3Apro&pageMode=MN

Simanohito
質問者

お礼

ご回答ありがとうございます。 早速、資料を確認しましたが、値を取得することが出来ませんでした・・・ GP-IBにコマンドで『:MWASure[:SCALar][:VOLTage]:FREQuency?』って送れば値が取得できるわけでは無いのでしょうか? 何も判っておらずすいません・・・。

回答No.1

独特な機器で利用方法がわからない場合は、掲示板で質問を行うより、その機器を扱う販売代理店に問い合わせる方が、良いと思いますよ。 経験上、大抵の代理店はサンプルPGを用意しております。 それ以前に、私の場合機器選定の際、サンプルも資料も用意していない機器を選びません。 製品が海外製でも日本の代理店購入であれば、通常は代理店がいろいろ答えてくれます。 一度、問い合わせることをお勧めします。

Simanohito
質問者

お礼

ご回答ありがとうございます。 確かに代理店に問い合わせるのがいいですよね。 早速、代理店に問い合わせをしてみます。

関連するQ&A

  • GPIB制御

    このたびExcel VBAを使用し、プログラミングを作成することになりました。 プログラム内容は、Agilent様のPSA測定機器から測定結果をExcelに表示する。という内容です。 プログラミングはほぼ初心者です。 そこで質問です。 どの様な順序でプログラムを組んでいけばよいのか詳しい方、 いませんか? ちなみにGPIBインタフェースはNational Instruments様を使用です。 ノートPCからGPIBカードを使用する形で制御を考えています。 マニュアルはあるのですが、VB.netやC言語のサンプルが多いです。 VBAで作成するにはどの様な点を注意して読めばいいですか?

  • 排他制御について

    質問します。 VB.NETとSQLServer2000を使用して受発注処理を作成したいのですが、排他制御について今悩んでいます。 レコードロックの動作についてなのですが、Aさんが「A01」のデータをレコードロックでデータを画面に表示している場合に、Bさんも(別PCにて)同様にレコードロックで「A01」のデータを表示することは可能なのでしょうか?(取得できるのか) 何方かご教授お願い致します。

  • Visual Basicによる測定器の制御について

    質問させて頂きます。 GP-IBを通じてPCから測定器の制御を行えるように、 Visual Basicで制御プログラムを作っています。 測定器のマニュアルを参考にしながらプログラムを書いているのですが、 測定データの取得をどのように行えば良いのか分からず困っています。 マニュアルではHP BASICを使用する前提で書かれており、こちらについては知識がなく、またVBの方も初心者で、教本も初歩的なものしかなくどなたかアドバイス頂けたら幸いです。 測定器はAgilentの4192B(RFインピーダンス/マテリアルアナライザ)で、 VBは6.0を使用しています。 データはスカラデータですが複素形式で、 測定器内のデータが格納された配列からPCにデータを移す、という作業です。 マニュアルには次のように書かれています。 DIM DAT(1:201,1:2) OUTPUT @HP4291 ; "TRAC? DTR" ENTER @ HP4291 ; Dat(*) (1)複素データを読み出すためにNOP×2の配列を定義 (2)データトレース配列を問い合わせる (3)TRAC?により複素形式でスカラ・データが出力される 以上の作業をVBで行えるようにはどのようにしたらよろしいでしょうか。よろしくお願いいたします。

  • コイルのインダクタンス

    計測機器でインダクタンスを直接計測するか 周波数カウンタ-で周波数を計測して計算して インダクタンスを求める方法などでは どちらが真実の値に近づくことができる でしょうか。 宜しくお願いします。

  • 計測器の設定について(周波数)

    計測器の設定について(周波数) 計測器の周波数の設定方法についてご質問いたします。 現在、試験をするために計測器とデータロガーを接続しております。 周波数の設定として 計測器側が最大で2500Hz(400μs)まで設定できますのでこの周波数で計測したいと考えております。 ただ、データロガーの設定が計測間隔250μsと500μsしか設定できません。 この場合、計測器とデータロガーの計測間隔が違うとどういった問題が発生するでしょうか? 取得されたデータに問題はありますでしょうか?

  • DirectShowを使用したmp3再生プログラム

    DirectShowを使用してmp3を再生するプログラムで、 WindowsMediaPlayerにある視覚エフェクトのバーのようなモノを作ろうと考えています。 いろいろ調べた結果、周波数を表示している事は分かったのですが、 再生中のmp3の周波数を取得する方法が分からなくて困っています。 ご存知の方いらっしゃいましたらお教えください、 宜しくお願い致します。

  • 制御理論の周波数特性

    現在、温度制御のシステム同定をMATLABを使用して行っているのですが、ステップ応答で求まる系の時定数・ゲインが周波数応答で求まる系の時定数・ゲインと異なった値になってしまいます。(全く検討違いの値ではないですが、信頼性は薄いです) MATLABの周波数応答のゲインの値が信用できないので手計算しようと思っているのですが、参考書を見ても求め方が載っていません。というより理解できません。(入出力の振幅比とは違いますよね?) どなたか詳しい方いらっしゃいませんか?

  • ExcelのVBで音を鳴らしたい

    ExcelのVBを始めたばかりのものです。計測器をGPIBで接続して自動計測を行おうとしていますが、計測終了を知らせるため、音を鳴らそうと思っています。N88basicではBeepで簡単に音を鳴らせたのですが、ExcelのVBではBeepで音が鳴りません。音を出す方法をご教示ください。 PC Dell SX280 Excel XP OS XP Pro GPIB Agilent USB→GPIB VISA使用

  • RL回路の周波数特性について

    RL直列回路に交流電圧を流したときに、Rの抵抗値とLのインダクタンスは一定の状態で電圧の周波数だけ変えて、RとLの位相差や流れる電流の量について計測したのですが、流れる電流の値の理論値と、回路に直列につなげた電流計の指す値が大きく異なってしまいます。 オシロスコープでRとLのプローブ間電圧を計測したところ、電源周波数1kHzで Lの振幅は3.0Vに設定したところ、Rの振幅は1.6Vになりました。 R=220Ω L=50mH を使用したので、 I=Ee/(R^2 + (ωL)^2)^(1/2) で計算したところ、0.017285573 [A] という結果になったのですが、実際に計測した値は0.0005 [A] となり、どう考えてもおかしいので計測ミスかと思い始めてきました。 経験豊かな方のご意見いただければと思います。 よろしくお願いしますm(_ _)m

  • N88-dosBasicでのGP-IBについて

    N88-DOSBasicでGP-IBを使用しているプログラムが、データの取りこぼしをするために 調査することになりました。 HWが古いことも考えられるのですが、とりあえず調査しています。 このプログラムで、DOSのワークを操作しているのですが、その目的がわかりません。 どなたかご存知の方がおられましたら教えてください。 以下が該当メモリを操作している部分です。 SRQ OFF DEF SEG=&H60   <--MS-DOSのセグメントです。 A%=PEEK(&H9F3)  <--この内容の A%=A% AND &HBF POKE &H9F3,A%   <--bit6を0にしています。 SRQ OFF WBYTE &H3F,&H5E,&H20+DMM.W,&H4; FOR T=1 TO 100 : NEXT T PRINT @DMM.W;"S1,DO0,M1,IT3,ST0" FOR T=1 TO 100 : NEXT T WBYTE &H3F,&H5E,&H20+DMM.W,&H8; FOR I=1 TO 1000 :NEXT I INPUT@DMM.W;VW$ VW.VOL=VAL(VW$) PRINT@DMM.W;"CS" 以上、よろしくお願いします。

専門家に質問してみよう