ここでは、モジュール定義ファイルと実行時情報ファイルの2種類の設定ファイルについて、それぞれ具体的に例を示しながら記述方法について解説します。全てのファイルはテキストファイルですので、適当なエディタを利用して作成してください。なお、テンプレートファイルが用意されていますので利用してください。
モジュール定義ファイルには、CAMACモジュールの種類毎に次の6つのファイルを作成します。モジュール種名は、たとえばAurora14のようにモジュールの種類をあらわす名前です。
これらのファイルには、CAMACモジュールのモジュール種名、使用するカマックコマンド、設定値の選択肢が記述されます。カマックコマンドを複数個まとめたSetupリストやInitリスト等の制御リストを生成するための基本的な情報が格納されます。
モジュールファイルの名前は次のとおりです。
このファイルの書式を以下に記述します。
//_モジュール種名_Module.cnf-CAMAC_module_configuration................<日付>
//
//_Module
Module_Name=モジュール種名
Module_ModuleType=ADC
Module_CalcTime=ClockMemory
Module_Convert=BitMask
Module_SlotWidth=スロット幅
//_Module_List_End
[解説]
シーケンスファイルの名前は次のとおりです。
これらのファイルの書式を以下にまとめて記述します。各シーケンスに固有の内容は「シーケンス別の追加説明」に述べます。
各シーケンス名は、Setup、Init、Completed、Acquire、Triggerであり、それぞれファイルの構成は次のようになっています。
シーケンスファイルの書式は次のようになります。Listブロックは1つ以上必要です。
//_モジュール種名_シーケンス名.cnf-CAMAC_module_シーケンス名_configuration...........<日付>
//
空行
Listブロック
空行
Listブロック
・
・
・
Listブロック
空行
//_シーケンス名_List_End
//で始まる行は単なるコメント行ではありません。
Listブロックの書式は、次のようになります。1つのListブロックが1つの制御リストに対応します。Commandブロックは1つ以上必要です。
//_シーケンス名_List_リスト番号
Sequence_Name=シーケンス名
Sequence_Mode=シーケンスモード番号
Sequence_Number=シーケンス番号
空行
Commandブロック
空行
Commandブロック
・
・
・
Commandブロック
[解説]
Commandブロックの書式は、次のようになります。1つのCommandブロックが1回のカマックコマンドに対応します。場合によっては、Functionブロックがないこともあります。
//_シーケンス名_Command_F(カマックファンクション)A(サブアドレス)
Command_Name=コマンド名
Command_Number=コマンド番号
Command_Type=コマンド型
Command_FunctionCode=カマックファンクション
Command_SubAddress=サブアドレス
Command_ControlFunction=NONE
Command_WordSize=転送モード
Command_Qmode=Qモード
Command_TransCount=転送回数
Command_BitMask=ビットマスク
Command_OptFunction=NONE
Command_OptCondition=NONE
Command_Timeout=待ち時間
Command_Value=データ
空行
Functionブロック
空行
Functionブロック
・
・
・
Functionブロック
[解説]
1ビット | 0x0001 |
2ビット | 0x0003 |
3ビット | 0x0007 |
4ビット | 0x000f |
5ビット | 0x001f |
6ビット | 0x003f |
7ビット | 0x007f |
8ビット | 0x00ff |
9ビット | 0x01ff |
10ビット | 0x03ff |
11ビット | 0x07ff |
12ビット | 0x0fff |
13ビット | 0x1fff |
14ビット | 0x3fff |
15ビット | 0x7fff |
16ビット | 0xffff |
17ビット | 0x01ffff |
18ビット | 0x03ffff |
19ビット | 0x07ffff |
20ビット | 0x0fffff |
21ビット | 0x1fffff |
22ビット | 0x3fffff |
23ビット | 0x7fffff |
24ビット | 0xffffff |
Functionブロックの書式は、次のようになります。1つのFunctionブロックが1つの設定項目に対応します。Selectionブロックは1つ以上必要です。
//_シーケンス名_Function_ファンクション番号
Function_Name=ファンクション名
Function_Key=ファンクションキー
Function_ParamLink=!
Function_BitWidth=ビット幅
Function_BitPosition=ビット位置
空行
Selectionブロック
空行
Selectionブロック
・
・
・
Selectionブロック
[解説]
Selectionブロックの書式は、次のようになります。1つのSelectionブロックが1つの選択肢に対応します。
//_シーケンス名_Selection_セレクション番号
Selection_Name=セレクション名
Selection_Value=値
[解説]
ここでは、各シーケンスに固有の記述方法や制限事項について解説します。
Listブロックは1つにします。
モジュールの初期化や初期設定を行います。
実際に設定することができないモジュールであってもMemorySizeファンクションが必要な点に注意してください。その場合、Functionブロックを持つCommandブロックでデータ値に使用しないビット1つをMemorySizeファンクションに割り当ててください。あるいはFunctionブロックを持たないCommandブロックでデータ値を0とするものにFunctionブロックを1つ作り、これをMemorySizeファンクションにしてデータ値の1ビットを割り当ててください。このFunctionブロックの持つSelectionブロックは1つとし、セレクション名は1チャンネルのデータのワード数、たとえば128ワードのときは128にします。128キロワードのときは128Kと書くこともできます。値は0にします。
Listブロックは1つにします。
Functionブロックをつくりません。
このリストではLAMの許可や収集の許可をします。
Listブロックは1つにします。
Functionブロックをつくりません。
LAMのチェックをします。LHD計測データ処理システムでは、このLAMチェックで収集の完了を確認してからデータの取り込みをします。
Listブロックは2つにします。
Functionブロックをつくりません。
1つめのListブロックはシーケンスモードを1、シーケンス番号を1にします。
2つめのListブロックはシーケンスモードを1、シーケンス番号を2にします。
1回のブロック転送コマンドで取り込むことができるときは、1つめのListブロックでLAMの禁止や収集の禁止などブロック転送の前に実行するコマンドを記述し、2つめのListブロックでブロック転送コマンドを記述します。
1回のブロック転送コマンドで取り込むことができないときは以下の制限があります。
この場合には1つめのListブロックで、LAMの禁止や収集の禁止などブロック転送の前に実行するコマンドのうちチャンネル毎に実行するものでないものを記述し、2つめのListブロックで、チャンネル毎に実行するコマンドを記述します。このうちチャンネルの指定をするコマンドはサブアドレスを-1にします。ブロック転送コマンドは必ず最後になるようにします。
Listブロックは1つにします。
Functionブロックをつくりません。
ソフトウェアによるトリガ実行のコマンドを記述します。
このリストはLHD計測データ処理システムでは使われていませんが、将来の拡張のために用意されています。会話型CAMAC制御ソフトウエアでテストするときには利用できます。
実行時情報ファイルでは、モジュール1台毎に次のファイルを作成します。モジュール名を付けるときは,Bolometer01、Bolo01のように計測名に2桁の番号を付けるか計測名を短くして2桁の番号を付けるなど、分かりやすい名前を付けてください。無理に短くする必要はありません。
このファイルには、CAMACモジュールのアドレスや使用するときの設定値が記述されます。たとえば、Aurora14ならそのモジュールの挿入されているクレートのクレート番号とクレートの中のステーション番号、サンプリング時間、内部クロックを使用するか外部クロックを使用するかの別などです。
実行時情報ファイルの名前は次のとおりです。
このファイルの書式を以下に記述します。
内容は、9個のブロックから構成されています。第1ブロックは1行目から始まり、ブロックとブロックの間には空行が入り、第9ブロックの後には改行が入ります。以下、1ブロックづつ順に説明します。
//_Data_モジュール名.cnf-Acquisition_Data_configuration.................<日付>
//
[解説]
//_Data_1
Data_Name=モジュール名
Data_Flags=1
Data_DataType=ADC
Data_Priority=優先度
Data_NumAcquire=1
Data_NumChannel=チャンネル数
Data_ParamLink=BitMask#0_ビットマスク
[解説]
//_CAMAC_1
CAMAC_Name=Setup
CAMAC_AccessMode=1
CAMAC_AccessLevel=1
CAMAC_Module=モジュール種名
CAMAC_Crate=クレート番号
CAMAC_Station=ステーション番号
CAMAC_BusyTime=0
[解説]
//_CAMAC_1_Command
Command_Sequence=Setup_1
Command_Name=コマンド名1
Command_Function=ファンクション名1.1_セレクション名1.1
Command_Function=ファンクション名1.2_セレクション名1.2
・
・
Command_Name=コマンド名2
Command_Function=ファンクション名2.1_セレクション名2.1
Command_Function=ファンクション名2.2_セレクション名2.2
・
・
[解説]
以下、第5ブロックから第8ブロックまでは、1行目の番号と2行目のシーケンス名を除いて同一の書式となります。
//_CAMAC_2
CAMAC_Name=Init
CAMAC_AccessMode=1
CAMAC_AccessLevel=1
CAMAC_Module=モジュール種名
CAMAC_Crate=クレート番号
CAMAC_Station=ステーション番号
CAMAC_BusyTime=0
[解説]
//_CAMAC_3
CAMAC_Name=Acquire
CAMAC_AccessMode=1
CAMAC_AccessLevel=1
CAMAC_Module=モジュール種名
CAMAC_Crate=クレート番号
CAMAC_Station=ステーション番号
CAMAC_BusyTime=0
[解説]
//_CAMAC_4
CAMAC_Name=Trigger
CAMAC_AccessMode=1
CAMAC_AccessLevel=1
CAMAC_Module=モジュール種名
CAMAC_Crate=クレート番号
CAMAC_Station=ステーション番号
CAMAC_BusyTime=0
[解説]
//_CAMAC_5
CAMAC_Name=Completed
CAMAC_AccessMode=1
CAMAC_AccessLevel=1
CAMAC_Module=モジュール種名
CAMAC_Crate=クレート番号
CAMAC_Station=ステーション番号
CAMAC_BusyTime=0
[解説]
//_Data_List_End
[解説]