Cryomagnetics LM-510 Liquid Cryogen Level Monitor

This repository contains the driver code and "default" Midas frontend for the Cryomagnetics LM-510 Liquid Cryogen Level Monitor.

The manual can be found under the following link: https://cryomagnetics.com/wp-content/uploads/2022/05/LM-510-Rev.-1.2.pdf. A copy of the manual has been placed in this repository.

Requirements

Requires a Midas installation with the environment variable MIDASSYS pointing to the built Midas artifacts and headers.

Build

Clone this repository, enter the cloned directory, and then build via CMake.

cmake -S "$(pwd)" -B <directory-to-build-in> -DBUILD_FRONTEND=ON
cmake --build <directory-to-build-in> --clean-first -- -j8

Run

/build/driver/cryomagnetics_lm510_fe -e flame

Including in Custom Frontend

To include this driver in a custom frontend, you should ensure the environment variable MIDASSYS points to your system install and include a snippet in your CMakeLists.txt similar to the following:

# If the path to the cryomagnetics_lm510 repository is outside of the frontend
# repository, you also need to provide a location for the cryomagnetics_lm510
# artifacts as a second argument to `add_subdirectory`
# e.g. `./device/cryomagnetics_lm510`
add_subdirectory(
    <path-to-cryomagnetics_lm510-repository>
)

add_executable(
  <frontend-name>
  <frontend-code-path-1>
  <frontend-code-path-2>
  :
)

set_property(
  TARGET
    <frontend-name>
  PROPERTY
    CXX_STANDARD 11
)

target_include_directories(
  <frontend-name>
  PRIVATE
    $ENV{MIDASSYS}/drivers
    $ENV{MIDASSYS}/include
)

target_link_libraries(
  <frontend-name>
  cryomagnetics_lm510
  <additional-library-1>
  <additional-library-2>
  :
)

ODB setup

The following is an excerpt from the top docstring of device/cryomagnetics_lm510.cxx. It explains how to generate and parametrize the ODB structure for the frontend.

  • start the fe to create the device driver structure in the ODB

  • disable history logging (=0) in equipment's common until labels are set

  • for each LM-510 (x = 1 - N) . set /Equipment/lm510X/Settings/Devices/LM510_x/DD/Name for each Module. NOTE: Name will be part of the Midas Channel label and must be unique and less than 9 Chars e.g.: LM_1 -> Variox or He4VT . set /Equipment/lm510X/Settings/Devices/LM510_x/DD/Enabled to Y when the Module is used . set /Equipment/lm510X/Settings/Devices/LM510_x/DD/ChannelUsed[i] (i = 0 - 1) to Y if the LM-510 channel is used ChannelUsed[0] is Channel 1 ChannelUsed[1] is Channel 2 . set Midas ODB channel offset for x = 1 to 0, x = 2 to 14, x = 3 to 28 ..

  • Delete /Equipment/lm510x/Settings/Names to (re)generate channel names with DD/Name

  • Restart fe

  • for each Enabled=Y module LM510_x . set /Equipment/lm510X/Settings/Devices/LM510_x/BD/Host to the IP Name or IP Address of the respective LM-510 device . set /Equipment/lm510X/Settings/Devices/LM510_x/BD/Port to the LM-510 port number (default is 4266).

  • Edit /Equipment/lm510X/Settings/Names e.g.: LM_1_Ch1_Level -> Variox_lHe_Level

  • Restart fe

  • For lHe/lN2 with automatic refill create an alarmC when Control channel is -1 e.g.: Alarm Variox_lHe_RefillTMO e.g.: Condition /Equipment/lm5100/Variables/Measured[2] == -1 e.g.: Message Variox lHe Refill Timeout

  • To automatically reset alarmC when Control of channel was reset, specify name of alarmC in DD/ChannelAlarmC[]. e.g.: ChannelAlarmC[0] = Variox_lHe_RefillTMO for first channel

  • For lHe/lN2 with change of dewar create an alarmL when level is below minimum e.g.: Alarm Barrel_lHe_LevelLOW e.g.: Condition /Equipment/lm5100/Variables/Measured[14] < 20 e.g.: Message Helium Barrel Level is low

  • To automatically reset alarmL when Level of channel was reset, specify name of alarmL in DD/ChannelAlarmL[]. e.g.: ChannelAlarmL[0] = HeliumDewar for first channel

  • enable history logging (=1) in equipment's common

S
Description
Driver and default frontend for Cryomagnetics LM-510 Liquid Cryogen Level Monitor
Readme
2 MiB
Languages
C++ 96.9%
CMake 2.3%
C 0.8%