shutter improvements and bugfixes #3
+2
-2
@@ -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)")
|
||||
}
|
||||
|
||||
+11
-1
@@ -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")
|
||||
|
||||
+80
-6
@@ -1,14 +1,64 @@
|
||||
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):SET-BUSY PP")
|
||||
}
|
||||
|
||||
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(DOL, 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
|
||||
@@ -19,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")
|
||||
@@ -31,9 +91,13 @@ 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.PROC 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")
|
||||
@@ -44,15 +108,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(CALC, "(G=0||H=0||E=0||B=0)?3:(A=0||D=0)?2:F=1?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")
|
||||
@@ -90,6 +163,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):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")
|
||||
@@ -99,5 +173,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=1)?HH:G=0?DD:D=0?(EE+": "+FF):F=0?GG:C=0?CC:E=0?BB:AA')
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user