• 締切済み

GPIB制御

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

みんなの回答

回答No.5

ExcelのVBAを使ったGPIB制御に関しては最初の回答が全てです。 このあたりは情報が無く試行錯誤で得られるノウハウです。 これ以降の開発情報は有り余るほど公開されているので自力で行ってください。 プログラムはVB6で記述することになります。 Excelへの表示はVBAを使います。 ExcelのVBAはVB6+VBAなので入門編としてはタフです。 これらに関して数冊本を購入して熟読してください。 *RSTや*CLSは計測器固有の命令ですのでマニュアルを読んでください。 計測器のマニュアルも必須です。 また、計測システム開発はいくら習熟しても本体無しでは何も進みません。 GPIBで接続できてから、remoteになるか、resetできるかと一歩一歩コミュニケーションを確立しながら計測器を制御していくものです。 先ず本体を入手することを優先してください。 この技術は習熟すれば食っていけます。 そのためにはプログラミング言語を習得し、自分のスタイルを確立し、忘れないように定期的にプログラムを書き続けることが必要です。 計測器は、メーカーや命令は気にしないでその測定ぼ本質を理解すること。 きつい分、あなたの付加価値を高めます。 頑張ってください。

回答No.4

この種のシステム開発の経験者です。 以下はNI社のGPIB-USBを使ってExcelのVBAからGPIB機器を制御する場合の手順です。 (1)先ず付属のCD-ROMからGPIB-USBのドライバをdefault設定でinstallします。移植性を考えて常にdefault設定にしときます。 これでGPIB-USBをUSBに差し込むと自動認識されるようになりWindowsからGPIBが制御可能となります。 (2)ExceのVBAに標準モジュール、即ち、どこからでも呼び出せるサブルーチンとしてGPIB制御関数を組み込みます。 NI社のVB用の関数は、CD-ROMをdefaultで導入すると、 C:\Program Files\National Instruments\NI-488.2\Languages\Visual Basic にVB用関数が入るので、この関数を以下のように読み込みます。 Excelを起動後、ツール->マクロ->VisualBasicEditor でVBEditorを開く VBEditorで、ファイル->ファイルのインポート から上記のNationalInsturumentのFolderから NIGLOBAL VBIB32 の2つをインポートします。これらはVBAProjectの標準モジュールに入ります。 これでGPIBの命令が使用可能になります。 (3) VBAでプログラムを作成します。 VBAはVB6のサブセットです。Form1上にCommand1ボタンを配置した状態だと以下の 以下はコマンドボタンに命令を詰め込んだ例です。 Private Sub CommandButton1_Click() '計測器の認識 Agilent = ildev(0, 11, 0, T2s, 1, &H140A) 'AgilentのGPIBアドレスを11としてます '初期化 wtbuf$ = "*RST": ilwrt Agilent, wtbuf$, Len(wtbuf$) wtbuf$ = "*CLS": ilwrt Agilent, wtbuf$, Len(wtbuf$) というように命令を送ります 上記の形式でデータ転送命令を送って計測器からデータを読み込む場合は rdbuf$ = Space(100): ilrd Agilent, rdbuf$, 100 でrdbuf$に文字列として読み込めます。 計測器の認識は1回実行すればよいのでVB6だとForm1_Loadに設定してますが、ExcelのVBAのFormにはLoadが無いので、計測器認識を行うボタンと測定ボタンを分けたほうが良いでしょう。 ちなみに、この例でのはGPIBの番号を格納したローカル変数で、このサブルーチンのみ有効です。ボタンで認識と測定を分ける場合、グローバル変数にしておいてください。 この場合、プログラムの先頭、サブルーチンの外に Dim Agilent As Integer と記述すると、認識ボタンで変数Agilentにカード番号が書き込まれ測定ボタンのGPIB制御命令で使えます。 読み込んだ文字列はheaderのような余分な情報が添付されているので必要な情報のみtrimやmid関数で切り出します。 これをファイルに書き込むか、ExcelのCellに表示することになります。この辺は市販本にも多く記述されているので自分で苦労してください。 (4)計測器の制御ではタイマーがないと不便なので以下からフリーのタイマーのactivexを組み込めます。 http://kasayan86.hp.infoseek.co.jp/html/activex.htm これはVB6のタイマー関数と同じように使えます。 健闘を祈ります。

0125hazuki
質問者

お礼

解答ありがとうございます。 いくつか質問があるのですが、 まずGPIBカードを使用しリモート制御をかけたいのですが、 そちらに関しましてはどういったプログラムを組めばよろしいでしょうか (2)に関しまして。 ドライバ等のインストールは個人ではインストールさせていただけない状況になっておりまして、ひとまずプログラムを先に組もうと思っているのですが、ドライバをインストールしてからのほうがよろしいでしょうか? (3)に関しまして。 (1)*RSTや、*CLSににはどの様な意味合いがあるのですか? (2)Dimで宣言するのはAgilentのみでよろしいのでしょうか。 アドレスなどの宣言も必要でしょうか? (3)データを読み込んだあとは、どの様な処理でCellに表示させればよろしいでしょうか? 今のところは以上です、よろしくお願いいたします。

  • BORREL
  • ベストアンサー率0% (0/0)
回答No.3

PCにはGPIBインターフェースが搭載されていませんので、使用予定のNI製GPIBインターフェースはUSBやPCI Expressなどのインターフェース変換を行っているはずです。 上記の場合は必ずメーカからドライバとAPIが提供されます。ActiveXやDLLファイルで提供されていれば、VBAなどの言語に関係なく、APIを呼び出してGPIBを制御できるはずです。 おそらく、ハンドシェーク等の低水準部分は覆い隠されたAPIになっているはずで、「送信」、「受信」などの関数を呼び出すだけでGPIB通信処理ができるのではないでしょうか? 構築手順は、 ・メーカが提供するAPIを理解する。 ・GPIBの基本的な事項(アドレスやデリミタなど)を理解する。 ・制御対象機器の制御方法(取説にコマンド等の説明があります)を理解する。 ・(VBAなどで)プログラム となると思います。 上記と異なり、easyGPIBというVBAでの制御を目的としたフリーのツールもあります。Webで検索すると、ダウンロードや使用方法がわかると思います。 知人の話では、これが一番簡単な方式となるそうです。ただし、easyGPIBはすべてのGPIBインターフェースに対応しているわけではありませんので、もしこのツールを使用するつもりであれば、対応しているインターフェースを調べて、選定する必要があります。

0125hazuki
質問者

お礼

しばらくこれず、お礼が遅れましてすみません。 >使用予定のNI製GPIBインターフェースはUSBやPCI Expressなどのインターフェース変換を行っているはずです そうですね。PCMCIAのカードを使用しています。 会社で作成なのでフリーツールが使用できない状態ですのでeasyGPIBというツールは使用できない状態です。 解答ありがとうございました。 参考にさせていただきます。

noname#194317
noname#194317
回答No.2

理念が高いのはよいことですが、通信というのは相手があるものであり、その相手が用意している手順に従って通信するようにソフトを作らなければダメです。とにかく、まずは測定機器の説明書を良く読んで、通信手順を完全に理解してください。そこをちゃんと押さえておかないと、ソフト制作はできません。質問者さんが頑張って高度なハンドシェークを実装したのに、肝心の測定機器が用意している手順が垂れ流しだけだったら、これはシャレになりませんよね。 GPIB制御の専用のVBA言語というのは存在しませんが、VBAでGPIBを簡単に利用できるようにするActiveXコントロールだったらあるでしょう。ただそれは、GPIBインターフェースの製品次第(そのメーカーが用意するもの)ですから、それは何とも言えません。APIだけ提供するから、後は何とかしてねって言う可能性もありますし。そもそもVBAっていうのは、ExcelやWordを制御するものであり、それにGPIB専用機能を求めることは本来なら筋違いでしょう。

noname#194317
noname#194317
回答No.1

基本的に通信系の話になると思います。なので、プログラムする上で次の二点は必須事項でしょう。これは、測定機器の説明書に書かれているはずなので、そちらをよく確認してください。 1)測定機器とのやりとりにはどういうコマンドを使うか 2)ハンドシェークが必要か ハンドシェークというのは、データをやりとりする時の手順みたいなものです。いきなりデータを投げて後は知らん顔、という無責任な方法(俗に言う垂れ流し)もありますが、そうではなくて、「これからデータを送りたいが準備は良いか」と相手に尋ね、「準備OK」という返事をもらってから送るような方法がハンドシェークです。これも厳密なやり方だけではなく、いきなりデータを投げつけるが、相手からエラー応答が返ってきたら再送する、という簡易な方法もあります。どういうやり方でデータを授受するのか、それがわからないとソフトは組めないので、ここの確認は重要です。 VBAから制御する場合は、ドライバが用意しているAPIを呼び出すか、ActiveXコントロールが提供されているなら、それをフォームに貼り付けることになります。これに関しては、ネットにもいろいろ情報が落ちていますし、あるいは参考書もたくさんあるので、それで調べた方が良いでしょう。実際に使っているところを見た方が解りやすいはずです。 ActiveXをVBAから使う例の解説 http://www.sigoto.co.jp/excel/activex/actmenu01.htm APIの場合 http://www.ne.jp/asahi/hishidama/home/tech/excel/dll.html

0125hazuki
質問者

お礼

回答ありがとうございます。 出来るならばハンドシェーク法でプログラミングを組みたいです。 こちらにするとやはり難しくなるのでしょうか? GPIB制御の専用のVBA言語とかってあるのでしょうか?

関連するQ&A

  • 測定機器の制御

    VBA初心者です。 会社の方で測定機器を使用しております。 ExcelのVBAで測定機器にGPIBケーブルを仕様し、測定開始、測定結果表示、測定終了という制御コマンドを作ろうと思っているのですが、可能ですか? 仕様する機器はAgilentのスペクトラムアナライザーシリーズです。 もしプログラミング知識がある方がいれば詳しく教えてもらえませんか? プログラム例や詳しい本などあれば教えてもらいたいです。

  • Visual C++をつかったGPIBのプログラム

    GPIB初心者です。プログラムもあまり詳しくありません。 Visual C++をつかって、Agilentのスキャナ(34970A)をGPIBで測定制御したいと思っています(用途:温度測定)。以下、私の環境です。 ・OS: Windows XP Professional version Service Pack 2002 ・開発環境: Visual C++ ・GPIBハードウェア: PCMCIA-GPIB (National Instrument, NI488.2) ・測定機器: スキャナ(Agilent、34970A) ・組みたいプログラム:温度測定 中身; 「数十秒間隔で電圧を読み込む」→「電圧値を変換式に代入し、温度に変換」→「グラフ化」 電圧を読み込めるとこまでいければ後は問題ないのですが、いたっていません。どうすればGPIBの信号を読み書きできるでしょうか。できれば高いソフトなどは購入せず、済ませたいと思っています。 質問がまとまっておらず、すみません。何かヒントをいただけたら助かります。 *1;GPIBカードのドライバはインストールできたと思います *2;AgilentのBenchlink Data logger 3というフリーソフトを使って、34970Aの電圧を数十秒間隔で読み込む、ということはできました。電圧を複雑な変換式に代入し別の値で出力する、という機能は提供されていませんでした。

  • GPIB制御

    計測器を購入しGPIB制御をしようとしてます。 予備知識がありません。既に出来上がった測定系を使用し測定したことがある程度です。今回は1から自力でする必要があります。メーカがGPIB用のコマンドを用意してる事を知っている程度です。 1.必要なハード パソコン、GPIBカード、GPIBケーブル この程度と思ってますが、これでいいですか? 2.ソフト 何を用意すればいいでしょうか?VisualBasicですか?使ったことはありません。 3.勉強方法 ここが一番問題です。GPIBは書籍を探してもなかなかありません。ホームページではなく出来ればまとまった書籍がありがたいのですが。。。何か無いでしょうか?

  • GBIBの制御を勉強したいのですが。

     今まではPC-9801でBASICでGPIB制御をして、抵抗値・電圧を測定していましたが、今プログラムを作成できる人がいなくなってしまいこれからプログラムを勉強しようと思います。  BASICも書いたことがないので不安なのですが、WINDOWS上で動くVBで作成しようと思います。 EXCELのVBAでも制御できるみたいですが、VBAだと時間がかかるみたいです。  プログラムを勉強するには、VBAから入ってVBに以降したほうで宜しいのでしょうか?またGPIBの制御に関する本やサイトなども探しております。  これから短期でプログラムを覚える方法を教示願います。

  • GPIBとPCIインターフェイスについて

    装置の周辺機器の制御のために装置間のインターフェイスを作成しなければなりません。 自作装置はPCI、市販装置はGPIBで制御するのですが、 PCIとGPIB自体よくわかっていません。 インターフェイス・PCI・GPIBについて、どのようなものか、またどのように考えて理解したらよいかなど、教えていただけないでしょうか? 素人なもので質問が至らないかもしれませんが、よろしくお願いいたします。

  • VMwareで、GPIBは使えますか?

    はじめまして、宜しくお願い致します。 VMwareを、購入しWindows3.1を入れてVB2で GPIBを使って測定器のコントロールを使用と考えているのですが、VMwareでGPIBの制御は可能なのでしょうか? もし、ご存じの方がいらっしゃいましたら 教えて頂けるでしょうか。 何卒、宜しくお願い致します。

  • GPIBの導入について

    こんにちははじめまして。 電源、パルジェネ、オシロなどをGPIBでつなげて自動測定してみたいなと思ってます。 まったくの無知なのですが、質問させてくださいませ。 (1)まず、開発言語は何がよろしいのでしょうか? 電源などの説明書にはVBAが使われていまして、中身は理解することができます。 説明書がVBAになっていますので、VBAにしようかなとは思ってます。 (2)仮にVBAでいじるとして、何か簡単な本などはありますでしょうか。 たとえば、最初は電圧印加電流測定とか簡単なものから始めるようなものでいいです。 もし参考書などご存知の方がいらっしゃいましたら教えていただければ幸いです。 (3)たとえば抵抗と半導体リレーをいくつか配置して、そのリレーをGPIBから制御することなどは可能なのでしょうか? (外付け回路の自作なども含めて) みなさまのご回答お待ちしております。 どうかよろしくお願いいたします。

  • gpibの仕様の入手方法

    gpibの仕様を管理している組織はどこなのでしょうか?。 また、仕様書は入手できますか? 測定系のプログラムをVBAで構築しようと思っていますが、 通信方式(同期タイミング、伝送レート)がわからず困っています。

  • N88basicを用いたGPIB制御

    はじめまして。 GPIB,N88basic共に初心者なのですが、N88basicでGPIBを通し デジマルのデータをpcに読み込むプログラムを作ることになりました。 OSはwindows95です。 デジマルの業者からN88basicのサンプルプログラムを送って頂き、 その内容は理解できました。 しかし、このプログラムでは制御ができるか疑問です。 GPIBボードの番号、DLLの呼び出し等に触れていないからです。 N88 basicでは、ボードのDLLを呼び出さなくてもいいのでしょうか。 visual basic,F-basicについては調べてわかったのですが、 N88basicだけはどうしてもわかりませんでした。 どなたか詳しい方いらっしゃいましたら、どうか教えていただけないでしょうか。 ちなみに、サンプルプログラムは下記のものです。 10 DMM=1 'TR6847 GP-IB address 20 ' 30 CMD DELIM=0 'delimiter CR+LF 40 ISET IFC 'interface clear 50 ISET REN 'remote enable 60 ' 70 PRINT @DMM;"Z" 'TR6847 initialize 80 FOR W=0 TO 1000 : NEXT 'time wait 90 ' 100 PRINT @DMM;"F2" 'function.........VAC 110 PRINT @DMM;"R3" 'range............300mV 120 PRINT @DMM;"M1" 'sampling mode....HOLD 130 ' 140 FOR N=1 TO 10 150 PRINT @DMM;"E" 'measuring start 160 INPUT @DMM;DA$ 'data read 170 PRINT DA$ 180 NEXT N 190 ' 200 PRINT @DMM;"M0" 'sampling mode....FREE RUN 210 ' 220 END お手間をおかけ致しますが、どうかお願いいたします。

  • ナショナルインスツルメンツ製GP-IBについて

    GP-IBインタフェースによる計測器の制御とデータ収集を考えております。 VisualBasic6.0で制御の予定です。 パソコンに取り付けるインタフェースは計測器メーカー推奨であるナショナルインスツルメンツ製から選び、GPIB-USB-Bを使用予定です。 しかし、ナショナルインスツルメンツは他のGP-IBインタフェースメーカー(?インタフェース)などと比べると、ホームページが複雑で分かりづらかったり、開発用の手順書がダウンロードできないなど初心者向けではないように思います。 製品を購入すれば初心者向けの手順書などもついてくるのでしょうか。 ナショナルインスツルメンツ製GP-IBインタフェースボードとVisualBasic6.0を使って制御をされた方がおりましたら感想を教えて下さい。