In the class GXDLMSProfileGeneric there is an error. When the attribute 2 is requested by entry, the class parses the parameters as the start row and the number of rows, but should, as the start row and the end row of the requested range of records.
Source: draft IEC 62056-6-2:2022
I have verified this and ReadRowsByEntry will count the to_entry from the index and count.
May I ask what programming language you are using and have you verified this?
Hi,
I am writing an implementation for a recloser with commercial electricity metering functions. The question is how it is implemented in the CGXDLMSProfileGeneric class. When accessing an attribute with Selective Access, it should be passed as parameters not the number of the initial record and the quantity, but the number of the initial record and the number of the final record. For the value of the final record, a value of 0 is provided. Then all records from the initial to the last in the buffer should be returned. And you have implemented both on the client and on the server class side the transmission of parameters: the initial record, the number of records, which is incorrect. And it will work incorrectly with third-party clients.
Example:
According to the standard, the client requests records from 2 to 4 and waits for the return of 3 records from the buffer, and according to your logic, 4 records will be returned to him.
Value of Zero was not in the DLMS standard when this was implemented. Zero value is added later for the DLMS standard and that is the reason why index and count and used as a parameter.
It's true, that value zero can be used as an to_entry parameter. I'll think should there be another function for this. In the meantime, you can simply use a very high count value. Meter will return only rows that are in the buffer.
Hi,
Hi,
I have verified this and ReadRowsByEntry will count the to_entry from the index and count.
May I ask what programming language you are using and have you verified this?
BR,
Mikko
Hi,
Hi,
I am writing an implementation for a recloser with commercial electricity metering functions. The question is how it is implemented in the CGXDLMSProfileGeneric class. When accessing an attribute with Selective Access, it should be passed as parameters not the number of the initial record and the quantity, but the number of the initial record and the number of the final record. For the value of the final record, a value of 0 is provided. Then all records from the initial to the last in the buffer should be returned. And you have implemented both on the client and on the server class side the transmission of parameters: the initial record, the number of records, which is incorrect. And it will work incorrectly with third-party clients.
Example:
According to the standard, the client requests records from 2 to 4 and waits for the return of 3 records from the buffer, and according to your logic, 4 records will be returned to him.
Hi,
Hi,
Value of Zero was not in the DLMS standard when this was implemented. Zero value is added later for the DLMS standard and that is the reason why index and count and used as a parameter.
It's true, that value zero can be used as an to_entry parameter. I'll think should there be another function for this. In the meantime, you can simply use a very high count value. Meter will return only rows that are in the buffer.
BR,
Mikko
Hi,
Hi,
I checked this from the source code and if the count is zero it's added to_entry as zero. So this is already taken care of.
BR,
Mikko