Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
PyPCC
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
LOFAR2.0
PyPCC
Commits
22bea30e
Commit
22bea30e
authored
2 years ago
by
Paulus Kruger
Browse files
Options
Downloads
Patches
Plain Diff
HBATtest program
parent
7a650b72
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
pypcc/HBATtest.py
+187
-0
187 additions, 0 deletions
pypcc/HBATtest.py
with
187 additions
and
0 deletions
pypcc/HBATtest.py
0 → 100644
+
187
−
0
View file @
22bea30e
##NB translator should be off or monitor should be 0
name
=
'
RECVTR_HB
'
#YAML config file with all register values etc
varID
=
'
RCU_PCB_ID
'
logFile
=
'
SetVersion
'
import
logging
import
argparse
from
opcuaserv
import
opcuaserv
from
opcuaserv
import
i2client
from
opcuaserv
import
yamlreader
#from opcuaserv import pypcc2
from
i2cserv
import
i2cthread
import
threading
import
time
import
sys
import
signal
from
yamlconfig
import
Find
;
import
yamlconfig
as
yc
from
datetime
import
datetime
import
numpy
as
np
testtime
=
datetime
.
now
().
strftime
(
"
%y-%m-%d %H:%M
"
)
if
len
(
sys
.
argv
)
<
3
:
print
(
"
setVersion RCUnr RCUsi HBAnr
"
);
print
(
"
e.g. SetVersion 8 1 1
"
)
# exit();
RCUNR
=
int
(
sys
.
argv
[
1
]);
SINR
=
int
(
sys
.
argv
[
2
]);
HBANR
=
int
(
sys
.
argv
[
3
]);
print
(
RCUNR
,
SINR
,
HBANR
)
logging
.
basicConfig
(
level
=
"
WARNING
"
,
format
=
'
%(asctime)s [%(levelname)-8s,%(filename)-20s:%(lineno)-3d] %(message)s
'
)
#logging.basicConfig(level="DEBUG",format='%(asctime)s [%(levelname)-8s,%(filename)-20s:%(lineno)-3d] %(message)s')
RunTimer
=
True
;
conf
=
yc
.
yamlconfig
(
name
)
conf
.
linkdevices
()
conf
.
loaddrivers
()
conf
.
linkdrivers
()
def
GetVal
(
name
,
N
=
1
):
varid
=
conf
.
getvarid
(
name
);
# print("varid",varid)
var1
=
conf
.
getvars
()[
varid
]
dim
=
var1
[
'
dim
'
]
drv
=
var1
.
get
(
'
drivercls
'
);
mask
=
[
False
]
*
RCUNR
*
N
+
[
True
]
*
N
+
[
False
]
*
((
dim
-
RCUNR
-
1
)
*
N
);
data
=
drv
.
OPCUAReadVariable
(
varid
,
var1
,
mask
)
data
=
data
[
0
].
data
N3
=
len
(
data
)
//
dim
return
data
[
N3
*
RCUNR
:
N3
*
(
RCUNR
+
1
)],
var1
#reading the ID also set the switch
data
,
var1
=
GetVal
(
varID
);
ID
=
(
"
%.2x%.2x%.2x%.2x
"
%
(
data
[
0
],
data
[
1
],
data
[
2
],
data
[
3
]))
rootLogger
=
logging
.
getLogger
()
rootLogger
=
logging
.
getLogger
()
fileHandler
=
logging
.
FileHandler
(
"
{0}.log
"
.
format
(
logFile
))
#fileHandler.setFormatter(logFormatter)
rootLogger
.
addHandler
(
fileHandler
)
logging
.
warning
(
"
ID=%s
"
%
ID
)
if
int
(
ID
,
16
)
==
0
:
logging
.
error
(
"
Error: No ID
"
);
exit
()
uCaddr
=
0x40
HBAaddr
=
0x41
+
SINR
i2c
=
conf
.
conf
[
'
drivers
'
][
0
][
'
obj
'
]
#assume I2C is first device
v
=
[
0
]
if
True
:
# print("Set Vref=0x0c");
i2c
.
i2csetget
(
uCaddr
,[
0x08
],
reg
=
13
,
read
=
0
)
# print("Set mode=0");
i2c
.
i2csetget
(
uCaddr
,[
0
],
reg
=
2
,
read
=
0
)
# print("Set Auto readback=0");
i2c
.
i2csetget
(
uCaddr
,[
0
],
reg
=
5
,
read
=
0
)
# print("TX start high=0");
i2c
.
i2csetget
(
uCaddr
,[
4
],
reg
=
14
,
read
=
0
)
i2c
.
i2csetget
(
uCaddr
,
v
,
reg
=
2
,
read
=
1
)
#get mode
print
(
"
Current mode=
"
,
v
[
0
])
i2c
.
i2csetget
(
uCaddr
,
v
,
reg
=
12
,
read
=
1
)
#get mode
print
(
"
Wait PPS=
"
,
v
[
0
])
i2c
.
i2csetget
(
uCaddr
,
v
,
reg
=
13
,
read
=
1
)
#get mode
print
(
"
Vref=
"
,
v
[
0
])
i2c
.
i2csetget
(
uCaddr
,
v
,
reg
=
5
,
read
=
1
)
#get mode
print
(
"
Auto readback=
"
,
v
[
0
])
i2c
.
i2csetget
(
uCaddr
,
v
,
reg
=
14
,
read
=
1
)
#get mode
print
(
"
TX start high=
"
,
v
[
0
])
#exit()
CRCtab
=
np
.
load
(
"
CRC_HBAT1.npy
"
)
CRCtabl
=
[
d
%
256
for
d
in
CRCtab
]
CRCtabh
=
[
d
//
256
for
d
in
CRCtab
]
def
CRCcheck
(
S1
):
crcl
=
0
;
crch
=
0
;
for
b
in
S1
:
i
=
crcl
^
b
crcl
=
crch
^
CRCtabl
[
i
]
crch
=
CRCtabh
[
i
]
# print(i,CRCtabh[i])
# crch=crcl ^ CRCtabh[i]
# crcl= CRCtabl[i]
return
crch
*
256
+
crcl
def
MakeRequest
(
serv
,
data
=
[],
func
=
5
,
reg
=
0
):
data2
=
[
func
,
reg
]
+
data
l
=
len
(
data2
)
+
1
data2
=
[
serv
,
l
]
+
data2
# CRC=CRCcheck(data2)
# data2=data2+[CRC%256,CRC//256]
# assert(CRCcheck(data2)==0)
return
data2
def
RequestRegisters
(
HBANR
,
reg
,
length
):
func
=
length
*
2
+
1
;
TX1
=
MakeRequest
(
HBANR
,[],
func
,
reg
);
i2c
.
i2csetget
(
HBAaddr
,
TX1
,
read
=
0
)
# print("Packet to TX",[hex(d) for d in TX1])
# TX2=hb.ManchesterEncode(TX1)\n",
# ser.write(bytearray(TX2))\n",
# return GetPackets();"
HBANRs
=
range
(
1
,
17
)
if
HBANR
==
0
else
[
HBANR
]
for
HBANR
in
HBANRs
:
RequestRegisters
(
HBANR
,
0
,
1
)
time
.
sleep
(
0.1
)
D
=
[
0
]
*
7
i2c
.
i2csetget
(
HBAaddr
,
D
,
read
=
1
)
D
=
D
[
2
:]
CRC
=
CRCcheck
(
D
[:
-
2
])
CRCerror
=
((
CRC
&
0xff
)
!=
D
[
-
2
])
or
(
CRC
//
256
!=
D
[
-
1
])
print
(
HBANR
,
"
RX:
"
,[
hex
(
d
)
for
d
in
D
],
'
,CRC error
'
if
CRCerror
else
''
,
'
,wrong addr
'
if
(
HBANR
+
0x80
!=
D
[
0
])
else
''
)
# if CRCerror: print(' CRC=',hex(CRC & 0xff),hex(CRC//256))
# if (HBANR+0x80!=D[0]): print(' wrong address',D[0],HBANR+0x80)
# time.sleep(0.1)
#print(MakeRequest(HBANR,data
#data,var1=GetVal(varSet);
#version=bytearray(data).decode("utf-8",errors='ignore')
#logging.warning("Old "+varSet+":"+version)
#if Ver is None: exit()
#print(var1)
#ROMaddr=var1['devreg'][0]['addr']
#ROMreg=var1['devreg'][0]['register_W']
#varlen=var1['width']//8
#print(varlen)
#exit()
#i2c=conf.conf['drivers'][0]['obj'] #assume I2C is first device
#exit()
#R1=0
#ROM=0x50
#Upload version
#Ver2=[(c.encode('utf-8')[0]) for c in Ver]
#Ver2=Ver2[:varlen]
#print(len(Ver),Ver,Ver2)
#V2=[0]
#for i,v in enumerate(Ver2):
# time.sleep(0.1)
# i2c.i2csetget(ROMaddr,[v],reg=ROMreg+i,read=0)
# time.sleep(0.1)
# i2c.i2csetget(ROMaddr,V2,reg=ROMreg+i,read=1)
# print(i,v,V2)
#for i in range(len(Ver2),varlen):
# time.sleep(0.1)
# i2c.i2csetget(ROMaddr,[255],reg=ROMreg+i,read=0)
# time.sleep(0.1)
# i2c.i2csetget(ROMaddr,V2,reg=ROMreg+i,read=1)
#time.sleep(0.1)
#data,var1=GetVal(varSet);
#version=bytearray(data).decode("utf-8",errors='ignore')
#print("Version",version)
#logging.warning("New "+varSet+":"+version)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment