Administration

M-Bus product identification

The product can be identified using the following information:

  • Manufacturer string = ELV

  • Medium = Room sensor

  • Generation = 70-79

The Generation field between product releases will only change (increase by 1) if the M-Bus protocol information changes between versions. Use the software version field in the M-Bus telegram to identify current software version.

M-Bus addressing mode

The product implements both primary and secondary addressing mode. The primary and secondary addresses can be changed using M-Bus standard command. Primary address from factory is 0 and secondary address from factory is the fabrication number (serial number).

M-Bus baud rate

The product can handle 300 or 2400 baud. No auto-baud detection is available. The baud rate can be changed using M-Bus standard commands. Baud rate from factory is 2400 baud.

FCB-bit toggling (multi-telegram)

Multi-telegram mode, or FCB-bit toggling, is implemented. First telegram contains momentary values, min/max and average values of measured temperature and humidity. Second telegram contains last 24 hours of temperature values.

M-Bus break

M-Bus master break signals are handled according to the M-Bus standard. Any on-going communication from M-Bus slave to master will be aborted on break detection from the M-Bus master.

M-Bus commands

Initialize product (SND_NKE)

Table 127. Master to slave

Byte index

Data

Description

0

0x10

Start character

1

0x40

C-Field = SND_NKE

2

0xnn

A-Field = Address of slave

3

0xnn

Checksum

4

0x16

Stop character


Request user data (REQ_UD2)

Request user data from product and wait for slave response.

Table 129. Master to slave

Byte index

Data

Description

0

0x10

Start character

1

0x4b | 0x5b | 0x6b | 0x7b

C-Field = REQ_UD2

2

0xnn

A-Field = Address of slave

3

0xnn

Checksum

4

0x16

Stop character


The RSP_UD telegram depends on the FCV and FCB bits in the C field of the calling REQ_UD2 telegram. There are two telegrams available:

  • If FCV is 0 in REQ_UD2 or if first, third, fifth etc. REQ_UD2 since last SND_NKE (primary addressing mode) or if first, third, fifth etc. REQ_UD2 since last successful secondary addressing selection first telegram is returned.

  • If FCV is 1 in REQ_UD2 and if second, fourth, sixth etc. REQ_UD2 since last SND_NKE (primary addressing mode) or if second, fourth, sixth etc. REQ_UD2 since last successful secondary addressing selection second telegram is returned.

Table 130. Slave to master – Telegram 1

Byte index

Data

Description

0

0x68

Start character 1

1

0xnn

L-field 1

2

0xnn

L-field 2

3

0x68

Start character 2

4

0x08

RSP-UD

5

0xnn

A-field = Primary address

6

0x72

Variable data respond, mode 1 = LSByte first

7-10

0xnnnnnnnn

Secondary address

11-12

0x9615

Manufacturer id “ELV”

13

0xnn

Generation field In the range from 70 to 79 (dec)

14

0x1B

Device type/medium = room sensor

15

0xnn

Access number

16

0x00

Status byte

0x00 = Ok (no error)

0x0a = Sensor failure (permanent application error)

17-18

0x0000

Signature, 16 bit binary

19

0x01

Product status DIF

20

0xfd

Product status VIF

21

0x1b

Product status VIFE = digital input

22

0xnn

8-bit integer value with following bit-mask:

Bit 7: Not used (= 0 or 1)

Bit 6: Not used (= 0 or 1)

Bit 5, 4, 3: Not used (= 0)

Bit 2: 24 h average value indicator

  • Toggles when the 24 h average temperature is updated (every hour)

Bit 1: 1 h average value indicator

  • Toggles when the 1 h average is updated (every 6 minute)

Bit 0: Sensor failure

  • 1 = Sensor failure (same as 0x0a in header status byte)

  • 0 = No sensor failure

23

0x02

Instantaneous relative humidity DIF

24

0xfb

Instantaneous relative humidity VIF

25

0x9b

Relative humidity, in % (integer) VIFE

26

0x74

Scaling VIFE, x 0.01

27..28

0xnnnn

Instantaneous relative humidity

In case of error the relative humidity will be set to 0.

An optional humidity VIF can be selected in the setup menu. In this case the 3 byte default VIF is replaced by

  • 0xFC0348522574

29

0x22

Minimum relative humidity DIF

30

0xfb

Minimum relative humidity VIF

31

0x9b

Minimum Relative humidity, in % (integer) VIFE

32

0x74

Scaling VIFE, x 0.01

33..34

0xnnnn

Minimum Instantaneous relative humidity

In case of error the minimum relative humidity will be set to 0.

This is the lowest instantaneous relative humidity since last min/max reset command.

An optional humidity VIF can be selected in the setup menu. In this case the 3 byte default VIF is replaced by

  • 0xFC0348522574

35

0x12

Maximum relative humidity DIF

36

0xfb

Maximum relative humidity VIF

37

0x9b

Maximum Relative humidity, in % (integer) VIFE

38

0x74

Scaling VIFE, x 0.01

39..40

0xnnnn

Maximum Instantaneous relative humidity

In case of error the maximum relative humidity will be set to 0.

This is the highest instantaneous relative humidity since last min/max reset command.

An optional humidity VIF can be selected in the setup menu. In this case the 3 byte default VIF is replaced by

  • 0xFC0348522574

41

0x02

Instantaneous temperature DIF

42

0x65

Instantaneous temperature VIF, external temperature

43..44

0xnnnn

Instantaneous temperature x 100

In case of error the temperature will be set to 0.

45

0x22

Minimum temperature DIF

46

0x65

Minimum temperature VIF, external temperature

47..48

0xnnnn

Minimum temperature x 100

In case of error the temperature will be set to 0.

This is the lowest instantaneous temperature since last min/max reset command.

49

0x12

Maximum temperature DIF

50

0x65

Maximum temperature VIF, external

51..52

0xnnnn

Maximum temperature x 100

In case of error the temperature will be set to 0.

This is the highest instantaneous temperature since last min/max reset command.

53

0x01

Average duration DIF

54

0x72

Average duration VIF

55

0xnn

Number of hour averages collected since power-on (0..24)

This counter starts from zero at power-on and is incremented once per hour when a new hour average temperature value is stored in the 24-hour table. The counter does not count beyond 24 (i.e. this value is equal to number of valid hour values stored in the 24-hour table). The 24-hour temperature rolling average will not be available until this counter has reached 24.

56

0x42 | 0x72

1-hour temperature rolling average DIF, storage number 1

0x42 = The value is available

0x72 = The value is not yet calculated

57

0x65

1-hour temperature rolling average VIF, external temperature

58..59

0xnnnn

1-hour temperature rolling average x 100

This value is unavailable (0) until 1 hour has passed since power-on. During this first hour the value will be flagged as “value during error state”, DIF bits 5 and 4 = 1.

This value is updated every 6 minute.

The temperature data will be 0 in case of sensor error. See slave status byte in data header.

60

0x82 | 0xb2

24-hour temperature rolling average DIF, storage number 2

0x82 = The value is available

0xb2 = The value is not yet calculated

61

0x01

24-hour temperature rolling average DIFE

62

0x65

24-hour temperature rolling average VIF, external temperature

63..64

0xnnnn

24-hour temperature rolling average x 100

This value is unavailable (0) until 24 hour has passed since power-on. During this period the value will be flagged as “value during error state”, DIF bits 5 and 4 = 1.

This value is updated every hour.

The temperature data will be 0 in case of sensor error. See slave status byte in data header.

65

0x0c

Fabrication number DIF

66

0x78

Fabrication number VIF

67..68

0xnnnnnnnn

Fabrication number, 8-digit packed BCD

69

0x0d

Firmware version DIF

70

0xfd

Firmware version VIF

71

0x0f

Firmware version VIFE = “ Other software version”

72

0x05

Length of firmware string (varying)

73..77

0xnnnnnnnnnn

Firmware version string in format: Major.Minor.PatchLevel

78

0x1f

End of telegram, more data follows

79

0xnn

Checksum

80

0x16

Stop character


Table 131. Slave to master – Telegram 2

Byte index

Data

Description

0

0x68

Start character 1

1

0xnn

L-Field 1

2

0xnn

L-Field 2

3

0x68

Start character 2

4

0x08

RSP_UD

5

0xnn

A-Field = Primary address

6

0x72

Variable data respond, mode 1 = LSByte first

7-10

0xnnnnnnnn

Secondary address

11-12

0x9615

Manufacturer id “ELV”

13

0xnn

Generation field

In the range from 70 to 79 (dec)

14

0x1B

Device type/medium = room sensor

15

0xnn

Access number

16

0xnn

Status byte

0x00 = Ok (no error)

0x0a = Sensor failure (permanent application error)

17-18

0x0000

Signature, 16 bit binary

19 + 5 x N

0xc2 | 0xf2 | 0x82 | 0xb2

24-hour log temperature table DIF

Table index = N = 0..23

Storage numbers N + 3 = 3..26

Value age = N (+1/-0) hours

The newest value is transmitted first.

During the first 24 hours after power-on, values are sent as 0 and flagged as “value during error state” (DIF bits 5 and 4 = 1), while not yet updated.

All temperature data will be 0 in case of sensor error. See product status byte or status byte in data header.

19 + 5 x N

0xnn

24-hour log temperature table DIFE nn = (N+3/2)

20 + 5 x N

0x65

24-hour log temperature table VIFE

21..22 + 5 x N

0xnnnn

Average temperature of hour “now – N” x 100

23 + 5 x N

0x0f

End of telegram, no more data follows

23 + 5 x N +1

0xnn

Checksum

23 + 5 x N +2

0x16

Stop character


Set baud rate

Set baud rate of slave.

Table 132. Master to slave

Byte index

Data

Description

0

0x68

Start character 1

1

0x03

L-field 1

2

0x03

L-field 2

3

0x68

Start character 2

4

0x43 | 0x53 | 0x63 | 0x73

C-Field = SND-UD

5

0xnn

A-Field = Primary address

6

0xnn

CI-Field = Baud rate selection code:

0xb8 = 300 baud

0xb9 = 600 baud

0xbA = 1200 baud

0xbb = 2400 baud

0xbc = 4800 baud (note 1)

0xbd = 9600 baud (note 1)

0xbe = no change (note 2)

0xbf = no change (note 2)

Baud rates > 2400 baud do work but have not been tested to comply with the timing specifications in the M-Bus standard.

Baud rate codes 0xbe and 0xbf are ACKed with 0xe5 although they do not change the baud rate (this is in accordance with the M-Bus specification).

7

0xnn

Checksum

8

0x16

Stop character


Application reset

Restore all information to factory default.

Table 134. Master to slave

Byte index

Data

Description

0

0x68

Start character 1

1

0x04

L-field 1

2

0x04

L-field 2

3

0x68

Start character 2

4

0x43 | 0x53 | 0x63 | 0x73

C-Field = SND-UD

5

0xnn

A-Field = Primary address

6

0x50

CI-Field = Application reset

7

0xb0

Application reset sub-code

8

0xnn

Checksum

9

0x16

Stop character


Set primary address

Change M-Bus primary address.

Table 136. Master to slave

Byte index

Data

Description

0

0x68

Start character 1

1

0x06

L-field 1

2

0x06

L-field 2

3

0x68

Start character 2

4

0x43 | 0x53 | 0x63 | 0x73

C-Field = SND-UD

5

0xnn

A-Field = Primary address

6

0x51

CI-Field

7

0x01

Primary address DIF

8

0x7A

Primary address VIF

9

0xnn

New primary address (0x00-0xfa)

10

0xnn

Checksum

11

0x16

Stop character


Set secondary address

Change M-Bus secondary address.

Table 138. Master to slave

Byte index

Data

Description

0

0x68

Start character 1

1

0x09

L-Field 1

2

0x09

L-Field 2

3

0x68

Start character 2

4

0x43 | 0x53 | 0x63 | 0x73

C-Field = SND-UD

5

0xnn

A-Field = Primary address

6

0x51

CI-Field

7

0x0c

Secondary address DIF

8

0x79

Secondary address VIF

9-12

0xnnnnnnnn

New secondary address, 8-bit packed BCD

13

0xnn

Checksum

14

0x16

Stop character


Select slave

Select slave for further secondary addressing. After successful selection, the slave can be addressed using primary address 253.

Table 140. Master to slave

Byte index

Data

Description

0

0x68

Start character 1

1

0xnn

L-field 1

Variable depending on selection mask.

The selection mask can have any size in the range 0..8 bytes except 5 (manufacturer id requires a full 16-bit mask).

2

0xnn

L-field 2

Variable depending on selection mask.

3

0x68

Start character 2

4

0x43 | 0x53 | 0x63 | 0x73

C-field = SND-UD

5

0xnn

A-Field = Primary address

6

0x52

CI-Field = Slave selection

The slave will be deselected if there is any mismatch.

7-10

0xnnnnnnnn

Optional

M-Bus secondary address mask, packed BCD

The M-Bus ID mask can use the nibble 0xf as a wildcard in any of the eight BCD digit positions.

11-12

0xnnnn

Optional

M-Bus manufacturer id mask, 16-bit binary

The M-Bus manufacturer id mask can use 0xff as wildcard for one or both bytes.

13

0xnn

Optional

M-Bus generation mask, 8-bit binary

The M-Bus generation mask can use 0xff as wildcard.

14

0xnn

Optional

M-Bus medium mask, 8-bit binary

The M-Bus meter medium mask will match if 0x00 ("unknown") or 0xff (wildcard).

15

0xnn

Checksum

16

0x16

Stop character


Select humidity VIF code

This command will change the relative humidity VIF presentation.

This command was implemented in software version 4.1.0.

Table 142. Master to slave

Byte index

Data

Description

0

0x68

Start character 1

1

0x06

L-field 1

2

0x06

L-field 2

3

0x68

Start character 2

4

0x43 | 0x53 | 0x63 | 0x73

C-field = SND-UD

5

0xnn

A-Field = Primary address

6

0x51

CI-field

7

0x0F

Manufacture specific follows DIF

8

0x06

Elvaco command select humidity VIF code

9

0xnn

Humidity VIF selector

nn =

Dimensionless (0xFDBA)=0x00

Plain text (%RH)=0x01

10

0xnn

Checksum

11

0x16

Stop character


Was this article helpful?

0 out of 0 found this helpful
Have more questions? Submit a request

Comments (0 comments)

Article is closed for comments.