IOCINFRAApp/Db/SATECO_base.db
author Heinz Junkes <junkes@fhi-berlin.mpg.de>
Thu, 07 Mar 2019 09:23:26 +0100
changeset 0 77d8eafe2a07
permissions -rw-r--r--
Initial repo

# $Source: /cvs/G/DRV/SATECO/SATECO_base.template,v $
# $Date: 2008/10/28 14:01:25 $
# $Revision: 1.20 $
# $Author: wang_x1 $


#  Required substitutions:
#    NAME        - prefix, e.g. X99SA-ES1-CRYOJET:
#    UNIT        - temperature unit
#    PTCOLS      - StreamDevice protocol file
#    PORT        - port name

# The Alarm Status of this record is used to trigger WATCHDOG
record(stringin, "$(NAME):VERSION")
{
    field(DESC, "control version")
    field(DTYP, "stream")
    field(INP,  "@$(PTCOLS) GET_VERSION $(PORT)")
    field(SCAN, "1 second")
    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")

    field(FLNK, "$(NAME):ONESHOT")
}

##############################################
# Controller Mode
##############################################
record(mbbi, "$(NAME):MODE_RBV")
{
    field(DESC, "control mode")
    field(DTYP, "stream")
    field(INP,  "@$(PTCOLS) GET_MODE $(PORT)")
    
    field(ZRVL, "0")
    field(ONVL, "1")

    field(ZRST, "Local")
    field(ONST, "Remote")

    field(SCAN, "1 second")
    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")
}

record(mbbo, "$(NAME):MODE")
{
    field(DESC, "control mode")
    field(DTYP, "stream")
    field(OUT,  "@$(PTCOLS) SET_MODE $(PORT)")
    
    field(ZRVL, "0")
    field(ONVL, "1")

    field(ZRST, "Local")
    field(ONST, "Remote")

    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")
}


##############################################
# Connection Status Monitor
##############################################
record(mbbo,    "$(NAME):CONN-STAT")
{
    field(DESC, "connection status")

    field(ZRVL, "0")
    field(ONVL, "1")
    field(TWVL, "2")

    field(ZRST, "Disconnected")
    field(ONST, "Connected")
    field(TWST, "Connecting") 

    field(ZRSV, "MAJOR")
    field(ONSV, "NO_ALARM")
    field(TWSV, "MINOR")
}
record(bo,      "$(NAME):CONN")
{
    field(DESC, "turn on/off connection")

    field(ZNAM, "Disconnect")
    field(ONAM, "Connect")
    field(ZSV,  "MAJOR")
    field(OSV,  "NO_ALARM")
   
    field(OUT,  "$(NAME):CONN-DFAN.VAL PP")
    field(FLNK, "$(NAME):CONN-CALC")
}

record(dfanout, "$(NAME):CONN-DFAN")
{
    field(DESC, "fanout connect action")
    field(OMSL, "supervisory")

    field(OUTA, "$(NAME):ASYNIO.ENBL")
#    field(OUTB, "$(NAME):ENBLSCAN.VAL")
    field(OUTC, "$(NAME):WATCHDOG.VAL PP")
}

record(calcout, "$(NAME):CONN-CALC")
{
    field(DESC, "connecting")
    field(INPA, "$(NAME):CONN.VAL")
    field(CALC, "A=1?2:0")
    field(DOPT, "Use CALC")
    field(OOPT, "Transition To Non-zero")
    field(OUT,  "$(NAME):CONN-STAT.VAL PP MS")
    field(SCAN, "Passive")
}

record(calcout, "$(NAME):ONESHOT")
{
    field(DESC, "watchdog trigger")
    field(INPA, "$(NAME):VERSION.STAT")
    field(CALC, "A=0?1:0")
    field(OOPT, "When Non-zero")
    field(OUT,  "$(NAME):WATCHDOG.VAL PP MS")
    field(SCAN, "Passive")
}

record(bo, "$(NAME):ENBLSCAN")
{
    field(DESC, "enable/disable record scan")
    field(DTYP, "Soft Channel")
    field(SCAN, "Passive")

    field(ZNAM, "Disable")
    field(ONAM, "Enable")
}

record(bo, "$(NAME):WATCHDOG")
{
    field(DESC, "connection indicator")
    field(DTYP, "Soft Channel")

    field(HIGH, "15")
    field(SCAN, "Passive")

    field(OUT,  "$(NAME):CONN-STAT.VAL PP")

    field(ZNAM, "Disconnected")
    field(ONAM, "Connected")
    field(ZSV,  "MAJOR")
    field(OSV,  "NO_ALARM")
}

record(asyn, "$(NAME):ASYNIO")
{
    field(DESC, "asyn port")
    field(PORT, "$(PORT)")
}

record(calcout, "$(NAME):TRIG-CONN")
{   
    field(DESC, "trigger scan")
    field(INPA, "$(NAME):WATCHDOG.VAL CPP MS")
    field(CALC, "A")
    field(OUT,  "$(NAME):CONN.VAL PP MS")
    field(OOPT, "Transition To Zero")
}

###########################################
#   PID
###########################################
record(ao,      "$(NAME):P")
{
    field(DESC, "PID - proportion set-point")
    field(DTYP, "stream")
    field(OUT,  "@$(PTCOLS) SET_P($(NAME)) $(PORT)")

    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")
    field(PREC, "1")
}

record(ai,      "$(NAME):P_RBV")
{
    field(DESC, "PID - proportion readback")
    field(DTYP, "stream")
    field(INP,  "@$(PTCOLS) GET_P $(PORT)")

    field(SCAN, "1 second")
    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")
    field(PREC, "1")
}
record(ao,      "$(NAME):I")
{
    field(DESC, "PID - integral set-point")
    field(DTYP, "stream")
    field(OUT,  "@$(PTCOLS) SET_I($(NAME)) $(PORT)")

    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")
    field(PREC, "1")
}

record(ai,      "$(NAME):I_RBV")
{
    field(DESC, "PID - integral readback")
    field(DTYP, "stream")
    field(INP,  "@$(PTCOLS) GET_I $(PORT)")

    field(SCAN, "1 second")
    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")
    field(PREC, "1")
}
record(ao,      "$(NAME):D")
{
    field(DESC, "PID - derivative set-point")
    field(DTYP, "stream")
    field(OUT,  "@$(PTCOLS) SET_D($(NAME)) $(PORT)")

    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")
    field(PREC, "1")
}

record(ai,      "$(NAME):D_RBV")
{
    field(DESC, "PID - derivative readback")
    field(DTYP, "stream")
    field(INP,  "@$(PTCOLS) GET_D $(PORT)")

    field(SCAN, "1 second")
    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")
    field(PREC, "1")
}

###########################################
#   Heating Level
###########################################
record(ao,      "$(NAME):HT-LVL")
{
    field(DESC, "heater level set-point")
    field(DTYP, "stream")
    field(OUT,  "@$(PTCOLS) SET_HEAT-LEVEL $(PORT)")


    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")

    field(HOPR, "100")
    field(LOPR, "0")
    field(PREC, "1")
    field(EGU,  "%")
}

record(ai,      "$(NAME):HT-LVL_RBV")
{
    field(DESC, "heater level readback")
    field(DTYP, "stream")
    field(INP,  "@$(PTCOLS) GET_HEAT-LEVEL $(PORT)")

    field(SCAN, "1 second")
    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")

    field(HOPR, "100")
    field(LOPR, "0")
    field(PREC, "1")
    field(EGU,  "%")
}

###########################################
#   Temperature
###########################################

record(ai, "$(NAME):TEMP_RBV")
{
    field(DESC, "temperature")
    field(DTYP, "stream")
    field(INP,  "@$(PTCOLS) GET_TEMP $(PORT)")
    field(FLNK, "$(NAME):TEMP-AVG")

    field(SCAN, "1 second")
    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")

    field(PREC, "2")
    field(EGU,  "$(UNIT)")
}

record(ao, "$(NAME):TEMP")
{
    field(DESC, "temperature")
    field(DTYP, "stream")
    field(OUT,  "@$(PTCOLS) SET_TEMP $(PORT)")

    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")

    field(PREC, "2")
    field(EGU,  "$(UNIT)")

    field(FLNK, "$(NAME):GO-1 PP MS")
}

#!
record(ai, "$(NAME):TEMP-SP")
{
    field(DESC, "temperature setpoint")
    field(DTYP, "stream")
    field(INP,  "@$(PTCOLS) GET_TEMP-SP $(PORT)")

    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")

    field(PREC, "2")
    field(EGU,  "$(UNIT)")
}

###########################################
#   busy record for temperature set-point
###########################################
record(calcout, "$(NAME):GO-1")
{
    field(DESC, "")
    field(INPA, "$(NAME):TEMP.SIMM")
    field(CALC, "A=1?0:1")

    field(OUT,  "$(NAME):GO-2 PP MS")
    field(OOPT, "When Non-zero")
}

record(bo,  "$(NAME):GO-2")
{
    field(DESC, "")
    field(DTYP, "Soft Channel")
    field(OMSL, "supervisory")
    field(VAL,  "1")
    field(OUT,  "$(NAME):BUSY.VAL PP MS")
                                # update TEMP-STAT, not waiting for next readback
    field(FLNK, "$(NAME):RNG-CALC")
}

record(busy,    "$(NAME):BUSY")
{
}

###########################################
#   Temperature Status Monitor
###########################################

record(longout, "$(NAME):SETTL-PRD")
{
    field(DESC, "settling time")
    field(EGU,  "s")
    field(VAL,  "120")
    field(FLNK, "$(NAME):TEMP-AVG")
}

record(ao,      "$(NAME):TOLERANCE")
{
    field(DESC, "tolerance band width")
    field(EGU,  "$(UNIT)")
    field(VAL,  "1")
    field(PREC, "2")
}

record(sub, "$(NAME):TEMP-AVG")
{
    field(DESC, "temperature average")
    field(INPA, "$(NAME):SETTL-PRD.VAL")
    field(INPB, "$(NAME):TEMP_RBV.VAL")
    field(INPD, "0") # Continuous Mode
    field(INAM, "initSubAve")
    field(SNAM, "SubAve")
    field(PREC, "2")
    field(SCAN, "Passive")

    field(FLNK, "$(NAME):RNG-CALC")
}

record(calcout, "$(NAME):RNG-CALC")
{
    field(DESC, "temperature status calc")
    field(INPA, "$(NAME):TEMP-AVG.VAL")
    field(INPB, "$(NAME):TEMP.VAL")
    field(INPC, "$(NAME):TOLERANCE.VAL")
    field(INPD, "$(NAME):TEMP_RBV.VAL")

    field(CALC, "(ABS(A-B)<=C)&&(ABS(D-B)<=C)?0:1")
    field(DOPT, "Use CALC")
    field(OOPT, "When Zero")

    field(OUT,  "$(NAME):BUSY.VAL PP MS")
    field(FLNK, "$(NAME):TEMP-STAT.VAL PP MS")

    field(SCAN, "Passive")
}

record(mbbo,    "$(NAME):TEMP-STAT")
{
    field(DESC, "temperature status")

    field(DOL,  "$(NAME):RNG-CALC MS")
    field(OMSL, "closed_loop")
 
    field(ZRVL, "0")
    field(ONVL, "1")

    field(ZRST, "Inside Range")
    field(ONST, "Out of Range")

    field(ZRSV,  "NO_ALARM")
    field(ONSV,  "MAJOR")

    field(SCAN, "Passive")
}
###########################################
#   For Debug Use
###########################################
record(stringout,    "$(NAME):QUERY")
{
    field(DESC, "debug - query")
    field(DTYP, "stream")
    field(OUT,  "@$(PTCOLS) QUERY($(NAME):RECV.VAL) $(PORT)")
    field(DISV, "0")
    field(SDIS, "$(NAME):WATCHDOG.VAL")
}
record(stringout,    "$(NAME):RECV")
{
    field(DESC, "debug - received message")
    field(DTYP, "Soft Channel")
}

###########################################
#  retrieve temp set-point when connected
###########################################
record(calcout, "$(NAME):TRIG-STAT")
{   
    field(DESC, "trigger TRIG-SP")
    field(INPA, "$(NAME):CONN-STAT.VAL CPP MS")
    field(CALC, "A=1?1:0")
    field(OUT,  "$(NAME):TEMP-SIMM1.VAL PP MS")
    field(OOPT, "Transition To Non-zero")
}
record(bo,      "$(NAME):TEMP-SIMM1")
{
    field(DESC, "set TEMP in simulation")
    field(OUT,  "$(NAME):TEMP.SIMM")
    field(FLNK, "$(NAME):SEQ")
}

record(sseq,    "$(NAME):SEQ")
{
    field(SELM, "All")

    field(WAIT1,"Wait")
    field(DO1,  "1")
    field(LNK1, "$(NAME):TEMP-SP.PROC CA")

    field(DOL2,  "$(NAME):TEMP-SP.VAL")
    field(LNK2,  "$(NAME):TEMP.VAL PP")
 
    field(FLNK, "$(NAME):TEMP-SIMM2")
}

record(bo,      "$(NAME):TEMP-SIMM2")
{
    field(DESC, "reset TEMP out simulation")
    field(DOL,  "0")
    field(OUT,  "$(NAME):TEMP.SIMM")
    field(OMSL, "closed_loop")
}