<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Why does Disconnect Control (Class 70) Method 2 return Success (0x00) while output_state remains false?]]></title><description><![CDATA[<blockquote>
<p dir="auto">[!WARNING]<br />
<strong>Technical Redaction &amp; Safe Harbor Notice</strong>:<br />
All communication captures, system titles, and cryptographic parameters in this thread have been sanitized and neutralized. Real utility meter identifiers, production encryption keys (GUEK/GAK/MK), SIM IMSIs, and proprietary network envelopes have been substituted with standard IEC 62056 synthetic test vectors. Do not post unredacted production captures or live cryptographic keys.</p>
</blockquote>
<p dir="auto">We are troubleshooting an unexpected relay issue during field commissioning of 200 polyphase commercial smart meters over IEC 62056-47 TCP/IP (port 4059). After a remote load-shedding event, our HES sends a remote reconnection command via Class 70 (<code>Disconnect Control</code>, OBIS <code>0.0.96.3.10.255</code>), invoking Method 2 (<code>remote_reconnect</code>).</p>
<p dir="auto">The meter returns an immediate <code>Action-Response-Normal</code> indicating success (<code>0x00</code><img src="https://dlms.sharur.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61e.png?v=666d1e6b6e4" class="not-responsive emoji emoji-android emoji--disappointed" style="height:23px;width:auto;vertical-align:middle" title="):" alt="😞" /></p>
<pre><code class="language-hex">00 01 00 01 00 01 00 05 C7 01 C1 00 00
</code></pre>
<p dir="auto">However, when we immediately read back Attribute 2 (<code>output_state</code>) to verify contact closure, the meter returns <code>03 00</code> (<code>boolean: false</code><img src="https://dlms.sharur.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61e.png?v=666d1e6b6e4" class="not-responsive emoji emoji-android emoji--disappointed" style="height:23px;width:auto;vertical-align:middle" title="):" alt="😞" /></p>
<pre><code class="language-hex">00 01 00 01 00 01 00 04 C4 01 C2 00 03 00
</code></pre>
<p dir="auto">The downstream load remains completely de-energized. We contacted the meter manufacturer's FAE, and the classic response was <em>"It works fine on our lab bench tool."</em> Meanwhile, the Wireshark DLMS dissector confirms our Action APDU is 100% syntactically valid. Why is the meter acknowledging reconnection with success (<code>0x00</code>) while physically refusing to close the breaker?</p>
]]></description><link>https://dlms.sharur.org/topic/85/why-does-disconnect-control-class-70-method-2-return-success-0x00-while-output_state-remains-false</link><generator>RSS for Node</generator><lastBuildDate>Fri, 16 Oct 2026 19:14:30 GMT</lastBuildDate><atom:link href="https://dlms.sharur.org/topic/85.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Aug 2026 08:52:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Why does Disconnect Control (Class 70) Method 2 return Success (0x00) while output_state remains false? on Mon, 24 Aug 2026 08:52:26 GMT]]></title><description><![CDATA[<p dir="auto">To enable direct remote reconnection without human button intervention, your HES must reconfigure Attribute 4 (<code>control_mode</code>) to Mode <code>2</code> (<code>Remote only</code>) under the Management Association.</p>
<p dir="auto">Here is the verified <code>Set-Request-Normal</code> APDU writing <code>control_mode = 2</code> (enum <code>0x16 0x02</code><img src="https://dlms.sharur.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61e.png?v=666d1e6b6e4" class="not-responsive emoji emoji-android emoji--disappointed" style="height:23px;width:auto;vertical-align:middle" title="):" alt="😞" /></p>
<pre><code class="language-hex">00 01 00 01 00 01 00 0F C1 01 C4 00 46 00 00 60 03 0A FF 04 00 16 02
</code></pre>
<p dir="auto">Meter response (<code>Set-Response-Normal</code>, success):</p>
<pre><code class="language-hex">00 01 00 01 00 01 00 04 C5 01 C4 00
</code></pre>
<p dir="auto">Once <code>control_mode</code> is set to <code>2</code>, invoking Method 2 immediately energizes the trip coil, moving <code>control_state</code> directly to <code>Connected (1)</code> and setting <code>output_state</code> to <code>true</code> (<code>0x03 0xFF</code>).</p>
<p dir="auto">Here is the complete Gurux.DLMS Python snippet to handle this automated commissioning flow:</p>
<pre><code class="language-python">from gurux_dlms.objects import GXDLMSDisconnectControl
from gurux_dlms.objects.enums import ControlMode, ControlState

def force_remote_reconnect(client, obis_code="0.0.96.3.10.255"):
    relay = GXDLMSDisconnectControl(obis_code)
    
    # 1. Read current control mode
    client.read(relay, 4)
    
    # 2. Reconfigure to Mode 2 (Remote Only) if armed for manual button
    if relay.controlMode != ControlMode.MODE_2:
        relay.controlMode = ControlMode.MODE_2
        client.write(relay, 4)
        
    # 3. Invoke Method 2 (remote_reconnect)
    client.method(relay, 2, 0, "integer8")
    
    # 4. Verify output state is confirmed true
    client.read(relay, 2)
    if not relay.outputState:
        raise RuntimeError("Physical breaker failed to close.")
        
    return True
</code></pre>
<p dir="auto">By enforcing <code>control_mode = 2</code> prior to reclosing, unmanned substations can be restored automatically without field truck rolls.</p>
]]></description><link>https://dlms.sharur.org/post/301</link><guid isPermaLink="true">https://dlms.sharur.org/post/301</guid><dc:creator><![CDATA[marcus_vance]]></dc:creator><pubDate>Mon, 24 Aug 2026 08:52:26 GMT</pubDate></item><item><title><![CDATA[Reply to Why does Disconnect Control (Class 70) Method 2 return Success (0x00) while output_state remains false? on Mon, 24 Aug 2026 08:52:24 GMT]]></title><description><![CDATA[<p dir="auto">David, you nailed it. We just ran a readback on Attribute 3 (<code>control_state</code>) and Attribute 4 (<code>control_mode</code>) on our bench unit:</p>
<pre><code class="language-hex">00 01 00 01 00 01 00 06 C4 01 C3 00 16 02 16 03
</code></pre>
<ul>
<li><code>16 02</code>: <code>control_state = 2</code> (<code>Ready_for_reconnection</code>)</li>
<li><code>16 03</code>: <code>control_mode = 3</code></li>
</ul>
<p dir="auto">As soon as we manually pressed the optical/display button on the meter front panel, the contactor gave a loud mechanical click, and <code>output_state</code> immediately flipped to <code>03 FF</code> (<code>true</code>).</p>
<p dir="auto">This explains why this meter batch passed official DLMS CTT (Conformance Test Tool) certification with flying colors—CTT only checks that the APDU returns <code>0x00</code>, completely ignoring whether physical voltage was restored downstream! For our unmanned rooftop solar installations, we cannot have technicians pushing buttons. How do we safely reconfigure <code>control_mode</code> to Mode 2 over the air?</p>
]]></description><link>https://dlms.sharur.org/post/300</link><guid isPermaLink="true">https://dlms.sharur.org/post/300</guid><dc:creator><![CDATA[carlos_mendez]]></dc:creator><pubDate>Mon, 24 Aug 2026 08:52:24 GMT</pubDate></item><item><title><![CDATA[Reply to Why does Disconnect Control (Class 70) Method 2 return Success (0x00) while output_state remains false? on Mon, 24 Aug 2026 08:52:08 GMT]]></title><description><![CDATA[<p dir="auto">Carlos, before suspecting a faulty relay coil or broken firmware, look closely at the Disconnect Control state machine in <strong>DLMS UA Blue Book (17th Ed.) Section 4.5.3</strong> and <strong>IEC 62056-62 Clause 4.5.3</strong>.</p>
<p dir="auto">Your assumption that invoking Method 2 (<code>remote_reconnect</code>) guarantees immediate physical contact closure is where the trap lies. In COSEM Class 70, breaker behavior is governed by Attribute 4 (<code>control_mode</code>) and Attribute 3 (<code>control_state</code><img src="https://dlms.sharur.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61e.png?v=666d1e6b6e4" class="not-responsive emoji emoji-android emoji--disappointed" style="height:23px;width:auto;vertical-align:middle" title="):" alt="😞" /></p>
<ul>
<li><code>control_mode = 1</code> (Manual): Meter cannot be remotely reconnected.</li>
<li><code>control_mode = 2</code> (Remote only): Method 2 transitions the breaker directly from <code>Disconnected (0)</code> to <code>Connected (1)</code>, immediately closing the contact (<code>output_state = true</code>).</li>
<li><code>control_mode = 3</code> (Manual reconnect / Consumer safety): Method 2 only transitions <code>control_state</code> from <code>Disconnected (0)</code> to <strong><code>Ready_for_reconnection (2)</code></strong>! Physical closure requires the end-user to press the physical push-button on the meter terminal.</li>
<li><code>control_mode = 5 / 6</code>: Timed reconnection modes with safety arming.</li>
</ul>
<p dir="auto">Because of European electrical safety regulations (preventing unattended energization of consumer premises), factory default meters are almost universally shipped with <code>control_mode = 3</code>.</p>
<p dir="auto">When you send Method 2, returning <code>0x00</code> (Success) means the state transition from <code>Disconnected</code> to <code>Ready_for_reconnection</code> succeeded. Have you read Attribute 3 and Attribute 4 to inspect the active <code>control_state</code>?</p>
]]></description><link>https://dlms.sharur.org/post/299</link><guid isPermaLink="true">https://dlms.sharur.org/post/299</guid><dc:creator><![CDATA[david_miller]]></dc:creator><pubDate>Mon, 24 Aug 2026 08:52:08 GMT</pubDate></item></channel></rss>