I'm using GXDLMSDirector 8.2.2106.1501
I can connect to most meters and can read everything properly.
But from one manufacturer even though I can read load profile.
But when I try to read billing data.
It's stuck for a while then the "Data Block Unavailable' error is thrown.
Here is the log
9:44:49 AM Reading profile generic data 1.0.98.1.0.255
7E A0 2C 03 0B 1E E7 CF E6 E6 00 C0 01 C1 00 07 01 00 62 01 00 FF 02 01 02 02 04 06 00 00 00 01 06 00 00 00 01 12 00 01 12 00 00 36 D2 7E
9:44:49 AM
7E A0 11 0B 03 10 E6 E9 E6 E7 00 C4 01 C1 01 0E 96 59 7E
Gurux.DLMS.GXDLMSException: Access Error : Data Block Unavailable.
at GXDLMSDirector.GXDLMSCommunicator.Read(Object sender, GXDLMSObject obj, Boolean forceRead)
at GXDLMSDirector.MainForm.Read(Object sender, GXAsyncWork work, Object[] parameters)
Meter returns Data Block Unavailable error. Can you read data if you give start and end times or if you read All data? All meters don't implement read by start and end index.
I think this meter does implement index-base reading.
I did Wireshark to capture what does its own software do while reading billing data.
Here is what I've found.
Its own software's request
7E A0 2C 03 0B 3C F7 CD E6 E6 00 C0 01 C1 00 07
01 00 62 01 00 FF 02 01 02 02 04 06 00 00 00 02 06 00 00 00 02 12 00 01 12 00 28 FC 50 7E
The obvious different one is column count.
Which I'm going to use GXDLMSClient to control this value to make the request looks like theirs.
But I'm not sure about the ??? ones. Are they something controllable.
OK, I've managed to resolve the problems already.
It looks like that meter has defined hundreds of capture objects.
But it actually has few values out of those.
So if we try to read every columns it will report "Data Block Unavailable".
To tackle this, I have to explicitly specify columns to read when calling GXDLMSClient.ReadRowsByEntry and everything works fine now.
I basically would use GXDLMSDirector to test new meter before start coding with it.
So it would be nice if GXDLMSDirector would have an option to select columns to read too.
You are right. The difference between the messages is column count. Meter doesn't support column end index 0 and it's wrong and should be fixed for the meter.
We are not planning to add support for specifying columns at the moment, but you can modify GXDLMSDirector by settings the end column when you read the data from the meter.
Hi,
Hi,
Meter returns Data Block Unavailable error. Can you read data if you give start and end times or if you read All data? All meters don't implement read by start and end index.
BR,
Mikko
Thanks for your reply, Mikko.
Thanks for your reply, Mikko.
I think this meter does implement index-base reading.
I did Wireshark to capture what does its own software do while reading billing data.
Here is what I've found.
Its own software's request
7E A0 2C 03 0B 3C F7 CD E6 E6 00 C0 01 C1 00 07
01 00 62 01 00 FF 02 01 02 02 04 06 00 00 00 02 06 00 00 00 02 12 00 01 12 00 28 FC 50 7E
GXDLMSDirector's request
7E A0 2C 03 0B 98 D9 2E E6 E6 00 C0 01 C1 00 07
01 00 62 01 00 FF 02 01 02 02 04 06 00 00 00 02 06 00 00 00 02 12 00 01 12 00 00 B6 FD 7E
I tried to break down to see what are the differents. (show in asterisk)
7E A0 2C 03 0B
*98 D9 2E ???
E6 E6
00 // InvokeId
C0 // Command (GetRequest)
01 // CommandType (Normal)
C1
// Read (attrDescriptor 10 bytes)
00 07 // profile generic
01 00 62 01 00 FF // obis
02 //attr
01 //access selection
// ReadRowsByEntry (19 bytes)
02 02 04
06 00 00 00 02 //start index
06 00 00 00 02 //end index
12 00 01 // column index
*12 00 00 // column count
*36 D2 ???
7E
The obvious different one is column count.
Which I'm going to use GXDLMSClient to control this value to make the request looks like theirs.
But I'm not sure about the ??? ones. Are they something controllable.
OK, I've managed to resolved
OK, I've managed to resolve the problems already.
It looks like that meter has defined hundreds of capture objects.
But it actually has few values out of those.
So if we try to read every columns it will report "Data Block Unavailable".
To tackle this, I have to explicitly specify columns to read when calling GXDLMSClient.ReadRowsByEntry and everything works fine now.
I basically would use GXDLMSDirector to test new meter before start coding with it.
So it would be nice if GXDLMSDirector would have an option to select columns to read too.
Thanks for your regards.
Hi,
Hi,
You are right. The difference between the messages is column count. Meter doesn't support column end index 0 and it's wrong and should be fixed for the meter.
We are not planning to add support for specifying columns at the moment, but you can modify GXDLMSDirector by settings the end column when you read the data from the meter.
BR,
Mikko