Aloka ポータブルエリアモニタ MAR-783 用IOC
データフォーマットは 制御方法を参照。
protocol ファイル
データ通信がバイナリだが、データ長が固定で単純なデータ形式なので、StreamDeviceで対応。
Terminator = ETX;
ExtraInput = Ignore;
#
getRadVal {
out STX 0x52 0x30;
# in STX 0x44 0x30 "%4d" "%(\$1)1d" "%(\$2)1c" 0x31;
in STX 0x44 0x30 "%4d" "%(\$1)1d" "%*1d" 0x31;
}
getRadStat {
in STX 0x44 0x30 "%*4d" "%*1d" "%1d" 0x31;
}
#
setAlarm {
InTerminator = "";
out STX 0x57 0x30 "%(A)4d" "%(B)1d" "%(C)4d" "%(D)1d" "%(E)02d";
in ACK;
@mismatch{}
}
#
getIntrStat {
out STX 0x52 0x33;
in STX 0x44 0x33 "%1d" 0x30;
}
デリミタをETX(0x03)に設定し、通信データをASCIIコードで設定。
データ部は固定長なので、データサイズを指定することによって、個別に取得した。
db ファイル
小数部と指数部でレコードを分けて取得し、CALCレコードで計算したものをデータとする。 また、アラームの閾値設定は、alarm1,alarm2で閾値を設定し、setAlarmで機器に設定するようにした。
record(longin, "$(user):getRadVal")
{
field(DESC, "Get Radiation decimal Value")
field(DTYP, "stream")
# field(INP, "@mar783.proto getRadVal($(user):getRadExp,$(user):getStat) $(DEV)")
field(INP, "@mar783.proto getRadVal($(user):getRadExp) $(DEV)")
field(SCAN, "$(SCAN)")
field(FLNK, "$(user):getRadiation")
}
record(longin, "$(user):getStat")
{
field(DESC, "Get Radiation Status")
field(DTYP, "stream")
field(INP, "@mar783.proto getRadStat $(DEV)")
field(SCAN, "I/O Intr")
}
record(longin, "$(user):getRadExp")
{
field(DESC, "Get Radiation Exponential")
}
record(calc, "$(user):getRadiation")
{
field(DESC, "Get Radiation")
field(EGU, "mSV/h")
field(CALC, "A*(10**(B-4))")
field(INPA, "$(user):getRadVal")
field(INPB, "$(user):getRadExp")
field(MDEL, "0.005")
field(ADEL, "0.005")
}
record(ai, "$(user):alarm1")
{
field(DESC, "Set Alarm1 Parameter")
field(EGU, "uSv/h")
field(PREC, "4")
field(HOPR, "999000")
field(LOPR, "1")
field(FLNK, "$(user):alarm1Exp")
}
record(calc, "$(user):alarm1Val")
{
field(DESC, "Calc Alarm1 value")
field(INPA, "$(user):alarm1")
field(INPB, "$(user):alarm1Exp")
field(CALC, "(A#0)?(10^((-1*B)+4))*A:0")
}
record(calc, "$(user):alarm1Exp")
{
field(DESC, "Calc Alarm1 Exponential")
field(INPA, "$(user):alarm1")
field(CALC, "(A#0)?(FLOOR(LOG(A))+1):0")
field(FLNK, "$(user):alarm1Val")
}
record(ai, "$(user):alarm2")
{
field(DESC, "Set Alarm2 Parameter")
field(EGU, "mSv/h")
field(PREC, "4")
field(HOPR, "999000")
field(LOPR, "1")
field(FLNK, "$(user):alarm2Exp")
}
record(calc, "$(user):alarm2Val")
{
field(DESC, "Calc Alarm2 value")
field(INPA, "$(user):alarm2")
field(INPB, "$(user):alarm2Exp")
field(CALC, "(A#0)?(10^((-1 * B)+4))*A:0")
}
record(calc, "$(user):alarm2Exp")
{
field(DESC, "Calc Alarm2 Exponential")
field(INPA, "$(user):alarm2")
field(CALC, "(A#0)?(floor(log(A))+1):0")
field(FLNK, "$(user):alarm2Val")
}
record(longin, "$(user):alarmResp")
{
field(DESC, "Set Alarm Response(SD mode)")
field(EGU, "%")
field(PREC, "0")
field(HOPR, "20")
field(LOPR, "1")
}
record(calcout, "$(user):setAlarm")
{
field(DESC, "Set Alarm Parameter")
field(INPA, "$(user):alarm1Val")
field(INPB, "$(user):alarm1Exp")
field(INPC, "$(user):alarm2Val")
field(INPD, "$(user):alarm2Exp")
field(INPE, "$(user):alarmResp")
field(CALC, "0")
field(DTYP, "stream")
field(OUT, "@mar783.proto setAlarm $(DEV)")
}
record(longin, "$(user):getIntrStat")
{
field(DESC, "Get Interupt Status")
field(DTYP, "stream")
field(INP, "@mar783.proto getIntrStat $(DEV)")
field(SCAN, "$(SCAN)")
}
Last modified
12 years ago
Last modified on 11/29/13 11:37:38
Attachments (1)
- Aloka_MAR783_20131129.tar.gz (5.1 KB ) - added by 12 years ago.
Download all attachments as: .zip
Note:
See TracWiki
for help on using the wiki.
