Skip to content

Ticket6240 3he fridge cryo logic #605

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
May 6, 2022
Merged
3 changes: 3 additions & 0 deletions HLX503/HLX503-IOC-01App/src/build.mak
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,10 @@ $(APPNAME)_DBD += ReadASCII.dbd
$(APPNAME)_DBD += FileList.dbd
## add other dbd here ##
#$(APPNAME)_DBD += xxx.dbd
$(APPNAME)_DBD += hlx503.dbd

# Add all the support libraries needed by this IOC
$(APPNAME)_LIBS += hlx503

## Add additional libraries here ##
#$(APPNAME)_LIBS += xxx
Expand All @@ -58,6 +60,7 @@ $(APPNAME)_LIBS += calc sscan
$(APPNAME)_LIBS += pcrecpp pcre
$(APPNAME)_LIBS += seq pv efsw


# HLX503-IOC-01_registerRecordDeviceDriver.cpp derives from HLX503-IOC-01.dbd
$(APPNAME)_SRCS += $(APPNAME)_registerRecordDeviceDriver.cpp

Expand Down
13 changes: 12 additions & 1 deletion HLX503/iocBoot/iocHLX503-IOC-01/config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,19 @@
<macro name="HE3POTHI_CHANNEL" pattern="^[1-3]$" description="The channel to use when controlling the He3Pot at high temperatures." hasDefault="NO" />
<macro name="1KPOTHE3POTLO_CHANNEL" pattern="^[1-3]$" description="The channel to use when controlling the 1K Pot/He3Pot at low temperatures." hasDefault="NO" />

<macro name="DEFAULT_POST_CONDENSE_TEMP_SETPOINT" pattern="^.*$" description="The default temperature setpoint to set just after a recondense" hasDefault="YES" defaultValue="0.3"/>
<macro name="RECONDENSE_SORB_TEMP_SET" pattern="^.*$" description="The temperature setpoint to set for the sorb in a recondense" hasDefault="YES" defaultValue="33.0"/>
<macro name="RECONDENSE_SORB_P" pattern="^.*$" description="The proportional to set for the sorb in a recodense" hasDefault="YES" defaultValue="1.2"/>
<macro name="RECONDENSE_SORB_I" pattern="^.*$" description="The integral to set for the sorb in a recodense" hasDefault="YES" defaultValue="1.2"/>
<macro name="RECONDENSE_SORB_D" pattern="^.*$" description="The derivative to set for the sorb in a recodense" hasDefault="YES" defaultValue="1.2"/>
<macro name="RECONDENSE_SORB_TEMP_FINAL" pattern="^.*$" description="The final temperature of the sorb to wait for in part 3" hasDefault="YES" defaultValue="20.0"/>
<macro name="RECONDENSE_HE3POT_TARGET_TEMP_PART1" pattern="^.*$" description="The target temperature of the He3Pot to wait for in part 1" hasDefault="YES" defaultValue="1.5"/>
<macro name="RECONDENSE_HE3POT_TARGET_TEMP_PART2" pattern="^.*$" description="The target temperature of the He3Pot to wait for in part 2" hasDefault="YES" defaultValue="1.6"/>
<macro name="RECONDENSE_POST_PART2_WAIT_TIME" pattern="^.*$" description="The time in seconds to wait after part 2 of a recondense" hasDefault="YES" defaultValue="10"/>
<macro name="RECONDENSE_PART_TIMEOUT" pattern="^.*$" description="The time to wait before timing out a part in a recondense. Defaults to 1800 seconds (30 minutes)." hasDefault="YES" defaultValue="1800"/>
<macro name="RECONDENSE_PART_TIMEOUT_ON" pattern="^.*$" description="Whether to timeout parts of the recondense." hasDefault="YES" defaultValue="YES"/>
<macro name="MAX_TEMP_FOR_HE3_COOLING" pattern="^.*$" description="The temperature below which He3 cooling is to be used." hasDefault="NO" />
<macro name="MAX_OPERATING_TEMP_FOR_HELIOX" pattern="^.*$" description="The maximum temperature at which the heliox can be operated at." hasDefault="NO" />
<macro name="MAX_OPERATING_TEMP_FOR_HELIOX" pattern="^.*$" description="The maximum temperature at which the heliox can be operated at." hasDefault="NO"/>
</macros>
</config_part>
</ioc_config>
21 changes: 15 additions & 6 deletions HLX503/iocBoot/iocHLX503-IOC-01/st-common.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ epicsEnvSet "STREAM_PROTOCOL_PATH" "$(ITC503)/data"
epicsEnvSet "STREAM_PROTOCOL_PATH" "$(ITC503)/data"
epicsEnvSet "READASCII_NAME" "READASCII"
epicsEnvSet "FILELIST_NAME" "FILELIST"
$(IFNOTDEVSIM) epicsEnvSet "CALIB_BASE_DIR" "$(ICPCONFIGBASE)/$(INSTRUMENT)"
$(IFNOTRECSIM) $(IFNOTDEVSIM) epicsEnvSet "CALIB_BASE_DIR" "$(ICPCONFIGBASE)/$(INSTRUMENT)"
$(IFDEVSIM) epicsEnvSet "CALIB_BASE_DIR" "$(HLX503)"
$(IFRECSIM) epicsEnvSet "CALIB_BASE_DIR" "$(HLX503)"
epicsEnvSet "TPAR_DIR" "configurations/hlx503"
epicsEnvSet "TPAR_PAT" ".*"
FileListConfigure("$(FILELIST_NAME)", "$(CALIB_BASE_DIR)/$(TPAR_DIR)", "$(TPAR_PAT)", 0)
Expand Down Expand Up @@ -50,13 +51,17 @@ epicsEnvSet "SENSOR$(1KPOTHE3POTLO_SENSOR)_NAME" "1KPOTHE3POTLO"
# asynSetTraceIOMask("L0", -1, 0x2)
# asynSetTraceMask("L0", -1, 0x9)

## Load DB Records
dbLoadRecords("$(ITC503)/db/ITC503.db","P=$(MYPVPREFIX)$(IOCNAME):, PORT=$(DEVICE), RECSIM=$(RECSIM=0), DISABLE=$(DISABLE=0), READ=$(READASCII_NAME), CTRLCHANNEL1_NAME=$(CTRLCHANNEL1_NAME), CTRLCHANNEL2_NAME=$(CTRLCHANNEL2_NAME), CTRLCHANNEL3_NAME=$(CTRLCHANNEL3_NAME), SENSOR1_NAME=$(SENSOR1_NAME), SENSOR2_NAME=$(SENSOR2_NAME), SENSOR3_NAME=$(SENSOR3_NAME), IFNOTHLX503=#")
dbLoadRecords("$(HLX503)/db/hlx503.db","PVPREFIX=$(MYPVPREFIX),P=$(MYPVPREFIX)$(IOCNAME):,RECSIM=$(RECSIM=0),DISABLE=$(DISABLE=0),MAX_TEMP_FOR_HE3_COOLING=$(MAX_TEMP_FOR_HE3_COOLING),MAX_OPERATING_TEMP_FOR_HELIOX=$(MAX_OPERATING_TEMP_FOR_HELIOX),SORB_CHANNEL=$(SORB_CHANNEL),HE3POTHI_CHANNEL=$(HE3POTHI_CHANNEL),1KPOTHE3POTLO_CHANNEL=$(1KPOTHE3POTLO_CHANNEL),SORB_SENSOR=$(SORB_SENSOR),HE3POTHI_SENSOR=$(HE3POTHI_SENSOR),1KPOTHE3POTLO_SENSOR=$(1KPOTHE3POTLO_SENSOR),READ=$(READASCII_NAME),FILELIST=$(FILELIST_NAME)")
stringiftest("RECONDENSE_PART_TIMEOUT_ON", "YES", 2)
$(IFRECONDENSE_PART_TIMEOUT_ON) epicsEnvSet "RECONDENSE_PART_TIMEOUT_ON" "1"
$(IFNOTRECONDENSE_PART_TIMEOUT_ON) epicsEnvSet "RECONDENSE_PART_TIMEOUT_ON" "0"


# dbLoadRecords("$(FILELIST)/db/calibration.db", "P=$(MYPVPREFIX)$(IOCNAME):, CALIB_BASE_DIR=$(CALIB_BASE_DIR), SDIR=$(SENS_DIR), CALIBLIST=SENSORFILELISTHE3POT, CONV_TO_PV=TEMP, CONV_FROM_PV=, CONV_TO_DESC=Temperature, CONV_TO_EGU=K, SP_PV=RAMP:_OUT_SP")
# dbLoadRecords("$(FILELIST)/db/calibration.db", "P=$(MYPVPREFIX)$(IOCNAME):, CALIB_BASE_DIR=$(CALIB_BASE_DIR), SDIR=$(SENS_DIR), CALIBLIST=SENSORFILELISTSORB, CONV_TO_PV=TEMP, CONV_FROM_PV=, CONV_TO_DESC=Temperature, CONV_TO_EGU=K, SP_PV=RAMP:_OUT_SP")
epicsEnvSet "P" "$(MYPVPREFIX)$(IOCNAME):"

## Load DB Records
dbLoadRecords("$(ITC503)/db/ITC503.db","P=$(P), PORT=$(DEVICE), RECSIM=$(RECSIM=0), DISABLE=$(DISABLE=0), READ=$(READASCII_NAME), CTRLCHANNEL1_NAME=$(CTRLCHANNEL1_NAME), CTRLCHANNEL2_NAME=$(CTRLCHANNEL2_NAME), CTRLCHANNEL3_NAME=$(CTRLCHANNEL3_NAME), SENSOR1_NAME=$(SENSOR1_NAME), SENSOR2_NAME=$(SENSOR2_NAME), SENSOR3_NAME=$(SENSOR3_NAME), IFNOTHLX503=#")
dbLoadRecords("$(HLX503)/db/hlx503.db","P=$(P),RECSIM=$(RECSIM=0),DISABLE=$(DISABLE=0),MAX_TEMP_FOR_HE3_COOLING=$(MAX_TEMP_FOR_HE3_COOLING),MAX_OPERATING_TEMP_FOR_HELIOX=$(MAX_OPERATING_TEMP_FOR_HELIOX),SORB_CHANNEL=$(SORB_CHANNEL),HE3POTHI_CHANNEL=$(HE3POTHI_CHANNEL),1KPOTHE3POTLO_CHANNEL=$(1KPOTHE3POTLO_CHANNEL),SORB_SENSOR=$(SORB_SENSOR),HE3POTHI_SENSOR=$(HE3POTHI_SENSOR),1KPOTHE3POTLO_SENSOR=$(1KPOTHE3POTLO_SENSOR),READ=$(READASCII_NAME),FILELIST=$(FILELIST_NAME)")
dbLoadRecords("$(HLX503)/db/hlx503_recondense.db", "P=$(P),MAX_TEMP_FOR_HE3_COOLING=$(MAX_TEMP_FOR_HE3_COOLING),MAX_OPERATING_TEMP_FOR_HELIOX=$(MAX_OPERATING_TEMP_FOR_HELIOX),DEFAULT_POST_CONDENSE_TEMP_SETPOINT=$(DEFAULT_POST_CONDENSE_TEMP_SETPOINT=0.3),RECONDENSE_SORB_TEMP_SET=$(RECONDENSE_SORB_TEMP_SET=33.0),RECONDENSE_SORB_P=$(RECONDENSE_SORB_P=1.2),RECONDENSE_SORB_I=$(RECONDENSE_SORB_I=1.2),RECONDENSE_SORB_D=$(RECONDENSE_SORB_D=1.2),RECONDENSE_SORB_TEMP_FINAL=$(RECONDENSE_SORB_TEMP_FINAL=20.0),RECONDENSE_HE3POT_TARGET_TEMP_PART1=$(RECONDENSE_HE3POT_TARGET_TEMP_PART1=1.5),RECONDENSE_HE3POT_TARGET_TEMP_PART2=$(RECONDENSE_HE3POT_TARGET_TEMP_PART2=1.6),RECONDENSE_POST_PART2_WAIT_TIME=$(RECONDENSE_POST_PART2_WAIT_TIME=10),RECONDENSE_PART_TIMEOUT=$(RECONDENSE_PART_TIMEOUT=1800),RECONDENSE_PART_TIMEOUT_ON=$(RECONDENSE_PART_TIMEOUT_ON=1)")

##ISIS## Stuff that needs to be done after all records are loaded but before iocInit is called
< $(IOCSTARTUP)/preiocinit.cmd
Expand All @@ -69,3 +74,7 @@ iocInit

##ISIS## Stuff that needs to be done after iocInit is called e.g. sequence programs
< $(IOCSTARTUP)/postiocinit.cmd


## Start any sequence programs
seq hlx503, "P=$(P)"