FAQ – Fmodus SC07 – Modbus

Mätare: Flödesmätare FM-SC07
Version: 02/2016
Standard kommunikationsparametrar: 9600-N-8-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.
Adress i tabellen nedan: 1

First byte Second byte
HEX DEC Data type Description Reading HEX Command Respond Unit No of decimals
0200 512 INT32 Pos acc flow 00000000 01 03 02 00 00 02 C5 B3 01 03 04 00 00 00 00 FA 33
0202 514 INT16 Pos acc flow – unit and fractional part 2C01 01 03 02 02 00 01 24 72 01 03 02 2C 01 65 44 44 1
0203 515 INT32 Neg acc flow 00000000 01 03 02 03 00 02 35 B3 01 03 04 00 00 00 00 FA 33
0205 517 INT16 Pos acc flow – unit and fractional part 2C01 01 03 02 05 00 01 95 B3 01 03 02 2C 01 65 44 44 1
0400 1024 INT32 Flow rate 00000000 01 03 04 00 00 02 C5 3B 01 03 04 00 00 00 00 FA 33
0402 1026 INT16 Flow rate – unit and fractional part 3501 01 03 04 02 00 01 24 FA 01 03 02 35 03 EF 15 53 1
0403 1027 INT32 Temperature 00000001 01 03 04 03 00 02 35 3B 01 03 04 00 00 00 01 3B F3
0405 1029 INT16 Temperature – unit and fractional part 4002 01 03 04 05 00 01 95 3B 01 03 02 40 02 0B 45 64 2
0406 1030 INT32 Time 00000000 01 03 04 06 00 02 25 3A 01 03 04 00 00 00 00 FA 33
0408 1032 INT16 Time – unit and fractional part 5000 01 03 04 08 00 01 84 44 01 03 02 50 00 84 44 80 0
0409 1033 INT32 Time alarm 00000000 01 03 04 09 00 02 15 39 01 03 04 00 00 00 00 FA 33
040B 1035 INT16 Time alarm – unit and fractional part 5000 01 03 04 0B 00 01 F4 F8 01 03 02 50 00 84 44 80 0
040C 1036 INT16 Status 00D0 01 03 04 0C 00 01 45 39 01 03 02 00 D0 B9 D8
0600 1536 INT16 Software version 0042 01 03 06 00 00 01 84 82 01 03 02 00 42 38 75 Software version 00.42
0601 1537 INT16 Hardware version 0411 01 03 06 01 00 01 D5 42 01 03 02 04 11 7A 88 Hardware version 04.11
0602 1538 INT32 Secondary address 013B4053 01 03 06 02 00 02 65 43 01 03 04 01 3B 40 53 FB FF
0604 1540 INT16 Primary address (R/W) 0001 01 03 06 04 00 01 C5 43 01 03 02 00 01 79 84
0605 1541 INT16 Read communication parameters (R/W) 0056 01 03 06 05 00 01 94 83 01 03 02 00 56 38 7A
FEFF 65279 Char(12) Date and time (R/W)

Tabell 1 Modbus register med exempel

Register 0xFEFF (65279) används ändats till att skriva adress och tid.
Register 0x0604 och 0x0605 är båda öppna för att läsa och skriva.

Utläsning av enheter
Följande betydelse gäller för nedan angivna svar gällande register 0x0202, 0x0205, 0x0402, 0x0405, 0x0408, 0x040B

HEX 29 2C 32 35 40 41 50 51
DEC 41 44 50 53 64 65 80 81
Units L m^3 L/h m^3/h °C K h d

 

Förklaring av register 0x040C
Register 0x040C skall tolkas via 16 bit, dock är BIT 15 till B8 ej aktiva utan reserverade för framtida funktioner .

Exempel:
Erhållet värde vid läsning av register 0X040C: 0000 0020 (DEC 32)
Omvandling HEX till BIT: 00000000 00100000, dvs BIT5=1
Betydelse: Sensorsfel

 Value
BIT15 – BIT8
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
0
Reserved
Factory flag is not set
Reset seals
Not sensor error
Reserved
Reserved
Not power low
Temp normal
Reserved
1
Factory flag is set
Set seals
Sensor error
Power low
Water temp low

Tabell 2 Tolkning av svar från register 0X040C

Tolkning av register 0x0605
Register 0x0605 skall tolkas via 16 bit, dock är BIT 15 till BIT8 ej aktiva utan reserverade för framtida funktioner.

Erhållet värde vid läsning av register 0X0605: 0000 0056 (DEC 86)
Omvandling HEX till BIT: 00000000 01010100
Betydelse:
BIT 7 & BIT 6: 01 – Modbus
BIT 5 & BIT 4: 01 – Paritet None
BIT 3: 0 – En stop bit
BIT2 till BIT 0: 110 – Baudrate 9600 bps

BIT15~BIT8

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

Reserved

01bModbus protocol

00beven parity

01bnone parity

10beven parity

11bodd parity

0bone stop

1btwo stop

000b:2400bps

001b:300bps

010b:600bps

011b:1200bps

100b:2400bps

101b:4800bps

110b:9600bps

111b:2400bps

Tabell 3 Tolkning av svar från register 0x0605

 

Funktionskod 6 – Skriva enstaka register
Exempel skriv ny adress
Nuvarande adress: 0x02
Funktionskod: 0x06
Register: 0x0604
Ny adress: 0x0003
CRC16 kod: 0x88 0xB1
Koden vi skickar är således: 02 06 06 04 00 03 88 B1
Svaret vi får är: 02 06 06 04 00 03 88 B1
02 – Adress före ändring
06 – Funktionskod
06 04 – Register
00 03 – Ny adress
88 B1 – CRC16

Funktionskod 16 – Skriva multipla register
Exempel skriv ny adress
Nuvarande adress: 0x01
Funktionskod: 0x10 (observera att HEX 10 = 16)
Register: 0x0604
Starta skriv från register: 0x001
Antal register som skall skrivas: 0x02
Ny adress: 0x0003
CRC16 kod: 0x40 0x15
Koden vi skickar är således: 01 10 06 04 00 01 02 00 02 40 15
Svaret vi får är: 01 10 06 04 00 01 40 80
01 – Adress före ändring
10 – Funktionskod
06 04 – Register
00 01 – Skriven längd
40 80 – CRC16

Funktionskod 16 – Skriva nya kommunikationsparametrar
Adress: 0x03
Funktionskod: 0x10
Register: 0x0605
Starta skriv från register: 0x001
Antal register som skall skrivas: 0x02
Skrivet värde: 0x0025 (se tabell 3 – odd, 4800 bps)
CRC16 kod: 0x18 0xBE
Koden vi skickar är således: 03 10 06 05 00 01 02 00 25 18 BE
Svaret vi får är: 03 10 06 05 00 01 10 A2
03 – Adress
10 – Funktionskod
06 085- Register
00 01 – Skriven längd
10 A2 – CRC16

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 05), 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 4 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.