Skip to content

Add SCL-aware IEC 61850 GOOSE Subscriber workspace - #36

Merged
masarray merged 26 commits into
mainfrom
feature/goose-subscriber
Jul 16, 2026
Merged

masarray merged 26 commits into
mainfrom
feature/goose-subscriber

Conversation

@masarray

@masarray masarray commented Jul 16, 2026 •

Copy link
Copy Markdown
Owner

Summary

Add a new GOOSE Subscriber tab immediately before Diagnostics. The workspace captures IEC 61850-8-1 GOOSE in read-only mode through the native ARIEC61850 Npcap transport, supervises stream behavior, and displays every allData value in exact DataSet order with engineering names recovered from SCL or live MMS discovery.

ARIEC61850 integration audited

  • NpcapAdapterCatalog and NpcapProcessBusFrameSource for raw Ethernet capture
  • GooseFrameParser.TryParseEthernetFrame for IEC 61850-8-1 decoding
  • ProcessBusStreamMonitor for retransmission/state-change classification, stNum/sqNum, TAL, sequence, and SCL diagnostics
  • SclGooseStream, SclDataSetEntry, and SCL communication addressing
  • LiveIedModelDiscoveryDocument, discovered DataSets, members, FC, CDC, and live MMS type metadata
  • MmsDataValueRenderer for compact typed value rendering

Operator workflow

  • select or refresh an Npcap adapter
  • use the default tagged/untagged GOOSE BPF filter or enter a controlled custom filter
  • refresh the model catalog from loaded SCL and connected/discovered IEDs
  • start/stop read-only capture
  • select a detected stream and inspect its ordered DataSet/allData grid

Stream grid

Shows APPID, model IED, goCBRef, DataSet, source/destination MAC, VLAN/PCP, stNum, sqNum, sequence class, TAL, confRev, Test/ndsCom, changed-value count, packet count, binding source, last-seen time, and diagnostics.

Ordered leaf grid

Shows:

  • one-based operator order mapped to zero-based allData position
  • signal name and IEC reference
  • decoded value and previous value
  • FC, CDC, and bType/MMS type
  • SCL/live-discovery/unbound binding source
  • changed-value and missing-frame-member highlighting

SCL FCDA indices are canonicalized after sorting so ARIEC61850's one-based SCL entry index cannot shift the zero-based GOOSE allData position. The displayed row count is the greater of model members and received values, so missing and extra values remain visible.

Binding priority

  1. fully addressed loaded SCL GOOSE stream
  2. loaded SCL DataSet fallback
  3. live-discovered GOOSE/DataSet binding where attributes are available
  4. all live-discovered DataSets matched by the frame's DataSet reference
  5. unbound Leaf 1, Leaf 2, ... fallback preserving wire order

Strong goCBRef/DataSet identity can retain names during APPID or confRev mismatch; the mismatch is surfaced explicitly instead of silently discarding the model.

Runtime and safety

  • protocol analysis is read-only; no GOOSE publishing, GSEControl write, or MMS control operation is introduced
  • every captured frame is observed by ARIEC61850 supervision
  • UI promotion is coalesced per stream to bound WPF work during retransmission bursts
  • stream identity remains stable across confRev changes so configuration changes update the same operator row
  • capture lifetime is linked to application shutdown and explicitly disposed
  • maximum visible stream count is bounded

Build and packaging

  • add project reference to AR.Iec61850.Transports.Npcap
  • verify required ARIEC GOOSE/Npcap APIs in CI
  • add source invariants for canonical SCL/discovery member order and semantic CDC/type mapping
  • document Npcap requirements, architecture, field validation, and operating boundaries

Validation boundary

CI validates source policy, ARIEC API compatibility, restore, Release build, portable x64 publication, and artifact creation. A real switch/IED/Npcap field capture still requires an approved laboratory or commissioning network and must be validated against a known SCL/publisher before operational evidence is relied upon.

masarray and others added 26 commits July 16, 2026 07:53
@masarray masarray changed the title Add SCL-aware GOOSE Subscriber workspace Add SCL-aware IEC 61850 GOOSE Subscriber workspace Jul 16, 2026
@masarray
masarray marked this pull request as ready for review July 16, 2026 02:06
@masarray
masarray merged commit eab1a4d into main Jul 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant