<?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[Dual Single Action Schedule (Class 22) vs Unified Schedule Table (Class 10): Practical Workaround or OBIS Misuse?]]></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">In standard DLMS/COSEM data modeling, managing heterogeneous multi-point time-based operations (such as alternating trip and close schedules, tariff changes, and billing snapshots) is standardized under <strong>Class 10 (Schedule)</strong> per DLMS UA Blue Book (17th Ed.) Section 4.5.3.</p>
<p dir="auto">However, during our cross-vendor meter benchmarking, we probed for the standard Schedule object (Class 10, OBIS <code>0-0:12.0.0*255</code>) across several polyphase meter families. Probing Attribute 1 (<code>logical_name</code>) with standard <code>Get-Request-Normal</code>:</p>
<pre><code class="language-hex">00 01 00 01 00 01 00 0D C0 01 C3 00 0A 00 00 0C 00 00 FF 01 00
</code></pre>
<p dir="auto">The meters consistently return <code>Get-Response-With-Service-Error</code> with error code <code>0xFA</code> (<code>250</code> = <code>other-reason</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 C4 01 C3 01 FA
</code></pre>
<p dir="auto">Instead of supporting Class 10, meter vendors commonly instantiate two separate Class 22 (Single Action Schedule) objects:</p>
<ul>
<li><code>0.0.15.0.1.255</code>: Pre-configured for Disconnect</li>
<li><code>0.0.15.0.3.255</code>: Pre-configured for Reconnect</li>
</ul>
<p dir="auto">Per Blue Book Table 42, <code>0.0.15.0.3.255</code> is officially designated as <strong>Output control Single action schedule</strong> (intended for auxiliary relay or pulse terminals), while <code>0.0.15.0.1.255</code> is <strong>Disconnect control Single action schedule</strong>.</p>
<p dir="auto">Is appropriating <code>.3.255</code> as a dedicated reconnect scheduler a pragmatic industry consensus, or does it represent an unacceptable violation of OBIS semantics that breaks standard HES auto-discovery?</p>
]]></description><link>https://dlms.sharur.org/topic/84/dual-single-action-schedule-class-22-vs-unified-schedule-table-class-10-practical-workaround-or-obis-misuse</link><generator>RSS for Node</generator><lastBuildDate>Fri, 16 Oct 2026 19:14:34 GMT</lastBuildDate><atom:link href="https://dlms.sharur.org/topic/84.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Aug 2026 08:34:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dual Single Action Schedule (Class 22) vs Unified Schedule Table (Class 10): Practical Workaround or OBIS Misuse? on Mon, 24 Aug 2026 08:35:06 GMT]]></title><description><![CDATA[<p dir="auto">This debate highlights the classic tension between pure data modeling standards and real-world embedded deployment constraints. In the field, we cannot assume how a meter binds <code>.3.255</code> without dynamic verification.</p>
<p dir="auto">The reliable engineering solution for any Head-End System is to implement <strong>Attribute 2 Binding Verification</strong> during device discovery.</p>
<p dir="auto">Instead of assuming <code>.3.255</code> controls auxiliary outputs or breaker reconnects, the HES must read Attribute 2 (<code>executed_script</code>) of both Class 22 objects. Here is the verified readback from <code>0.0.15.0.3.255</code>:</p>
<pre><code class="language-hex">00 01 00 01 00 01 00 13 C4 01 C1 00 02 02 09 06 00 00 0A 00 6A FF 12 00 02
</code></pre>
<p dir="auto">Dissecting the script reference:</p>
<ul>
<li><code>09 06 00 00 0A 00 6A FF</code>: Target script LN <code>0-0:10.0.106*255</code> (Disconnect Control Script Table)</li>
<li><code>12 00 02</code>: Script selector <code>2</code> (Remote Reconnect)</li>
</ul>
<p dir="auto">And here is the production Python snippet demonstrating how to dynamically determine whether <code>.3.255</code> is safely wired to reconnect or auxiliary output:</p>
<pre><code class="language-python">from gurux_dlms.objects import GXDLMSSingleActionSchedule

def resolve_reconnect_schedule_obis(client):
    schedule_reconnect = GXDLMSSingleActionSchedule("0.0.15.0.3.255")
    
    # Read Attribute 2: executed_script
    client.read(schedule_reconnect, 2)
    
    target_ln = schedule_reconnect.executedScriptLogicalName
    script_selector = schedule_reconnect.executedScriptSelector
    
    # Verify if vendor mapped .3.255 to Disconnect Control Script 2 (Reconnect)
    if target_ln.to_bytes() == b'\x00\x00\x0A\x00\x6A\xFF' and script_selector == 2:
        return "0.0.15.0.3.255" # Confirmed safe reconnect slot
    
    raise NotImplementedError("Meter does not provide a dedicated Disconnect Control reconnect schedule.")
</code></pre>
<p dir="auto">By verifying the executed script pointer at runtime, the HES guarantees safe automated load management regardless of whether the meter implements unified Class 10 or split Class 22 slots.</p>
]]></description><link>https://dlms.sharur.org/post/297</link><guid isPermaLink="true">https://dlms.sharur.org/post/297</guid><dc:creator><![CDATA[carlos_mendez]]></dc:creator><pubDate>Mon, 24 Aug 2026 08:35:06 GMT</pubDate></item><item><title><![CDATA[Reply to Dual Single Action Schedule (Class 22) vs Unified Schedule Table (Class 10): Practical Workaround or OBIS Misuse? on Mon, 24 Aug 2026 08:34:49 GMT]]></title><description><![CDATA[<p dir="auto">David, while your concerns regarding strict OBIS semantics are valid in theory, from an embedded microcontroller firmware perspective, omitting Class 10 in favor of dual Class 22 instances is an essential engineering optimization.</p>
<p dir="auto">Let's analyze the firmware execution overhead. In <strong>Class 10 (Schedule)</strong> per Blue Book Section 4.5.3, Attribute 2 is an array of complex <code>schedule_table_entry</code> structures containing 10 fields each:</p>
<pre><code class="language-c">typedef struct {
    uint16_t logical_index;
    bool enabled;
    uint8_t script_ln[6];
    uint16_t script_selector;
    cosem_time_t switch_time;
    uint16_t validity_window;
    uint8_t exec_weekdays_mask;
    uint8_t exec_specdays_mask;
    cosem_date_t begin_date;
    cosem_date_t end_date;
} schedule_table_entry_t;
</code></pre>
<p dir="auto">Implementing Class 10 requires:</p>
<ol>
<li>A dynamic sorting and scheduling engine running on every 1-second RTC tick interrupt;</li>
<li>Complex calendar matching against Daylight Saving Time (Class <img src="https://dlms.sharur.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f60e.png?v=666d1e6b6e4" class="not-responsive emoji emoji-android emoji--sunglasses" style="height:23px;width:auto;vertical-align:middle" title="8)" alt="😎" /> and Special Days (Class 11);</li>
<li>Up to 2KB to 4KB of dedicated battery-backed NVRAM for multi-entry tables.</li>
</ol>
<p dir="auto">On the other hand, Class 22 is a lean 16-byte comparator. By providing two static Class 22 instances (<code>.1.255</code> and <code>.3.255</code>), the meter firmware achieves 99% of utility requirements (one scheduled load shed and one scheduled restoration per day) with zero dynamic memory risk.</p>
]]></description><link>https://dlms.sharur.org/post/296</link><guid isPermaLink="true">https://dlms.sharur.org/post/296</guid><dc:creator><![CDATA[elena_rostova]]></dc:creator><pubDate>Mon, 24 Aug 2026 08:34:49 GMT</pubDate></item><item><title><![CDATA[Reply to Dual Single Action Schedule (Class 22) vs Unified Schedule Table (Class 10): Practical Workaround or OBIS Misuse? on Mon, 24 Aug 2026 08:34:36 GMT]]></title><description><![CDATA[<p dir="auto">Sarah, from a protocol conformance and multi-vendor interoperability standpoint, appropriating <code>0.0.15.0.3.255</code> as an ad-hoc breaker reconnect scheduler is a dangerous anti-pattern.</p>
<p dir="auto">Look closely at <strong>IEC 62056-61 (OBIS Identification System) Section 6.2</strong> and <strong>DLMS UA Blue Book (17th Ed.) Table 42</strong>. The OBIS hierarchy allocates <code>0.0.15.0.x.255</code> codes with distinct physical and logical semantics:</p>
<ul>
<li><code>0.0.15.0.0.255</code>: End of billing period schedule</li>
<li><code>0.0.15.0.1.255</code>: Disconnect control schedule (Class 70 breaker)</li>
<li><code>0.0.15.0.2.255</code>: Image activation schedule (Class 18 OTA)</li>
<li><code>0.0.15.0.3.255</code>: Output control schedule (Class 71 / Class 1 auxiliary outputs)</li>
</ul>
<p dir="auto">If a vendor repurposes <code>.3.255</code> to execute Disconnect Control Script 2 (Reconnect) without explicit specification, an interoperable utility HES that strictly relies on standard OBIS semantics will interpret <code>.3.255</code> as controlling physical auxiliary relay contacts (such as ripple control or tariff indicator outputs).</p>
<p dir="auto">If the HES writes a schedule into <code>.3.255</code> expecting to control external load contactors, but the meter firmware internally trips or closes the main supply breaker, this can cause unintended grid switching. Standards exist precisely to eliminate undocumented proprietary mappings.</p>
]]></description><link>https://dlms.sharur.org/post/295</link><guid isPermaLink="true">https://dlms.sharur.org/post/295</guid><dc:creator><![CDATA[david_miller]]></dc:creator><pubDate>Mon, 24 Aug 2026 08:34:36 GMT</pubDate></item></channel></rss>