RESI®
Title:
RESI-KNX-xxx manual
Date
Page
of
12.12.2018
46
60
.
P
ro
p
ri
e
ta
ry
d
a
ta
,
co
m
p
a
n
y
co
n
fid
e
n
tia
l.
A
ll
r
ig
h
ts
re
se
rv
e
d
.
C
o
n
fié
à
tit
re
d
e
se
c
re
t
d
'e
n
tr
e
p
ri
s
e
.
T
o
u
s
d
ro
its
r
é
se
rv
é
s
.
C
o
m
u
n
ic
a
d
o
c
o
m
o
se
g
re
d
o
e
m
p
re
sa
ri
a
l.
R
e
se
rv
a
d
o
s
to
d
o
s
o
s
d
ir
e
ito
s.
C
o
n
fid
a
d
o
co
m
o
s
e
cr
e
to
i
nd
u
st
ri
a
l.
N
o
s
re
se
rv
a
m
o
s
t
o
d
o
s
l
o
s
d
e
re
c
ho
s.
.
.
W
e
it
e
rg
a
b
e
s
o
w
ie
V
e
r
v
ie
lf
ä
lt
ig
u
n
g
d
ie
s
e
r
U
n
te
rl
a
g
e
,
V
e
r-
w
e
rt
u
n
g
u
n
d
M
it
te
ilu
n
g
ih
re
s
In
h
a
lt
s
n
ic
h
t
g
e
s
ta
tt
e
t,
s
o
w
e
it
n
ic
h
t
a
u
s
d
r
ü
c
k
lic
h
z
u
g
e
s
ta
n
d
e
n
.
Z
u
w
id
e
rh
a
n
d
lu
n
g
e
n
v
e
r-
p
fl
ic
h
te
n
z
u
S
c
h
a
d
e
n
e
rs
a
tz
.
A
ll
e
R
e
c
h
te
v
o
rb
e
h
a
lt
e
n
,
in
s
b
e
-
s
o
n
d
e
re
fü
r
d
e
n
F
a
ll
d
e
r
P
a
te
n
te
rt
e
il
u
n
g
o
d
e
r
G
M
-E
in
tr
a
g
u
n
g
.
.
10.2 MODBUS
– register description
10.2.1 Table of holding registers
The module holds internally a list of 16 bit wide holding register. Those registers can be read by the host with
the function READ HOLDING REGISTER (function code: 3). If the register can also be modified by the host,
the host can use the functions PRESET SINGLE REGISTER (function code: 6) and PRESET MULTIPLE
REGISTERS (function code: 16).
The MODBUS convention defines 65535 possible holding register with the notation 4x00001 to 4x65536.
Input register are usually noted with 3x00001 to 3x65536. Please refer the software MODBUS POLL as a
sample for this notation. Internally in the MODBUS/RTU frames an index notation is used, which starts with 0
and ends with 65535. So we decided to note in the following document a register with: 4x00100 for the holding
register 100, 3x00100 as a hint, that you can read this register also as the input register 100, and in addition
also the real index of the protocol index 99 with the notation I:99.
Due to the fact, that you can generate almost every MODBUS mapping, we show only a sample configuration
as a hint, how the mapping looks like:
10.2.2 MODBUS datatype storage and common pitfalls
In general MODBUS uses 16 bit wide registers. So if you use only datatypes, which needs also only one
register, the mapping is easy. But as soon as you use datatypes, e.g. UINT32, which need two or more
MODBUS registers, you can map the values in different ways.
We do a simple sample. We want to store the 32 bit unsigned integer value in hexadecimal 0x12345678 in
MODBUS holding registers starting with index 4x00010. The mapping can be done in two different ways:
But it is only one possibility, that we store the high word in the first MODBUS register. With the same right, we
can define to store the low word in the first register, and the high word in the second.
MODBUS
Register
Storage of UINT32 datatype
4x00010
I:9
The high word of the 32 bit value 0x12345678 is stored in the first 16 bit wide
MODBUS register. This means the value 0x1234 is stored here.
4x00011
I:10
The low word of the 32 bit value 0x12345678 is stored in the second 16 bit wide
MODBUS register. This means the value 0x5678 is stored here.