GE Intelligent Platforms > Support >  Drivers - General > DG309
DNP Distributed Network Protocol 3.0 v7.xx
Type File Name Date Posted Size Description

There are files attached to this record that may require you to login.




Code : DNP
Vendor : GE Intelligent Platforms
Hardware Manufacturer : Various
Notes : Available for use with iFIX 4.5, iFIX 5.0, iFIX 5.1, iFIX 5.5, or iFIX 5.8.

Latest Version


Supported Operating Systems

Windows Vista Business Edition (with Super Admin Privileges)
Windows 7 (32-bit and WoW64)
Windows Server 2003, 2008, or 2012
Windows 8.1 Professional (32 and 64-bit)

Supported Devices

Any RTU compliant with the DNP 3.0 protocol

General Features

Up to 200 channels and 1000 devices
Supports DNP 3.0 to level 3 for both Requests and Responses
Sequence of Events (DNP Level 3 only)
Report by exception (DNP Level 3 only)
Slave supported DNP Levels 1, 2, and 3
Internet Protocol – both UDP and TCP
Serial (600 – 115200 baud)
Radio support includes Flow control; Push to Talk control; Pre and Post-transmission delay setting; configurable retries and timeouts
DCOM is not currently supported – the driver must run locally to the hardware

Devices and Channels

Separate configuration of devices and channels
Each device can be connected to one or more channels
Each channel can be connected to one or more devices
Prioritization and automatic fail over when multiple channels are available

Sequence of Events

SOE Level 3 time mode, supporting Local and UTC time
Each and every SOE detected and written to the SOE log file, time stamped to 1msec using time captured by the I/O device
Includes time synchronization
Full support for SOE event display in iPower SCADA

Momentary Change Detect

Momentary changes (e.g. closed>open>closed) can be captured and passed on to the SCADA system regardless of master polling cycle speed.
Each momentary change is time stamped as it was captured by the I/O device providing an accurate record of the change.


“On the fly” configuration without requiring system restart


Communication monitoring in configuration window and to file
Logging of raw binary data (data link) and decrypted data (application layer)
Comprehensive statistics for both devices and channels
Separate SOE log file
All statistics are available in iFIX

Training Videos

To download the training videos:
Visit the Catapult web site:
Register and/or log in
Navigate to Products / DNP3 / Downloads

Revision History

Reason for 7.20 Service Pack release on 12/18/2008:
* Initial release of the driver.

Reason for 7.20a Service Pack release on 09/09/2009:
* Correct parsing if class 1/2/3 and class 0 polls return different obj/vars.
* Correct installation issues on non-English operating systems when setting DCOM permissions..
* Signal conditioning support for negative linear values.
* Correct status display on points viewer status when comms offline.
* Correct softkey license sizes.
* Clear control queue if device disabled.
* Change default secondary poll rates.
* Send integrity poll when device goes (i) online, or (ii) enabled.
* Handle communications with mutli-dropped devices on single serial port.
* Suspend class polling if device offline.
* Change millisecond (ms) configuration display settings to second (s).
* Correct timestamps on received objects.
* Option for non-standard control syntax (ACS).
* Support for CLOSE/TRIP control syntax.
* Support for secondary poll rates.
* Points tool interface rewritten extensively to provide dynamic display of all monitored points.
* Change keep alive to utilize link status, resetting timeout on any outgoing message.
* Correct service registration error on non-English operating systems.
* Correct sequence number handling.
* Handle multiframe messages (MTU 1500).
* New right-click menu option for sending class polls on devices.
* Correct sequence number on confirmation messages.
* Correct IP startup for multiple IP devices.

Reason for 7.20b Service Pack release on 09/18/2009:
* Resolve issue where digital/analog input values can be overwritten by output values returned by a class 0 poll.
* Include remote port number when checking for duplicate IP addresses.
* Align class poll sync times to midnight.

Reason for 7.20c Service Pack release on 06/21/2010:
* Fixed selection of active channel based on priority and status.
* Implemented intermittent check for active channel when using multiple channels per device.
* Installation updates including removing driver shortcuts when uninstalled.
* Fixed handling of g51v1 messages.
* Fixed initialization of control queue size.
* Fixed initialization and configuration of channel buffers.
* Implemented configuration of SEND and RECEIVE buffer sizes for serial channels.
* Implemented support for analog & counter SOEs.
* Support for g50v1 time sync requests.
* Definition of SEND and RECEIVE buffer sizes for IP connections.
* Send Time Sync and Integrity Poll messages on startup, by default.
* Implemented frozen analogs and counters.
* Implemented exception processing.
* Improvements on socket reconnection.
* Fixed installation issues.
* Updated installation to include multimedia training.
* Fixed sync time drift.
* Fixed handling of signed integers for LIN signal conditioning.
* Fixed excessive CPU usage.

Reason for 7.20d ( Service Pack release on 12/12/2011:

v49 -
* Renamed serial and TCP libs to avoid potential conflicts with v7 drivers
* Correct problem when issuing channel statistics reset

v48 -
* Changed default startup option for new devices to Integrity Polls only (removed Time Sync startup option)
* Added 300 and 600 bps in available baud rates for serial and modem ports
* Removed references to FIXIOUser system account
* Added ‘Start-up Sequence’ as an option for the ‘Confirm Connect Using’ setting
* Implemented a separate sync time parameter for the start-up state of a device
* Fixed issue with polling from database points (60.1.0.RD)
* Fixed issue with DNPDIAG "ENABLED" control
* Fixed time stamps for SOE messages (both UTC and LOCAL)
* Fixed issue with driver not exiting after SCADA or OPC shutdown
* Fixed issue with driver crash on SCADA exit
* Modified installation procedure to allow use of default options
* Improved documentation, added a 'Getting Started' page

v47 -
* Fixed handling of SOE time stamps when device time mode is UTC
* Fixed handling of g50v1 objects and PC time
* Fixed handling of remote control thread exit
* Fixed reset of confirm state flag on message timeout

v46 -
* Fixed sending of RESET_LINK_STATES message after device start-up or recovery from failure
* Channels now fail over after the given disconnect timeout has elapsed
* Default Confirm Mode is now NEVER to make it consistent with the default behavior of the DNP driver
* Changed definition of DnpDiag Device Status point - A Start-Up/Confirm state is now considered as Offline
* Fixed driver termination when running as a service
* Setup utility now checks if the driver has already been installed prior to running the Microsoft redistributables

v45 -
* Implemented a number of improvements to the opening and handling of serial ports in order to make it more standard;
* Fixed issue with NIO abnormal termination when handling variant objects;
* Mini-dump files are now generated to the specified log folder by default;
* Fixed processing of object 11 messages;
* Fixed processing of unsupported objects to correctly handle multi-frame messages;
* Fixed processing of CONFIRM option (ALWAYS) to properly handle data link frame flags
v44 -
* Implemented 2 new flow control options: CTS & DCD collision avoidance;
* Fixed RTS/DTR option for serial port PTT controls;
* Implemented new connection option: Disconnect Timeout;
* Fixed reset of point quality for offline devices;
* Fixed class poll stacking issue;
* Fixed memory leak when receiving unsolicited messages;
* Improved log messages for serial port connection process;
v43 -
* Fixed issue with unsent DataLink Layer CONFIRM messages;
* Simplified processing of DNP frames; Fixed DNPDIAG stat items to use new address formats;
* Changed default AppLink timeout to 30s, DataLink timeout to 10s;
* Fixed issue with processing multi-fragment applink messages;
* Fixed driver stoppage with a timing issue where messages can be sent to a NULL link.

v42 -
* Implemented new address format for PULSE controls;
* Fixed handling of block controls;
* Disable PTT delay fields when no PTT option is defined;
* Improved object pointer handling by Implementing queue objects as dynamic objects;
* Improved log files, adding in decimal translations for displayed hex numbers;
* Removed OnDemand and PollOnce options for DNPCIM

v41 -
* Improved the start-up process by (a) sending confirmation messages, (b) fixing interlock issues, (c) allowing the start-up process to continue on an EVENT_BUFFER_OVERFLOW error;
* AppLink layer messages are now sent only if a device has a connected channel;
* Fixed interlocks on START/STOP commands;
* Fixed the handling of incomplete frames;
* Implemented correct processing of FIR/FIN flags for the AppLink layer;
* Driver now reconnects immediately on receipt of unsolicited messages;
* Driver now allows manual class polls during startup

v40 -
* Channel failure now updates device and point status properly;
* Implemented new serial port lock mechanism based on DataLink timeout;
* Startup messages now added as queue rather than stack messages;
* Port locks now preserved on unsolicited messages;
* Added new startup option 'Startup on Failure';
* CONFIRM messages no longer checked for control queue size;
* Modified DNP frame logs to use decimals for addresses, plus OK/FAIL indication for CRC

v39 -
* Fixed handling of User Access Control for Windows; Updated install package to include new modules

v38 -
* Correct handling of obj 51.
* Ensure immediate messages snet regardless of device state;
* Correct issues when deleting or renaming devices/channels/connections;
* Corrected issue with CIMP database points not updating;
* Tidy relationship between channel and device offline status;
* Fix memory leak in DNP client;

v37 -
* Correct stop/start operation;
* Implement data link timeout and change secondary poll rate mechanism;
* Purge application queue on device failure;
* Support for diagnostics through to CIMP;
* Correct UI problem with device level incorrectly changing;
* Implement new device state, especially startup handling;
* New connection settings including reconnection types;

v36 -
* Provide better options to handle disconnection of remote user;
* Provide connection information in DNP tray;
* Correct address initialization parsing (GE Ref #1-1029787041);
* CIMP devcom interface;
* Move global options to logical place in UI system tree;
* Utilize sub-menus in system tree right click menu.

v35 -
* Separate UI - TCP connection from DNPdrv.exe to DNPclient.exe;
* Handle loading new configuration files whilst running;
* Support for options to ignore automatic class poll replies;
* Separate server ports for TCP dual mode;
* Additional data link confirmation settings;
* Support for obj 51, 52 time sync objects;
* Support for obj 70 file id, obj 82 device profile, obj 90 app id;
* Extended class poll, device command user options;
* Global stop/start commands;
* Renamed device/connection settings to clarify usage;
* Updated statistics tab.

v34 -
* Improved socket connection speed on startup.

v33 -
* Fix memory leak;
* Properly handle unsolicited messages;
* Pass DNP quality bits through to OPC/NIO interface;
* Support for buffered SOEs (configurable queue size);
* Improved floating point support.

v32 -
* Properly process timesyncs from devices;
* Configurable queue sizes.

Reason for 7.20e ( / 7.20f ( Service Pack release on 03/27/2012:

v51 -
* Modified the CIMPLICITY interface to support a value of 8-15 for address offsets on Boolean points v50 -

v50 -
* Implemented support for setting/reading the class poll scan rates using database blocks
* Implemented a new interface to MOA to help identify when a point is added to CIMPLICITY after initialization
* Removed the timeout condition from the device STARTUP states to avoid unnecessary timeouts
* Simplified the message-processing algorithm by removing the ControlQueue
* Fixed issue with the correct recognition of .TRIP/.CLOSE digital controls
* Fixed an issue with a start-up message timing out even though it hasn't been sent through the channel yet
* Fixed the check for device link status on start-up, now checks only if the channels are enabled
* Fixed fault with DNP3 client termination when handling around 200 channels and 1000 devices
* Fixed an issue with licensing, where the actual number of licensed points is one less than the license count
* Implemented code to ignore $[GROUPNAME] prefix in DNP3 addressing (required for Cimplicity OPC operations)

Reason for 7.20g ( Service Pack release on 05/24/2012:

v52 -
* Changed handling of RESET_LINK_STATES messages from TOP priority to NORMAL priority messages, which allows RESET_LINK_STATES to be handled by the half-duplex mechanism for serial ports, as well as allow it to be processed in a first-come, first-served basis
* Changed implementation of "Delay After Disconnect" option to use
* GetTickCount() rather than Sleep().
* Added "Enable on Start-up" options for Channel and Device settings
* Fixed issue with handling of dnp_soe.log file (dnp_soe.log is deleted if the maximum number of SOE logs was reached). 
* Fixed issue where controls to DNPDIAG ENABLED tag were not working
* Fixed issue where RESET_LINK_STATES message were timing out prematurely
* Fixed issue where NR messages were getting checked for timeouts
* Fixed issue with quality flag always returning GOOD in Cimplicity interface
* Fixed processing of RECV stats for READ and WRITE operations
* Fixed processing of TimeSync and Stat.Reset controls for DNP Diagnostic points

Reason for 7.20h ( Service Pack release on 01/30/2013:

* Implemented support for CIMPLICITY persistence functionality
* Implemented support for native CIMPLICITY server redundancy functionality
* Improved efficiency of reporting updates to the SCADA by pushing updates from DNP to the NIO DLL (previously NIO had to do an additional poll of the DNP driver)
* Implemented new Application and Data Link layer message processing routines (using proper state tables defined in the DNP protocol documentation)
* Implemented support for more than one DNP port on CIMPLICITY (DNP driver now supports a maximum of 10 ports in a CIMPLICITY Project)
* Implemented new global UI options to enable/disable support for CIMPLICITY persistence and server redundancy functionality
* Implemented new UI option for connections: Data Link Retries, defined as the number of times a failed data link message is retried before discarding it
* Fixed issues with processing of analog input and output values (issues with variations used in reporting values)
* Fixed issue with processing of points that are defined dynamically
* Fixed issue with inconsistent display of quality flags on the Points Viewer and the received data
* Fixed issue with class 0 polls always getting sent after receiving an UNSOLICITED message
* Fixed issue with class poll settings are not put into effect until after the driver is restarted
* Modified the start-up settings for devices - a class 0 poll cannot be disabled unless persistence is enabled, and unsolicited messages are always sent if supported
* Modified the check for changed values in the message decoder functions; a value change must exceed a defined tolerance in order to be processed
* Added a new configuration file option for devices (ChangeTolerance) used in conjunction with the previous modification
* Changed the installer utility to allow integration of the Configuration Manager into the CIMPLICITY Workbench

* Implemented new device diagnostic tag "LastResponseTime" which returns the date and time of the last application layer message received
* Implemented support for variable pulse duration in the DNP addressing format
* The driver now retains the time stamp for current values after recovering from a device failure

* Improved efficiency of Message Log display in the Client Configuration window by only sending messages when the Messages Log window is displayed
* Correct race condition when attempting to reconnect to invalid IP address
* Modified initialization of tags to allow iFIX database manager to retain the I/O address for tags with non-existent devices
* Fixed processing of ONLINE quality flag for counters and analogs
* Fixed handling of time sync controls from the iFIX database

* Fixed issue where device is unable to recover from start-up state when RESET_LINK_STATES message fails
* Modified "Confirm Connect Using" Start-Up option to remember what state it's in if it fails during confirmation

**04/09/2013 - reposted to update release notes. No functional changes

Reason for 7.20i ( Service Pack release on 04/30/2013:

*  Disabled FREEZE commands from device right-click menu (until fix is implemented)
* Fixed issue with freeze commands to specified index sending to all data points instead
* Fixed processing of Frozen analogs and counters in Cimplicity (were occupying the same space as Analogs and Counters)

* Modified use of start-up sync time option for devices: delay is now applied before the first REQUEST_LINK_STATUS message
* Implemented new options to check for Internal Indications from outstation responses. Receiving a matching disabled flag in a response discards that response
* Implement new Advanced Device Setting to ignore NEED_TIME requests

* Added check for FixIOUser account using GE-supplied tool (DSMT.exe) to the installation process

* Fixed issue in Cimplicity where invalid points taken out of manual control were made valid
* Fixed issue in Cimplicity where two points with the same address retain good status even if the driver is stopped
* Implemented new statistical and diagnostic tags for devices
* Implemented new options processing fatal internal indications in outstation responses
* Implemented handling of variation 0 addressing format
* Fixed issue with counters getting stored as analogs
* Fixed issue with processing of initial values when no device communications are present

Reason for 7.20j ( Service Pack release on 06/05/2013:

 * Tidy points viewer reporting when number of licensed points exceeded

* Fixed issue with address 60.x.0.RD causing the database interface to crash
*  Ignore messages from devices with non-matching master addresses.

Reason for 7.20k ( Service Pack release on 10/01/2013:

* Fixed issue in Application Layer processing of invalid function codes
* Fixed issue introduced v7.20.59.2 handling merged control requests

* Fixed issue introduced v7.20.60.0 handling non-existent serial channels
* Implemented graceful shutdown of TCP/IP sockets

* Moved half-duplex option from serial channel to advanced channel configuration, so can now apply to all channel types 
* Check for valid APDU length before processing an AppLayer message
* Improved the search algorithm of the driver image table in the NIO dll
* Fixed handling of ACK responses for UNSOLICITED messages
* Convert values retrieved from a device to the expected type as given by the datablock address in SCADA
* Placed additional interlocks on handling of channel frame buffer to prevent data collision
* Fixed handling of keep alive timer
* Removed restrictions on start-up messages.  i.e. now allows enable/disable of Start-up Message options.
* Add two new options to Advanced Device Settings: Reset Quality of Tags on startup (if Enabled, point quality flags for a device are cleared when the device is enabled)
* Process Unsolicited on startup (Allows processing of unsolicited messages before the first class 0 poll)
* Improved the text on various log messages

* Removed restrictions on forced messages for start-up

Reason for 7.20L ( Service Pack release on 08/18/2014:

* Fixed SELECT/OPERATE procedure to ensure these messages are sent in succession, without possible intervening messages
* Fixed issue with secondary channels for a device not sending keep-alive messages
*Fixed issue with channels remaining online on start-up even if channels are not connected
v7.20.62.4 / v7.20.62.5-
* Various improvements on diagnostic logging
* Fixed issue with controls not working on Cimplicity 9.0
* Fixed issue with driver showing valid data even if the device is offline
* Fixed memory leak caused by the driver in the iFIX Database Manager application
* Changed configuration file format from INI to CSV
* Implemented support for Cimplicity 9.0
* Implemented new diagnostic addresses to enable/disable all controls to a device
* Implemented new diagnostic addresses to enable/disable scheduled class polling
* Implemented new diagnostic addresses to support PLA functionality
* Implemented new configurable setting to control behaviour if a checkback point is offline
* Implemented support for TCP host names when defining IP addresses
* Returned support for iFIX signal conditioning functions
* Implemented new WARMSTART/COLDSTART diagnostic addresses to allow sending these controls directly from the SCADA display
* Fixed issue with driver binding to an unused port even if a specific port was given
* Fixed issue with DNP driver unable to start when unable to find a valid config file
* Fixed incorrect handling of values when copying from the driver to the NIO dll
* Fixed incorrect parsing of g32v7.20.6 messages which was giving invalid error messages
* Fixed issue where a frame length of 0 hangs the driver
* Fixed issue with race condition between sending a response and processing messages which can lock the driver
* Fixed issue with driver lock-up when the primary channel is inactive on start-up
* Fixed issue with client tool locking when channels or devices are rapidly changing state
* Fixed issue with client tool crash when creating a new device or channel, or when removing a connection
* Allowed use of 0 for port and IP addresses to allow automatic configuration
* Changed algorithm to apply Application Layer timeouts only after the message has been sent through the channel
* Fixed issue with client tool crash when copying a channel in the system tree  
* Fixed issue with driver crash when reloading the configuration file
* Changed algorithm to purge pending messages when a channel is either enabled or disabled
* Fixed issue with driver requesting confirmation on class polls when not configured
* Fixed issue with SCADA points not updating until restarted
* Fixed issue with using ON CHANGE update option for Cimplicity points
* Fixed performance issue when closing IP sockets

Reason for 7.20m ( Service Pack release on 03/05/2015:

* Replaced class 0 polls with class 0123 (integrity polls)

* Driver now loads as a proper service for Cimplicity 8.2 and 9.0
* Installation procedure now registers the driver as a service for Cimplicity
* Fixed issue with driver not exiting after SCADA shutdown
* Fixed detection of REQUEST_LINK_STATUS message timeouts
* Implemented check for failed channels even if sockets are still active

* Implemented use of named pipes for data exchange between NIO DLL and the driver
* Fixed issue with update of point values when receiving SOE data

* Further improvements for enhanced failover on iFIX 5.8
* Fixed logic for forced warmstart procedure

* Implemented fix for driver crash on an enhanced failover system for iFIX 5.8
* Fixed compatibility with Windows 2003 Server and XP

Reason for 7.20n ( Service Pack release on 07/08/2015:

* Fixed issue where devices that have lost comms are generating alarms with invalid timestamps
* Fixed issue where devices that have been disabled are showing point values and quality flags in the configuration tool's Point Viewer
* Changed the default setting for TCP channels to disable the LINGER option
* Changed the default channel type to TCP for newly defined channels (as opposed to previous default of SERIAL, since majority of new channels will be TCP)
* Fixed issues with the DNP driver not exiting after iFIX shutdown
* Implemented support for multiple UDP channels sharing the same port number on the local host
* Implemented the use of the DNP response flags as Cimplicity USER flags
* Disabled PurgeSOE() interface (as it is no longer applicable)
* Fixed an issue with serial channels locking after the driver is shut down
* Fixed an issue where point values are not updated if more than one port is defined in the Cimplicity project and the project-specific config option is enabled

* Fixed issue with SOE values not updating to SCADA

* Implemented new option to enable/disable the LINGER option for TCP channels

* Implemented new option to ignore data-link layer direction flag
* Implemented new diagnostic points for device channel status
* Driver now displays a warning dialog if loading a new configuration file
I* mplemented a new feature to support project specific configuration files

* Fixed issue with overwrite of config files when specifying defaults
* Fixed driver lock on Windows Server 2003 (caused by string formats and log messages)
* Fixed various installation issues with the DNP driver:
    - Fixed issue where Microsoft DLLs are missing after installation
    - Installation now checks for running DNP processes beforehand
    - Display a warning dialog if the DNP Driver is found to be running while installing
    - If overwriting an existing installation, the current version and the version to install are now shown to help the user decide
* Fixed issue with "Need Time" option for devices not saved in the configuration file
* Implemented new feature to allow driver to send DELAY_MEASURE messages regardless of channel type
    (used to only send RECORD_CURRENT_TIME if channel type is TCP)
* Implemented new feature to allow driver to send ACK messages even if the received frame does not require it
* Fixed issue where reloading a config file can cause a driver lock
* Changed driver behaviour for Cimplicity: driver now sends all available SOEs to Cimplicity from one point scan (avalanche mode)
* Fixed issue where a database point addressed with a DNPDIAG quality flag was interfering with the checkback value

Reason for 7.20o ( Service Pack release on 09/22/2015:

* Fixed issue with serial channels getting stuck in a loop when comms are broken

* Implemented support for outstations responding on a peer UDP port number
* Fixed issue with driver lock-up when copying channels from the Configuration Tool while running live
* Fixed issue with driver lock-up when changing settings for existing TCP/UDP channels while running live        
* Implemented new "SCADA Sync Interval" option for devices. This option specifies a refresh interval for
    the driver to push values to the NIO interface DLL on a regular basis regardless of whether the value
    has changed or not.



ID: DG309
Category: I/O Drivers
Last Updated: 09/23/15
Date Created: 11/13/08
Status: Published
Attachments: Yes
Language: English
User Group: All


Overall Rating: 2.78 (18 responses)
Rate this content record (1=lowest, 5=highest)

Note:  If your firewall blocks ZIPS and EXEs, simply right-click and select SAVE TARGET AS and change the extension to something like "XIP".  Once downloaded change the extension back to its original one.

All drivers produced by vendors other than GE ("3rd Party Drivers") are provided by GE "as is" and without warranty of any kind unless the vendor extends a pass-through warranty to the end user.  Support for 3rd Party Drivers is provided by the driver's vendor.