GENERAL INFORMATION
Information General
Communication Driver Name: DNP3
Current Version: 9.2
Implementation DLL: T.ProtocolDriver.DNP3V2.dll
ProtocolP: DNP3.0 Master standard protocol
Interface: TCP/IP
Description: The driver is used for communication with data acquisition devices (IED's) that use the DNP3 Level 3 protocol. Communication can be done through a multipoint serial channel or using local Ethernet network and TCP-IP protocol, in which case each IED has an IP address.
IEDs types supported: Any compatible IED DNP2
Communication block size: Maximum 250 bytes, FT 1.2 format
Protocol Options: "LinkConfirm" mode and end of the master station.
Threading: User configurable; default is five threads for the cda network node.
Max number of nodes: user-defined
PC Hardware Requirements: Standard PC Ethernet interface board
PC Software Requirements: ActionNET system.
DNP3 Channel Creation
To create a channel using the DNP30 protocol, go to Edit>Devices>Channel, and in Installed protocols, choose DNP30 L3-V2 - Master Standard Protocol.
Â
After this choice, a window will be displayed to enter the channel name and choose the mode. You can choose TCP-IP communication mode (CustomTCPIP) or Serial communication mode (CustomSerial).
Depending on this choice, some other settings will be specific to each of these modes. In the next items, these settings will be detailed.
Â
Supported data objects
The table below shows the DNP objects and their variants, which this implementation supports. Objects with the indication L4 are implemented but are defined at the level of L4.
 |  | Requisition (Master) | Answer (Slave) | |||
Object | Variation | Description | Function Codes (decimal) | Qualifier. Codes (Hex) | Function Codes (decimal) | Qualifier Codes (Hex) |
1 | 0 | Binary Input (any variation) | 1 | 00,01,06 | ||
22 | 00,01,06 | |||||
1 | 1 | Single Bit Binary Input (packed) | 1 | 00,01,06 | 129 | 00, 01 |
1 | 2 | Binary Input with status | 1 | 00,01,06 | 129 | 00, 01 |
2 | 0 | Binary Input event (any variation) | 1 | 06,07,08 | ||
2 | 1 | Binary Input changes without time | 1 | 06,07,08 | 129,130 | 17,18 |
2 | 2 | Binary Input changes with absolute time | 1 | 06,07,08 | 129,130 | 17,18 |
2 | 3 | Binary Input change with relative time | 1 | 06,07,08 | 129,130 | 17,18 |
3 | 0 | Double bit Binary input - Any variation -L4 | 22 | 00,01,06 | ||
3 | 1 | Double-bit Binary Input - Packed -L4 | 1 | 00,01,06 | 129 | 00, 01 |
3 | 2 | Double-bit Binary Input - With flags–L4 | 1 | 00,01,06 | 129 | 00, 01 |
4 | 0 | Double-bit Binary Input Event - Any Variation–L4 | 1 | 06,07,08 | ||
4 | 1 | Double-bit Binary Input Event - without time–L4 | 1 | 06,07,08 | 129,130 | 17,18 |
4 | 2 | Double-bit Binary Input Event- with absolute time–L4 | 1 | 06,07,08 | 129,130 | 17,18 |
4 | 3 | Double-bit Binary Input Event - with relative time–L4 | 1 | 06,07,08 | 129,130 | 17,18 |
10 | 1 | Binary Output - Any Variation | 1 | 00,01,06 | ||
10 | 2 | Binary Output - status with flags | 1 | 00,01,06 | 129 | 00,01 |
12 | 1 | Control relay output block | 3,4,5,6 | 17,28 | 129 | Echo of request |
20 | 0 | Binary Counter - all variations | 1,7,8,9,10 | |||
20 | 1 | Counter - 32-bit with flag | 1 | 00,01,06 | 129 | 00, 01 |
20 | 2 | Counter - 16-bit with flag | 1 | 00,01,06 | 129 | 00, 01 |
20 | 5 | Counter - 32-bit without flag | 1 | 00,01,06 | 129 | 00, 01 |
20 | 6 | Counter - 16-bit without flag | 1 | 00,01,06 | 129 | 00, 01 |
21 | 0 | Frozen counter - all variations | 1,22 | |||
21 | 1 | Frozen Counter - 32-bit with flag | 1 | 00,01,06 | 129 | 00, 01 |
21 | 2 | Frozen Counter - 16-bit with flag | 1 | 00,01,06 | 129 | 00, 01 |
21 | 9 | Frozen Counter - 32-bit without flag | 1 | 00,01,06 | 129 | 00, 01 |
21 | 10 | Frozen Counter - 16-bit without flag | 1 | 00,01,06 | 129 | 00, 01 |
22 | 0 | Counter Event - Any Variation | 1 | 06 | ||
22 | 1 | Counter Event - 32-bit with flag | 1 | 06,07,08 | 129,130 | 17,18 |
22 | 2 | Counter Event - 16-bit with flag | 1 | 06,07,08 | 129,130 | 17,18 |
23 | 0 | Frozen Counter Event - Any Variation | 1 | 06,07,08 | ||
23 | 1 | Frozen Counter Event - 32-bit with flag | 1 | 06,07,08 | 129,130 | 17,18 |
23 | 2 | Frozen Counter Event - 16-bit with flag | 1 | 06,07,08 | 129,130 | 17,18 |
30 | 0 | Analog Input - all variations | 1, 22 | 00,01,06 | ||
30 | 1 | 32 Bits Analog Input | 1 | 00,01,06 | 129 | 00, 01 |
30 | 2 | 16bit Analog input with flag | 1 | 00,01,06 | 129 | 00, 01 |
30 | 3 | 32 Bits Analog Input without flag | 1 | 00,01,06 | 129 | 00, 01 |
30 | 4 | 16bit Analog input without flag | 1 | 00,01,06 | 129 | 00, 01 |
30 | 5 | Short Floating Point (32bits) - L4 | 1 | 00,01,06 | 129 | 00, 01 |
32 | 0 | Analog Input event - all variations | 1 | 06,07,08 | ||
32 | 1 | Analog Input event - 32 Bits without time | 1 | 06,07,08 | 129,130 | 17,18 |
32 | 2 | Analog event without flag - 16 Bits - Without time | 1 | 06,07,08 | 129,130 | 17,18 |
32 | 3 | 32bit Analog event with flag - L4 | 1 | 06,07,08 | 129,130 | 17,18 |
32 | 4 | 16th Bit Analog event with flag– L4 | 1 | 06,07,08 | 129,130 | 17,18 |
32 | 5 | Analog input event single float -without time – L4 | 1 | 06,07,08 | 129,130 | 17,18 |
32 | 7 | Analog input event single float -with time– L4 | 1 | 06,07,08 | 129,130 | 17,18 |
40 | 0 | Analog Output Status–any variation | 1 | |||
40 | 1 | Analog Output Status - 32bits with flag | 1 | 00,01,06 | 129 | 00, 01 |
40 | 2 | Analog Output Status -16bits with flag | 1 | 00,01,06 | 129 | 00, 01 |
40 | 3 | Analog output status - Single float with flag -L4 | 1 | 00,01,06 | 129 | 00, 01 |
41 | 1 | Analog output block - 32Bit | 3,4,5,6 | 17,28 | 129 | Echo of request |
41 | 2 | Analog output block - 16 Bit | 3,4,5,6 | 17,28 | 129 | Echo of request |
41 | 3 | Analog output block – Single float - L4 | 3,4,5,6 | 17,28 | 129 | Echo of request |
50 | 1 | Time and Data - Absolute | 1,2 | 0x07 | 129 | 07 |
51 | 1 | Time and Date CTO - Absolute time, synchronized | 129,130 | 07 | ||
51 | 2 | Time and Date CTO - Absolute time, unsynchronized | 129,130 | 07 | ||
52 | 1 | Time Delay - Coarse | 129 | 07 | ||
52 | 2 | Time Delay - Fine | 129 | 07 | ||
60 | 1 | Class 0 date | 1 | 0x06 | ||
60 | 2 | Class 1 date | 1,20,21 | 06,07,08 | ||
60 | 3 | Class 2 date | 1,20,21 | 06,07,08 | ||
60 | 4 | Class 3 date | 1,20,21 | 06,07,08 | ||
80 | 1 | Internal indications | 1,2 | 00,01 | 129 | 01 |
Objects, object variations, function codes, and qualifiers have their meanings standardized in DNP. Below are the function code and qualifier tables:
Function Code | Description | Origin |
1 | Read | Master |
2 | To write | Master |
3 | Selects | Master |
4 | Opera | Master |
5 | Operates direct (no selection) | Master |
6 | Operates direct (without ack) | Master |
7 | Freezes immediately | Master |
8 | Freezes immediately (without ack) | Master |
9 | Freezes and cleans | Master |
10 | Freezes and reads | Master |
13 | Restart (Cold) | Master |
14 | Restart (Warm) | Master |
20 | Enables unsolicited message | Master |
21 | Disables unsolicited message | Master |
22 | Places the object in a class | Master |
23 | Measure with delay | Master |
129 | Answer | Slave |
130 | Unsolicited response (does not exist at level 2) | Slave |
Qualifier Code | Use in requisition | Use in response |
00,01 | A range of static points (class 0) or a single point with a number | Static object |
06 | All points | Invalid |
07,08 | A limited number of events. | A simple point without a number (i.e., a date/time) |
17, 28 | Controls (usually one or more unrelated points) | Event objects (usually one or more unrelated points) |
DNP has the concept of data classes, and four classes are defined:
Class 0: Corresponds to static, analog, or digital point. Its content is the value of an analog or digital variable, input or output, at a given time;
Class 1, 2, and 3: Corresponds to state transition events or class 0 variables or situations internal to the remote/relocation that cause the event.
What usually occurs in FDI's when using NpD is to associating with the state variation of digital variables or dead band values of analog variables classes 1, 2, and 3. Thus, modifying the state/value of these variables will cause events that will be transmitted by ordering events from the respective classes (60/2, 60/3, and 60/4). Periodically, a cyclic reading can be done for health check. This reading corresponds to a class 0 request (60/1).
Observations:
Static variables not associated with classes 1, 2, or 3 do not cause events;
The association of variables to classes must be done in the server device (IED) using a configuration program of the same. SCADA performs data acquisition of classes without defining which variable belongs to which class.
General operation
The typical operation sequence of the master is:
When started, send a request to read class 1, 2, and 3 events (60/2, 60/3, and 60/4) for all IED's;
In sequence, sends class 0 read request (health read - 60/1) to all IED's;
Cyclically, with time intervals as defined in the startup file, read classes 0, 1, 2 and 3 (60/1 to 60/4);
When you receive a message with Internal Indication (IIN) stating that IED requires sync, it sends messages timing (50.1). This message is only sent at the request of the IED;
When you receive a message with IIN indicating that IED has restarted, you run a clear device flag (80/1) write and go to (1);
When the user executes a digital output or analog output command, the software sends its request to the IED (12/1 or 41/2);
On this page: