It looks like you are sending raw data inside of the general block transfer message. This is wrong, you need to send PDU inside of the GBT. Something like this:
The last block bit is True for all the PDUs. This is not correct. You must set the last block bit to true only for the last frame when PDU is sent complete. PDU is parsed from the data If the last block bit is set.
Hi,
Hi,
It looks like you are sending raw data inside of the general block transfer message. This is wrong, you need to send PDU inside of the GBT. Something like this:
https://gurux.fi/GuruxDLMSTranslator?pdu=E080000400000F0F80000001000201…
BR,
Mikko
Hi, Mikko
Hi, Mikko
Yes, this is a general block transfer message, the complete data is as follows:
1: 00 01 00 01 00 66 00 DA E0 00 00 01 00 00 81 D2 0F 00 00 00 02 0C 07 E7 0B 02 04 09 04 12 00 FF C4 00 02 03 09 0C 07 E7 0B 02 04 09 04 12 00 FF C4 00 09 0C 30 30 30 30 32 30 32 31 30 30 30 31 01 1A 02 03 09 0C 07 E7 0B 01 03 00 00 00 00 FF C4 00 11 20 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 00 0F 00 00 FF C4 00 11 20 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 01 00 00 00 FF C4 00 11 20 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 01 0F 00 00 FF C4 00 11 20 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 02 00 00 00 FF C4 00 11 20 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 02 0F 00 00 FF C4 00 11 20 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 03 00 00 00 FF C4 00 11 20 06 00 00 00
2: 00 01 00 01 00 66 00 DA E0 00 00 02 00 00 81 D2 00 02 03 09 0C 07 E7 0B 01 03 03 0F 00 00 FF C4 00 11 80 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 05 1E 00 00 FF C4 00 11 80 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 05 2D 00 00 FF C4 00 11 80 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 07 00 00 00 FF C4 00 11 00 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 07 0F 00 00 FF C4 00 11 00 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 07 0F 00 00 FF C4 00 11 80 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 07 1E 00 00 FF C4 00 11 80 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 07 2D 00 00 FF C4 00 11 00 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 08 00 00 00 FF C4 00 11 00 06 00 00 00 00 02 03
3: 00 01 00 01 00 66 00 DA E0 00 00 03 00 00 81 D2 09 0C 07 E7 0B 01 03 08 0F 00 00 FF C4 00 11 00 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 08 1E 00 00 FF C4 00 11 00 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 08 2D 00 00 FF C4 00 11 00 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 09 00 00 00 FF C4 00 11 00 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 09 0F 00 00 FF C4 00 11 00 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 09 1E 00 00 FF C4 00 11 00 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 09 2D 00 00 FF C4 00 11 00 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 0A 00 00 00 FF C4 00 11 00 06 00 00 00 00 02 03 09 0C 07 E7 0B 01 03 0A 0F 00 00 FF C4 00 11 00 06 00 00 00 00 02 03 09 0C 07
4: 00 01 00 01 00 66 00 19 E0 80 00 04 00 00 12 E7 0B 01 03 0A 1E 00 00 FF C4 00 11 80 06 00 00 00 00
The second and third frame analysis is correct, but the fouth frame is not. And I found a strange phenomenon as follow:
4: 00 01 00 01 00 66 00 19 E0 80 00 04 00 00 12 E7 0B 02 03 0A 1E 00 00 FF C4 00 11 80 06 00 00 00 00
<WRAPPER len="14" >
<TargetAddress Value="1" />
<SourceAddress Value="66" />
<PDU>
<GeneralBlockTransfer>
<!-- Last block: True -->
<!-- Streaming: False -->
<!-- Window size: 0 -->
<BlockControl Value="80" />
<BlockNumber Value="0004" />
<BlockNumberAck Value="0000" />
<!--
-->
<BlockData Value="1E 00 00 FF C4 00 11 80 06 00 00 00 00" />
</GeneralBlockTransfer>
</PDU>
</WRAPPER>
4: 00 01 00 01 00 66 00 19 E0 80 00 04 00 00 12 E7 0B 03 03 0A 1E 00 00 FF C4 00 11 80 06 00 00 00 00
<WRAPPER len="13" >
<TargetAddress Value="1" />
<SourceAddress Value="66" />
<PDU>
<GeneralBlockTransfer>
<!-- Last block: True -->
<!-- Streaming: False -->
<!-- Window size: 0 -->
<BlockControl Value="80" />
<BlockNumber Value="0004" />
<BlockNumberAck Value="0000" />
<BlockData Value="00 00 FF C4 00 11 80 06 00 00 00 00" />
</GeneralBlockTransfer>
</PDU>
</WRAPPER>
4: 00 01 00 01 00 66 00 19 E0 80 00 04 00 00 12 E7 0B 04 03 0A 1E 00 00 FF C4 00 11 80 06 00 00 00 00
<WRAPPER len="12" >
<TargetAddress Value="1" />
<SourceAddress Value="66" />
<PDU>
<GeneralBlockTransfer>
<!-- Last block: True -->
<!-- Streaming: False -->
<!-- Window size: 0 -->
<BlockControl Value="80" />
<BlockNumber Value="0004" />
<BlockNumberAck Value="0000" />
<BlockData Value="00 FF C4 00 11 80 06 00 00 00 00" />
</GeneralBlockTransfer>
</PDU>
</WRAPPER>
4: 00 01 00 01 00 66 00 19 E0 80 00 04 00 00 12 E7 0B 11 03 0A 1E 00 00 FF C4 00 11 80 06 00 00 00 00
<WRAPPER len="19" >
<TargetAddress Value="1" />
<SourceAddress Value="66" />
<PDU>
<GeneralBlockTransfer>
<!-- Last block: True -->
<!-- Streaming: False -->
<!-- Window size: 0 -->
<BlockControl Value="80" />
<BlockNumber Value="0004" />
<BlockNumberAck Value="0000" />
<BlockData Value="E7 0B 11 03 0A 1E 00 00 FF C4 00 11 80 06 00 00 00 00" />
</GeneralBlockTransfer>
</PDU>
</WRAPPER>
Please pay attention to the 'E7 0B 01 03 ' part, I modified 0x01 to 0x02, 0x03, 0x04and 0x11 respectively, and the analyzed 'BlockData Value' is different.
Looking forward your replay, thanks.
BR,
Laura
Hi, Mikko
Hi, Mikko
Can you give me an example of transferring 2 or 3 blocks of data using GBT?
Thanks~!
BR,
Hi,
Hi,
The last block bit is True for all the PDUs. This is not correct. You must set the last block bit to true only for the last frame when PDU is sent complete. PDU is parsed from the data If the last block bit is set.
BR,
Mikko