Go (cgo) bindings for libIEC61850 — MMS, GOOSE, and Sampled Values (SV) client/server.
go get -u github.com/boeboe/iec61850Requires: libiec61850 v1.6.1 built with R-GOOSE, R-SMV, and SNTP support. See Building libiec61850 below.
Detailed developer documentation:
| Document | Description |
|---|---|
| FUNCTIONS.md | API reference for all exported functions (C↔Go mapping, parameters, examples) |
| STRUCTS.md | Struct and type reference (Client, Server, MMS, GOOSE, SV, configuration, timestamps) |
| ENUMS.md | Enums and constants (MmsType, FC, quality flags, control models, etc.) |
- MMS client/server, data access (read/write), discovery, data sets, reports, file services, setting groups
- GOOSE (IEC 61850-8-1): publish/subscribe, control blocks (GoCB), R-GOOSE
- Sampled Values (SV) (IEC 61850-9-2): publish/subscribe, R-SMV
- Server: data model, attribute updates (including timestamp + time quality), write/control handlers, TLS
- Client: connect (sync/async, with auth), read/write, timestamps with quality (
UtcTimeValue), reports, TLS
- Client control · Client RCB · Client read/write · Client setting groups
- TLS client · TLS server
- Server write access · Server control · Server direct control + GOOSE
Build the C library with R-GOOSE, R-SMV, and SNTP before using this package.
Prerequisites: mbedtls (e.g. brew install mbedtls on macOS, apt-get install libmbedtls-dev on Debian/Ubuntu).
./scripts/rebuild_libraries.sh
go test -v -run TestLibraryVersion # verify buildThis project is licensed under the GNU General Public License v3.0 (GPL-3.0).
This is required because the Go binding links against libIEC61850 (the official open-source C library for IEC 61850 protocols by MZ Automation), which is distributed under GPL-3.0. Any use or distribution of this binding is therefore subject to the same GPL-3.0 terms. See LICENSE in this repository for the full license text.