Biddle-TLS / ModBus-RTU

ModBus accesss

Some registers have the type float. It's important to know that these are always 4 byte which means 2 modbus words - so the length has to be 2.

It's possible to read registers of the same space blockwisen but in this case it's important to care about the endianness. For example it's possible to read all CTRL or LUGO registers at once.

There is no way of doing block reads between different types. The module would send an NACK in these cases.

function-codes

method FC (name) FC (dec)
read (r) READ_HOLDING_REGISTERS 3
write (w) PRESET_SINGLE_REGISTER 6
read (r) Read Device Identification 0x2B

register types

name length (words) description
bool 1 0 - off
1 - on
int16 1 Signed-Integer
(–32768 to 32767)
int32 2 Signed-Integer
(–2147483648 to 2147483647)
uint16 1 Unsigned-Integer
(0-65536)
uint32 2 Unsigned-Integer
(0-4294967296)
float 2 Float
MenuState_t 1 0 - unknown
1 - not written yet
2 - error
3 - written
4 - read (FW>106)
5 - invalid (FW>122)
Baudrate_t 1 0 - 9600
1 - 19200
2 - 38400
3 - 57600
4 - 115200
255 - unset (use default, 9600)
Command_t 1 1 - Reset
TestMode_t 1 0 - normal/no test
1 - heating
2 - off
3 - ventilation
10 - unknown
RemoteType_t 1 0 - unknown
1 - AC, old remote
2 - AC, BEMS
3 - FCC

endianness

endianness register value meaning
little-endian 1 return word 0..n (modbus standard)
big-endian * return word n..0 (default setup)

Read Device Identification (function code 0x2B)

After ModBus version 220 the device answers to function code 0x2B (Read Device Identification).

The objects are:

Object Id Object Name Value Comments
0x00 VendorName e-design
0x01 ProductCode bm-gw
0x02 MajorMinorRevision <firmware-rev>/<modbus-rev>
0x03 VendorURL ed-solutions.de
0x04 ProductName Biddle-ModBus Gateway
0x05 ModelName v30x (bems)

registers

address (hex) address (dec) description type ro/rw/eep1)
0x0000 0 on/off (contact) bool rw invalid for BEMS, rw >FV218
0x0001 1 ModBus Slave-address uint16 rw,eep FW>110
0x0002 2 Endianess-setup uint16 rw,eep FW>145, Default 1 for BEMS & FW>=230
0x0003 3 enable auto-Baudrate bool rw,eep TODO
0x0004 4 Baudrate Baudrate_t rw,eep FW>145
0x0005 5 Serial uint16 ro FW>101
0x0006 6 Command Command_t wo FW>145, read=0 FW>219
0x000A 10 ModBus- Revision uint16 ro
0x000B 11 Firmware- Revision uint16 ro
0x000F 15 Biddle-Version uint16 ro
0x0014 20 Biddle-Queries uint16 ro FW>100
0x0015 21 Biddle-Queries-Timeout uint16 ro FW>115
0x0016 22 Biddle-Queries-Errors uint16 ro FW>120
0x0017 23 Biddle-Restarts uint16 ro FW>193
0x0019 25 Uptime (min) uint16 ro FW>115
0x001E 30 ModBus CRC-Errors uint16 ro FW>115
0x0028 40 detected remote type RemoteType_t ro FW>240
0x0032 50 AC-Count uint16 ro FW>121
0x0064 100 MENU/0 int16 ro rw for FW>106
0x0065 101 MENU/1 int16 ro rw for FW>106
0x0066 102 MENU/2 int16 ro rw for FW>106
0x0067 103 MENU/3 int16 ro rw for FW>106
0x00BD 189 MENU/89 int16 ro rw for FW>106
0x00FA 250 MENU.state/0 MenuState_t ro
0x00FB 251 MENU.state/1 MenuState_t ro
0x00FC 252 MENU.state/2 MenuState_t ro
0x00FE 253 MENU.state/3 MenuState_t ro
0x0153 339 MENU.state/89 MenuState_t ro
0x012C 400 ADC uint16 ro
0x0190 450 INP uint16 ro implement!
0x01F4 500 DIAG/tx uint32 ro
0x01F6 502 DIAG/rx uint32 ro
0x01F8 504 DIAG/retr uint16 ro
0x01F9 505 DIAG/fail uint16 ro
0x0258 600 CONF/1/snr uint32 ro FW>129
0x025A 602 CONF/1/cc uint16 ro FW>129
0x025B 603 CONF/1/sw uint16 ro FW>129
0x025C 604 CONF/1/comm uint16 ro FW>129
0x025D 605 CONF/1/flws uint16 ro FW>129, BEMS only, else 0
0x025E 606 CONF/2/snr uint32 ro FW>129
0x02BC 700 MODEL/sterkte uint16 ro FW>113
0x02BD MODEL/tuitbl uint16 ro FW>113
0x02BE MODEL/tbuiten uint16 ro FW>113
0x02BF MODEL/tbfilt uint16 ro FW>113
0x02C0 MODEL/h uint16 ro FW>113
0x02C1 MODEL/d0 uint16 ro FW>113
0x02C2 MODEL/nlim uint16 ro FW>113
0x02C3 MODEL/uw uint16 ro FW>113
0x02C4 MODEL/u0c uint16 ro FW>113
0x02C5 MODEL/u0v uint16 ro FW>113
0x02C6 MODEL/u0t uint16 ro FW>113
0x0320 800 PID/tsp float ro implement!
PID/taanz float ro implement!
PID/tact float ro implement!
PID/tuitsp float ro implement!
PID/tuitpv float ro implement!
PID/sterkte float ro implement!
PID/vheat float ro implement!
PID/pheat float ro implement!
PID/p float ro implement!
PID/i float ro implement!
PID/d float ro implement!
0x0384 900 CTRL/1/flwspeed int16 ro FW>159
0x0385 901 CTRL/2/flwspeed int16 ro FW>159
0x0386 902 CTRL/3/flwspeed int16 ro FW>159
0x0387 903 CTRL/4/flwspeed int16 ro FW>159
0x0388 904 LUGO/vent int16 ro FW>159
0x0389 905 CTRL/1/flwpress int16 ro FW>232
0x038A 906 CTRL/2/flwpress int16 ro FW>232
0x038B 907 CTRL/3/flwpress int16 ro FW>232
0x038C 908 CTRL/4/flwpress int16 ro FW>232
0x038D 909 CTRL/1/hvlv int16 ro FW>232
0x038E 910 CTRL/2/hvlv int16 ro FW>232
0x038F 911 CTRL/3/hvlv int16 ro FW>232
0x0390 912 CTRL/4/hvlv int16 ro FW>232
0x03E8 1000 CTRL/1/tuitsp float ro
0x03EA 1002 CTRL/1/klpsp float ro
0x03EC 1004 CTRL/1/flwsp float ro
0x03EE 1006 CTRL/1/ena float ro
0x03F0 1008 CTRL/1/afzsp float ro
0x03F2 1010 CTRL/1/tinpv float ro
0x03F4 1012 CTRL/1/tuitpv float ro
0x03F6 1014 CTRL/1/err float ro
0x03F8 1016 CTRL/1/stat float ro
0x03FA 1018 CTRL/1/foul float ro
0x03FC 1020 CTRL/1/toptpv float ro
0x03FE 1022 CTRL/1/flwspeed float ro Uflws on BEMS
0x0400 1024 CTRL/1/flwpress float ro only on BEMS && FW>160
0x0402 1026 CTRL/1/vlvoff float ro only on BEMS && FW>160
0x0404 1028 CTRL/1/cvlv float ro only on BEMS && FW>160
0x0406 1030 CTRL/1/hvlv float ro only on BEMS && FW>160
0x0400 1024 CTRL/2/tuitsp float ro
0x0408 1032 CTRL/2/tuitsp float ro only on BEMS && FW>160
0x07D0 2000 LUGO/tuitsp float ro
0x07D2 2002 LUGO/klep float ro
0x07D4 2004 LUGO/vent float ro
0x07D6 2006 LUGO/on float ro
0x07D8 2008 LUGO/heat float ro
0x07DA 2010 LUGO/cool float ro
0x07DC 2012 LUGO/nivo float ro does not exist for BEMS
0x07DE 2014 LUGO/h float ro
0x07E0 2016 LUGO/u0c float ro
0x07E2 2018 LUGO/u0t float ro
0x07F4 2020 LUGO/pheat float ro
0x0BB8 3000 VEKO/pv float ro
0x0BBA 3002 VEKO/sp float ro
0x0BBC 3004 VEKO/spuit float ro
0x0BBE 3006 VEKO/vent float ro
0x0BC0 3008 VEKO/klep float ro
0x0BC2 3010 VEKO/on float ro
0x0BC4 3012 VEKO/h float ro
0x0BC6 3014 VEKO/c float ro
0x0BC8 3016 VEKO/vh float ro
0x0BCA 3018 VEKO/vv float ro
0x0BCC 3020 VEKO/dt float ro
0x0BDE 3022 VEKO/bs float ro
0x0FA0 4000 I/51/0 float ro FW<107
0x0FA2 4002 I/51/1 float ro FW<107
0x0FA4 4004 I/52/0 float ro FW<107
0x0FA6 4006 I/52/1 float ro FW<107
0x0FEC 4076 I/89/1 float ro FW<107
0x1388 5000 GG/0/0 float ro FW<107
0x138A 5002 GG/0/1 float ro FW<107
0x138C 5004 GG/1/0 float ro FW<107
0x138E 5006 GG/1/1 float ro FW<107
0x13A0 5024 GG/11/0 float ro FW<107
0x1770 6000 KLV/pv int16 ro FW>240, FCC only
0x1771 6001 KLV/sp int16 ro FW>240, FCC only
0x1772 6002 KLV/spuit int16 ro FW>240, FCC only
0x1773 6003 KLV/flow int16 ro FW>240, FCC only
0x1774 6004 KLV/vent int16 ro FW>240, FCC only
0x1775 6005 KLV/klep int16 ro FW>240, FCC only
0x1776 6006 KLV/h int16 ro FW>240, FCC only
0x1777 6007 KLV/c int16 ro FW>240, FCC only
0x1778 6008 KLV/on int16 ro FW>240, FCC only
0x17D4 6100 CTRL[0]/tuitsp int16 ro FW>240, FCC only
0x17D5 6101 CTRL[0]/uitblklp int16 ro FW>240, FCC only
0x17D6 6102 CTRL[0]/ventklp int16 ro FW>240, FCC only
0x17D7 6103 CTRL[0]/flwsp int16 ro FW>240, FCC only
0x17D8 6104 CTRL[0]/ena int16 ro FW>240, FCC only
0x17D9 6105 CTRL[0]/ventpct int16 ro FW>240, FCC only
0x17DA 6106 CTRL[0]/tinpv int16 ro FW>240, FCC only
0x17DB 6107 CTRL[0]/tuitpv int16 ro FW>240, FCC only
0x17DC 6108 CTRL[0]/err int16 ro FW>240, FCC only
0x17DD 6109 CTRL[0]/stat int16 ro FW>240, FCC only
0x17DE 6110 CTRL[0]/co2pv int16 ro FW>240, FCC only
0x17DF 6111 CTRL[0]/heatklp int16 ro FW>240, FCC only
0x17E0 6112 CTRL[0]/coolklp int16 ro FW>240, FCC only
0x2710 10000 SETBEMS/on int16 rw BEMS only
0x2711 10001 SETBEMS/heat int16 rw BEMS only
0x2712 10002 SETBEMS/auto int16 rw BEMS only
0x2713 10003 SETBEMS/fan int16 rw BEMS only
0x2714 10004 SETBEMS/fanoffs int16 rw BEMS only
0x2715 10005 SETBEMS/temp int16 rw BEMS only
0x271a 10010 SETBEMS/on.state int16 ro BEMS only
0x271b 10011 SETBEMS/heat.state int16 ro BEMS only
0x271c 10012 SETBEMS/auto.state int16 ro BEMS only
0x271d 10013 SETBEMS/fan.state int16 ro BEMS only
0x271e 10014 SETBEMS/fanoffs.state int16 ro BEMS only
0x271f 10015 SETBEMS/temp.state int16 ro BEMS only
0x2742 10050 BEMS/TempAanz int16 ro BEMS only
0x2743 10051 BEMS/TempUitbl int16 ro BEMS only
0x2744 10052 BEMS/TBuiten int16 ro BEMS only
0x2745 10053 BEMS/TbFilt int16 ro BEMS only
0x2746 10054 BEMS/TestMode uint16 ro BEMS only
0x2747 10055 BEMS/ErrFlags uint16 ro BEMS only
0x2748 10056 BEMS/RealHeat int16 ro BEMS only
0x2749 10057 BEMS/DoorRatio uint16 ro BEMS only
0x274A 10058 BEMS/Inp1Cnt uint16 ro BEMS only, not used >FV230
0x274B 10059 BEMS/ErrFlags2 int16 ro BEMS only, >FV218
0x274C 10060 BEMS/Person uint32 ro BEMS only, >FV218
0x274E 10062 BEMS/Inp1Cnt uint32 ro BEMS only, >=FV230
0x2774 10100 TESTMODE/Remaining uint16 ro BEMS only
0x2775 10101 TESTMODE/Mode TestMode_t rw BEMS only, >FV220
0x2776 10102 TESTMODE/Duration uint16 rw BEMS only, >FV220
0x277E 10110 TESTFILT/FilterPct uint16 rw BEMS only, >FV218
0x277F 10111 TESTFILT/Busy uint16 rw BEMS only, >FV218
0x2780 10112 TESTFILT/Command uint16 w BEMS only, >FV218
0x2788 10120 CURRENTTOUT int16 rw BEMS only, >FV219
0x2789 10121 CURRENTTOUT_timer uint16 r BEMS only, >FV495

FAQ

often used registers

r/w function register
read+write on/off OnOff [0]
read supply-temp CTRL/TinPv [1010]
read exhaust-temp CTRL/TuitPv [1012]
read device on/off real state LUGO/ON [2006]
read mode LUGO/Heat [2008] (1=Heat 0=Fan)
read install height LUGO/Nivo [2012] (0=A-level ; 1=B-level) or MENU/58 (0=A-level)
read fanspeed CTRL/FlwSp [1004]
read filter dirt sensor CTRL/FlwSpeed [1022]
read error code CTRL/ERR [1014]

How can I change the baudrate?

  1. write baudrate setting into baudrate-register [4]
  2. read baudrate-register [4] and double check if the value fits
  3. restart the device via power reset or software reset (write „1“ into command register [6])

How can I change the modbus address?

Use the same procedure you use for setting the baudrate:

  1. write address into address-register [1]
  2. read address-register [1] and double check if the value fits
  3. restart the device via power reset or software reset (write „1“ into command register [6])

How can I restart the module remotely?

  1. invoke restart command via writing „1“ into command register [6]
1)
value is stored in eeprom
public/solutions/gateway/biddle_tls_modbus_rtu/doc/modbus.txt · Zuletzt geändert: 2015.04.27 - 07:51 von 127.0.0.1
 
Copyright 2021, e-design / Alexander Krause