Interlocks ---------- The DPS system is supposed to pump down the gas entering through the XGM. If it fails, the first thing to do is to close the XGM's dosing valve, in order to prevent the entire beamline from venting. If the pressure still rises, we have to switch off the gate valves between the chambers, but not before the XFEL beam is switched off. As a last prerequisite, the roughing valve RV1 should be open if we want to open the gas inlet. This may be closed because we are evacuating the gas lines, in which case the turbo pumps have no roughing valves, so we do not want unnecessary gas load. Pressure interlock ~~~~~~~~~~~~~~~~~~ In case of bad pressure, the first thing we want to do is to close the SCV valve, and to switch off the high voltage HV_LOCK. The pressures are all a bit lower than they are on the gate valves that close, so that the gas stops flowing first, maybe then we don't even need to close the valves anymore, as the pressure will most likely drop. We use the gate valves of the DPSs as a proxy for their entire pumping system: if the turbo pumps behind them are not fine, or the roughing pressure, they are closed by the interlock system. As they are not closing immediately, we are not looking at the *IsClosed* bit, but at *Value*, which switches immediately to *FALSE* should their interlock trigger. .. conditions loop1 SCS_BLU_XGM/DCTRL/SCV_COIL SCS_BLU_XGM/DCTRL/HV_LOCK_INTERLOCK ====== ========================================== ======== ===== Number Device Parameter Operator Limit ====== ========================================== ======== ===== c1 SCS_BLU_XGM/VALVE/GV3.state.IsClosed EQ FALSE c2 SCS_BLU_DPS-2/VALVE/GV4.state.IsClosed EQ FALSE c3 SCS_BLU_XGM/GAUGE/LV1_PVALVE.Value GT 1e-3 c4 SCS_BLU_XGM/VALVE/GV1.state.Value EQ FALSE c5 SCS_BLU_XGM/VALVE/GV2.state.Value EQ FALSE c6 SCS_BLU_DPS-1/GAUGE/PCC5.Value GT 1e-4 c7 SCS_BLU_DPS-1/VALVE/GV3.state.Value EQ FALSE c8 SCS_BLU_DPS-1/GAUGE/PCC4.Value GT 1e-6 c9 SCS_BLU_DPS-1/VALVE/GV2.state.Value EQ FALSE c10 SCS_BLU_DPS-1/GAUGE/CC3.Value GT 5e-7 c11 SCS_BLU_DPS-1/VALVE/GV1.state.Value EQ FALSE c12 SCS_BLU_DPS-2/GAUGE/PCC7.Value GT 1e-4 c13 SCS_BLU_DPS-2/VALVE/GV3.state.Value EQ FALSE c14 SCS_BLU_DPS-2/GAUGE/PCC8.Value GT 1e-6 c15 SCS_BLU_DPS-2/VALVE/GV2.state.Value EQ FALSE c16 SCS_BLU_DPS-2/GAUGE/CC9.Value GT 5e-8 c17 SCS_BLU_DPS-2/VALVE/GV1.state.Value EQ FALSE c18 SCS_BLU_XGM/GAUGE/LV1_PVALVE.AValueSemiRaw LT 1 ====== ========================================== ======== ===== If the needle valve controller is switched off, it gives a perfect pressure. This is condition c18. We close the SCV if pressure is too high. Certainly, we don't care whether the pressures are bad if the valves to the DPS are closed, which makes the conditions a bit complicated. .. actions loop1 SCS_BLU_XGM/DCTRL/SCV_COIL +--------+-----------------------------------------------------------+--------+ | Number | Logic | Action | +========+===========================================================+========+ | a1 | c3 or c4 or c5 or c18 | COff | | | or (c1 and (c6 or c7 or c8 or c9 or c10 or c11)) | | | | or (c2 and (c12 and c13 and c14 and c15 and c16 and c17)) | | +--------+-----------------------------------------------------------+--------+ And we put the HV inhibit on. This is weird for a safety interlock, but worst case DOOCS can switch off the HV. .. actions loop1 SCS_BLU_XGM/DCTRL/HV_LOCK_INTERLOCK +--------+-----------------------------------------------------------+--------+ | Number | Logic | Action | +========+===========================================================+========+ | a1 | c3 or c4 or c5 or c18 | COn | | | or (c1 and (c6 or c7 or c8 or c9 or c10 or c11)) | | | | or (c2 and (c12 and c13 and c14 and c15 and c16 and c17)) | | +--------+-----------------------------------------------------------+--------+ SCS_BLU_XGM/VALVE/RV2 ~~~~~~~~~~~~~~~~~~~~~ The roughing line for evacuation of the gas lines must be closed if any of the gases are open. .. conditions loop1 SCS_BLU_XGM/VALVE/RV2 ====== ======================================== ======== ===== Number Device Parameter Operator Limit ====== ======================================== ======== ===== c1 SCS_BLU_XGM/DCTRL/GS_PV_AR.state.Value EQ TRUE c2 SCS_BLU_XGM/DCTRL/GS_PV_KR.state.Value EQ TRUE c3 SCS_BLU_XGM/DCTRL/GS_PV_XE.state.Value EQ TRUE c4 SCS_BLU_XGM/DCTRL/GS_PV_N.state.Value EQ TRUE ====== ======================================== ======== ===== .. actions loop1 SCS_BLU_XGM/VALVE/RV2 ====== ==================== ====== Number Logic Action ====== ==================== ====== a1 c1 or c2 or c3 or c4 CClose ====== ==================== ====== The inverse is also true: if the gas evacuation line is open, the gas lines must be closed. Also, the gas lines should not be opened if the pressure is high, but they should stay open, so we have an interlock on itself. Also, it should not be possible to open one gas line if one of the others is open. The conditions are actually the same, only the action logic is different. .. conditions loop1 SCS_BLU_XGM/DCTRL/GS_PV_AR SCS_BLU_XGM/DCTRL/GS_PV_KR SCS_BLU_XGM/DCTRL/GS_PV_XE SCS_BLU_XGM/DCTRL/GS_PV_N == ====================================== == ===== No Device Parameter Op Limit == ====================================== == ===== c1 SCS_BLU_XGM/VALVE/RV2.state.IsClosed EQ FALSE c2 SCS_BLU_XGM/ASENS/GS_P_OUT.Value GT -0.98 c3 SCS_BLU_XGM/DCTRL/GS_PV_AR.state.Value EQ TRUE c4 SCS_BLU_XGM/DCTRL/GS_PV_KR.state.Value EQ TRUE c5 SCS_BLU_XGM/DCTRL/GS_PV_XE.state.Value EQ TRUE c6 SCS_BLU_XGM/DCTRL/GS_PV_N.state.Value EQ TRUE == ====================================== == ===== .. conditions loop1 SCS_BLU_XGM/DCTRL/GS_PV_AR == ======================================= ====== No Logic Action == ======================================= ====== a1 c1 or (c2 and not c3) or c4 or c5 or c6 COff == ======================================= ====== .. conditions loop1 SCS_BLU_XGM/DCTRL/GS_PV_KR == ======================================= ====== No Logic Action == ======================================= ====== a1 c1 or (c2 and not c4) or c3 or c5 or c6 COff == ======================================= ====== .. conditions loop1 SCS_BLU_XGM/DCTRL/GS_PV_XE == ======================================= ====== No Logic Action == ======================================= ====== a1 c1 or (c2 and not c5) or c3 or c4 or c6 COff == ======================================= ====== .. conditions loop1 SCS_BLU_XGM/DCTRL/GS_PV_N == ======================================= ====== No Logic Action == ======================================= ====== a1 c1 or (c2 and not c6) or c3 or c4 or c5 COff == ======================================= ====== SCS_BLU_XGM/VALVE/GV1 and /GV2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ We want to close the butterfly valve over the turbomolecular pump in case they or their roughing vacuum goes bad. We do not want to close them just because the rouging vacuum is closed, because we may simply be evacuating the gas lines. .. conditions loop1 SCS_BLU_XGM/VALVE/GV1 ====== ================================== ======== ===== Number Device Parameter Operator Limit ====== ================================== ======== ===== c1 SCS_BLU_XGM/TPUMP/TP1.state.RPM80 EQ FALSE ====== ================================== ======== ===== .. conditions loop1 SCS_BLU_XGM/VALVE/GV2 ====== ================================= ======== ===== Number Device Parameter Operator Limit ====== ================================= ======== ===== c1 SCS_BLU_XGM/TPUMP/TP2.state.RPM80 EQ FALSE ====== ================================= ======== ===== As the line merges into one, all other conditions are the same for both gate valves. .. conditions loop1 SCS_BLU_XGM/VALVE/GV1 SCS_BLU_XGM/VALVE/GV2 ====== ========================================= ======== ===== Number Device Parameter Operator Limit ====== ========================================= ======== ===== c2 SCS_BLU_XGM/GAUGE/P2_1.Value GT 3e-2 c3 SCS_BLU_XGM/VALVE/RV1.state.IsOpen EQ FALSE c4 SCS_BLU_DPS-2/VALVE/SP31_RV2.state.IsOpen EQ FALSE ====== ========================================= ======== ===== .. actions loop1 SCS_BLU_XGM/VALVE/GV1 SCS_BLU_XGM/VALVE/GV2 ====== ========================== ====== Number Logic Action ====== ========================== ====== a1 c1 or c2 or c3 or c4 CClose ====== ========================== ======