IEC 61850 / MMS / GOOSE / Sampled Values / SCL
Clean-room IEC 61850 stack for C# engineering tools.
Build reusable protocol engines for MMS discovery, smart reads, guarded reporting, GOOSE traffic, Sampled Values publishing, SCL-driven validation, and future station testing workbenches.
- Current milestone
- MMS reporting lab MVP
- Validation
- 68 tests passed
- Runtime
- Dotnet 8
dotnet run --project .\apps\AR.Iec61850.Cli -- \
publish-sv-live ".\samples\scl\01_SV_Stream_4I+4V_(9-2LE).scd" \
--adapter 5 --stream-index 1 --continuous --yes
Capability map
Reusable stack first, tester apps second.
Protocol logic lives in libraries under `src/`. CLI and future WPF workbench projects consume the stack without owning protocol rules.
SCL engineering model
Parse expected IEDs, DataSets, GOOSE, SV, ReportControl blocks, APPID, destination MAC, VLAN, and duplicate/conflict evidence.
Process-bus frame codecs
Generate and parse Ethernet/VLAN GOOSE and Sampled Values frames with deterministic round-trip tests and live adapter smoke paths.
Replaceable transports
Run the same publisher session against in-memory tests, generated PCAP workflows, or selected raw Ethernet adapters through Npcap.
Validation-first CLI
Inspect SCL, generate PCAP, inspect PCAP, stream decoded events, list adapters, publish SV/GOOSE from SCL profiles, discover MMS IED models, and run guarded report smoke tests.
Validation evidence
Live protocol proof, not only offline bytes.
The stack now has live SV publishing, live GOOSE publishing, smart MMS reads, and guarded static/dynamic reporting evidence against a lab IED.
Clean architecture
Protocol engine boundaries are explicit.
Byte primitives
BER, MMS data values, Ethernet, VLAN, MAC, UTC time.
SCL engineering model
IEDs, DataSets, control blocks, addresses, reports, conflicts.
Process bus services
GOOSE and SV publishers now, subscribers next.
MMS stack
TPKT, COTP, ACSE, discovery, smart reads, guarded reports.
Quick start
Try the stack from PowerShell.
dotnet run --project .\apps\AR.Iec61850.Cli -- inspect-scl .\samples\scl\01_SV_Stream_4I+4V_(9-2LE).scd
dotnet run --project .\apps\AR.Iec61850.Cli -- publish-sv-live ".\samples\scl\01_SV_Stream_4I+4V_(9-2LE).scd" --adapter 5 --stream-index 1 --frames 4000 --dry-run
dotnet run --project .\apps\AR.Iec61850.Cli -- publish-goose-live .\samples\scl\minimal-station.scd --adapter 5 --stream-index 1 --duration-sec 10 --toggle-every-sec 2 --yes
dotnet run --project .\apps\AR.Iec61850.Cli -- mms-report-monitor 192.16.1.157 --port 102 --rcb OCR7SR12PROT/LLN0.BR.brcbA01 --duration-sec 60 --yes
Active publishing sends raw multicast Ethernet frames. Live report commands write RCB attributes. Use only isolated lab equipment.