Skip to content

Commit

Permalink
Merge pull request #754 from ISISComputingGroup/Ticket5872_custom_mag…
Browse files Browse the repository at this point in the history
…net_opi

Create PVs needed for custom magnet OPI for RIKENFE
  • Loading branch information
Tom-Willemsen authored Dec 15, 2022
2 parents 8b90a27 + 9c2286e commit 4c807f6
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 3 deletions.
21 changes: 21 additions & 0 deletions DFKPS/DFKPS-IOC-01App/Db/DFKPS_common.db
Original file line number Diff line number Diff line change
Expand Up @@ -305,3 +305,24 @@ record(bo, "$(P)SIM:POL"){
field(DTYP, "Soft Channel")
}
alias("$(P)SIM:POL", "$(P)SIM:POL:SP")

record(calc, "$(P)LIMIT") {
field(DESC, "LIMIT HIT")
field(CALC, "A?(B?3:1):(B?2:0)")
field(INPA, "$(P)VOLT.SEVR CP")
field(INPB, "$(P)CURR.SEVR CP")
}

record(mbbi, "$(P)LIMIT:ENUM") {
field(INP, "$(P)LIMIT CP")
field(DESC, "Display Limit")
field(ZRST, "No")
field(ZRVL, "0")
field(ONST, "VOLT LIMIT")
field(ONVL, "1")
field(TWST, "CURR LIMIT")
field(TWVL, "2")
field(THST, "BOTH LIMITS")
field(THVL, "3")
}

8 changes: 8 additions & 0 deletions SCHNDR/SCHNDR-IOC-01App/Db/RIKENFE.substitutions
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,14 @@ file RIKENFE_float.template {
{ "KICKER4:CURR", "kickers_1-4_output", "14", "Kicker 4 Output Current", "kA", "3" }
}

# 1.6.c Kickers summary

file RIKENFE_Kicker_Summary.template {
pattern { PV1, PV2, PV3, PV4, TARGET }

{ "KICKER1", "KICKER2", "KICKER3", "KICKER4", "KICKERS"}
}

# Combined into sections 1.6.a, 1.6.b above:
# 1.6.2 Kicker 1 Readback Status
# 1.6.3 Kicker 2 Readback Status
Expand Down
76 changes: 76 additions & 0 deletions SCHNDR/SCHNDR-IOC-01App/Db/RIKENFE_Kicker_Summary.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@

record (calc, "$(P)$(TARGET):SUMMARY:ILK") {

field(DESC, "$(TARGET) Interlock State Summary")
field(INPA, "$(P)$(TARGET):WATER:ILK:STAT CP MSS")
field(INPB, "$(P)$(TARGET):VACUUM:ILK:STAT CP MSS")
field(INPC, "$(P)$(TARGET):MOL:STAT CP MSS")

field(CALC , "((A==4)||(B==4)||(C==4))") # 4 indicates a fault/interlock being tripped.
}

record(calc, "$(P)$(TARGET):SUMMARY:POWER"){
field(DESC, "$(TARGET) Power Summary")
field(INPD, "$(P)$(PV1):PSU_ON:STAT CP MSS")
field(INPE, "$(P)$(PV2):PSU_ON:STAT CP MSS")
field(INPF, "$(P)$(PV3):PSU_ON:STAT CP MSS")
field(INPG, "$(P)$(PV4):PSU_ON:STAT CP MSS")
field(CALC, "((D==1)&&(E==1)&&(F==1)&&(G==1))?1:(((D==2)&&(E==2)&&(F==2)&&(G==2))?2:3)") # 1 if all kickers are off, 2 if all are on, otherwise 3.
}

record(calc, "$(P)$(TARGET):CONNECTION:STAT") {
field(DESC, "$(TARGET) Connection Summary")
field(INPA, "$(P)$(TARGET):WATER:ILK:STAT CP MSS")
field(INPB, "$(P)$(TARGET):VACUUM:ILK:STAT CP MSS")
field(INPC, "$(P)$(TARGET):MOL:STAT CP MSS")
field(INPD, "$(P)$(PV1):PSU_ON:STAT CP MSS")
field(INPE, "$(P)$(PV2):PSU_ON:STAT CP MSS")
field(INPF, "$(P)$(PV3):PSU_ON:STAT CP MSS")
field(INPG, "$(P)$(PV4):PSU_ON:STAT CP MSS")
field(CALC , "((A==0)||(B==0)||(C==0)||(D==0)||(E==0)||(F==0)||(G==0))") # check that no values are in comms loss state
}

record(calc, "$(P)$(TARGET):SUMMARY:STAT") {
field(INPA, "$(P)$(TARGET):CONNECTION:STAT CP MSS")
field(INPB, "$(P)$(TARGET):SUMMARY:POWER CP MSS")
field(INPC, "$(P)$(TARGET):SUMMARY:ILK CP MSS")
field(DESC, "$(TARGET) Status Summary CP MSS")
field(CALC, "A?0:(C==1?4:B)") # 0 if any kicker or interlock in comms loss, 4 if any interlock is tripped, otherwise report the powerstate of the kickers
}

record(calc, "$(P)$(TARGET):CURRENT:TOTAL") {
field(INPA, "$(P)$(PV1):CURR CP MSS")
field(INPB, "$(P)$(PV2):CURR CP MSS")
field(INPC, "$(P)$(PV3):CURR CP MSS")
field(INPD, "$(P)$(PV4):CURR CP MSS")
field(CALC, "A+B+C+D")
field(EGU, "kA")
field(PREC, "3")
}

record (mbbi, "$(P)$(TARGET):SUMMARY:ENUM") {

field(DESC, "$(TARGET) Summary Enum")
field(INP, "$(P)$(TARGET):SUMMARY:STAT CP MSS")

field(ZRVL, 0)
field(ZRST, "Comms Loss")
field(ZRSV, "INVALID")

field(ONVL, 1)
field(ONST, "All Off")
field(ONSV, "NO_ALARM")

field(TWVL, 2)
field(TWST, "All On")
field(TWSV, "NO_ALARM")

field(THVL, 3)
field(THST, "Mixed State")
field(THSV, "NO_ALARM")

field(FRVL, 4)
field(FRST, "Fault")
field(FRSV, "MAJOR")
}

1 change: 1 addition & 0 deletions TECHNIX/iocBoot/iocTECHNIX-IOC-01/config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

<macro name="MAX_VOLT" pattern="^[0-9]*\.?[0-9]*$" description="Maximum voltage in kV" hasDefault="NO" />
<macro name="MAX_CURR" pattern="^[0-9]*\.?[0-9]*$" description="Maximum current in mA" hasDefault="NO" />
<macro name="LIMIT_ALARM" pattern="^(MAJOR|MINOR|NO_ALARM)$" description="Alarm to use for outside softlimit" defaultValue="NO_ALARM" hasDefault="YES" />

</macros>
<pvsets>
Expand Down
3 changes: 1 addition & 2 deletions TECHNIX/iocBoot/iocTECHNIX-IOC-01/st-common.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ $(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)",0,"ixoff","N")
< $(IOCSTARTUP)/dbload.cmd

## Load our record instances
dbLoadRecords("$(TECHNIX)/db/technix.db","PVPREFIX=$(MYPVPREFIX),P=$(MYPVPREFIX)$(IOCNAME):,MAX_VOLT=$(MAX_VOLT), MAX_CURR=$(MAX_CURR), RECSIM=$(RECSIM=0),DISABLE=$(DISABLE=0),PORT=$(DEVICE)")

dbLoadRecords("$(TECHNIX)/db/technix.db","PVPREFIX=$(MYPVPREFIX),P=$(MYPVPREFIX)$(IOCNAME):,MAX_VOLT=$(MAX_VOLT), MAX_CURR=$(MAX_CURR), RECSIM=$(RECSIM=0),DISABLE=$(DISABLE=0),PORT=$(DEVICE),LIMIT_ALARM=$(LIMIT_ALARM=NO_ALARM)")
##ISIS## Stuff that needs to be done after all records are loaded but before iocInit is called
< $(IOCSTARTUP)/preiocinit.cmd

Expand Down
1 change: 1 addition & 0 deletions TRANTECH/iocBoot/iocTRANTECH-IOC-01/config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
<macro name="PS_ADDR" pattern="^[0-9]{3}$" description="3-digit address of power supply (e.g. 001)" defaultValue="001" hasDefault="YES" />
<macro name="VOLT_FULLSCALE" pattern="^[0-9]+$" description="Full-scale voltage of this power supply" defaultValue="125" hasDefault="YES" />
<macro name="CURR_FULLSCALE" pattern="^[0-9]+$" description="Full-scale current of this power supply" defaultValue="500" hasDefault="YES" />
<macro name="LIMIT_ALARM" pattern="^(MAJOR|MINOR|NO_ALARM)$" description="Alarm to use for outside softlimit" defaultValue="NO_ALARM" hasDefault="YES" />
</macros>
<pvsets>
</pvsets>
Expand Down
2 changes: 1 addition & 1 deletion TRANTECH/iocBoot/iocTRANTECH-IOC-01/st-common.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ $(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)",0,"ixoff","N")
< $(IOCSTARTUP)/dbload.cmd

## Load our record instances
dbLoadRecords("$(TRANTECH)/db/transtechnik.db","P=$(MYPVPREFIX)$(IOCNAME):,RECSIM=$(RECSIM=0),DISABLE=$(DISABLE=0),PORT=$(DEVICE),PS_ADDR=$(PS_ADDR=001),VOLT_FULLSCALE=$(VOLT_FULLSCALE=125),CURR_FULLSCALE=$(CURR_FULLSCALE=500)")
dbLoadRecords("$(TRANTECH)/db/transtechnik.db","P=$(MYPVPREFIX)$(IOCNAME):,RECSIM=$(RECSIM=0),DISABLE=$(DISABLE=0),PORT=$(DEVICE),PS_ADDR=$(PS_ADDR=001),VOLT_FULLSCALE=$(VOLT_FULLSCALE=125),CURR_FULLSCALE=$(CURR_FULLSCALE=500),LIMIT_ALARM=$(LIMIT_ALARM=NO_ALARM)")
dbLoadRecords("$(TRANTECH)/db/transtechnik_status_bit.db","P=$(MYPVPREFIX)$(IOCNAME):,RECSIM=$(RECSIM=0),DISABLE=$(DISABLE=0),PORT=$(DEVICE)")

##ISIS## Stuff that needs to be done after all records are loaded but before iocInit is called
Expand Down

0 comments on commit 4c807f6

Please sign in to comment.