Skip to content
Snippets Groups Projects
Commit 486fbe3c authored by Paulus Kruger's avatar Paulus Kruger
Browse files

Added debug OPC-UA object

parent 0b9610bc
Branches
Tags
1 merge request!11Pypcc2
...@@ -56,3 +56,5 @@ variables: ...@@ -56,3 +56,5 @@ variables:
rw: variable #server RW variable, not linked to IO rw: variable #server RW variable, not linked to IO
dtype: boolean dtype: boolean
methods:
- name: CLK_on
\ No newline at end of file
...@@ -236,6 +236,7 @@ variables: ...@@ -236,6 +236,7 @@ variables:
dtype: uint8 dtype: uint8
dim: 96 dim: 96
mask: Ant_mask mask: Ant_mask
debug: True
- name: RCU_GPIO2 - name: RCU_GPIO2
driver: I2C_RFCHAIN driver: I2C_RFCHAIN
...@@ -245,6 +246,7 @@ variables: ...@@ -245,6 +246,7 @@ variables:
dtype: uint8 dtype: uint8
dim: 96 dim: 96
mask: Ant_mask mask: Ant_mask
debug: True
- name: RCU_LED0 - name: RCU_LED0
driver: I2C_RCU driver: I2C_RCU
...@@ -342,6 +344,7 @@ variables: ...@@ -342,6 +344,7 @@ variables:
methods: methods:
- name: RCU_update - name: RCU_update
mask: RCU_mask mask: RCU_mask
debug: True
instructions: instructions:
- RCU_ADC_lock: Update - RCU_ADC_lock: Update
...@@ -368,14 +371,16 @@ methods: ...@@ -368,14 +371,16 @@ methods:
- WAIT: 500 #ms to wait - WAIT: 500 #ms to wait
- RCU_ADC_lock: Update - RCU_ADC_lock: Update
- name: ADC1_on - name: ADC1_on
rw: hidden debug: True
# rw: hidden
instructions: instructions:
- ADC1.JESD_control1 : 0x14 - ADC1.JESD_control1 : 0x14
# - ADC1.SYNC_control: 1 #Setup ADCs # - ADC1.SYNC_control: 1 #Setup ADCs
# - ADC1.CML_level: 0x7 # - ADC1.CML_level: 0x7
- ADC1.Update: 1 #Needed to update ADC registers - ADC1.Update: 1 #Needed to update ADC registers
- name: ADC2_on - name: ADC2_on
rw: hidden debug: True
# rw: hidden
instructions: instructions:
- ADC2.JESD_control1 : 0x14 - ADC2.JESD_control1 : 0x14
# - ADC2.SYNC_control: 1 #Setup ADCs # - ADC2.SYNC_control: 1 #Setup ADCs
......
...@@ -56,28 +56,31 @@ def AddVar(name,value): ...@@ -56,28 +56,31 @@ def AddVar(name,value):
myvar2.set_writable() myvar2.set_writable()
return myvar2 return myvar2
def AddVarR(vname,varvalue2,v): def AddVarR(vname,varvalue2,v,debug):
myvar = PCCobj.add_variable(idx, vname, varvalue2) obj=(DEBUGobj if debug else PCCobj)
myvar = obj.add_variable(idx, vname, varvalue2)
logging.info(str(("Variable added: ",vname,len(varvalue2)))) logging.info(str(("Variable added: ",vname,len(varvalue2))))
Vars_R[myvar.nodeid.Identifier]=[vname,myvar.get_data_value(),varvalue2,v] Vars_R[myvar.nodeid.Identifier]=[vname,myvar.get_data_value(),varvalue2,v]
return myvar return myvar
def AddVarW(vname,varvalue2,v,Q1): def AddVarW(vname,varvalue2,v,Q1,debug):
logging.info(str(("Variable added: ",vname)))#,'=',varvalue2) 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() myvar2.set_writable()
Vars_W[myvar2.nodeid.Identifier]=[vname,myvar2.get_data_value(),v,Q1] Vars_W[myvar2.nodeid.Identifier]=[vname,myvar2.get_data_value(),v,Q1]
handle = sub.subscribe_data_change(myvar2) handle = sub.subscribe_data_change(myvar2)
return myvar2 return myvar2
def Addmethod(vname,v,Q1): def Addmethod(vname,v,Q1,debug):
myvar = PCCobj.add_method(idx, vname, lambda ObjectId,name=vname,inst=v,Q1=Q1 : CallMethod(ObjectId,name,inst,Q1), [],[] ) 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))) logging.info(str(("AddMethod:",vname)))
def InitServer(port=4840): def InitServer(port=4840):
# setup our server # setup our server
global server,running,PCCobj,idx,sub; global server,running,PCCobj,DEBUGobj,idx,sub;
server = Server() server = Server()
server.set_endpoint("opc.tcp://0.0.0.0:{}/PCC/".format(port)) server.set_endpoint("opc.tcp://0.0.0.0:{}/PCC/".format(port))
...@@ -89,6 +92,7 @@ def InitServer(port=4840): ...@@ -89,6 +92,7 @@ def InitServer(port=4840):
# populating our address space # populating our address space
PCCobj = objects.add_object(idx, "PCC") PCCobj = objects.add_object(idx, "PCC")
DEBUGobj = PCCobj.add_object(idx, "DEBUG")
# self.PCCobj=PCCobj # self.PCCobj=PCCobj
# starting! # starting!
......
...@@ -40,7 +40,7 @@ class yamlreader(yamlconfig): ...@@ -40,7 +40,7 @@ class yamlreader(yamlconfig):
elif datatype=='string': varvalue2=dim1*[""] elif datatype=='string': varvalue2=dim1*[""]
# print(len(varvalue2),varvalue2) # print(len(varvalue2),varvalue2)
if v.get('rw') in ['ro','rw']: 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 v['OPCR']=var1
print("Var added:"+name+"_R") print("Var added:"+name+"_R")
self.server.readvar(v['id']) self.server.readvar(v['id'])
...@@ -49,7 +49,7 @@ class yamlreader(yamlconfig): ...@@ -49,7 +49,7 @@ class yamlreader(yamlconfig):
# Q1.put(Inst) # Q1.put(Inst)
if v.get('rw') in ['wo','rw','variable']: 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 v['OPCW']=var1
print("Var added:"+name+"_RW") print("Var added:"+name+"_RW")
for v in self.conf['variables']: for v in self.conf['variables']:
...@@ -66,7 +66,7 @@ class yamlreader(yamlconfig): ...@@ -66,7 +66,7 @@ class yamlreader(yamlconfig):
if v.get('rw','')=='hidden': continue; if v.get('rw','')=='hidden': continue;
print(v) print(v)
# Inst1=Vars.Instr(Vars.DevType.Instr,v,0,[]) # 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'); mask=v.get('mask');
if not(mask): continue; if not(mask): continue;
mask=Find(self.conf['variables'],'name',mask) mask=Find(self.conf['variables'],'name',mask)
......
...@@ -14,7 +14,7 @@ parser = argparse.ArgumentParser() ...@@ -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("-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("-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("-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() args = parser.parse_args()
# set log level # set log level
...@@ -34,8 +34,9 @@ signal.signal(signal.SIGINT, signal_handler) ...@@ -34,8 +34,9 @@ signal.signal(signal.SIGINT, signal_handler)
#Start i2c processes as soon as possible to have minimum duplication #Start i2c processes as soon as possible to have minimum duplication
logging.info("Start I2C processes") logging.info("Start I2C processes")
I2Cports=['UNB2'] #I2Cports=['UNB2','RCU','CLK']
#I2Cports=[] #I2Cports=['RCU']
I2Cports=[x for x in args.config.split(',')]
threads=[] threads=[]
I2Cclients=[] I2Cclients=[]
for name in I2Cports: for name in I2Cports:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment