IEC 61850 Source Code Library

Our IEC 61850 Source Code Library provides a quick and cost effective way to implement an IEC 61850 Server, Client, GOOSE, or Sampled Values.  The library was designed from the ground up to fully support IEC 61850 services and efficiently use resources.  We offer our Library Components in ANSI-C, C++, Java or .NET Components for maximum flexibility across many different applications.  

For almost 30 years, Triangle has provided the diagnostic tools and protocol expertise to our customers to support all their conformance  & certification needs. We will work with you, as needed, to ensure that your implementation of our source code libraries will pass all industry related certification and conformance testing.

Related Products


What's New

ANSI-C Library
Current Release:  V12.2.0
Release Date: February 2024

C++ Library
Current Release:  V5.7
Release Date: February 2024

.NET Component
Current Release:  V5.7
Release Date: February 2024

Java Wrappers
Current Release: V5.7
Release Date: February 2024 

Newest Features in Latest ANSI-C Library Release

  • Fixed security vulnerability. A specifically crafted report with illegal fields could cause the server to crash. 
  • Added support for SynchSourceID in the SmapledValueControlBlock Options field (smvOpts).
  • The Services section of the SCL file is now fully supported when defined under the AccessPoint Element.

Key Additions to Recent Releases of ANSI-C Library


   -Made KDC Client run in the same process as the stack
   -Added support for KDC Client
    -Added logging support in KDC Client
    -Improve premake support for openssl v3.x/v1.1.1
Support for building static and as a shared library


   -Security Update per ICSA-22-249-01
   -New build system based on premake5

    -KDC support for Routable GOOSE/SampledValues
    -Upgraded to Opnssl support for v3.x
Separate layer 2 GOOSE/SAV and Routable GOOSE/SAV in the build so they are independent of each other.
    -Added MapTimeStampstoSubVal flag on the Client and Server Configuration class. This defaults to true. If true 't' timestamps are mapped to subVal and subQ.
    -Routable threading model has been re-designed to reflect the layer2 (DL) design.


    -Security Update per ICSA-22-249-01


    -Updates to support authentication and encryption of Routable GOOSE and SAV


    - Updates to support the first Amendment of Edition 2 of the core parts of IEC 61850
    - Update schema to 2007B4
    - LGOS support and LPHD.sim processing for GOOSE subscriptions
    - Callbacks interface to inform server application of writes to Control Blocks
    - Persist logs via file mapping
    - Allow TLS and MMS authentication independently
    - Update Logging - allow journal events, log events on LCB enable and disable
    - Update to openSSL 1.1.1 - but restrict from using TLS 1.3, as this is not compliant to 62531
    - Update R-GOOSE to Amd1 of part 8-1


- Updates status value for BSC
- Segmentation of reports does not depend on OptFlds
- Add Routable ( 90-5 ) to SAV example application
- TASE.2 allow writing DSTS enable without alternate access
- Removed eval handler for 't' attributes
- Improve 64 bit handling
- Store scaleFactor, units, multiplier for extRefs
- Provide method to find related DAs for extRefs
- Updated error codes for ConfirmEditSGValues
- Add API to set trace level and mask at runtime
- New API to start multiple servers from SCD file without reparsing the SCL
- Support application managing GOOSE enable outside the stack context
- Allow MMS authentication without TLS
- Improve tracing for connect errors
- Support IEC61850 64 bit datatype
- Added installer for NDIS drivers
- Add Journal entry and ReasonCode support
- Update sample certificates for MMS and TLS
- Reinitialize CBBs and services when creating a new stack context
- Reorg 2 lines of code in jour_if.c because VS2017 optimizer can't make 2+2 equal 4

Addressed conformance issues:

                - Clear GoEna and set NdsCom when GOCB configuration is not complete
                - Release ResvTms (sBr23)
                - Automatic reservation of RCBs (TISSUE 1477)
            - Improved microsecond timers   
            - Added support for using system clock for timestamps on Windows®
            - Added support for TCP keepalive setting configuration at runtime on Windows®
            - Added support for SE FC in Edition 1 SCL Files
            - Updated GOOSE retransmission scheme to use monotonic clock

- Added a common subscribe function for routable GOOSE (R-GOOSE) and traditional multicast GOOSE
- Implemented several Technical Issues (TISSUES) including TISSUE 1369 and 1091
- Improved handling of GOOSE messages after TAL expiration
- Improved timing resolution for Windows® implementations
- Updated examples for implementing IEC 61850 servers
- Update to Linux® static allocation of semaphores and events
- Improvements to time calculations with microsecond resolution
- Several other enhancements - see release notes for full list
- Fixed issue with failure to disable report control blocks upon loss of two-party-assocation
- Improved GOOSE by fixing timeout miscalculation and unbind error
- Improved compiler warnings
- New macro to allow a modifier for functions likely to be exposed
- This major release improves the library for more streamlined IEC 61850 implementations and builds on the 20 year track record of dependable code and high performance.
- A new build process is provided that more closely follows typical customer use. The library builds completely from the application directory to simplify integration into a larger project. Multiple configuration files have been condensed into a single directory with one header file and the application makefile.
-The code base has been significantly refactored in order to streamline library implementations and make debugging easier.
- The target layer has been abstracted and consolidated. Linux and WindowsTM targets are provided and OS specific code has been collected to make porting easier. The Linux target has improved threading and semaphore handling.
- A new consistent tracing mechanism has been added.  Applications can filter on messages for different library modules (like SCL parsing, transport, ACSI services, etc.) and can filter by message severity.
- Most examples have been simplified to more clearly demonstrate particular functionality.
Initial support for routable Sampled Values and GOOSE (according to Part 90-5 of IEC 61850 standard) has been added. This new capability allows Sampled Values and GOOSE messages to be routed across wide area networks so that substations in different locations can share voltage, current, phase, and frequency data from phase measurement units. Sharing these accurate measurements and event data enables the implementation of Wide Area Measurement and Protection and Control (WAMPAC) systems to help stabilize large, interconnected power systems.

Allow integrity & GI when there is connection but rptEna=False
Made changes to support Ed1 versus Ed2
Buffer integrity reports while there is no connection
Improved checking on MMS context pointers
TLS/SSL method support for PNNL
Added support for extRefs
Addressed IEC 61850 TISSUES from WG10

Added updates for Schema 3.1
Added support for CRL updating
Improved parsing of SCL namespaces
Improved Client API reporting callbacks
Added optional compatibility with legacy IEC 62351 implementations
Added support for mixed Ed. 1/Ed. 2 systems
Added support for GOOSE Test flag
Added improvements to Tracking nodes
Updated classes and primitives for conformance testing
Added updates for Schema 3.1
Removed security checks for GOOSE/SAV (due to revisions to schema and IEC 62351)

Added support for IEC 61850 Ed. 2
Created new XML modeling scheme
Added Ed2 Class models, Reporting and Logging Models, and Service Tracking
Added Analog control support (AnalogueValue structure as ctlVal)
Added IEC 62351 security
Changed to Ed2+Ed1 schema, adding nIedSclVersion and nSclVersion, and
changing control block instances
Changed to Ed2+Ed1 log control blocks and log definitions from SCL, including
domain specific
Added fileDirectory change (handle case of file argument to fileDirectory service
Added settings Group Control Block support
Added support for arrays of SDOs
Allow for array elements in datasets
Added support which allows all Client write requests to automatically trigger
invoking evaluation handlers and reporting



Quick Links  Contact Us:
About Us

Triangle MicroWorks, Inc.
Sales: +1 919.870.5101
Support: +1 919.781.1931
Fax: +1 919.870.6692

Follow us on YouTube Follow us on Facebook Visit us on LinkedIn Follow us on Twitter

Copyright © 2013-2024 Triangle MicroWorks, Inc. All Rights Reserved