diff --git a/config/RCU.yaml b/config/RCU.yaml index c17fd0b83e8f0e6228ac64ccd775feb8e1ca2962..ba37d23aeddaa7604f29eacdb1c01752ab11d74c 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 976274a8a3222952a1fcc08257a017e0a5e7b3c3..aee041c815a1689ae3da317c7a74919273da116f 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 2d7ee15c4379e47749a7dbb35f357959648d6b0f..bcf8ba90079d65a6add312c1793f1b4ba142007a 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 ba203186d084f1cc7e979e72dc6c5d21a3694b29..9616cbc0e9acec897c1270d4a3c61d6ca8c4a1c6 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 34f5b9fcde37bf83f86f090c3ea0338b97c3802f..7ca0294a4b1e1727083c612f46f802196b98d183 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 868e96ab3d25a8a2a3fd37a09b6794e37dd5c7f5..27ca7ddeea6cb93e54d9b82739315644eb0a6371 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()