Skip to content

F650 Open SCL: expose report-backed MMXU1 A/PhV/PPV phase measurements #493

Description

@masarray

Field evidence: GE F650 structured measurements missing in Live Values (2026-10-09)

Opened BCU_GE.iid with ARSAS 1.6.40+1ac41648549db92902190ae91ee6302da2d0afe0 and pinned engine 352c81e6a798635c6addcee0683235ca87ad416d.
Actual IID file has not been supplied: do not claim exact vendor phase-reference paths, and do not publish the private IID or machine/IP details.

  • 1 LD, 153 LN, 2228 DO, 14668 DA; 8 Static DataSets with 124 members (124/124 inventory-present), 20 unresolved primary-value descriptors.
  • 98 selected live signal rows and 16 independently selected control objects, 53 unique runtime monitor points; 53/53 displayed only means all admitted points have values, not complete measurements.
  • Source DataSet semantic members include MMXU1.A / PhV / PPV (in CSWI, MMXU_SOGI1/2/3 and REPORT1) and AuxV (SOGI1/2/3). They are missing from the listed selected leaves. Scalar TotW/TotVA/TotVAr/TotPF/Hz and BusHz.mag.f are admitted.
  • 6/6 actual configured RCB streams routed; 1140/1140 SCL-assisted MMS initial reads successful, 11532 projected leaves, 0 read errors, 0 cyclic MMS process polling. Root concern is schema-to-runtime projection/admission, not missing network access.
  • Independent warnings: semantic gate INCOMPLETE and two BRCB BufOvfl findings. Audit separately; do not declare SOE continuity proven.

Root-cause source review

Engine Iec61850DataSetSemanticBindingResolver.PrimaryValue returns a value only when exactly one primary attribute exists; a top-level three-phase FCD can have several valid phase primaries. Iec61850DataSetSignalInventoryProjection therefore preserves the FCD as unresolved rather than inventing a scalar. This is intentionally conservative.
Consumer Iec61850DataSetSignalInventoryService.ResolveRuntimeBinding only resolves an unresolved structured member if SchemaSafeAggregateProjectionService.TryResolveStaticDataSetPrimaryLeaf succeeds. That method rejects top-level DataObject references, only supports descendant FCDs (e.g. A.phsA). SignalDefinition.IsThreePhaseMeasurementAggregate handles THD types but not ordinary A/PhV/PPV. StaticDataSetAuthoritySelection chooses CanPublishToRuntime candidates and only one row per member; the result is current/voltage phase content not published. StaticDataSetReportProjectionAccumulator only handles supported THD/demand aggregate parents.

2026-10-09 exact private IID template review (user-provided, kept out of GitHub)

  • The original BCU_GE.iid was supplied directly for private analysis. It was generated by IEDScout 4.10; IEDName BCUGE; MMXU LNType BCUGEF650.MMXU1. The file itself is not committed or attached to this public issue.
  • Explicit MMXU1.A DOType includes typed FLOAT32 cVal.mag.f and instCVal.mag.f for phsA, phsB, phsC, neut, net, res. Operator descriptions: Phasor Ia/Ib/Ic/Ig/In/Isg Primary; fc=MX phase q/t; units SIUnit=A with multiplier=k.
  • Explicit MMXU1.PhV DOType includes typed FLOAT32 cVal.mag.f and instCVal.mag.f for phsA, phsB, phsC, neut. Operator descriptions Va/Vb/Vc/Vn Primary; fc=MX phase q/t; SIUnit=V, multiplier=k.
  • Explicit MMXU1.PPV DOType includes typed FLOAT32 cVal.mag.f and instCVal.mag.f for phsAB, phsBC, phsCA. Operator descriptions Vab/Vbc/Vca Primary; fc=MX phase q/t; SIUnit=V, multiplier=k.
  • Therefore 13 exact schema-defined phase magnitudes exist for the three missing FCDs; plus AuxV is a separate single complex measurement (cVal.mag.f and instCVal.mag.f), not a 3-phase object.
  • Static FCDA members have doName=A/PhV/PPV and daName omitted, fc=MX, proving whole-DO FCD membership. Those FCDs appear in CSWI, MMXU_SOGI1, MMXU_SOGI2, MMXU_SOGI3, REPORT1; AuxV appears in MMXU_SOGI1/2/3. No additional RCBs or dynamic DataSets are justified.
  • The precise reported numerical values, actual report leaf payload and physical scaling are not present in the IID. They must be proven with live report evidence. Multipliers in IID must not blindly be multiplied on displayed values without checking engine's value/unit policy.
  • Required fix must retain all six A channels (including neut/net/res) and all four PhV channels rather than truncating to ABC, and must preserve q/t/units and one-parent-to-many children. Use typed schema to safely prefer exact canonical cVal.mag.f and refuse ambiguous/nonexistent leaves.

Acceptance / safe solution

  1. Obtain actual BCU_GE.iid (private, not committed) and inspect exact FCD CDC/type-template/FC=MX, phase paths and live decoded report child values. Identify each of 20 unresolved descriptors by reason; avoid guessing paths or units.
  2. Add source-neutral typed one-FCD-to-many-phase-leaf projection using engine-authoritative ResolvedAttributes and exact schema. WYE phase A/B/C and DEL AB/BC/CA should become distinct readable rows only when proven. Never choose the first numeric child or fabricate missing phase values.
  3. Preserve literal DataSet member and RCB provenance while selecting all proven exact phase leaves. Route the engine-expanded InformationReport children to those rows, with separate quality/time/engineering units; no extra RCB subscriptions per phase.
  4. Preserve Static DataSet report-only: no cyclic MMS process polling, no dynamic DataSet writes, no change to canonical command path/CSWI controls or unrelated report continuity.
  5. Deterministic regression tests with WYE, DEL, missing/ambiguous attributes, shuffled child ordering, optional vendor instantaneous paths, FC/type mismatch, quality/timestamp, aliases, and actual GI report updates; compare SCL vs discovery parity.
  6. Show explicit diagnostics: scalar-ready, structured phase-ready, unresolved with exact cause; keep semantic gate INCOMPLETE and BufOvfl investigations distinct.
    Physical acceptance is a real GE F650 IID + captured reporting proof for current and phase/line voltage, without regression to existing control/reporting.

Related: draft PR #492 (F650 canonical control + native-dialog UX), issue #446. This is an ANALYSIS ticket only: no code modification/CI requested yet.

Activity

  1. masarray commented on Oct 9, 2026

    @masarray
    OwnerAuthor

    Private BCU_GE.iid schema review completed; original source has not been uploaded to GitHub. Exact typed WYE A (phsA/B/C/neut/net/res), WYE PhV (phsA/B/C/neut), DEL PPV (phsAB/BC/CA) and CMV AuxV confirmed. Created draft PR #494 atop exact #492 head: #494 (commit 3cf821428efd954e415e7455acbd2936ff0019cd). One atomic consumer-side patch for schema-safe phase-row materialization and report-only selection, plus synthetic regression tests. Engine remains the authority and pin unchanged. CI underway; no field acceptance or merge claimed.

  2. masarray commented on Oct 9, 2026

    @masarray
    OwnerAuthor

    Actual same-build F650 field comparison — Open SCL vs IP Discovery (2026-10-09)

    Operator supplied two GUI screenshots and full local diagnostics using the same ARSAS binary 1.6.40+b6935e2f0481d568b03042fdf0d60af821f36031 and pinned engine 352c81e6a798635c6addcee0683235ca87ad416d. Logs remain in support conversation, not attached here (private machine/IP/association evidence).

    Measured parity gap:

    Metric Open BCU_GE.iid IP smart Discovery
    LD/LN/DO/DA 1 / 153 / 2228 / 14668 1 / 65 / 653 / 4669
    Static datasets / original members 8 / 124 8 / 124
    Selector membership represented 124/124 124/124
    Engine inventory primary unresolved 20 82
    Static selection bindings 166 104
    Unique report-backed monitor values 67 24
    Configured static RCBs routing actual process reports 6/6 6/6
    Cyclic process MMS polling 0 0
    Device identity SCL BCUGE HostFallback (Low)
    Report continuity BufOvfl=3, findings=5 BufOvfl=2, findings=3

    Exact selected-binding divergence by dataset: CSWI 35→20, EVEGGIO 30→2 (only Ind11.stVal and Ind13.stVal selected), MMXU_SOGI1 36→22, MMXU_SOGI2 20→20, MMXU_SOGI3 20→20, REPORT1 25→20. Differences total 62 binding rows; 43 fewer unique values. Control inventory still inspects all 16 CSWI controls in Discovery but only 2 report-backed CSWI position feedback points survive selector, while Open SCL selects 16. All six RCBs receive traffic; this is a model semantic resolution / selector admission gap, not failure to arm static RCBs.

    Positive verification: #494 schema-safe WYE/DEL phase fix DID work on both ingress types. All 13 exact MMXU1.A/PhV/PPV typed magnitude leaves appear with static URCB acquisition and quality good. AuxV is present in semantic plan but its visibility should be checked beyond screenshot. No need to rerun the phase-code patch.

    Strong contributing mechanism: IP smart discovery ended at NamedVariable=6400, pages=64, complete=False and reports initial reads deferred, with a smaller typed discovery model. The engine semantic binding resolver requires one unique primary candidate or preserves unresolved member, and consumer StaticDataSetAuthoritySelection only admits publishable exact signal rows. Open SCL has richer type templates and reports 82→20 unresolved. The exact omitted member reasons need exported typed schema/probe evidence before treating the name-page cap alone as proven cause.

    Additional acceptance concerns: Both sessions say semantic gate INCOMPLETE and cannot be stamped parity-success based on 6/6 traffic. Existing BRCB BufOvfl/SqNum anomaly means buffered event continuity not certified. Both screenshots show analog values zero with timestamps more than an hour older than screenshot capture: quality good / GI receipt alone does not prove sample freshness. Endpoint/local-network interface address overlap should be checked privately to distinguish local emulator vs real separate relay.

    Proposed minimal engineering plan (NO patch/CI in this comment):

    1. Engine-side selective on-demand ST and MX FCD typed attribute enrichment for exactly the 124 DataSet members, focusing on 28 EVEGGIO missing stVal, 14 CSWI feedback, other unresolved scalar leaves. Bound reads/time/byte budget; not brute-force 6400+ or global discovery duplication.
    2. Restore canonical physical IED identity from trusted MMS evidence if available; never fabricate from hostname/domain.
    3. Use same engine-normalized canonical static report projections and selection semantics for SCL and discovery; preserve original FCDA/FCD and per-member RCB identity, no dynamic dataset or cyclic MMS fallback.
    4. Regression using vendor-free synthetic ST/SDO paths, IED-specific offline SCL vs matching synthetic live model, exact six-DataSet parity, non-overwrite of in-flight control, and no duplicate per-RCB subscriptions.
    5. Qualification based on exact leaf equality (not only total counts), actual InformationReport, per-RCB events, q/t/units, BRCB continuity, and separate comparison of SCL vs discovery session fingerprints.

    Keep #494 draft; phase fix is field-observed, overall Discovery/SCL parity is NOT verified.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions