I'm trying to connect a Siemens meter by GXDLMSDirector in a high-security level (using GMAC), but I'm not having any success. But I have success when I connect in the same meter using Siemens Tool (MPMS3000).
Only for information, I have accessed the meter using GXDLMSDIrector in none and low-security level.
The file attached shows both GXDLMSDirector and MPMS3000 configuration and trace messages.
Where is my mistake??
Thanks in advance
Evandro Padrão
Connection with a meter using high security level
Hi,
There are few differences. Try to change Security from "Encryption" to "AuthenticationEncryption".
This meter is sending client and meter address in wrong order. Can you ask meter manufacturer to fix it.
Try to change client address to 1. Physical server to 10 and logical to 1.
BR,
Mikko
I changed from "Encryption"
I changed from "Encryption" to "AuthenticationEncryption" and continues not working.
In accord with address order, I believe that has some misunderstood because of the order is correct as shown below in SNRM message:
Siemens trace:
Building Link Layer Connection ...
[11:03:58 445] S: 7E A0 23 00 02 00 21 03 93 99 F6 81 80 14 05 02 04 00 06 02 04 00 07 04 00
00 00 01 08 04 00 00 00 07 44 86 7E
GXDLMSDirector trace:
11:23:40 Send SNRM request.
TX: 7E A0 08 02 21 03 93 86 C1 7E
The differences are the destination number of bytes and in GXDLMSDirector doesn't negotiate the buffer size.
All tests were executed with client address 1 and physical server 0x10 and logical server 1.
Hi,
Hi,
Change this in GXDLMSDirector. Select "Advanced" tab. Change "Max payload size in transmit" and "Max payload size in receive" to 1024.
Change "Server Address Size" to 4.
BR,
Mikko
Connection with a meter using high security level (GMAC)
Mikko,
the method GenerateAarq is waiting for encryptedData as a third parameter, but the method calling in CGXDLMSClient::AARQRequest is always sending a NULL value in this parameter, as shown below:
int CGXAPDU::GenerateAarq(
CGXDLMSSettings& settings,
CGXCipher* cipher,
CGXByteBuffer* encryptedData,
CGXByteBuffer& data)
CGXDLMSClient::AARQRequest
if ((ret = CGXAPDU::GenerateAarq(m_Settings, m_Settings.GetCipher(), NULL, buff)) != 0)
Is it correct??
Thanks in advance for the support,
Evandro Padrão
Connection with a meter using high security level (GMAC)
Hi,
Yes, this is correct. This is old functionality that is removed. It's left for the class method and it's removed in the future.
BR,
Mikko
How to change 'authenticationKey'
Hi
i am using c library gurux,
i need to know how to change 'settings->cipher->authenticationKey' by 'GXDLMSDirector.exe'
may i ask you some examples which is showing how to change 'cipher' by method 'action' through programming code and 'GXDLMSDirector.exe'
thanks a lot