use internal MCU-derived state in addition to SPS
Test And Build / Build (push) Successful in 4s

This commit is contained in:
2026-05-19 15:31:31 +02:00
parent a31ec09407
commit c2b45a91d2
2 changed files with 27 additions and 11 deletions
+2 -2
View File
@@ -9,8 +9,8 @@ pmac_get {
st {
InTerminator = CR ACK;
out "P553 Q401 Q501";
in "%(A)d%*[ ]%(B)f%*[ ]%(C)f";
out "P553 Q401 Q501 P423 P523";
in "%(A)d%*[ ]%(B)f%*[ ]%(C)f\r%(D)d\r%(E)d";
}
stop {
+25 -9
View File
@@ -185,7 +185,11 @@ record(calc, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS")
field(INPH, "$(INSTR)$(SPS_REGISTER_NAME):BEAMSTOP NPP")
field(INPI, "$(INSTR)$(SPS_REGISTER_NAME):BEAMSTOP_RBV NPP")
field(INPK, "$(INSTR)$(SPS_REGISTER_NAME):RETRY-ERROR NPP")
field(CALC, "(F=0||G=0||D=1||K=1)?3:(A=1)?2:(B=1||H#I)?1:0")
# For the case of 0... as the SPS always has everything as 0
# during movement, meaning that we end up flicking between
# busy and not busy when switching to 0
field(INPC, "$(INSTR)$(SPS_REGISTER_NAME):LOADED NPP")
field(CALC, "(F=0||G=0||D=1||K=1)?3:(A=1)?2:(B=1||H#I||H#C)?1:0")
field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):UNBLOCK-MOTORS")
}
@@ -311,10 +315,12 @@ record(fanout, "$(BS_MCU):BS:ST_FANOUT1") {
}
record(fanout, "$(BS_MCU):BS:ST_FANOUT2") {
field(LNK1, "$(BS_MCU):BS:TARGET_RANGE_RAW")
field(LNK2, "$(BS_MCU):BS:TARGET_RANGE")
field(LNK3, "$(BS_MCU):BS:LOADED_RAW")
field(LNK4, "$(BS_MCU):BS:INVALID")
field(LNK1, "$(BS_MCU):BS:BSX_ACK_RBV")
field(LNK2, "$(BS_MCU):BS:BSY_ACK_RBV")
field(LNK3, "$(BS_MCU):BS:TARGET_RANGE_RAW")
field(LNK4, "$(BS_MCU):BS:TARGET_RANGE")
field(LNK5, "$(BS_MCU):BS:LOADED_RAW")
field(LNK6, "$(BS_MCU):BS:INVALID")
}
record(longin, "$(BS_MCU):BS:TARGET") {
@@ -332,6 +338,16 @@ record(ai, "$(BS_MCU):BS:TARGET_Y") {
field(INP, "$(BS_MCU):BS:ST.C NPP MS")
}
record(longin, "$(BS_MCU):BS:BSX_ACK_RBV") {
field(DESC, "BSX ACK")
field(INP, "$(BS_MCU):BS:ST.D NPP MS")
}
record(longin, "$(BS_MCU):BS:BSY_ACK_RBV") {
field(DESC, "BSY ACK")
field(INP, "$(BS_MCU):BS:ST.E NPP MS")
}
record(calc, "$(BS_MCU):BS:TARGET_BS_RAW") {
field(DESC, "Beamstop == TARGET_X")
# Dynamic Inputs
@@ -387,19 +403,19 @@ record(calcout, "$(BS_MCU):BS:LOADED_RAW")
field(OOPT, "Transition To Zero")
field(DOPT, "Use OCAL")
field(OCAL, "A")
field(OUT, "$(BS_MCU):BS:LOADED PP")
field(OUT, "$(INSTR)$(SPS_REGISTER_NAME):LOADED PP")
}
record(longout, "$(INSTR)$(SPS_REGISTER_NAME):LOADED-INIT")
{
field(DESC, "Initialises LOADED PV")
field(DOL, "$(INSTR)$(SPS_REGISTER_NAME):BEAMSTOP_RBV NPP")
field(OUT, "$(BS_MCU):BS:LOADED NPP")
field(OUT, "$(INSTR)$(SPS_REGISTER_NAME):LOADED NPP")
field(OMSL, "closed_loop")
field(PINI, "YES")
}
record(mbbi, "$(BS_MCU):BS:LOADED")
record(mbbi, "$(INSTR)$(SPS_REGISTER_NAME):LOADED")
{
field(DESC, "Most recently lifted beamstop")
field(ZRST, "No Beamstop")
@@ -413,7 +429,7 @@ record(calcout, "$(BS_MCU):BS:INVALID") {
# Dynamic Inputs
field(INPA, "$(BS_MCU):BS:TARGET_BS NPP MS")
field(INPB, "$(BS_MCU):BS:TARGET_RANGE NPP MS")
field(INPC, "$(BS_MCU):BS:LOADED NPP MS")
field(INPC, "$(INSTR)$(SPS_REGISTER_NAME):LOADED NPP MS")
field(CALC, "(A<4) && (B=1) && (A#C)")
field(OOPT, "Transition To Non-zero")
field(OUT, "$(BS_MCU):BS:IMMEDIATE_STOP.PROC PP")