From 19579bc708d57955aee6c20ac6abf89fb5d2e176 Mon Sep 17 00:00:00 2001 From: x10sa Date: Tue, 26 May 2026 15:46:31 +0200 Subject: [PATCH] update device configs and checker --- .../startup/post_startup.py | 6 +- pxii_bec/device_configs/pxii-devices-new.csv | 231 ++++---- pxii_bec/device_configs/pxii-devices-new.yaml | 508 ++++++++++++++++-- pxii_bec/device_configs/se_devices.yaml | 24 +- pxii_bec/macros/check.py | 478 ++++++++++++++-- 5 files changed, 1021 insertions(+), 226 deletions(-) diff --git a/pxii_bec/bec_ipython_client/startup/post_startup.py b/pxii_bec/bec_ipython_client/startup/post_startup.py index bd2dab1..e209b0f 100644 --- a/pxii_bec/bec_ipython_client/startup/post_startup.py +++ b/pxii_bec/bec_ipython_client/startup/post_startup.py @@ -34,4 +34,8 @@ to setup the prompts. """ # pylint: disable=invalid-name, unused-import, import-error, undefined-variable, unused-variable, unused-argument, no-name-in-module -init_positioned_devices() +d = init_se_devices() +states, allow_modifiers = get_states() +deps = planner_deps() +planner = StateManager(d, states, allow_modifiers, deps) + diff --git a/pxii_bec/device_configs/pxii-devices-new.csv b/pxii_bec/device_configs/pxii-devices-new.csv index 105a458..fb66ef9 100644 --- a/pxii_bec/device_configs/pxii-devices-new.csv +++ b/pxii_bec/device_configs/pxii-devices-new.csv @@ -1,50 +1,50 @@ name,description,deviceClass,PV,readoutPriority,tag,readOnly,include,userParameter, -sls_current,SLS current,SignalRO,ARS07-DPCT-0100:CURR,monitored,SLS,yes,yes,, -fe_bpm1,FE XBPM Signal 1,SignalRO,X10SA-FE-XBPM1:Current1:MeanValue_RBV,monitored,bpm,yes,yes,, -fe_bpm2,FE XBPM Signal 2,SignalRO,X10SA-FE-XBPM1:Current2:MeanValue_RBV,monitored,bpm,yes,yes,, -fe_bpm3,FE XBPM Signal 3,SignalRO,X10SA-FE-XBPM1:Current3:MeanValue_RBV,monitored,bpm,yes,yes,, -fe_bpm4,FE XBPM Signal 4,SignalRO,X10SA-FE-XBPM1:Current4:MeanValue_RBV,monitored,bpm,yes,yes,, +sls_current,SLS Current,SignalRO,ARS07-DPCT-0100:CURR,monitored,SLS,yes,yes,, +fe_bpm1,FE XBPM Channel 1,SignalRO,X10SA-FE-XBPM1:Current1:MeanValue_RBV,monitored,bpm,yes,yes,, +fe_bpm2,FE XBPM Channel 2,SignalRO,X10SA-FE-XBPM1:Current2:MeanValue_RBV,monitored,bpm,yes,yes,, +fe_bpm3,FE XBPM Channel 3,SignalRO,X10SA-FE-XBPM1:Current3:MeanValue_RBV,monitored,bpm,yes,yes,, +fe_bpm4,FE XBPM Channel 4,SignalRO,X10SA-FE-XBPM1:Current4:MeanValue_RBV,monitored,bpm,yes,yes,, fe_bpmsum,FE XBPM Summed,SignalRO,X10SA-FE-XBPM1:SumAll:MeanValue_RBV,monitored,bpm,yes,yes,, fe_bpm_x,FE BPM X,Motor,X10SA-FE-XBPM1:TRX,baseline,fe,no,yes,, fe_bpm_y,FE BPM Y,Motor,X10SA-FE-XBPM1:TRY,baseline,fe,no,yes,, fe_sl_xr,FE Slit X Ring,MotorEC,X10SA-FE-SL1:TRXR,baseline,fe,no,yes,, -fe_sl_yt,FE Slit Y top,MotorEC,X10SA-FE-SL1:TRYT,baseline,fe,no,yes,, +fe_sl_yt,FE Slit Y Top,MotorEC,X10SA-FE-SL1:TRYT,baseline,fe,no,yes,, fe_sl_xw,FE Slit X Wall,MotorEC,X10SA-FE-SL1:TRXW,baseline,fe,no,yes,, -fe_sl_yb,FE SlitY Bottom,MotorEC,X10SA-FE-SL1:TRYB,baseline,fe,no,yes,, +fe_sl_yb,FE Slit Y Bottom,MotorEC,X10SA-FE-SL1:TRYB,baseline,fe,no,yes,, fe_sl_xcen,FE Slit X Centre,MotorEC,X10SA-FE-SL1:CENTERX,baseline,fe,no,yes,, fe_sl_xsize,FE Slit X Size,MotorEC,X10SA-FE-SL1:SIZEX,baseline,fe,no,yes,, fe_sl_ycen,FE Slit Y Centre,MotorEC,X10SA-FE-SL1:CENTERY,baseline,fe,no,yes,, fe_sl_ysize,FE Slit Y Size,MotorEC,X10SA-FE-SL1:SIZEY,baseline,fe,no,yes,, -bsf_bpm1,BSF BPM Signal 1,SignalRO,X10SA-OP-BSFBPM:SIGNAL1,monitored,bpm,yes,no,, -bsf_bpm2,BSF BPM Signal 2,SignalRO,X10SA-OP-BSFBPM:SIGNAL2,monitored,bpm,yes,no,, -bsf_bpm3,BSF BPM Signal 3,SignalRO,X10SA-OP-BSFBPM:SIGNAL3,monitored,bpm,yes,no,, -bsf_bpm4,BSF BPM Signal 4,SignalRO,X10SA-OP-BSFBPM:SIGNAL4,monitored,bpm,yes,no,, +bsf_bpm1,BSF BPM Channel 1,SignalRO,X10SA-OP-BSFBPM:SIGNAL1,monitored,bpm,yes,no,, +bsf_bpm2,BSF BPM Channel 2,SignalRO,X10SA-OP-BSFBPM:SIGNAL2,monitored,bpm,yes,no,, +bsf_bpm3,BSF BPM Channel 3,SignalRO,X10SA-OP-BSFBPM:SIGNAL3,monitored,bpm,yes,no,, +bsf_bpm4,BSF BPM Channel 4,SignalRO,X10SA-OP-BSFBPM:SIGNAL4,monitored,bpm,yes,no,, bsf_bpmsum,BSF BPM Summed,SignalRO,X10SA-OP-BSFBPM:SUM,monitored,bpm,yes,no,, -bsf_sl_xw,BSF slit outboard,MotorEC,X10SA-OP-BSFSLH:TRXW,baseline,bsf,no,yes,, -bsf_sl_xr,BSF slit inboard,MotorEC,X10SA-OP-BSFSLH:TRXR,baseline,bsf,no,yes,, -bsf_sl_yt,BSF slit top,MotorEC,X10SA-OP-BSFSLV:TRYT,baseline,bsf,no,yes,, -bsf_sl_yb,BSF slit bottom,MotorEC,X10SA-OP-BSFSLV:TRYB,baseline,bsf,no,yes,, -bsf_sl_xcen,BSF X centre,MotorEC,X10SA-OP-BSFSLH:CENTER,baseline,bsf,no,yes,, -bsf_sl_xsize,BSF X size,MotorEC,X10SA-OP-BSFSLH:SIZE,baseline,bsf,no,yes,, -bsf_sl_ycen,BSF Y centre,MotorEC,X10SA-OP-BSFSLV:CENTER,baseline,bsf,no,yes,, -bsf_sl_ysize,BSF Y size,MotorEC,X10SA-OP-BSFSLV:SIZE,baseline,bsf,no,yes,, +bsf_sl_xw,BSF Slit Wall,MotorEC,X10SA-OP-BSFSLH:TRXW,baseline,bsf,no,yes,, +bsf_sl_xr,BSF Slit Ring,MotorEC,X10SA-OP-BSFSLH:TRXR,baseline,bsf,no,yes,, +bsf_sl_yt,BSF Slit Top,MotorEC,X10SA-OP-BSFSLV:TRYT,baseline,bsf,no,yes,, +bsf_sl_yb,BSF Slit Bottom,MotorEC,X10SA-OP-BSFSLV:TRYB,baseline,bsf,no,yes,, +bsf_sl_xcen,BSF X Centre,MotorEC,X10SA-OP-BSFSLH:CENTER,baseline,bsf,no,yes,, +bsf_sl_xsize,BSF X Size,MotorEC,X10SA-OP-BSFSLH:SIZE,baseline,bsf,no,yes,, +bsf_sl_ycen,BSF Y Centre,MotorEC,X10SA-OP-BSFSLV:CENTER,baseline,bsf,no,yes,, +bsf_sl_ysize,BSF Y Size,MotorEC,X10SA-OP-BSFSLV:SIZE,baseline,bsf,no,yes,, bsf_f1_y,BSF Filter 1 Y,MotorEC,X10SA-OP-BSFFI1:TRY,baseline,bsf,no,yes,, bsf_f2_y,BSF Filter 2 Y,MotorEC,X10SA-OP-BSFFI2:TRY,baseline,bsf,no,yes,, -dcm_bragg,DCM Bragg angle,MotorEC,X10SA-OP-DCM:ROTY,baseline,dcm,no,yes,, -dcm_x,DCM lateral,MotorEC,X10SA-OP-DCM:TRX,baseline,dcm,no,yes,, -dcm_perp,DCM Perp,MotorEC,X10SA-OP-DCM:TRX-CR2,baseline,dcm,no,yes,, -dcm_pitch,DCM 2nd crystal pitch,MotorEC,X10SA-OP-DCM:ROTY-CR2-PITCH,baseline,dcm,no,yes,, -dcm_fpitch,DCM 2nd crystal fine pitch,MotorEC,X10SA-OP-DCM:ROTY-CR2-FINEPITCH,baseline,dcm,no,yes,, -dcm_froll,DCM 2nd crystal fine roll,MotorEC,X10SA-OP-DCM:ROTZ-CR2-FINEROLL,baseline,dcm,no,yes,, -lu_bpm1,LU BPM Signal 1,SignalRO,X10SA-OP-LUBPM:Current1:MeanValue_RBV,monitored,bpm,yes,yes,, -lu_bpm2,LU BPM Signal 2,SignalRO,X10SA-OP-LUBPM:Current2:MeanValue_RBV,monitored,bpm,yes,yes,, -lu_bpm3,LU BPM Signal 3,SignalRO,X10SA-OP-LUBPM:Current3:MeanValue_RBV,monitored,bpm,yes,yes,, -lu_bpm4,LU BPM Signal 4,SignalRO,X10SA-OP-LUBPM:Current4:MeanValue_RBV,monitored,bpm,yes,yes,, +dcm_bragg,DCM Bragg Angle,MotorEC,X10SA-OP-DCM:ROTY,baseline,dcm,no,yes,, +dcm_x,DCM Lateral,MotorEC,X10SA-OP-DCM:TRX,baseline,dcm,no,yes,, +dcm_perp,DCM Perpendicular,MotorEC,X10SA-OP-DCM:TRX-CR2,baseline,dcm,no,yes,, +dcm_pitch,DCM 2nd Crystal Pitch,MotorEC,X10SA-OP-DCM:ROTY-CR2-PITCH,baseline,dcm,no,yes,, +dcm_fpitch,DCM 2nd Crystal Fine Pitch,MotorEC,X10SA-OP-DCM:ROTY-CR2-FINEPITCH,baseline,dcm,no,yes,, +dcm_froll,DCM 2nd Crystal Fine roll,MotorEC,X10SA-OP-DCM:ROTZ-CR2-FINEROLL,baseline,dcm,no,yes,, +lu_bpm1,LU BPM Channel 1,SignalRO,X10SA-OP-LUBPM:Current1:MeanValue_RBV,monitored,bpm,yes,yes,, +lu_bpm2,LU BPM Channel 2,SignalRO,X10SA-OP-LUBPM:Current2:MeanValue_RBV,monitored,bpm,yes,yes,, +lu_bpm3,LU BPM Channel 3,SignalRO,X10SA-OP-LUBPM:Current3:MeanValue_RBV,monitored,bpm,yes,yes,, +lu_bpm4,LU BPM Channel 4,SignalRO,X10SA-OP-LUBPM:Current4:MeanValue_RBV,monitored,bpm,yes,yes,, lu_bpmsum,LU BPM Summed,SignalRO,X10SA-OP-LUBPM:SumAll:MeanValue_RBV,monitored,bpm,yes,yes,, -lu_bpm_x,BPM2 X translation,Motor,X10SA-OP-LUBPM:TRX,baseline,lu,no,yes,, -lu_bpm_y,BPM2 Y translation,Motor,X10SA-OP-LUBPM:TRY,baseline,lu,no,yes,, -lu_z1,Lens Z1 Motion,Motor,X10SA-OP-LUTRZ1:TRZ,baseline,lu,no,yes,, -lu_z2,Lens Z2 Motion,Motor,X10SA-OP-LUTRZ2:TRZ,baseline,lu,no,yes,, +lu_bpm_x,BPM2 X ,Motor,X10SA-OP-LUBPM:TRX,baseline,lu,no,yes,, +lu_bpm_y,BPM2 Y ,Motor,X10SA-OP-LUBPM:TRY,baseline,lu,no,yes,, +lu_z1,Lens Z1 ,Motor,X10SA-OP-LUTRZ1:TRZ,baseline,lu,no,yes,, +lu_z2,Lens Z2 ,Motor,X10SA-OP-LUTRZ2:TRZ,baseline,lu,no,yes,, lu_pod1_x,SmarPod1 X,Motor,X10SA-OP-LUPOD1:TRX1,baseline,lu,no,no,, lu_lens1_x2,Lenses1 X,Motor,X10SA-OP-LUPOD1:TRX2,baseline,lu,no,no,, lu_pod1_y,SmarPod1 Y,Motor,X10SA-OP-LUPOD1:TRY,baseline,lu,no,yes,, @@ -59,10 +59,10 @@ lu_pod2_z,SmarPod2 Z,Motor,X10SA-OP-LUPOD2:TRZ,baseline,lu,no,yes,, lu_pod2_rotx,SmarPod2 RX,Motor,X10SA-OP-LUPOD2:ROTX,baseline,lu,no,yes,, lu_pod2_roty,SmarPod2 RY,Motor,X10SA-OP-LUPOD2:ROTY,baseline,lu,no,yes,, lu_pod2_rotz,SmarPod2 RZ,Motor,X10SA-OP-LUPOD2:ROTZ,baseline,lu,no,yes,, -ss_bpm1,SS BPM Signal 1,SignalRO,X10SA-ES-SSBPM:Current1:MeanValue_RBV,monitored,bpm,yes,yes,, -ss_bpm2,SS BPM Signal 2,SignalRO,X10SA-ES-SSBPM:Current2:MeanValue_RBV,monitored,bpm,yes,yes,, -ss_bpm3,SS BPM Signal 3,SignalRO,X10SA-ES-SSBPM:Current3:MeanValue_RBV,monitored,bpm,yes,yes,, -ss_bpm4,SS BPM Signal 4,SignalRO,X10SA-ES-SSBPM:Current4:MeanValue_RBV,monitored,bpm,yes,yes,, +ss_bpm1,SS BPM Channel 1,SignalRO,X10SA-ES-SSBPM:Current1:MeanValue_RBV,monitored,bpm,yes,yes,, +ss_bpm2,SS BPM Channel 2,SignalRO,X10SA-ES-SSBPM:Current2:MeanValue_RBV,monitored,bpm,yes,yes,, +ss_bpm3,SS BPM Channel 3,SignalRO,X10SA-ES-SSBPM:Current3:MeanValue_RBV,monitored,bpm,yes,yes,, +ss_bpm4,SS BPM Channel 4,SignalRO,X10SA-ES-SSBPM:Current4:MeanValue_RBV,monitored,bpm,yes,yes,, ss_bpmsum,SS BPM Summed,SignalRO,X10SA-ES-SSBPM:SumAll:MeanValue_RBV,monitored,bpm,yes,yes,, ss_bpm_x,SS BPM X,Motor,X10SA-ES-SSBPM:TRX,baseline,ss,no,yes,, ss_bpm_y,SS BPM Y,Motor,X10SA-ES-SSBPM:TRY,baseline,ss,no,yes,, @@ -70,100 +70,101 @@ ss_f1_x,SS Filter 1 X,Motor,X10SA-ES-SSFI1:TRX,baseline,ss,no,yes,, ss_f2_x,SS Filter 2 X,Motor,X10SA-ES-SSFI2:TRX,baseline,ss,no,yes,, ss_f3_x,SS Filter 2 X,Motor,X10SA-ES-SSFI3:TRX,baseline,ss,no,yes,, ss_f4_x,SS Filter 4 X,Motor,X10SA-ES-SSFI4:TRX,baseline,ss,no,yes,, -ss_sl_xw,SS slit wall,Motor,X10SA-ES-SSSLH:TRXW,baseline,ss,no,yes,, -ss_sl_xr,SS slit ring,Motor,X10SA-ES-SSSLH:TRXR,baseline,ss,no,yes,, -ss_sl_xcen,SS slit X centre,Motor,X10SA-ES-SSSLH:CENTER,baseline,ss,no,yes,, -ss_sl_xsize,SS slit X size,Motor,X10SA-ES-SSSLH:SIZE,baseline,ss,no,yes,, -ss_sl_yt,SS slit top,Motor,X10SA-ES-SSSLV:TRYT,baseline,ss,no,yes,, -ss_sl_yb,SS slit bottom,Motor,X10SA-ES-SSSLV:TRYB,baseline,ss,no,yes,, -ss_sl_ycen,SS slit Y centre,Motor,X10SA-ES-SSSLV:CENTER,baseline,ss,no,yes,, -ss_sl_ysize,SS slit Y size,Motor,X10SA-ES-SSSLV:SIZE,baseline,ss,no,yes,, +ss_sl_xw,SS Slit Wall,Motor,X10SA-ES-SSSLH:TRXW,baseline,ss,no,yes,, +ss_sl_xr,SS Slit Ring,Motor,X10SA-ES-SSSLH:TRXR,baseline,ss,no,yes,, +ss_sl_xcen,SS Slit X Centre,Motor,X10SA-ES-SSSLH:CENTER,baseline,ss,no,yes,, +ss_sl_xsize,SS Slit X Size,Motor,X10SA-ES-SSSLH:SIZE,baseline,ss,no,yes,, +ss_sl_yt,SS Slit Top,Motor,X10SA-ES-SSSLV:TRYT,baseline,ss,no,yes,, +ss_sl_yb,SS Slit Bottom,Motor,X10SA-ES-SSSLV:TRYB,baseline,ss,no,yes,, +ss_sl_ycen,SS Slit Y Centre,Motor,X10SA-ES-SSSLV:CENTER,baseline,ss,no,yes,, +ss_sl_ysize,SS Slit Y Size,Motor,X10SA-ES-SSSLV:SIZE,baseline,ss,no,yes,, ss_xi_x,SS X-ray eye X,Motor,X10SA-ES-SSXI:TRX,baseline,ss,no,yes,"{""type"": multi-position,""in"": 7.5, ""out"": -2.1}", ss_xi_y,SS X-ray eye Y,Motor,X10SA-ES-SSXI:TRY,baseline,ss,no,yes,, -ss_xicam_x,ss cam X,SignalRO,X10SA-ES-SSXI:cam1:Stats5:CentroidX_RBV,baseline,ss,yes,no,, -ss_xicam_y,ss cam Y,SignalRO,X10SA-ES-SSXI:cam1:Stats5:CentroidY_RBV,baseline,ss,yes,no,, -ss_xicam_max,ss cam max value,SignalRO,X10SA-ES-SSXI:cam1:Stats5:MaxValue_RBV,monitored,ss,yes,no,, -ss_xicam_exp,ss camera exposure,Signal,X10SA-ES-SSXI:cam1:AcquireTime,baseline,ss,no,no,, -ss_xicam_gain,ss camera gain,Signal,X10SA-ES-SSXI:cam1:cam1:Gain,baseline,ss,no,no,, -ss_xicam_xsig,ss camera x sigma,Signal,X10SA-ES-SSXI:cam1:Stats5:SigmaX_RBV,baseline,ss,yes,no,, -ss_xicam_ysig,ss camera y sigma,Signal,X10SA-ES-SSXI:cam1:Stats5:SigmaY_RBV,baseline,ss,yes,no,, -vfm_xu,VFM Upstream X,MotorEC,X10SA-ES-KBV:TRXU,baseline,vfm,no,no,, -vfm_xd,VFM Downstream X,MotorEC,X10SA-ES-KBV:TRXD,baseline,vfm,no,no,, -vfm_yur,VFM Upstream Ring Y,MotorEC,X10SA-ES-KBV:TRYUR,baseline,vfm,no,no,, -vfm_yw,VFM Wall Y,MotorEC,X10SA-ES-KBV:TRYW,baseline,vfm,no,no,, -vfm_ydr,VFM Downstream Ring Y,MotorEC,X10SA-ES-KBV:TRYDR,baseline,vfm,no,no,, -vfm_bu,VFM Upstream Bender,MotorEC,X10SA-ES-KBV:BNDU,baseline,vfm,no,no,, -vfm_bd,VFM Downstream Bender,MotorEC,X10SA-ES-KBV:BNDD,baseline,vfm,no,no,, -vfm_yaw,VFM Virtual Yaw,MotorEC,X10SA-ES-KBV:YAW,baseline,vfm,no,no,, -vfm_roll,VFM Virtual Roll,MotorEC,X10SA-ES-KBV:ROLL,baseline,vfm,no,no,, -vfm_pitch,VFM Virtual Pitch,MotorEC,X10SA-ES-KBV:PITCH,baseline,vfm,no,no,, -vfm_x,VFM Virtual X,MotorEC,X10SA-ES-KBV:TRX,baseline,vfm,no,no,, -vfm_y,VFM Virtual Y ,MotorEC,X10SA-ES-KBV:TRY,baseline,vfm,no,no,, -hfm_xu,HFM Upstream X,MotorEC,X10SA-ES-KBH:TRXU,baseline,hfm,no,no,, -hfm_xd,HFM Downstream X,MotorEC,X10SA-ES-KBH:TRXD,baseline,hfm,no,no,, -hfm_yuw,HFM Upstream Wall Y,MotorEC,X10SA-ES-KBH:TRYUW,baseline,hfm,no,no,, -hfm_yr,HFM Ring Y,MotorEC,X10SA-ES-KBH:TRYR,baseline,hfm,no,no,, -hfm_ydw,HFM Downstream Wall Y,MotorEC,X10SA-ES-KBH:TRYDW,baseline,hfm,no,no,, -hfm_bu,HFM Upstream Bender,MotorEC,X10SA-ES-KBH:BNDU,baseline,hfm,no,no,, -hfm_bd,HFM Downstream Bender,MotorEC,X10SA-ES-KBH:BNDD,baseline,hfm,no,no,, -hfm_yaw,HFM Virtual Yaw,MotorEC,X10SA-ES-KBH:YAW,baseline,hfm,no,no,, -hfm_roll,HFM Virtual Roll,MotorEC,X10SA-ES-KBH:ROLL,baseline,hfm,no,no,, -hfm_pitch,HFM Virtual Pitch,MotorEC,X10SA-ES-KBH:PITCH,baseline,hfm,no,no,, -hfm_x,HFM Virtual X,MotorEC,X10SA-ES-KBH:TRX,baseline,hfm,no,no,, -hfm_y,HFM Virtual Y ,MotorEC,X10SA-ES-KBH:TRY,baseline,hfm,no,no,, -bcu_bpm1,BCU BPM Signal 1 ,SignalRO,X10SA-ES-BCBPM:Current1:MeanValue_RBV,monitored,bpm,yes,yes,, -bcu_bpm2,BCU BPM Signal 2,SignalRO,X10SA-ES-BCBPM:Current2:MeanValue_RBV,monitored,bpm,yes,yes,, -bcu_bpm3,BCU BPM Signal 3,SignalRO,X10SA-ES-BCBPM:Current3:MeanValue_RBV,monitored,bpm,yes,yes,, -bcu_bpm4,BCU BPM Signal 4,SignalRO,X10SA-ES-BCBPM:Current4:MeanValue_RBV,monitored,bpm,yes,yes,, +ss_xicam_x,SS Camera X,SignalRO,X10SA-ES-SSXI:cam1:Stats5:CentroidX_RBV,baseline,ss,yes,no,, +ss_xicam_y,SS Camera Y,SignalRO,X10SA-ES-SSXI:cam1:Stats5:CentroidY_RBV,baseline,ss,yes,no,, +ss_xicam_max,SS Cam Max,SignalRO,X10SA-ES-SSXI:cam1:Stats5:MaxValue_RBV,monitored,ss,yes,no,, +ss_xicam_exp,SS Camera Exposure,Signal,X10SA-ES-SSXI:cam1:AcquireTime,baseline,ss,no,no,, +ss_xicam_gain,SS Camera Gain,Signal,X10SA-ES-SSXI:cam1:cam1:Gain,baseline,ss,no,no,, +ss_xicam_xsig,SS Camera X Sigma,Signal,X10SA-ES-SSXI:cam1:Stats5:SigmaX_RBV,baseline,ss,yes,no,, +ss_xicam_ysig,SS Camera Y Sigma,Signal,X10SA-ES-SSXI:cam1:Stats5:SigmaY_RBV,baseline,ss,yes,no,, +vfm_xu,VFM Upstream X,MotorEC,X10SA-ES-VFM:TRXU,baseline,vfm,no,yes,, +vfm_xd,VFM Downstream X,MotorEC,X10SA-ES-VFM:TRXD,baseline,vfm,no,yes,, +vfm_yur,VFM Upstream Ring Y,MotorEC,X10SA-ES-VFM:TRYUR,baseline,vfm,no,yes,, +vfm_yw,VFM Wall Y,MotorEC,X10SA-ES-VFM:TRYW,baseline,vfm,no,yes,, +vfm_ydr,VFM Downstream Ring Y,MotorEC,X10SA-ES-VFM:TRYDR,baseline,vfm,no,yes,, +vfm_bu,VFM Upstream Bender,MotorEC,X10SA-ES-VFM:BNDU,baseline,vfm,no,yes,, +vfm_bd,VFM Downstream Bender,MotorEC,X10SA-ES-VFM:BNDD,baseline,vfm,no,yes,, +vfm_yaw,VFM Virtual Yaw,MotorEC,X10SA-ES-VFM:YAW,baseline,vfm,no,yes,, +vfm_roll,VFM Virtual Roll,MotorEC,X10SA-ES-VFM:ROLL,baseline,vfm,no,yes,, +vfm_pitch,VFM Virtual Pitch,MotorEC,X10SA-ES-VFM:PITCH,baseline,vfm,no,yes,, +vfm_x,VFM Virtual X,MotorEC,X10SA-ES-VFM:TRX,baseline,vfm,no,yes,, +vfm_y,VFM Virtual Y ,MotorEC,X10SA-ES-VFM:TRY,baseline,vfm,no,yes,, +hfm_xu,HFM Upstream X,MotorEC,X10SA-ES-HFM:TRXU,baseline,hfm,no,yes,, +hfm_xd,HFM Downstream X,MotorEC,X10SA-ES-HFM:TRXD,baseline,hfm,no,yes,, +hfm_yuw,HFM Upstream Wall Y,MotorEC,X10SA-ES-HFM:TRYUW,baseline,hfm,no,yes,, +hfm_yr,HFM Ring Y,MotorEC,X10SA-ES-HFM:TRYR,baseline,hfm,no,yes,, +hfm_ydw,HFM Downstream Wall Y,MotorEC,X10SA-ES-HFM:TRYDW,baseline,hfm,no,yes,, +hfm_bu,HFM Upstream Bender,MotorEC,X10SA-ES-HFM:BNDU,baseline,hfm,no,yes,, +hfm_bd,HFM Downstream Bender,MotorEC,X10SA-ES-HFM:BNDD,baseline,hfm,no,yes,, +hfm_yaw,HFM Virtual Yaw,MotorEC,X10SA-ES-HFM:YAW,baseline,hfm,no,yes,, +hfm_roll,HFM Virtual Roll,MotorEC,X10SA-ES-HFM:ROLL,baseline,hfm,no,yes,, +hfm_pitch,HFM Virtual Pitch,MotorEC,X10SA-ES-HFM:PITCH,baseline,hfm,no,yes,, +hfm_x,HFM Virtual X,MotorEC,X10SA-ES-HFM:TRX,baseline,hfm,no,yes,, +hfm_y,HFM Virtual Y ,MotorEC,X10SA-ES-HFM:TRY,baseline,hfm,no,yes,, +bcu_bpm1,BCU BPM Channel 1 ,SignalRO,X10SA-ES-BCBPM:Current1:MeanValue_RBV,monitored,bpm,yes,yes,, +bcu_bpm2,BCU BPM Channel 2,SignalRO,X10SA-ES-BCBPM:Current2:MeanValue_RBV,monitored,bpm,yes,yes,, +bcu_bpm3,BCU BPM Channel 3,SignalRO,X10SA-ES-BCBPM:Current3:MeanValue_RBV,monitored,bpm,yes,yes,, +bcu_bpm4,BCU BPM Channel 4,SignalRO,X10SA-ES-BCBPM:Current4:MeanValue_RBV,monitored,bpm,yes,yes,, bcu_bpmsum,BCU BPM Summed,SignalRO,X10SA-ES-BCBPM:SumAll:MeanValue_RBV,monitored,bpm,yes,yes,, bcu_bpm_x,BCU BPM X,Motor,X10SA-ES-BCBPM:TRX,baseline,bcu,no,yes,, bcu_bpm_y,BCU BPM Y ,Motor,X10SA-ES-BCBPM:TRY,baseline,bcu,no,yes,, -bcu_sl_xw,BCU slit wall,Motor,X10SA-ES-BCSLH:TRXW,baseline,bcu,no,no,, -bcu_sl_xr,BCU slit ring,Motor,X10SA-ES-BCSLH:TRXR,baseline,bcu,no,no,, -bcu_sl_xcen,BCU slit X centre,Motor,X10SA-ES-BCSLH:CENTER,baseline,bcu,no,no,, -bcu_sl_xsize,BCU slit X size,Motor,X10SA-ES-BCSLH:SIZEX,baseline,bcu,no,no,, -bcu_sl_yt,BCU slit top,Motor,X10SA-ES-BCSLV:TRYT,baseline,bcu,no,no,, -bcu_sl_yb,BCU slit bottom,Motor,X10SA-ES-BCSLV:TRYB,baseline,bcu,no,no,, -bcu_sl_ycen,BCU slit Y centre,Motor,X10SA-ES-BCSLV:CENTER,baseline,bcu,no,no,, -bcu_sl_ysize,BCU slit Y size,Motor,X10SA-ES-BCSLV:SIZE,baseline,bcu,no,no,, -xrf_pos,XRF det in/out,Signal,X10SA-ES-XRF:POS-SET,baseline,se,no,no,"{""type"":positioner}", -samcam_x,sample cam X ,SignalRO,X10SA-ES-MS:Stats5:CentroidX_RBV,baseline,scam,yes,yes,, -samcam_xsig,sample cam X sigma,SignalRO,X10SA-ES-MS:Stats5:SigmaX_RBV,monitored,scam,yes,yes,, -samcam_y,sample cam Y ,SignalRO,X10SA-ES-MS:Stats5:CentroidY_RBV,baseline,scam,yes,yes,, -samcam_ysig,sample cam Y sigma,SignalRO,X10SA-ES-MS:Stats5:SigmaY_RBV,monitored,scam,yes,yes,, -samcam_max,sample cam max value,SignalRO,X10SA-ES-MS:Stats5:MaxValue_RBV,monitored,scam,yes,yes,, -samcam_exp,sample cam exp time,Signal,X10SA-ES-MS:cam1:AcquireTime,baseline,scam,no,yes,, -samcam_gain,sample cam gain,Signal,X10SA-ES-MS:cam1:Gain,baseline,scam,no,yes,, -scam_zoom,Sample cam zoom,Motor,X10SA-ES-MS:ZOOM,baseline,scam,no,yes,, -fl_bright,Frontlight brightness,Signal,X10SA-ES-FL:SET,baseline,se,no,no,, +bcu_sl_xw,BCU Slit Wall,Motor,X10SA-ES-BCSLH:TRXW,baseline,bcu,no,yes,, +bcu_sl_xr,BCU Slit Ring,Motor,X10SA-ES-BCSLH:TRXR,baseline,bcu,no,yes,, +bcu_sl_xcen,BCU Slit X Centre,Motor,X10SA-ES-BCSLH:CENTER,baseline,bcu,no,yes,, +bcu_sl_xsize,BCU Slit X Size,Motor,X10SA-ES-BCSLH:SIZE,baseline,bcu,no,yes,, +bcu_sl_yt,BCU Slit Top,Motor,X10SA-ES-BCSLV:TRYT,baseline,bcu,no,yes,, +bcu_sl_yb,BCU Slit Bottom,Motor,X10SA-ES-BCSLV:TRYB,baseline,bcu,no,yes,, +bcu_sl_ycen,BCU Slit Y Centre,Motor,X10SA-ES-BCSLV:CENTER,baseline,bcu,no,yes,, +bcu_sl_ysize,BCU Slit Y Size,Motor,X10SA-ES-BCSLV:SIZE,baseline,bcu,no,yes,, +xrf_pos,XRF Positioner,Signal,X10SA-ES-XRF:POS-SET,baseline,se,no,no,"{""type"":positioner}", +samcam_x,Sample Camera X ,SignalRO,X10SA-ES-MS:Stats5:CentroidX_RBV,baseline,scam,yes,yes,, +samcam_xsig,Sample Camera X Sigma,SignalRO,X10SA-ES-MS:Stats5:SigmaX_RBV,monitored,scam,yes,yes,, +samcam_y,Sample Camera Y ,SignalRO,X10SA-ES-MS:Stats5:CentroidY_RBV,baseline,scam,yes,yes,, +samcam_ysig,Sample Camera Y Sigma,SignalRO,X10SA-ES-MS:Stats5:SigmaY_RBV,monitored,scam,yes,yes,, +samcam_max,Sample Camera Max ,SignalRO,X10SA-ES-MS:Stats5:MaxValue_RBV,monitored,scam,yes,yes,, +samcam_exp,Sample Camera Exposure,Signal,X10SA-ES-MS:cam1:AcquireTime,baseline,scam,no,yes,, +samcam_gain,Sample Camera Gain,Signal,X10SA-ES-MS:cam1:Gain,baseline,scam,no,yes,, +scam_zoom,Sample Camera Zoom,Motor,X10SA-ES-MS:ZOOM,baseline,scam,no,yes,, +fl_bright,Frontlight Brightness,Signal,X10SA-ES-FL:SET,baseline,se,no,no,, coll_x,Collimator X,Motor,X10SA-ES-COL:TRX,baseline,se,no,yes,, coll_y,Collimator Y,Motor,X10SA-ES-COL:TRY,baseline,se,no,no,"{""type"": multi-position, ""in"": 41.5, ""out"": 20.0, ""park"": 0,""tol"":0.05}", diag_y,Scintillator/diode Y,Motor,X10SA-ES-SCL:TRY,baseline,se,no,no,"{""type"": multi-position, ""scint"": 38.62, ""i1"": 44.0, ""out"": 20.0,""park"": 0,""tol"":0.3}", diag_z,Scintillator/diode Z,Motor,X10SA-ES-SCL:TRZ,baseline,se,no,yes,, -i1,i1 diode reading,SignalRO,X10SA-ES-SCLDI:READOUT,monitored,bpm,yes,yes,, -bl_pos,Backlight positioner,Signal,X10SA-ES-BL:POS-SET,baseline,se,no,no,"{""type"":positioner}", -bl_bright,Backlight brightness,Signal,X10SA-ES-BL:SET,baseline,se,no,no,, +i1,I1 Diode,SignalRO,X10SA-ES-SCLDI:READOUT,monitored,bpm,yes,yes,, +bl_pos,Backlight Positioner,Signal,X10SA-ES-BL:POS-SET,baseline,se,no,no,"{""type"":positioner}", +bl_bright,Backlight Brightness,Signal,X10SA-ES-BL:SET,baseline,se,no,no,, bs_x,Beamstop X,Motor,X10SA-ES-BS:TRX,baseline,se,no,yes,, bs_y,Beamstop Y,Motor,X10SA-ES-BS:TRY,baseline,se,no,yes,, bs_z,Beamstop Z,Motor,X10SA-ES-BS:TRZ,baseline,se,no,no,"{""type"": guarded, ""min"": 13, ""samp"": 15, ""work_min"": 20, ""safe"": 41, ""max_blin"": 42, ""max_blout"": 70}", -bs_pos,Beamstop positioner,Signal,X10SA-ES-BS:POS-SET,baseline,se,no,no,"{""type"":positioner}", +bs_pos,Beamstop Positioner,Signal,X10SA-ES-BS:POS-SET,baseline,se,no,no,"{""type"":positioner}", gon_x,Goniometer X,Motor,X10SA-ES-DF1:TRX1,baseline,det,no,no,"{""type"": guarded, ""in"": 18.0, ""out"": -10.0, ""safe"": -100,""tol"":0.5}", gon_y,Goniometer Y,Motor,X10SA-ES-DF1:TRY1,baseline,det,no,yes,, gon_z,Goniometer X,Motor,X10SA-ES-DF1:TRZ1,baseline,det,no,yes,, omega,Omega,Motor,X10SA-ES-DF1:ROTU,baseline,det,no,yes,, cryo_pos,Cryo positioner,Signal,X10SA-ES-CS:POS-SET,baseline,se,no,no,"{""type"":positioner}", -cryo_x,Cryojet X ,Motor,X10SA-ES-CS:TRX,baseline,se,no,yes,, -det_xi_focus,X-ray eye 2 Focus,Motor,X10SA-ES-XEYE:FOCUS,baseline,det,no,yes,, -det_xi_zoom,X-ray eye 2 Zoom,Motor,X10SA-ES-XEYE:ZOOM,baseline,det,no,yes,, -det_xi_x,X-ray eye X,Motor,X10SA-ES-XEYE:TRX,baseline,det,no,yes,, -i2,i2,SignalRO,X10SA-ES-XEYEDI:READOUT,monitored,bpm,yes,yes,, -det_xicam_x,sample cam X ,SignalRO,X10SA-ES-XEYE:cam1:Stats5:CentroidX_RBV,baseline,scam,yes,no,, -det_xicam_xsig,sample cam X sigma,SignalRO,X10SA-ES-XEYE:cam1:Stats5:SigmaX_RBV,monitored,scam,yes,no,, -det_xicam_y,sample cam Y ,SignalRO,X10SA-ES-XEYE:cam1:Stats5:CentroidY_RBV,baseline,scam,yes,no,, -det_xicam_ysig,sample cam Y sigma,SignalRO,X10SA-ES-XEYE:cam1:Stats5:SigmaY_RBV,monitored,scam,yes,no,, -det_xicam_max,sample cam max value,SignalRO,X10SA-ES-XEYE:cam1:Stats5:MaxValue_RBV,monitored,scam,yes,no,, -det_xicam_exp,sample cam exp time,Signal,X10SA-ES-XEYE:cam1:cam1:AcquireTime,baseline,scam,no,no,, -det_xicam_gain,sample cam gain,Signal,X10SA-ES-XEYE:cam1:cam1:Gain,baseline,scam,no,no,, -det_cov,Detector cover,Signal,X10SA-ES-DETCOV:SET,baseline,det,no,no,"{""type"":positioner}", +cryo_x,Cryo X ,Motor,X10SA-ES-CS:TRX,baseline,se,no,yes,, +cryo_temp,Cryo Temperature,Signal,X10SA-ES-CS:TEMP_RBV,baseline,se,yes,yes,, +det_xi_focus,X-ray Eye 2 Focus,Motor,X10SA-ES-XEYE:FOCUS,baseline,det,no,yes,, +det_xi_zoom,X-ray Eye 2 Zoom,Motor,X10SA-ES-XEYE:ZOOM,baseline,det,no,yes,, +det_xi_x,X-ray Eye X,Motor,X10SA-ES-XEYE:TRX,baseline,det,no,yes,, +i2,I2 Diode,SignalRO,X10SA-ES-XEYEDI:READOUT,monitored,bpm,yes,yes,, +det_xicam_x,Det Camera X ,SignalRO,X10SA-ES-XEYE:cam1:Stats5:CentroidX_RBV,baseline,scam,yes,no,, +det_xicam_xsig,Det Camera X Sigma,SignalRO,X10SA-ES-XEYE:cam1:Stats5:SigmaX_RBV,monitored,scam,yes,no,, +det_xicam_y,Det Camera Y ,SignalRO,X10SA-ES-XEYE:cam1:Stats5:CentroidY_RBV,baseline,scam,yes,no,, +det_xicam_ysig,Det Camera Y Sigma,SignalRO,X10SA-ES-XEYE:cam1:Stats5:SigmaY_RBV,monitored,scam,yes,no,, +det_xicam_max,Det Camera Max,SignalRO,X10SA-ES-XEYE:cam1:Stats5:MaxValue_RBV,monitored,scam,yes,no,, +det_xicam_exp,Det Camera Exposure,Signal,X10SA-ES-XEYE:cam1:cam1:AcquireTime,baseline,scam,no,no,, +det_xicam_gain,Det Camera Gain,Signal,X10SA-ES-XEYE:cam1:cam1:Gain,baseline,Sigma,no,no,, +det_cov,Detector Cover,Signal,X10SA-ES-DETCOV:SET,baseline,det,no,no,"{""type"":positioner}", det_y,Detector Y,Motor,X10SA-ES-DET:TRY,baseline,det,no,yes,, det_z,Detector Z,Motor,X10SA-ES-DET:TRZ,baseline,det,no,yes,, diff --git a/pxii_bec/device_configs/pxii-devices-new.yaml b/pxii_bec/device_configs/pxii-devices-new.yaml index e3d02f4..0f7aa0f 100644 --- a/pxii_bec/device_configs/pxii-devices-new.yaml +++ b/pxii_bec/device_configs/pxii-devices-new.yaml @@ -1,5 +1,5 @@ sls_current: - description: SLS current + description: SLS Current deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'ARS07-DPCT-0100:CURR', auto_monitor: true} onFailure: buffer @@ -11,7 +11,7 @@ sls_current: softwareTrigger: false fe_bpm1: - description: FE XBPM Signal 1 + description: FE XBPM Channel 1 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-FE-XBPM1:Current1:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -23,7 +23,7 @@ fe_bpm1: softwareTrigger: false fe_bpm2: - description: FE XBPM Signal 2 + description: FE XBPM Channel 2 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-FE-XBPM1:Current2:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -35,7 +35,7 @@ fe_bpm2: softwareTrigger: false fe_bpm3: - description: FE XBPM Signal 3 + description: FE XBPM Channel 3 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-FE-XBPM1:Current3:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -47,7 +47,7 @@ fe_bpm3: softwareTrigger: false fe_bpm4: - description: FE XBPM Signal 4 + description: FE XBPM Channel 4 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-FE-XBPM1:Current4:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -107,7 +107,7 @@ fe_sl_xr: softwareTrigger: false fe_sl_yt: - description: FE Slit Y top + description: FE Slit Y Top deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-FE-SL1:TRYT'} onFailure: buffer @@ -131,7 +131,7 @@ fe_sl_xw: softwareTrigger: false fe_sl_yb: - description: FE SlitY Bottom + description: FE Slit Y Bottom deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-FE-SL1:TRYB'} onFailure: buffer @@ -191,7 +191,7 @@ fe_sl_ysize: softwareTrigger: false bsf_sl_xw: - description: BSF slit outboard + description: BSF Slit Wall deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-BSFSLH:TRXW'} onFailure: buffer @@ -203,7 +203,7 @@ bsf_sl_xw: softwareTrigger: false bsf_sl_xr: - description: BSF slit inboard + description: BSF Slit Ring deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-BSFSLH:TRXR'} onFailure: buffer @@ -215,7 +215,7 @@ bsf_sl_xr: softwareTrigger: false bsf_sl_yt: - description: BSF slit top + description: BSF Slit Top deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-BSFSLV:TRYT'} onFailure: buffer @@ -227,7 +227,7 @@ bsf_sl_yt: softwareTrigger: false bsf_sl_yb: - description: BSF slit bottom + description: BSF Slit Bottom deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-BSFSLV:TRYB'} onFailure: buffer @@ -239,7 +239,7 @@ bsf_sl_yb: softwareTrigger: false bsf_sl_xcen: - description: BSF X centre + description: BSF X Centre deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-BSFSLH:CENTER'} onFailure: buffer @@ -251,7 +251,7 @@ bsf_sl_xcen: softwareTrigger: false bsf_sl_xsize: - description: BSF X size + description: BSF X Size deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-BSFSLH:SIZE'} onFailure: buffer @@ -263,7 +263,7 @@ bsf_sl_xsize: softwareTrigger: false bsf_sl_ycen: - description: BSF Y centre + description: BSF Y Centre deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-BSFSLV:CENTER'} onFailure: buffer @@ -275,7 +275,7 @@ bsf_sl_ycen: softwareTrigger: false bsf_sl_ysize: - description: BSF Y size + description: BSF Y Size deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-BSFSLV:SIZE'} onFailure: buffer @@ -311,7 +311,7 @@ bsf_f2_y: softwareTrigger: false dcm_bragg: - description: DCM Bragg angle + description: DCM Bragg Angle deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-DCM:ROTY'} onFailure: buffer @@ -323,7 +323,7 @@ dcm_bragg: softwareTrigger: false dcm_x: - description: DCM lateral + description: DCM Lateral deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-DCM:TRX'} onFailure: buffer @@ -335,7 +335,7 @@ dcm_x: softwareTrigger: false dcm_perp: - description: DCM Perp + description: DCM Perpendicular deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-DCM:TRX-CR2'} onFailure: buffer @@ -347,7 +347,7 @@ dcm_perp: softwareTrigger: false dcm_pitch: - description: DCM 2nd crystal pitch + description: DCM 2nd Crystal Pitch deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-DCM:ROTY-CR2-PITCH'} onFailure: buffer @@ -359,7 +359,7 @@ dcm_pitch: softwareTrigger: false dcm_fpitch: - description: DCM 2nd crystal fine pitch + description: DCM 2nd Crystal Fine Pitch deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-DCM:ROTY-CR2-FINEPITCH'} onFailure: buffer @@ -371,7 +371,7 @@ dcm_fpitch: softwareTrigger: false dcm_froll: - description: DCM 2nd crystal fine roll + description: DCM 2nd Crystal Fine roll deviceClass: ophyd_devices.EpicsMotorEC deviceConfig: {prefix: 'X10SA-OP-DCM:ROTZ-CR2-FINEROLL'} onFailure: buffer @@ -383,7 +383,7 @@ dcm_froll: softwareTrigger: false lu_bpm1: - description: LU BPM Signal 1 + description: LU BPM Channel 1 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-OP-LUBPM:Current1:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -395,7 +395,7 @@ lu_bpm1: softwareTrigger: false lu_bpm2: - description: LU BPM Signal 2 + description: LU BPM Channel 2 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-OP-LUBPM:Current2:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -407,7 +407,7 @@ lu_bpm2: softwareTrigger: false lu_bpm3: - description: LU BPM Signal 3 + description: LU BPM Channel 3 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-OP-LUBPM:Current3:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -419,7 +419,7 @@ lu_bpm3: softwareTrigger: false lu_bpm4: - description: LU BPM Signal 4 + description: LU BPM Channel 4 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-OP-LUBPM:Current4:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -443,7 +443,7 @@ lu_bpmsum: softwareTrigger: false lu_bpm_x: - description: BPM2 X translation + description: BPM2 X deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-OP-LUBPM:TRX'} onFailure: buffer @@ -455,7 +455,7 @@ lu_bpm_x: softwareTrigger: false lu_bpm_y: - description: BPM2 Y translation + description: BPM2 Y deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-OP-LUBPM:TRY'} onFailure: buffer @@ -467,7 +467,7 @@ lu_bpm_y: softwareTrigger: false lu_z1: - description: Lens Z1 Motion + description: Lens Z1 deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-OP-LUTRZ1:TRZ'} onFailure: buffer @@ -479,7 +479,7 @@ lu_z1: softwareTrigger: false lu_z2: - description: Lens Z2 Motion + description: Lens Z2 deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-OP-LUTRZ2:TRZ'} onFailure: buffer @@ -611,7 +611,7 @@ lu_pod2_rotz: softwareTrigger: false ss_bpm1: - description: SS BPM Signal 1 + description: SS BPM Channel 1 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-SSBPM:Current1:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -623,7 +623,7 @@ ss_bpm1: softwareTrigger: false ss_bpm2: - description: SS BPM Signal 2 + description: SS BPM Channel 2 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-SSBPM:Current2:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -635,7 +635,7 @@ ss_bpm2: softwareTrigger: false ss_bpm3: - description: SS BPM Signal 3 + description: SS BPM Channel 3 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-SSBPM:Current3:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -647,7 +647,7 @@ ss_bpm3: softwareTrigger: false ss_bpm4: - description: SS BPM Signal 4 + description: SS BPM Channel 4 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-SSBPM:Current4:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -743,7 +743,7 @@ ss_f4_x: softwareTrigger: false ss_sl_xw: - description: SS slit wall + description: SS Slit Wall deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-SSSLH:TRXW'} onFailure: buffer @@ -755,7 +755,7 @@ ss_sl_xw: softwareTrigger: false ss_sl_xr: - description: SS slit ring + description: SS Slit Ring deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-SSSLH:TRXR'} onFailure: buffer @@ -767,7 +767,7 @@ ss_sl_xr: softwareTrigger: false ss_sl_xcen: - description: SS slit X centre + description: SS Slit X Centre deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-SSSLH:CENTER'} onFailure: buffer @@ -779,7 +779,7 @@ ss_sl_xcen: softwareTrigger: false ss_sl_xsize: - description: SS slit X size + description: SS Slit X Size deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-SSSLH:SIZE'} onFailure: buffer @@ -791,7 +791,7 @@ ss_sl_xsize: softwareTrigger: false ss_sl_yt: - description: SS slit top + description: SS Slit Top deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-SSSLV:TRYT'} onFailure: buffer @@ -803,7 +803,7 @@ ss_sl_yt: softwareTrigger: false ss_sl_yb: - description: SS slit bottom + description: SS Slit Bottom deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-SSSLV:TRYB'} onFailure: buffer @@ -815,7 +815,7 @@ ss_sl_yb: softwareTrigger: false ss_sl_ycen: - description: SS slit Y centre + description: SS Slit Y Centre deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-SSSLV:CENTER'} onFailure: buffer @@ -827,7 +827,7 @@ ss_sl_ycen: softwareTrigger: false ss_sl_ysize: - description: SS slit Y size + description: SS Slit Y Size deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-SSSLV:SIZE'} onFailure: buffer @@ -863,8 +863,296 @@ ss_xi_y: readOnly: False softwareTrigger: false +vfm_xu: + description: VFM Upstream X + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-VFM:TRXU'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - vfm + readOnly: False + softwareTrigger: false + +vfm_xd: + description: VFM Downstream X + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-VFM:TRXD'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - vfm + readOnly: False + softwareTrigger: false + +vfm_yur: + description: VFM Upstream Ring Y + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-VFM:TRYUR'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - vfm + readOnly: False + softwareTrigger: false + +vfm_yw: + description: VFM Wall Y + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-VFM:TRYW'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - vfm + readOnly: False + softwareTrigger: false + +vfm_ydr: + description: VFM Downstream Ring Y + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-VFM:TRYDR'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - vfm + readOnly: False + softwareTrigger: false + +vfm_bu: + description: VFM Upstream Bender + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-VFM:BNDU'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - vfm + readOnly: False + softwareTrigger: false + +vfm_bd: + description: VFM Downstream Bender + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-VFM:BNDD'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - vfm + readOnly: False + softwareTrigger: false + +vfm_yaw: + description: VFM Virtual Yaw + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-VFM:YAW'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - vfm + readOnly: False + softwareTrigger: false + +vfm_roll: + description: VFM Virtual Roll + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-VFM:ROLL'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - vfm + readOnly: False + softwareTrigger: false + +vfm_pitch: + description: VFM Virtual Pitch + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-VFM:PITCH'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - vfm + readOnly: False + softwareTrigger: false + +vfm_x: + description: VFM Virtual X + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-VFM:TRX'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - vfm + readOnly: False + softwareTrigger: false + +vfm_y: + description: VFM Virtual Y + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-VFM:TRY'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - vfm + readOnly: False + softwareTrigger: false + +hfm_xu: + description: HFM Upstream X + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-HFM:TRXU'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - hfm + readOnly: False + softwareTrigger: false + +hfm_xd: + description: HFM Downstream X + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-HFM:TRXD'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - hfm + readOnly: False + softwareTrigger: false + +hfm_yuw: + description: HFM Upstream Wall Y + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-HFM:TRYUW'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - hfm + readOnly: False + softwareTrigger: false + +hfm_yr: + description: HFM Ring Y + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-HFM:TRYR'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - hfm + readOnly: False + softwareTrigger: false + +hfm_ydw: + description: HFM Downstream Wall Y + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-HFM:TRYDW'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - hfm + readOnly: False + softwareTrigger: false + +hfm_bu: + description: HFM Upstream Bender + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-HFM:BNDU'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - hfm + readOnly: False + softwareTrigger: false + +hfm_bd: + description: HFM Downstream Bender + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-HFM:BNDD'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - hfm + readOnly: False + softwareTrigger: false + +hfm_yaw: + description: HFM Virtual Yaw + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-HFM:YAW'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - hfm + readOnly: False + softwareTrigger: false + +hfm_roll: + description: HFM Virtual Roll + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-HFM:ROLL'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - hfm + readOnly: False + softwareTrigger: false + +hfm_pitch: + description: HFM Virtual Pitch + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-HFM:PITCH'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - hfm + readOnly: False + softwareTrigger: false + +hfm_x: + description: HFM Virtual X + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-HFM:TRX'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - hfm + readOnly: False + softwareTrigger: false + +hfm_y: + description: HFM Virtual Y + deviceClass: ophyd_devices.EpicsMotorEC + deviceConfig: {prefix: 'X10SA-ES-HFM:TRY'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - hfm + readOnly: False + softwareTrigger: false + bcu_bpm1: - description: BCU BPM Signal 1 + description: BCU BPM Channel 1 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-BCBPM:Current1:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -876,7 +1164,7 @@ bcu_bpm1: softwareTrigger: false bcu_bpm2: - description: BCU BPM Signal 2 + description: BCU BPM Channel 2 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-BCBPM:Current2:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -888,7 +1176,7 @@ bcu_bpm2: softwareTrigger: false bcu_bpm3: - description: BCU BPM Signal 3 + description: BCU BPM Channel 3 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-BCBPM:Current3:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -900,7 +1188,7 @@ bcu_bpm3: softwareTrigger: false bcu_bpm4: - description: BCU BPM Signal 4 + description: BCU BPM Channel 4 deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-BCBPM:Current4:MeanValue_RBV', auto_monitor: true} onFailure: buffer @@ -947,8 +1235,104 @@ bcu_bpm_y: readOnly: False softwareTrigger: false +bcu_sl_xw: + description: BCU Slit Wall + deviceClass: ophyd_devices.EpicsMotor + deviceConfig: {prefix: 'X10SA-ES-BCSLH:TRXW'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - bcu + readOnly: False + softwareTrigger: false + +bcu_sl_xr: + description: BCU Slit Ring + deviceClass: ophyd_devices.EpicsMotor + deviceConfig: {prefix: 'X10SA-ES-BCSLH:TRXR'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - bcu + readOnly: False + softwareTrigger: false + +bcu_sl_xcen: + description: BCU Slit X Centre + deviceClass: ophyd_devices.EpicsMotor + deviceConfig: {prefix: 'X10SA-ES-BCSLH:CENTER'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - bcu + readOnly: False + softwareTrigger: false + +bcu_sl_xsize: + description: BCU Slit X Size + deviceClass: ophyd_devices.EpicsMotor + deviceConfig: {prefix: 'X10SA-ES-BCSLH:SIZE'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - bcu + readOnly: False + softwareTrigger: false + +bcu_sl_yt: + description: BCU Slit Top + deviceClass: ophyd_devices.EpicsMotor + deviceConfig: {prefix: 'X10SA-ES-BCSLV:TRYT'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - bcu + readOnly: False + softwareTrigger: false + +bcu_sl_yb: + description: BCU Slit Bottom + deviceClass: ophyd_devices.EpicsMotor + deviceConfig: {prefix: 'X10SA-ES-BCSLV:TRYB'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - bcu + readOnly: False + softwareTrigger: false + +bcu_sl_ycen: + description: BCU Slit Y Centre + deviceClass: ophyd_devices.EpicsMotor + deviceConfig: {prefix: 'X10SA-ES-BCSLV:CENTER'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - bcu + readOnly: False + softwareTrigger: false + +bcu_sl_ysize: + description: BCU Slit Y Size + deviceClass: ophyd_devices.EpicsMotor + deviceConfig: {prefix: 'X10SA-ES-BCSLV:SIZE'} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - bcu + readOnly: False + softwareTrigger: false + samcam_x: - description: sample cam X + description: Sample Camera X deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-MS:Stats5:CentroidX_RBV', auto_monitor: true} onFailure: buffer @@ -960,7 +1344,7 @@ samcam_x: softwareTrigger: false samcam_xsig: - description: sample cam X sigma + description: Sample Camera X Sigma deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-MS:Stats5:SigmaX_RBV', auto_monitor: true} onFailure: buffer @@ -972,7 +1356,7 @@ samcam_xsig: softwareTrigger: false samcam_y: - description: sample cam Y + description: Sample Camera Y deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-MS:Stats5:CentroidY_RBV', auto_monitor: true} onFailure: buffer @@ -984,7 +1368,7 @@ samcam_y: softwareTrigger: false samcam_ysig: - description: sample cam Y sigma + description: Sample Camera Y Sigma deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-MS:Stats5:SigmaY_RBV', auto_monitor: true} onFailure: buffer @@ -996,7 +1380,7 @@ samcam_ysig: softwareTrigger: false samcam_max: - description: sample cam max value + description: Sample Camera Max deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-MS:Stats5:MaxValue_RBV', auto_monitor: true} onFailure: buffer @@ -1008,7 +1392,7 @@ samcam_max: softwareTrigger: false samcam_exp: - description: sample cam exp time + description: Sample Camera Exposure deviceClass: ophyd.EpicsSignal deviceConfig: {read_pv: 'X10SA-ES-MS:cam1:AcquireTime', auto_monitor: true} onFailure: buffer @@ -1020,7 +1404,7 @@ samcam_exp: softwareTrigger: false samcam_gain: - description: sample cam gain + description: Sample Camera Gain deviceClass: ophyd.EpicsSignal deviceConfig: {read_pv: 'X10SA-ES-MS:cam1:Gain', auto_monitor: true} onFailure: buffer @@ -1032,7 +1416,7 @@ samcam_gain: softwareTrigger: false scam_zoom: - description: Sample cam zoom + description: Sample Camera Zoom deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-MS:ZOOM'} onFailure: buffer @@ -1068,7 +1452,7 @@ diag_z: softwareTrigger: false i1: - description: i1 diode reading + description: I1 Diode deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-SCLDI:READOUT', auto_monitor: true} onFailure: buffer @@ -1140,7 +1524,7 @@ omega: softwareTrigger: false cryo_x: - description: Cryojet X + description: Cryo X deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-CS:TRX'} onFailure: buffer @@ -1151,6 +1535,18 @@ cryo_x: readOnly: False softwareTrigger: false +cryo_temp: + description: Cryo Temperature + deviceClass: ophyd.EpicsSignal + deviceConfig: {read_pv: 'X10SA-ES-CS:TEMP_RBV', auto_monitor: true} + onFailure: buffer + enabled: True + readoutPriority: baseline + deviceTags: + - se + readOnly: True + softwareTrigger: false + det_xi_focus: description: X-ray eye 2 Focus deviceClass: ophyd_devices.EpicsMotor @@ -1188,7 +1584,7 @@ det_xi_x: softwareTrigger: false i2: - description: i2 + description: I2 Diode deviceClass: ophyd.EpicsSignalRO deviceConfig: {read_pv: 'X10SA-ES-XEYEDI:READOUT', auto_monitor: true} onFailure: buffer diff --git a/pxii_bec/device_configs/se_devices.yaml b/pxii_bec/device_configs/se_devices.yaml index e2f0a36..994a7dd 100644 --- a/pxii_bec/device_configs/se_devices.yaml +++ b/pxii_bec/device_configs/se_devices.yaml @@ -1,6 +1,6 @@ ss_sl_xw: description: SS slit wall - deviceClass: ophyd.EpicsMotor + deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-SSSLH:TRXW'} onFailure: buffer enabled: True @@ -16,7 +16,7 @@ ss_sl_xw: bs_z: description: Beamstop Z - deviceClass: ophyd.EpicsMotor + deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-BS:TRZ'} onFailure: buffer enabled: True @@ -36,7 +36,7 @@ bs_z: gon_x: description: Goniometer X - deviceClass: ophyd.EpicsMotor + deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-DF1:TRX1'} onFailure: buffer enabled: True @@ -54,7 +54,7 @@ gon_x: diag_y: description: Scintillator/diode Y - deviceClass: ophyd.EpicsMotor + deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-SCL:TRY'} onFailure: buffer enabled: True @@ -73,7 +73,7 @@ diag_y: coll_y: description: Collimator Y - deviceClass: ophyd.EpicsMotor + deviceClass: ophyd_devices.EpicsMotor deviceConfig: {prefix: 'X10SA-ES-COL:TRY'} onFailure: buffer enabled: True @@ -91,7 +91,7 @@ coll_y: tol: 0.05 bs_pos: - description: Beamstop positioner + description: Beamstop Positioner deviceClass: ophyd.EpicsSignal deviceConfig: {read_pv: 'X10SA-ES-BS:POS-SET', auto_monitor: true} onFailure: buffer @@ -107,7 +107,7 @@ bs_pos: out: 0.0 xrf_pos: - description: XRF positioner + description: XRF Positioner deviceClass: ophyd.EpicsSignal deviceConfig: {read_pv: 'X10SA-ES-XRF:POS-SET', auto_monitor: true} onFailure: buffer @@ -123,7 +123,7 @@ xrf_pos: out: 0.0 cryo_pos: - description: Cryo positioner + description: Cryo Positioner deviceClass: ophyd.EpicsSignal deviceConfig: {read_pv: 'X10SA-ES-CS:POS-SET', auto_monitor: true} onFailure: buffer @@ -139,7 +139,7 @@ cryo_pos: out: 0.0 det_cov: - description: Detector cover + description: Detector Cover deviceClass: ophyd.EpicsSignal deviceConfig: {read_pv: 'X10SA-ES-DETCOV:SET', auto_monitor: true} onFailure: buffer @@ -155,7 +155,7 @@ det_cov: 'close': 1.0 bl_bright: - description: Backlight brightness + description: Backlight Brightness deviceClass: ophyd.EpicsSignal deviceConfig: {read_pv: 'X10SA-ES-BL:SET', auto_monitor: true} onFailure: buffer @@ -173,7 +173,7 @@ bl_bright: bl_pos: - description: Backlight positioner + description: Backlight Positioner deviceClass: ophyd.EpicsSignal deviceConfig: {read_pv: 'X10SA-ES-BL:POS-SET', auto_monitor: true} onFailure: buffer @@ -189,7 +189,7 @@ bl_pos: out: 0.0 fl_bright: - description: Frontlight brightness + description: Frontlight Brightness deviceClass: ophyd.EpicsSignal deviceConfig: {read_pv: 'X10SA-ES-FL:SET', auto_monitor: true} onFailure: buffer diff --git a/pxii_bec/macros/check.py b/pxii_bec/macros/check.py index 66af021..2b5c993 100644 --- a/pxii_bec/macros/check.py +++ b/pxii_bec/macros/check.py @@ -1,62 +1,456 @@ +from dataclasses import dataclass, field +from enum import Enum +from typing import Any, Callable + from bec_lib.device import Signal, Positioner -def check(): - check_devices(tolerance = 0.02) +# ------------------------------------------------------------------- +# Status Enum +# ------------------------------------------------------------------- + + +class Status(Enum): + OK = 0 + WARNING = 1 + ERROR = 2 + UNKNOWN = 3 + + @property + def color(self): + return { + Status.OK: "green", + Status.WARNING: "yellow", + Status.ERROR: "red", + Status.UNKNOWN: "blue", + }[self] + + +# ------------------------------------------------------------------- +# Health Result Object +# ------------------------------------------------------------------- + + +@dataclass +class HealthCheckResult: + + name: str + description: str + status: Status + + value: Any = None + + message: str = "" + + category: str = "general" + + def __str__(self): + + if self.status == Status.OK: + return f"[{self.status.name}] {self.description}" + + return ( + f"[{self.status.name}] " + f"{self.description}: {self.message}" + ) + def formatted_message(self): + if self.status == Status.OK: + return f"[{self.status.name} {self.name}]" + -def check_devices(tolerance): - devices = list(dev.items()) - for name, obj in devices: + return ( + f"[{self.status.name}] " + f"{self.description}: {self.message}" + ) + +# ------------------------------------------------------------------- +# Send to SciLog +# ------------------------------------------------------------------- + +def send_to_scilog(results): + + msg = bec.messaging.scilog.new() + + for result in results: + msg.add_text( + result.formatted_message(), + # bold=result.status != Status.OK, + color = result.status.color + ) + # msg.add_text(result.formatted_message()) + msg.add_text("\n") + msg.add_tags(["beamline health check"]) + msg.send() + + +# ------------------------------------------------------------------- +# Configuration +# ------------------------------------------------------------------- + +@dataclass +class BeamlineHealthConfig: + + signal_rules: dict[str, Callable] = field( + default_factory=lambda: { + "cam": lambda x: x != 0, + "bpm": lambda x: x != 0, + } + ) + + motor_tolerances: dict[str, float] = field( + default_factory=lambda: { + # examples + # "mono_theta": 0.001, + # "detector_z": 0.1, + } + ) + + default_motor_tolerance: float = 0.02 + + +# ------------------------------------------------------------------- +# Device Collection +# ------------------------------------------------------------------- + + +def get_devices(): + return list(dev.items()) + + +# ------------------------------------------------------------------- +# Signal Checks +# ------------------------------------------------------------------- + + +def check_signals(devices, config: BeamlineHealthConfig): + + results = [] + + signal_devices = [ + (name, obj) + for name, obj in devices + if isinstance(obj, Signal) + ] + + for name, obj in signal_devices: try: data = obj.read() - # deal with smargon - if "smargon" in name: - continue - + actual = data[name]["value"] + description = obj.description + + except Exception as e: + + results.append( + HealthCheckResult( + name=name, + description=name, + status=Status.UNKNOWN, + message=f"Failed to read signal: {e}", + category="signals", + ) + ) + + continue + + matched = False + + for keyword, rule in config.signal_rules.items(): + + if keyword in name: + + matched = True + + try: + passed = rule(actual) + + except Exception as e: + + results.append( + HealthCheckResult( + name=name, + description=name, + status=Status.UNKNOWN, + value=actual, + message=f"Rule evaluation failed: {e}", + category="signals", + ) + ) + + break + + if passed: + + results.append( + HealthCheckResult( + name=name, + description=description, + status=Status.OK, + value=actual, + category="signals", + ) + ) + + else: + + results.append( + HealthCheckResult( + name=name, + description=description, + status=Status.ERROR, + value=actual, + message=f"Signal value {actual} failed validation", + category="signals", + ) + ) + break + + if not matched: + continue + + return results + + +# ------------------------------------------------------------------- +# Motor Checks +# ------------------------------------------------------------------- + + +def check_motors(devices, config: BeamlineHealthConfig): + + results = [] + + motor_devices = [ + (name, obj) + for name, obj in devices + if isinstance(obj, Positioner) + ] + + for name, obj in motor_devices: + + try: + + data = obj.read() + + description = obj.description + actual = data[name]["value"] - # If signal and a camera or bpm, check reading is not 0 - if isinstance(obj, Signal): - if 'cam' in name or 'bpm' in name: - if actual == 0.0: - print(f"{name} is reading 0") + error_code = obj.motor_status.get() - # if signal is a motor, check in position, error, moving - if isinstance(obj, Positioner): - # Check set position = real position + move_state = obj.motor_is_moving.get() - sp_key = f"{name}_user_setpoint" + except Exception as e: - if sp_key not in data: - continue + results.append( + HealthCheckResult( + name=name, + description=name, + status=Status.UNKNOWN, + message=f"Failed to read motor: {e}", + category="motors", + ) + ) - setpoint = data[sp_key]["value"] + continue - diff = abs(actual - setpoint) - inpos = diff <= tolerance - if not inpos: - print( - f"{name}: " - # f"actual={actual:.4f}, " - # f"setpoint={setpoint:.4f}, " - # f"diff={diff:.4f}, " - f"in position = {inpos}" + # ----------------------------------------------------------- + # Error state + # ----------------------------------------------------------- + + if error_code != 0: + + results.append( + HealthCheckResult( + name=name, + description=description, + status=Status.ERROR, + value=error_code, + message=f"motor error code: {error_code}", + category="motors", + ) + ) + + continue + + # ----------------------------------------------------------- + # Moving state + # ----------------------------------------------------------- + + if move_state != 0: + + results.append( + HealthCheckResult( + name=name, + description=description, + status=Status.WARNING, + value=move_state, + message="motor is currently moving", + category="motors", + ) + ) + + continue + + # ----------------------------------------------------------- + # Setpoint comparison + # ----------------------------------------------------------- + + sp_key = f"{name}_user_setpoint" + + if sp_key in data: + + setpoint = data[sp_key]["value"] + + diff = abs(actual - setpoint) + + tolerance = config.motor_tolerances.get( + name, + config.default_motor_tolerance, + ) + + if diff > tolerance: + + results.append( + HealthCheckResult( + name=name, + description=description, + status=Status.WARNING, + value=diff, + message=( + f"Setpoint {setpoint:.5g} differs " + f"from readback {actual:.5g} " + f"by {diff:.4g}" + ), + category="motors", ) - # check if motor is in error state - error_status = obj.motor_status.get() + ) + + else: + + results.append( + HealthCheckResult( + name=name, + description=description, + status=Status.OK, + value=actual, + category="motors", + ) + ) + + else: + + results.append( + HealthCheckResult( + name=name, + description=description, + status=Status.UNKNOWN, + message="No setpoint available", + category="motors", + ) + ) + + return results + + +# ------------------------------------------------------------------- +# Main Check Entry Point +# ------------------------------------------------------------------- + + +def check2(config: BeamlineHealthConfig | None = None): + if config is None: + config = BeamlineHealthConfig() + + devices = get_devices() + + results = [] + + results.extend(check_signals(devices, config)) + + results.extend(check_motors(devices, config)) + + # --------------------------------------------------------------- + # Sort by severity + # --------------------------------------------------------------- + + results.sort( + key=lambda r: r.status.value, + ) + + return results + + +# ------------------------------------------------------------------- +# Summary Printer +# ------------------------------------------------------------------- + + +def print_summary(results): + + n_ok = sum(r.status == Status.OK for r in results) + + n_warn = sum(r.status == Status.WARNING for r in results) + + n_err = sum(r.status == Status.ERROR for r in results) + + n_unknown = sum(r.status == Status.UNKNOWN for r in results) + + print("\n==============================") + print(" Beamline Health Summary") + print("==============================") + print(f"OK : {n_ok}") + print(f"WARNING : {n_warn}") + print(f"ERROR : {n_err}") + print(f"UNKNOWN : {n_unknown}") + print("==============================\n") + +# ------------------------------------------------------------------- +# Filter results +# ------------------------------------------------------------------- +def filter_results(results, statuses = None): + if statuses is None: + return results + + return [ + r for r in results + if r.status in statuses + ] + +# ------------------------------------------------------------------- +# CLI Entry Point +# ------------------------------------------------------------------- + + +def run_check(show_all= False): + + results = check2() + + print_summary(results) + + problem_results = filter_results( + results, + statuses={ + Status.WARNING, + Status.ERROR, + Status.UNKNOWN, + } + ) + # send_to_scilog(problem_results) + + if not show_all: + results = filter_results( + results, + statuses={ + Status.WARNING, + Status.ERROR, + Status.UNKNOWN + } + ) + for result in results: + print(result) - if error_status != 0: - print(f"{name}: error_state = {error_status}") - - # check if motor is moving - move_status = obj.motor_is_moving.get() - if move_status != 0: - print(f"{name} is moving") - - except Exception as exc: - print(f"{name}: ERROR -> {exc}")