|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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?
write baudrate setting into baudrate-register [4]
read baudrate-register [4] and double check if the value fits
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:
write address into address-register [1]
read address-register [1] and double check if the value fits
restart the device via power reset or software reset (write „1“ into command register [6])
How can I restart the module remotely?
invoke restart command via writing „1“ into command register [6]
|
|
|
|
|
|
|
|
public/solutions/gateway/biddle_tls_modbus_rtu/doc/modbus.txt · Zuletzt geändert: 2015.04.27 - 07:51 von 127.0.0.1 |
|
|
|
|
|