CCPLは,会話型データ解析・表示ソフトウェアのPV-WAVEおよびIDL上で利用可能なCAMAC制御プロシージャ・ライブラリです.CCPLを利用することによって,PV-WAVE(IDL)から,直接SCSIで接続されたCAMACモジュールへアクセスすることが可能です.もともとCCPLは,LHDデータ処理システム(LABCOMシステム)のデータ収集系に組み込む前のCAMACモジュールの動作試験や新規開発モジュールのテスト用として,PV-WAVE(IDL)からCAMACを直接制御するために開発されたものです.CCPLは,PV-WAVE(IDL)の外部プログラム呼び出し機能を利用して,CAMACリストシーケンサにCAMAC制御リストを渡し,処理結果を受け取ることで処理を実行します.CCPLは,PV-WAVE(IDL)の2つのプロシージャ(ファイル名:”cstartup.pro”,”camlib.pro”)と,そのプロシージャから呼び出されるリストシーケンサのクライアント・アプリケーションとなるDLL(ファイル名:”CAMACif.dll”)から構成されます.CCPLを利用する場合は,あらかじめCAMACドライバおよびリストシーケンサがインストールされている必要があります.これらはLABCOMホームページ(http://w3.lhd.nifs.ac.jp)からダウンロードしてください.
これまでのものを便宜的にCCPL Ver1.0(以前のものはバージョン番号が付いていないため)とし,以下の改善がなされたものをCCPL Ver1.2として区別します.CCPLから呼び出されるDLLのファイル名を”CAMif.dll”から”CAMACif.dll”(Ver1.2)へ変更します.なお,CCPLはあくまでもテスト用として作成されていますので,各自の責任においてご利用ください.
PV-WAVE Ver.6.20以前に動作していたCCPLを,PV-WAVE Ver.6.21上で使用するとアプリケーション・エラーが発生し,利用できないバグがあったがこれを修正した.
cstartup.pro内のCAMACリストシーケンサとの共通データ構造に関連する内部バッファ宣言の一部に問題があったのでこれを修正した.通常の利用においては,直接的な影響はないと思われるが,場合によってはこれまでの原因不明の挙動が解消される場合があるかもしれない.
実行エラーが発生した場合は,CAMEXEプロシージャの引数singleDataとdataArrayにスカラ値としてLONG(0)が返されるようにした.プログラム中でこの変数の値をチェックすることにより,エラー処理に利用することができる(サンプルプログラム参照).
QCHKモードにおいて,デフォルトの内部タイムアウト時間は100秒に設定されているが,タイムアウト値を指定することによって任意の時間設定が可能となる.新たにタイムアウト時間を指定する場合は,次のように第7引数に任意のタイムアウト値(単位:秒)を指定する.
なお,タイムアウト時間を設定しない場合は,これまでのプログラムを変更する必要はない.
書式:CAM16M,crate,station,subaddress,funct,qmode,data,timeout,StatusArray
書式:CAM24M,crate,station,subaddress,funct,qmode,data,timeout,StatusArray
CAMEXEプロシージャをCAMEXEDBGプロシージャに置き換えることにより,リストシーケンサに設定されたCAMACリストおよびリストシーケンサ関連の情報を画面に表示するとともに,エラー発生時にはより詳細な情報を表示することができる(動作内容には影響しない).動作に問題がある場合には,このCAMEXEDBGプロシージャを利用することで,問題解決のための情報が得られる場合がある.
これまでの24ビットブロックデータ転送(CAB24プロシージャ)に加えて,16ビットブロックデータ転送が可能となった.通常よく利用される16ビットデータ転送において,PV-WAVEおよびIDLのデータを受け取る配列変数の宣言は,lonarr()からintarr()となり,バッファメモリは半分で済むことになる.
これまでの16ビット・シングルデータ転送(CAM16,CAM16Mプロシージャ)に加えて,24ビット・シングルデータ転送が可能となった.これに伴い,従来のCAM16,CAM16Mプロシージャ使用時にPV-WAVEおよびIDLへの戻り値であるシングルデータ格納用配列変数がlonarr型からintarr型へと変更になった.24ビット・シングルデータ転送では,戻り値であるシングルデータ格納用配列変数はlonarr型となる.
CCPLの利用には,必要なハードウェアおよびソフトウェアの設定が必要です.また,アプリケーションを作成するには,CAMAC規格に関する知識が必要となり,当然使用するCAMACモジュールの動作の理解も必要になります.
一般的なセットアップ手順を以下に示します.
Windows 2000に新規インストールする場合,提供されているインストーラではリストシーケンサはセットアップされないので,コマンドプロンプトでCCPLフォルダ内の"listseqd.exe"を"-install"オプションを付けて実行してインストールする.リストシーケンサは,コントロールパネルのサービスから開始/停止することができる
WAVE> @cstartup
内部的に”camlib.pro”プロシージャが呼び出され,必要なプロシージャをコンパイルして利用可能にします
クレートコントローラ:キネティック社SCSI C/C 3929-Z1B
オペレーティングシステム:Windows NT4.0/SP6a または 2000/SP4 以上推奨
会話型データ解析ソフトウェア:PV-WAVE Ver6.21, 7.51, 8.0またはIDL Ver5.1, 5.5
内容:16ビットのCAMACシングルデータ転送リストの設定
内容:24ビットのCAMACシングルデータ転送リストの設定
内容:16ビットのモード付きCAMACシングルデータ転送リストの設定
内容:24ビットのモード付きCAMACシングルデータ転送リストの設定
内容:16ビットのCAMACブロックデータ転送リストの設定
内容:24ビットのCAMACブロックデータ転送リストの設定
内容:クレートコントローラに対する制御コマンドリストの設定
内容:設定されたリストの一括実行
内容:デバッグモードによる設定されたリストの一括実行
crete | クレート番号 | 範囲:0-6 (*1) |
station | ステーション番号 | 範囲:1-23 |
subaddress | サブアドレス | 範囲:0-15 |
funct | ファンクション | 範囲:0-31 |
data | シングルデータ格納変数名 | (*2) |
dataArray | ブロックデータ格納配列変数名 | |
transCount | データ転送数 | |
StatusArray | ステータス格納変数名 | |
qmode | ブロック転送モード | 指定キーワード:QSTP,QRPT,QSCN,QIGN |
func | C/C制御コマンド | 指定キーワード:INIT,CLEAR,SETINH,CLRINH |
timeout | タイムアウト値(単位:秒) | 省略可能[デフォルト値:100秒] |
*1)このクレート番号は,SCSIクレートコントローラ(3929)の前面パネルに設定したSCSI-IDの番号と一致させる必要があります
*2)リストシーケンサの仕様により,書き込みデータの場合はdataの内容がそのまま設定されますが,読み出しデータの場合はこの変数dataの中に戻り値が返ってきません.これについては,次の「シングルデータの取り扱い」で説明します.
リストシーケンサの仕様により,読み出されたシングルデータ(ブロック転送を使用しない単独のデータ転送により授受されるデータ)は,シングルデータ転送リスト(CAM16など)中で設定された読み取りデータを格納するための変数dataに値が返されません.読み出されたシングルデータは,CAMEXEプロシージャに渡されたsingleData配列変数に格納されます.この中から目的のデータを取り出すためには,読み出しリストが先頭から何番目のリストかというオフセット値を利用します.例えば次のリストを実行した場合,offsetとして読み出しリストのオフセット値=1を指定し,SingleData配列から対応する要素を取り出します.読み出されたシングルデータの取り出しは,全て同様に行ないます.
CAM16,crate,station,1,9,0,status ; リスト番号=0
CCPL------CAMACif.DLL (インターフェース・ライブラリ)
内容に関してのご質問やバグ情報などがありましたら,LABCOMまでご連絡ください.