Administration

Identifying the sensor via the M-Bus

  • To identify the sensor, enter the following information:

    • Manufacturer string = ELV

    • Medium = Room sensor

    • Generation = 40-49 (CMa10), 50-59 (CMa11)

Note

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.

Changing sensor addresses via the M-Bus

The sensor supports both primary and secondary addressing. Primary address will by default be set to "0" and secondary address to the fabrication number (serial number) of the device.

  1. To change primary address, use set primary address command.

    Table 12. 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


  2. To change secondary address, use set secondary address command.

    Table 14. 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


Changing sensor baud rate via the M-Bus

The product supports baud rates of 300 and 2400 bit/s. No auto-baud detection is available. Baud rate will be set to "2400" bit/s by default.

  • To change baud rate of the sensor, use the Set baud rate command.

    Table 16. 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


FCB-bit toggling (multi-telegram)

The sensor supports FCB toggling, i.e. multi-telegram mode. The first telegram will contain momentary, min/max and average temperature/humidity values. The second telegram will contain information about the 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.

Other M-Bus commands

Initialize product (SND_NKE) command

Table 18. Master to slave

Byte index

Data

Description

0

0x10

Start character

1

0x40

C-Field = SND_NKE

2

0xnn

A-Field = Primary address

3

0xnn

Checksum

4

0x16

Stop character


Request user data (REQ_UD2) command

This command is used to request data from the product.

Table 20. Master to slave

Byte index

Data

Description

0

0x10

Start character

1

0x4b | 0x5b | 0x6b | 0x7b

C-Field = REQ_UD2

2

0xnn

A-Field = Primary address

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:

  1. 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.

  2. 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 21. Slave to master - Telegram 1 - 1-50

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 40 to 49.

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

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: Text message exists indicator

  • 1 = Text message exists

  • 0 = No text message exists

Bit 6: Text message read indicator

  • 1 = Text message not read

  • 0 = Text message read

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

Bit 2: 24h average value indicator

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

Bit 1: 1h average value indicator

  • Toggles when the 1h average is updated (every 6th 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 temperature


Table 22. Slave to master - Telegram 1 - 51-80

Byte index

Data

Description

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 average values 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 6th 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 hours have 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 23. 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 40 to 49.

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 bits 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


Application reset

This command can be used to restore the device to factory default settings.

Table 24. Factory default settings

M-Bus baud rate

2400 bit/s

M-Bus primary address

0

M-Bus secondary address

Serial number

LCD-contrast (only CMa10)

52


Table 25. 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


Select slave for secondary addressing

This command is used to select slave for further secondary addressing. After successful selection, the slave can be addressed using primary address 253.

Table 27. 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


Reset all min/max registers

This command will reset the temperature and relative humidity min/max registers to the current real time values. Note that only the M-Bus min/max registers are reset; the user min/max registers, i.e. those shown on the LCD, can only be reset through user action (push-button).

Table 29. Master to slave

Byte index

Data

Description

0

0x68

Start character 1

1

0x05

L-Field 1

2

0x05

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

0x00

Elvaco command Reset min/max registers VIF

9

0xnn

Checksum

10

0x16

Stop character


Set LCD contrast

The LCD contrast default value will be 52 (0x34). Increasing the value will make the display darker, increasing it will lighten the display. Please note that the display may become invisible if the contrast value is set too low. Suggested minimum value is 40 (0x28). The LCD contrast is changed immediately after receiving the command. The value is also stored in EEPROM and will be in effect until a new Set LCD contrast command is received or of changed with the programming push-button.

Table 31. 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

0x01

Elvaco command Set LCD contrast VIF

9

0xnn

LCD contrast

nn = 40..63

10

0xnn

Checksum

11

0x16

Stop character


Send/store text message

This command is used to send information to LCD display of a sensor.

The allowed size of a text message size is 1-210 characters. Each LCD page can display up to 42 characters, divided into 3 lines of 14 characters each.

User data byte index

Data

2..15

Text for line 1 on page 1

16..29

Text for line 2 on page 1

30..43

Text for line 3 on page 1

44..57

Text for line 1 on page 2

Etc

Etc

Up to 5 pages of text can be stored. The text message is sent "first character first", in the order of reading (fortunately, the M-Bus standard does not dictate "reversed strings" in manufacturer specific data fields).

Exactly 42 characters are needed to fill a page. Unused space must be padded with ASCII space (0x20) if more text or another page follows.

In addition to the usual 7-bit ASCII table (0x20-0x7F), there are several other characters that can be used. Please see Sitronix ST7036 data sheet for more information. Elvaco manufacture defined characters are listed in the following table:

Character

Byte

Å

0x00

Ä

0x01

Ö

0x02

°

0x03 (Degrees, used for °C)

This command will overwrite a previously stored message, if any.

Reception of this command will turn on the mail icon on the LCD screen. It will be displayed until the message is deleted. The message can be deleted either by an M-Bus command (see below) or by user action (push-button).

For normal messages, the LED light of CMa10 will flash until the message has been read. CMa10 also has an invisible message features which can be used to prevent the LED light from reacting upon message receiving. The normal and the invisible message is described in the following table.

Table 33. Master to slave – normal message

Byte index

Data

Description

0

0x68

Start character 1

1

0xnn

L-Field 1

3..(N+3)

2

0xnn

L-Field 2

3..(N+3)

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

0x02

Elvaco command Send/store text message VIF

9..N

0xnn

Message

N = 2-211

N+1

0xnn

Checksum

N+2

0x16

Stop character


Table 34. Master to slave – invisible message

Byte index

Data

Description

0

0x68

Start character 1

1

0xnn

L-Field 1

3..(N+3)

2

0xnn

L-Field 2

3..(N+3)

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

0x07

Elvaco command Send/store text message VIF

9..N

0xnn

Message

N = 2-211

N+1

0xnn

Checksum

N+2

0x16

Stop character


Table 35. Slave to master – normal/invisible message

Byte index

Data

Description

0

0xe5

Acknowledge


Delete text message

This command will delete any text message stored in the slave and turn off both the mail icon and the flashing LED (if on).

Table 36. Master to slave

Byte index

Data

Description

0

0x68

Start character 1

1

0x05

L-Field 1

2

0x05

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

0x03

Elvaco command Delete text message VIF

9

0xnn

Checksum

10

0x16

Stop character


Select user display language

This command will change the display language in the user menu.

Table 38. 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

0x05

Elvaco command Select user display language VIF

9

0xnn

Language code

nn =

English=0x00

Swedish=0x01

German=0x02

Spanish=0x03

Finnish=0x04

Italian=0x05

10

0xnn

Checksum

11

0x16

Stop character


Select Humidity VIF code

This command will change the relative humidity VIF presentation.

Table 40. 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.