adds software time preset, improves preset monitor switching logic
This commit is contained in:
+49
-4
@@ -10,6 +10,15 @@
|
||||
################################################################################
|
||||
# Status Variables
|
||||
|
||||
# record(dfanout, "$(INSTR)$(NAME):RESET_MT$(CHANNEL)")
|
||||
# {
|
||||
# field(DESC, "Resets Internal Variables")
|
||||
# field(SELM, "All")
|
||||
# field(OMSL, "supervisory")
|
||||
# field(OUTA, "$(INSTR)$(NAME):M$(CHANNEL)_CLEARED PP")
|
||||
# field(OUTB, "$(INSTR)$(NAME):M$(CHANNEL)_PRESET PP")
|
||||
# }
|
||||
|
||||
# Trigger a change in status as clearing
|
||||
record(bo, "$(INSTR)$(NAME):T$(CHANNEL)")
|
||||
{
|
||||
@@ -37,13 +46,14 @@ record(bi, "$(INSTR)$(NAME):M$(CHANNEL)_CLEARED")
|
||||
field(ONAM, "CLEARING")
|
||||
}
|
||||
|
||||
# Current Status of Channel, i.e. is it ready to count?
|
||||
# Current Status of Channel, i.e. is it ready for a new operation?
|
||||
record(calc, "$(INSTR)$(NAME):S$(CHANNEL)")
|
||||
{
|
||||
field(DESC, "Stupid Nicos Stuff")
|
||||
field(INPA, "$(INSTR)$(NAME):STATUS NPP")
|
||||
field(INPB, "$(INSTR)$(NAME):M$(CHANNEL)_CLEARED NPP")
|
||||
field(CALC, "A == 1 || B")
|
||||
field(INPC, "$(INSTR)$(NAME):M$(CHANNEL)_PRESET NPP")
|
||||
field(CALC, "A == 1 || B || C")
|
||||
field(FLNK, "$(INSTR)$(NAME):MTS$(CHANNEL)")
|
||||
}
|
||||
|
||||
@@ -52,7 +62,7 @@ record(int64in, "$(INSTR)$(NAME):MT$(CHANNEL)")
|
||||
{
|
||||
field(DESC, "Monitor Count Threshold")
|
||||
field(VAL, 0)
|
||||
field(FLNK, "$(INSTR)$(NAME):SET-TYPE-MON$(CHANNEL)")
|
||||
field(FLNK, "$(INSTR)$(NAME):M$(CHANNEL)_SET")
|
||||
}
|
||||
|
||||
# Stop the count, if threshold is reached
|
||||
@@ -65,6 +75,42 @@ record(calcout, "$(INSTR)$(NAME):MTS$(CHANNEL)")
|
||||
field(OUT, "$(INSTR)$(NAME):STOP.PROC")
|
||||
}
|
||||
|
||||
record(dfanout, "$(INSTR)$(NAME):M$(CHANNEL)_SET")
|
||||
{
|
||||
field(DESC, "Trigger setting HW preset")
|
||||
field(SELM, "All")
|
||||
field(OMSL, "closed_loop")
|
||||
field(DOL, 1)
|
||||
field(OUTA, "$(INSTR)$(NAME):M$(CHANNEL)_PRESET PP")
|
||||
field(OUTB, "$(INSTR)$(NAME):SET-TYPE-MON$(CHANNEL).PROC PP")
|
||||
}
|
||||
|
||||
record(calcout, "$(INSTR)$(NAME):M$(CHANNEL)_CHECK_SET")
|
||||
{
|
||||
field(SCAN, ".1 second")
|
||||
field(INPA, "$(INSTR)$(NAME):M$(CHANNEL)_PRESET NPP")
|
||||
field(INPB, "$(INSTR)$(NAME):MONITOR-CHANNEL NPP")
|
||||
field(INPC, "$(INSTR)$(NAME):MONITOR-CHANNEL_RBV NPP")
|
||||
field(CALC, "A && ( ($(CHANNEL) # B) || (B = C) )")
|
||||
field(OOPT, "When Non-zero")
|
||||
field(DOPT, "Use OCAL")
|
||||
field(OCAL, "0")
|
||||
# This is just a delay, as otherwise, Nicos will not see
|
||||
# the $(INSTR)$(NAME):M$(CHANNEL)_PRESET state change
|
||||
# when not changing which monitor channel the preset
|
||||
# applies to. Is there a better way?
|
||||
field(ODLY, .5)
|
||||
field(OUT, "$(INSTR)$(NAME):M$(CHANNEL)_PRESET PP")
|
||||
}
|
||||
|
||||
record(bi, "$(INSTR)$(NAME):M$(CHANNEL)_PRESET")
|
||||
{
|
||||
field(DESC, "Channel Status")
|
||||
field(VAL, 0)
|
||||
field(ZNAM, "OK")
|
||||
field(ONAM, "SETTING")
|
||||
}
|
||||
|
||||
record(calcout, "$(INSTR)$(NAME):SET-TYPE-MON$(CHANNEL)")
|
||||
{
|
||||
field(DESC, "Set to HW Mon Type if possible")
|
||||
@@ -78,7 +124,6 @@ record(calcout, "$(INSTR)$(NAME):SET-TYPE-MON$(CHANNEL)")
|
||||
field(OUT, "$(INSTR)$(NAME):SET-HW-CHANNEL$(CHANNEL).PROC")
|
||||
}
|
||||
|
||||
# TODO, it might be necessary to wait for this to complete
|
||||
record(ao, "$(INSTR)$(NAME):SET-HW-CHANNEL$(CHANNEL)")
|
||||
{
|
||||
field(OMSL, "closed_loop")
|
||||
|
||||
@@ -87,6 +87,37 @@ record(dfanout,"$(INSTR)$(NAME):RESET_HW_MT2")
|
||||
field(OUTB, "$(INSTR)$(NAME):MT10 PP")
|
||||
}
|
||||
|
||||
# record(dfanout,"$(INSTR)$(NAME):RESET_MT")
|
||||
# {
|
||||
# field(DESC, "Resets Internal Variables")
|
||||
# field(SELM, "All")
|
||||
# field(OMSL, "supervisory")
|
||||
# field(OUTA, "$(INSTR)$(NAME):RESET_MT1 PP")
|
||||
# field(OUTB, "$(INSTR)$(NAME):RESET_MT2 PP")
|
||||
# }
|
||||
#
|
||||
# record(dfanout,"$(INSTR)$(NAME):RESET_MT1")
|
||||
# {
|
||||
# field(SELM, "All")
|
||||
# field(OMSL, "supervisory")
|
||||
# field(OUTA, "$(INSTR)$(NAME):RESET_MT1 PP")
|
||||
# field(OUTB, "$(INSTR)$(NAME):RESET_MT2 PP")
|
||||
# field(OUTC, "$(INSTR)$(NAME):RESET_MT3 PP")
|
||||
# field(OUTD, "$(INSTR)$(NAME):RESET_MT4 PP")
|
||||
# field(OUTE, "$(INSTR)$(NAME):RESET_MT5 PP")
|
||||
# field(OUTF, "$(INSTR)$(NAME):RESET_MT6 PP")
|
||||
# field(OUTG, "$(INSTR)$(NAME):RESET_MT7 PP")
|
||||
# field(OUTH, "$(INSTR)$(NAME):RESET_MT8 PP")
|
||||
# }
|
||||
#
|
||||
# record(dfanout,"$(INSTR)$(NAME):RESET_MT2")
|
||||
# {
|
||||
# field(SELM, "All")
|
||||
# field(OMSL, "supervisory")
|
||||
# field(OUTA, "$(INSTR)$(NAME):RESET_MT9 PP")
|
||||
# field(OUTB, "$(INSTR)$(NAME):RESET_MT10 PP")
|
||||
# }
|
||||
|
||||
record(dfanout,"$(INSTR)$(NAME):CMONITORS")
|
||||
{
|
||||
field(SELM, "All")
|
||||
|
||||
@@ -41,6 +41,16 @@ record(dfanout,"$(INSTR)$(NAME):RESET_HW_MT")
|
||||
field(OUTD, "$(INSTR)$(NAME):MT4 PP")
|
||||
}
|
||||
|
||||
# record(dfanout,"$(INSTR)$(NAME):RESET_MT")
|
||||
# {
|
||||
# field(OMSL, "supervisory")
|
||||
# field(SELM, "All")
|
||||
# field(OUTA, "$(INSTR)$(NAME):RESET_MT1 PP")
|
||||
# field(OUTB, "$(INSTR)$(NAME):RESET_MT2 PP")
|
||||
# field(OUTC, "$(INSTR)$(NAME):RESET_MT3 PP")
|
||||
# field(OUTD, "$(INSTR)$(NAME):RESET_MT4 PP")
|
||||
# }
|
||||
|
||||
record(dfanout,"$(INSTR)$(NAME):CMONITORS")
|
||||
{
|
||||
field(SELM, "All")
|
||||
|
||||
@@ -45,6 +45,20 @@ record(dfanout,"$(INSTR)$(NAME):RESET_HW_MT")
|
||||
field(OUTH, "$(INSTR)$(NAME):MT8 PP")
|
||||
}
|
||||
|
||||
# record(dfanout,"$(INSTR)$(NAME):RESET_MT")
|
||||
# {
|
||||
# field(OMSL, "supervisory")
|
||||
# field(SELM, "All")
|
||||
# field(OUTA, "$(INSTR)$(NAME):RESET_MT1 PP")
|
||||
# field(OUTB, "$(INSTR)$(NAME):RESET_MT2 PP")
|
||||
# field(OUTC, "$(INSTR)$(NAME):RESET_MT3 PP")
|
||||
# field(OUTD, "$(INSTR)$(NAME):RESET_MT4 PP")
|
||||
# field(OUTE, "$(INSTR)$(NAME):RESET_MT5 PP")
|
||||
# field(OUTF, "$(INSTR)$(NAME):RESET_MT6 PP")
|
||||
# field(OUTG, "$(INSTR)$(NAME):RESET_MT7 PP")
|
||||
# field(OUTH, "$(INSTR)$(NAME):RESET_MT8 PP")
|
||||
# }
|
||||
|
||||
record(dfanout,"$(INSTR)$(NAME):CMONITORS")
|
||||
{
|
||||
field(SELM, "All")
|
||||
|
||||
@@ -22,6 +22,24 @@ record(longout, "$(INSTR)$(NAME):FULL-RESET")
|
||||
field(DTYP, "stream")
|
||||
}
|
||||
|
||||
record(dfanout, "$(INSTR)$(NAME):RESET")
|
||||
{
|
||||
field(DESC, "Reset internal state")
|
||||
field(SELM, "All")
|
||||
field(OMSL, "closed_loop")
|
||||
field(DOL, "0")
|
||||
# Internal Count Timer
|
||||
field(OUTA, "$(INSTR)$(NAME):COUNT_STARTED PP")
|
||||
# Time Preset
|
||||
# field(OUTB, "$(INSTR)$(NAME):HW_ETT PP")
|
||||
# field(OUTC, "$(INSTR)$(NAME):ET_CLEARED PP")
|
||||
# Monitor Presets
|
||||
# field(OUTD, "$(INSTR)$(NAME):RESET_HW_MT PP")
|
||||
# field(OUTE, "$(INSTR)$(NAME):RESET_MT PP")
|
||||
# HW Preset Type
|
||||
# field(OUTF, "$(INSTR)$(NAME):PRESET-TYPE PP")
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Status Variables
|
||||
|
||||
@@ -232,6 +250,7 @@ record(calc, "$(INSTR)$(NAME):ETS")
|
||||
field(INPA, "$(INSTR)$(NAME):STATUS NPP")
|
||||
field(INPB, "$(INSTR)$(NAME):ET_CLEARED NPP")
|
||||
field(CALC, "A == 1 || B")
|
||||
field(FLNK, "$(INSTR)$(NAME):ETCHECK")
|
||||
}
|
||||
|
||||
# Time Threshold
|
||||
@@ -242,6 +261,16 @@ record(int64in, "$(INSTR)$(NAME):HW_ETT")
|
||||
field(FLNK, "$(INSTR)$(NAME):SET-TYPE-TIME")
|
||||
}
|
||||
|
||||
# Stop the count, if threshold is reached
|
||||
record(calcout, "$(INSTR)$(NAME):ETCHECK")
|
||||
{
|
||||
field(INPA, "$(INSTR)$(NAME):ELAPSED-TIME NPP")
|
||||
field(INPB, "$(INSTR)$(NAME):HW_ETT NPP")
|
||||
field(CALC, "B > 0 && A >= B")
|
||||
field(OOPT, "When Non-zero")
|
||||
field(OUT, "$(INSTR)$(NAME):STOP.PROC")
|
||||
}
|
||||
|
||||
record(calcout, "$(INSTR)$(NAME):SET-TYPE-TIME")
|
||||
{
|
||||
field(INPA, "$(INSTR)$(NAME):PRESET-TYPE NPP")
|
||||
|
||||
Reference in New Issue
Block a user