We are creating some profile generic for storing the billing values (0-0:98.1.1.255 and 0-0:98.1.1.255). These profiles have to capture respectively 31 and 82 objects. So our main request is to be able to support profile generic with 31 or 82 columns.
1- We created the above profile with their corresponding capture objects (gxTarget CAPTURE_OBJECT[31/82] = { 0 })
2- We connected with the client and requested to read the list of objects. When it is time to get the profile generic columns of these 2 profiles, it is giving "Access Error: device reports a hardware fault" (check the picture)
We followed the source of the error. In fact, when reading the profile it goes :
-> int cosem_getValue(dlmsSettings* settings,gxValueEventArg* e)
-> int cosem_getProfileGeneric(dlmsSettings* settings,gxValueEventArg* e)
-> with e->indexx == 3 -> getColumns(settings, &object->captureObjects, e->value.byteArr, e)
-> ret = bb_capacity(ba, (list->size * 19) + 2)
This function is returning ret != 0 and it is giving the hardware fault error
The parameter "ba" is equal to "e->value.byteArr" and has a capacity always fixed to 512. First question, why is it fixed to 512 can we change this value if yes how?
The capacity maximum capacity is limited to this equation capacitiy = (list->size * 19) + 2 = 512
which give us list->size = maximum 26 columns. We thought that these equations are limiting the number of columns to 26 and are not letting the support of the 31 and 82 columns, are we right?
If yes, can we change this equation (list->size * 19) + 2 and replace for example 19 by 6 so the maximum supported columns will be 85? or this big number of columns is not supported on the client side? (We tried and it worked but is it correct or will it have negative impact somehow?)
Can you please guide us in implementing the support of profile generic with a big number of columns?
Hi,
Hi,
The server example is improved. PDU size must be so large that one row can fit PDU.
BR,
Mikko