VME モジュールの制御
物構研

中性子

佐藤節夫

概要
中性子科学研究施設の実験のデータ処理は VME モジュールで行なっている。
主なサポートはマッキントッシュだけであるが、Windows や、PC linux からも使用できる。制御ソフトにはナショナルインスルメンツ社の LabVIEW を使用する。制御プログラムを変更することなく、コンピュータ、入出力機器の変更が容易である。
開発に至った経緯、開発した SCSI-VME モジュール、現在使用できるコンピュータ等を述べる。
開発に至った経緯
中性子散乱実験の測定器を開発してきているが、測定器を作るに当たり、どのようにしてコンピュータにデータを読み出させるかが悩みの種である。どのシステムを使用するかで、測定器の作り方も変わってくる。
入所当初、ビン電源を使用し、フラットケーブルをデータバスとしてモジュール間をつなぎ、制御を GPIB で、データをデジタル I/O 入出力端子に、フラットケーブルでつなぐシステムを、NEC の PC8000 シリーズで作製した。これでほぼ完全に閉じたシステムで、テスト実験に使った。転送方式を勝手に決めることができ、自在に設計できたが、発展性がなかった。
次に、高エネルギー実験で使用される、CAMAC システムで測定器を開発した。
CAMAC 規格に準じて入出力を考えればよいので、測定器が作りやすくなった。
コンピュータに NEC の PC9800 シリーズを使用し、入出力スロットを使用した、CAMAC 制御モジュールを開発した。プリント基板を起こすことにより、大量に作ることができるようになった。しかし、CAMAC 規格が世の中の流れから取り残され、高価で、低速で、信頼性の小さなシステムであったので、変更を余儀なくされた。
次に、世の中に出回り、比較的使われだした、 VME システムを採用することにした。初めは普通の使われ方通りに、VME 電源クレート内に CPU モジュー
ルを準備し、開発した測定モジュールを制御した。しかし、パーソナルコンピ
ュータが高性能化し、それでいて低価格になる中、古い設計のまま、高価で進展が遅かった。使える OS も OS9 程度で、当時としても遅れていた。UNIX と同じような使い勝手で、慣れれば便利であったが、 C 言語ぐらいしか使えなかった。しかし高価で、モジュールが 30〜50 万円もし、C 言語も 30〜50 万円もした。
そこで、SCSI-VME モジュールを開発した。世間一般にありそうであったが、探し出せなかったし、機能を限定すれば簡単に自作できることがわかった。当初のころの規格からずいぶん進化してきて、コンピュータが変わるたびにプログラムの変更を余儀なくされているが、何とか使えている。CPU モジュールがいらなくなり、変換モジュールも 5 万円程度で作れてしまうので、重宝している。現在の実験グループ全てで使用している。
SCSI-VME モジュール
プリント基板を今までに２回起こしている。初めのものは 1992 年ごろで、今はほとんど使用していない。ゲートアレイを直接 SCSI バスにつないでしまい、電源が切れるとコンピュータをハングアップしてしまうので、作り変えた。二番目のものは 1994 年ごろに開発した。入出力を、TTL を介して行い、ハングアップしないようにした。コンピュータの OS が変わる度に、使えなくなることが多く、幾度かゲートアレイのプログラムを変えてきた。ゲートアレイ自体も製造中止で、ピン配置が同じの最新型になった。
高速転送の要求が高まり、高速な SCSI-VME モジュールの開発も行なった。まだ、ちゃんとしたプリント基板を起こしていないが、PSD2K 基板に追加基板を付け加えるだけでできた。それまでのものが、1MB/sec 程度であったが、12MB/secに向上した。PSD2K モジュールを使用した場合、8MB/sec が得られている。SCSI3
規格で、同期転送モードを使用する。最大で 20MB/sec までの転送が可能である。
USB-SCSI 変換アダプタ
マッキントッシュが G3 や iMac に変わった時から、SCSI が標準装備でなくなり、SCSI-VME モジュールが使えなくなる事態が生じた。そのために、標準装備された USB-SCSI 変換アダプタを開発した。後で PCI ボードや PC カードで対処できることがわかったが、USB-SCSI 変換アダプタは便利でもある。PC linuxのデバイスドライバの研修で、ロジテック社の変換アダプタ（ LUB-SC）も使用できることがわかった。現在、マッキントッシュと PC linux で使用できる。
Windows のプログラムも開発しているが、大きなメモリでシステムがダウンすることがあるので、メモリリーク等、不具合があるようである。あまり需要がないので、それ以上のプログラム開発は進んでいない。
Ethernet-SCSI 変換アダプタ
SCSI-VME モジュールがネットワークを介して使用できるように Ethernet-SCSI変換アダプタを開発した。UDP/IP で、10B-T を使用していて、50KB/sec 程度のスピードしか出ていないが、遠隔で測定したい場合に有効である。実際の測定では、使ったことがないが、いろいろな方法を準備しておくことは無駄ではない。これの変更版で、Ethernet-GPIB 変換アダプタも作っているが、こちらは２〜３台、使用されている。
使用できるコンピュータ
中性子実験はマッキントッシュを使用して行なっているが、Windows、PC linuxでも使用できる。LabVIEW ソフトを備えていて、入出力サブルーチン、SCSIrwn.viの名前で、SCSI-VME モジュールが制御できるようにしてあれば、何でも使用できる。
マッキントッシュでのドライバ開発
G3 以前のマッキントッシュでは、システムで準備している TOOL BOX 関数群を使用して制御している。標準装備してある SCSI が直接、これらの関数から使用できる。SCSI 自体は古く、非同期転送しかサポートされていないので、4.5MB/sec 程度が限界である。
G4 以降のマッキントッシュでは PCI-SCSI ボードを使用するか、USB-SCSI 変換アダプタを使用して行なう。しかし、MacOS-X では、まだ、どれも使用できていない。PCI-SCSI ボードを使用する場合、1999 年ごろダウンロードした開発キットではメーカと機種により、動作するものと、しないものがある。今のところ、ロジテック社のものが使用できている。開発キットを元に、DLL 共有プログラムをコードウォーリア C 言語コンパイラで開発した。同期転送が使え、さらに何枚か同時に使用できるので、高速化が必要な場合有効である。ノートパソコンの PC カードでも使用でき、重宝している。

USB-SCSI 変換アダプタ用のドライバは、開発したものについては、使用できる。ロジテック社のものについては、動作確認をしているが、時間がないのと、需要がないので、完成させていない。アップル社の開発キットをダウンロードして、これを元に、DLL 共有プログラムをコードウォーリア C 言語コンパイラで開発した。
Windows でのドライバ開発
Windows での使用は PCI-SCSI ボードか PC カードであるが、メーカのドライバをインストールさえすれば、どのメーカでも使用できる。しかし、バージョン等の違いにより、苦労することも多い。検出器開発等のテスト実験などで、安価で場所と取らないノートパソコンを使用することが多いので、需要は多い。
ASPI 関数を使用し、Visual C++を使用して DLL 共有プログラムを作成している。
PC linux でのドライバ開発
PC linux では、バージョン 2.5 程度までは数社の PCI-SCSI ボードと adaptec 社の PC カードしか使用できていない。しかし、設定さえできてしまえば比較的簡単なドライバで使用できる。
USB-SCSI アダプタは研修でも行なったように、開発したものも、ロジテック社のものも同様に使用できる。データ量が多い場合はロジテック社のものの方が高速転送できる。雑誌に載っていたドライバを元に開発を行なっている。