XmlDemo (DLMS Reader)

Screen shot (click to enlarge)

XmlDemo is a simple ''DLMS reader'' of values stored in a COSEM/DLMS meter. In the upper pane, it displays the ''objects'' hosted by the meter (COSEM instances), each with a logical name (OBIS code), class-id  and description. The lower pane shows the values displayed in xml format. The log view shows the raw protocol data sent (green) and received (red) with the corresponding xml translation. XmlDemo supports both the TCP and the HDLC communication profiles. XmlDemo is build with the code of the COSEM/DLMS package components: xmlpdu for the xml presentation, ezhdlc for the HDLC profile and wrapper for the TCP profile.

If you are not familiar with DLMS/COSEM please read first our survival kit document.

Here is a short user's guide: Steps 1, 2 and 3 must be done for each association in each device. Then, step 4 is the normal usage.

1 : Select ''Show/Settings...''

Select either the TCP profile or the HDLC profile.

For the TCP profile, set the Server IP:Port, for example

For the HDLC profile, set a COM port, and (if needed) set a physical address, else let it blank. The details of the HDLC addressing are described here (see HDLC). In short: for 1 byte addressing, let the physical address blank; else set the required value. Check Mode E if required (mostly with optical probes), else (when the channel uses direct HDLC) set Baud.

Set the Referencing model: LN for logical name referencing, supported by almost all meters or SN for short name referencing.

Set the Timeouts. Connect timeout (in ms) is the maximum time allowed to ''connect'' to the meter (for example 2000, more for TCP). Response timeout (in ms) is the maximum time allowed to receive a response to a request (for example 2000, more for TCP).

Set the Addresses. For a first try, set the (mandatory) public client address (16) else set the required address. For server address set 1, which is the mandatory management-logical-device, else set another value as needed.

When the client is public, then the association is established without access security (NO_SECURITY). Otherwise, the access security must be either LOW_SECURITY (password) or one of the HIGH_SECURITY variants (4-passes authentication). XmlDemo supports NO_SECURITY and LOW_SECURITY in which case the password is set in the Psw field.

Let the Object-list file field blank and close the Settings dialog.

2 : Select ''Do/Connect''

This opens the HDLC or the TCP connection and sends an AssociationRequest to the meter and expects an AssociationResponse indicating ''success''. The log (Show/Log...) displays the details of the exchange. If the association cannot be established, then an error message is displayed. It is not possible to proceed until an association can be established, i.e. the settings must be correct.

3 : Select "Do/Read object-list"

The upper pane is populated only when XmlDemo knows the objects available in the meter. The object-list must be read only once per association. When the object-list is read, a save dialog is opened that requires a file name to save the list to a file.

When the Object-list file is saved, re-open the settings dialog and check that the Object-list file is correct, then click Save Settings... to save all these settings to a file.

Previously saved settings can be retrieved using Load Settings...

4 : Normal usage

On startup, XmlDemo automatically reloads the last settings. The object-list is shown in the upper pane.

Then, clicking (right or left) into the logical name column in the upper pane, displays a pop-up menu with the names of the attributes available in the selected instance. Clicking an attribute, reads it and displays its value in xml format into the lower pane.

The object-list can be sorted by clicking on the column headers.

Please note:

Don't hesitate to report any issue or suggestion to the e-mail address below.

XmlDemo displays the descriptions of the COSEM instances according to the official DLMS/UA "Object_defs_vx.y'' document. We can deliver a dll that just does that: from an OBIS code, retrieve the corresponding description.