IEC 61850 is an international standard for communication systems in Substation Automation Systems (SAS) and management of Decentralized Energy Resources (DER). It is seen as one of the communication standards of the emerging Smart Grid. Despite of its complexity and other drawbacks that make it difficult to implement and to use, the protocol is the only one of its kind that is in widespread use by utility companies and equipment manufacturers.

The project libIEC61850 provides a server and client library for the IEC 61850/MMS, IEC 61850/GOOSE and IEC 61850-9-2/Sampled Values communication protocols written in C. It is available under the GPLv3 license. With this library available everybody can now become easily familiar with IEC 61850. A tabular overview of the provided IEC 61850 ACSI services is here.

The library is designed according to edition 2 of the IEC 61850 standard series, but should be compatible to edition 1 in most cases.

In the download section the official releases can be found. For the latest source code and patches check out libIEC61850 on github (https://github.com/mz-automation/libiec61850).

If you prefer a Java solution you can also have a look at the open-source Java implementation IEC61850bean (former openIEC61850) at www.beanit.com.

Overview of libiec61850

This library provides an implementation of IEC61850 on top of the MMS (Manufacturing Message Specification) protocol in standard C. It also provides support for intra-substation communication via GOOSE. The goal of this project is to provide an implementation that is very portable and can run on embedded systems and micro-controllers. Also provided is a set of simple examples that can be used as a starting point for own applications. The library also contains a .NET wrapper to allow the library to be used easily in high-level languages like C#.
This implementation runs on embedded systems, embedded Linux systems as well as on desktop computers running Linux, Windows or MacOS.

The following features are provided:

  • Full ISO protocol stack on top of TCP/IP
  • static implementation of the IED model by generation of C code from SCL file
  • dynamic creation of the IED model by API calls or by configuration file
  • Association service (with password authentication)
  • Read and write services for simple and complex MMS variables
  • Model browsing services (GetServerDirectory, GetDeviceDirectory …)
  • Data set services, including dynamic creation and deletion of data sets
  • IEC 61850 client and server API
  • Simple MMS client API (e.g. to be used with TASE.2)
  • Buffered and unbuffered reporting service
  • Log service
  • Support for Setting Group Control services
  • all IEC 61850 control models are supported by server and client
  • GOOSE publisher and subscriber code that can also be used standalone
  • IEC 61850-9-2 (Sampled Values) publisher and subscriber code that can be used standalone
  • Hardware abstraction layer and implementations for POSIX(Linux), WIN32, BSD style systems (Mac OS X, FreeBSD)
  • Conversion tool to translate SCL files to static IED models
  • Conversion tool to translate SCL files to server configuration files
  • All file services (directory browsing, getFile, setFile, deleteFile…
  • Also suitable for use in resource constraint embedded systems
  • C# client API for applications running on .NET and Mono
  • ready for UCA certification of edition 1 and edition 2 devices

License and Support

libIEC61850 itself is released under the GPLv3. The complete license text can be found in the source code distribution or here. The asn1 code parts contain code of asn1c that is under a BSD style license (see http://lionet.info/asn1c/blog/).
You can also use this library in commercial projects and products by purchasing a commercial license. Commercial Licenses and support is provided by MZ Automation GmbH. Please see the product page or contact info@mz-automation.de for further details.