158 lines
4.7 KiB
Plaintext
158 lines
4.7 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")
|
|
}
|
|
|
|
# TODO we might need to make sure we wait, when the channel is changed
|
|
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):HW_MT")
|
|
{
|
|
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):MT1 NPP")
|
|
field(INPC, "$(INSTR)$(NAME):MT2 NPP")
|
|
field(INPD, "$(INSTR)$(NAME):MT3 NPP")
|
|
field(INPE, "$(INSTR)$(NAME):MT4 NPP")
|
|
field(INPF, "$(INSTR)$(NAME):MT5 NPP")
|
|
field(INPG, "$(INSTR)$(NAME):MT6 NPP")
|
|
field(INPH, "$(INSTR)$(NAME):MT7 NPP")
|
|
field(INPI, "$(INSTR)$(NAME):MT8 NPP")
|
|
field(INPJ, "$(INSTR)$(NAME):MT9 NPP")
|
|
field(INPK, "$(INSTR)$(NAME):MT10 NPP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):RESET_HW_MT")
|
|
{
|
|
field(SELM, "All")
|
|
field(OMSL, "supervisory")
|
|
field(OUTA, "$(INSTR)$(NAME):RESET_HW_MT1 PP")
|
|
field(OUTB, "$(INSTR)$(NAME):RESET_HW_MT2 PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):RESET_HW_MT1")
|
|
{
|
|
field(SELM, "All")
|
|
field(OMSL, "supervisory")
|
|
field(OUTA, "$(INSTR)$(NAME):MT1 PP")
|
|
field(OUTB, "$(INSTR)$(NAME):MT2 PP")
|
|
field(OUTC, "$(INSTR)$(NAME):MT3 PP")
|
|
field(OUTD, "$(INSTR)$(NAME):MT4 PP")
|
|
field(OUTE, "$(INSTR)$(NAME):MT5 PP")
|
|
field(OUTF, "$(INSTR)$(NAME):MT6 PP")
|
|
field(OUTG, "$(INSTR)$(NAME):MT7 PP")
|
|
field(OUTH, "$(INSTR)$(NAME):MT8 PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):RESET_HW_MT2")
|
|
{
|
|
field(SELM, "All")
|
|
field(OMSL, "supervisory")
|
|
field(OUTA, "$(INSTR)$(NAME):MT9 PP")
|
|
field(OUTB, "$(INSTR)$(NAME):MT10 PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):CMONITORS")
|
|
{
|
|
field(SELM, "All")
|
|
field(OMSL, "supervisory")
|
|
field(OUTA, "$(INSTR)$(NAME):CMONITORS1 PP")
|
|
field(OUTB, "$(INSTR)$(NAME):CMONITORS2 PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):CMONITORS1")
|
|
{
|
|
field(SELM, "All")
|
|
field(OMSL, "supervisory")
|
|
field(OUTA, "$(INSTR)$(NAME):C1 PP")
|
|
field(OUTB, "$(INSTR)$(NAME):C2 PP")
|
|
field(OUTC, "$(INSTR)$(NAME):C3 PP")
|
|
field(OUTD, "$(INSTR)$(NAME):C4 PP")
|
|
field(OUTE, "$(INSTR)$(NAME):C5 PP")
|
|
field(OUTF, "$(INSTR)$(NAME):C6 PP")
|
|
field(OUTG, "$(INSTR)$(NAME):C7 PP")
|
|
field(OUTH, "$(INSTR)$(NAME):C8 PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):CMONITORS2")
|
|
{
|
|
field(SELM, "All")
|
|
field(OMSL, "supervisory")
|
|
field(OUTA, "$(INSTR)$(NAME):C9 PP")
|
|
field(OUTB, "$(INSTR)$(NAME):C10 PP")
|
|
}
|
|
|
|
################################################################################
|
|
# Count Commands
|
|
|
|
# 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):THRESHOLD-F")
|
|
{
|
|
field(OMSL, "supervisory")
|
|
field(SELM, "All")
|
|
field(OUTA, "$(INSTR)$(NAME):THRESHOLD-F1 PP")
|
|
field(OUTB, "$(INSTR)$(NAME):THRESHOLD-F2 PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):THRESHOLD-F1")
|
|
{
|
|
field(OMSL, "supervisory")
|
|
field(SELM, "All")
|
|
field(OUTA, "$(INSTR)$(NAME):THRESH1 PP")
|
|
field(OUTB, "$(INSTR)$(NAME):THRESH2 PP")
|
|
field(OUTC, "$(INSTR)$(NAME):THRESH3 PP")
|
|
field(OUTD, "$(INSTR)$(NAME):THRESH4 PP")
|
|
field(OUTE, "$(INSTR)$(NAME):THRESH5 PP")
|
|
field(OUTF, "$(INSTR)$(NAME):THRESH6 PP")
|
|
field(OUTG, "$(INSTR)$(NAME):THRESH7 PP")
|
|
field(OUTH, "$(INSTR)$(NAME):THRESH8 PP")
|
|
}
|
|
|
|
record(dfanout,"$(INSTR)$(NAME):THRESHOLD-F2")
|
|
{
|
|
field(OMSL, "supervisory")
|
|
field(SELM, "All")
|
|
field(OUTA, "$(INSTR)$(NAME):THRESH9 PP")
|
|
field(OUTB, "$(INSTR)$(NAME):THRESH10 PP")
|
|
}
|
|
|
|
################################################################################
|
|
# Read all monitors values
|