161 lines
5.0 KiB
Plaintext
161 lines
5.0 KiB
Plaintext
# EPICS Database for streamdevice support for functionality specific to the 2nd
|
|
# Generation Systems
|
|
#
|
|
# Macros
|
|
# INSTR - Prefix
|
|
# NAME - the device name, e.g. DAQV2
|
|
# PROTO - Stream device protocol file
|
|
# ASYN_PORT - Low level Asyn IP Port to DAQ
|
|
|
|
################################################################################
|
|
# Status Variables
|
|
|
|
record(longout, "$(INSTR)$(NAME):MONITOR-CHANNEL")
|
|
{
|
|
field(DESC, "PRESET_COUNT Monitors this channel")
|
|
field(DRVL, "1") # Smallest Monitor Channel
|
|
field(DRVH, "$(CHANNELS)") # Largest Monitor Channel
|
|
field(DTYP, "stream")
|
|
field(OUT, "@$(PROTO) writePresetMonitor($(INSTR)$(NAME):) $(ASYN_PORT)")
|
|
field(FLNK, "$(INSTR)$(NAME):MONITOR-CHANNEL_RBV.PROC")
|
|
}
|
|
|
|
record(longin, "$(INSTR)$(NAME):MONITOR-CHANNEL_RBV")
|
|
{
|
|
field(DESC, "PRESET_COUNT Monitors this channel")
|
|
field(DTYP, "stream")
|
|
field(INP, "@$(PROTO) readPresetMonitor($(INSTR)$(NAME):) $(ASYN_PORT)")
|
|
field(SCAN, ".5 second")
|
|
field(FLNK, "$(INSTR)$(NAME):CORRECT_MONITOR_CHANNEL.PROC")
|
|
}
|
|
|
|
# Force back to 1 if it is 0, as 0 has no meaning...
|
|
record(seq, "$(INSTR)$(NAME):CORRECT_MONITOR_CHANNEL")
|
|
{
|
|
field(SELM, "Specified")
|
|
field(SELL, "$(INSTR)$(NAME):MONITOR-CHANNEL_RBV.VAL NPP")
|
|
field(DO0, 1)
|
|
field(LNK0, "$(INSTR)$(NAME):MONITOR-CHANNEL PP")
|
|
}
|
|
|
|
record(sel, "$(INSTR)$(NAME):CH_PRESET")
|
|
{
|
|
field(DESC, "Monitor threshold to actually use")
|
|
field(SELM, "Specified")
|
|
field(NVL, "$(INSTR)$(NAME):MONITOR-CHANNEL_RBV.VAL NPP")
|
|
# Skip A as it corresponds to 0
|
|
field(INPB, "$(INSTR)$(NAME):CH1_PRESET NPP")
|
|
field(INPC, "$(INSTR)$(NAME):CH2_PRESET NPP")
|
|
field(INPD, "$(INSTR)$(NAME):CH3_PRESET NPP")
|
|
field(INPE, "$(INSTR)$(NAME):CH4_PRESET NPP")
|
|
field(INPF, "$(INSTR)$(NAME):CH5_PRESET NPP")
|
|
field(INPG, "$(INSTR)$(NAME):CH6_PRESET NPP")
|
|
field(INPH, "$(INSTR)$(NAME):CH7_PRESET NPP")
|
|
field(INPI, "$(INSTR)$(NAME):CH8_PRESET NPP")
|
|
field(INPJ, "$(INSTR)$(NAME):CH9_PRESET NPP")
|
|
field(INPK, "$(INSTR)$(NAME):CH10_PRESET NPP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):CH_PRESET_CLEAR")
|
|
{
|
|
field(DESC, "Clears all channel presets")
|
|
field(SELM, "All")
|
|
field(OMSL, "closed_loop")
|
|
field(DOL, 1)
|
|
field(OUTA, "$(INSTR)$(NAME):CH_PRESET_CLEAR1.PROC")
|
|
field(OUTB, "$(INSTR)$(NAME):CH_PRESET_CLEAR2.PROC")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):CH_PRESET_CLEAR1")
|
|
{
|
|
field(SELM, "All")
|
|
field(OMSL, "closed_loop")
|
|
field(DOL, 0)
|
|
field(OUTA, "$(INSTR)$(NAME):CH1_PRESET PP")
|
|
field(OUTB, "$(INSTR)$(NAME):CH2_PRESET PP")
|
|
field(OUTC, "$(INSTR)$(NAME):CH3_PRESET PP")
|
|
field(OUTD, "$(INSTR)$(NAME):CH4_PRESET PP")
|
|
field(OUTE, "$(INSTR)$(NAME):CH5_PRESET PP")
|
|
field(OUTF, "$(INSTR)$(NAME):CH6_PRESET PP")
|
|
field(OUTG, "$(INSTR)$(NAME):CH7_PRESET PP")
|
|
field(OUTH, "$(INSTR)$(NAME):CH8_PRESET PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):CH_PRESET_CLEAR2")
|
|
{
|
|
field(SELM, "All")
|
|
field(OMSL, "closed_loop")
|
|
field(DOL, 0)
|
|
field(OUTA, "$(INSTR)$(NAME):CH9_PRESET PP")
|
|
field(OUTB, "$(INSTR)$(NAME):CH10_PRESET PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):CH_CLEAR")
|
|
{
|
|
field(DESC, "Clears all channel counts")
|
|
field(SELM, "All")
|
|
field(OMSL, "closed_loop")
|
|
field(DOL, 1)
|
|
field(OUTA, "$(INSTR)$(NAME):CH_CLEAR1.PROC PP")
|
|
field(OUTB, "$(INSTR)$(NAME):CH_CLEAR2.PROC PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):CH_CLEAR1")
|
|
{
|
|
field(SELM, "All")
|
|
field(OMSL, "closed_loop")
|
|
field(DOL, 1)
|
|
field(OUTA, "$(INSTR)$(NAME):CH1_CLEAR.PROC PP")
|
|
field(OUTB, "$(INSTR)$(NAME):CH2_CLEAR.PROC PP")
|
|
field(OUTC, "$(INSTR)$(NAME):CH3_CLEAR.PROC PP")
|
|
field(OUTD, "$(INSTR)$(NAME):CH4_CLEAR.PROC PP")
|
|
field(OUTE, "$(INSTR)$(NAME):CH5_CLEAR.PROC PP")
|
|
field(OUTF, "$(INSTR)$(NAME):CH6_CLEAR.PROC PP")
|
|
field(OUTG, "$(INSTR)$(NAME):CH7_CLEAR.PROC PP")
|
|
field(OUTH, "$(INSTR)$(NAME):CH8_CLEAR.PROC PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):CH_CLEAR2")
|
|
{
|
|
field(SELM, "All")
|
|
field(OMSL, "closed_loop")
|
|
field(DOL, 1)
|
|
field(OUTA, "$(INSTR)$(NAME):CH9_CLEAR.PROC PP")
|
|
field(OUTB, "$(INSTR)$(NAME):CH10_CLEAR.PROC PP")
|
|
}
|
|
|
|
################################################################################
|
|
# The hardware stores a separate threshold for each channel, which is somewhat
|
|
# unintuitive for the user, as only one can actually be made use of at a time.
|
|
# So, we just write the threshold value to all channels when it is changed.
|
|
record(dfanout,"$(INSTR)$(NAME):CH_THRESHOLD")
|
|
{
|
|
field(DESC, "Sets Channel Lowrate Thresholds")
|
|
field(OMSL, "supervisory")
|
|
field(SELM, "All")
|
|
field(OUTA, "$(INSTR)$(NAME):CH_THRESHOLD1 PP")
|
|
field(OUTB, "$(INSTR)$(NAME):CH_THRESHOLD2 PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):CH_THRESHOLD1")
|
|
{
|
|
field(OMSL, "supervisory")
|
|
field(SELM, "All")
|
|
field(OUTA, "$(INSTR)$(NAME):CH1_THRESH PP")
|
|
field(OUTB, "$(INSTR)$(NAME):CH2_THRESH PP")
|
|
field(OUTC, "$(INSTR)$(NAME):CH3_THRESH PP")
|
|
field(OUTD, "$(INSTR)$(NAME):CH4_THRESH PP")
|
|
field(OUTE, "$(INSTR)$(NAME):CH5_THRESH PP")
|
|
field(OUTF, "$(INSTR)$(NAME):CH6_THRESH PP")
|
|
field(OUTG, "$(INSTR)$(NAME):CH7_THRESH PP")
|
|
field(OUTH, "$(INSTR)$(NAME):CH8_THRESH PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):CH_THRESHOLD2")
|
|
{
|
|
field(OMSL, "supervisory")
|
|
field(SELM, "All")
|
|
field(OUTA, "$(INSTR)$(NAME):CH9_THRESH PP")
|
|
field(OUTB, "$(INSTR)$(NAME):CH10_THRESH PP")
|
|
}
|