From d95ea5d5611a9b5be6ca70156fd152753128ea0d Mon Sep 17 00:00:00 2001 From: Edward Wall Date: Tue, 10 Mar 2026 10:24:37 +0100 Subject: [PATCH 1/6] add latch for the case that shutter change of state is triggered --- db/shutter.db | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/db/shutter.db b/db/shutter.db index 6a44e79..66aa230 100644 --- a/db/shutter.db +++ b/db/shutter.db @@ -6,9 +6,41 @@ record(bo, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER") field(VAL, 0) field(ZNAM, "Closed") field(ONAM, "Open") + field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):SET-BUSY PP") +} + +record(bo, "$(INSTR)$(SPS_REGISTER_NAME):RESET") +{ + field(DESC, "PV For Resetting internal state") + field(VAL, 0) + field(OUT, "$(INSTR)$(NAME):BUSY PP") +} + +record(bo, "$(INSTR)$(SPS_REGISTER_NAME):SET-BUSY") +{ + field(DESC, "Trigger Internal Busy Status") + field(VAL, 1) + field(OUT, "$(INSTR)$(NAME):BUSY PP") field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):CLEAR-CONTROL PP") } +record(seq, "$(INSTR)$(NAME):SET-READY") +{ + field(DESC, "Trigger Returned to Ready Status") + field(LNK1, "$(INSTR)$(NAME):BUSY PP") + field(DO1, 0) + field(SELM, "Specified") + field(SELL, "$(INSTR)$(NAME):SHUTTER-STATUS.VAL") +} + +record(bi, "$(INSTR)$(SPS_REGISTER_NAME):BUSY") +{ + field(DESC, "Internal Busy State") + field(VAL, 0) + field(ZNAM, "Ready") + field(ONAM, "Busy") +} + # 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 and make sure # that the other bit is set back to 0. These two records, in combination with @@ -33,7 +65,7 @@ record(seq, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-CONTROL") field(LNK1, "$(INSTR)$(SPS_REGISTER_NAME):OPEN-SHUTTER PP") } -record(calc, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS") +record(calc, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-STATUS") { field(DESC, "Maps Status Variables to singular status") field(INPA, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-READY NPP") @@ -46,13 +78,22 @@ record(calc, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS") 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):INTERNAL-STATUS PP") +} + +record(calc, "$(INSTR)$(SPS_REGISTER_NAME):INTERNAL-STATUS") +{ + field(DESC, "Maps Status Variables to singular status") + field(INPA, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-STATUS NPP") + field(INPB, "$(INSTR)$(SPS_REGISTER_NAME):BUSY NPP") + field(CALC, "( A=0 && B=1 )?1:A") field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):STATUS PP") } record(mbbi, "$(INSTR)$(SPS_REGISTER_NAME):STATUS") { field(DESC, "Status of Shutter") - field(INP, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS NPP") + field(INP, "$(INSTR)$(SPS_REGISTER_NAME):INTERNAL-STATUS NPP") field(ZRVL, "0") field(ZRST, "Okay") field(ONVL, "1") -- 2.52.0 From 4f3bad5751098c6ebdb58367a5632c3aa251ebc2 Mon Sep 17 00:00:00 2001 From: Edward Wall Date: Wed, 18 Mar 2026 10:53:10 +0100 Subject: [PATCH 2/6] this is surely a simpler way to detect a change is still occuring --- db/shutter.db | 49 +++++-------------------------------------------- 1 file changed, 5 insertions(+), 44 deletions(-) diff --git a/db/shutter.db b/db/shutter.db index 66aa230..6cf7372 100644 --- a/db/shutter.db +++ b/db/shutter.db @@ -6,41 +6,9 @@ record(bo, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER") field(VAL, 0) field(ZNAM, "Closed") field(ONAM, "Open") - field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):SET-BUSY PP") -} - -record(bo, "$(INSTR)$(SPS_REGISTER_NAME):RESET") -{ - field(DESC, "PV For Resetting internal state") - field(VAL, 0) - field(OUT, "$(INSTR)$(NAME):BUSY PP") -} - -record(bo, "$(INSTR)$(SPS_REGISTER_NAME):SET-BUSY") -{ - field(DESC, "Trigger Internal Busy Status") - field(VAL, 1) - field(OUT, "$(INSTR)$(NAME):BUSY PP") field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):CLEAR-CONTROL PP") } -record(seq, "$(INSTR)$(NAME):SET-READY") -{ - field(DESC, "Trigger Returned to Ready Status") - field(LNK1, "$(INSTR)$(NAME):BUSY PP") - field(DO1, 0) - field(SELM, "Specified") - field(SELL, "$(INSTR)$(NAME):SHUTTER-STATUS.VAL") -} - -record(bi, "$(INSTR)$(SPS_REGISTER_NAME):BUSY") -{ - field(DESC, "Internal Busy State") - field(VAL, 0) - field(ZNAM, "Ready") - field(ONAM, "Busy") -} - # 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 and make sure # that the other bit is set back to 0. These two records, in combination with @@ -65,7 +33,7 @@ record(seq, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-CONTROL") field(LNK1, "$(INSTR)$(SPS_REGISTER_NAME):OPEN-SHUTTER PP") } -record(calc, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-STATUS") +record(calc, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS") { field(DESC, "Maps Status Variables to singular status") field(INPA, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-READY NPP") @@ -76,24 +44,17 @@ record(calc, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-STATUS") field(INPF, "$(INSTR)$(SPS_REGISTER_NAME):MOVES NPP") 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(INPI, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER NPP") + field(INPJ, "$(INSTR)$(SPS_REGISTER_NAME):OPEN NPP") + field(CALC, "(G=0||H=0||E=0||B=0)?3:(A=0||D=0)?2:(F=1||I#J)?1:C=0?3:0") field(SCAN, ".1 second") - field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):INTERNAL-STATUS PP") -} - -record(calc, "$(INSTR)$(SPS_REGISTER_NAME):INTERNAL-STATUS") -{ - field(DESC, "Maps Status Variables to singular status") - field(INPA, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-STATUS NPP") - field(INPB, "$(INSTR)$(SPS_REGISTER_NAME):BUSY NPP") - field(CALC, "( A=0 && B=1 )?1:A") field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):STATUS PP") } record(mbbi, "$(INSTR)$(SPS_REGISTER_NAME):STATUS") { field(DESC, "Status of Shutter") - field(INP, "$(INSTR)$(SPS_REGISTER_NAME):INTERNAL-STATUS NPP") + field(INP, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS NPP") field(ZRVL, "0") field(ZRST, "Okay") field(ONVL, "1") -- 2.52.0 From 95c571a67dc9488c31c611863989f72ea96d7313 Mon Sep 17 00:00:00 2001 From: Edward Wall Date: Wed, 18 Mar 2026 14:02:00 +0100 Subject: [PATCH 3/6] initialises writepv on startup and ensures that the message and status are set to busy when writepv != readpv --- db/shutter.db | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/db/shutter.db b/db/shutter.db index 6cf7372..97af5b6 100644 --- a/db/shutter.db +++ b/db/shutter.db @@ -1,9 +1,17 @@ +record(longout, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-INIT") +{ + field(DESC, "Initialises SHUTTER PV") + field(OUT, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER NPP") + field(DOL, "$(INSTR)$(SPS_REGISTER_NAME):OPEN NPP") + field(OMSL, "closed_loop") + field(PINI, "YES") +} + record(bo, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER") { field(DESC, "Open or close the shutter") field(DTYP, "Soft Channel") field(OMSL, "supervisory") - field(VAL, 0) field(ZNAM, "Closed") field(ONAM, "Open") field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):CLEAR-CONTROL PP") @@ -31,6 +39,7 @@ record(seq, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-CONTROL") field(DO1, 1) field(LNK0, "$(INSTR)$(SPS_REGISTER_NAME):CLOSE-SHUTTER PP") field(LNK1, "$(INSTR)$(SPS_REGISTER_NAME):OPEN-SHUTTER PP") + field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS PP") } record(calc, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS") @@ -92,6 +101,8 @@ record(scalcout, "$(INSTR)$(SPS_REGISTER_NAME):STATUS-Msg") 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(INPK, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER NPP") + field(INPL, "$(INSTR)$(SPS_REGISTER_NAME):OPEN 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") @@ -101,5 +112,5 @@ record(scalcout, "$(INSTR)$(SPS_REGISTER_NAME):STATUS-Msg") field(INGG, "$(INSTR)$(SPS_REGISTER_NAME):PSYS-OK-Msg NPP") field(INHH, "$(INSTR)$(SPS_REGISTER_NAME):MOTION-Msg NPP") 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') + field(CALC, '(I=0||J=0)?II:(H=1||K#L)?HH:G=0?DD:D=0?(EE+": "+FF):F=0?GG:C=0?CC:E=0?BB:AA') } -- 2.52.0 From 90a1691241abdbe86375677c01dadbe566510e14 Mon Sep 17 00:00:00 2001 From: Edward Wall Date: Wed, 18 Mar 2026 15:42:47 +0100 Subject: [PATCH 4/6] write and read pvs have to have identical names --- templates/shutter.substitutions | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/shutter.substitutions b/templates/shutter.substitutions index 69faeda..7e2ed69 100644 --- a/templates/shutter.substitutions +++ b/templates/shutter.substitutions @@ -14,8 +14,8 @@ file "$(sinqSPS_DB)/readbit.db" {1 , 1 , "SHUTTER-READY" , "" , "" , "" } {1 , 2 , "EMERGENCY-STOP-OFF", "" , "" , "" } {1 , 3 , "NOT-LOCKED" , "" , "" , "" } - {1 , 4 , "CLOSED" , "closed" , "open" , "" } - {1 , 5 , "OPEN" , "open" , "closed" , "" } + {1 , 4 , "CLOSED" , "Closed" , "Open" , "" } + {1 , 5 , "OPEN" , "Open" , "Closed" , "" } {1 , 6 , "REMOTE-OKAY" , "" , "" , "" } {1 , 7 , "MOVES" , "" , "" , "" } } -- 2.52.0 From badd158e215d39a4f7d01a30e3112c71b2bc101d Mon Sep 17 00:00:00 2001 From: Edward Wall Date: Wed, 18 Mar 2026 16:23:24 +0100 Subject: [PATCH 5/6] bugfixes --- db/readbit.db | 4 +-- db/shutter.db | 59 ++++++++++++++++++++++++++++----- templates/shutter.substitutions | 18 +++++----- 3 files changed, 62 insertions(+), 19 deletions(-) diff --git a/db/readbit.db b/db/readbit.db index 0ee6569..c69cc0b 100644 --- a/db/readbit.db +++ b/db/readbit.db @@ -5,6 +5,6 @@ record(bi,"$(INSTR)$(SPS_REGISTER_NAME):$(BIT_NAME)") field(INP, "@$(SPS_REGISTER_NAME)/$(OFFSET) T=BYTE B=$(BIT)") field(PINI, "YES") field(SCAN, "I/O Intr") - field(ZNAM, "$(ONAM=0)") - field(ONAM, "$(ZNAM=1)") + field(ZNAM, "$(ZNAM=0)") + field(ONAM, "$(ONAM=1)") } diff --git a/db/shutter.db b/db/shutter.db index 97af5b6..529009c 100644 --- a/db/shutter.db +++ b/db/shutter.db @@ -14,9 +14,43 @@ record(bo, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER") field(OMSL, "supervisory") field(ZNAM, "Closed") field(ONAM, "Open") + # field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):CLEAR-CONTROL PP") + field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):SET-BUSY PP") +} + +record(bo, "$(INSTR)$(SPS_REGISTER_NAME):RESET") +{ + field(DESC, "PV For Resetting internal state") + field(VAL, 0) + field(OUT, "$(INSTR)$(SPS_REGISTER_NAME):BUSY PP") +} + +record(bo, "$(INSTR)$(SPS_REGISTER_NAME):SET-BUSY") +{ + field(DESC, "Trigger Internal Busy Status") + field(VAL, 1) + field(OUT, "$(INSTR)$(SPS_REGISTER_NAME):BUSY PP") field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):CLEAR-CONTROL PP") } +record(seq, "$(INSTR)$(SPS_REGISTER_NAME):SET-READY") +{ + field(DESC, "Trigger Returned to Ready Status") + field(LNK1, "$(INSTR)$(SPS_REGISTER_NAME):BUSY PP") + field(DO1, 0) + field(SELM, "Specified") + field(SELL, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-STATUS.VAL") + field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):INTERNAL-STATUS PP") +} + +record(bi, "$(INSTR)$(SPS_REGISTER_NAME):BUSY") +{ + field(DESC, "Internal Busy State") + field(VAL, 0) + field(ZNAM, "Ready") + field(ONAM, "Busy") +} + # 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 and make sure # that the other bit is set back to 0. These two records, in combination with @@ -42,7 +76,10 @@ record(seq, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-CONTROL") field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS PP") } -record(calc, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS") +# We can't just compare the Write and Readback values, as the readback +# seems to change instantly, and doesn't wait for the shutter to +# actually be open. +record(calc, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-STATUS") { field(DESC, "Maps Status Variables to singular status") field(INPA, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-READY NPP") @@ -53,17 +90,24 @@ record(calc, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS") field(INPF, "$(INSTR)$(SPS_REGISTER_NAME):MOVES NPP") field(INPG, "$(INSTR)$(SPS_REGISTER_NAME):ConnStatusFetch NPP") field(INPH, "$(INSTR)$(SPS_REGISTER_NAME):ConnStatusWrite NPP") - field(INPI, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER NPP") - field(INPJ, "$(INSTR)$(SPS_REGISTER_NAME):OPEN NPP") - field(CALC, "(G=0||H=0||E=0||B=0)?3:(A=0||D=0)?2:(F=1||I#J)?1:C=0?3:0") + 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):SET-READY PP") +} + +record(calc, "$(INSTR)$(SPS_REGISTER_NAME):INTERNAL-STATUS") +{ + field(DESC, "Maps Status Variables to singular status") + field(INPA, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-STATUS NPP") + field(INPB, "$(INSTR)$(SPS_REGISTER_NAME):BUSY NPP") + field(CALC, "( A<2 && B=1 ) ? 1 : A") field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):STATUS PP") } record(mbbi, "$(INSTR)$(SPS_REGISTER_NAME):STATUS") { field(DESC, "Status of Shutter") - field(INP, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS NPP") + field(INP, "$(INSTR)$(SPS_REGISTER_NAME):INTERNAL-STATUS NPP") field(ZRVL, "0") field(ZRST, "Okay") field(ONVL, "1") @@ -101,8 +145,7 @@ record(scalcout, "$(INSTR)$(SPS_REGISTER_NAME):STATUS-Msg") 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(INPK, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER NPP") - field(INPL, "$(INSTR)$(SPS_REGISTER_NAME):OPEN NPP") + field(INPK, "$(INSTR)$(SPS_REGISTER_NAME):BUSY 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") @@ -112,5 +155,5 @@ record(scalcout, "$(INSTR)$(SPS_REGISTER_NAME):STATUS-Msg") field(INGG, "$(INSTR)$(SPS_REGISTER_NAME):PSYS-OK-Msg NPP") field(INHH, "$(INSTR)$(SPS_REGISTER_NAME):MOTION-Msg NPP") field(INII, "$(INSTR)$(SPS_REGISTER_NAME):Connection-Msg NPP") - field(CALC, '(I=0||J=0)?II:(H=1||K#L)?HH:G=0?DD:D=0?(EE+": "+FF):F=0?GG:C=0?CC:E=0?BB:AA') + field(CALC, '(I=0||J=0)?II:(H=1||K=1)?HH:G=0?DD:D=0?(EE+": "+FF):F=0?GG:C=0?CC:E=0?BB:AA') } diff --git a/templates/shutter.substitutions b/templates/shutter.substitutions index 7e2ed69..62e4ab9 100644 --- a/templates/shutter.substitutions +++ b/templates/shutter.substitutions @@ -9,15 +9,15 @@ file "$(sinqSPS_DB)/writebit.db" file "$(sinqSPS_DB)/readbit.db" { pattern - {OFFSET, BIT, BIT_NAME , ZNAM , ONAM , DESC} - {1 , 0 , "PSYS-OK" , "" , "" , "" } - {1 , 1 , "SHUTTER-READY" , "" , "" , "" } - {1 , 2 , "EMERGENCY-STOP-OFF", "" , "" , "" } - {1 , 3 , "NOT-LOCKED" , "" , "" , "" } - {1 , 4 , "CLOSED" , "Closed" , "Open" , "" } - {1 , 5 , "OPEN" , "Open" , "Closed" , "" } - {1 , 6 , "REMOTE-OKAY" , "" , "" , "" } - {1 , 7 , "MOVES" , "" , "" , "" } + {OFFSET, BIT, BIT_NAME , ZNAM , ONAM , DESC} + {1 , 0 , "PSYS-OK" , "" , "" , "" } + {1 , 1 , "SHUTTER-READY" , "No" , "Yes" , "" } + {1 , 2 , "EMERGENCY-STOP-OFF", "" , "" , "" } + {1 , 3 , "NOT-LOCKED" , "" , "" , "" } + {1 , 4 , "CLOSED" , "Open" , "Closed" , "" } + {1 , 5 , "OPEN" , "Closed" , "Open" , "" } + {1 , 6 , "REMOTE-OKAY" , "" , "" , "" } + {1 , 7 , "MOVES" , "Stationary" , "Moving" , "" } } # The way that the strings are currently implemented in the SPS, the first two -- 2.52.0 From d133fd156e601f1f30a8976d38e165ee148d3e01 Mon Sep 17 00:00:00 2001 From: Edward Wall Date: Thu, 19 Mar 2026 11:55:24 +0100 Subject: [PATCH 6/6] adds some delays and a reset --- db/sans_llb_beamstop.db | 12 +++++++++++- db/shutter.db | 28 +++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/db/sans_llb_beamstop.db b/db/sans_llb_beamstop.db index 62b4900..39011e3 100644 --- a/db/sans_llb_beamstop.db +++ b/db/sans_llb_beamstop.db @@ -15,7 +15,17 @@ record(longout, "$(INSTR)$(SPS_REGISTER_NAME):BEAMSTOP") field(DRVL, 1) field(DRVH, 3) field(PINI, "NO") - field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):TRIGGER PP") + field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):TRIGGER-DELAY PP") +} + +record(seq, "$(INSTR)$(SPS_REGISTER_NAME):TRIGGER-DELAY") +{ + field(DESC, "Delays Internal Trigger as SPS too slow") + field(DOL0, 1) + field(LNK0, "$(INSTR)$(SPS_REGISTER_NAME):TRIGGER PP") + field(DLY0, 0.5) + field(SELM, "All") + field(PINI, "NO") } record(longout, "$(INSTR)$(SPS_REGISTER_NAME):TRIGGER") diff --git a/db/shutter.db b/db/shutter.db index 529009c..65df2bf 100644 --- a/db/shutter.db +++ b/db/shutter.db @@ -14,14 +14,22 @@ record(bo, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER") field(OMSL, "supervisory") field(ZNAM, "Closed") field(ONAM, "Open") - # field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):CLEAR-CONTROL PP") field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):SET-BUSY PP") } -record(bo, "$(INSTR)$(SPS_REGISTER_NAME):RESET") +record(seq, "$(INSTR)$(SPS_REGISTER_NAME):RESET") +{ + field(DESC, "NICOS can't write to PROC field") + field(DOL0, 1) + field(LNK0, "$(INSTR)$(SPS_REGISTER_NAME):RESETTER.PROC") + field(SELM, "All") + field(PINI, "NO") +} + +record(bo, "$(INSTR)$(SPS_REGISTER_NAME):RESETTER") { field(DESC, "PV For Resetting internal state") - field(VAL, 0) + field(DOL, 0) field(OUT, "$(INSTR)$(SPS_REGISTER_NAME):BUSY PP") } @@ -61,10 +69,20 @@ 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(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-DELAY PP") field(SELM, "All") } +record(seq, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-DELAY") +{ + field(DESC, "Delays Internal Trigger as SPS too slow") + field(DOL0, 1) + field(LNK0, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-CONTROL.PROC PP") + field(DLY0, 0.5) + field(SELM, "All") + field(PINI, "NO") +} + record(seq, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-CONTROL") { field(SELM, "Specified") @@ -73,7 +91,7 @@ record(seq, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-CONTROL") field(DO1, 1) field(LNK0, "$(INSTR)$(SPS_REGISTER_NAME):CLOSE-SHUTTER PP") field(LNK1, "$(INSTR)$(SPS_REGISTER_NAME):OPEN-SHUTTER PP") - field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS PP") + field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS.PROC PP") } # We can't just compare the Write and Readback values, as the readback -- 2.52.0