このたび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. …
これはVB6のタイマー関数と同じように使えます。
健闘を祈ります。
解答ありがとうございます。
いくつか質問があるのですが、
まずGPIBカードを使用しリモート制御をかけたいのですが、
そちらに関しましてはどういったプログラムを組めばよろしいでしょうか
(2)に関しまして。
ドライバ等のインストールは個人ではインストールさせていただけない状況になっておりまして、ひとまずプログラムを先に組もうと思っているのですが、ドライバをインストールしてからのほうがよろしいでしょうか?
(3)に関しまして。
(1)*RSTや、*CLSににはどの様な意味合いがあるのですか?
(2)Dimで宣言するのはAgilentのみでよろしいのでしょうか。
アドレスなどの宣言も必要でしょうか?
(3)データを読み込んだあとは、どの様な処理でCellに表示させればよろしいでしょうか?
今のところは以上です、よろしくお願いいたします。
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インターフェースに対応しているわけではありませんので、もしこのツールを使用するつもりであれば、対応しているインターフェースを調べて、選定する必要があります。
しばらくこれず、お礼が遅れましてすみません。
>使用予定のNI製GPIBインターフェースはUSBやPCI Expressなどのインターフェース変換を行っているはずです
そうですね。PCMCIAのカードを使用しています。
会社で作成なのでフリーツールが使用できない状態ですのでeasyGPIBというツールは使用できない状態です。
解答ありがとうございました。
参考にさせていただきます。
No.2
- 回答日時:
理念が高いのはよいことですが、通信というのは相手があるものであり、その相手が用意している手順に従って通信するようにソフトを作らなければダメです。
とにかく、まずは測定機器の説明書を良く読んで、通信手順を完全に理解してください。そこをちゃんと押さえておかないと、ソフト制作はできません。質問者さんが頑張って高度なハンドシェークを実装したのに、肝心の測定機器が用意している手順が垂れ流しだけだったら、これはシャレになりませんよね。GPIB制御の専用のVBA言語というのは存在しませんが、VBAでGPIBを簡単に利用できるようにするActiveXコントロールだったらあるでしょう。ただそれは、GPIBインターフェースの製品次第(そのメーカーが用意するもの)ですから、それは何とも言えません。APIだけ提供するから、後は何とかしてねって言う可能性もありますし。そもそもVBAっていうのは、ExcelやWordを制御するものであり、それにGPIB専用機能を求めることは本来なら筋違いでしょう。
No.1
- 回答日時:
基本的に通信系の話になると思います。
なので、プログラムする上で次の二点は必須事項でしょう。これは、測定機器の説明書に書かれているはずなので、そちらをよく確認してください。1)測定機器とのやりとりにはどういうコマンドを使うか
2)ハンドシェークが必要か
ハンドシェークというのは、データをやりとりする時の手順みたいなものです。いきなりデータを投げて後は知らん顔、という無責任な方法(俗に言う垂れ流し)もありますが、そうではなくて、「これからデータを送りたいが準備は良いか」と相手に尋ね、「準備OK」という返事をもらってから送るような方法がハンドシェークです。これも厳密なやり方だけではなく、いきなりデータを投げつけるが、相手からエラー応答が返ってきたら再送する、という簡易な方法もあります。どういうやり方でデータを授受するのか、それがわからないとソフトは組めないので、ここの確認は重要です。
VBAから制御する場合は、ドライバが用意しているAPIを呼び出すか、ActiveXコントロールが提供されているなら、それをフォームに貼り付けることになります。これに関しては、ネットにもいろいろ情報が落ちていますし、あるいは参考書もたくさんあるので、それで調べた方が良いでしょう。実際に使っているところを見た方が解りやすいはずです。
ActiveXをVBAから使う例の解説
http://www.sigoto.co.jp/excel/activex/actmenu01. …
APIの場合
http://www.ne.jp/asahi/hishidama/home/tech/excel …
回答ありがとうございます。
出来るならばハンドシェーク法でプログラミングを組みたいです。
こちらにするとやはり難しくなるのでしょうか?
GPIB制御の専用のVBA言語とかってあるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
エクセル VBA でのCOMポート認識
その他(プログラミング・Web制作)
-
VBAを使用して、USBでつないだ機器の制御が出来るでしょうか?
Access(アクセス)
-
Imageコントロールにグラフを表示させるには
Visual Basic(VBA)
-
-
4
Visual BasicでGP-IBの通信を制御したいのですが
Visual Basic(VBA)
-
5
VBでUSB制御プログラム作成する方法
Visual Basic(VBA)
-
6
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
7
Windows10におけるUSB-RS232C機器との接続について
ドライブ・ストレージ
-
8
DoEventsがやはり分からない
Visual Basic(VBA)
-
9
GPIB ソフトウェア・シミュレータについて
工学
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイルでUSB挿入時に実行
-
アプリのプログラムを見るには...
-
Bluestacks内でダウンロードし...
-
マルチTIFを一枚のTIFに...
-
Socket通信だけでSQL Serverに...
-
起動中のプログラムを他のプロ...
-
iTunesがノートンにブロックさ...
-
GPIB制御
-
あるフリーゲームをプレイ中に...
-
間違えてsoundMAXを消しちゃっ...
-
BIOS.binをバイナリエディタで...
-
Schedule Watcherを壁紙にしたい
-
PICで豆の1秒あたりのカウ...
-
使えないラベルマイティ6
-
プログラミング作業の実際
-
PIC16F84と16F84Aの違い
-
あるプログラムのコマンドライ...
-
正しい五十音順について
-
65536は2の何乗なのでしょうか?
-
変数の値が勝手に変化する原因
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Bluestacks内でダウンロードし...
-
バッチファイルでUSB挿入時に実行
-
アプリのプログラムを見るには...
-
GPIB制御
-
インテル マネジメント エンジ...
-
iTunesがノートンにブロックさ...
-
brotherのマシニングセンタとP...
-
例外アプリケーションエラーを...
-
自分の声が遅れて聞こえてくる...
-
マルチTIFを一枚のTIFに...
-
BIOSとドライバの違い。
-
Socket通信だけでSQL Serverに...
-
InstallShield ってプログラム...
-
マルチコアCPUをシングル化
-
MpcStarのアンインストール
-
みつも郎でエラーが出るのですが…
-
「フラグをたてる」とは?
-
BIOS.binをバイナリエディタで...
-
PVを稼ぐための自動リロードの...
-
cgiをひらくアプリケーション
おすすめ情報