Mätare: Värmemängdsmätare EM-RC82
Version: 03/2016
Standard kommunikationsparametrar: 9600-N-8-1
Adress i exempel nedan: 1
Modbus protokoll
Nedan exempel med fråga och svar är för att tydliggöra och för eventuell felsökning. Beroende på vilket program som används så kan adressering ske i antingen HEX eller decimalt, varvid vi uppgett båda alternativen.
Kontrollera först kabelanslutningar mot kabelmärkningen. Modbus A och Modbus B samt spänningsmatning måste alltid vara kopplade. Kontrollmät spänning vid värmemängdsmätaren för att säkerställa att korrekt spänning och polaritet är anslutet.
HEX | DEC | Data type | Description | Reading HEX | Command | Respond | Unit |
0000 | 0 | INT32 | Pos acc energy | 0000000D | 01 03 00 00 00 02 C4 0B | 01 03 04 00 00 00 0D 3B F6 | kWh |
0002 | 2 | INT32 | Neg acc energy | 00000024 | 01 03 00 02 00 02 65 CB | 01 03 04 00 00 00 24 FA 28 | kWh |
0004 | 4 | INT32 | Temperature sensor Red | 0000096C | 01 03 00 04 00 02 85 CA | 01 03 04 00 00 09 6C FC 4E | 0.01 °C |
0006 | 6 | INT32 | Temperature sensor Blue | 00000970 | 01 03 00 06 00 02 24 0A | 01 03 04 00 00 09 70 FD 87 | 0.01 °C |
0008 | 8 | INT32 | Temperature difference | 00000009 | 01 03 00 08 00 02 45 C9 | 01 03 04 00 00 00 09 3A 35 | 0.01 °C |
000A | 10 | INT32 | Acc flow | 00000026 | 01 03 00 0A 00 02 E4 09 | 01 03 04 00 00 00 26 7B E9 | 0.01 m^3 |
000C | 12 | INT32 | Flow | 00000000 | 01 03 00 00 00 02 04 08 | 01 03 04 00 00 00 00 FA 33 | 0.01 m^3/h |
000E | 14 | INT32 | Power | 00000000 | 01 03 00 0E 00 02 A5 C8 | 01 03 04 00 00 00 00 FA 33 | 0.01 kW |
0010 | 16 | INT32 | Fault code | 0000 | 01 03 00 10 00 01 85 CF | 01 03 02 00 00 B8 44 | |
0011 | 17 | INT32 | Pulse 1 volume | 0.01 m^3 | |||
0013 | 19 | INT32 | Pulse 2 volume | 0.01 m^3 | |||
0015 | 21 | INT16 | Pulse 1 scale factor (R/W) | L/p | |||
0016 | 22 | INT16 | Pulse 2 scale factor (R/W) | L/p | |||
0017 | 23 | INT16 | Pulse output scale factor (R/W) | kWh/pulse | |||
0018 | 24 | INT16 | Pulse width 148 h, (R/W) | ||||
0200 | 512 | INT64 | Acc flow | 0000000000000000 | 01 03 02 00 00 04 45 B1 | 01 03 08 00 00 00 00 00 00 01 7C 95 A6 | L |
0204 | 516 | INT64 | Acc heat | 00000000000032C8 | 01 03 02 04 00 04 04 70 | 01 03 08 00 00 00 00 00 00 32 C8 81 21 | Wh |
0208 | 520 | INT64 | Monthly acc heat | 0000000000000000 | 01 03 02 08 00 04 C4 73 | 01 03 08 00 00 00 00 00 00 00 00 95 D7 | Wh |
0212 | 530 | INT64 | Acc cooling | 0000000000008CA0 | 01 03 02 12 00 04 E5 B4 | 01 03 08 00 00 00 00 00 00 8C A0 F1 6F | Wh |
0216 | 534 | INT64 | Monthly Acc cooling | 0000000000000000 | 01 03 02 16 00 04 A4 75 | 01 03 08 00 00 00 00 00 00 00 00 95 D7 | Wh |
021A | 538 | INT64 | Pulse 1 acc flow | L | |||
021E | 542 | INT64 | Pulse 2 acc flow | L | |||
0222 | 546 | INT16 | Pulse 1 scale factor (R/W) | L | |||
0223 | 547 | INT16 | Pulse 2 scale factor (R/W) | L | |||
0224 | 548 | INT16 | Pulse out scale factor (R/W) | kWh/pulse | |||
0225 | 549 | INT16 | Pulse width 148 h, (R/W) | ||||
0400 | 1024 | Float (32) | Flow rate | 00000000 | 01 03 04 00 00 02 C5 3B | 01 03 04 00 00 00 00 FA 33 | m^3/h |
0402 | 1026 | Float (32) | Flow temperature | 41BF0A3D | 01 03 04 00 00 02 C5 3B | 01 03 04 00 00 00 00 FA 33 | °C |
0404 | 1028 | Float (32) | Return temperature | 41BFC28F | 01 03 04 04 00 02 84 FA | 01 03 04 41 BF C2 8F CF 2F | °C |
0406 | 1030 | Float (32) | Temperature difference | BDF5C28F | 01 03 04 06 00 02 25 3A | 01 03 04 BD F5 C2 8F DE A9 | K |
0408 | 1032 | Float (32) | Heat power | 00000000 | 01 03 04 08 00 02 44 F9 | 01 03 04 00 00 00 00 FA 33 | kW |
0500 | 1280 | Int16 | Operating time | 0000 | 01 03 05 00 00 01 84 C6 | 01 03 02 00 00 B8 44 | h |
0503 | 1283 | Int16 | Fault code | 0000 | 01 03 04 03 00 01 74 C6 | 01 03 02 00 00 B8 44 | |
0607 | 1543 | Int16 | Address | 0001 | 01 03 06 07 00 01 35 43 | 01 03 02 00 01 79 84 | |
0608 | 1544 | Int16 | Communication parameters | 0016 | 01 03 06 08 00 01 05 40 | 01 03 02 00 16 39 8A |
Tabell 1 Modbus register med exempel
Register 0xFEFF (65279) används ändats till att skriva adress och tid.
Register 0x0607 och 0x0608 är båda öppna för att läsa och skriva.
Observera att 0x0000 till 0x0010 är sammanställning av standardregister och i de flesta fall räcker det att läsa dessa register. Som exempel så kan decimalt register läsas från register 0 med en längd på 18 byte för att läsa in samtliga samtliga standardregister.
Tolkning av register 0x0010 / 0x0503
Följande betydelse gäller för nedan angivna HEX koder
HEX | Error code |
0 | OK, no faults |
2 | Flow temp sensor error |
4 | Return temp sensor error |
6 | Return temp sensor error, flow temp error |
8 | Low power |
A | Low power, flow temp error |
C | Low power, return temp error |
E | Low power,flow temp error, return temp error |
Tabell 2 Tolkning av svar från register 0x0010 / 0x0503
Tolkning av register 0x0608
Följande betydelse gäller för nedan angivna HEX koder
HEX | Paritet (bit 1) | Baudrate bps (bit 0) |
0 | Even parity | 2400 |
1 | None parity | 300 |
2 | Even parity | 600 |
3 | Odd parity | 1200 |
4 | 2400 | |
5 | 4800 | |
6 | 9600 | |
7 | 2400 |
Tabell 3 Tolkning av svar från register 0x0608
Exempel:
Erhållet svar: 0016 (ABCD)
A – Reserverad
B – Reserverad
C – Paritet None
D – Baudrate 9600 bps
Ovan tolkningar hänförs till tabell 4 nedan gällande bit kodning.
BIT15~BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 |
Reserved | 00b:even parity 01b:none parity 10b:even parity 11b:odd parity | 0000b: 2400bps 0001b: 300bps 0010b: 600bps 0011b: 1200bps 0100b: 2400bps 0101b: 4800bps 0110b: 9600bps 0111b: 2400bps |
Tabell 4 Bit kodning av register 0x0608
Funktionskod 6 – Skriva enstaka register
Exempel skriv ny adress
Nuvarande adress: 0x01
Register: 0x0607
Funktionskod: 0x06
Ny adress: 0x0002
CRC16 kod: 0xB9 0x42
Koden vi skickar är således: 01 06 06 07 00 02 B9 42
Svaret vi får är: 01 06 06 07 00 02 B9 42
01 – Adress före ändring
06 – Funktionskod
06 07 – Register
00 02 – Ny adress
B9 42 – CRC16
Funktionskod 16 – Skriva multipla register
Exempel skriv ny adress
Nuvarande adress: 0x01
Funktionskod: 0x10 (observera att HEX 10 = 16)
Register: 0x0607
Starta skriv från register: 0x001
Antal register som skall skrivas: 0x02
Ny adress: 0x0002
CRC16 kod: 0x40 0x26
Koden vi skickar är således: 01 10 06 07 00 01 02 00 02 40 26
Svaret vi får är: 01 10 06 07 00 01 B0 80
01 – Adress före ändring
10 – Funktionskod
06 07 – Register
00 01 – Skriven längd
B0 80 – CRC16
Funktionskod 16 – Skriva nya kommunikationsparametrar
Adress: 0x01
Funktionskod: 0x10
Register: 0x0608
Starta skriv från register: 0x001
Antal register som skall skrivas: 0x02
Skrivet värde: 0x0035 (se tabell 3 – odd, 4800 bps)
CRC16 kod: 0x01 0x0F
Koden vi skickar är således: 01 10 06 08 00 01 02 00 35 01 0F
Svaret vi får är: 01 10 06 08 00 01 80 83
01 – Adress
10 – Funktionskod
06 08 – Register
00 01 – Skriven längd
80 83 – CRC16
Beräkning av pulslängd
Register: 0x0018 eller 0x0225
Beräkning av faktor görs enligt formel x*32768/1000, x utgör önskad pulslängd i ms.
Ex:
Önskad pulslängd: 200 mS
Beräkning: 200*32768/1000=6554
Konvertering av 6554 till HEX: 0x199A
Ställ datum och tid
Adress: 0x01
Funktionskod: 0x10
Register: 0xFEFF
Starta skriv från register: 0x001
Antal register som skall skrivas: 0x0C
Skrivet värde: 0x31 0x32 (månad 12), 0x30 0x35 (dag 5), 0x31 0x35 (år 15), 0x31 0x36 (timme 16), 0x 33 0x31 (minut 31), 0x 31 0x 36 (sekund 16)
CRC16 kod: 0xAF 0x96
Koden vi skickar är således: 01 10 FE 00 01 0C 31 32 30 35 31 35 31 35 31 36 33 31 31 36 AF 96
Förtydligande:
Ett tal skrivs per byte. Sista siffran motsvarar HEX tal, tex 0x31 = 1 HEX, 0x32 = HEX 2. Det innebär att för att skriva månad 12 delar men upp det på 1 2 och kommandot blir 31 32.
Svaret vi får är: 01 10 FE FF 00 01 00 11
01 – Adress
10 – Funktionskod
FE FF – Register
00 01 – Skriven längd
00 11 – CRC16
Tolkning av erhållen felkod
Exempel: Svar 01 80 01 80 80 00
01 – Adress
80 01 – Felkod (Setting data error, tabell 4)
FE FF – Register
80 00 – CRC16
Felkod | Beskrivning |
8001 | Setting data error |
8002 | Address error |
8003 | The sum of address and lenght if fault (too long or zero) |
8030 | Address it larger then F7 (247) |
Tabell 5 Tolkning av felkod
Vi reserverar oss mot fel i texten ovan och användare använder denna information på egen risk. Tänk på att vara noggrann med att inte skriva till andra register än ovan angivna.