# File: hallprobe.db # # Group 3 DTM-151, Digital Teslameter # # # Macros # P - standard record prefix # R - standard record prefix # PORT - asyn port to use # # Notes # [Naming conventions] # RAW refers to values that are read from the device and then translated into # something more user friendly. RESET refers to the handful of commands used # to "erase" or "clear" a setpoint. OUT and SYNC are used to keep setpoints # updated with the values from hardware. See "Setpoints" note. # # [Setpoints] # Several of the setpoints are handled with added OUT and SYNC PVs. This is # used to update the setpoint if the value changes on hardware. This # functionality was added since most of the setpoints have resets or get # calculated from the execution of another command. PVs such as scale, # offset, and zero_offset fall under this guideline. # Reference: http://www.aps.anl.gov/epics/tech-talk/2014/msg00057.php # # # Author: Wesley Moore # Date: Sept 2014 # record(asyn, "$(P)$(R)ASYN") { field(PORT, "$(PORT)") field(OEOS, "\r\n") field(IEOS, "\r\n") } ####################################### # Inputs ####################################### record(bi, "$(P)$(R)AC_DC:RAW") { field(DESC, "AC/DC mode raw") field(DTYP, "stream") field(INP, "@hallprobe.proto getACDC $(PORT)") field(ZNAM, "D") field(ONAM, "A") field(SCAN, "1 second") field(FLNK, "$(P)$(R)AC_DC.PROC") } record(bi, "$(P)$(R)AC_DC") { field(DESC, "AC/DC mode") field(INP, "$(P)$(R)AC_DC:RAW") field(ZNAM, "DC mode") field(ONAM, "AC mode") } record(ai, "$(P)$(R)SCALE") { field(DESC, "Scale Factor") field(DTYP, "stream") field(INP, "@hallprobe.proto getScale $(PORT)") field(PREC, "6") field(SCAN, "1 second") field(FLNK, "$(P)$(R)SCALE:SYNC") } record(ai, "$(P)$(R)FIELD") { field(DESC, "Field Reading") field(DTYP, "stream") field(INP, "@hallprobe.proto getField $(PORT)") field(PREC, "5") field(SCAN, "1 second") } record(bi, "$(P)$(R)DGTL_FLT") { field(DESC, "Digital Filtering") field(DTYP, "stream") field(INP, "@hallprobe.proto getDigFltr $(PORT)") field(ZNAM, "OFF") field(ONAM, "ON") field(SCAN, "1 second") } record(mbbi, "$(P)$(R)DISP_MODE:RAW") { field(DESC, "Display Mode Raw") field(DTYP, "stream") field(INP, "@hallprobe.proto getDispMode $(PORT)") field(ZRST, "H") field(ONST, "N") field(TWST, "T") field(SCAN, "1 second") field(FLNK, "$(P)$(R)DISP_MODE") } record(mbbi, "$(P)$(R)DISP_MODE") { field(DESC, "Display Mode") field(INP, "$(P)$(R)DISP_MODE:RAW") field(ZRST, "Hold Peak") field(ONST, "Normal Field") field(TWST, "Temperature") } record(ai, "$(P)$(R)OFFSET") { field(DESC, "Zero Offset") field(DTYP, "stream") field(INP, "@hallprobe.proto getOffset $(PORT)") field(PREC, "3") field(SCAN, "1 second") field(FLNK, "$(P)$(R)OFFSET:SYNC") } record(ai, "$(P)$(R)PEAK") { field(DESC, "Peak Reading") field(DTYP, "stream") field(INP, "@hallprobe.proto getPeak $(PORT)") field(PREC, "5") field(SCAN, "1 second") } record(mbbi, "$(P)$(R)RANGE") { field(DESC, "Range") field(DTYP, "stream") field(INP, "@hallprobe.proto getRange $(PORT)") field(ZRST, "0.3 telsa") field(ONST, "0.6 telsa") field(TWST, "1.2 telsa") field(THST, "3.0 telsa") field(SCAN, "1 second") } record(ai, "$(P)$(R)TEMP") { field(DESC, "Temperature") field(DTYP, "stream") field(INP, "@hallprobe.proto getTemp $(PORT)") field(EGU, "C") field(PREC, "2") field(SCAN, "1 second") field(FLNK, "$(P)$(R)TEMP_F") } record(calc, "$(P)$(R)TEMP_F") { field(DESC, "Temperature F") field(INPA, "$(P)$(R)TEMP") field(CALC, "A*1.8 + 32.0") field(EGU, "F") field(PREC, "2") } record(ai, "$(P)$(R)ZERO_OFFSET") { field(DESC, "Curr. Zeroing Offset") field(DTYP, "stream") field(INP, "@hallprobe.proto getZeroOffset $(PORT)") field(PREC, "6") field(SCAN, "1 second") field(FLNK, "$(P)$(R)ZERO_OFFSET:SYNC") } ####################################### # Outputs ####################################### record(bo, "$(P)$(R)AC_DC:SET") { field(DESC, "Function AC or DC") field(DTYP, "stream") field(OUT, "@hallprobe.proto setACDC $(PORT)") field(ZNAM, "AC") field(ONAM, "DC") } record(ao, "$(P)$(R)SCALE:SET") { field(DESC, "Define Scale") field(OUT, "$(P)$(R)SCALE:OUT PP") field(PREC, "6") field(VAL, "1.0") } record(ao, "$(P)$(R)SCALE:OUT") { field(DESC, "Write scale to hw") field(SDIS, "$(P)$(R)SCALE:SYNC.PACT") field(DISV, "1") field(DTYP, "stream") field(OUT, "@hallprobe.proto setScale $(PORT)") field(PREC, "6") } record(ao, "$(P)$(R)SCALE:SYNC") { field(DESC, "Keep setpoint updated") field(DOL, "$(P)$(R)SCALE NPP") field(OMSL, "closed_loop") field(OUT, "$(P)$(R)SCALE:SET PP") field(SDIS, "$(P)$(R)SYNC_DISABLE" ) field(PREC, "6") } record(bo, "$(P)$(R)SCALE:RESET") { field(DESC, "Reset Scale Value") field(DTYP, "stream") field(OUT, "@hallprobe.proto setClrScale $(PORT)") } record(bo, "$(P)$(R)DGTL_FLT:SET") { field(DESC, "Digital Filtering") field(DTYP, "stream") field(OUT, "@hallprobe.proto setDigFltr $(PORT)") field(ZNAM, "OFF") field(ONAM, "ON") field(FLNK, "$(P)$(R)DGTL_FLT.PROC") } record(mbbo, "$(P)$(R)DISP_MODE:SET") { field(DESC, "Display Mode") field(DTYP, "stream") field(OUT, "@hallprobe.proto setDispMode $(PORT)") field(ZRST, "Hold Peak") field(ONST, "Normal Field") field(TWST, "Temperature") } record(ao, "$(P)$(R)FIELD:SET") { field(DESC, "Define Curr. Field") field(DTYP, "stream") field(OUT, "@hallprobe.proto setField $(PORT)") field(PREC, "5") } record(ao, "$(P)$(R)OFFSET:SET") { field(DESC, "Define Offset") field(OUT, "$(P)$(R)OFFSET:OUT PP") field(PREC, "3") field(DRVH, "79999.9") field(DRVL, "-79999.9") field(HOPR, "79999.9") field(LOPR, "-79999.9") field(VAL, "0.0") } record(ao, "$(P)$(R)OFFSET:OUT") { field(DESC, "Define Offset") field(DTYP, "stream") field(OUT, "@hallprobe.proto setOffset $(PORT)") field(PREC, "3") } record(ao, "$(P)$(R)OFFSET:SYNC") { field(DESC, "Keep setpoint updated") field(DOL, "$(P)$(R)OFFSET NPP") field(OMSL, "closed_loop") field(OUT, "$(P)$(R)OFFSET:SET PP") field(SDIS, "$(P)$(R)SYNC_DISABLE" ) field(PREC, "3") } record(bo, "$(P)$(R)OFFSET:RESET") { field(DESC, "Reset Offset Value") field(DTYP, "stream") field(OUT, "@hallprobe.proto setClrOffset $(PORT)") } record(bo, "$(P)$(R)PEAK:RESET") { field(DESC, "Reset Peak Value") field(DTYP, "stream") field(OUT, "@hallprobe.proto setClrPeak $(PORT)") } record(mbbo, "$(P)$(R)RANGE:SET") { field(DESC, "Range") field(DTYP, "stream") field(OUT, "@hallprobe.proto setRange $(PORT)") field(ZRST, "0.3 telsa") field(ZRVL, "0") field(ONST, "0.6 telsa") field(ONVL, "1") field(TWST, "1.2 telsa") field(TWVL, "2") field(THST, "3.0 telsa") field(THVL, "3") } record(mbbo, "$(P)$(R)UNITS:SET") { field(DESC, "Units") field(DTYP, "stream") field(OUT, "@hallprobe.proto setUnits $(PORT)") field(ZRST, "Gauss") field(ONST, "Telsa") } record(bo, "$(P)$(R)ZERO:SET") { field(DESC, "Zero Reading") field(DTYP, "stream") field(OUT, "@hallprobe.proto setZero $(PORT)") field(FLNK, "$(P)$(R)OFFSET.PROC") } record(bo, "$(P)$(R)ZERO_OFFSET:RESET") { field(DESC, "Reset Zero Value") field(DTYP, "stream") field(OUT, "@hallprobe.proto setClrZeroOffset $(PORT)") } record(ao, "$(P)$(R)ZERO_OFFSET:SET") { field(DESC, "Define Zero Offset") field(OUT, "$(P)$(R)ZERO_OFFSET:OUT PP") field(PREC, "6") field(VAL, "0.0") } record(ao, "$(P)$(R)ZERO_OFFSET:OUT") { field(DESC, "Define Zero Offset") field(SDIS, "$(P)$(R)ZERO_OFFSET:SYNC.PACT") field(DISV, "1") field(DTYP, "stream") field(OUT, "@hallprobe.proto setZeroOffset $(PORT)") field(PREC, "6") } record(ao, "$(P)$(R)ZERO_OFFSET:SYNC") { field(DESC, "Keep setpoint updated") field(DOL, "$(P)$(R)ZERO_OFFSET NPP") field(OMSL, "closed_loop") field(OUT, "$(P)$(R)ZERO_OFFSET:SET PP") field(SDIS, "$(P)$(R)SYNC_DISABLE" ) field(PREC, "6") } # Record that sets the value for SYNC DIABLE after some delay record(calcout, "$(P)$(R)SYNC_TIMEOUT") { field(DESC, "timeout 4 SYNCS") field(VAL , "0") field(PINI, "NO") field(SCAN, "5 second") field( OUT, "$(P)$(R)SYNC_DISABLE PP") field(OOPT, "Transition To Non-zero") field(DOPT, "Use OCAL") field(CALC, "1") field(OCAL, "1") field(ODLY, "60") } # DISABLE SYNCS by setting their DISA fields. # This was introduced because there seems to be # some wrong values geting set to the SYNCed parameters # and suspicion is that there occasional bad readback # value that gets propagated to the setpoints. record(bi, "$(P)$(R)SYNC_DISABLE" ) { field( SCAN, "Passive" ) field( PINI, "YES" ) field( VAL , "0" ) field( ZNAM, "ENABLED" ) field( ONAM, "DISABLED" ) }