DNP3 library by JPEmbedded is easily portable to any device with or without an operating system. It supports both, outstation and master side, serial and TCP operation modes. The implementation in C++ language takes into account requirements specific for embedded platforms, like:
- resource efficiency,
- high configuration flexibility,
- HW platform independence.
DNP3 library supports level 3 interoperability and the following features:
- static data points (class 0),
- events (class 1-3),
- reading / writing of data objects,
- control operations,
- data freeze,
- cybersecurity (IEC 62351).
The main components of the library are:
- DNP3 core library,
- hardware abstraction layer (HAL),
- configuration file,
- master application or outstation application
Core library implements the bulk of the functionality specified by the standard and it is common for outstation and master. It handles data access, generation of events and control model. HAL provides an abstraction of hardware platform and operating system (if used). The configuration file defines a set of macro-definitions which enable or disable selected features of the library, customize it’s behaviour and configures resource (e.g. RAM) utilization by specifying the size of buffers used for reporting or maximum number of instances of some type e.g. data sets. Outstation / Master application realize logic specific for a given device and is usually implemented by the end-user of the library.