From ca68078805d229483e64f3f85e87e02332e0e0e7 Mon Sep 17 00:00:00 2001 From: Thomas Juerges <4-jurges@users.noreply.git.astron.nl> Date: Fri, 3 Apr 2020 22:59:24 +0200 Subject: [PATCH] Finish (again) the crossecho client for Tango API --- crossechoTangoDev/Crossecho.py | 44 +++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/crossechoTangoDev/Crossecho.py b/crossechoTangoDev/Crossecho.py index 3b09e4c02..bcb3b8fbb 100644 --- a/crossechoTangoDev/Crossecho.py +++ b/crossechoTangoDev/Crossecho.py @@ -23,7 +23,7 @@ from PyTango import AttrQuality, DispLevel, DevState from PyTango import AttrWriteType, PipeWriteType # Additional import # PROTECTED REGION ID(Crossecho.additionnal_import) ENABLED START # -from lib.opc_interface import connect_to_server, DEFAULT_URI +from opcua import Client import numpy # PROTECTED REGION END # // Crossecho.additionnal_import @@ -50,6 +50,10 @@ class Crossecho(Device): dtype='str', default_value="55555" ) + OPC_time_out = device_property( + dtype=, default_value=1000 + ) + # ---------- # Attributes # ---------- @@ -79,20 +83,26 @@ class Crossecho(Device): def init_device(self): Device.init_device(self) # PROTECTED REGION ID(Crossecho.init_device) ENABLED START # - self.client = connect_to_server(self.OPC_Server_Name, self.OPC_Server_Port) - self.objects = self.client.get_objects_node() - self.idx = self.client.get_namespace_index(DEFAULT_URI) - - # Now getting a variable node using its browse path - self.opc_obj = self.client.get_root_node().get_child(["0:Objects", - "{}:StationMetrics".format(idx), - "{}:RCU".format(idx)]) + try: + self.client = Client("opc.tcp://{}:{}/".format(self.OPC_Server_Name, self.OPC_Server_Port), self.OPC_time_out) + self.client.connect() + self.client.load_type_definitions() + objects = self.client.get_objects_node() + idx = self.client.get_namespace_index(DEFAULT_URI) + + # Now getting a variable node using its browse path + self.opc_obj = self.client.get_root_node().get_child(["0:Objects", + "{}:StationMetrics".format(idx), + "{}:RCU".format(idx)]) + self.logger.info("Connected to the OPC-UA server %s", self.OPC_Server_Name) + except: + self.logger.error("Failed to connect to the OPC-UA server %s. Traceback: %s", self.OPC_Server_Name, traceback.format_exc()) # PROTECTED REGION END # // Crossecho.init_device def always_executed_hook(self): # PROTECTED REGION ID(Crossecho.always_executed_hook) ENABLED START # pass - # PROTECTED REGION END # // Crossecho.always_executed_hook + # PROTECTED REGION EloggND # // Crossecho.always_executed_hook def delete_device(self): # PROTECTED REGION ID(Crossecho.delete_device) ENABLED START # @@ -106,12 +116,12 @@ class Crossecho(Device): def read_RCU_modes(self): # PROTECTED REGION ID(Crossecho.RCU_modes_read) ENABLED START # - return [''] + return self.RCU_modes # PROTECTED REGION END # // Crossecho.RCU_modes_read def read_crosslet_stat(self): # PROTECTED REGION ID(Crossecho.crosslet_stat_read) ENABLED START # - return [0.0] + return crosslet_stat # PROTECTED REGION END # // Crossecho.crosslet_stat_read @@ -121,7 +131,7 @@ class Crossecho(Device): def read_xlt_stat(self): # PROTECTED REGION ID(Crossecho.xlt_stat_read) ENABLED START # - return dict(x=0,y=0) + return dict(x=self.crosslet_stat, y=self.RCU_modes) # PROTECTED REGION END # // Crossecho.xlt_stat_read # -------- @@ -134,10 +144,10 @@ class Crossecho(Device): def record_cross(self): # PROTECTED REGION ID(Crossecho.record_cross) ENABLED START # if self.is_record_cross_allowed() is True: - timeStamp, crossletStats, rcuModes = self.opc_obj.call_method("{}:record_cross".format(idx), self.subBand, self.integrationTime) - print("Timestamp is ", result[0]) - print("Crosscorrelations are ", numpy.array(result[1])) - print("RCU modes are", numpy.array(result[2])) + timeStamp, self.crosslet_stat, self.RCU_modes = self.opc_obj.call_method("{}:record_cross".format(idx), self.subBand, self.integrationTime) + print("Timestamp is ", timeStamp) + print("Crosscorrelations are ", self.crosslet_stat) + print("RCU modes are", self.RCU_modes) # PROTECTED REGION END # // Crossecho.record_cross -- GitLab