The meter SUPERCAL 531
from the Sontex
company. It cannot do the automatic recognition of the baud rate.
For this communication in the PROMOTIC system can be used: PmMBus - Driver for communication by the M-BUS protocol
For easy integration of this driver into the application it is handy to use:
In order to conserve battery power, these meters go to sleep mode and so it is necessary to wake it up before the communication. The most simple solution is to set Number of repeats after unsuccessful transmission
configurator to the value 1 (or more, probably the best value is 2) and Response receipt timeout
to the value from 500 to 1000 ms. So the first sent message will wake up the meter and the following 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 preconfigurations 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"
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).
Preset message types for PmCommMsg
- 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).