[KEKB Bunch Feedback Group]

株式会社チノー製ハイブリッド記録計MH2000用EPICS Device Support(Japanese)


by とびやま まこと(Makoto Tobiyama)/KEKB ビームモニターグループ

警告
以下の記述に関しては、意図する、しないに関わらず多くの誤り、誤解が含まれていると思われますので、決して信用してはいけません。これを信じて起きた損害に関しては、当方は一切責任を持ちません。


If you need contact with the author, please E-mail makoto.tobiyama@kek.jp.
目次

1.はじめに

MH2000は最大30チャンネル入力のハイブリッド記録計です。3点式白金抵抗体温度測定機能を使って温度測定を行います。

2.サポートする機能

MH2000は非常に多くの機能を持っており、それぞれGP-IB経由でコントロールする事ができますが、このデバイスサポートでサポートする機能はデータの読みとりのみです。設定機能は実装していません。

3.EPICS環境

本デバイスサポートは、EPICS R312で開発したもので、R313最新版でも変更無く使用しています。EPICSそのものに対する説明、入門出家入道遁世については専門家に帰依するなり、コントロールグループのページをご参照なさるなり勝手になさってください。動作は68K40及びPPC750で確認していますが、PPC750の場合アクセスが速いのでGP-IBをだます特殊な対応が必要です。

4.コードの概要

GDLコードのみを以下に示します。 なお、このシステムのGP-IBは規格に合っていないため、GP-IBアクセススピードが速くなると答えが返せなくなります。このため、一遍gdcでコンパイルして.cファイルを作り、その中の
static struct  devGpibParmBlock devSupParms = {
  &MH2000Debug, /* debugging flag pointer */
  -2,    /* device does not respond to writes */
  TIME_WINDOW,  /* # of clock ticks to skip after a device times out */
  NULL, /* hwpvt list head */
  gpibCmds,     /* GPIB command array */
  NUMPARAMS,    /* number of supported parameters */
  -1,           /* magic SRQ param number (-1 if none) */
  "devMH2000Gpib",      /* device support module type name */
  DMA_TIME,     /* # of clock ticks to wait for DMA completions */
  NULL, /* SRQ handler function (NULL if none) */
  NULL  /* secondary conversion routine (NULL if none) */
  ,(int) '\xff' /* End of String(eos) */
};

のように、/* device does not respond to writes */の所を-1から変えて、この場合1/60秒のwaitを入れます。

dbdファイルの中で次のように定義します。(自動的にできるはず)

#MH2000 dbd list

device(ai,GPIB_IO,devAiMH2000Gpib,"MH2000")
device(ao,GPIB_IO,devAoMH2000Gpib,"MH2000")
device(bi,GPIB_IO,devBiMH2000Gpib,"MH2000")
device(bo,GPIB_IO,devBoMH2000Gpib,"MH2000")
device(stringin,GPIB_IO,devSiMH2000Gpib,"MH2000")
device(stringout,GPIB_IO,devSoMH2000Gpib,"MH2000")
device(longin,GPIB_IO,devLiMH2000Gpib,"MH2000")
device(longout,GPIB_IO,devLoMH2000Gpib,"MH2000")
device(mbbi,GPIB_IO,devMbbiMH2000Gpib,"MH2000")
device(mbbo,GPIB_IO,devMbboMH2000Gpib,"MH2000")
device(waveform,GPIB_IO,devWfMH2000Gpib,"MH2000")

5.EPICSデータベースサンプル

このデバイスサポートで使うデータベースの例(IR温度システム用)を示します。
DTYPRecordSignalNameFunctionRemarks
MH2000waveform0FB_IR:TEMP011〜10までの温度
MH2000waveform1FB_IR:TEMP0211〜20までの温度
MH2000waveform2FB_IR:TEMP0321〜30までの温度
実際の各部の温度はこのままでは使いにくいので、subarrayで一遍1elementに変換し、さらにai等に名前変換をして使っています。

6.スタートアップファイルサンプル

通常通りのGP-IB設定をすればOKです。

7.おわりに

このデバイスサポートは今から思えばずいぶん昔に作ったものですが、未だにそのまま情けない格好で実用に耐えています。とりあえず読めれば良いやという安易な極みの気持ちで作ったので最低限の読みとり機能しかもっていません。実際は、このハイブリッド記録計のパネル面での設定のユーザーインターフェースはお世辞にも使いやすいとは言えず(かなり控えめな言い方)、設定変更をしようとするとマニュアルを探したり、これ見よがしにしきりと出る悪魔のような設定エラーブザーやちょっとした操作ボタンの押し間違えで延々と入れたパラメータを一瞬で忘れられたりすることに激怒したりとたいがいオオゴトになります。せっかくならちゃんと設定出来るようにしておくべきだったと反省しています(言葉だけ)。
Makoto Tobiyama
14/Mar/2001

Return to FB Home Page...