From 623cc8e12a94f07d5a47380d665d996eb7166da4 Mon Sep 17 00:00:00 2001 From: Edward Wall Date: Fri, 27 Mar 2026 14:36:07 +0100 Subject: [PATCH] first attempt at a retry --- db/sans_llb_beamstop.db | 53 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/db/sans_llb_beamstop.db b/db/sans_llb_beamstop.db index 39011e3..5f95339 100644 --- a/db/sans_llb_beamstop.db +++ b/db/sans_llb_beamstop.db @@ -15,19 +15,64 @@ record(longout, "$(INSTR)$(SPS_REGISTER_NAME):BEAMSTOP") field(DRVL, 1) field(DRVH, 3) field(PINI, "NO") - field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):TRIGGER-DELAY PP") + field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):RESTART-RETRIES PP") } -record(seq, "$(INSTR)$(SPS_REGISTER_NAME):TRIGGER-DELAY") +# We want to check whether or not a retry is necessary, just +# before we trigger it, so we want the delay, before the check +# it seems the that ODLY in the calcout is described as delaying +# writing to the OUT link, but delaying CALC, which would +# determe whether or not writing is even necessary + +record(longout, "$(INSTR)$(SPS_REGISTER_NAME):RESTART-RETRIES") +{ + field(DESC, "Empty retries as got knew move command") + field(OUT, "$(INSTR)$(SPS_REGISTER_NAME):RETRIES NPP") + field(DOL, "0") + field(OMSL, "closed_loop") + field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):RETRYING-TRIGGER PP") +} + +record(seq, "$(INSTR)$(SPS_REGISTER_NAME):INIT-TRIGGER-DELAY") { field(DESC, "Delays Internal Trigger as SPS too slow") field(DOL0, 1) - field(LNK0, "$(INSTR)$(SPS_REGISTER_NAME):TRIGGER PP") + field(LNK0, "$(INSTR)$(SPS_REGISTER_NAME):RETRYING-TRIGGER.PROC PP") field(DLY0, 0.5) field(SELM, "All") field(PINI, "NO") } +record(seq, "$(INSTR)$(SPS_REGISTER_NAME):RETRY-TRIGGER-DELAY") +{ + field(DESC, "Delays Internal Trigger as SPS too slow") + field(DOL0, 1) + field(LNK0, "$(INSTR)$(SPS_REGISTER_NAME):RETRYING-TRIGGER.PROC PP") + field(DLY0, 1) + field(SELM, "All") + field(PINI, "NO") +} + +record(calcout, "$(INSTR)$(SPS_REGISTER_NAME):RETRYING-TRIGGER") +{ + field(DESC, "Delays Internal Trigger as SPS too slow and increments retry") + field(INPA, "$(INSTR)$(SPS_REGISTER_NAME):RETRIES NPP") + field(INPB, "$(INSTR)$(SPS_REGISTER_NAME):BEAMSTOP NPP") + field(INPC, "$(INSTR)$(SPS_REGISTER_NAME):BEAMSTOP_RBV NPP") + field(INPD, "$(INSTR)$(SPS_REGISTER_NAME):MOVES NPP") + field(CALC, "(A < 3) && (H # I) && (D = 0) ? A + 1 : 0") + field(OUT, "$(INSTR)$(SPS_REGISTER_NAME):RETRIES PP") + field(calcoutOOPT, "When Non-zero") + field(DOPT, "Use CALC") +} + +record(longin, "$(INSTR)$(SPS_REGISTER_NAME):RETRIES") +{ + field(DESC, "Total number of retries for current move") + field(VAL, 0) + field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):TRIGGER PP") +} + record(longout, "$(INSTR)$(SPS_REGISTER_NAME):TRIGGER") { field(DESC, "Internal Trigger") @@ -35,7 +80,7 @@ record(longout, "$(INSTR)$(SPS_REGISTER_NAME):TRIGGER") field(OMSL, "closed_loop") field(DOL, 1) field(PINI, "NO") - field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS PP") + field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):RETRYING-TRIGGER PP") } record(calc, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS")