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