From 486fbe3c2f33c469f0c7cc02df5b0dc075a5f888 Mon Sep 17 00:00:00 2001 From: kruger <kruger@astron.nl> Date: Tue, 13 Apr 2021 13:44:57 +0200 Subject: [PATCH] Added debug OPC-UA object --- config/CLK.yaml | 2 ++ config/RCU.yaml | 9 +++++++-- opcuaserv/opcuaserv.py | 18 +++++++++++------- opcuaserv/yamlreader.py | 6 +++--- pypcc2.py | 7 ++++--- 5 files changed, 27 insertions(+), 15 deletions(-) diff --git a/config/CLK.yaml b/config/CLK.yaml index 9edd498..5d70297 100644 --- a/config/CLK.yaml +++ b/config/CLK.yaml @@ -56,3 +56,5 @@ variables: rw: variable #server RW variable, not linked to IO dtype: boolean +methods: + - name: CLK_on \ No newline at end of file diff --git a/config/RCU.yaml b/config/RCU.yaml index 50a6f8f..c63bd70 100644 --- a/config/RCU.yaml +++ b/config/RCU.yaml @@ -236,6 +236,7 @@ variables: dtype: uint8 dim: 96 mask: Ant_mask + debug: True - name: RCU_GPIO2 driver: I2C_RFCHAIN @@ -245,6 +246,7 @@ variables: dtype: uint8 dim: 96 mask: Ant_mask + debug: True - name: RCU_LED0 driver: I2C_RCU @@ -342,6 +344,7 @@ variables: methods: - name: RCU_update mask: RCU_mask + debug: True instructions: - RCU_ADC_lock: Update @@ -368,14 +371,16 @@ methods: - WAIT: 500 #ms to wait - RCU_ADC_lock: Update - name: ADC1_on - rw: hidden + debug: True +# rw: hidden instructions: - ADC1.JESD_control1 : 0x14 # - ADC1.SYNC_control: 1 #Setup ADCs # - ADC1.CML_level: 0x7 - ADC1.Update: 1 #Needed to update ADC registers - name: ADC2_on - rw: hidden + debug: True +# rw: hidden instructions: - ADC2.JESD_control1 : 0x14 # - ADC2.SYNC_control: 1 #Setup ADCs diff --git a/opcuaserv/opcuaserv.py b/opcuaserv/opcuaserv.py index daa3cdd..897a943 100644 --- a/opcuaserv/opcuaserv.py +++ b/opcuaserv/opcuaserv.py @@ -56,28 +56,31 @@ def AddVar(name,value): myvar2.set_writable() return myvar2 -def AddVarR(vname,varvalue2,v): - myvar = PCCobj.add_variable(idx, vname, varvalue2) +def AddVarR(vname,varvalue2,v,debug): + obj=(DEBUGobj if debug else PCCobj) + myvar = obj.add_variable(idx, vname, varvalue2) logging.info(str(("Variable added: ",vname,len(varvalue2)))) Vars_R[myvar.nodeid.Identifier]=[vname,myvar.get_data_value(),varvalue2,v] return myvar -def AddVarW(vname,varvalue2,v,Q1): +def AddVarW(vname,varvalue2,v,Q1,debug): logging.info(str(("Variable added: ",vname)))#,'=',varvalue2) - myvar2 = PCCobj.add_variable(idx, vname, varvalue2) + obj=(DEBUGobj if debug else PCCobj) + myvar2 = obj.add_variable(idx, vname, varvalue2) myvar2.set_writable() Vars_W[myvar2.nodeid.Identifier]=[vname,myvar2.get_data_value(),v,Q1] handle = sub.subscribe_data_change(myvar2) return myvar2 -def Addmethod(vname,v,Q1): - myvar = PCCobj.add_method(idx, vname, lambda ObjectId,name=vname,inst=v,Q1=Q1 : CallMethod(ObjectId,name,inst,Q1), [],[] ) +def Addmethod(vname,v,Q1,debug): + obj=(DEBUGobj if debug else PCCobj) + myvar = obj.add_method(idx, vname, lambda ObjectId,name=vname,inst=v,Q1=Q1 : CallMethod(ObjectId,name,inst,Q1), [],[] ) logging.info(str(("AddMethod:",vname))) def InitServer(port=4840): # setup our server - global server,running,PCCobj,idx,sub; + global server,running,PCCobj,DEBUGobj,idx,sub; server = Server() server.set_endpoint("opc.tcp://0.0.0.0:{}/PCC/".format(port)) @@ -89,6 +92,7 @@ def InitServer(port=4840): # populating our address space PCCobj = objects.add_object(idx, "PCC") + DEBUGobj = PCCobj.add_object(idx, "DEBUG") # self.PCCobj=PCCobj # starting! diff --git a/opcuaserv/yamlreader.py b/opcuaserv/yamlreader.py index f687dd9..1c51537 100644 --- a/opcuaserv/yamlreader.py +++ b/opcuaserv/yamlreader.py @@ -40,7 +40,7 @@ class yamlreader(yamlconfig): elif datatype=='string': varvalue2=dim1*[""] # print(len(varvalue2),varvalue2) if v.get('rw') in ['ro','rw']: - var1=AddVarR(name+"_R",varvalue2,v['id']) + var1=AddVarR(name+"_R",varvalue2,v['id'],v.get('debug')) v['OPCR']=var1 print("Var added:"+name+"_R") self.server.readvar(v['id']) @@ -49,7 +49,7 @@ class yamlreader(yamlconfig): # Q1.put(Inst) if v.get('rw') in ['wo','rw','variable']: - var1=AddVarW(name+"_RW",varvalue2,v['id'],self) + var1=AddVarW(name+"_RW",varvalue2,v['id'],self,v.get('debug')) v['OPCW']=var1 print("Var added:"+name+"_RW") for v in self.conf['variables']: @@ -66,7 +66,7 @@ class yamlreader(yamlconfig): if v.get('rw','')=='hidden': continue; print(v) # Inst1=Vars.Instr(Vars.DevType.Instr,v,0,[]) - Addmethod(v['name'],v['id'],self) + Addmethod(v['name'],v['id'],self,v.get('debug')) mask=v.get('mask'); if not(mask): continue; mask=Find(self.conf['variables'],'name',mask) diff --git a/pypcc2.py b/pypcc2.py index f5c6ae9..6bc05a2 100644 --- a/pypcc2.py +++ b/pypcc2.py @@ -14,7 +14,7 @@ parser = argparse.ArgumentParser() parser.add_argument("-s", "--simulator", help="Do not connect to I2c, but simulate behaviour.", action="store_true") parser.add_argument("-p", "--port", help="Port number to listen on [%(default)s].", type=int, default=4842) parser.add_argument("-l", "--loglevel", help="Log level [%(default)s].", type=str, choices=["DEBUG","INFO","WARNING","ERROR"], default="INFO") -#parser.add_argument("-c", "--config", help="YAML config file.",type=str, action="store_true",default='RCU') +parser.add_argument("-c", "--config", help="YAML config files, comma seperated [%(default)s]",type=str, default='RCU') args = parser.parse_args() # set log level @@ -34,8 +34,9 @@ signal.signal(signal.SIGINT, signal_handler) #Start i2c processes as soon as possible to have minimum duplication logging.info("Start I2C processes") -I2Cports=['UNB2'] -#I2Cports=[] +#I2Cports=['UNB2','RCU','CLK'] +#I2Cports=['RCU'] +I2Cports=[x for x in args.config.split(',')] threads=[] I2Cclients=[] for name in I2Cports: -- GitLab