--- title: "DNP3" --- # DNP3 > DNP3 is a communication protocol commonly used in water and electric utilities. It connects a central **master station** to multiple remote devices (outstations), creating a distributed network without overwhelming the communication infrastructure. This page covers DNP3 connection information and general protocol requirements. DNP3 is similar to the Modbus protocol in that it is more device agnostic, but it is newer, more robust, and because of that, more complex. Check your device documentation to verify DNP3 support. :::note The DNP3 driver does not support DNP3 Secure Authentication. ::: ## DNP3 Drivers Ignition supports two DNP3 drivers: * [DNP3 Driver](ignition-modules\opc-ua\opc-ua-drivers\dnp3\dnp3-driver\dnp3-driver.md) * [Legacy DNP3 Driver](ignition-modules\opc-ua\opc-ua-drivers\dnp3\legacy-dnp3-driver\legacy-dnp3-driver.md) In versions prior to 8.1.36, the DNP3 driver is now labeled as **DNP3 Driver (Legacy)** in the Gateway. Starting in 8.1.36, the new DNP3 driver is installed by default on new systems, while the Legacy driver remains available as an optional add-on. Although the Legacy driver still functions, it no longer receives updates or support. ## Scripting Functions The DNP3 and Legacy DNP3 drivers use the following syntax for their respective scripting functions to avoid namespace conflicts: * DNP3 Driver scripting functions: [`system.dnp`](appendix/scripting-functions/system-dnp/system-dnp.md) * Legacy DNP3 Driver scripting functions: [`system.dnp3`](appendix/scripting-functions/system-dnp3/system-dnp3.md) ## Supported Operating Systems Both the DNP3 and Legacy DNP3 drivers are compatible with: * Windows x64 * Linux x64 * Linux arm32 * Linux arm64 :::note The native libraries for both drivers are not currently supported on macOS. ::: ## Upgrading from the Legacy DNP3 Driver To manually upgrade from the Legacy DNP3 driver: 1. Delete or rename the Legacy DNP3 device. 2. Create a new DNP3 device and use the old Legacy DNP3 device name in the new DNP3 device Name field. 3. Fix tag references as necessary. :::note The DNP3 driver operates differently from the Legacy driver. Review the [DNP3](ignition-modules\opc-ua\opc-ua-drivers\dnp3\dnp3-driver\dnp3-driver.md#connection-settings) and [Legacy DNP3](ignition-modules\opc-ua\opc-ua-drivers\dnp3\legacy-dnp3-driver\legacy-dnp3-driver.md#connection-settings) connection settings carefully after upgrading. ::: ## Internal Indicators Each response from an outstation includes an Internal Indication (IIN) bit field. This field reports various states or error conditions within the device. These IIN bits are exposed as read-only points. Refer to the table below for descriptions of what the exposed IIN bits indicate. | Indicator | Description | |---|---| | Broadcast | A broadcast message was received. | | Class 1 Events | Additional Class 1 event data is available. | | Class 2 Events | Additional Class 2 event data is available. | | Class 3 Events | Additional Class 3 event data is available. | | Need Time | The outstation requires time synchronization. | | Local Control | One or more outputs are in local (manual) control mode. | | Device Trouble | An abnormal condition exists within the device. | | Device Restart | The outstation has restarted. | | No Func Code Support | The requested function code is not implemented. | | Object Unknown | The requested object is unknown or unsupported. | | Parameter Error | There was an error with one or more request parameters. | | Event Buffer Overflow | The outstation’s event buffer has overflowed. | | Already Executing | A previously requested operation is still executing. | | Config Corrupt | The outstation's configuration is corrupted. | ## Terminology | Term | Definition | |---|---| | Unsolicited Response | A message sent from the outstation to the master without a direct request. This behavior is enabled when the master allows unsolicited reporting of points. | | Integrity Poll | A request from the master that gathers all current event data (Classes 1–3), followed by the static data (Class 0) for each configured point. | | DNP3TIME | A timestamp format in UTC, measured as the number of milliseconds elapsed since January 1, 1970. As of 2008, this format is the required time base for all DNP3 timestamps. | ## Aliased Points Aliased points let you assign meaningful names and folder paths to DNP3 points. They are especially useful for addressing points that were not returned during the initial integrity poll. :::note The DNP3 driver does not support aliased points. This feature is available on the [Legacy DNP3 driver](ignition-modules\opc-ua\opc-ua-drivers\dnp3\legacy-dnp3-driver\legacy-dnp3-driver.md) only. ::: | Property | Description | |---|---| | Point Address | The group, variation, and index that fully describe a point. A full address includes:An integer prefixed with `g` for group (e.g., `g40`)An integer prefixed with `v` for variation (e.g., `v2`)An integer prefixed with `i` for index (e.g., `i5`)Example: `g30v1i20` | | Browse Path | A `/` separated folder path where the point should appear.Example: `Facility1/Voltage` | | Description | (Optional) A user-defined description of the point. | :::note Tags created from these aliases may need to have their OPC Item Path updated if the **Point Address** is later changed in the **Aliased Points** configuration. ::: ## Buffered Events Buffered events allow missed events to be preserved and replayed after a disconnect. This feature can be enabled by setting the Queue Size property on the corresponding [Tag Group](platform/tags/tag-groups/tag-groups.md#tag-group-properties) to a value greater than 1. The Queue Size determines how many events the driver will buffer per tag. The driver retains only the most recent events, dropping older ones when the buffer is full. For example, if the Queue Size is set to 20 and 30 value changes occur while the device is disconnected, the 10 oldest events will be dropped. When the connection is restored, the driver plays back buffered events in order from oldest to newest. This updates the corresponding Ignition tag for each event, which can trigger value changes in systems such as: * Alarms (including recent events and Alarm Journal records) * Tag History (when the History **Sample Mode** is set to **On Change**) * Tag Event Scripts Once all buffered events are replayed, the tag resumes displaying its live value. ### Support of this Feature This Buffered Events feature can only be used by devices that support Sequence of Events (SoE), and have the option enabled for points Ignition is subscribed to. Note that the data type for SoE may differ from the data type that is received by normal subscription. This is generally due to a configuration on the Default Variation property in the device. ## Browsing DNP3 Points When the driver connects to an outstation, it performs an integrity poll. Any DNP3 objects returned are mapped to OPC items using their group, variation, and index values. To see these points, open the [Connected Devices Window](platform\tags\creating-tags\creating-tags.md#connected-devices-window) in the Designer. | Type Name | Group | Supported Variations | |---|---|---| | SingleBitBinaryInput | 1 | 1 - Packed format2 - With flags | | DoubleBitBinaryInput | 3 | 1 - Packed Format2 - With flags | | Binary Output | 10 | 1 - Packed Format2 - With flags | | Counter | 20 | 1 - 32-bit with flags2 - 16-bit with flags5 - 32-bit6 - 16-bit | | FrozenCounter | 21 | 1 - 32-bit with flags2 - 16-bit with flags5 - 32-bit with flags and time6 - 16-bit with flags and time8 - 32-bit10 - 16-bit | | AnalogInput | 30 | 1 - 32-bit with flags2 - 16-bit with flags3 - 32-bit4 - 16-bit5 - Float with flags6 - Double with flags | | FrozenAnalogInput | 31 | 1 - 32-bit with flags2 - 16-bit with flags3 - 32-bit with time of freeze4 - 16-bit with time of freeze5 - 32-bit6 - 16-bit7 - Float with flags8 - Double with flags | | AnalogOutput | 40 | 1 - 32-bit with flags2 - 16-bit with flags3 - Float with flags4 - Double with flags | | OctetString | 110 | 0 - 225 |