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


Ignore:
Timestamp:
11/29/13 11:37:38 (10 years ago)
Author:
michkawa
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