Our ANSI C source code library provides a quick and cost effective way to implement a DNP3 master or outstation.  A .NET component version is also available.  And they’re royalty free!


  • Conforms to DNP3 Level 4+ Subset Definitions requirements.
  • Supports any physical communication network including RS 232/485 and TCP/IP.
  • Can be used in event-driven or non-event-driven environments.
  • Supports binary (input and output), analog (input, deadbands, and output), counter (running and frozen), time objects, octet strings, virtual terminal, device attributes, data sets, and internal indications.
  • Supports File Transfer objects for transferring large data blocks (e.g., configuration or oscillographic (COMTRADE) data).
  • Supports Unsolicited Responses and/or polled Report-By-Exception (RBE) for change event objects.
  • Supports function codes for confirm, read, write, select, operate, direct operate, direct operate NoAck, freeze, freeze NoAck, freeze and clear, freeze and clear NoAck, cold/warm restart, assign class, file transfer, enable/disable unsolicited response, activate config, record current time, and delay measurement.
  • Supports qualifier codes for start-stop range (0x00, 0x01), all points (0x06), limited quantity(0x07, 0x08), indexed (0x17, 0x28), and free format (0x5B).
  • Supports DNP3 Secure Authentication.
  • Extensive, built-in (but removable) diagnostics including a protocol analyzer used to visually decipher protocol messages. The diagnostic and analyzer strings can be directed to any target system display device, even a serial port or RAM buffer.
  • Large response messages can consist of multiple data link frames and multiple application layer fragments.
  • Provides support for statistics of communication protocol errors such as bad CRC, invalid synchronization byte, and incorrect frame sequence number to help identify faulty communication lines.
  • No royalty fees per unit sold.

Outstation Library Features

  • Database manager maps randomly organized Target Application data points (binaries, controls, integers, floats, etc.) into sequential points within DNP3 object groups.
  • Example Database Interface implementations are provided for testing, illustration, and as templates to be used for developing final Database Interface.
  • Report-by-Exception data can be automatically generated by configurable scans of Target Application data.
  • Supports Virtual Terminal objects for embedding other protocols.

Master Library Features

  • An unlimited number of remote devices can be configured on an unlimited number of communication ports, and new remote devices can be added at runtime.
  • Multiple devices can be assigned to the same communication port to support multiple network communication topologies.
  • Database manager maps received DNP3 data objects into Target Application data points (binaries, controls, integers, floats, etc.).

ANSI C Source Code

  • Written in ANSI-Standard C Source Code, under a strict corporate coding standard.
  • Designed to be processor and operating system independent, using any ANSI-Standard C compiler.
  • Simple configuration for big-endian or little-endian byte order.
  • Can be used with or without a Real Time Operating System (RTOS).
  • Database interface supports any database, ranging from direct I/O input with no storage to complex, relational databases.
  • Includes sample applications and source code for Low-Level Target Interface for Linux and Windows (see Design Details for Implementation).
  • Typical product integration times are less than three weeks.

.NET Components

  • Based on Triangle MicroWorks, Inc. industry-proven Source Code Library design.
  • Supports all .NET Languages (C#, J#, Managed C++,VB .NET, etc.) and tools.
  • Compatible with .NET 2.0 and later Frameworks.
  • Integrates with Visual Studio Help.
  • Available as single-use or redistributable with source code.
  • Source code version includes corresponding ANSI-Standard C Source Code Library.
  • Includes built-in simple database with save/restore capabilities; also supports user-defined database.
  • Ideal for quick development of products and tools requiring DNP3 support.
  • Scalable for large implementations.
  • Typical product integration time of less than one week.

What’s New

Current Release: v3.16.01
Release Date:  September 2013

Newest Features in this Release

  • Corrected an issue where DNP3 transport layer would reject a message if the last frame only contained 2 bytes of transport data.

Key Additions to Recent Releases


  • Addressed all items associated with ICS-CERT Advisory (ICSA-13-240-01).
  • Improved input verification.
  • Made improvements to DNP3 Secure Authentication interface.
  • Enhanced Assign Class functions.
  • Added configuration option to disable support for receiving broadcast messages. 

v3.14 – Enhanced DNP3 SAv5 implementation.
v3.07 – Added sample Linux and Windows target implementation.
v3.05.01 – Added updates to DNP3 SA approved by DNP3 TC.
v3.01.01 – Added ability to keep time on a per-session basis.
v3.01.00 – Added support for DNP3 SAv2.
v3.00.44 – Updates to Data Sets.
v3.00.43 – Added support for Data Sets and Object 0 (Device Description)
v3.00.38 – Added support for Double Bit data types and Self Address Discovery mechanism.
v3.00.36 – Added support for File Transfer Event Mode.
v3.00.35 – Added memory alignment support.
v3.00.32 – Added support for multiple threads.