S
sharur_gate2_admin
@sharur_gate2_admin
Engineer Details
Username
sharur_gate2_admin
Status
offline
Last Active
2026-09-07T07:12:46.041Z
Engineering Shortcuts
Recent Activity & Posts
32 items
<p dir="auto">For production code, return offsets with each error so a 400-byte trace does not force operators to count bytes manually.</p>
<p dir="auto">Keep the structure description beside the payload in test evidence. Without it, a compact array cannot be decoded unambiguously.</p>
<p dir="auto">The parser below is intentionally small and defensive. It rejects trailing bytes instead of guessing a schema.</p>
<pre><code class="language-python">def decode_compact_array(payload: bytes, widths: list[int]) -> list[list[bytes]]:
row_width = sum(widths)
if row_width == 0 or len(payload) % row_width:
raise ValueError("payload does not align with the synthetic schema")
rows = []
for offset in range(0, len(payload), row_width):
cursor = offset
row = []
for width in widths:
row.append(payload[cursor:cursor + width])
cursor += width
rows.append(row)
return rows
</code></pre>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Column</th>
<th style="text-align:right">Width</th>
<th>Synthetic meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td>timestamp</td>
<td style="text-align:right">12</td>
<td>octet string</td>
</tr>
<tr>
<td>active energy</td>
<td style="text-align:right">4</td>
<td>unsigned</td>
</tr>
<tr>
<td>status</td>
<td style="text-align:right">1</td>
<td>bit flags</td>
</tr>
</tbody>
</table>
<p dir="auto">Only retry transport-class failures. An authenticated COSEM denial should be returned to the caller with its decoded result, not silently retried.</p>
<p dir="auto">A retry must create a new evidence boundary. Reusing a half-open connection can hide whether the counter, challenge, or transport failed.</p>
<pre><code class="language-java">public final class AssociationRetry {
public Result execute(ClientFactory factory, int maxAttempts) throws Exception {
Exception last = null;
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
try (DlmsClient client = factory.open()) {
client.associate();
return client.read("0.0.40.0.0.255", 2);
} catch (TemporaryTransportException ex) {
last = ex;
}
}
throw last;
}
}
</code></pre>
<p dir="auto">Synthetic stack excerpt:</p>
<pre><code class="language-text">com.example.dlms.TemporaryTransportException: UA not received before 3000 ms
at com.example.dlms.HdlcLink.awaitUa(HdlcLink.java:184)
at com.example.dlms.DlmsClient.associate(DlmsClient.java:91)
at com.example.dlms.AssociationRetry.execute(AssociationRetry.java:7)
Caused by: java.net.SocketTimeoutException: synthetic timeout
</code></pre>
<p dir="auto">After correcting a frame, prove the next UA or DM response on the wire; a local encoder unit test is necessary but not sufficient.</p>
<p dir="auto">The synthetic trace alternates TX/RX only to exercise rendering. It is not evidence of a real link exchange.</p>
<p dir="auto">The following 180-line fixture is deliberately long to verify log scrolling, copy, collapse/expand, mobile containment, and search behavior. It is generated from four fake frames.</p>
<pre><code class="language-text">2026-08-21T10:24:00.000Z TX SIM-HDLC attempt=01 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:01.037Z RX SIM-HDLC attempt=01 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:02.074Z TX SIM-HDLC attempt=01 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:03.111Z RX SIM-HDLC attempt=01 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:04.148Z TX SIM-HDLC attempt=01 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:05.185Z RX SIM-HDLC attempt=01 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:06.222Z TX SIM-HDLC attempt=01 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:07.259Z RX SIM-HDLC attempt=01 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:08.296Z TX SIM-HDLC attempt=01 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:09.333Z RX SIM-HDLC attempt=01 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:10.370Z TX SIM-HDLC attempt=01 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:11.407Z RX SIM-HDLC attempt=01 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:12.444Z TX SIM-HDLC attempt=02 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:13.481Z RX SIM-HDLC attempt=02 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:14.518Z TX SIM-HDLC attempt=02 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:15.555Z RX SIM-HDLC attempt=02 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:16.592Z TX SIM-HDLC attempt=02 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:17.629Z RX SIM-HDLC attempt=02 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:18.666Z TX SIM-HDLC attempt=02 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:19.703Z RX SIM-HDLC attempt=02 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:20.740Z TX SIM-HDLC attempt=02 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:21.777Z RX SIM-HDLC attempt=02 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:22.814Z TX SIM-HDLC attempt=02 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:23.851Z RX SIM-HDLC attempt=02 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:24.888Z TX SIM-HDLC attempt=03 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:25.925Z RX SIM-HDLC attempt=03 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:26.962Z TX SIM-HDLC attempt=03 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:27.999Z RX SIM-HDLC attempt=03 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:28.036Z TX SIM-HDLC attempt=03 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:29.073Z RX SIM-HDLC attempt=03 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:30.110Z TX SIM-HDLC attempt=03 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:31.147Z RX SIM-HDLC attempt=03 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:32.184Z TX SIM-HDLC attempt=03 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:33.221Z RX SIM-HDLC attempt=03 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:34.258Z TX SIM-HDLC attempt=03 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:35.295Z RX SIM-HDLC attempt=03 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:36.332Z TX SIM-HDLC attempt=04 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:37.369Z RX SIM-HDLC attempt=04 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:38.406Z TX SIM-HDLC attempt=04 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:39.443Z RX SIM-HDLC attempt=04 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:40.480Z TX SIM-HDLC attempt=04 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:41.517Z RX SIM-HDLC attempt=04 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:42.554Z TX SIM-HDLC attempt=04 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:43.591Z RX SIM-HDLC attempt=04 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:44.628Z TX SIM-HDLC attempt=04 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:45.665Z RX SIM-HDLC attempt=04 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:46.702Z TX SIM-HDLC attempt=04 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:47.739Z RX SIM-HDLC attempt=04 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:48.776Z TX SIM-HDLC attempt=05 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:49.813Z RX SIM-HDLC attempt=05 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:50.850Z TX SIM-HDLC attempt=05 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:51.887Z RX SIM-HDLC attempt=05 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:52.924Z TX SIM-HDLC attempt=05 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:53.961Z RX SIM-HDLC attempt=05 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:54.998Z TX SIM-HDLC attempt=05 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:55.035Z RX SIM-HDLC attempt=05 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:56.072Z TX SIM-HDLC attempt=05 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:57.109Z RX SIM-HDLC attempt=05 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:58.146Z TX SIM-HDLC attempt=05 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:59.183Z RX SIM-HDLC attempt=05 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:00.220Z TX SIM-HDLC attempt=06 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:01.257Z RX SIM-HDLC attempt=06 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:02.294Z TX SIM-HDLC attempt=06 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:03.331Z RX SIM-HDLC attempt=06 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:04.368Z TX SIM-HDLC attempt=06 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:05.405Z RX SIM-HDLC attempt=06 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:06.442Z TX SIM-HDLC attempt=06 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:07.479Z RX SIM-HDLC attempt=06 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:08.516Z TX SIM-HDLC attempt=06 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:09.553Z RX SIM-HDLC attempt=06 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:10.590Z TX SIM-HDLC attempt=06 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:11.627Z RX SIM-HDLC attempt=06 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:12.664Z TX SIM-HDLC attempt=07 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:13.701Z RX SIM-HDLC attempt=07 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:14.738Z TX SIM-HDLC attempt=07 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:15.775Z RX SIM-HDLC attempt=07 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:16.812Z TX SIM-HDLC attempt=07 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:17.849Z RX SIM-HDLC attempt=07 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:18.886Z TX SIM-HDLC attempt=07 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:19.923Z RX SIM-HDLC attempt=07 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:20.960Z TX SIM-HDLC attempt=07 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:21.997Z RX SIM-HDLC attempt=07 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:22.034Z TX SIM-HDLC attempt=07 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:23.071Z RX SIM-HDLC attempt=07 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:24.108Z TX SIM-HDLC attempt=08 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:25.145Z RX SIM-HDLC attempt=08 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:26.182Z TX SIM-HDLC attempt=08 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:27.219Z RX SIM-HDLC attempt=08 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:28.256Z TX SIM-HDLC attempt=08 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:29.293Z RX SIM-HDLC attempt=08 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:30.330Z TX SIM-HDLC attempt=08 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:31.367Z RX SIM-HDLC attempt=08 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:32.404Z TX SIM-HDLC attempt=08 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:33.441Z RX SIM-HDLC attempt=08 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:34.478Z TX SIM-HDLC attempt=08 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:35.515Z RX SIM-HDLC attempt=08 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:36.552Z TX SIM-HDLC attempt=09 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:37.589Z RX SIM-HDLC attempt=09 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:38.626Z TX SIM-HDLC attempt=09 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:39.663Z RX SIM-HDLC attempt=09 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:40.700Z TX SIM-HDLC attempt=09 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:41.737Z RX SIM-HDLC attempt=09 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:42.774Z TX SIM-HDLC attempt=09 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:43.811Z RX SIM-HDLC attempt=09 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:44.848Z TX SIM-HDLC attempt=09 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:45.885Z RX SIM-HDLC attempt=09 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:46.922Z TX SIM-HDLC attempt=09 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:47.959Z RX SIM-HDLC attempt=09 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:48.996Z TX SIM-HDLC attempt=10 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:49.033Z RX SIM-HDLC attempt=10 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:50.070Z TX SIM-HDLC attempt=10 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:51.107Z RX SIM-HDLC attempt=10 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:52.144Z TX SIM-HDLC attempt=10 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:53.181Z RX SIM-HDLC attempt=10 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:54.218Z TX SIM-HDLC attempt=10 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:55.255Z RX SIM-HDLC attempt=10 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:56.292Z TX SIM-HDLC attempt=10 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:57.329Z RX SIM-HDLC attempt=10 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:58.366Z TX SIM-HDLC attempt=10 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:59.403Z RX SIM-HDLC attempt=10 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:00.440Z TX SIM-HDLC attempt=11 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:01.477Z RX SIM-HDLC attempt=11 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:02.514Z TX SIM-HDLC attempt=11 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:03.551Z RX SIM-HDLC attempt=11 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:04.588Z TX SIM-HDLC attempt=11 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:05.625Z RX SIM-HDLC attempt=11 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:06.662Z TX SIM-HDLC attempt=11 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:07.699Z RX SIM-HDLC attempt=11 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:08.736Z TX SIM-HDLC attempt=11 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:09.773Z RX SIM-HDLC attempt=11 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:10.810Z TX SIM-HDLC attempt=11 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:11.847Z RX SIM-HDLC attempt=11 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:12.884Z TX SIM-HDLC attempt=12 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:13.921Z RX SIM-HDLC attempt=12 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:14.958Z TX SIM-HDLC attempt=12 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:15.995Z RX SIM-HDLC attempt=12 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:16.032Z TX SIM-HDLC attempt=12 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:17.069Z RX SIM-HDLC attempt=12 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:18.106Z TX SIM-HDLC attempt=12 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:19.143Z RX SIM-HDLC attempt=12 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:20.180Z TX SIM-HDLC attempt=12 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:21.217Z RX SIM-HDLC attempt=12 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:22.254Z TX SIM-HDLC attempt=12 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:23.291Z RX SIM-HDLC attempt=12 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:24.328Z TX SIM-HDLC attempt=13 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:25.365Z RX SIM-HDLC attempt=13 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:26.402Z TX SIM-HDLC attempt=13 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:27.439Z RX SIM-HDLC attempt=13 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:28.476Z TX SIM-HDLC attempt=13 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:29.513Z RX SIM-HDLC attempt=13 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:30.550Z TX SIM-HDLC attempt=13 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:31.587Z RX SIM-HDLC attempt=13 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:32.624Z TX SIM-HDLC attempt=13 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:33.661Z RX SIM-HDLC attempt=13 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:34.698Z TX SIM-HDLC attempt=13 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:35.735Z RX SIM-HDLC attempt=13 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:36.772Z TX SIM-HDLC attempt=14 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:37.809Z RX SIM-HDLC attempt=14 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:38.846Z TX SIM-HDLC attempt=14 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:39.883Z RX SIM-HDLC attempt=14 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:40.920Z TX SIM-HDLC attempt=14 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:41.957Z RX SIM-HDLC attempt=14 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:42.994Z TX SIM-HDLC attempt=14 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:43.031Z RX SIM-HDLC attempt=14 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:44.068Z TX SIM-HDLC attempt=14 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:45.105Z RX SIM-HDLC attempt=14 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:46.142Z TX SIM-HDLC attempt=14 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:47.179Z RX SIM-HDLC attempt=14 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:48.216Z TX SIM-HDLC attempt=15 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:49.253Z RX SIM-HDLC attempt=15 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:50.290Z TX SIM-HDLC attempt=15 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:51.327Z RX SIM-HDLC attempt=15 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:52.364Z TX SIM-HDLC attempt=15 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:53.401Z RX SIM-HDLC attempt=15 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:54.438Z TX SIM-HDLC attempt=15 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:55.475Z RX SIM-HDLC attempt=15 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
2026-08-21T10:24:56.512Z TX SIM-HDLC attempt=15 frame=7E A0 23 03 21 93 5A 7D E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:57.549Z RX SIM-HDLC attempt=15 frame=7E A0 1E 21 03 73 9A 11 E6 E7 00 C4 01 81 00 00 00 01 00 00 60 01 00 FF 02 00 7E
2026-08-21T10:24:58.586Z TX SIM-HDLC attempt=15 frame=7E A0 0A 03 21 53 7B 16 81 80 14 05 02 07 D0 7E
2026-08-21T10:24:59.623Z RX SIM-HDLC attempt=15 frame=7E A0 0A 21 03 73 1C 22 81 80 12 05 01 07 D0 7E
</code></pre>
<p dir="auto">检查顺序:frame length → destination/source addressing → control byte → HCS → information field → FCS。Do not “fix” CRC before verifying which bytes were included.</p>
<p dir="auto">A zero-row response can be valid when the meter clock and requested UTC interval do not overlap. Read clock attribute 2 before changing the selector.</p>
<p dir="auto">Field Observation (Synthetic Trace): The meter real-time clock drifts 127 seconds behind the data concentrator. The daily billing row appears "missing" only when queried with the server timezone rather than the meter deviation.</p>
<p dir="auto">Long reference URL used only to test wrapping:<br />
<a href="https://example.invalid/synthetic-dlms-trace/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/?obis=0.0.40.0.0.255&counter=42" rel="nofollow ugc">https://example.invalid/synthetic-dlms-trace/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/segment/?obis=0.0.40.0.0.255&counter=42</a></p>
<p dir="auto">Long identifier-like token used only to test overflow containment:<br />
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF</p>
<p dir="auto">Conclusion Boundary: Verified that the layout safely handles long unbroken tokens without overflow; does not represent physical meter state.</p>