Hi Mikko,
In PC Association xDLMSContextInfo.conformance attribute i given ont GET but in the gurux client it is showing all.
please help me where is the problem
I tested this and it worked as expected. First, make sure that you have the latest version. Then select device properties and select the "Supported services" -tab. Make sure that you have selected only Get-service.
Hi Mikko,
Thanks for reply,
device properties and select the "Supported services" -tab get and remaining services also,But in Negotiated place has the services what we given in the code. for PC, I given Only GET.
Please clarify me where I am wrong?
In the server side:
Set proposed service. Negotiated service will tell what services the client and server are negotiated to use. It's updated every time when a client makes a new connection.
Proposed conformance is set for the association view. In that way, each association view might offer different services.
Check that your association is defined like this:
associationX.xDLMSContextInfo.conformance = DLMS_CONFORMANCE_GET;
This is checked and it's working like expected. I believe that you have made some changes that are breaking this. Can you try with the default server example?
i using DLMS c new version but i same issue based please help me
modified
associationNone.xDLMSContextInfo.conformance = (DLMS_CONFORMANCE)(DLMS_CONFORMANCE_GET| DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_GET_OR_READ);
int addAssociationNone()
{
int ret;
const unsigned char ln[6] = { 0, 0, 40, 0, 1, 255 };
if ((ret = INIT_OBJECT(associationNone, DLMS_OBJECT_TYPE_ASSOCIATION_LOGICAL_NAME, ln)) == 0)
{
//All objects are shown also without authentication.
OA_ATTACH(associationNone.objectList, ALL_OBJECTS);
//Uncomment this if you want to show only part of the objects without authentication.
//OA_ATTACH(associationNone.objectList, NONE_OBJECTS);
associationNone.authenticationMechanismName.mechanismId = DLMS_AUTHENTICATION_NONE;
associationNone.clientSAP = 0x10;
//Max PDU is half of PDU size. This is for demonstration purposes only.
associationNone.xDLMSContextInfo.maxSendPduSize = associationNone.xDLMSContextInfo.maxReceivePduSize = PDU_BUFFER_SIZE / 2;
associationNone.xDLMSContextInfo.conformance = (DLMS_CONFORMANCE)(DLMS_CONFORMANCE_GET| DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_GET_OR_READ);
}
return ret;
}
Hi Mikko,
I did not changed gurux stack.
Actually as per stack ANSI-C library,
what we are selected in the proposed services those are getting in the negotiated services.
by my Question is In negotiated service -> what we are given in the association
For PC: associationNone.xDLMSContextInfo.conformance =
(DLMS_CONFORMANCE)(DLMS_CONFORMANCE_GET);
For MR: lowAssociation.xDLMSContextInfo.conformance = (DLMS_CONFORMANCE)(DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_GET_OR_READ |
DLMS_CONFORMANCE_SELECTIVE_ACCESS |
DLMS_CONFORMANCE_GET);
For US: highAssociation.xDLMSContextInfo.conformance = (DLMS_CONFORMANCE)(DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_ACTION |
DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_SET_OR_WRITE |
DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_GET_OR_READ |
DLMS_CONFORMANCE_SET |
DLMS_CONFORMANCE_SELECTIVE_ACCESS |
DLMS_CONFORMANCE_ACTION |
DLMS_CONFORMANCE_GET|
DLMS_CONFORMANCE_DATA_NOTIFICATION|
DLMS_CONFORMANCE_GENERAL_BLOCK_TRANSFER);
has to come instead of all services which are selected in the proposed Services.
There was one row missing from the example server. That is now updated. Get the latest version.
Search this line. It'll fix this.
settings->proposedConformance = a->xDLMSContextInfo.conformance;
Hi Mikko,
now it is working fine with PC&MR associations but, I am getting problem with US association.
as per IS15959 sheet I given conformance services for US is:
highAssociation.xDLMSContextInfo.conformance = (DLMS_CONFORMANCE)(DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_ACTION |
DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_SET_OR_WRITE |
DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_GET_OR_READ |
DLMS_CONFORMANCE_SET |
DLMS_CONFORMANCE_SELECTIVE_ACCESS |
DLMS_CONFORMANCE_ACTION |
DLMS_CONFORMANCE_GET|
DLMS_CONFORMANCE_DATA_NOTIFICATION|
DLMS_CONFORMANCE_GENERAL_BLOCK_TRANSFER);
but when i selected GENERAL_BLOCK_TRANSFER in proposed services of Gurux Client. it is updating at negotiated service and establishing the connection, but problem is after connection establish I gave Refresh then it throwing error as : get Objects failed.Access Error:No long set or write in the progress.
I am attached screen shot please check it.
please help me why it is showing like this?
GBT expects that all the data is read for the memory before data is starting to send. It might be possible to use GBT if you have enough memory, but if you want to read example association view or profile generic the amount might be huge. For this reason, GBT is not set in default for ANSI C.
Hi Mikko,
T_APPL_OPEN_1 CTT Failed for MR Association
0/1, ServerSAP = 1, ClientSAP = 32, LONG_NAMES, LOW_LEVEL_SECURITY
1.Establish an AA using the parameters declared
FAILED(Unexpected response to AssociationRequest)
In _CTI Config file For MR Associaton as
Association [1] =
{
Enabled = TRUE
ClientSAP = 0x20
ApplicationContextName = LONG_NAMES
AuthenticationMechanismName = LOW_LEVEL_SECURITY
ConformanceBlock = [GET,BLOCK_TRANSFER_WITH_GET_OR_READ,SELECTIVE_ACCESS]
Secret = "\XXXXXXXXXXXXXXXX"
}
Previously we have problem with :: lowAssociation.xDLMSContextInfo.conformance not showing services which are given in code at negotiated services. because of that this test failed?
please help me why it is failed?
No, you define conformance in the settings file. GBT and ciphering are a bad combination. If you are using GBT and ciphering you must read all data to the memory. Then you need to encrypt it and then send encrypted data using GBT.
For this reason, GBT is only available for push messages in Indian standards because there is a max size of push messages and it's possible to encrypt them. This is not possible if the client app is reading example profile generic buffer.
Hi,
Hi,
I tested this and it worked as expected. First, make sure that you have the latest version. Then select device properties and select the "Supported services" -tab. Make sure that you have selected only Get-service.
BR,
Mikko
Hi Mikko,
Hi Mikko,
Thanks for reply,
device properties and select the "Supported services" -tab get and remaining services also,But in Negotiated place has the services what we given in the code. for PC, I given Only GET.
Please clarify me where I am wrong?
Hi,
Hi,
In the server side:
Set proposed service. Negotiated service will tell what services the client and server are negotiated to use. It's updated every time when a client makes a new connection.
BR,
Mikko
Hi Mikko,
Hi Mikko,
I checked with another DLMS meter there it is working fine.
please check below screen shot
Hi,
Hi,
Proposed conformance is set for the association view. In that way, each association view might offer different services.
Check that your association is defined like this:
associationX.xDLMSContextInfo.conformance = DLMS_CONFORMANCE_GET;
Don't set the Negotiated service directly.
BR,
Mikko
Hi Mikko,
Hi Mikko,
In my PC Association i given as like below
ref: associationNone.xDLMSContextInfo.conformance = DLMS_CONFORMANCE_GET;
Hi Mikko, Any update on this?
Hi Mikko,
Any update on this?
Hi,
Hi,
This is checked and it's working like expected. I believe that you have made some changes that are breaking this. Can you try with the default server example?
BR,
Mikko
Hi Mikko
Hi Mikko
i using DLMS c new version but i same issue based please help me
modified
associationNone.xDLMSContextInfo.conformance = (DLMS_CONFORMANCE)(DLMS_CONFORMANCE_GET| DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_GET_OR_READ);
int addAssociationNone()
{
int ret;
const unsigned char ln[6] = { 0, 0, 40, 0, 1, 255 };
if ((ret = INIT_OBJECT(associationNone, DLMS_OBJECT_TYPE_ASSOCIATION_LOGICAL_NAME, ln)) == 0)
{
//All objects are shown also without authentication.
OA_ATTACH(associationNone.objectList, ALL_OBJECTS);
//Uncomment this if you want to show only part of the objects without authentication.
//OA_ATTACH(associationNone.objectList, NONE_OBJECTS);
associationNone.authenticationMechanismName.mechanismId = DLMS_AUTHENTICATION_NONE;
associationNone.clientSAP = 0x10;
//Max PDU is half of PDU size. This is for demonstration purposes only.
associationNone.xDLMSContextInfo.maxSendPduSize = associationNone.xDLMSContextInfo.maxReceivePduSize = PDU_BUFFER_SIZE / 2;
associationNone.xDLMSContextInfo.conformance = (DLMS_CONFORMANCE)(DLMS_CONFORMANCE_GET| DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_GET_OR_READ);
}
return ret;
}
13:34:19 Send SNRM request.
TX: 7E A0 07 03 21 93 0F 01 7E
13:34:19
RX: 7E A0 1E 21 03 73 C3 7A 81 80 12 05 01 80 06 01 80 07 04 00 00 00 01 08 04 00 00 00 01 53 3B 7E
13:34:19 Send AARQ request.
TX: 7E A0 2B 03 21 10 FB AF E6 E6 00 60 1D A1 09 06 07 60 85 74 05 08 01 01 BE 10 04 0E 01 00 00 00 06 5F 1F 04 00 00 1E 1D FF FF C5 E4 7E
13:34:19
RX: 7E A0 37 21 03 30 6C 7C E6 E7 00 61 29 A1 09 06 07 60 85 74 05 08 01 01 A2 03 02 01 00 A3 05 A1 03 02 01 00 BE 10 04 0E 08 00 06 5F 1F 04 00 00 1E 1D 02 00 00 07 7A ED 7E
Hi Mikko,
Hi Mikko,
I did not changed gurux stack.
Actually as per stack ANSI-C library,
what we are selected in the proposed services those are getting in the negotiated services.
by my Question is In negotiated service -> what we are given in the association
For PC: associationNone.xDLMSContextInfo.conformance =
(DLMS_CONFORMANCE)(DLMS_CONFORMANCE_GET);
For MR: lowAssociation.xDLMSContextInfo.conformance = (DLMS_CONFORMANCE)(DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_GET_OR_READ |
DLMS_CONFORMANCE_SELECTIVE_ACCESS |
DLMS_CONFORMANCE_GET);
For US: highAssociation.xDLMSContextInfo.conformance = (DLMS_CONFORMANCE)(DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_ACTION |
DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_SET_OR_WRITE |
DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_GET_OR_READ |
DLMS_CONFORMANCE_SET |
DLMS_CONFORMANCE_SELECTIVE_ACCESS |
DLMS_CONFORMANCE_ACTION |
DLMS_CONFORMANCE_GET|
DLMS_CONFORMANCE_DATA_NOTIFICATION|
DLMS_CONFORMANCE_GENERAL_BLOCK_TRANSFER);
has to come instead of all services which are selected in the proposed Services.
Hi,
Hi,
There was one row missing from the example server. That is now updated. Get the latest version.
Search this line. It'll fix this.
settings->proposedConformance = a->xDLMSContextInfo.conformance;
BR,
Mikko
Hi Mikko,
Hi Mikko,
now it is working fine with PC&MR associations but, I am getting problem with US association.
as per IS15959 sheet I given conformance services for US is:
highAssociation.xDLMSContextInfo.conformance = (DLMS_CONFORMANCE)(DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_ACTION |
DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_SET_OR_WRITE |
DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_GET_OR_READ |
DLMS_CONFORMANCE_SET |
DLMS_CONFORMANCE_SELECTIVE_ACCESS |
DLMS_CONFORMANCE_ACTION |
DLMS_CONFORMANCE_GET|
DLMS_CONFORMANCE_DATA_NOTIFICATION|
DLMS_CONFORMANCE_GENERAL_BLOCK_TRANSFER);
but when i selected GENERAL_BLOCK_TRANSFER in proposed services of Gurux Client. it is updating at negotiated service and establishing the connection, but problem is after connection establish I gave Refresh then it throwing error as : get Objects failed.Access Error:No long set or write in the progress.
I am attached screen shot please check it.
please help me why it is showing like this?
Hi,
Hi,
GBT expects that all the data is read for the memory before data is starting to send. It might be possible to use GBT if you have enough memory, but if you want to read example association view or profile generic the amount might be huge. For this reason, GBT is not set in default for ANSI C.
BR,
Mikko
Hi Mikko,
Hi Mikko,
T_APPL_OPEN_1 CTT Failed for MR Association
0/1, ServerSAP = 1, ClientSAP = 32, LONG_NAMES, LOW_LEVEL_SECURITY
1.Establish an AA using the parameters declared
FAILED(Unexpected response to AssociationRequest)
In _CTI Config file For MR Associaton as
Association [1] =
{
Enabled = TRUE
ClientSAP = 0x20
ApplicationContextName = LONG_NAMES
AuthenticationMechanismName = LOW_LEVEL_SECURITY
ConformanceBlock = [GET,BLOCK_TRANSFER_WITH_GET_OR_READ,SELECTIVE_ACCESS]
Secret = "\XXXXXXXXXXXXXXXX"
}
Previously we have problem with :: lowAssociation.xDLMSContextInfo.conformance not showing services which are given in code at negotiated services. because of that this test failed?
please help me why it is failed?
Hi Ashok ,
Hi Ashok ,
Check this:
https://www.gurux.fi/Gurux.DLMS.Conformance
BR,
Mikko
Hi Mikko,
Hi Mikko,
The IS15959 standared says that for US Association GBT is required conformance Service. if we not given this it may be fail?
Hi,
Hi,
No, you define conformance in the settings file. GBT and ciphering are a bad combination. If you are using GBT and ciphering you must read all data to the memory. Then you need to encrypt it and then send encrypted data using GBT.
For this reason, GBT is only available for push messages in Indian standards because there is a max size of push messages and it's possible to encrypt them. This is not possible if the client app is reading example profile generic buffer.
BR,
Mikko