A high-performance Rust library for encoding and decoding IEC 61850 GOOSE and Sampled Values (SMV) messages. !The library is under development!
This library provides efficient Rust implementations for IEC 61850-8-1 (GOOSE) and IEC 61850-9-2 LE (Sampled Values) protocols. It features:
- sampled value encoding
- sampled value decoding
- GOOSE encoding
- GOOSE decoding
It also gives you most common client functionality:
- Server discovery
- Polling of data values
- Reporting
- Control capabilities
Add this to your Cargo.toml:
[dependencies]
iec_61850_lib = { git = "https://github.com/OpenEnergyTools/iec61850lib.git" }Or clone and build locally:
git clone https://github.com/OpenEnergyTools/iec61850lib.git
cd iec61850lib
cargo build --release| Topic | Description |
|---|---|
| GOOSE | Encoding and decoding IEC 61850-8-1 GOOSE frames |
| Sampled Values (SMV) | Encoding and decoding IEC 61850-9-2 LE SMV frames |
| Client | Async client: data access, reports, and control services |
| Benchmarking | Performance analysis and benchmark methodology |
You can check performance with your hardware:
# Run all benchmarks
cargo bench
# Run specific benchmark
cargo bench --bench smv_decode
cargo bench --bench goose_codecThe library includes comprehensive unit tests (68+ tests):
# Run all tests
cargo test
# Run specific test
cargo test test_roundtrip_extreme_values
# Run with verbose output
cargo test -- --nocaptureCopyright © 2025-2026 Jakob Vogelsang. All rights reserved.