Skip to main content Link Search Menu Expand Document (external link)

Oxford CryoStream 800 cooler

Table of Contents

authors

  • Pete Jemian
  • David Vine
  • James O’Hea (for the cs700 support that precedes this)

files

file description
documentation/Oxford_CS800.md this file
iocsh/Oxford_CS800_status.iocsh IOC startup commands for status server
iocsh/Oxford_CS800.iocsh IOC startup commands for each controller
ipApp/Db/Oxford_CS800_settings.req autosave request file
ipApp/Db/Oxford_CS800_status_settings.req autosave request file
ipApp/Db/Oxford_CS800_status.db PV database for status server
ipApp/Db/Oxford_CS800.db PV database for each controller
ipApp/Db/Oxford_CS800.proto stream protocol
ipApp/op/adl/Oxford_CS800_admin.adl MEDM screen
ipApp/op/adl/Oxford_CS800_hourplot.adl MEDM screen
ipApp/op/adl/Oxford_CS800_program.adl MEDM screen
ipApp/op/adl/Oxford_CS800_sensors.adl MEDM screen
ipApp/op/adl/Oxford_CS800_status_full.adl MEDM screen
ipApp/op/adl/Oxford_CS800_status.adl MEDM screen
ipApp/op/adl/Oxford_CS800.adl MEDM screen
ipApp/op/ui/autoconvert/Oxford_CS800_admin.ui caQtDM screen
ipApp/op/ui/autoconvert/Oxford_CS800_hourplot.ui caQtDM screen
ipApp/op/ui/autoconvert/Oxford_CS800_program.ui caQtDM screen
ipApp/op/ui/autoconvert/Oxford_CS800_sensors.ui caQtDM screen
ipApp/op/ui/autoconvert/Oxford_CS800_status_full.ui caQtDM screen
ipApp/op/ui/autoconvert/Oxford_CS800_status.ui caQtDM screen
ipApp/op/ui/autoconvert/Oxford_CS800.ui caQtDM screen
ipApp/op/ui/Oxford_CS800_hourplot.ui caQtDM screen
ipApp/op/ui/Oxford_CS800.ui caQtDM screen
ipApp/src/Oxford_CS800.st sequence program for each controller

vendor

  • product: https://www.oxcryo.com/product/cryostream-800
  • brochure: https://www.oxcryo.com/sites/default/files/2018-08/cryostream_800_brochure_af.pdf
  • manual: https://www.sfu.ca/~mpaetzel/manuals/Cryo/Cryostream_800_series.pdf

IOC configuration

Each CS800 controller broadcasts its status data by UDP to network port 30304. One piece of information in that data packet is the unique controller number of the CS800 as set at the factory. All broadcasts are collected by a single asyn record, configured from the Oxford_CS800_status.db database. Because asyn will bind to these sockets during the IOC startup, they are not available for any other applications to use on the workstation running the IOC.

The status of a controller is selected from the common status asyn record input. (This is provided by an EPICS sequence program.) Commands are sent to the controller’s IP address at port 30305 by UDP. (This is provided by an EPICS database and stream protocol.) Since this UDP port cannot be opened by multiple processes on a single workstation, only one IOC on a workstation can run the controller databases.

NOTE: A request has been made to the asyn repository to support the SO_REUSEPORT socket option that allows multiple controllers to be run from the same IOC (and host). If you received a message that UDP& is not supported when starting the IOC, you need the patch which provides the SO_REUSEPORT socket option.

SUGGESTION: Run the common status database and all controller databases from the same IOC.

IOC startup directory

Instructions for EPICS base release 3.15 or later.

For the common status broadcasts, these macros apply:

MACRO EXAMPLE DEFINITION
PREFIX xxx: IOC prefix
R CS: CS800 shared asyn status database prefix
STATUS_IP 192.168.0.176 IP number of this IOC

For each CS800 controller, these macros apply:

MACRO EXAMPLE DEFINITION
PREFIX xxx: IOC prefix
R CS0: CS800 controller database prefix
CID 411 Controller Number (use 0 if unknown and only 1 CS800)
COMMAND_IP 192.168.0.144 IP number of CS800 controller
CS800_STATUS xxx:CS:status_packets asyn PV with status packet data

Note: If you only have one CS800 controller on the network, you can specify CID=0 and the software will automatically find the status data. For two or more CS800 controllers, you must specify the controller number of each.

st.cmd

Add these lines to the IOC’s st.cmd file before the call to iocInit:

# assume the IOC prefix has been set
epicsEnvSet("PREFIX", "xxx:")

# prepare to receive status broadcasts
# use IOC's IP number for STATUS_IP
iocshLoad("$(IP)/iocsh/Oxford_CS800_status.iocsh", "PREFIX=$(PREFIX), R=CS:, STATUS_IP=192.168.0.176")
# CS800_STATUS is defined in previous command

# for each CS800 (here, we support two controllers:  CS0 & CS1)
# CS0: #411 at 192.168.0.144
iocshLoad("$(IP)/iocsh/Oxford_CS800.iocsh", "PREFIX=$(PREFIX), R=CS0:, CID=411, COMMAND_IP=192.168.0.144, CS800_STATUS=$(CS800_STATUS)")
# CS1: #369 at 192.168.0.113
iocshLoad("$(IP)/iocsh/Oxford_CS800.iocsh", "PREFIX=$(PREFIX), R=CS1:, CID=369, COMMAND_IP=192.168.0.113, CS800_STATUS=$(CS800_STATUS)")

auto_settings.req

By convention, to enable automatic discovery of autosave requests, the autosave request file is in the same directory with the PV database file. Both files share the same filename, up to the final part of the name (_settings.req and .db, respectively).

Thus, no additional configuration is needed here.

Display screens

MEDM display

Oxford_CS800.adl CS=xxx:CS0:

caQtDM display

Oxford_CS800.ui CS=xxx:CS0:

Example screens

Example screens are shown using the controller at APS 19-ID and the caQtDM application.

main : Oxford_CS800.ui

hour plot of temperature : Oxford_CS800_hourplot.ui

sensors, heaters, and flow : Oxford_CS800_sensors.ui

note: Gas flow signal from controller is incorrect (raw value of 0xfffe)

ramp, plateau, cool : Oxford_CS800_program.ui

Commands to change the setpoint programmatically.

status : Oxford_CS800_status.ui

all status values monitored : Oxford_CS800_status_full.ui

note: some signals from controller are incorrect (raw value of 0xfffe)

administrative : Oxford_CS800_admin.ui

CAUTION: Controls on this screen can turn off or restart the controller. This screen can only be reached from the status or full status screens.