Comparing DLMS/COSEM

There are four different DLMS/COSEM stacks that we know.
Of course there are few more, but I do not count fancy Powerpoint presentations now. We are talking REAL reading. DLMS/COSEM stacks are:

We have compared several stacks and you can see results below.

Gurux jDLMS iCube Kalki
Java Support X X X
C# Support X X
ANSI C++ Support X X X
Easy to use X
Strong ecosystem X
Open Source Company X X
CPU Load Optimizing X
Reading table in parts if read fails. X

Different programming languages

Software developers like to use programming languages that they know.
Java developer do not want to start develop with C++.
Learning point for new programming language might be high and learning takes lot of time and money.
Using software tools that programmers know programming is fast and saves money.

Easy to use

DLMS/COSEM is not easy protocol. You do not just send few bytes and get response like ModBus.
With easy to use we mean that you can read complex data structures like ListeningWindows.
You do not want to parse complex objects by yourself.


//Read Association view and find GXDLMSAutoAnswer
object first. GXDLMSAutoAnswer item = Client.Object.FindByLN("0.0.2.2.0.255", ObjectType.AutoAnswer);
//Window time is from 6am to 8am.
item.ListeningWindow.Add(new KeyValuePair(new GXDateTime(-1, -1, -1, 6, -1, -1, -1), new GXDateTime(-1, -1, -1, 8, -1, -1, -1))); ReadDLMSPacket(Client.Write(item, 3));

Strong ecosystem

Try to google how popular we are globally.
Start google and write DLMS/COSEM. You will find us in the top 10.
Usually after DLMS organisation and Wikipedia and I can't believe that we can beat them. :-)

In our Open Source community (Ecosystem) we have thousands of members and more is coming every day.

Strong ecosystem is very important because you are not alone if you have questions.
If you have problems you can write them to Gurux Forum and get support.

Open Source

When you have source codes you can audit them and you do not need to pay anything.
If there are issues you can try to fix them by yourself and finding problem is much easier.
More Gurux Open Source policy you can find
here.

CPU Load Optimization

Typically you have thousand of rows in in your Load Profile table and you need to read them.
With any stack you can read all the data from the meter.
Problems arise after reading is done, and you will start to parse data.
Any other stack is very likely to cause a huge CPU load like picture below.

With TryGetValue -method you can get new rows and add them to the DB while you are reading new data from the meter.
In this way your CPU load is lower all the time and you can read more meters simultaneously.

Reading table in parts if read fails.

Connection might break when you are using communication channel that is not reliable.
With terminal connection this happens often. After you have read some data connection fails.
This is a big problem if you try to read lots of data for example Load profile.

With TryGetValue -method you can append read rows to the DB while you are reading.
If connection breaks you know what was the last time value and you can ask meter to continue from that time. You do not need to start reading from a start. This saves time and you are able to read your meter using poor data connection.

If you have any ideas or questions you can contact us here.