Changes between Initial Version and Version 1 of epics/streamdevice/Aloka_MAR_783/ioc


Ignore:
Timestamp:
11/29/13 11:37:38 (11 years ago)
Author:
Tetsuya Michikawa
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • epics/streamdevice/Aloka_MAR_783/ioc

    v1 v1  
     1= Aloka ポータブルエリアモニタ MAR-783 用IOC =
     2
     3データフォーマットは [wiki:epics/streamdevice/Aloka_MAR_783/control 制御方法]を参照。
     4
     5== protocol ファイル ==
     6
     7データ通信がバイナリだが、データ長が固定で単純なデータ形式なので、StreamDeviceで対応。
     8
     9{{{
     10Terminator = ETX;
     11ExtraInput = Ignore;
     12
     13#
     14getRadVal {
     15    out STX 0x52 0x30;
     16#    in  STX 0x44 0x30 "%4d" "%(\$1)1d" "%(\$2)1c" 0x31;
     17    in  STX 0x44 0x30 "%4d" "%(\$1)1d" "%*1d" 0x31;
     18}
     19getRadStat {
     20    in  STX 0x44 0x30 "%*4d" "%*1d" "%1d" 0x31;
     21}
     22
     23
     24#
     25setAlarm {
     26    InTerminator = "";
     27    out STX 0x57 0x30 "%(A)4d" "%(B)1d" "%(C)4d" "%(D)1d" "%(E)02d";
     28    in ACK;
     29    @mismatch{}
     30}
     31
     32#
     33getIntrStat {
     34    out  STX 0x52 0x33;
     35    in   STX 0x44 0x33 "%1d" 0x30;
     36}
     37
     38}}}
     39
     40
     41デリミタをETX(0x03)に設定し、通信データをASCIIコードで設定。[[br]]
     42データ部は固定長なので、データサイズを指定することによって、個別に取得した。
     43
     44
     45== db ファイル ==
     46
     47小数部と指数部でレコードを分けて取得し、CALCレコードで計算したものをデータとする。
     48また、アラームの閾値設定は、alarm1,alarm2で閾値を設定し、setAlarmで機器に設定するようにした。
     49
     50{{{
     51record(longin, "$(user):getRadVal")
     52{
     53    field(DESC, "Get Radiation decimal Value")
     54    field(DTYP, "stream")
     55#    field(INP,  "@mar783.proto getRadVal($(user):getRadExp,$(user):getStat) $(DEV)")
     56    field(INP,  "@mar783.proto getRadVal($(user):getRadExp) $(DEV)")
     57    field(SCAN, "$(SCAN)")
     58    field(FLNK, "$(user):getRadiation")
     59}
     60
     61record(longin, "$(user):getStat")
     62{
     63    field(DESC, "Get Radiation Status")
     64    field(DTYP, "stream")
     65    field(INP,  "@mar783.proto getRadStat $(DEV)")
     66    field(SCAN, "I/O Intr")
     67}
     68
     69record(longin, "$(user):getRadExp")
     70{
     71    field(DESC, "Get Radiation Exponential")
     72}
     73
     74record(calc, "$(user):getRadiation")
     75{
     76    field(DESC, "Get Radiation")
     77    field(EGU,  "mSV/h")
     78    field(CALC, "A*(10**(B-4))")
     79    field(INPA, "$(user):getRadVal")
     80    field(INPB, "$(user):getRadExp")
     81    field(MDEL, "0.005")
     82    field(ADEL, "0.005")
     83}
     84
     85
     86record(ai, "$(user):alarm1")
     87{
     88    field(DESC, "Set Alarm1 Parameter")
     89    field(EGU,  "uSv/h")
     90    field(PREC, "4")
     91    field(HOPR, "999000")
     92    field(LOPR, "1")
     93    field(FLNK, "$(user):alarm1Exp")
     94}
     95
     96record(calc, "$(user):alarm1Val")
     97{
     98    field(DESC, "Calc Alarm1 value")
     99    field(INPA, "$(user):alarm1")
     100    field(INPB, "$(user):alarm1Exp")
     101    field(CALC, "(A#0)?(10^((-1*B)+4))*A:0")
     102}
     103
     104record(calc, "$(user):alarm1Exp")
     105{
     106    field(DESC, "Calc Alarm1 Exponential")
     107    field(INPA, "$(user):alarm1")
     108    field(CALC, "(A#0)?(FLOOR(LOG(A))+1):0")
     109    field(FLNK, "$(user):alarm1Val")
     110}
     111
     112record(ai, "$(user):alarm2")
     113{
     114    field(DESC, "Set Alarm2 Parameter")
     115    field(EGU,  "mSv/h")
     116    field(PREC, "4")
     117    field(HOPR, "999000")
     118    field(LOPR, "1")
     119    field(FLNK, "$(user):alarm2Exp")
     120}
     121
     122record(calc, "$(user):alarm2Val")
     123{
     124    field(DESC, "Calc Alarm2 value")
     125    field(INPA, "$(user):alarm2")
     126    field(INPB, "$(user):alarm2Exp")
     127    field(CALC, "(A#0)?(10^((-1 * B)+4))*A:0")
     128}
     129
     130record(calc, "$(user):alarm2Exp")
     131{
     132    field(DESC, "Calc Alarm2 Exponential")
     133    field(INPA, "$(user):alarm2")
     134    field(CALC, "(A#0)?(floor(log(A))+1):0")
     135    field(FLNK, "$(user):alarm2Val")
     136}
     137
     138record(longin, "$(user):alarmResp")
     139{
     140    field(DESC, "Set Alarm Response(SD mode)")
     141    field(EGU,  "%")
     142    field(PREC, "0")
     143    field(HOPR, "20")
     144    field(LOPR, "1")
     145}
     146
     147record(calcout, "$(user):setAlarm")
     148{
     149    field(DESC, "Set Alarm Parameter")
     150    field(INPA, "$(user):alarm1Val")
     151    field(INPB, "$(user):alarm1Exp")
     152    field(INPC, "$(user):alarm2Val")
     153    field(INPD, "$(user):alarm2Exp")
     154    field(INPE, "$(user):alarmResp")
     155    field(CALC, "0")
     156    field(DTYP, "stream")
     157    field(OUT,  "@mar783.proto setAlarm $(DEV)")
     158
     159}
     160
     161record(longin, "$(user):getIntrStat")
     162{
     163    field(DESC, "Get Interupt Status")
     164    field(DTYP, "stream")
     165    field(INP,  "@mar783.proto getIntrStat $(DEV)")
     166    field(SCAN, "$(SCAN)")
     167}
     168}}}
     169
     170