DNP3

DNP3 (aka IEEE 1815) is the most common SCADA protocol used in electric power in North America. It is event-based and efficiently transfers measurement data between outstation and master components. It can be operated in a purely poll-based mode, or an unsolicited (push) mode where the outstation transmits events as they occur.

Current Version: 1.5.2
Release Date: January 16th, 2024

GitHub Nuget.org Maven Central

View Documentation:

Scale Up or Down

Our DNP3 library is fully asynchronous and uses the most efficient event-driven backend provided by your OS: epoll on Linux, IOCP on Windows, etc. The library scales to many thousands of concurrent communication sessions while maintaining a small memory and CPU footprint.

Conformance Testing

The outstation is tested using a fully-automated conformance test harness. The test harness implements the conformance test procedures as published by the DNP Users Group and augments our own unit and integration test suites. This means that users are unlikely to face interoperability challenges talking to 3rd party implementations of the protocol.

JavaTCPUDPTLSSerial.NETC++C APIGenerated from modelRustDNP3Async Runtime

Features

  • Level 3 master and outstation components in a single library
  • Supports TCP, serial, and TLS communication channels
  • Written in safe Rust with idiomatic bindings for C, C++, .NET Standard, and Java
  • Blazing fast (and secure) zero-copy / zero-allocation parsing of application data
  • Automatic mapping between DNP3 and higher-level measurement types
  • Built-in logging and protocol decoding
  • Runs on all platforms and operating systems supported by the Tokio Runtime:
    • Windows, Linux, OSX, FreeBSD
    • x86, x64, ARM, PowerPC, MIPS