GW Instruments(IOTech)製のGPIBインターフェースを用いて、Macと計測器を接続しデータを転送する方法を紹介する。東陽テクニカが代理店になっていたが、現在Mac用のインターフェースは製造中止になってしまった。それでも、購入して所有している人もいるはずなので、そういう方々にとって少しでも参考になることを願って、IgorProからインターフェースを使う方法について説明する。
GW InstrumentsのMacADIOS488sまたはIOTechのMacSCSI488の使い方についての説明である。
製品を購入すると、ドライバとサンプルプログラムがついてくる。ドライバは、MacSCSI488またはMacADIOS488という名前で、付属のインストールガイドに従って、機能拡張フォルダに入れておき、Macをリスタートしてからセレクタで選んで行う。
スーパースコープなどの計測ソフトウェアを使わない場合は、何らかのプログラム言語で計測プログラムを作ることになるが、マニュアルを見ると、以下の言語に対応しているようである。
最初に開発されたときには上記の言語が入手できたらしいが、今ではあまり一般的ではない。現在広く使われている開発環境、例えばCodeWarriorでは、MPW CまたはMPW Pascal用のものを修正すれば使用可能である。私は普段C/C++を使っているので、MPW C用のものを一部書き換えて使っている。
付属のフロッピーディスクのCフォルダの中のMPW Cフォルダに、IeeeIO.cとIeeeIO.hがある。これが、Cプログラムからドライバを呼ぶためのインターフェースである。この他にサンプルプログラムとmakeファイルが付属しており、マニュアルの例のように測定器にコマンドを送ってデータをとるプログラムをCで書いて、このIeeeIO.cとともにコンパイル&リンクすると、測定プログラムができる。
測定のたびにCでプログラムを書くのは面倒だしとっつきにくい。また、データをグラフに出しながら計測するようなプログラムをCで書くとなるとそれなりの手間がかかる。そこで、ドライバ呼び出しの関数がIeeeIO.cとして提供されているので、各関数にそれぞれIgorProの命令や関数を割り当てて、IgorProとやりとりする部分をかぶせて、IgprProのプロシージャから使えるようにすることを考えた。
まず、付属のIeeeIO.cとIeeeIO.hはそのままではコンパイラを通らないので、関数のプロトタイプ宣言を書き換えた。また、c++コンパイラを使うことも考えて、関数宣言はextern "C"でC言語の形式になるようにし、ファイル名をIeeeIO.cpに変更した。元のプログラムは、エラーが起きたときにダイアログを使ってメッセージを表示するようにすでに私は書き換えていた(TDRのプログラムのために)が、IgorProのXOPでは、単にALRTリソースで定義したダイアログを出すという手が使えないので、その部分はコメントにしてある。具体的にどう書き換えたかは、ソースもすべて公開しているのでダウンロードして見ていただきたい。なお、サンプルプログラムはの実行時には、ドライバ側のデリミタの設定はCR+LFにしている。
ところがMacのプログラムをつくるのは結構敷居が高い。DOSの場合なら、GPIBを初期化し、しかるべきコマンドを測定器に送ってデータを読み込み、ファイルにセーブするというのが素人でも比較的簡単にできた。測定結果やそのグラフを画面に表示することもそんなに難しくはなかった。しかしMacでこれをやろうとすると、ToolBoxの初期化から始めることになる。グラフや結果を出力するには、自分でウィンドウを開いてそこに表示させなければならない。ファイルへの書き込みも、数行ですむという訳にはいかない。常にキーボードやマウスの動きを監視し、入力があったときには適切に反応しなければならない。測定をしてデータを得ることが仕事なのに、プログラムの作製に半年や1年もかかったのではどうしようもない。
プログラムを自分で1から書くかわりに、Macのシステムを意識しなくても簡単に計測システムをつくるためのソフトウェアを利用すれば作業が楽になる。そのようなソフトウェアを使うと、グラフやボタンを画面を見ながら(絵を描くような操作で)配置できて、メニュー画面で形や色などを決めて、測定器固有のコマンドや測定のループ回数などの制御方法を簡単なスクリプトで書き込むだけで計測システムをつくることができる。しかし、この種のソフトウェアは高価である。例えばSuperScope II(GW用)という、デジタルマルチメータからのデータをチャートの形で出力したり、オシロスコープのように表示したりするソフトは30万円ほどする。また、LabView(NI用)は、基本機能だけなら20数万円だが、オプションをいろいろ付け足すと70万円にもなった。開発費を出してくれる企業ならいざ知らず、これでは一般の大学の研究室で購入するには高すぎる。特に後者は仕様が膨大であり、購入するとNIが講習会をしてくれるが、その値段もけっこうかかる。まあ、強力なだけあって工場のFAのシステムの監視も可能であるが、それだけのものを使ってデジタルマルチメータを2,3台や、オシロスコープをコントロールするだけというのははっきり言ってもったいない。ふつうの研究室にとってはオーバースペックだろう。
注意:この文書を書いたのは1996年で、そのころはLabViewが高かった。最近は学生版の安いのが出てきて手が出しやすくなっている。また、1ユーザとして手軽に計測できるシステムを作ってMacADIOS488s(やMacSCSI488)という製品を支えていこうと思っていたのに製造中止になってちょっと寂しい。
そこで、CやPascalを知らなくても、安価に手軽に計測システムをつくるための仕組みを、IgorProというデータ解析&グラフ作製ソフトの上で実現した。
IgorProは、内部にスクリプト言語を内蔵しているが、その仕様は単純で修得しやすい。スクリプト言語の世界でGPIBを使用すれば、グラフの表示やデータの処理はIgorProの強力な環境をそのまま利用することができる。
このXOPのユーザは、うんとお金の出せる人、プログラムは得意中の得意だという人は、高価なソフトを買うなり自分で最初からつくるなり好きなようにしてください。
でも、そういう人でもグラフソフトを自力で書くという人は(特にMacユーザでは)少ないでしょうから、グラフを書くという目的だけであってもIgorProの使用をおすすめします。
ADVANTESTのR6451シリーズデジタルマルチメータをコントロールした例を以下に示す。直流電圧を20VレンジでサンプリングレートをMIDで測定(BASICの例では170行で設定)し、その測定データを読み込んで画面に表示する。
マニュアルに記載されているN88-BASICの場合、以下のようになる:
100 DMM=8 'R6451のアドレスは8
110 '
120 ISET IFC 'インタフェースクリア
130 ISET REN 'リモートイネーブル
140 CMD DELIM=0 'デリミタをCR+LFにする
150'
160 PRINT @DMM;"Z" 'R6451のパラメータの初期化
170 PRINT @DMM;"F1,R5,PR2"
180 INPUT @DMM;A$ '測定データを読み込む
190 PRINT A$ 'データの表示
200 GOTO 180 '180行から繰り返し
210'
220 END
これを、IgorProのスクリプトで書くと以下のようになる。ProcedureウィンドウでMacroとして処理を記述する。Macroの作成と実行方法はIgorProのマニュアルを参照してほしい。
Macro test()
String readbuf //データの読み込み領域
Variable ret // 実行したコマンドの長さを受ける
ret = GW488Init()
ret = GW488SRSet()
ret = GW488Write("clear")
ret = GW488Write("remote")
ret = GW488Write("remote 08")
ret = GW488Write("output 08;Z")
ret = GW488Write("output 08;F1,R5,PR2")
do
ret = GW488Write("enter 08")
readbuf = GW488Read_(128)
print readbuf
while(1)
End
GW488で始まる関数はMacADIOSXOPによって追加されたもので、もとのIgorProにこの機能はない。すべて関数なので、呼ぶ際には戻り値を受ける必要があり、この例ではretという名前の変数を準備し代入している。IeeeIO.cp 修正済みの関数ファイル IeeeIO.h MacAdiosXOP Help&Refs(J) リファレンスマニュアル MacADIOSXOP PPC MacADIOSXOP本体。 MacAdiosXOP PPC.prj プロジェクトファイル MacAdiosXOP PPC.prj Data CW Settings.stm MacAdiosXOP PPC.tdm MacADIOSXOP ppc.rsrc MacADIOSXOP user's guide(J) ユーザーズガイド MacADIOSXOP.cp MacADIOSXOPのソース MacADIOSXOP.h memo 作者(私)の覚え書き test 測定プログラム例。IgorProのプロシージャとexperimentファイル。 SRQ test SRQ test2 test measurment test proc2 test54121T testQCA testQCA1 testQCA2
MacADIOSXOPを再コンパイルするには、CodeWarriorProとIgor XOP Toolkitが必要です。
MacADIOSXOP PPCをIgorProフォルダのIgor Extensionsフォルダに入れると、GW488で始まる計測関係の関数が使えるようになります。