From 5bbc8fb52069fe7d4366f5f6926a3b303c6b94bb Mon Sep 17 00:00:00 2001 From: Paulus <kruger@astron.nl> Date: Wed, 28 Apr 2021 01:50:02 +0100 Subject: [PATCH] RCU status added --- config/RCU.yaml | 24 ++++++++++++++---------- i2cserv/i2c_array.py | 2 +- i2cserv/i2c_dev.py | 2 +- opcuaserv/yamlreader.py | 13 +++++++++---- testCLK.py | 3 +-- testRCU.py | 10 +++++++--- 6 files changed, 33 insertions(+), 21 deletions(-) diff --git a/config/RCU.yaml b/config/RCU.yaml index c17fd0b..ba37d23 100644 --- a/config/RCU.yaml +++ b/config/RCU.yaml @@ -209,11 +209,10 @@ variables: dim: 32 - name: RCU_state - description: State of RCUs 0=unknown, 1=ready, 2=busy, 3=error - driver: I2C_RCU + description: State of RCUs 0=unknown, 1=ready, 2=busy, 3= wait PPS, 4=error rw: variable #server variable, not linked to IO dtype: uint8 - dim: 32 + dim: 1 - name: RCU_attenuator description: Attenuator before ADC @@ -348,6 +347,7 @@ methods: driver: I2C_RCU hidden: True instructions: + - RCU_state: 2 - RCU_IO1_GPIO1: Update - RCU_IO1_GPIO2: Update - RCU_IO2_GPIO1: Update @@ -360,11 +360,16 @@ methods: # - IO3.GPIO1: Update # - IO3.GPIO2: Update - IO3.CONF1: Update + - RCU_mask: True + - RCU_update: 0 + - RCU_mask: False + - RCU_state: 1 - name: RCU_on driver: I2C_RCU mask: RCU_mask instructions: + - RCU_state: 2 - IO2.CONF1: 0 #Set device register, can also specify a register adress direction e.g. OIO2.0: 0 - IO2.GPIO1: 0x4A - IO2.GPIO2: 0x55 @@ -385,21 +390,18 @@ methods: # - ADC2_on: 0 # - WAIT: 500 #ms to wait - RCU_update: 0 + - RCU_state: 1 - name: RCU_update driver: I2C_RCU mask: RCU_mask debug: True instructions: -# - RCU_ADC_lock: Update - - RCU_IO1_GPIO1 : Update - - RCU_IO1_GPIO2 : Update - - RCU_IO2_GPIO1 : Update - - RCU_IO2_GPIO2 : Update - - RCU_IO3_GPIO1 : Update - - RCU_IO3_GPIO2 : Update - RCU_Pwr_dig: Update #Read value and update the OPC-UA variable - RCU_ADC_lock: Update + - RCU_Pwr_dig: Update + - RCU_ID: Update + - RCU_version: Update - name: ADC1_on @@ -430,5 +432,7 @@ methods: driver: I2C_RCU mask: RCU_mask instructions: + - RCU_state: 3 - HB_UC_update.wait_pps : 1 + - RCU_state: 1 diff --git a/i2cserv/i2c_array.py b/i2cserv/i2c_array.py index 976274a..aee041c 100644 --- a/i2cserv/i2c_array.py +++ b/i2cserv/i2c_array.py @@ -200,7 +200,7 @@ class i2c_array(i2c_dev): value[:]=value2[:]; if devreg['store']: storearray=self.getstorearray(devreg,len(value)); - storearray[self.RCUi]=value[:] + storearray[self.RCUi]=value[0] logging.debug(str(("Store buffer",self.RCUi,value[0]))) # print("Stored values:",self.getstorearray(devreg)) if (width!=l1*8) or (bitoffset>0): diff --git a/i2cserv/i2c_dev.py b/i2cserv/i2c_dev.py index 2d7ee15..bcf8ba9 100644 --- a/i2cserv/i2c_dev.py +++ b/i2cserv/i2c_dev.py @@ -253,7 +253,7 @@ class i2c_dev(hwdev): if devreg['store']: devreg['storeval']=value[0]; l1=int(np.floor((width+bitoffset+7)/8)) - print(value[0],width,bitoffset,l1) + #print(value[0],width,bitoffset,l1) if (width!=l1*8) or (bitoffset>0): if (width<8): for i in range(len(value)): diff --git a/opcuaserv/yamlreader.py b/opcuaserv/yamlreader.py index ba20318..9616cbc 100644 --- a/opcuaserv/yamlreader.py +++ b/opcuaserv/yamlreader.py @@ -47,8 +47,8 @@ class yamlreader(yamlconfig): var1=AddVarR(name+"_R",varvalue2,v['id'],v.get('debug')) v['OPCR']=var1 logging.debug("Var added:"+name+"_R") - self.server.readvar(v['id']) - time.sleep(0.1); +# self.server.readvar(v['id']) +# time.sleep(0.1); # Inst=Vars.Instr(Vars.DevType.VarUpdate,v,dim2,varvalue2) # Q1.put(Inst) @@ -179,7 +179,12 @@ class yamlreader(yamlconfig): if dtype=="double": scale=float(v.get('scale',1.)) data2=[(d*scale) for d in data2] - data3=v['OPCR'].get_value(); + var1=v.get('OPCR') + if not(var1): var1=v.get('OPCW') + if not(var1): + logging.warn("OPC variable not found!!"); + return; + data3=var1.get_value(); # print("OPCset",v['name'],data3,mask) if mask: #Only update masked values step=len(data2)//len(mask) @@ -190,7 +195,7 @@ class yamlreader(yamlconfig): data3=data2; if len(data3)==1: data3=data3[0]; logging.info(str(("OPCset",v['name'],data3))) - v['OPCR'].set_value(data3); + var1.set_value(data3); def Monitor(self): T1=self.monitorvar.get_value()*10; diff --git a/testCLK.py b/testCLK.py index 34f5b9f..7ca0294 100644 --- a/testCLK.py +++ b/testCLK.py @@ -37,7 +37,7 @@ var1=RCU_conf.getvarid('CLK_I2C_OK') #RCU_I2C.setvar(var1,[True]) var1=RCU_conf.getvarid('CLK_PLL_locked') -#RCU_I2C.readvar(var1,[]) +RCU_I2C.readvar(var1,[]) var1=RCU_conf.getvarid('CLK_PLL_locked_SPI') @@ -45,7 +45,6 @@ var1=RCU_conf.getvarid('CLK_PLL_locked_SPI') RCU_I2C.readvar(var1,[]) - #var1=RCU_conf.getmethodid('CLK_on'); var1=RCU_conf.getmethodid('CLK_PLL_setup'); #RCU_I2C.callmethod(var1,[]) diff --git a/testRCU.py b/testRCU.py index 868e96a..27ca7dd 100644 --- a/testRCU.py +++ b/testRCU.py @@ -11,7 +11,7 @@ import sys import signal from yamlconfig import Find; -logging.basicConfig(level="DEBUG",format='%(asctime)s [%(levelname)-8s,%(filename)-20s:%(lineno)-3d] %(message)s') +logging.basicConfig(level="INFO",format='%(asctime)s [%(levelname)-8s,%(filename)-20s:%(lineno)-3d] %(message)s') RunTimer=True; #def signal_handler(sig, frame): @@ -44,6 +44,10 @@ if False: N=32; mask=[i<8 for i in range(N)]; data=[0]*N; +elif True: + var1=RCU_conf.getvarid('RCU_ADC_lock'); + N=32*3; + mask=[i<5*3 for i in range(N)]; elif False: var1=RCU_conf.getvarid('RCU_attenuator'); N=32*3; @@ -59,7 +63,7 @@ else: #print("mask=",mask); #print("data=",data); #RCU_I2C.setvar(var1,data,mask); -#RCU_I2C.readvar(var1,mask); +RCU_I2C.readvar(var1,mask); var1=RCU_conf.getvarid('RCU_temperature'); N=32; @@ -77,7 +81,7 @@ mask=[i<7 for i in range(N)]; #RCU_I2C.callmethod(var1,mask) -time.sleep(2); +time.sleep(5); while RCU_I2C.data_waiting(): varid,data,mask=RCU_I2C.readdata() -- GitLab