ARSVIN GitHub

ArSubsv generic Sampled Values explorer roadmap

Product decision

ArSubsv is a generic IEC 61850 Sampled Values subscriber, inspector, measurement viewer, and evidence tool.

The receive path must not contain manufacturer or device-family branches. Product identity may appear in imported evidence or reports, but it must never select a parser, dataset order, engineering scale, quality layout, or health result.

The intended receive pipeline is:

Ethernet / VLAN / APPID
        ↓
generic IEC 61850-9-2 APDU and ASDU parser
        ↓
generic seqOfData structural inspection
        ↓
optional SCL-driven ordered dataset mapping
        ↓
explicit standard-layout or engineering-context evidence
        ↓
waveform, RMS, phasor, quality, and report

Reference behavior

A proven SV engineering workflow discovers one or more streams, shows waveforms, RMS values, phase angles, phasors, individual samples, recording/replay, and reports. Configurable IEC 61869-9 datasets are interpreted and checked through imported SCL rather than manufacturer heuristics.

ArSubsv should reproduce that workflow while keeping every interpretation explainable.

Audit findings

Correct foundations already present

Incorrect or unsafe behavior to remove

  1. Unbound payload auto-layout

The current Subscriber recognizes selected payload pair counts and assigns names such as Ia, Ib, Ic, In, Va, Vb, Vc, and Vn. A 64-byte payload can therefore be interpreted as a fixed 4I+4V layout without SCL. This is structural guessing and can mislabel configurable IEC 61869-9 datasets.

  1. Synthetic IEC references

Generic traffic can receive generated references such as TCTR1/AmpSv.instMag.i. Those references look authoritative even though they were not read from SCL or the wire.

  1. Unbound engineering scaling

Packet length and observed sampling rate were previously sufficient to activate provisional A/V scaling. This is now hardened: generic unbound traffic remains raw counts.

  1. Unknown mapping treated as stream warning

A valid stream without SCL is currently classified as WARN because channel names or scaling are unresolved. Missing semantics are not a protocol failure. Protocol/stream integrity and interpretation completeness must be separate states.

  1. Waveform model fixed to eight named channels

The current waveform container is optimized for Ia/Ib/Ic/In and Va/Vb/Vc/Vn. Configurable datasets require a generic selected-element trace model before semantic aliases are added.

  1. Profile-oriented compact state

The UI emphasizes profile and confidence. The primary receive workflow should instead emphasize wire validity, mapping source, semantic completeness, and measurement provenance.

  1. Global parse health can remain sticky

Lifetime parse-error count can keep the global state BAD after the current traffic has recovered. Lifetime counters should remain evidence, while current health should use a rolling window.

Implemented in P3A

Generic seqOfData inspection

SvGenericPayloadInspector exposes every complete big-endian 32-bit word through:

An eight-byte grouping shape is only structural evidence. The second word is not called quality until SCL or an explicit reviewed standard layout resolves it.

Trailing bytes are preserved and reported instead of silently discarded.

Generic ASDU inspection

SvGenericAsduInspector exposes:

Dataset reference presence does not mean dataset semantics are already known; SCL binding is still required.

Scaling hardening

Engineering A/V scaling now requires all of the following:

  1. SCL-derived current or voltage semantics,
  2. fixed 4-current/4-voltage value-quality structure,
  3. expected payload size,
  4. declared or observed protection-rate evidence.

Packet shape, rate, product name, MAC, APPID, svID, amplitude, and manufacturer identity cannot activate scaling on their own.

Generic Subscriber presentation

When an SCL mapping is not bound, the Subscriber presentation layer now:

When SCL is bound, existing ordered SCL decoding and measurement views remain available.

Next implementation tranches

P3B — replace the runtime auto-layout path

Replace the unbound runtime auto-layout decoder with SvGenericPayloadInspector, so synthetic channel references are not created internally at all.

Without SCL, the Decoded table contract is:

Field Meaning
Offsetbyte position inside seqOfData
Wordgeneric word index
INT32signed big-endian representation
UINT32unsigned representation
FLOAT32alternate representation, clearly marked
Rawexact bytes
Semanticsunresolved

No Ia/Va labels, no A/V units, no quality health decisions, and no phasor calculation are permitted in raw generic mode.

P3C — SCL-driven semantic mapping

Resolve the ordered path:

SampledValueControl
  → datSet
  → DataSet FCDA order
  → DO/DA/BType/CDC
  → payload element decoder

Each displayed field must carry a mapping source:

Unknown, absent, and conflicting states must remain distinct.

P3D — generic selected-element waveform

Introduce a generic numeric trace model independent of Ia/Ib/Ic/Va/Vb/Vc.

P3E — explainable health layers

Expose four independent states:

PROTOCOL       GOOD / BAD
STREAM         GOOD / WARN / BAD
CONFIGURATION  MATCH / WARN / BAD / NOT LOADED
MEASUREMENT    RESOLVED / PARTIAL / RAW

The global headline should be driven by current protocol and stream integrity. Missing SCL or unresolved engineering scale must not turn a valid stream BAD.

P3F — evidence and workflow parity

Real-device evidence policy

PCAP and SCL from any conforming or installed-base device are regression fixtures for the generic engine. They are not permission to add manufacturer-specific decoding branches.

A real-device fixture should prove:

Any device-specific exception must be documented as an implementation defect or explicit compatibility observation, isolated from the generic standards path, and never silently selected by manufacturer identity.

GPL-3.0-or-later community documentation. Commercial terms require a separate agreement.Review this page on GitHub →