From 296cf02bd5d8d942203f1857af1168328ab28a91 Mon Sep 17 00:00:00 2001 From: "mauro.trovo" <mauro.trovo@elettra.eu> Date: Mon, 10 Mar 2025 12:42:49 +0100 Subject: [PATCH] read from field --- src/EEHGMaster.py | 269 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 268 insertions(+), 1 deletion(-) mode change 100644 => 100755 src/EEHGMaster.py diff --git a/src/EEHGMaster.py b/src/EEHGMaster.py old mode 100644 new mode 100755 index 3982240..62e066e --- a/src/EEHGMaster.py +++ b/src/EEHGMaster.py @@ -640,6 +640,90 @@ class EEHGMaster(Device): Device.init_device(self) # PROTECTED REGION ID(EEHGMaster.init_device) ENABLED START # self._fel_mode = '' + + self.seed_dev_atts_toread = ['State', 'wavelength', 'bandwidth', + 'energy', 'energy_max', 'wavelength2', + 'bandwidth2', 'energy2', 'energy2_max'] + # definisco delle variabili di servizio per i limiti sup. dell'en. seed + self.nrg_s1_range = 50.0 + self.nrg_s2_range = 20.0 + # inizializzo i devices: + # SeedCcd1Dev + # - Device da cui leggere HorSigma che diventa waist_s1 + # SeedCcd2Dev + # - Device da cui leggere HorSigma che diventa waist_s2 + + # self.xx_device = None #prototipoSeedCcd1Dev + # if self.XxDev: + # try: + # self.xx_device = tango.DeviceProxy(self.XxDevDev) + # except Exception as e: + # self.error_stream("Failed to connect to remote device: {}".format(e)) + # self.set_state(tango.DevState.FAULT) + # self.set_status('failed to connect to remote device') + + self.masterfel1_device = None + if self.MasterFel1Dev: + try: + self.masterfel1_device = tango.DeviceProxy(self.MasterFel1Dev) + except Exception as e: + self.error_stream("Failed to connect to remote device: {}".format(e)) + self.set_state(tango.DevState.FAULT) + self.set_status('failed to connect to remote device') + + self.sclmagnet_device = None + if self.SclMagnetDev: + try: + self.xx_device = tango.DeviceProxy(self.SclMagnetDev) + except Exception as e: + self.error_stream("Failed to connect to remote device: {}".format(e)) + self.set_state(tango.DevState.FAULT) + self.set_status('failed to connect to remote device') + + self.delayline_device = None + if self.DelayLineDev: + try: + self.delayline_device = tango.DeviceProxy(self.DelayLineDev) + except Exception as e: + self.error_stream("Failed to connect to remote device: {}".format(e)) + self.set_state(tango.DevState.FAULT) + self.set_status('failed to connect to remote device') + + self.dispmagnet_device = None + if self.DispersiveMagDev: + try: + self.dispmagnet_device = tango.DeviceProxy(self.DispersiveMagDev) + except Exception as e: + self.error_stream("Failed to connect to remote device: {}".format(e)) + self.set_state(tango.DevState.FAULT) + self.set_status('failed to connect to remote device') + + self.seedmaster_device = None #prototipo + if self.SeedMasterDev: + try: + self.seedmaster_device = tango.DeviceProxy(self.SeedMasterDev) + except Exception as e: + self.error_stream("Failed to connect to remote device: {}".format(e)) + self.set_state(tango.DevState.FAULT) + self.set_status('failed to connect to remote device') + + self.seedccd1_device = None + if self.SeedCcd1Dev: + try: + self.seedccd1_device = tango.DeviceProxy(self.SeedCcd1Dev) + except Exception as e: + self.error_stream("Failed to connect to remote device: {}".format(e)) + self.set_state(tango.DevState.FAULT) + self.set_status('failed to connect to remote device') + + self.seedccd2_device = None + if self.SeedCcd2Dev: + try: + self.seedccd2_device = tango.DeviceProxy(self.SeedCcd2Dev) + except Exception as e: + self.error_stream("Failed to connect to remote device: {}".format(e)) + self.set_state(tango.DevState.FAULT) + self.set_status('failed to connect to remote device') # PROTECTED REGION END # // EEHGMaster.init_device @@ -1416,8 +1500,191 @@ class EEHGMaster(Device): """ reads from field the attribute `current` values - :return:None + :return:Non """ + # leggo il primo attributo Lambda fel + if self.masterfel1_device: + try: + lambdaf = self.masterfel1_device.read_attribute("LambdaFEL").value + + except tango.DevFailed: + lambdaf = 13.3 + # self.error_stream('') + self.error_stream('failed to read lambda FEL') + self.set_state(tango.DevState.ALARM) + self.set_status('failed to read lambda FEL') + + self.lambda_fel_curr = lambdaf + + else: + self.set_state(tango.DevState.ALARM) + self.set_status('device not initialized') + + # leggo il secondo attributo energy + if self.sclmagnet_device: + try: + valore = self.sclmagnet_device.read_attribute("MagnetEnergy").value + + except tango.DevFailed: + valore = 1.2 + # self.error_stream('') + self.error_stream('failed to read beam energy') + self.set_state(tango.DevState.ALARM) + self.set_status('failed to read beam energy') + + self.e_nrg_fel = valore + + else: + self.set_state(tango.DevState.ALARM) + self.set_status('device not initialized') + + # leggo il terzo attributo r561 + if self.delayline_device: + try: + valore = self.delayline_device.read_attribute("R56").value + + except tango.DevFailed: + valore = 100.0 + # self.error_stream('') + self.error_stream('failed to read R561') + self.set_state(tango.DevState.ALARM) + self.set_status('failed to read R561') + + self.r561_curr = valore + + else: + self.set_state(tango.DevState.ALARM) + self.set_status('delay line device not initialized') + + + # leggo il terzo attributo r562 + if self.dispmagnet_device: + try: + valore = self.dispmagnet_device.read_attribute("R56").value + + except tango.DevFailed: + valore = 2.0 + # self.error_stream('') + self.error_stream('failed to read R562') + self.set_state(tango.DevState.ALARM) + self.set_status('failed to read R562') + + self.r562_curr = valore + + else: + self.set_state(tango.DevState.ALARM) + self.set_status('disp. mag. device not initialized') + + # leggo gli attributi del seed + if self.seedmaster_device: + try: + attrs = self.seedmaster_device.read_attributes(self.seed_dev_atts_toread) + # self.set_state(attrs[0].value) + + if attrs[1].quality != tango.AttrQuality.ATTR_INVALID: + self.lambda_s1_curr = attrs[1].value + else: + self.lambda_s1_curr = 260.0 + + if attrs[2].quality != tango.AttrQuality.ATTR_INVALID: + self.dlambda_s1 = attrs[2].value + else: + self.dlambda_s1 = 1.0 + + if attrs[3].quality != tango.AttrQuality.ATTR_INVALID: + self.nrg_s1_curr = attrs[3].value + else: + self.nrg_s1_curr = 5.0 + + if attrs[4].quality != tango.AttrQuality.ATTR_INVALID: + self.nrg_s1_range = attrs[4].value + + # #leggo: + # cfg = self.idev.get_attribute_config('Gap') + # self.min_mech_gap = float(cfg.min_value) + # self.max_mech_gap = float(cfg.max_value) + # #scrivo: + # self.set_attribute_config('nrg_s1'max_value, str(self.nrg_s1_range)) + self.nrg_s1.max_value = self.nrg_s1_range + + else: + self.nrg_s1_range = 50.0 + + if attrs[5].quality != tango.AttrQuality.ATTR_INVALID: + self.lambda_s2_curr = attrs[5].value + else: + self.lambda_s2_curr = 255.0 + + if attrs[6].quality != tango.AttrQuality.ATTR_INVALID: + self.dlambda_s2 = attrs[6].value + else: + self.dlambda_s2 = 1.0 + + if attrs[7].quality != tango.AttrQuality.ATTR_INVALID: + self.nrg_s2_curr = attrs[7].value + else: + self.nrg_s2_curr = 10.0 + + if attrs[8].quality != tango.AttrQuality.ATTR_INVALID: + self.nrg_s2_range = attrs[8].value + else: + self.nrg_s2_range = 50.0 + + except tango.DevFailed: + self.set_state(tango.DevState.ALARM) + self.error_stream('seed device failed') + self.set_status('seed device failed') + except ValueError: + self.lambda_s1_curr = 260.0 + self.dlambda_s1 = 1.0 + self.nrg_s1_curr = 5.0 + self.lambda_s2_curr = 255.0 + self.dlambda_s2 = 1.0 + self.nrg_s2_curr = 10.0 + self.set_state(tango.DevState.ALARM) + self.error_stream('reading of seed device failed') + self.set_status('reading of seed device failed') + + else: + self.set_state(tango.DevState.ALARM) + self.set_status('seed device not initialized') + + # leggo l'attributo waist s1 + if self.seedccd1_device: + try: + valore = self.seedccd1_device.read_attribute("HorSigma").value + + except tango.DevFailed: + valore = 0.3 + # self.error_stream('') + self.error_stream('failed to read waist 1') + self.set_state(tango.DevState.ALARM) + self.set_status('failed to read waist 1') + + self.waist_s1 = valore + + else: + self.set_state(tango.DevState.ALARM) + self.set_status('disp. mag. device not initialized') + + # leggo l'attributo waist s2 + if self.seedccd2_device: + try: + valore = self.seedccd2_device.read_attribute("HorSigma").value + + except tango.DevFailed: + valore = 0.2 + # self.error_stream('') + self.error_stream('failed to read waist 1') + self.set_state(tango.DevState.ALARM) + self.set_status('failed to read waist 1') + + self.waist_s2 = valore + + else: + self.set_state(tango.DevState.ALARM) + self.set_status('disp. mag. device not initialized') + pass # PROTECTED REGION END # // EEHGMaster.ReadFromField -- GitLab