From d1597e1d65a53ec3cc96d7da4fa3edcb6533a169 Mon Sep 17 00:00:00 2001 From: Edward Wall Date: Mon, 19 May 2025 11:28:24 +0200 Subject: [PATCH] Clear control bits before setting selected to 1 and inform user if connection to SPS is lost --- db/shutter.db | 33 +++++++++++++++++++++++++++------ db/writebit.db | 1 + 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/db/shutter.db b/db/shutter.db index fa079c1..6a44e79 100644 --- a/db/shutter.db +++ b/db/shutter.db @@ -6,13 +6,23 @@ record(bo, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER") field(VAL, 0) field(ZNAM, "Closed") field(ONAM, "Open") - field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-CONTROL PP") + field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):CLEAR-CONTROL PP") } # The Exposed SPS Interface has an open register and a close register. You need -# to write 1 to the corresponding register to perform said action. This, in -# combination with "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER", maps the binay 0/1 -# to writing a 1 to the required register. +# to write 1 to the corresponding register to perform said action and make sure +# that the other bit is set back to 0. These two records, in combination with +# "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER", first clear both control bits and +# then maps the binay 0/1 to writing a 1 to the required register. +record(dfanout, "$(INSTR)$(SPS_REGISTER_NAME):CLEAR-CONTROL") +{ + field(DOL, 0) + field(OUTA, "$(INSTR)$(SPS_REGISTER_NAME):CLOSE-SHUTTER PP") + field(OUTB, "$(INSTR)$(SPS_REGISTER_NAME):OPEN-SHUTTER PP") + field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-CONTROL PP") + field(SELM, "All") +} + record(seq, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-CONTROL") { field(SELM, "Specified") @@ -32,7 +42,9 @@ record(calc, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS") field(INPD, "$(INSTR)$(SPS_REGISTER_NAME):PSYS-OK NPP") field(INPE, "$(INSTR)$(SPS_REGISTER_NAME):EMERGENCY-STOP-OFF NPP") field(INPF, "$(INSTR)$(SPS_REGISTER_NAME):MOVES NPP") - field(CALC, "(E=0||B=0)?3:(A=0||D=0)?2:F=1?1:C=0?3:0") + field(INPG, "$(INSTR)$(SPS_REGISTER_NAME):ConnStatusFetch NPP") + field(INPH, "$(INSTR)$(SPS_REGISTER_NAME):ConnStatusWrite NPP") + field(CALC, "(G=0||H=0||E=0||B=0)?3:(A=0||D=0)?2:F=1?1:C=0?3:0") field(SCAN, ".1 second") field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):STATUS PP") } @@ -60,6 +72,12 @@ record(stringout, "$(INSTR)$(SPS_REGISTER_NAME):MOTION-Msg") field(VAL, "Shutter in motion") } +record(stringout, "$(INSTR)$(SPS_REGISTER_NAME):Connection-Msg") +{ + field(DESC, "Shutter connection disrupted message") + field(VAL, "Connection to SPS Disrupted") +} + record(scalcout, "$(INSTR)$(SPS_REGISTER_NAME):STATUS-Msg") { field(DESC, "Status Message") @@ -70,6 +88,8 @@ record(scalcout, "$(INSTR)$(SPS_REGISTER_NAME):STATUS-Msg") field(INPF, "$(INSTR)$(SPS_REGISTER_NAME):PSYS-OK NPP") field(INPG, "$(INSTR)$(SPS_REGISTER_NAME):EMERGENCY-STOP-OFF NPP") field(INPH, "$(INSTR)$(SPS_REGISTER_NAME):MOVES NPP") + field(INPI, "$(INSTR)$(SPS_REGISTER_NAME):ConnStatusFetch NPP") + field(INPJ, "$(INSTR)$(SPS_REGISTER_NAME):ConnStatusWrite NPP") field(INAA, "$(INSTR)$(SPS_REGISTER_NAME):OPEN-Msg NPP") field(INBB, "$(INSTR)$(SPS_REGISTER_NAME):REMOTE-Msg NPP") field(INCC, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-READY-Msg NPP") @@ -78,5 +98,6 @@ record(scalcout, "$(INSTR)$(SPS_REGISTER_NAME):STATUS-Msg") field(INFF, "$(INSTR)$(SPS_REGISTER_NAME):BLOCKED-REASON-Msg NPP") field(INGG, "$(INSTR)$(SPS_REGISTER_NAME):PSYS-OK-Msg NPP") field(INHH, "$(INSTR)$(SPS_REGISTER_NAME):MOTION-Msg NPP") - field(CALC, 'H=1?HH:G=0?DD:D=0?(EE+": "+FF):F=0?GG:C=0?CC:E=0?BB:AA') + field(INII, "$(INSTR)$(SPS_REGISTER_NAME):Connection-Msg NPP") + field(CALC, '(I=0||J=0)?II:H=1?HH:G=0?DD:D=0?(EE+": "+FF):F=0?GG:C=0?CC:E=0?BB:AA') } diff --git a/db/writebit.db b/db/writebit.db index 206fe83..271e1c8 100644 --- a/db/writebit.db +++ b/db/writebit.db @@ -5,4 +5,5 @@ record(bo, "$(INSTR)$(SPS_REGISTER_NAME):$(BIT_NAME)") field(OUT, "@$(SPS_REGISTER_NAME)/$(OFFSET) T=BYTE B=$(BIT)") field(ZNAM, "0") field(ONAM, "1") + field(HIGH, "$(HIGH=0)") } -- 2.49.0