DLMS Block Transfer (Get-Request-Next) Pagination & Window Flow Control
-
Managing Large PDU Payloads via Block Transfer
When a response exceeds the maximum PDU size negotiated in AARQ (
max_pdu_size, typically 1024 or 2048 bytes), the meter fragments the response into blocks usingGet-Response-With-Block(Tag0xC4 0x02).Block Transfer Sequence
- Client ->
Get-Request-Normal(Requesting Association View0.0.40.0.0.255) - Meter ->
Get-Response-With-Block:- Last Block Flag:
0x00(More blocks follow) - Block Number:
0x00000001 - Raw Data Chunk: (e.g. 1000 bytes)
- Last Block Flag:
- Client ->
Get-Request-Next:- Block Number:
0x00000001(Acknowledging block 1 and requesting block 2)
- Block Number:
- Meter ->
Get-Response-With-Block:- Last Block Flag:
0x01(Final block) - Block Number:
0x00000002
- Last Block Flag:
If the client receives a corrupted block (HCS/CRC error), it must re-send
Get-Request-Nextwith the last successfully received block number to request a retransmission. - Client ->
-
In the meter firmware, we maintain a 30-second block transfer inactivity timer (
t_inactivity). If the client does not acknowledge the current block within 30 seconds, the meter cleans up the buffer allocation to prevent memory leaks.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login