Hello!
I have implemented a DLMS server on a Texas Instruments C2000 microcontroller, based on the ANSI C server examples. Communication is established over PLC, and I have already implemented serialization of the PRIME API on the C2000. The DLMS server interface I am using is TYPE_PDU.
I am currently facing an issue when attempting to read the association view using GXDLMS Director. When the Max PDU Size is set to 512, the association view is read successfully without any issues. However, when the Max PDU Size is set to 256, the operation fails and GXDLMS Director displays the following error:
"Value cannot be null. Parameter: 'Collection'".
I understand that the association view exceeds 256 bytes, so fragmentation (block transfer) should occur. I have enabled "Get Block Transfer" on both, client (GXDLMS Director) and server.
By examining the logs in GXDLMS Director I observe the following. In the 512-byte PDU case, the association view is returned in a single message. In the 256-byte PDU case, the association view is returned across two messages. However, in the second case, the process fails with an error, despite the server seemingly performing fragmentation correctly.
How can I solve this error so that fragmentation works correctly?
Thanks!
Pablo
GXDLMS Director log:
GXDLMSDirector 9.0.2503.2001
Log created 8:34:30
08:34:31 Initializing Network connection.
08:34:31 08:34:31.551 Info Opening
08:34:31 08:34:31.551 Info Configuración del cliente: Protocolo Tcp Anfitrión: 10.3.28.163 Puerto: 4059
08:34:31 08:34:31.551 Info Open
8:34:32 Send AARQ request.
00 01 00 01 03 EA 00 38 60 36 A1 09 06 07 60 85 74 05 08 01 01 8A 02 07 80 8B 07 60 85 74 05 08 02 01 AC 0A 80 08 41 54 4D 35 36 37 38 39 BE 10 04 0E 01 00 00 00 06 5F 1F 04 00 00 10 54 02 00
08:34:32 08:34:32.062 Sent 00 01 00 01 03 EA 00 38 60 36 A1 09 06 07 60 85 74 05 08 01 01 8A 02 07 80 8B 07 60 85 74 05 08 02 01 AC 0A 80 08 41 54 4D 35 36 37 38 39 BE 10 04 0E 01 00 00 00 06 5F 1F 04 00 00 10 54 02 00
08:34:32 08:34:32.372 Received 00 01 03 EA 00 01 00 2E 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 10 14 02 00 00 07 00 00 00
8:34:32
00 01 03 EA 00 01 00 2E 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 10 14 02 00 00 07 00 00 00
08:34:32 Parsing AARE reply succeeded.
08:34:33 --- Collecting objects. ---
8:34:33 Collecting objects
00 01 00 01 03 EA 00 0D C0 01 C1 00 0F 00 00 28 00 00 FF 02 00
08:34:33 08:34:33.616 Sent 00 01 00 01 03 EA 00 0D C0 01 C1 00 0F 00 00 28 00 00 FF 02 00
08:34:34 08:34:34.034 Received 00 01 03 EA 00 01 01 38 C4 01 C1 00 01 03 02 04 12 00 0F 11 02 09 06 00 00 28 00 00 FF 02 02 01 0B 02 03 0F 01 16 01 00 02 03 0F 02 16 01 00 02 03 0F 03 16 01 00 02 03 0F 04 16 01 00 02 03 0F 05 16 01 00 02 03 0F 06 16 01 00 02 03 0F 07 16 03 00 02 03 0F 08 16 01 00 02 03 0F 09 16 01 00 02 03 0F 0A 16 01 00 02 03 0F 0B 16 01 00 01 06 02 02 0F 01 16 00 02 02 0F 02 16 00 02 02 0F 03 16 00 02 02 0F 04 16 00 02 02 0F 05 16 00 02 02 0F 06 16 00 02 04 12 00 0F 11 02 09 06 00 00 28 00 02 FF 02 02 01 0B 02 03 0F 01 16 01 00 02 03 0F 02 16 01 00 02 03 0F 03 16 01 00 02 03 0F 04 16 01 00 02 03 0F 05 16 01 00 02 03 0F 06 16 01 00 02 03 0F 07 16 03 00 02 03 0F 08 16 01 00 02 03 0F 09 16 01 00 02 03 0F 0A 16 01 00 02 03 0F 0B 16 01 00 01 06 02 02 0F 01 16 00 02 02 0F 02 16 00 02 02 0F 03 16 00 02 02 0F 04 16 00 02 02 0F 05 16 00 02 02 0F 06 16 00 02 04 12 00 01 11 00 09 06 01 00 63 C7 00 FF 02 02 01 02 02 03 0F 01 16 01 00 02 03 0F 02 16 01 00 01 00 00 00 00
8:34:34
00 01 03 EA 00 01 01 38 C4 01 C1 00 01 03 02 04 12 00 0F 11 02 09 06 00 00 28 00 00 FF 02 02 01 0B 02 03 0F 01 16 01 00 02 03 0F 02 16 01 00 02 03 0F 03 16 01 00 02 03 0F 04 16 01 00 02 03 0F 05 16 01 00 02 03 0F 06 16 01 00 02 03 0F 07 16 03 00 02 03 0F 08 16 01 00 02 03 0F 09 16 01 00 02 03 0F 0A 16 01 00 02 03 0F 0B 16 01 00 01 06 02 02 0F 01 16 00 02 02 0F 02 16 00 02 02 0F 03 16 00 02 02 0F 04 16 00 02 02 0F 05 16 00 02 02 0F 06 16 00 02 04 12 00 0F 11 02 09 06 00 00 28 00 02 FF 02 02 01 0B 02 03 0F 01 16 01 00 02 03 0F 02 16 01 00 02 03 0F 03 16 01 00 02 03 0F 04 16 01 00 02 03 0F 05 16 01 00 02 03 0F 06 16 01 00 02 03 0F 07 16 03 00 02 03 0F 08 16 01 00 02 03 0F 09 16 01 00 02 03 0F 0A 16 01 00 02 03 0F 0B 16 01 00 01 06 02 02 0F 01 16 00 02 02 0F 02 16 00 02 02 0F 03 16 00 02 02 0F 04 16 00 02 02 0F 05 16 00 02 02 0F 06 16 00 02 04 12 00 01 11 00 09 06 01 00 63 C7 00 FF 02 02 01 02 02 03 0F 01 16 01 00 02 03 0F 02 16 01 00 01 00 00 00 00
08:34:34 --- Collecting 3 objects. ---
08:34:34 --- Created 3 objects. ---
08:34:34 --- Reading scalers and units. ---
08:34:34 --- Reading scalers and units end. ---
8:34:49 Release request
00 01 00 01 03 EA 00 05 62 03 80 01 00
8:34:49 Release request
00 01 00 01 03 EA 00 05 62 03 80 01 00
08:34:49 08:34:49.598 Sent 00 01 00 01 03 EA 00 05 62 03 80 01 00
08:34:49 08:34:49.755 Received 00 01 03 EA 00 01 00 08 63 03 80 01 00 03 02 04
8:34:49
00 01 03 EA 00 01 00 08 63 03 80 01 00 03 02 04
08:34:49 08:34:49.755 Info Closing
08:34:49 08:34:49.755 Info Closed
08:35:32 Initializing Network connection.
08:35:32 08:35:32.213 Info Opening
08:35:32 08:35:32.213 Info Configuración del cliente: Protocolo Tcp Anfitrión: 10.3.28.163 Puerto: 4059
08:35:32 08:35:32.213 Info Open
8:35:32 Send AARQ request.
00 01 00 01 03 EA 00 38 60 36 A1 09 06 07 60 85 74 05 08 01 01 8A 02 07 80 8B 07 60 85 74 05 08 02 01 AC 0A 80 08 41 54 4D 35 36 37 38 39 BE 10 04 0E 01 00 00 00 06 5F 1F 04 00 00 10 54 01 00
08:35:32 08:35:32.724 Sent 00 01 00 01 03 EA 00 38 60 36 A1 09 06 07 60 85 74 05 08 01 01 8A 02 07 80 8B 07 60 85 74 05 08 02 01 AC 0A 80 08 41 54 4D 35 36 37 38 39 BE 10 04 0E 01 00 00 00 06 5F 1F 04 00 00 10 54 01 00
08:35:32 08:35:32.971 Received 00 01 03 EA 00 01 00 2E 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 10 14 01 00 00 07 16 01 00
8:35:32
00 01 03 EA 00 01 00 2E 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 10 14 01 00 00 07 16 01 00
08:35:32 Parsing AARE reply succeeded.
08:35:34 --- Collecting objects. ---
8:35:34 Collecting objects
00 01 00 01 03 EA 00 0D C0 01 C1 00 0F 00 00 28 00 00 FF 02 00
08:35:34 08:35:34.508 Sent 00 01 00 01 03 EA 00 0D C0 01 C1 00 0F 00 00 28 00 00 FF 02 00
08:35:34 08:35:34.755 Received 00 01 03 EA 00 01 00 96 C4 02 C1 00 00 00 00 01 00 81 88 01 03 02 04 12 00 0F 11 02 09 06 00 00 28 00 00 FF 02 02 01 0B 02 03 0F 01 16 01 00 02 03 0F 02 16 01 00 02 03 0F 03 16 01 00 02 03 0F 04 16 01 00 02 03 0F 05 16 01 00 02 03 0F 06 16 01 00 02 03 0F 07 16 03 00 02 03 0F 08 16 01 00 02 03 0F 09 16 01 00 02 03 0F 0A 16 01 00 02 03 0F 0B 16 01 00 01 06 02 02 0F 01 16 00 02 02 0F 02 16 00 02 02 0F 03 16 00 02 02 0F 04 16 00 02 02 0F 05 16 00 02 02 0F 06 16 00 09 06 00
8:35:34
00 01 03 EA 00 01 00 96 C4 02 C1 00 00 00 00 01 00 81 88 01 03 02 04 12 00 0F 11 02 09 06 00 00 28 00 00 FF 02 02 01 0B 02 03 0F 01 16 01 00 02 03 0F 02 16 01 00 02 03 0F 03 16 01 00 02 03 0F 04 16 01 00 02 03 0F 05 16 01 00 02 03 0F 06 16 01 00 02 03 0F 07 16 03 00 02 03 0F 08 16 01 00 02 03 0F 09 16 01 00 02 03 0F 0A 16 01 00 02 03 0F 0B 16 01 00 01 06 02 02 0F 01 16 00 02 02 0F 02 16 00 02 02 0F 03 16 00 02 02 0F 04 16 00 02 02 0F 05 16 00 02 02 0F 06 16 00 09 06 00
08:35:34 Get Next Data block.
8:35:34 Collecting objects
00 01 00 01 03 EA 00 07 C0 02 C1 00 00 00 01
08:35:34 08:35:34.755 Sent 00 01 00 01 03 EA 00 07 C0 02 C1 00 00 00 01
08:35:35 08:35:35.034 Received 00 01 03 EA 00 01 00 B7 C4 02 C1 01 00 00 00 02 00 81 A9 02 04 12 00 0F 11 02 09 06 00 00 28 00 02 FF 02 02 01 0B 02 03 0F 01 16 01 00 02 03 0F 02 16 01 00 02 03 0F 03 16 01 00 02 03 0F 04 16 01 00 02 03 0F 05 16 01 00 02 03 0F 06 16 01 00 02 03 0F 07 16 03 00 02 03 0F 08 16 01 00 02 03 0F 09 16 01 00 02 03 0F 0A 16 01 00 02 03 0F 0B 16 01 00 01 06 02 02 0F 01 16 00 02 02 0F 02 16 00 02 02 0F 03 16 00 02 02 0F 04 16 00 02 02 0F 05 16 00 02 02 0F 06 16 00 02 04 12 00 01 11 00 09 06 01 00 63 C7 00 FF 02 02 01 02 02 03 0F 01 16 01 00 02 03 0F 02 16 01 00 01 00 02 03 0F
8:35:35
00 01 03 EA 00 01 00 B7 C4 02 C1 01 00 00 00 02 00 81 A9 02 04 12 00 0F 11 02 09 06 00 00 28 00 02 FF 02 02 01 0B 02 03 0F 01 16 01 00 02 03 0F 02 16 01 00 02 03 0F 03 16 01 00 02 03 0F 04 16 01 00 02 03 0F 05 16 01 00 02 03 0F 06 16 01 00 02 03 0F 07 16 03 00 02 03 0F 08 16 01 00 02 03 0F 09 16 01 00 02 03 0F 0A 16 01 00 02 03 0F 0B 16 01 00 01 06 02 02 0F 01 16 00 02 02 0F 02 16 00 02 02 0F 03 16 00 02 02 0F 04 16 00 02 02 0F 05 16 00 02 02 0F 06 16 00 02 04 12 00 01 11 00 09 06 01 00 63 C7 00 FF 02 02 01 02 02 03 0F 01 16 01 00 02 03 0F 02 16 01 00 01 00 02 03 0F
System.InvalidCastException: No se puede convertir un objeto de tipo 'System.Byte[]' al tipo 'System.Object[]'.
en GXDLMSDirector.MainForm.RefreshDevice(GXDLMSMeter dev, Boolean bRefresh)
en GXDLMSDirector.MainForm.Refresh(Object sender, GXAsyncWork work, Object[] parameters)
Hi, In both logs, you have…
Hi,
In both logs, you have extra data after the PDU. With the second trace, I can see that the data is also corrupted. I tested this with WRAPPER using PDU sizes 256 and 512, and both worked without problems.
Are you sending the PDU from the correct place when PDU size is 256?
It looks like the data is corrupted after the first PDU.
Are you letting the framework do the association view sending or do you need to make any changes for it?
BR,
Mikko
Hello Kurumi, Sorry for the…
Hello Kurumi,
Sorry for the late response.
As you mentioned in your reply, the data was corrupted.
Thank you very much for your message.
Best regards,
Pablo