Promotic
Facebook

PmMBus - Driver for communication with M-BUS protocol

This PROMOTIC driver is used for communication with devices that support the M-BUS (Meter-Bus) protocol. This protocol is designed primarily for applications that collect data from consumption meters of various types (heating, electricity...).
- The meters communicate by the M-BUS protocol over the special physical interface (36V) and therefore it is necessary to use the HW converter (see M-BUS HW converter).
 

Basic properties of the driver:

- Using this driver is bound to purchase the license: PmMBus. With the freeware version PmFree, or when developing the application (with development environment for tersting purposes), this component is always functional.
- The communication is done via Ethernet or via standard serial link (COM1, COM2 ...).
- When communicating via Ethernet the form of the transfered data is the same as for M-BUS for serial link. The essential condition is that the M-BUS/Ethernet converter does no modifications to the transferred data.
- The PROMOTIC application is the MASTER (it initiates the data transfer) from this communication point of view.
- The driver is incorporated into the PROMOTIC system by means of the PmComm object. It is possible to add an PmComm object and then configure it properly, but it is recommended to use:
- This driver supports the usage of both PmCommMsg and PmCommData objects. For common data transfers, it is easier to use the PmCommData object.
 
The driver can be configured on very general level in the PROMOTIC application:
- Example: For this driver there was created the example of a PROMOTIC application where the way of communication with individual types of meters is shown. This example is very suitable for the first testing. See Example of communication by M-BUS protocol.
- Address: Each meter can be addressed - In the PmCommData object, the meter address can be defined for each variable, in the PmCommMsg object, the address is defined on the Data-sent page in the "Address" variable. The addresses values are:
- 0 to 250 = standard address of specific meter.
- 253 = the address of "selected" meter. The meter can be "selected" by the "Common meter/Selection of a slave station by identification number" message.
- 254 = universal address. All meters receive the requests and all meters also reply. Relevant only if a single meter is connected.
- 255 = universal address. The requests are received by all meters, but no meter replies. Relevant only for e.g. "Common meter/Initialisation of Slave (of the meter)" message.
- More meter types on 1 line: On one serial line there can be connected more meter types, for example, meters Kamstrup, Landis, Danfoss, etc. can be "mixed".
- Different data formats: Values from the meters are sent in different formats (BCD or binary coding, stored on 2/4/6/8 bytes, ...). The driver automatically decodes these values.
- Physical units conversion: The driver can automatically convert the values of received data into standard physical units. The meters normally send these values as integer value with set flag that it is, for example 0.01C, 0.1kW, etc. The driver converts the values into the following units:
 
Unit:Physical quantity:
GJEnergy
WPower
m3Volume
kgMass
m3/hVolume Flow
kg/hMass Flow
CTemperature (Forward, Return, Difference, External)
mbarPressure
VElectric Voltage
AElectric Current
second countAveraging Duration, Actuality Duration ..
day countOn time, Operation time
 

The the binary date formats (TimePoint) are converted into the Date data type. Other values (counter, serial number ..) are not being converted.

- Common read: The driver can read also from unknown M-BUS meters, that have no preconfiguratons prepared. Reading such data is based on the fact that the M-BUS data message contains not only the values, but also the additional info about the meaning of the specific value. The driver knows what the value means and therefore is able to process it. Reading such data can be used in both PmCommData and PmCommMsg objects:

In the PmCommData object, the data items are configured by specifying the item type (Temperature, Volume ..). The driver then finds the desired data in the received message (if present) and saves it into the data item.

The "Common meter/Reading of generally configurated data" message in the PmCommMsg object is used for common reading of the data. The designer can setup the data of the PmCommMsg object exactly according to the meter type. If the designer does not know what the meter provides, then it is possible to set in this message to write received data into the INFO system. According to this listing, the designer can then set up the data of the object.

- Preset messages: For some often used types of meters (see the list below) the driver has already preset messages. So the designer doesn't need to find out which data are sent by the meter. Some data cannot even be find out without the documentation to the meter. Thanks to preset messages the designer doesn't need to care aboout anything.
 
It is easier to use the PmCommData objects for receiving the values from the meters. The PmCommMsg objects can be used for special, less standard, communications fith following properties:
- Header of M-BUS message: When receiving the standard data, the meter sends a header before the data. The information from the header is available because the driver generates for each such message the following variables on the Data-received page:
 
- Address: The address of the meter that send the data (according to the M-BUS protocol it is the A-Field item). If the variable Address is set to 254 (universal address) on the Data-sent page, then the meter responds by its real address and so it is possible to find out this address by the meter with unknown address. The meter itself has the address preset by the producer to 0.
- IdentNr: (Indentification Number) Customer number, which runs from 00000000 to 99999999. It can be preset at fabrication time with a unique number, but could be changeable afterwards.
- Manufac: (Manufacturer) Manufacturer ID.
- Version: Generation or version of meter and depends on the manufacturer.
- Medium: Measured medium: 0=other, 1=Oil, 2=Electricity, 3=Gas, 4=Heat (measured at return temperature: outlet), 5=Steam, 6=HotWater, 7=Water, 8=Heat Cost Allocator, 9=Compressed Air, 10=Cooling load meter (measured at return temperature: outlet), 11=Cooling load meter (measured at flow temperature: inlet), 12=Heat (measured at flow temperature: inlet), 13=Heat/Cooling load meter, 14=Bus/System, 15=Unknown Medium, 22=Cold Water, 23=Dual Water, 24=Pressure, 25=A/D Converter.
- AccessNr: (Access Number) It is increased by one after each send data from meter.
- Status: It is used to indicate application errors. Status bit1.bit0: 0.0=No Error, 0.1=Application Busy, 1.0=Any Application Error, 1.1=Reserved.
 
- FCB flag handling: Optionally the driver can automatically change the counter of sending to individual meters (it can automatically change so called FCB flag). According to this flag the meter knows if the request is new or old (repeating). Some meters don't use this flag but some of them wouldn't sent correct data without setting the flag right. For meters and messages, where this has to be specified by the designer, there is the "FcbAttr" variable on the Data-sent page. It can be set to the following values:
 
0 = don't change the counter (it means that FCB flag is not used)
1 = the flag is changed automatically. The designer needn't care about changing the flag, the driver itself changes it.
4 = (only for special purposes) FCB=FCV=0
5 = (only for special purposes) FCB=0 and FCV=1
6 = (only for special purposes) FCB=1 and FCV=0
7 = (only for special purposes) FCB=FCV=1
 
- Non-standard messages: For special messages that don't serve for standard reading the data, the driver has preset messages ("Common meter/Initialisation of Slave (of the meter)" and "Common meter/Change Baud rate" messages) or the designer can set up the special message on the byte level ("Common meter/Byte configurated message of the send/receive type" message - for experts of the M-BUS protocol).

Recommended parameters values:

Recommended values for the Serial link parameters:
Baud rate300 Bd. This rate should be supported by all meters. Then according to used meters the rate can be increased. Next recommended rates are: 2400 Bd, 9600 Bd, 38400 Bd. Many meters can be adjusted to some rates, even when they were set to another rate. Attention: convertes often support only the rate of 9600 Bd.
Number of data bits8 (it is prescribed by M-BUS standard)
ParityEVEN (it is prescribed by M-BUS standard)
Number of stop bits1
Number of repeats after unsuccessful transmission0 (or greater). For the Sontex SUPERCAL meter is it necessary to set 1 and more (probably 2 is the best).
Timeout between receiving 2 chars100 ms (or greater)
Delay between receive-send0 ms (or greater)
Filter ECHO charsNo. It depends on M-BUS/RS232 converter.
RTS flow controllog.0
DTR flow controllog.0
Recommended values for the Ethernet parameters:
TCP/UDP port numberby converter M-BUS/Ethernet settings
Ethernet transfer typeby converter M-BUS/Ethernet settings
Description and recommended values for the Protocol parameters:
Response receipt timeout1000 ms (or greater). Only for serial link. The time (in milliseconds) the driver is waiting for the response on sending the message. If no response comes during this time, the transfer of the message is terminated (event onEndOfTransfer fires with error 24 or 66).
Note:

To read the data from meters more often than 1 minute isn't worth. If the data are read more often than 4-30 seconds (it depends on the meter), then the meter doesn't send the data.

The communication description by the PmCommData objects

The PmCommData objects can be used for this driver. For usual data transmissions it is more favourable than using the PmCommMsg object.

The variables in the PmCommData object can be of arbitrary number, type and order. The driver uses optimalised internal communication messages for reading the data from the device. All variables are read (if the Data refresh enabled configurator is enabled), when writing to the variable, only the single value is sent (if the Auto write when writing to item configurator is enabled).

In one PmCommData object, the data items can be defined (variables on the Data page or Comm data extensions) for multiple meters simultaneously.

Sometimes it may be more advantageous to let one PmCommData object represent a single meter - in such case the meter address can be defined in the "Default meter address" configurator and then the address needs not to be defined for each data itema (only the text "saD.." is defined - see the following). This way it is easier to change the meter address just on one place.

 
Description of the ItemId configurator:

The driver can transmit the data items, that have the ItemId configurator set to a text, telling the driver, how to receive or send the items. The text need not to be written, it can be assembled by the button to the right of the ItemId configurator. Macro expression can be used for input (it is evaluated while the application is launching).

Examples of identifier syntax:

sa1.Ia2.Index3
sa3.Ia2.Index3.c0
sa44.M1.TemperFor
sa254.M1.TemperFor.max.S3.T2.c0
saD.M1.MeterManufac

The text always begin with "sa" (Slave/Station Address) followed by a decimal address of the meter. The "D" (=default) character can be used instead of specific address, which means that the meter address is taken from the "Default meter address" configurator.

The identifier following after the comma defines the area of desired data (defines the type of M-BUS message, causing the meter to send the data from desired area). The possible values are as follows:

M1 = (Request UD2, FCB=0, FCV=1) The first standard area of the meter. Supported by majority of meters. The main actual values of the meter are usually present here.
M2 = (Request UD2, FCB=1, FCV=1) The second standard area of the meter. Usually not supported by the meters, or the same data as for the first are is sent.
Ia = (Danfoss-INFOCAL type) This type is used for Danfoss meters (Ia=a type indexing). There is too much data to fit into the standard area. For obtaining the additional data a special message must be sent with the area index (the index is defined after the "Ia" text) and the meter sends the data from the selcted area. See : Danfoss INFOCAL-5
Ib = (Sontex-SUPERCAL type) The same situation as for "Ia", but used for Sontex meters. The special message syntax is different but the principle is similar. See : Sontex SUPERCAL
Ic = (SCYLAR type) The same situation as for "Ia", but used for SCYLAR meters. The special message syntax is different but the principle is similar. See : SCYLAR calorimetric meter

The identifier following the comma defines the desired value in selected area. The meter sends all the data from selected area simultaneously. The desired value can be identified by Index or by value specification (additional options):

 
Index - Behind the identifier the value index is defined (zero-based index) in the area. This way each standard value in the area can me identified. Suitable for basic values that cannot be defined by following meaning specification. The following specifications do not cover all the possibilities of M-BUS communication (the MICROSYS, spol. s r.o. company can add additional specifications into the driver).
Energy - Energy [GJ]
Power - Power [kW]
Pressure - Pressure [mbar]
Volume - Volume [m3]
Mass - Mass [kg]
FlowVolume - Volume Flow [m3/h]
FlowMass - Mass Flow [kg/h]
TemperFor - Forward temperature [°C]
TemperRet - Return temperature [°C]
TemperDif - Temperature difference [°C]
TemperExt - External temperature [°C]
Voltage - Electric Voltage [V]
Current - Electric Current [A]
TimeOn - On time [day]
TimeOper - Operation time [day]
TimeDate - Date [date]
FabricNum - Meter fabric number
ErrorFlags - Error flags
ErrorMask - Error mask
CumulCount - Cumulation counter
MeterIdent - Customer number, which runs from 00000000 to 99999999. It can be preset at fabrication time with a unique number, but could be changeable afterwards.
MeterManufac - Manufacturer ID.
MeterVersion - Generation or version of meter and depends on the manufacturer.
MeterMedium - Measured medium: 0=other, 1=Oil, 2=Electricity, 3=Gas, 4=Heat (measured at return temperature: outlet), 5=Steam, 6=HotWater, 7=Water, 8=Heat Cost Allocator, 9=Compressed Air, 10=Cooling load meter (measured at return temperature: outlet), 11=Cooling load meter (measured at flow temperature: inlet), 12=Heat (measured at flow temperature: inlet), 13=Heat/Cooling load meter, 14=Bus/System, 15=Unknown Medium, 22=Cold Water, 23=Dual Water, 24=Pressure, 25=A/D Converter.
 

The identifiers following the comma define more specific values and are optional.

max = Maximum value
min = Minimum value
err = Value during error state
S = Item with specified Storage number. "S0" means the curent value, "S1" is a value in storage1, possibly could be e.g. the value from previous mont, etc. If the S character is not defined, then the system will search the the received message for the first occurence of the desired item regardless on the memory location.
T = Item with specified Tariff number. "T0" means current tariff (or "no tariff"), "T1" means the value according to the first tariff, etc. If the T character is not defined, then the system will search the the received message for the first occurence of the desired item regardless on the memory tariff.
c0 = Do not convert to standard physical units (see   Physical units conversion).
 
Description of the PmCommData > Parameters > Special Parameters configurator:
Default meter address The address defined here can be used for definitions in the ItemId configurator for the variables in this object (i.e. the variables on the Data page or in the Comm data extensions). The address can be defined in ItemId:
- as e.g. sa1... - then the value will be read from the meter with address 1.
- or saD... - the "D" character means default, and the address is taken from this configurator.

The communication description by the PmCommMsg objects

The PmCommMsg obejcts can be used for all special communications, that cannot be executed by the PmCommData object.
Description of the PmCommMsg > Parameters > Message parameters configurator:
Message parameters has mostly only two configurators:
Meter type here the concrete meter or Common meter can be chosen, then the messages can be set up on a common level.
Message typehere the required message type of a meter can be chosen.

A list of meters and configurations

Now the list of meter types and their messages follows:

Common meter

This type is meant for the common configuration of messages, by which is it possible to communicate with almost every meter.
 
Preset message types for PmCommMsg object:
- Initialisation of Slave (of the meter):

Initialization of the meter (message type SND_NKE). It serves first of all for the initialization of control so called FCB flag (see FCB flag handling) that serves to the meter as the information about the right sequence of the sent messages. It is recommended to call this message when the application starts and also when an communication error appears (see the pEvent.Error parameter in the PmCommMsg.onEndOfTransfer event).

The address of the meter can be set exactly (value 0 to 250) - then each meter confirms (responds) whether it took due note of the command. It is suitable also to use the universal address 255. Then all connected meters are initialized at once without any confirmations (see Address).

- Reset of the application layer in the Slave (in the meter):

Sending of this message to the meter causes reset of application variables in the meter. What actually happens in the meter depends only on the meter. Majority of the following meters doesn't need this message. This message is used by: Sontex SUPERCAL.

- Selection of a slave station by identification number:

This message will turn the slave station into so called selected) state. After the station is turned into the selected state, then it communicates as if its address was 253 (see Address), until any other station is turned into the selected state. The station is selected by so called secondary address, which is defined by following: IdentNr = identification number of the meter, Manufac = identification number of the manufacturer, Version = meter version Medium = measured medium. These items are defined on the Data-sent page and can be received from the meters e.g. by the "Common meter/Reading of generally configurated data" message when starting up the meter.

Addressing stations by the secondary address is handy for e.g.:

- complex systems where 250 addresses are insufficient or
- for stations that are replaced very often and therefore the primary addresses may not be unique.

- Change Baud rate:

Using this message won't be probably needed in most cases because the rate can be set directly in the meter and it is not advisable to change it during run of the application. Many meters can also adjust themselves to more baude rates, even if they were set to another rate.

- Reading of generally configurated data:

Unique message determined for reading data from unknown meters. When reading standard data from a meter, not only values are sent from the meter in the response but also flags of the value type (if it goes about flow, energy, power, etc.), the unit type (e.g. if it goeas about kWh,J,0.001kWh..), flags about the tarif or memory number, etc. If you know the meaning of the values in the response from the meter, then you can set up and name items, into which the received values are stored, on the Data-received page by yourself. But if you don't know what the meter sends, then this message can help you as well! Namely it is possible to set the value 16 into the "DataAttr" variable on the Data-sent page of this message. This flag will cause that after receiving data from the meter, the information about the data (for example, the 1st value is energy, the 2nd is flow, etc.) are written into the INFO system in the /COMM/MBus/Log item. From this log you can set the data of the object (and then remove the value 16 from the "DataAttr" variable).

The driver itself creates variables on the Data-received page. But it creates only the first variables for Header of M-BUS message and one variable "Data1". You can change this variable and create following variables after it. But mostly it is advisable to set variables to the Single data type. Then the stored value is converted into the appropriate technological unit. It is also possible to set the Date data type - the value is converted into the calendar date or the Long data type - the value is not converted (for variables that haven't the unit or if you don't want to convert it). Then the conversion is made according to the table:

Except the standard data the meter can send the specific data that don't have the flag about the meaning and the unit any more. These data are always located after the standard data. If you know the meaning of these data (e.g. from the documentation of the meter), then even these data can be received in the message. It is sufficient to define next variables of corresponding types (Byte, Integer, Long) after already created variables on the Data-received page and then the value from the received message is stored in the corresponding variable without any conversion. To be more specific, it is possible to define if the specific data are stored in the message in binary form (no conversion is needed) or in BCD code. If the specific data are in BCD code, then you can already mentioned variable "DataAttr" set to 1, and the driver converts the value into the binary form (it would be also possible not to convert it and to use the Pm.TransformValue method but it would be much more complicated).

Some meters send data in more messages in the exact sequence. Even receiving the data can be done by this type of the message. You must configure more PmCommMsg objects to individual messages, fill it the data respectively and then send the messages one after the other (by the PmCommMsg.Run method). For these types of transfers the meter uses FCB flags (see FCB flag handling) and that's why the "FcbAttr" variable has to be set to 1. By this way some meters solve first of all reading the history. If you didn't set "FcbAttr" to 1, you would have read only the 1st message (where there are current values only) all the time. If "FcbAttr" is set to 1, then the meter sends all messages it has - and sometimes it has really lots of them. For example the ABB SVM meter has stored historical data in 128 messages (fortunately of the same type, so that it is possible to read them by one object - see Example).

- Byte configurated message of the send/receive type:

This message is meant for designers who know the M-BUS protocol. It is possible to configure the message (separatelly for receiving and separatelly for sending) from the "SingleCharacter", "ShortFrame", "ControlFrame" a "LongFrame" types, which are 4 possible message types of the protocol on the lowest level with setting the CField, AField and CIField values by the designer and with setting the user data. It is also possible to select the message type "Pure Bytes", which allows to send/receive the data withou any transformation of the protocol.

This type of the message will be used very rarely for special and test purposes.

Kamstrup MULTICAL

Kamstrup MULTICAL Meters MULTICAL (801, 601, 401, III, Compact, .. types) from the Kamstrup company. Supported baud rate is 300/2400 Bd.
 
If only some selected values are to be received from the meter, then it is handy to use the PmCommData object. In this object (or by the Comm data extension) the variables for desired values can be defined. Teh value of the ItemId configurator can be e.g.: "sa254.M1.Energy", "sa1.M1.TemperFor" etc.
 
Preset message types for PmCommMsg object:
- Reading of measured values (MULTICAL): older meter version without type definition

Following values fill the Data-received page: Header of M-BUS message, Energy (accumulated energy [GJ]), Volume (accumulated volume [m3]), TimeCounter (hour counter [day]), TemperForward (Forward temperature [C]), TemperReturn (Return temperature [C]), TemperDiff (Temperature difference [C]), Power (instantaneous power [kW]), Flow (instantaneous flow [m3/h]), ReadEnergy (last energy reading [GJ]), ReadVolume (last volume reading [m3]), ReadDate (date and time of last reading), Date (current date and time) and other values (PeakPower, INFO, TAR2/3, TL2/3, InA/B, ProgramNo, Config, m3xTfor/ret, CoolEnergy, YearsPeekPower).

- Reading of measured values (MULTICAL III / MULTICAL Compact / MULTICAL 401-66-0S):

The same as last message, only without last 4 values (without m3xTfor/ret, CoolEnergy, YearsPeekPower).

- Reading of measured values (MULTICAL 401-66-0P / MULTICAL 601 / MULTICAL 801):

The data items are similar as for the previous message. There can be additional items, e.g. FabricNr (Meter fabric number), PowerMax, FlowMax etc.

ABB SVM

ABBSVM F4 The calorimetrical counter ABB F4 from the SVM company. serves for the invoicing measurement of the heat or cool energy. It contains a big number of read values and historical data. The number of messages depends on the presence of extended cards (card for measuring maxima of flows and powers, rate card).

Reading all messages (including history, maxima, etc.) it more demanding action because the sequence of individual messages has to be kept. An inspiration is the best, see Example of communication by M-BUS protocol. In the reading mode of all messages there has to be set the variable FcbAttr to 1 (see FCB flag handling).

 
If only some selected values are to be received from the meter, then it is handy to use the PmCommData object. In this object (or by the Comm data extension) the variables for desired values can be defined. Teh value of the ItemId configurator can be e.g.: "sa254.M1.Energy", "sa1.M1.TemperFor" etc.

The PmCommData object can be used only for reading the current state (only values that can be received by the "Reading of measured values (F4 meter)" message). The PmCommMsg object must be used for reading the history data.

 
Preset message types for PmCommMsg object:
- Reading of measured values (F4 meter):

This is the basic message for reading the data. If the variable FcbAttr is set to 0 in this message, then reading only these data is required and the next following messages cannot be called. If it is set to 1, then the next messages have to be called.

Following values fill the Data-received page: Header of M-BUS message, Energy (accumulated energy [GJ]), Volume (accumulated volume for energy calculation [m3]), VolumeWaterMeter (accumulated volume of watermeter [m3]), TemperForward (Forward temperature [C]), TemperReturn (Return temperature [C]), TemperDiff (Temperature difference [C]), OnTime (number of days), OperTime (number of days), Flow (instantaneous flow [m3/h]), Power (instantaneous power [kW]), Date (current date and time), PulseCount1 (pulse counter, input 1), PulseCount2 (pulse counter, input 2).

- Reading of values history (F4 meter):

This message has to be called 37-times one after the other and the history of 37 monthly reading is sequentially read.

Following values fill the Data-received page: Header of M-BUS message, Energy (accumulated energy [GJ]), Volume (accumulated volume for energy calculation [m3]), VolumeWaterMeter (accumulated volume of watermeter [m3]), PulseCount1 (accumulated pulse number, input 1), PulseCount2 (accumulated pulse number, input 2), StorageNr (index of history, 3-39), Date (history date and time).

- Reading of maximum values history (F4 meter):

The message can be called only when the meter includes the card for measuring maxima of flows and powers. This message has to be called 128-times one after the other and the history of maxima of 6-hours (the number of histories and the range of hours can be set even in a different way) is sequentially read.

Following values fill the Data-received page: Header of M-BUS message, StorageNr (index of history, 1-128), Date (history date and time), PowerMax (power maximum [kW]), PowerDate (power maximum date and time), FlowMax (flow maximum [m3/h]), FlowDate (flow maximum date and time), TemperForwardMax (forward temperature maximum [C]), TemperForwardDate (forward temperature maximum date and time).

Danfoss INFOCAL-5

Danfoss INFOCAL5 The meter INFOCAL-5 from the Danfoss company. It was designed for the program of SONOCAL devices to do the invoicing measurement of the heat or cool energy (for temperatures up to 170 C and with the flow up to 25000 m3/h). It has the memory for 24 months. The supported baud rate is 300/600/1200/2400 Bd for a serial port and 300/600 Bd for an optical port.

Note: The meter returns an error flag in the Error variable (see further). It goes about bit flags with the following meaning:

bit0/1 = error on TemperForward/TemperReturn for more than 1 hour
bit2 = internal EEPROM error
bit3 = TemperDiff but not flow for more than 48 hours
bit4 = Overflow error-Flow1 Input>Qsmax)

 
If only some selected values are to be received from the meter, then it is handy to use the PmCommData object. In this object (or by the Comm data extension) the variables for desired values can be defined. Teh value of the ItemId configurator can be e.g.: "sa254.M1.Energy", "sa1.M1.TemperFor" etc.

For reading the monthly values, the area identifier "Ia" can be used followed by month index (128=current month, 129=previous month, .. 152=month two years ago) . For example "sa254.Ia128.Energy", "sa254.Ia129.Energy" etc.

 
Preset message types for PmCommMsg object:
- Reading of measured values:

Following values fill the Data-received page: Header of M-BUS message, CustomerNr (customer identification number), Energy (accumulated energy [GJ]), Volume (accumulated volume [m3]), Power (instantaneous power [kW]), Flow (instantaneous flow [m3/h]), TemperForward (Forward temperature [C]), TemperReturn (Return temperature [C]), TemperDiff (Temperature difference [C]), OnTime (number of days), Date (current date and time), Error (see note above).

- Reading of Monthly Report:

Following values fill the Data-sent page:, Address (meter address), MonthIndex ( month index (128=current month, 129=previous month, .. 152=month two years ago) )

Following values fill the Data-received page: Header of M-BUS message, CustomerNr (customer identification number), Energy (accumulated energy [GJ]), Volume (accumulated volume [m3]), Tariff1 (energy[GJ] or OnTime[day]), Tariff2 (energy[GJ] or OnTime[day]), CounterA (energy or TotalVolume), CounterB (energy or TotalVolume), PeekValue (power[kW] or flow[m3/h]), OnTime (number of days), Date (history date and time), Error (see note above), MonthIndex (month index),

Landis ULTRAHEAT

Landis ULTRAHEAT The heat meter ULTRAHEAT from the Landis company. The supported baud rate is 300/1200/2400/4800 Bd, the automatic recognition of the baud rate (can be switched off).
 
If only some selected values are to be received from the meter, then it is handy to use the PmCommData object. In this object (or by the Comm data extension) the variables for desired values can be defined. Teh value of the ItemId configurator can be e.g.: "sa254.M1.Energy", "sa1.M1.TemperFor" etc.
 
Preset message types for PmCommMsg object:
- Reading of measured values:

Following values fill the Data-received page: Header of M-BUS message, ActualityDuration (actuality duration [sec]), ResponseDuration (response duration [sec]), Energy (accumulated energy [GJ]), Volume (accumulated volume [m3]), Power (instantaneous power [kW]), Flow (instantaneous flow [m3/h]), TemperForward (Forward temperature [C]), TemperReturn (Return temperature [C]), TemperDiff (Temperature difference [C]), VolumeMem1 (accumulated volume [m3] from last year), EnergyMem1 (accumulated energy [GJ] from last year), FabricNr (Meter fabric number), RespDurationTar1 (response duration [sec], Tariff=1), PowerMaxTar1 (maximum power [kW], Tariff=1), PowerMaxMem1Tar1 (maximum power [kW] from last year, Tariff=1), FlowMaxTar1 (maximum flow [m3/h]), Tariff=1), TemperForMaxTar1 (maximum Forward temperature [C], Tariff=1), TemperRetMaxTar1 (maximum Return temperature [C], Tariff=1), OnTime (number of days), OnTimeErr (number of days in error), OnTimeErrMem1 (number of days in error from last year), DataReading (date and time of reading, year is not available), EnergyTar2 / EnergyTar3 / EnergyTar4 (accumulated energy [GJ], Tariff=2/3/4), EnergyMem1Tar2 / EnergyMem1Tar3 / EnergyMem1Tar4 (accumulated energy [GJ] from last year, Tariff=2/3/4), TemperForMaxMem2Tar1 (maximum Forward temperature [C], 1.value from last year, Tariff=1), TemperRetMaxMem2Tar1 (maximum Return temperature [C], 1.value from last year, Tariff=1), FlowMaxMem2Tar1 (maximum flow [m3/h], 1.value from last year, Tariff=1), PowerMaxMem2Tar1 (maximum power [kW], 1.value from last year, Tariff=1), OnTimeErrMem2 (number of days in error, 1.value from last year), EnergyMem2 / EnergyMem2Tar2 / EnergyMem2Tar3 / EnergyMem2Tar4 (accumulated energy [GJ], 1.value from last year, Tariff=0/2/3/4), VolumeMem2 (accumulated volume [m3], 1.value from last year), Date (meter date and time), Microprogram (version), D0 (extended byte, perhaps always 0), D1 (extended byte, perhaps always 0), D2 (extended byte, 0.bit=1=preadmonition, 7.bit=0/1=instalation in return/forward line).

- Writing of Date and Time:

By this simple message it is possible to set the time in the meter. The date and the time is set in the "Date" variable on the Data-sent page.

Sontex SUPERCAL

SONTEX Supercal-531 The meter SUPERCAL 531 from the Sontex company. It cannot do the automatic recognition of the baud rate.
 
From the communication point of view this meter is worse in the sense that it is "brought to sleep" (probably to save batteries) and so it is necessary to wake it up by the communication. The most simple solution is to set Number of repeats after unsuccessful transmission to the value 1 (or more, the best is 2) and Response receipt timeout to the value 500 to 1000 ms. So the first sent message will cause "waking up" the meter and the next repeated messages are then processed correctly.
 
The meter has a big number of various message types that read the data from the meter. The exact content of the messages can differ according to the configuration of the meter and that's why the driver hasn't presets for reading the data. All data messages can be read:
- either by the PmCommData object. In the ItemId configurator value the "Ib" are can be used followed by the message index. For example "sa254.Ib0.Energy", "sa254.Ib1.Power" etc.
- or by the PmCommMsg object with the "Common meter/Reading of generally configurated data" message type. These messages can be read sequentially one after the other (if the variable "FcbAttr" is set to 1).

How to configure the data can be found out either from the documentation to the meter (from the M-BUS_frames_531.xsl file where it is described) or see Example of communication by M-BUS protocol.

 
Preset message types for PmCommMsg object:
- Data read selection (Index Telegram):

This message is meant for setting which data message has to be read next. It is designed only for the PmCommMsg object, in the PmCommData object, the message index is defined after the "Ib" identifier. If this message is not used, then individual data messages would be read sequentially (with the variable "FcbAttr" set to 1). After reading, for example, the 23rd message, the 22 previous messages would have been read. But by using the "Data read selection message it is possible to decide, what is the next read data message. For reading the 23rd data message, the walkthrough is as follows:

- move the message "Data read selection" with the variable Index set to 23 (it was checked that not the value 23 but the value 23+n, where n=2).
- and finally move the requested data message by means of the common message Common meter/Reading of generally configurated data.

For the sample of this tranfer, see Example of communication by M-BUS protocol.

CALMEX VKP calorimetric meter

CALMEX VKP is a calorimetric meter produced by the Sensus Metering Systems, a.s company (formerly PREMEX-IN, Invensys metering system), Stará Turá, Slovakia.
 
The meter has only one message type. The data in this message are not in standard M-BUS form (do not have DIF/VIF) therefore the data is obtained according to the meter documentation. It is not possible to use the PmCommData object for this meter because the message does not contain any standard values.
 
Preset message types for PmCommMsg object:
- Reading of measured values:

Following values fill the Data-received page: Header of M-BUS message (only Addres and IdentNr) followed by: heat quantity (Q), heat performance (P), flow volume (V), flow rate (F), Forward temperature (T1), Return temperature (T2), etc. (all values contained in the message are received).

Because of the non-standard data the values are not counted automaticaly in standard units. The information about the measurement units are stored in additional data (e.g. K1Q, K1P atd.). The received data is described in Note in automaticaly generated variables.

SCYLAR calorimetric meter

SCYLAR II is a calorimetric meter, manufactured by the Hydrometer GmbH company (Germany). In the Czech Republic, this meters are manufactured by Ulitep spol. s r.o., Ústí nad Labem, www.ulitep.cz named SKALAR III (hot water meter).
 
If only some selected values are to be received from the meter, then it is handy to use the PmCommData object. In this object (or by the Comm data extension) the variables for desired values can be defined. Teh value of the ItemId configurator can be e.g.: "sa254.M1.Energy", "sa1.M1.TemperFor" etc.

The meter contains additional values that are not contained in the standard message, i.e. in the "M1" area. For obtaining these additional values, the "Ic" area can be used followed by the message number. For example "sa254.Ic15.Energy", "sa1.Ic4.TemperFor" etc.

© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice