You are on page 1of 291

DNP Users Group

DNP PRODUCT DOCUMENTATION


DNP V3.00
DATA LINK LAYER
Document Version: 0.02
Internal File: P009-0PD.DL
Associated Software Release: DNP V3.00
NOTICE OF RIGHTS - DNP USERS GROUP
The contents of this manual are the property of the DNP Users
Group. Revisions or additions to the definition and functionality of
the Distributed Network Protocol cannot be made without express
written agreement from the DNP Users Group or its duly authorized
party. In addition, no part of this document may be altered or
revised or added to in any form or by any means, except as permitted
by written agreement with the DNP Users Group or a Party duly
authorized by the DNP Users Group.
As a Party, duly authorized by the DNP Users Group, Harris
Corporation has made every reasonable attempt to ensure the
completeness and accuracy of this document, however, the
information contained in this manual is subject to change without
notice, and does not represent a commitment on the part of Harris
Corporation or the DNP Users Group. An update program for DNP
documents is provided upon request by Harris Corporation on
behalf of the DNP Users Group.
TRADEMARK NOTICES
Brand and product names mentioned in this document are
trademarks or registered trademarks of their respective companies.
DNP V3.00 Data Link Layer (Version 0.02)
i
TABLE OF CONTENTS
ABOUT THIS DOCUMENT IV
PURPOSE OF THIS SPECIFICATION iv
WHO SHOULD USE THIS SPECIFICATION iv
HELP AND ADDITIONAL DOCUMENTATION iv
HOW THIS SPECIFICATION IS ORGANIZED v
CONVENTIONS USED IN THIS SPECIFICATION v
1. OVERVIEW 1-1
2. IEC CONFORMANCE 2-1
2.1 CHANNEL FAILOVER 2-1
2.2 FRAME FORMAT AND PROCEDURES 2-1
2.3 LENGTH, CONTROL AND ADDRESS FIELDS 2-1
3. DNP DATA LINK DESCRIPTION 3-1
3.1 PURPOSE OF THE DATA LINK LAYER 3-1
3.2 FT3 FRAME FORMAT 3-1
3.3 DATA LINK HEADER FRAME FIELDS 3-2
3.4 USER DATA 3-5
3.5 CRC FIELDS 3-5
3.6 DATA LINK FUNCTION CODES 3-6
3.7 TRANSMISSION PROCEDURES 3-8
4. DATA LINK SERVICES AND RESPONSIBILITIES 4-1
4.1 DATA LINK FUNCTIONS 4-1
4.2 INTERFACE DESCRIPTION 4-1
5. PHYSICAL LAYER INTERFACE 5-1
5.1 PHYSICAL LAYER DESCRIPTION 5-1
6. PHYSICAL LAYER CHARACTERISTICS 6-1
6.1 LINE CONFIGURATIONS 6-1
6.2 MODES OF TRANSMISSION 6-1
6.3 LOCAL LOOP 6-1
7. PHYSICAL LAYER PROCEDURES 7-1
7.1 GENERAL CONSIDERATIONS 7-1
7.2 HALF-DUPLEX PROCEDURES 7-1
7.3 FULL-DUPLEX PROCEDURES 7-2
LIST OF ABBREVIATIONS AND ACRONYMS 1
DNP Users Group
ii
TABLE OF FIGURES
FIGURE 3-1 FT3 FRAME FORMAT 3-2
FIGURE 3-2 CONTROL OCTET BIT DEFINITIONS 3-3
FIGURE 3-3 TABLE OF PRIMARY AND SECONDARY FUNCTION CODES 3-4
FIGURE 3-4 DESTINATION ADDRESS FORMAT 3-4
FIGURE 3-5 SOURCE ADDRESS FORMAT 3-5
FIGURE 3-6 CRC ORDERING 3-6
FIGURE 3-7 RESET OF SECONDARY LINK 3-8
FIGURE 3-8 RESET OF USER PROCESS 3-9
FIGURE 3-9 SEND FROM STATION A/CONFIRM FROM STATION B 3-9
FIGURE 3-10 SEND FROM STATION B/CONFIRM FROM STATION A 3-9
FIGURE 3-11 SEND MULTIPLE FRAMES FROM STATION A/CONFIRM FROM STATION B 3-10
FIGURE 3-12 FRAME COUNT BIT OPERATION 3-10
FIGURE 3-13 FRAME COUNT BIT OPERATION 3-10
FIGURE 3-14 SEND-NO-REPLY EXPECTED FROM STATION A 3-11
FIGURE 3-15 SEND FROM STATION B/NACK FROM STATION A 3-11
FIGURE 3-16 REQUEST/RESPOND FRAME AND DFC BIT USAGE 3-12
DNP V3.00 Data Link Layer (Version 0.02)
iii
DNP Users Group
iv
ABOUT THIS DOCUMENT
PURPOSE OF THIS SPECIFICATION
This document specifies the Distributed Network Protocol (DNP) Data Link layer services,
transmission procedures and Link Protocol Data Unit.
WHO SHOULD USE THIS SPECIFICATION
This specification is intended for communication engineers and programmers interested in knowing the
function and message format of the DNP data link layer. This includes programmers implementing and
designing DNP data link layer software/hardware and quality assurance personnel testing and verifying
implementations of the DNP data link layer. Application programmers may find this specification
useful in determining how to interface with and make use of the DNP data link layer. Familiarity with
the ISO-OSI 7-layer model, IEC 3-layer EPA and IEC TC-57 standards is helpful.
HELP AND ADDITIONAL DOCUMENTATION
The following documentation may be helpful.
IEC 870-5-1 and IEC 870-5-2 standards (or drafts), Technical Committee No. 57 for data
transmission in telecontrol systems
DNP V3.00 Data Object Library (P009-0BL)
DNP V3.00 Application Layer (P009-0PD.APP)
DNP V3.00 Transport Functions (P009-0PD.TF).
DNP V3.00 Data Link Layer (Version 0.02)
v
HOW THIS SPECIFICATION IS ORGANIZED
1. OVERVIEW
A general overview of the data link layer.
2. IEC CONFORMANCE
Details the differences between DNP and the IEC TC-57 standards.
3. DNP DATA LINK DESCRIPTION
Describes the DNP data link frame format, function codes and procedures.
4. DATA LINK SERVICES AND RESPONSIBILITIES
Describes the services that the data link provides to higher layers.
5. PHYSICAL LAYER INTERFACE
Describes the service interface provided by the physical layer to the data link.
6. PHYSICAL LAYER CHARACTERISTICS
Describes the physical layer used with the DNP data link.
7. PHYSICAL LAYER PROCEDURES
Describes how the DNP data link uses the physical layer.
LIST OF ABBREVIATIONS AND ACRONYMS
CONVENTIONS USED IN THIS SPECIFICATION
In this document, the octet is a term used to refer to an eight bit data object and is synonymous with the
term byte. The low order bit of an octet is referred to as bit 0 and the high order bit as bit 7.
Irregular capitalization is used in referencing technical terms which have an associated verb or noun.
For example, data link indications commonly referred to as IND, can also be described using the word
INDication.
DNP V3.00 Data Link Layer (Version 0.02)
1-1
1. OVERVIEW
This document defines the Distributed Network Protocol (DNP) V3.00 Data Link layer, Link Protocol
Data Unit (LPDU), as well as data link layer services and transmission procedures. Master stations,
submaster stations, outstations and intelligent electronic devices (IEDs) can use this data link to pass
messages between primary (originating) stations and secondary (receiving) stations. In this protocol,
master stations, submaster stations, outstations and IEDs are both originators (primary stations) and
receivers (secondary stations).
The IEC 870-5-1 and IEC 870-5-2 standards set out by the International Electrotechnical Commission
(IEC), Technical Committee No. 57 for data transmission in telecontrol systems were used as a basis for
developing the DNP V3.00 Data Link layer.
The DNP V3.00 Data Link layer supports polled and quiescent telecontrol systems and is designed to
operate with connection and connection-less orientated, asynchronous or synchronous bit-serial
physical layers such as RS-232C, RS-485 and fibre transceivers. Fully-balanced transmission
procedures were adopted to support spontaneous transmissions from outstations, IEDs or submaster
stations not designated as master stations.
The ISO OSI based model supported by this protocol specifies physical, data link and application layers
only. This is termed the Enhanced Performance Architecture (EPA). However, to support advanced
RTU functions and messages larger than the maximum frame length as defined by the IEC document
870-5-1, the DNP Version 3 Data Link is intended to be used with a pseudo-transport layer which
implements as a minimum message assembly and disassembly.
This pseudo-transport layer is described in the document, DNP V3.00 Transport Functions (P009-
0PD.TF). It is stressed, however, that these transport functions are not a part of the data link but are
needed to support advanced RTU functions.
DNP V3.00 Data Link Layer (Version 0.02)
2-1
2. IEC CONFORMANCE
This chapter describes the difference between the DNP protocol and the IEC TC-57 (870-5) telecontrol
data link layer protocol specification.
2.1 CHANNEL FAILOVER
The DNP link layer communicates with only one physical layer (or channel). In the OSI model, the
Session layer is responsible for maintaining channel connections. In DNP, the layer above the data link
is responsible for providing channel failover based on communications failure at the Data Link. This
layer could be a Network/Transport Layer or the Application Layer. Thus, the IEC requirement, 870-5-
1, item 13, for channel failover is met at the Application Layer.
2.2 FRAME FORMAT AND PROCEDURES
The data link layer uses a standard variable length frame format as defined in the IEC 870-5-1
Transmission Frame Formats document. The FT3 frame format class is well suited for data
transmission between stations that require medium information transfer rates and low residual error
probability. The basic frame format is used and transmission rules R1, R2, R3 and R4 are followed.
Rules R5 and R6 are followed in principle, although the exact time values suggested are not used but
are configurable in each implementation. The frame definitions outlined in IEC 870-5-2 are followed
with the note that the Address Iield is 2 octets in length and speciIies the destination station address
and the Link User Data Iield is used as a 2 octet source station address.
Fully-balanced transmission procedures as specified by IEC 870-5-2 were adopted to handle unsolicited
transmissions from stations not designated as masters in a half-duplex or full-duplex system. Fully-
balanced means that each station can act as a primary station (sending) and a secondary station
(receiving) at the same time. This configuration requires a full-duplex channel to operate properly. In a
half-duplex environment, the same procedures will be used except that a station cannot be both a
primary and secondary station at the same time. That is, an entire data link layer transaction between the
master station and outstation will have to be completed at both stations before any further transactions
can be started from either station. In both half-duplex and full-duplex configurations, it is the
responsibility of each device to implement a compatible collision avoidance scheme.
2.3 LENGTH, CONTROL AND ADDRESS FIELDS
The DNP data link uses the same LENGTH field as defined in IEC 870-5-1 clause 6.2.4. (Refer to
Section 3 for more information on this field).
The CONTROL field used is the IEC CONTROL field used for balanced transmission as defined in
IEC 870-5-2 clause 6.1.2. All the function codes specified in IEC 870-5-3 clause 6.1.2 Table III are
supported.
The ADDRESS field is a 16-bit (2 octet) field. The DNP data link frame header has two IEC
ADDRESS fields. The first field is the A (Address) field where it is used to represent the destination
station address and the second is in the Link User Data field where it is used to represent the source
station address. (Refer to Section 3 for more information on these fields).
DNP V3.00 Data Link Layer (Version 0.02)
3-1
3. DNP DATA LINK DESCRIPTION
The Data Link Layer is the second layer in the Open System Interconnection (OSI) model. The data
link layer accepts, performs and controls transmission service functions required by the higher layers.
3.1 PURPOSE OF THE DATA LINK LAYER
The main purpose of the DNP data link layer is twofold. First, the data link layer must provide transfer
of information or Link Service Data Unit (LSDU) across the physical link as described by the ISO-OSI
standard. This means that user data supplied by higher layers (LSDU) must be converted into one frame
(or LPDU as described in Section 2) and sent to the physical layer for transmission. Conversely,
individual LPDUs received by the data link layer must be assembled into one LSDU and passed to
higher layers. The layer provides for frame synchronization and link control.
Secondly, in DNP V3.00, the data link provides indications of other events such as link status.
The OSI reference model enforces either a connection-less or a connection oriented system. However,
the EPA model implies neither a connection-less system nor a connection oriented system. The DNP
Version 3 implementation of the IEC data link handles both connection-less and connection oriented
systems (that is, physical networks that require dialing or logging in before data can be transmitted to
the destination device) but has no need to provide connection services. The actual physical network is
transparent to the application using the data link because the data link layer is responsible for
connecting and disconnecting from any physical network without higher level interaction (i.e.
application layer). That is, the data link (given the station destination address) will connect to the right
physical circuit without control supplied from higher layers. In this way, the physical medium is totally
transparent to the link layer service user.
3.2 FT3 FRAME FORMAT
This section describes the LPDU format. An FT3 frame is defined as a fixed length header block
followed by optional data blocks. Each block has a 16-bit CRC appended to it. The IEC specifies that
the header fields consist of 2 start octets, 1 octet length, 1 octet control, a destination address and an
optional fixed length user data field. In this implementation the fixed length user data field is defined as
a source address.
DNP Users Group
3-2
!<"""""""""""""""""""""""""""" Block 0 """""""""""""""""""""""">!<- Block # ->! |<- Block n -
>|
$"""""""%"""""""%""""""""%"""""""""%"""""""""""""%""""""""%"""""&"""""""%"""""' -------------
! START ! START ! LENGTH ! CONTROL ! DESTINATION ! SOURCE ! CRC ! USER ! CRC ! ... | USER | CRC
|
! 0x05 ! 0x64 ! ! ! ! ! ! DATA ! ! | DATA |
|
$"""""""("""""""(""""""""("""""""""("""""""""""""(""""""""("""""&"""""""(""""") -------------
!<""""""""""""""""""" Fixed Length Header """"""""""""""""""""">!<"""""""""""" Body -------------
>|
#0 octets
START 2 starting octets of the header (0x0564).
LENGTH 1 octet count of USER DATA in the header and body. This count includes
the CONTROL, DESTINATION and SOURCE fields in the header. The
CRC fields are not included in the count. The minimum value for LENGTH
is 5 indicating only the header is present and the maximum value is 255.
CONTROL Frame control octet.
DESTINATION 2 octet destination address. The first octet is the LSB and the second octet is the
MSB.
SOURCE 2 octet source address. The first octet is the LSB and the second octet is the
MSB.
CRC 2 octet Cyclic Redundancy Check.
USER DATA Each block following the header has 16 octets of User defined data except
the last block of a frame which contains 1 to 16 octets of User defined data
as needed.
Figure 3-1 FT3 Frame Format
3.3 DATA LINK HEADER FRAME FIELDS
This section describes block 0 (or header) of a data link frame.
3.3.1 Start
The Start field is 2 octets in length. The first octet is a 05 hexadecimal and the second octet is a 64
hexadecimal.
3.3.2 Length
The length field is 1 octet in length and specifies the count of user octets in the frame. The CONTROL,
DESTINATION and SOURCE field sizes are included in this count. The minimum value for this field
is 5 and the maximum value is 255.
3.3.3 Control
The control field contains the direction of the frame, type of frame and flow control information.
Figure 3-2 defines the fields of the control octet. Station A is defined as the designated master station.
Station B is not a master station. The primary station is the originator of the message, the source of the
message. The secondary station is the destination station.
DNP V3.00 Data Link Layer (Version 0.02)
3-3
*"""""%"""""%"""""%"""""%"""""%"""""%"""""%"""""+
! ! # ! FCB ! FCV ! ! ! ! ! Primary to Secondary
! DIR ! PRM $"""""$"""""' FUNCTION CODE !
! ! 0 ! RES ! DFC ! ! ! ! ! Secondary to Primary
,"""""("""""("""""("""""("""""("""""("""""(""""")
Bit 7 6 5 4 3 2 # 0
DIR Physical transmission direction
1 = station A to station B
0 = station B to station A
PRM Primary Message
1 = frame from primary (initiating station)
0 = frame from secondary (responding station)
FCB Frame count bit
FCV Frame count bit valid
1 = Frame count bit is valid
0 = ignore frame count bit
DFC Data flow control bit
RES Reserved = 0
FUNCTION CODE Defines the frame type, how the data link will handle the frame
Figure 3-2 Control Octet Bit Definitions
DIR The direction bit indicates the physical direction of the frame with relation to the designated
master station. Station A is the master.
DIR = 1 indicates a frame from A to B
DIR = 0 indicates a frame from B to A
PRM The primary message bit indicates the direction of the frame in relation to the initiating station.
PRM =1 indicates a frame from the initiating station
PRM =0 indicates a frame from the responding station.
FCB The frame count bit is used for suppressing losses and duplication of frames to the same
secondary station. This bit toggles for each successful SEND-CONFIRM service that is
initiated by the same primary station and directed to the same secondary station.
Initially before communications with a secondary station or after communication failure, the
primary station (in both the master station and outstation) must reset the data link for each
secondary station data link it wishes to communicate with. This can be done once at data link
start-up for all secondary stations or as needed.
Each secondary station, after data link start-up or transaction failure, must not accept any
primary SEND-CONFIRM messages with FCV set until a RESET command has been received
and a CONFIRM message sent.
FCV The frame count valid bit enables the functioning of the FCB bit.
FCV =0 indicates the state of the FCB bit is ignored
FCV =1 indicates to a secondary station that the state of the FCB bit must be checked against
the state of the FCB bit of the last frame sent with the FCV bit set.
DFC The data flow control bit is used to prevent the overflowing of buffers in a secondary station.
The secondary station returns this bit set to a 1 if further SEND of user data to this secondary
station will cause data link buffers to over flow. The primary station must interrogate the
secondary station using REQUEST-RESPOND Request Link Status until the DFC is returned
with a value of 0. At this point the primary station can continue with the sending of user data.
Figure 3-16 illustrates the DFC bit usage.
DNP Users Group
3-4
FUNCTION CODE The function code identifies the type of frame. The definition of the values
placed in this field are different between primary and secondary stations.
The following tables define the implemented codes and associated FCV
states.
Function Code Field Values of the Control Octet Sent from the Primary Station (PRM = 1)
*""""""""""%"""""""""""""""""""""""""""""%""""""""""""""""""""""""""%"""""+
! Function ! Frame Type ! Service Function ! FCV !
! Code ! ! ! Bit !
$""""""""""&"""""""""""""""""""""""""""""&""""""""""""""""""""""""""&"""""'
! 0 ! SEND - CONFIRM expected ! RESET of remote link ! 0 !
! # ! SEND - CONFIRM expected ! Reset of user process ! 0 !
! 2 ! SEND - CONFIRM expected ! TEST function for link ! # !
! 3 ! SEND - CONFIRM expected ! User Data ! # !
! 4 ! SEND - NO REPLY expected ! Unconfirmed User Data ! 0 !
! 5 ! ! Not Used ! - !
! 6 ! ! Not used ! - !
! 7 ! ! Not Used ! - !
! 8 ! ! Not Used ! - !
! 9 ! REQUEST - RESPOND expected ! REQUEST LINK STATUS ! 0 !
! #0 ! ! Not Used ! - !
! ## ! ! Not Used ! - !
! #2 ! ! Not Used ! - !
! #3 ! ! Not Used ! - !
! #4 ! ! Not Used ! - !
! #5 ! ! Not Used ! - !
! ! ! ! !
! ! ! ! !
,""""""""""("""""""""""""""""""""""""""""(""""""""""""""""""""""""""(""""")
Function Code Field Values of the Control Octet Sent from the Secondary Station (PRM = 0)
*""""""""""%"""""""""""""%""""""""""""""""""""""""""""""""""""""""""+
! Function ! Frame Type ! Service Function !
! Code ! ! !
$""""""""""&"""""""""""""&""""""""""""""""""""""""""""""""""""""""""'
! 0 ! CONFIRM ! ACK - positive acknowledgement !
! # ! CONFIRM ! NACK - Message not accepted, Link busy !
! 2 ! ! Not Used !
! 3 ! ! Not Used !
! 4 ! ! Not Used !
! 5 ! ! Not Used !
! 6 ! ! Not Used !
! 7 ! ! Not Used !
! 8 ! ! Not Used !
! 9 ! ! Not Used !
! #0 ! ! Not Used !
! ## ! RESPOND ! Status of Link (DFC = 0 or DFC = #) !
! #2 ! ! Not Used !
! #3 ! ! Not Used !
! #4 ! ! Link service not functioning !
! #5 ! ! Link service not used or implemented !
,""""""""""("""""""""""""("""""""""""""""""""""""""""""""""""""""""")
Figure 3-3 Table of Primary and Secondary Function Codes
3.3.4 Destination Address
The Destination address field is 2 octets in size and specifies the address of the station that the frame is
directed to. The first octet of the address is the low order octet and the second octet is the high order.
The address 0xffff is defined as an all stations address. All stations will accept frames with the
destination address set to this value.
*""""""""""""""""""""""""""""%""""""""""""""""""""""""""+
! ! !
! LOW ORDER OCTET (LSB) ! HIGH ORDER OCTET (MSB) !
! ! !
,""""""""""""""""""""""""""""("""""""""""""""""""""""""")
Figure 3-4 Destination Address Format
3.3.5 Source Address
The source address field is 2 octets in size and specifies the address of the station that the frame
originated from. The first octet of the address is the low order octet and the second octet is the high
DNP V3.00 Data Link Layer (Version 0.02)
3-5
order. Note that this field is not included as USER DATA but must be passed as a return value to the
higher layers by the data link service primitives.
*""""""""""""""""""""""""""""%""""""""""""""""""""""""""+
! ! !
! LOW ORDER OCTET (LSB) ! HIGH ORDER OCTET (MSB) !
! ! !
,""""""""""""""""""""""""""""("""""""""""""""""""""""""")
Figure 3-5 Source Address Format
3.4 USER DATA
The blocks following the header may contain from 1 to 16 octets of user data. If more than 16 user data
octets follow the header (block 0), each block must contain 16 octets of data except for the last block.
The last block will contain the leftover. Each data block has a CRC appended to it.
The data link layer passes all of the user data and the source address from the header to the higher
layers when a SEND user data frame is received. The data link service primitives provide a place to put
the source address.
3.5 CRC FIELDS
A two octet cyclic redundancy check is appended to each block in a frame. The START, LENGTH,
CONTROL, DESTINATION and SOURCE fields are all included when calculating the CRC for the
header.
The 2 octet CRC check is generated from the following polynomial and then inverted before being
placed in the block for transmission:
X
16
+ X
13
+ X
12
+ X
11
+ X
10
+ X
8
+ X
6
+ X
5
+ X
2
+ 1
The CRC algorithm used will now be described. In the following discussion, modulo-2 arithmetic
(addition and division) is assumed. A message block (M) of k-bits is to be transmitted (along with other
blocks) (k is 64 for the header, 128 for all user data blocks but the last block where k is 8 to 128). A 16-
bit CRC check word (F) is bit-wise inverted (F') and appended to M. Together M and F' are appended
together so that T' = 2
16
M + F' and T' will be transmitted (additionally we define T = 2
16
M + F). The
CRC check sequence is a pattern (P) of 17 bits as defined above in polynomial form. The CRC
algorithm requires that when T is divided by P at the receiver the remainder is 0. If the remainder is not
0 then the block is in error. In addition, the remainder (R) of 2
16
M/P is used as F in the block so that
2
16
M/P = Q + R/P (Equation. 1) (Q is the quotient). This can be proven to provide a remainder of 0 as
follows. If we assume that T=2
16
M + R then, T/P = (2
16
M + R)/P. If we substitute equation 1 then T/P =
Q + (R + R)/P = Q since R added to itself modulo-2 results in zero.
The transmission and reception procedure is described below:
To transmit a block:
(1) Take the user data block M with k data bits.
(2) Multiply M by 2
16
to obtain 2
16
M.
(3) Divide this number (module-2) by P (17-bits) to get R (16-bits).
(4) Invert R bit-wise to get R'.
(5) Append R' to 2
16
M and transmit as a block (T').
DNP Users Group
3-6
To receive a block:
(1) Receive a block (T') (k16 bits).
(2) Invert R'(16-bits) in T'(k16 bits) to get T (k16 bits).
(3) Divide T (module-2) by P (17-bits) to get the remainder.
(4) II the remainder is not 0 then there is an error in the block else the block is good.
Using the FT3 frame format class and CRC, the frame has a Hamming distance of 6.
The diagram below shows the ordering of the 16-bit CRC check word with respect to any blocks (user
data or header).
*""""""""""""""""""""""""""""""""""""""""%"""""%"""""+
! ! LSB ! MSB !
$""""""""""""""""""""""""""""""""""""""""&"""""("""""'
! Block Octets ! CRC !
! ! !
Figure 3-6 CRC Ordering
3.6 DATA LINK FUNCTION CODES
3.6.1 Reset
This function code is used to synchronize a primary and secondary station for further SEND-
CONFIRM transactions. Upon reception and reply to a RESET command, the secondary station will
begin accepting Primary messages from that Primary station with the FCV bit set. The RESET
command only enables communications in one direction, from the primary to the secondary station.
This is because a successful transaction only guarantees that the primary station transmitter and the
secondary station receiver are communicating. The primary station must send this function code when it
wishes to first communicate with the secondary station or after a communications failure has been
recognized by the primary station. When a secondary station has re-started or when a communications
failure has been recognized by the secondary, the secondary station will be considered un-reset. In this
state, the secondary station will not accept messages from the primary station until it has received and
replied to a RESET command from that primary station.
The RESET command also synchronizes the FCB bit between primary and secondary stations. The
secondary station after completing the RESET transaction will expect the FCB bit in the next message
(with FCV valid) to be 1 from that primary station. The primary station after completing the RESET
transaction will set the FCB bit to 1 in the next message (with FCV valid) to that secondary station.
3.6.1.1 Primary Transaction
Do number of configurable tries: (i.e. retries + 1)
Send RESET frame with FCV=0, FCB=x, PRM=1, DIR=x
Wait the pre-determined time-out period for an ACK frame from the secondary station.
If ACK frame is received, set FCB status to 1 (i.e. next frame sent to secondary with FCV valid should
have FCB=1) and exit loop.
If frame is not received then go to top of loop and re-try
End do loop
If ACK was received then the transaction is considered successful and the secondary station can be
considered on-line. A positive INDication can be returned to the data link user.
Otherwise, the secondary station should be considered off-line and a negative INDication should be
sent to the data link user.
3.6.1.2 Secondary Transaction
After start-up or after transaction failure do:
Wait for reception of RESET command with FCV=0, FCB=x, PRM=1, DIR=x.
DNP V3.00 Data Link Layer (Version 0.02)
3-7
Respond with an ACK confirm frame (DFC=x, PRM=0, DIR=x). The FCB status (expected value of
FCB in next received frame with FCV valid) should be set to 1. A positive INDication can be sent to
the data link user.
During normal operation, if a RESET command with FCV=0, FCB=x, PRM=1 and DIR=x is received,
then the current transaction (if any) can be aborted (possibly with negative INDication sent to data link
user).
In such case, respond with an ACK confirm frame (DFC=x, PRM=0, DIR=x). The FCB status
(expected value of FCB in next received frame with FCV valid) should be set to 1. A positive
INDication can be sent to the data link user.
3.6.2 Reset of User Process
This function code is used to reset the data link user process. Upon reception by a secondary station, an
INDication should be sent to the data link user. The data link user can use this indication to reset its
internal state. If accepted by the data link user, an ACK confirm frame is sent in reply otherwise a
NACK confirm frame is sent in reply.
3.6.3 Test
The TEST command is used to test the state of the secondary data link. Upon reception by a secondary
station, it checks the value of the FCB bit in the primary message and compares it against the FCB
status (expected FCB) for that primary station. If the FCBs do not match, then the secondary station
should send the last secondary confirm frame. Otherwise, an ACK confirm frame should be sent in
reply and the expected FCB status should be toggled. The secondary station also sets the DFC bit
accordingly in the response.
3.6.4 User Data
The User Data function is used to send confirmed data to a secondary station. Before communications
can begin, the secondary station must have been RESET according to the rules above (see RESET).
The frame sent contains the user data from the primary data link user that is to be passed to the data link
user of the secondary station. The transmission procedures are described below:
3.6.4.1 Primary Transaction
Do number of configurable tries: (i.e. retries + 1)
Send User Data frame with FCV=1, PRM=1, DIR=x and FCB set to FCB status for the secondary
station (next expected FCB status).
Wait the pre-determined time-out period for a ACK or NACK frame from the secondary station.
If frame is NACK then wait a pre-determined amount of time until secondary link is NOT busy or use
REQUEST LINK STATUS (below) and go to top of loop to retry.
If correct ACK frame is received, toggle FCB status (i.e. next frame sent to secondary with FCV valid
should have opposite FCB) and exit loop.
If correct frame is not received then go to top of loop and re-try.
If ACK was received then the transaction is considered successful and the secondary station can be
considered on-line. A positive INDication can be returned to the data link user.
Otherwise, a negative INDication should be sent to the data link user and the secondary station can be
considered off-line or on-line depending on the data link user's interpretation of the failure.
3.6.4.2 Secondary Transaction
Upon reception of a User Data frame with FCV=1, PRM=1, DIR=x and FCB set to FCB status
(expected FCB state) do the following:
DNP Users Group
3-8
If the data link user is ready to accept user data then respond with an ACK confirm frame (DFC=x,
PRM=0, DIR=x) else respond with a NACK frame (same bit settings as ACK) and exit this loop.
3.6.5 Unconfirmed User Data
This function is used to send user data to the secondary station without needing confirmation. In this
way, the bandwidth of the system can be more fully utilized if the user data is low priority. The frame
sent contains the user data from the primary data link user that is to be passed to the data link user of
the secondary station. The transmission procedures are described below:
3.6.5.1 Primary Transaction
Send Unconfirmed User Data frame with PRM=1, DIR=x, FCV=0, FCB=x.
Announce positive INDication to data link user.
3.6.5.2 Secondary Transaction
Receive Unconfirmed User Data frame as above and send positive INDications with the data to the data
link user.
3.6.6 Request Link Status
This command is used to request the status of the secondary data link. A secondary station will respond
to this request with a LINK STATUS confirm frame with the DFC bit set to 1 if the data link is busy or
the data link user cannot accept any more user data and 0 indicating that the data link is not busy and
the data link user can accept more user data. The transmission procedures are similar to TEST except
that the primary station will typically only use this command when a NACK frame is received during a
User Data transaction.
3.7 TRANSMISSION PROCEDURES
This section illustrates the usage of the defined frame types.
3.7.1 Reset of Secondary Link
In Figure 3-7, a primary station sends a SEND-CONFIRM RESET frame to a secondary station. The
secondary station receives the message and responds with an ACK confirm frame.
Reset *"""""""""+
(REQ) ! !
! SEND !
! FCB=0 !
,"""""""""("""""""""""> *"""""""""""""+ Expected FCB=x
! CONFIRM !
(IND) <"""""""""""""(""""""""""""") (IND)
Positive Reset
Next FCB=# Expected FCB=#
Figure 3-7 Reset of Secondary Link
3.7.2 Reset of User Process
In Figure 3-8, a primary station sends a SEND-CONFIRM Reset User Process frame to a secondary
station. The secondary station receives the message and responds with an ACK confirm frame.
DNP V3.00 Data Link Layer (Version 0.02)
3-9
Reset User *"""""""""+
(REQ) ! !
! SEND !
! !
,"""""""""("""""""""""> *"""""""""""""+
! CONFIRM !
(IND) <"""""""""""""(""""""""""""") (IND)
Positive Reset User
Figure 3-8 Reset of User Process
3.7.3 Send/Confirm User Data
In Figure 3-9, the designated master station acting as a primary station sends a SEND-CONFIRM frame
to a non-master station acting as a secondary station. This is the first frame with FCV valid after the
secondary link was reset (above) so FCB = 1 in the SEND frame. The secondary station expects FCB to
be 1 since this is the first frame (with FCV valid) after the link was reset (above) and sends a
CONFIRM frame. The master station upon receiving the CONFIRM assumes the message was
correctly received and INDicates success to the master station data link user.
STATION A STATION B
*"""""""""""+
(REQ) ! ! Expected FCB=#
! SEND !
! FCB=# !
,"""""""""""("""""""""""> *"""""""""""""+
! CONFIRM !
! !
<"""""""""""""(""""""""""""")
(IND) (IND)
Positive Data
Figure 3-9 SEND From Station A/CONFIRM From Station B
In Figure 3-10, a non-master station acting as a primary station sends a SEND-CONFIRM frame to a
designated master station acting as a secondary station. Since this is the second frame after the
secondary link has been reset the FCB = 0 in the SEND frame. The secondary expects FCB to be 0
since this is the second frame received after the link was reset. A CONFIRM frame is sent in response.
The non-master station upon receiving the CONFIRM INDicates success to the non-master station data
link user.
*""""""""""+
! !
! SEND !(REQ)
Expected FCB=0 ! FCB=0 !
*"""""""""""""+<""""""""""""("""""""""")
! CONFIRM !
! !
,"""""""""""""("""""""""""> (IND) Positive
(IND) User Data
Figure 3-10 SEND From Station B/CONFIRM From Station A
DNP Users Group
3-10
In Figure 3-11, a designated master station sends 3 consecutive frames to the same non-master station.
(REQ #) *"""""""""+
! SEND !
! FCB=# !
,"""""""""("""""""""""> *"""""""""""+ Expected FCB=#
! CONFIRM !
! !
(IND) Positive <""""""""""""(""""""""""") (IND) User Data
(REQ 2) *"""""""""+
! SEND !
! FCB=0 ! Expected FCB=0
,"""""""""(""""""""""""">
*"""""""""""+
! CONFIRM !
! !
(IND) Positive <""""""""""""(""""""""""") (IND) User Data
(REQ 3) *"""""""""+
! SEND !
! FCB=# ! Expected FCB=#
,"""""""""(""""""""""""">
*"""""""""""+
! CONFIRM !
! !
(IND) Positive <""""""""""""(""""""""""") (IND) User Data
Figure 3-11 SEND Multiple Frames From Station A/CONFIRM From Station B
In Figure 3-12, the designated master acting as primary sends a one frame message to the secondary
non-master. This example illustrates what happens when the CONFIRM from the secondary station is
lost.
*"""""""""+
(REQ) ! !
! SEND ! Expected FCB=#
! FCB=# ! t DAB
"%" ,"""""""""("""""""""""> *"""""""""""+
! t DBA ! CONFIRM !
! ! !
! garbled """"""""""""""(""""""""""") (IND) User Data
! or not received
retry delay > t DAB + t DBA + t CONFIRM duration + t SEND message processing time at station B
!
"(" *"""""""""+
! !
(same data)! SEND ! Expected FCB = 0
! FCB=# !
,"""""""""("""""""""""> *"""""""""""+ send data is ignored, unexpected FCB
! ! but another confirm is sent
! CONFIRM !
! !
<""""""""""""(""""""""""")
(IND) Positive
Figure 3-12 Frame Count Bit Operation
In Figure 3-13, the designated master acting as primary sends a two frame message to the secondary
non-master. This example illustrates what happens when the SEND frame from the primary station is
lost.
*"""""""""+
(REQ) ! !
! SEND ! Expected FCB = 0
! FCB=0 !
,"""""""""("""""""""""> *"""""""""""+
! CONFIRM !
tBA ! !
(IND) Positive*"""""""""+<""""""""""""(""""""""""") (IND) User Data
! SEND !
! FCB=# ! tAB
,"""""""""(""> (lost or garbled)
retry delay > tBA + tAB + CONFIRM time + CONFIRM processing time at Station B
*"""""""""+
! SEND !
! FCB=# ! Expected FCB=#
,"""""""""("""""""""""> *"""""""""""+
! CONFIRM !
! !
(IND) Positive """"""""" <""""""""""""(""""""""""") (IND) User Data
Figure 3-13 Frame Count Bit Operation
DNP V3.00 Data Link Layer (Version 0.02)
3-11
NOTE: Both a master station and non-master station acting as primary stations can re-try SEND
frames.
3.7.4 Send/No Reply Expected
In Figure 3-14, the master or non-master primary station sends 3 frames to the secondary master or non-
master. Upon successfully transmitting the SEND frame, the primary station INDicates success to the
data link user. The secondary station, upon reception of a valid frame INDicates data availability to the
data link user.
*"""""""""""+
(REQ) ! SEND !
! NO REPLY !
! !
"%" ,"""""""""""("""""""""""> (IND) Positive with user data
!
delay before next frame = t SEND message processing at station B
!
"(" *"""""""""""+
(REQ 2) ! SEND !
! NO REPLY !
! !
,"""""""""""("""""""""""> (IND) Positive with user data
"%"
!
delay
!
"(" *"""""""""""+
(REQ 3) ! SEND !
! NO REPLY !
! !
,"""""""""""("""""""""""> (IND) Positive with user data
Figure 3-14 SEND-NO-REPLY Expected From Station A
3.7.5 Send/NACK
In Figure 3-15, a non-master primary station sends a frame to the master secondary. Upon reception of
the first CONFIRM, the primary INDicates success to the data link user. The primary sends a second
frame to the secondary. The secondary master decides that it cannot accept any frames at this time and
sends a NACK frame back. The primary, after receiving this NACK, will fail the transaction and send a
negative INDication to the data link user.
*"""""""""+ (REQ #)
! SEND !
Expected FCB=# ! FCB=# !
*"""""""""""+<""""""""""""(""""""""")
! CONFIRM !
! !
(IND) Positive ,"""""""""""("""""""""""> (IND) Positive
*"""""""""+ (REQ 2)
! SEND !
! FCB=0 !
*"""""""""""+"""""""""""""(""""""""")
! NACK !
,"""""""""""("""""""""""> (IND) Negative
(IND) Negative
Figure 3-15 SEND From Station B/NACK From Station A
3.7.6 Request/Respond
In Figure 3-16, a primary station SENDs consecutive frames to a secondary station. When the
secondary station cannot receive any more frames, the CONFIRM message contains the DFC bit set.
The primary station will, upon reception of the CONFIRM, stop SENDing data frames to the secondary
station but will instead periodically REQUEST the status of the secondary by sending a REQUEST-
RESPOND frame. The secondary will RESPOND to the REQUEST frame with the current state of the
DFC. If the secondary is ready to receive more data, the DFC returned will be 0 otherwise the DFC
returned will be 1. When the primary station recognizes DFC = 0 in the RESPOND frame, the
transmission of SEND frames will continue.
DNP Users Group
3-12
*"""""""""""+
(REQ #) ! !
! SEND !
! FCB=0 !
,"""""""""""("""""""""""> *"""""""""""+
! CONFIRM !
(IND) Positive ! DFC=0 !
Receipt of CONFIRM frame *"""""""""""+<""""""""""""(""""""""""") (IND) User Data
with DFC = 0 is the ! SEND !
condition for ! !
transmission of the next ! FCB=# !
SEND user data frame. ,"""""""""""("""""""""""> *"""""""""""+
! CONFIRM !
! DFC=# !
(IND) Positive *"""""""""""+<""""""""""""(""""""""""") (IND) User Data
! REQUEST ! but buffers full now
! RESPOND !
! !
,"""""""""""("""""""""""> *"""""""""""+
! CONFIRM !
! DFC=# !
*"""""""""""+<""""""""""""(""""""""""")
! REQUEST !
! RESPOND !
! !
,"""""""""""("""""""""""> *"""""""""""+
(REQ 3) ! CONFIRM !
! DFC=0 !
Receipt of CONFIRM frame *"""""""""""+"""""""""""""(""""""""""")
with DFC = 0 is the ! SEND !
condition for ! !
transmission of the next ! FCB=0 ! (IND)
SEND user data frame. ,"""""""""""("""""""""""> *"""""""""""+
! CONFIRM !
! DFC=0 !
<""""""""""""(""""""""""") (IND) User Data
Figure 3-16 REQUEST/RESPOND Frame and DFC Bit Usage
DNP V3.00 Data Link Layer (Version 0.02)
4-1
4. DATA LINK SERVICES AND
RESPONSIBILITIES
4.1 DATA LINK FUNCTIONS
This section describes the services offered by the data link and its functions. The communication
requirements of the network layer and the pseudo-transport layer are satisfied by the data link layer
service primitives.
The data link is responsible for performing the following functions:
Performing message retries
Synchronizing and handling of the FCB bit in the control word
Setting and clearing the DFC bit based on buffer availability
Automatically establishing a connection based on the destination parameter in a dial up environment
when a directed service is requested by the user
Disconnection in a dial-up environment
Packing user data into the defined frame format and transmitting the data to the physical layer
Unpacking the frames that are received from the physical layer into user data
Controlling all aspects of the physical layer
Performing collision avoidance/detection procedures to ensure the reliable transfer of data across
the physical link
Responding to all valid frames (function codes) received from the physical layer.
The data link is responsible for providing the following services:
Exchange of SDUs between peer DNP data links
Error notification to data link user
Sequencing of SDUs
Prioritized SDU delivery
Quality SDU delivery.
SDUs will only be exchanged between peer DNP data links.
Priority delivery can be EXPEDITED or NORMAL to indicate a high or low priority request.
Quality delivery can be SEND-NO-REPLY or SEND-CONFIRM to indicate whether or not message
acknowledgment is required.
Error notification will be given to the data link user when a response to a request has not been received.
4.2 INTERFACE DESCRIPTION
The data link service primitives are illustrated in pseudo code to illustrate the requirements and
behavior in a real implementation and are not intended as an exact interface definition.
Data link request (REQ) services can be used at any time after the data link has been initialized and
configured by the system.
DNP Users Group
4-2
confirm = request_data_link_service(
SERVICE,
TIME_SERVICE,
destination,
source,
send_data_buffer,
send_count,
retry_flag,
time_of_transmission
)
Input:
SERVICE Service to perform
TIME_SERVICEGuaranteed time service to perform
source Source address to use in sent message
destination Destination address to use in sent message
send_data_buffer Data to send in message
send_count Number of octets in message
retry_flag Instructs data link layer to retry unacknowledged frames or not
time_of_transmission Time that first bit of first octet of message is to be sent
Output:
time_of_transmission Time that first bit of first octet of message was sent
Confirm = 0 Requested service was successful
1 Requested service has failed
2 Requested SEND data service was terminated by the current primary station.
(reception of a NACK frame from the secondary station)
3 Service code is not implemented
4 Requested service cannot proceed at this time because the data link is busy
either with a previous requested transaction, current unrequested transaction
or waiting for physical layer availability
Service = 0 Send a message specified in parameters using SEND-CONFIRM frames.
Fails if the data link is busy
1 Send a message specified in parameters using SEND-NO- REPLY frames.
Fails if the data link is busy
2 Expedited send a message specified in parameters using SEND-CONFIRM
frames. May necessitate cancelling the current secondary transaction if a
half-duplex system is used (i.e. forces the data link to send a NACK frame
instead of a CONFIRM frame in the next secondary transaction). This action
only takes place if the primary station is using SEND-CONFIRM frames.
3 Expedited send a message specified in parameters using SEND-NO-REPLY
expected frames. In a half-duplex system, this may mean cancelling the
current secondary transaction (as above).
4 Return link status. Return successful if the data link is not busy.
Time_service 0 Send message at time specified in time_of_transmission. This service should
have the highest priority.
1 Send message at any time with priority specified.
DNP V3.00 Data Link Layer (Version 0.02)
4-3
Data link indications (IND) can be requested at any time by the service user but should be checked as
often as possible in order to obtain received data.
indications = request_data_link_indications(
source_address,
destination_address,
received_data_buffer,
received_data_count,
time_of_reception)
Output:
source_address Source address of received message
destination_address Destination address of received address
received_data_buffer Received message
received_data_count Number of octets in message
time_of_reception Time at which first bit of first octet of message was received
Indications = 0 No indications to report
1 Data link has received a valid message that has been placed in
received_data_buffer and the number of octets received has been placed in
received_data_count. The source address of the received message has been
placed in source_address. If the data link is configured as a master station
then the time that the first bit of the first octet of the message was received
has been placed in time_of_reception. If the data link is configured as an
outstation then the time_of_reception will still be returned but the service
user has to be aware of the possibility of inaccurate times received before the
outstation has been time-synchronized.
2 Data link has detected a transaction failure.
DNP V3.00 Data Link Layer (Version 0.02)
5-1
5. PHYSICAL LAYER INTERFACE
This section describes the DNP Version 3 Data Link to physical layer interface. The interface describes
the necessary services that ANY physical layer must provide in order to accommodate the DNP V3.00
Data Link.
5.1 PHYSICAL LAYER DESCRIPTION
The physical layer that is recommended for the data link is a bit-serial oriented asynchronous physical
layer supporting 8 bit data, 1 start bit, 1 stop bit, no parity and RS-232C voltage levels and control
signals. The CCITT V.24 standard describes the DTE (Data Terminal Equipment) which is used for
communication with a DCE (Data Communication Equipment) and is usually a frequency-switched
modem (FSK). This type of circuit connection to a PSN (Public Switching Network) or to private
leased lines can be used. In each case, the appropriate modem must be used and must conform
(minimally) to the V.24 standard DCE definition.
The physical layer must provide 5 basic services: Send, Receive, Connect, Disconnect, and Status. The
Send service converts data octets into bit-serial data for transmission between the DTE and DCE. It
must provide the proper signal control in order to communicate with the given DCE. The Receive
service must be able to accept data from the DCE and therefore provide the correct signaling to the
DCE in order to receive data and not noise. The Connect and Disconnect services provide connection
and disconnection from the PSN (if applicable). The Status service must be able to return the state of
the physical medium. As a minimum, the service must indicate whether or not the medium is busy.
The physical link service primitives are illustrated in pseudo code to illustrate the requirements and
behavior in a real implementation and are not intended as an exact interface definition.
Physical layer requests can be sent at any time after the physical layer has been started and configured
with all relevant parameters.
confirm = request ( SERVICE,
data_buffer,
data_count,
modem_string,
time_of_transmission)
Input:
data_buffer Data to send
data_count Number of octets to send
modem_string Command string for DCE
Output:
time_of_transmission Time that first bit of first octet of message was transmitted
Confirm = 0 Requested service was successful
1 Requested service has failed
2 Service code is not implemented
3 Requested service cannot proceed at this time because the physical link is
busy either with a previous requested transaction, current unrequested
transaction or waiting for DCE availability
DNP Users Group
5-2
Service = 0 Send a message specified in data_buffer of size specified in data_count
1 Initialize DCE using string specified in modem_string
2 Connect to PSN using string specified in modem_string
3 Disconnect from PSN
4 Request physical link status, returns 0 if busy and 1 if not busy
Physical layer indications (IND) can be requested at any time by the service user but should be checked
as often as possible in order to obtain received data.
indications = indicate(received_data_buffer,
received_data_count,
time_of_reception)
Output:
received_data_buffer Received message
received_data_count Number of octets in message
time_of_reception Time at which first bit of first octet of message was received
Indications = 0 No indications to report.
1 Physical layer has received a message that has been placed in
received_data_buffer and the number of octets received has been
placed in received_data_count.
2 DCE has connected to PSN (incoming call).
3 DCE has disconnected from PSN (hang up).
4 Physical layer has detected problems with the link or DCE that
makes communication inadvisable or impossible until some later
time. Re-initialization of the DCE may be required.
DNP V3.00 Data Link Layer (Version 0.02)
6-1
6. PHYSICAL LAYER
CHARACTERISTICS
6.1 LINE CONFIGURATIONS
Regardless of the physical layer used, there are two physical topologies used to construct a SCADA
communications network. These are direct and serial bus topologies.
The direct topology has two physical nodes with each physical node connected directly to the other.
This is often referred to as point-to-point and can be a direct physical cable from point-to-point, a two
node radio or modem network or a dial-up connection through a PSN (Public Switched Network).
The serial bus topology has more than two physical nodes with each node connected to the same
channel or communication line as every other node in the serial bus network. This is often referred to as
a multi-drop configuration and is commonly made up of many Bell 202 modems with their
outputs/input tied together. In this configuration, there is one node which is deemed to be in control of
the physical network. This is often the SCADA master. This node transmits to multiple-nodes and
receives from multiple nodes. All other nodes in the bus receive from the master node and transmit to
the master node.
The DNP data link supports multiple-master, multiple-slave and peer-to-peer communications.
In peer-to-peer communications, all devices act as slave data links and collision avoidance should be
turned on as no one device has a higher priority and all can transmit spontaneously.
In a multiple-master configuration, the master devices are higher priority than the slave devices.
However, priority has to be assigned amongst the masters.
6.2 MODES OF TRANSMISSION
The physical layer supported by DNP must transmit/receive data in serial mode. Generally, the data unit
transferred will be 8 bits in length. The transmission can be asynchronous, synchronous or isochronous
allowing for higher throughput with a synchronous modem. The actual mechanism used has no affect on
the operation of the data link.
6.3 LOCAL LOOP
The termination of the data communications circuit at the communication node (i.e. NOT at the
modem) can be accomplished using a two-wire or four-wire circuit (i.e. TX/RX pair or independent TX
and RX pairs).
The DNP data link can use half-duplex procedures with a 2-wire circuit and full-duplex or half-duplex
procedures with a 4-wire circuit.
The DNP data link can support both full-duplex and half-duplex procedures at the local loop. Both
cases, however will be handled quite differently.
DNP V3.00 Data Link Layer (Version 0.02)
7-1
7. PHYSICAL LAYER PROCEDURES
7.1 GENERAL CONSIDERATIONS
The purpose of the data link to physical layer interface is to allow the data link to send or receive a
message to or from another data link. To accomplish this, the data link must be able to control when the
transmission of data takes place, detect the presence of data on the physical communication circuit and
use control line signaling for control of the physical circuit. In addition, the master station (or highest
priority device) needs to be able to take control of the communication circuit and block other stations
from transmitting.
In a direct connection type topology, the primary station (initiating station) can only communicate with
one station. If this circuit is four-wire then full-duplex procedures will be used and there will be no
chance of message collisions on the circuit. However, if the circuit is two-wire then half-duplex
procedures will be used. In this case, a collision can occur if both stations attempt to transmit data at the
same time. A direct connect to a dial-up PSN is typically 2-wire but the circuit from the station to the
modem is a 4-wire full-duplex circuit and should be used in a full-duplex fashion. The dial-up modem
must use CTS to hold off the transmitter after RTS is asserted.
In a multi-drop topology, the designated master station can act as a primary station to many secondary
stations. In this case there is a chance of collision in a two-wire or four wire circuit.
In a two-wire circuit, the designated master station messages can collide with any other stations
message and the slave station messages can collide with each other at any time.
In a four wire circuit, the master station messages cannot collide with the slave station messages but the
slave station messages can collide with each other.
7.2 HALF-DUPLEX PROCEDURES
When half duplex procedures are used in a two-wire system, there are several ways to avoid or recover
from a collision on the communication circuit. Regardless of the physical layer used, all physical layers
should be able to return a data carrier detection indication (DCD) which indicates if there is traffic on
the circuit. In a two-wire system, the indication appears when the master or slave is transmitting on the
circuit. When this indication is present, a station is transmitting on the circuit. During this time, no other
station should attempt to transmit on the circuit. When the indication disappears, the circuit is free for
someone to use. The question now is, which station is allowed to transmit on the circuit.
In the point-to-point configuration, either the master or slave station could transmit. In the multi-drop
configuration, either the master or any of many slave stations could transmit. The DNP data link
protocol does not assign priority to either the master or slave message but it is generally accepted in
SCADA that the master should have control of the communication circuit and therefore should transmit
the message (if one is to be sent). Any slave station, if allowed to transmit at this point, could possibly
cause a collision so the slave station must wait some time after detecting the loss of a data carrier before
attempting to send. Before sending, the indication is checked again and if the circuit is still idle then the
transmission can take place. If the circuit is busy then the station must wait again until the indication
disappears and perform the procedure again. The insertion of the time delay after the loss of data carrier
DNP Users Group
7-2
allows the master to take control of the circuit (if needed at that time) and shuts out the other station
(because the carrier indication is caused by the masters transmission).
7.2.1 Point-to-Point
In a point-to-point configuration this time delay only needs to be as long as the time needed for the
master to detect the loss of data carrier and begin the transmission of the message (plus any propagation
delays in the system) (Master_min time).
7.2.2 Multi-Point
In a multi-drop configuration, this time delay needs to be different for each slave station. One
possibility is to configure each slave station to wait a steadily increasing amount of time (no duplicate
times and all greater than Master_Min time) hence assigning priorities to the stations. In this way,
stations which are important in the system can be given higher priority and collisions will rarely happen
(only if device timing is bad or the system is poorly configured). However, if the high priority slave
stations have nothing to transmit, then there is a lot of time (and hence bandwidth) wasted.
Another scheme is to configure each slave station to wait a random time between Master_Min and Max.
This Max is a function of the number of slave stations in the system. In this way, each station can be
configured in the same way and the average time wasted is about (Max - Master_Min) / 2. However, a
collision is still possible if two stations decide to wait for the same amount of time. The smaller the
Max value the greater the chance of this happening.
7.3 FULL-DUPLEX PROCEDURES
When full-duplex procedures are used in a four-wire direct connection circuit, there is no chance of
collision because there exists two independent channels for both the reception and transmission of
messages. In this case, both the master and slave stations can transmit data at any time when needed.
The master still has control of the circuit because there is only one station to talk to, hence no need to
block out other stations.
When full-duplex procedures are used in a four-wire multi-drop system the problem of collision
avoidance increases in complexity. The reason for this lies in the fact that a physical communication
circuit that has two independent channels usually can only detect traffic in the receive direction. In a
two-wire system, any traffic in the receive or transmit direction can be detected because they are both
on the same circuit but in a four-wire system the transmitted and received messages travel on different
circuits.
7.3.1 Point-to-Point
In a point-to-point, full-duplex system both master and slave can transmit at the same time without
collision so there is no need for collision detection/avoidance or access mechanisms in this case.
7.3.2 Multi-Point
In a full-duplex, multi-drop system, the master station can transmit messages at any time without
collision but may not receive the data link confirmation immediately because another station (acting as
a primary station) may have taken control of the master's receive circuit before the secondary station or
a collision occurred.
The slave station's messages will collide at random because there is no way for the station to know if
another station has control of the master's receive circuit. The solution is to make use of a control
circuit (RTS in the case of RS-232) to signal the slave stations when another slave station has taken
control of the master's receive circuit. This signal must be an input to the slave stations which indicates
a request to take control of the master's receive circuit.
One simple solution is to allow slave messages to collide. In this way, the master can still send out high
priority messages but there may be a collision which will cause a secondary station to time-out.
DNP V3.00 Data Link Layer (Version 0.02)
7-3
7.3.3 Dial-Up Modem
A dial-up modem uses a four-wire full-duplex circuit that typically requires several control signals
(other than DCD) in order to operate. The dial-up circuit is a point-to-point circuit. However, the
meaning of the data carrier signal is quite different than with a direct circuit. The data carrier (DCD)
indicates that the modem is electrically connected to another modem across the PSN. It does not
necessarily mean that data is being transmitted on the circuit. The CTS (Clear To Send) line indicates to
the data link when it is safe to transmit. The DNP data link will assert the RTS (Request To Send) line
before transmitting each frame and wait for the CTS line to go high before transmitting the data. The
RTS line will then be de-asserted. If the DCD line goes low, the data link will assume that a connection
has been lost and attempt to re-dial if needed.
DNP Users Group
7-4
DNP V3.00 Data Link Layer (Version 0.02)
1
LIST OF ABBREVIATIONS AND
ACRONYMS
CRC cyclic redundancy check
DFC data flow control
DIR direction of physical transmission
DNP Distributed Network Protocol
EPA enhanced protocol architecture
FCB frame control bit
FCV frame count valid
IEC International Electrotechnical Commission
IED intelligent electronic device
ISO International Organization for Standardization
LPDU link protocol data unit
LSDU link service data unit
octet 8-bit data object (byte)
OSI Open System Interconnection
PRM primary
DNP Users Group
DNP PRODUCT DOCUMENTATION
DNP V3.00
TRANSPORT FUNCTIONS
Document Version: 0.01
Internal File: P009-0PD.TF
Associated Software Release: DNP V3.00
NOTICE OF RIGHTS - DNP USERS GROUP
The contents of this manual are the property of the DNP Users
Group. Revisions or additions to the definition and functionality of
the Distributed Network Protocol cannot be made without express
written agreement from the DNP Users Group or its duly authorized
party. In addition, no part of this document may be altered or
revised or added to in any form or by any means, except as permitted
by written agreement with the DNP Users Group or a Party duly
authorized by the DNP Users Group.
As a Party, duly authorized by the DNP Users Group, Harris
Corporation has made every reasonable attempt to ensure the
completeness and accuracy of this document, however, the
information contained in this manual is subject to change without
notice, and does not represent a commitment on the part of Harris
Corporation or the DNP Users Group. An update program for DNP
documents is provided upon request by Harris Corporation on
behalf of the DNP Users Group.
TRADEMARK NOTICES
Brand and product names mentioned in this document are
trademarks or registered trademarks of their respective companies.
DNP V3.00 Transport Functions (Version 0.01)
i
TABLE OF CONTENTS
ABOUT THIS DOCUMENT iii
PURPOSE OF THIS SPECIFICATION iii
WHO SHOULD USE THIS SPECIFICATION iii
HELP AND ADDITIONAL DOCUMENTATION iii
HOW THIS SPECIFICATION IS ORGANIZED iv
CONVENTIONS USED IN THIS SPECIFICATION iv
1. OVERVIEW 1-1
2. TRANSPORT FUNCTIONS 2-1
2.1 TRANSPORT HEADER 2-1
2.2 TRANSPORT HEADER FIELD DEFINITIONS 2-2
2.3 FRAME ASSEMBLING 2-3
2.4 TRANSMISSION OF MESSAGES 2-3
3. TRANSPORT SERVICES AND RESPONSIBILITIES 3-1
3.1 TRANSPORT FUNCTIONS 3-1
3.2 INTERFACE DESCRIPTION 3-2
LIST OF ABBREVIATIONS AND ACRONYMS
DNP Users Group
ii
TABLE OF FIGURES
FIGURE 2-1 TRANSPORT LAYER MESSAGE LAYOUT 2-2
FIGURE 2-2 TH BIT DEFINITIONS 2-2
FIGURE 2-3 ASSEMBLING OF DATA FROM THREE DATA FRAMES 2-3
FIGURE 2-4 TRANSMISSION OF A SINGLE FRAME MESSAGE 2-4
FIGURE 2-5 FRAGMENTING OF A MULTI-FRAME APPLICATION MESSAGE 2-4
DNP V3.00 Transport Functions (Version 0.01)
iii
ABOUT THIS DOCUMENT
PURPOSE OF THIS SPECIFICATION
This document specifies the Distributed Network Protocol (DNP) V3.00 Transport
Functions, transmission procedures and Transport Protocol Data Unit.
WHO SHOULD USE THIS SPECIFICATION
This specification is intended for communication engineers and programmers
interested in knowing the function and message format of the DNP V3.00 Transport
Functions. This includes programmers implementing and designing DNP V3.00
Transport Functions software/hardware and quality assurance personnel testing and
verifying implementations of the DNP V3.00 Transport Functions. Application
programmers may find this specification useful in determining how to interface with
and make use of the DNP V3.00 Transport Functions. Familiarity with the ISO-OSI 7-
layer model, IEC 3-layer EPA and IEC TC-57 standards is helpful.
HELP AND ADDITIONAL DOCUMENTATION
The following documentation may be helpful.
IEC 870-5-1 and IEC 870-5-2 standards (or drafts), Technical Committee No. 57
for data transmission in telecontrol systems
DNP V3.00 Data Object Library (P009-0BL)
DNP V3.00 Application Layer (P009-0PD.APP)
DNP V3.00 Data Link Layer (P009-0PD.DL).
DNP Users Group
iv
HOW THIS SPECIFICATION IS ORGANIZED
1. OVERVIEW
A general overview of the transport functions.
2. TRANSPORT FUNCTIONS
A detailed description of the packet formats and transmission procedures.
3. TRANSPORT SERVICES AND RESPONSIBILITIES
Services provided by an interface to the transport functions.
LIST OF ABBREVIATIONS AND ACRONYMS
CONVENTIONS USED IN THIS SPECIFICATION
In this document, the octet is a term used to refer to an eight bit-data object and is
synonymous with the term byte. The low order bit of an octet is referred to as bit 0 and
the high order bit as bit 7.
Irregular capitalization is used in referencing technical terms which have an associated
verb or noun. For example, data link indications commonly referred to as IND, can
also be described using the word INDication.
DNP V3.00 Transport Functions (Version 0.01)
1-1
1. OVERVIEW
This document defines the Distributed Network Protocol (DNP) V3.00 Transport
Functions, Transport Protocol Data Unit (TPDU), as well as transport services and
transmission procedures. Master stations, submaster stations and outstations or
intelligent electronic devices (IEDs) can use these transport functions to pass
messages between primary (originating) stations and secondary (receiving) stations. In
this protocol, master stations, submaster stations and outstations are both originators
(primary stations) and receivers (secondary stations).
The ISO (International Organization for Standardization) OSI (Open System
Interconnection) model supported by this protocol specifies physical, data link and
application layers only. This is termed the Enhanced Protocol Architecture (EPA).
However, to support advanced RTU functions and messages larger than the maximum
frame length as defined by the IEC (International Electrotechnical Committee)
document 870-5-1, the DNP V3.00 Data Link is intended to be used with this pseudo-
transport layer which implements message assembly and disassembly.
This pseudo-transport layer is actually a super-data link transport protocol which is
normally found as part of some OSI data links. However, because the IEC data link
(DNP V3.00 Data Link Layer) does not support these functions in the data link, it is
necessary to move them out of the data link in order to maintain compliance.
DNP V3.00 Transport Functions (Version 0.01)
2-1
2. TRANSPORT FUNCTIONS
This section describes the Transport layer functions which act as a pseudo-transport
layer to the DNP data link layer. The pseudo-transport layer function is specific only
for those messages that are larger than one Link Protocol Data Unit (LPDU) between
primary and secondary stations. This pseudo-transport layer acts as the DNP data link
user in a protocol stack consisting of only the DNP Data Link and DNP Application
Layer. This functionality allows the pseudo-transport layer to disassemble one
Transport Service Data Unit (TSDU) into multiple (more than one) Transport Protocol
Data Units (TPDUs), or frames, and assemble multiple (more than one) TPDUs into
one TSDU.
This process works as follows:
The pseudo-transport layer takes one TSDU (user data) and breaks it into several
sequenced TPDUs (each with Transport Protocol Control Information (TPCI)). Each
TPDU is sent to the data link layer as Link Service Data Unit (LSDU) for
transmission.
It also works in the reverse fashion. The pseudo-transport layer receives multiple
TPDUs from the data link layer and assembles them into one TSDU.
LSDUs are user data fragments which are small enough to fit into the defined FT3
frame format. When a primary station transmits a message to a secondary station, the
transport functions break the message into LSDUs. These functions add a Transport
layer Header (TH) octet at the beginning of the user data fragments that contain the
information for the secondary station to reconstruct the complete message. All
pseudo-transport layer messages have a TH.
The secondary station checks the TH octet on reception of each LSDU for the correct
sequence and builds a TSDU message for higher layers.
The TH contains information that can identify the first frame, last frame and give
every frame a six-bit sequence number. This information is required to reconstruct a
message and also to guard against higher layers from receiving misdirected or
incomplete messages.
2.1 TRANSPORT HEADER
After the data link receives a complete frame, the data is presented to the transport
functions in a format illustrated below. The TH field is stripped out before the frame
is combined with other frames belonging to the same message. Figure 2-1 shows the
structure of a TPDU.
DNP Users Group
2-2
-----------------
| | |
| TH | USER DATA |
| | |
-----------------
Figure 2-1 Transport Layer Message Layout
TH Transport control octet. One octet in length.
USER DATA 1 to 249 octets in length.
When an application requests the transmission of a long message, the message is
broken into fragments small enough to fit in a single DNP V3.00 Data Link frame.
The maximum size of a fragment is 249 octets of user data. The TH is added to the
head of the fragment and the maximum number of octets to be framed becomes 250
octets.
Maximum data link data count + 255 octets
Data link header data count - 5 octets
Transport header - 1 octet
Application user data = 249 octets
2.2 TRANSPORT HEADER FIELD DEFINITIONS
-----------------------------------------------
| | | | | | | | |
| FIN | FIR | | | SEQUENCE | | |
| | | | | | | | |
-----------------------------------------------
BIT 7 6 5 4 3 2 1 0
Figure 2-2 TH Bit Definitions
FIN The final bit indicates that this frame of user data is the last frame of a
sequence which compromises a complete user message.
FIN = 0 More frames follow.
1 Final frame of a sequence.
FIR The first bit indicates that the frame is the first in a sequence of
frame(s) which comprise a complete message. When a secondary
station receives a frame with the FIR bit set, all previously received
unterminated frame sequences are discarded. The first frame of a
sequence may have any sequence from 0 to 63.
If a frame is received without the FIR bit set and no message sequence
is currently in progress, then the frame is ignored.
If a complete user message is only one frame in length, both the FIR
and FIN bits are set.
FIR = 1 First frame of a sequence.
0 Not the first frame of a sequence.
SEQUENCE The sequence number of the frame is used to check that each frame is
being received in sequence. It guards against missing or duplicated
frames. All user messages start off with a sequence specified in the
DNP V3.00 Transport Functions (Version 0.01)
2-3
first frame which has the FIR bit set (each message may start with any
sequence number between 0 and 63). After sequence number 63 the
next sequence number will be 0.
The sequence number increments for each frame sent to or received
from the same address belonging to the same message and resets at the
beginning of a new message. The sequence number does not have to
increment across message boundaries, i.e. any sequence number is
valid when the FIR bit is set.
2.3 FRAME ASSEMBLING
Figure 2-3 illustrates the assembling of a three-frame message. The first frame of the
message identified by having the FIR bit set in the TH field. The last frame is
identified by having the FIN bit set in the TH field.
USER DATA FRAMES TRANSPORT DATA BUFFER

--------------
| SOURCE = n |
--------------
--------------
| FIR = 1 |
| FIN = 0 |
| SEQUENCE = 3| Note sequence starts with the value in the frame that has the FIR bit = 1
| USER DATA 0 |
-------------- -----------> -------------
| USER DATA 0 |
-------------
--------------
| SOURCE = n |
--------------
--------------
| FIR = 0 |
| FIN = 0 |
| SEQUENCE = 4|
| USER DATA 1 |
-------------- -----------> -------------
| USER DATA 1 |
-------------
| USER DATA 0 |
-------------
--------------
| SOURCE = n |----------------------------------->
-------------- SOURCE ADDRESS passed to application
--------------
| FIR = 0 |
| FIN = 1 | FIN indicates last frame
| SEQUENCE = 5|
| USER DATA 2 |
-------------- -----------> -------------
| USER DATA 2 | FIN indicated this is the last frame of message
-------------
| USER DATA 1 |
-------------
| USER DATA 0 | complete message passed to application
------------- ----------->
Figure 2-3 Assembling of Data From Three Data Frames
2.4 TRANSMISSION OF MESSAGES
Figure 2-4 illustrates the transmission of a single frame message using the SEND -
CONFIRM frame service. Figure 2-5 illustrates the transmission of a multi-frame
message using the SEND - CONFIRM frame service.
DNP Users Group
2-4
FRAMES SENT FROM DATA LINK COMPLETE MESSAGE FROM APPLICATION
CONFIRM FRAMES RECEIVED
---------------
| DESTINATION | parameter from application
---------------
---------------
| USER DATA |
| |
| 30 octets |
---------------
--------------
| DESTINATION | parameter to data link
--------------
--------------
| FIR = 1 |
| FIN = 1 | 1 TH octet
| SEQUENCE = 1 |
| USER DATA 0 | send 30 user octets plus 1 TH = 31 octets
SEND <----- --------------
CONFIRM -------> --------------------> SUCCESS to application layer
Figure 2-4 Transmission of a Single Frame Message
--------------
| DESTINATION | parameter from application
--------------
--------------
| USER DATA |
| |
| 598 octets |
--------------
--------------
| DESTINATION | parameter to data link
--------------
--------------
| FIR = 1 |
| FIN = 0 | 1 TH octet
| SEQUENCE = 2 |
| USER DATA 0 | send 249 octets (1 to 249 is the valid range for this count)
SEND <------- --------------
CONFIRM --------> --------------
| DESTINATION | parameter to data link
--------------
--------------
| FIR = 0 |
| FIN = 0 |
| SEQUENCE = 3 |
| USER DATA 1 | send 249 octets
SEND <------- --------------
CONFIRM --------> --------------
| DESTINATION | parameter to data link
--------------
--------------
| FIR = 0 |
| FIN = 1 |
| SEQUENCE = 4 |
| USER DATA 2 | send last 100 octets (249 + 249 + 100 = 598)
SEND <------- --------------
CONFIRM --------> --------------------> SUCCESS to application layer
Figure 2-5 Fragmenting of a Multi-Frame Application Message
DNP V3.00 Transport Functions (Version 0.01)
3-1
3. TRANSPORT SERVICES AND
RESPONSIBILITIES
3.1 TRANSPORT FUNCTIONS
This section describes the services offered by the pseudo-transport layer and its
function. The communication requirements of the network layer and the application
layer are satisfied by the pseudo-transport layer service primitives.
The pseudo-transport layer is responsible for performing the following functions:
Packing user data into multiple frames (more than one) of the defined DNP V3.00
Data Link frame format and using the services of the DNP V3.00 Data Link for
transmitting the data
Unpacking multiple frames that are received from the data link into user data
Controlling all aspects of the data link excluding data link configuration.
The pseudo-transport layer is responsible for providing the following services:
Exchange of SDUs between peer DNP V3.00 pseudo-transport layers
Error notification to transport user
Sequencing of SDUs
Prioritized SDU delivery
Quality SDU delivery.
SDUs will only be exchanged between peer DNP V3.00 pseudo-transport layers.
Error notification is given to the transport user when a response to a request has not
been received.
Priority delivery can be set to EXPEDITED or NORMAL to indicate a high or low
priority request.
Quality delivery can be set to SEND-NO-REPLY or SEND-CONFIRM to indicate
whether or not message acknowledgment is required.
DNP Users Group
3-2
3.2 INTERFACE DESCRIPTION
The pseudo-transport layer service primitives are illustrated in pseudo code to
illustrate the requirements and behavior in a real implementation and are not intended
as an exact interface definition.
Transport request (REQ) services can be used at any time after the transport functions
have been initialized and configured by the system.
confirm = request_transport_service(
SERVICE,
TIME_SERVICE,
destination,
source,
send_data_buffer,
send_count,
retry_flag,
time_of_transmission)
Input:
SERVICE Service to perform.
TIME_SERVICE Guaranteed time service to perform.
source Source address to use in sent message.
destination Destination address to use in sent message.
send_data_buffer Data to send in message.
send_count Number of octets in message.
retry_flag Instructs data link layer to retry unacknowledged frames or not.
time_of_transmission Time that first bit of first octet of message is to be sent.
Output:
time_of_transmission Time that first bit of first octet of message was sent
confirm = 0 Requested service is successful.
1 Requested service has failed.
2 Requested SEND data service is terminated by the current
primary station. (reception of a NACK frame from the
secondary station).
3 Service code is not implemented.
4 Requested service cannot proceed at this time because the data
link is busy either with a previous requested transaction, current
unrequested transaction or waiting for physical layer
availability.
DNP V3.00 Transport Functions (Version 0.01)
3-3
service = 0 Send a message specified in parameters using SEND-
CONFIRM frames. Fails if the data link is busy.
1 Send a message specified in parameters using SEND-NO-
REPLY frames. Fails if the data link is busy.
2 Expedited send a message specified in parameters using SEND-
CONFIRM frames. May necessitate canceling the current
secondary transaction if a half-duplex system is used.(i.e. forces
the data link to send a NACK frame instead of a CONFIRM
frame in the next secondary transaction). This action only takes
place if the primary station is using SEND-CONFIRM frames.
3 Expedited send a message specified in parameters using SEND-
NO-REPLY expected frames. In a half-duplex system, this may
mean canceling the current secondary transaction. (as above).
4 Return link status. Return successful if the data link is not busy.
time_service =0 Send message at time specified in time_of_transmission. This
service should have the highest priority.
1 Send message at any time with priority specified.
Data link indications (IND) can be requested at any time by the service user but
should be checked as often as possible in order to obtain received data.
indications = request_data_link_indications(
source_address,
destination_address,
received_data_buffer,
received_data_count,
time_of_reception)
Output:
source_address Source address of received message.
destination_address Destination address of received address.
received_data_buffer Received message.
received_data_count Number of octets in message.
time_of_reception Time at which first bit of first octet of message was received.
DNP Users Group
3-4
Indications = 0 No indications to report.
1 Data link has received a valid message that has been placed in
received_data_buffer and the number of octets received has
been placed in received_data_count. The source address of the
received message has been placed in source_address. If the data
link is configured as a master station then the time that the first
bit of the first octet of the message was received has been
placed in time_of_reception. If the data link is configured as an
outstation then the time_of_reception will still be returned but
the service user has to be aware of the possibility of inaccurate
times received before the outstation has been time-
synchronized.
2 Pseudo-transport layer has detected a transaction failure.
DNP V3.00 Transport Functions (Version 0.01)
1
LIST OF ABBREVIATIONS AND
ACRONYMS
CRC cyclic redundancy check
DNP Distributed Network Protocol
EPA enhanced protocol architecture
IEC International Electrotechnical Commission
ISO International Organization for Standardization
octet 8-bit data object (byte)
OSI Open System Interconnection
RTU remote terminal unit
DNP Users Group
DNP PRODUCT DOCUMENTATION
DNP V3.00
APPLICATION LAYER
Document Version: 0.03
Internal File: P009-0PD.APP
Associated Software Release: DNP V3.00
NOTICE OF RIGHTS - DNP USERS GROUP
The contents of this manual are the property of the DNP Users
Group. Revisions or additions to the definition and functionality of
the Distributed Network Protocol cannot be made without express
written agreement from the DNP Users Group or its duly authorized
party. In addition, no part of this document may be altered or
revised or added to in any form or by any means, except as permitted
by written agreement with the DNP Users Group or a Party duly
authorized by the DNP Users Group.
As a Party, duly authorized by the DNP Users Group, Harris
Corporation has made every reasonable attempt to ensure the
completeness and accuracy of this document, however, the
information contained in this manual is subject to change without
notice, and does not represent a commitment on the part of Harris
Corporation or the DNP Users Group. An update program for DNP
documents is provided upon request by Harris Corporation on
behalf of the DNP Users Group.
TRADEMARK NOTICES
Brand and product names mentioned in this document are
trademarks or registered trademarks of their respective companies.
DNP V3.00 Application Layer (Version 0.03)
v
TABLE OF CONTENTS
ABOUT THIS DOCUMENT IX
PURPOSE OF THIS SPECIFICATION ix
WHO SHOULD USE THIS SPECIFICATION ix
HELP AND ADDITIONAL DOCUMENTATION ix
HOW THIS SPECIFICATION IS ORGANIZED x
CONVENTIONS USED IN THIS SPECIFICATION x
1. OVERVIEW 1-1
1.1 DESCRIPTION AND IEC RELATIONSHIP 1-2
2. MESSAGE FORMATS 2-1
2.1 APPLICATION REQUEST FORMAT 2-2
2.2 APPLICATION RESPONSE FORMAT 2-2
3. DEFINITION OF DNP MESSAGE FIELDS 3-1
3.1 APPLICATION HEADERS 3-1
3.2 COMMUNICATION FLOW CONTROL 3-2
3.3 MASTER REQUEST & UNSOLICITED RESPONSE COLLISIONS 3-8
3.4 ERROR RECOVERY 3-11
3.5 FUNCTION CODES 3-12
3.6 INTERNAL INDICATIONS 3-14
3.7 OBJECT HEADER 3-16
4. DETAILED FUNCTION CODE DESCRIPTIONS 4-1
4.1 CONFIRM (FUNCTION CODE 0) 4-1
4.2 READ (FUNCTION CODE 1) 4-2
4.3 WRITE (FUNCTION CODE 2) 4-13
4.4 SELECT (FUNCTION CODE 3) 4-15
4.5 OPERATE (FUNCTION CODE 4) 4-17
4.6 DIRECT OPERATE (FUNCTION CODE 5) 4-17
4.7 DIRECT OPERATE - NO ACKNOWLEDGEMENT (FUNCTION CODE 6)4-18
4.8 IMMEDIATE FREEZE (FUNCTION CODE 7) 4-18
4.9 IMMEDIATE FREEZE - NO ACKNOWLEDGEMENT (FUNCTION CODE
8) 4-19
4.10 FREEZE AND CLEAR (FUNCTION CODE 9) 4-19
4.11 FREEZE AND CLEAR - NO ACKNOWLEDGEMENT (FUNCTION CODE
10) 4-19
4.12 FREEZE WITH TIME (FUNCTION CODE 11) 4-20
DNP Users Group
vi
4.13 FREEZE WITH TIME - NO ACKNOWLEDGEMENT (FUNCTION CODE
12) 4-21
4.14 COLD RESTART (FUNCTION CODE 13) 4-21
4.15 WARM RESTART (FUNCTION CODE 14) 4-21
4.16 INITIALIZE DATA (FUNCTION CODE 15) 4-22
4.17 INITIALIZE APPLICATION (FUNCTION CODE 16) 4-22
4.18 START APPLICATION (FUNCTION CODE 17) 4-23
4.19 STOP APPLICATION (FUNCTION CODE 18) 4-23
4.20 SAVE CONFIGURATION (FUNCTION CODE 19) 4-24
4.21 ENABLE SPONTANEOUS MESSAGES (FUNCTION CODE 20) 4-25
4.22 DISABLE SPONTANEOUS MESSAGES (FUNCTION CODE 21) 4-25
4.23 ASSIGN CLASSES (FUNCTION CODE 22) 4-25
4.24 DELAY MEASUREMENT (FUNCTION CODE 23) 4-26
5. CLASSES 5-1
6. TIME SYNCHRONIZATION 6-1
7. BINARY INPUT WITH TIME EVENTS 7-1
8. FILE TRANSFER 8-1
8.1 FILE IDENTIFIER OBJECTS PERFORMING WRITE FUNCTIONS 8-1
8.2 FILE IDENTIFIER OBJECT PERFORMING READ FUNCTIONS 8-5
LIST OF ABBREVIATIONS AND ACRONYMS 1
DNP V3.00 Application Layer (Version 0.03)
vii
TABLE OF FIGURES
FIGURE 1-1 CONTEXT OF EPA 1-1
FIGURE 2-1 MESSAGE SEQUENCE 2-1
FIGURE 2-2 APPLICATION REQUEST FORMAT 2-2
FIGURE 2-3 APPLICATION RESPONSE FORMAT 2-3
FIGURE 3-1 REQUEST HEADER 3-1
FIGURE 3-2 RESPONSE HEADER 3-1
FIGURE 3-3 APPLICATION CONTROL FIELD 3-2
FIGURE 3-4 TYPICAL MESSAGE TRANSACTION FLOW 3-4
FIGURE 3-5 MULTI-FRAGMENT RESPONSE & RTU CONFIRMATION
TIMEOUT 3-5
FIGURE 3-6 MESSAGE TRANSACTIONS WITH RESPONSE TIMEOUTS 3-6
FIGURE 3-7 MESSAGE FLOW WHEN RESPONSE DELAYED ON A
NETWORK 3-7
FIGURE 3-8 RESENDING UNSOLICITED RESPONSES DUE TO NETWORK
DELAYS 3-7
FIGURE 3-9 SIMULTANEOUS TRANSMISSIONS, IMMEDIATE_PROCESS
MODE 3-9
FIGURE 3-10 SIMULTANEOUS TRANSMISSIONS, IMMEDIATE_PROCESS
MODE 3-10
FIGURE 3-11 SIMULTANEOUS TRANSMISSIONS,
PROCESS_AFTER_CONFIRM MODE 3-11
FIGURE 3-12 OBJECT HEADER 3-16
FIGURE 3-13 OBJECT FIELD 3-17
FIGURE 3-14 QUALIFIER FIELD 3-17
FIGURE 3-15 MESSAGES WITHOUT DATA OBJECTS 3-22
FIGURE 3-16 MESSAGES WITH DATA OBJECTS 3-25
FIGURE 4-1 CONFIRMATION MESSAGE 4-1
FIGURE 4-2 SINGLE OBJECT REQUEST 4-3
FIGURE 4-3 MULTIPLE OBJECTS OR RANGES 4-3
FIGURE 4-4 SINGLE OBJECT RANGE WRITE 4-14
FIGURE 4-5 MULTIPLE OBJECT OR MULTIPLE RANGES 4-14
FIGURE 4-6 MASTER SELECTION OF TWO CONTROL OR ANALOG
OUTPUTS 4-15
FIGURE 4-7 OUTSTATION RESPONSE 4-16
FIGURE 4-8 MASTER SELECTION OF A PATTERN OUTPUT 4-16
FIGURE 4-9 OUTSTATION RESPONSE TO THE PATTERN SELECT
MESSAGE 4-16
FIGURE 4-10 MASTER SELECTION OF TWO OUTPUTS OR SETPOINTS 4-17
FIGURE 4-11 OUTSTATION RESPONSE 4-17
FIGURE 4-12 MASTER SELECTION OF TWO OUTPUTS OR SETPOINTS 4-17
FIGURE 4-13 OUTSTATION RESPONSE 4-18
DNP Users Group
viii
FIGURE 4-14 MASTER SELECTION OF TWO OUTPUTS OR SETPOINTS 4-18
FIGURE 4-15 MASTER IMMEDIATE FREEZE CONTROL MESSAGE 4-18
FIGURE 4-16 OUTSTATION RESPONSE TO IMMEDIATE FREEZE 4-18
FIGURE 4-17 MASTER IMMEDIATE FREEZE NO-ACK CONTROL MESSAGE4-19
FIGURE 4-18 MASTER FREEZE AND CLEAR CONTROL MESSAGE 4-19
FIGURE 4-19 OUTSTATION RESPONSE TO FREEZE AND CLEAR REQUEST 4-19
FIGURE 4-20 MASTER FREEZE AND CLEAR NO-ACK CONTROL MESSAGE4-20
FIGURE 4-21 MASTER FREEZE WITH TIME MESSAGE 4-20
FIGURE 4-22 OUTSTATION RESPONSE TO FREEZE WITH TIME 4-20
FIGURE 4-23 MASTER FREEZE WITH TIME NO-ACK MESSAGE 4-21
FIGURE 4-24 MASTER COLD RESTART CONTROL MESSAGE 4-21
FIGURE 4-25 OUTSTATION RESPONSE TO COLD RESTART REQUEST 4-21
FIGURE 4-26 MASTER WARM RESTART CONTROL MESSAGE 4-22
FIGURE 4-27 OUTSTATION RESPONSE TO WARM RESTART REQUEST 4-22
FIGURE 4-28 MASTER INITIALIZE DATA CONTROL MESSAGE 4-22
FIGURE 4-29 OUTSTATION RESPONSE TO INITIALIZE DATA REQUEST 4-22
FIGURE 4-30 MASTER INITIALIZE APPLICATION CONTROL MESSAGE 4-22
FIGURE 4-31 OUTSTATION RESPONSE AFTER INITIALIZING
APPLICATION(S) 4-23
FIGURE 4-32 MASTER START APPLICATION CONTROL MESSAGE 4-23
FIGURE 4-33 OUTSTATION RESPONSE AFTER STARTING
APPLICATION(S) 4-23
FIGURE 4-34 MASTER STOP APPLICATION CONTROL MESSAGE 4-24
FIGURE 4-35 OUTSTATION RESPONSE AFTER STOPPING
APPLICATION(S) 4-24
FIGURE 4-36 MASTER SAVE CONFIGURATION CONTROL MESSAGE 4-24
FIGURE 4-37 OUTSTATION RESPONSE AFTER SAVING
CONFIGURATION(S) 4-24
FIGURE 4-38 MASTER REQUEST TO ENABLE SPONTANEOUS MESSAGES 4-25
FIGURE 4-39 OUTSTATION RESPONSE 4-25
FIGURE 4-40 MASTER REQUEST TO DISABLE SPONTANEOUS MESSAGES 4-25
FIGURE 4-41 OUTSTATION RESPONSE TO DISABLE SPONTANEOUS
MESSAGE 4-25
FIGURE 4-42 MASTER REQUEST TO ASSIGN CLASSES TO DATA 4-26
FIGURE 4-43 OUTSTATION RESPONSE TO ASSIGN CLASSES 4-26
FIGURE 4-44 MASTER REQUEST TO INITIATE DELAY MEASUREMENT 4-26
FIGURE 4-45 OUTSTATION REPONSE TO DELAY MEASUREMENT
REQUEST 4-26
FIGURE 8-1 PASSING A FILE IDENTIFIER OBJECT VIA DATA
CONCENTRATORS 8-4
DNP V3.00 Application Layer (Version 0.03)
ix
ABOUT THIS DOCUMENT
PURPOSE OF THIS SPECIFICATION
This document specifies the Distributed Network Protocol (DNP) application layer
services and message format. This document specifies the Application Protocol Data
Unit (APDU), application data flow control and any specific information pertaining to
DNP application layer services.
WHO SHOULD USE THIS SPECIFICATION
This specification is for people who need to know the structure and meaning of the
fields that make up the application layer message.
This includes programmers implementing and designing an application and Quality
Assurance personnel testing and verifying implementations of the application layer.
HELP AND ADDITIONAL DOCUMENTATION
The following documentation may be helpful.
DNP V3.00 Data Object Library (P009-0BL).
DNP Users Group
x
HOW THIS SPECIFICATION IS ORGANIZED
1. OVERVIEW
A general overview of the application layer.
2. MESSAGE FORMATS
A definition of the request and response formats.
3. DEFINITION OF THE DNP MESSAGE FIELDS
A detailed explanation of the message field.
4. DETAILED FUNCTION CODE DESCRIPTION
A description of the function codes.
5. CLASSES
A description of the classes.
6. TIME SYNCHRONIZATION
A description of time synchronizing.
7. BINARY INPUT WITH TIME EVENTS
A description of binary input with time events.
8. FILE TRANSFER
A description of file transfer.
LIST OF ABBREVIATIONS AND ACRONYMS
CONVENTIONS USED IN THIS SPECIFICATION
The term octet used in this document refers to an eight-bit data object and is
synonymous with the term byte. The low order bit of an octet is numbered as bit zero
(0) and the high order is bit seven (7). Data octets illustrated in this document are
received and transmitted from left to right.
DNP V3.00 Application Layer (Version 0.03)
1-1
1. OVERVIEW
This document defines the Harris Distributed Network Protocol (DNP) application
layer APDU format and services.
The ISO OSI (International Standards Organization Open System Interconnection)
model specifies seven layers. The International Electrotechnical Commission (IEC)
specifies a simplified model consisting of the physical, data link and application layers
only. This is termed the Enhanced Performance Architecture (EPA). This document
defines the third layer of this EPA or the Application Layer. The data link layer is
defined in:
Distributed Network Protocol Version 3.00: Data Link Layer
(P009-0PD.DL).
Harris Canada Inc. has developed the DNP for application in both SCADA and
distributed automation (DA) systems. Primary focus has been on the current and
future needs of these areas. The DNP is suitable for use in highly secure, moderate
speed and moderate throughput applications. The protocol is highly flexible and
open-ended without any target hardware specific constructs.
Figure 1-1 on the following page shows the EPA structure and how it fits into the
entire communication system. As shown, the User Layer interfaces to the Application
Layer in one place only implying that the user has no need to know of the other
elements of the communication system except the Application Layer interface. The
User Layer makes use of the Application Layer to send/receive complete SCADA/DA
messages to/from a master station or outstation.
Figure 1-1 Context of EPA
User Layer
Application Layer
Data Link Layer
Physical Layer
Communication Medium
DNP Users Group
1-2
1.1 DESCRIPTION AND IEC RELATIONSHIP
The DNP Application Layer APDU is based in principle on the IEC 870-5-3 and 870-
5-4 draft documents as prepared by TC-57 WG 03. Structurally, the Application
Layer PDU (Protocol data Unit) fits the IEC description of an APDU. The user sends
Application User Data to the Application Layer where it is converted to ASDU
(Application Service Data Unit). In DNP, the Application User Data is converted into
multiple ASDUs. Each ASDU is then prefixed by APCI (Application Protocol
Control Information) which is then packaged as an APDU. In DNP, each APDU that
is part of the larger multi-APDU is referred to as a fragment and there is a restriction
that each fragment contains complete data objects only and that the function code
portion of the APCI (Application Protocol Control Information) is identical in each
fragment of the same message or multi-APDU. That is, there will be no fragmentation
of information objects between APDUs and the same operation must be requested of
each object in the message. This is to ensure that each fragment on its own can be
processed and also implies that each ASDU contains only complete data objects. In
reverse, the Application Layer receives multiple APDU (one at a time) where it
removes the APCI to obtain the ASDU and assembles the ASDUs into Application
User Data.
DNP V3.00 Application Layer (Version 0.03)
2-1
2. MESSAGE FORMATS
This section defines the formats of the application layer messages (APDU). The terms
APDU and fragment are interchangeable. In this specification the master station is
defined as the station sending a request message and the Outstation is the slave
device, Remote Terminal Unit (RTU) or Intelligent End Device (IED) to which the
requested messages is destined. In DNP, only designated master stations can send
Application Layer request messages and only Outstations can send Application Layer
Response messages.
Figure 2-1 below shows the sequence of Application Layer messages between one
master and one Outstation.
Master Outstation
Send Request --------------------> Accept request and process
<-------------------- Optional confirmation
Accept response <----------------- Send Response
Optional confirmation --------------------------------->
Important change detected
Accept response <----------------- Send Unsolicited Response
Optional confirmation --------------------------------->
Figure 2-1 Message Sequence
As shown above, the master station sends an Application Layer Request to the
outstation which returns an Application Layer Response. The outstation can decide to
spontaneously transmit data using an Application Layer Unsolicited Response
message. For a master, a request/response transaction with a particular outstation
must be completed before another requests can be sent to that outstation. A master
station may accept unsolicited responses while the request transaction is in progress.
For an outstation, a request/response transaction must be completed before any other
requests are accepted or unsolicited responses are sent. Unsolicited responses can be
sent before or after the request/response transaction but not during. If an outstation is
presently in the middle of an unsolicited transaction (i.e. waiting for a confirmation),
it may conditionally accept one request command from the master. (For detailed
information, see Section 3.3 - Master Request and Unsolicited Response Collisions).
In addition, each response or request can consist of 1 or more individual fragments.
Each fragment however should be digestible (parsable) and therefore executable
(because the function code is part of every fragment). It is advised that devices with
limited message storage capabilities should only be sent single fragment message
requests when the expected response (from all fragments sent) is larger than one
DNP Users Group
2-2
fragment. This is to ensure that devices can process a request and build and more
importantly send a response before the next request is received. Otherwise, multi-
fragment messages may require multi-fragment responses which may require more
message storage than the device has available.
2.1 APPLICATION REQUEST FORMAT
The application request message format (APDU) is illustrated in Figure 2-2. The
APDU is made up of an APCI block which contains message control information and
an ASDU which contains information to be processed by the receiving station. The
APCI is often called a request header in an application request message. In DNP, the
ASDU is optional and is used when the message meaning is not conveyed completely
in the request header. The request header contains information on how to assemble a
multi-fragment message and on the purpose of the message. The request header is
present in all application layer request APDUs. If the request header implies all the
needed information required to carry out the request, the ASDU is not present.
Each ASDU consists of one or more Data Unit Identifiers (DUI) or object headers and
optional associated Information Objects (IO) or data fields. The object header can
specify 0 or more en that returned by the receiving station or that follow the header in
the message.
! DUI ! IO .. IO ! DUI ! IO !
"################$################$######% ....&###############$######'
! Request Header ! Object Header ! data ! ! Object Header ! data !
! ! ! ! ! ! !
&################$################(######).....*###############(######'
! APCI ! ASDU !
Figure 2-2 Application Request Format
Request Header The request header identifies the purpose of the message and
consists of APCI (Application Protocol Control Information).
Object Header This header identifies the data objects that follow.
Data Data object(s) of the type specified in the object header.
2.2 APPLICATION RESPONSE FORMAT
The response from an Outstation to an application layer request APDU or the
unsolicited response from an outstation have the format illustrated in Figure 2-3. The
format is identical in form to the request. The APCI is often called a response header
in an application response message. The response header contains the same
information as the request header plus an additional field containing internal
indications of the outstation. The response header is always part of the application
response. The response ASDU has the same format of the request message with one
notable exception (explained in Section 3).
DNP V3.00 Application Layer (Version 0.03)
2-3
! DUI ! IO .. IO ! DUI ! IO !
"################$################$######% ....&###############$######'
! Response Header! Object Header ! data ! ! Object Header ! data !
! ! ! ! ! ! !
&################$################(######).... *###############(######'
! APCI ! ASDU !
Figure 2-3 Application Response Format
Response Header The response header identifies the purpose of the message and
consists of APCI (Application Protocol Control Information).
Object Header This header identifies the data objects that follow.
Data Data object(s) of the type specified in the object header.
DNP Users Group
2-4
DNP V3.00 Application Layer (Version 0.03)
3-1
3. DEFINITION OF DNP MESSAGE
FIELDS
This section describes the request and response headers (APCIs) which control the
sequence and flow of application messages between a master station and an
Outstation, and the ASDU which include DUI or data object headers. The headers are
used to assemble multi-fragment (multi-APDU) messages into Application User Data.
The object headers are used to identify uniquely the information object(s) that
optionally follow the header.
3.1 APPLICATION HEADERS
3.1.1 Request Header
The request header or APCI has two fields. Each field is one octet in length and is
illustrated below.
"#####################+###############%
! Application Control ! Function Code !
! AC ! FC !
*#####################(###############)
Figure 3-1 Request Header
3.1.2 Response Header
The response header has three fields as illustrated below.
"#####################+###############+######################%
! Application Control ! Function Code ! Internal Indications !
! AC ! FC ! IIN !
! ! ! !
*#####################(###############(######################)
Figure 3-2 Response Header
3.1.3 Application Control
The application control field has a size of one octet. It provides information needed to
construct multi-fragment application messages.
Application messages may be packaged into fragments, with each fragment small
enough to fit into the application's message buffer. The recommended size of the
fragment buffer is 2048 bytes in order to maintain compatibility with current DNP
DNP Users Group
3-2
devices. Each fragment has an application header and appropriate object headers so
that each fragment can be processed as individual messages which can then be
discarded making room for the next fragment.
7 6 5 4 3 2 , 0 bit
"#######+#######+########+#######################%
! FIR ! FIN ! CON ! SEQUENCE !
! ! ! ! !
*#######(#######(########(#######################)
Figure 3-3 Application Control Field
FIR If set to one (1), this bit indicates the message fragment is the first fragment of
a complete application message.
FIN If set to one (1), this bit indicates the message fragment is the final fragment of
a complete application message.
CON If set to one (1) in a received message, indicates the sending application is
expecting a confirmation from the receiving application of the reception of the
fragment. An application function code zero (0) is used in the confirmation
message.
SEQUENCE Indicates the fragment number. Fragment numbers 0 to 15 are reserved
for master station requests and all Outstation responses (NOT
Unsolicited Responses). Fragment numbers 16 to 31 are reserved for
unsolicited responses from Outstations. For unsolicited responses, each
consecutive fragment from an Outstation must have an increasing
sequence number (the number overflows from 31 to 16). For requests
to an Outstation and the Outstation responses (not unsolicited
responses), each consecutive fragment received from or transmitted to
the same Outstation must have an increasing sequence number (the
number overflows from 15 to 0).
NOTE: An Unsolicited Response is a message generated by an Outstation,
usually containing event data, which is sent automatically to the
master. The master does not need to poll the Outstation for this data.
NOTE: It is recommended that any changed data that is reported from an
Outstation be sent with a confirmation requested in the response.
3.2 COMMUNICATION FLOW CONTROL
The flow of requests and responses between the master and the Outstation is
controlled by fields in the response and request headers as well as application timers
and parameters. The fields, timers and parameters controlling message flow are:
1) CON bit field. Setting/clearing this bit enables/disables message
CONFIRMation responses. A CONFIRMation response is an application
acknowledgments of the previous request or response message.
2) FIR and FIN bit fields.
DNP V3.00 Application Layer (Version 0.03)
3-3
3) Sequence Number field. This number is used to assemble multi-fragment
messages and identify which responses match particular requests.
4) Master station and Outstation application response time-outs. These specify
how long an application must wait for a response or CONFIRMation response
before re-transmitting or aborting the transaction. The application may or may
not support re-transmission of transactions at the application layer.
5) Master station and Outstation application retry count. Applications may or
may not support application level retries. Retry counters specify how many
times a request is repeated if a response fails, or how often responses are re-
transmitted if a CONFIRMation response is not received.
An Outstation must completely process a request and respond to it before beginning to
process a second request. It cannot simultaneously process multiple requests.
The Sequence Number for all requests from the master station to the Outstation
is in the range 0 to 15 inclusive. The sequence number for all Unsolicited
Responses from the Outstation is in the range 16 to 31 inclusive.
The following rules dictate how sequence numbers work:
The sequence number rolls over from 15 to 0 or from 31 to 16. Each successive
request fragment from the DNP master station has an incremented sequence
number. The exception is for retries on requests. For single fragment request
retries, the sequence number is NOT incremented. For multi fragment request
retries, the sequence number of the first fragment of the request retry equals the
sequence number of the last fragment of the request which has just failed.
A single fragment response to a single fragment request has the same sequence
number as the request.
The CONFIRMation response to a request or response has the same sequence
number as the request or response.
The first fragment of a multi-fragment response to a single fragment request has the
same sequence number as the request. For successive fragment of the multi-
fragment response, the sequence number is incremented.
The first fragment of a multi-fragment response to a multi-fragment request has the
same sequence number as the last fragment of the multi-fragment request.
The use of this sequence number scheme ensures the Outstation and master station
can cope with all occurrences of messages being lost or delayed on a communication
network. The following rules are obeyed by both the Outstation and master station:
If the system uses application level retries, when a response is not received before
time-out, the request will be re-transmitted with the same sequence number.
If two messages are received with the same sequence number, it usually means that
the response to the message was not received by the other station. In this case,
retransmit the response (re-processing the message is unnecessary).
If two CONFIRMation responses are received with the same sequence number,
ignore the second response.
The following figures illustrate some cases of message transactions and how the
Sequence Numbers prevent problems. In the examples, SEQ is the Sequence Number
and CON is the Confirmation Requested bit in the message. Time progresses from left
DNP Users Group
3-4
to right in the diagrams. The vertical arrows represent the flow of messages between
the Outstation and the master station.
Case One illustrates typical message transactions. The master sends a request, the
Outstation responds and the master CONFIRMs the response. Later on, the Outstation
sends an Unsolicited Response to the master station. When the Outstation transmits
the response, it starts a CONFIRMation response timer. If this timer had expired
before the CONFIRMation was received, the Outstation would have re-transmitted the
response.
Case Two shows a similar situation to Case One except the master request requires a
CONFIRMation response as well as a normal response.
CASE ,
Time
############################################################
Master ! Request. ! !
! Response ! CONFIRM ! CONFIRM
! expected. ! (SEQ=7) ! (SEQ=24)
! (CON=0) ! !
! (SEQ=7) ! !
M M M
--------------------------------------------------------------------
Outstation L L
! Response ! Unsol.
! to master ! Response
! (CON=,) ! (CON=,)
! (SEQ=7) ! (SEQ=24)
! !
CASE 2
Time
############################################################
Master ! Request. !
! Response ! CONFIRM
! expected. ! (SEQ=2)
! (CON=0) !
! (SEQ=2) !
M M
--------------------------------------------------------------------
Outstation L L
! CONFIRM ! Response
! (SEQ=2) ! to master
! ! request
! ! (CON=,)
! ! (SEQ=2)
Figure 3-4 Typical Message Transaction Flow
NOTE: In Figure 3-4 and some of the following figures, the CON bit is set in
the Outstation responses. The CON bit may be clear in some
transaction (e.g. when the response does not contain event data). In this
case, data loss due to communication loss is often not critical. The
Outstation assumes that the response was successful.
Case Three illustrates a multi-fragment response from the Outstation. The sequence
number in successive fragments is incremented. Note that the next request from the
master station used sequence number equals 4.
In Case Four, the response from the Outstation is not received by the master station.
The Outstation waits for a CONFIRMation, and when its CONFIRMation time-out
expires it re-transmits the response.
DNP V3.00 Application Layer (Version 0.03)
3-5
CASE 3
Time
############################################################
Master ! Request. ! ! ! Request.
! Response ! CONFIRM ! CONFIRM ! (SEQ=4)
! expected. ! (SEQ=2) ! (SEQ=24) !
! (CON=0) ! ! !
! (SEQ=2) ! ! !
M M M M
--------------------------------------------------------------------
Outstation L L
! Response ! Response
! Frag. , ! Frag. 2
! (CON=,) ! (CON=,)
! (SEQ=2) ! (SEQ=3)
! !
CASE 4
Time
############################################################
Master ! Request. !
! Response Response ! CONFIRM
! expected. not ! (SEQ=3)
! (CON=0) received. !
! (SEQ=3) !
M M
--------------------------------------------------------------------
Outstation L L
! Response CONFIRM not ! Response
! (CON=,) received. RTU ! (CON=,)
! (SEQ=3) time-out. Resend ! (SEQ=3)
! response. !
! !
Figure 3-5 Multi-Fragment Response & RTU Confirmation Time-out
From the Outstation side, Case Five is identical to Case Four. In Case Five unlike
Case Four, the master does CONFIRM the first Outstation response. This
CONFIRMation is not received by the Outstation. When the Outstation resends the
response, the master will repeat the CONFIRMation. The master will not re-process
the second response.
Case Six illustrates the case where the master request is not received by the
Outstation. The master repeats the request after a response time-out occurs.
DNP Users Group
3-6
CASE 5
Time
############################################################
Master ! Request. ! !
! Response ! CONFIRM ! CONFIRM
! expected. ! (SEQ=,0) ! (SEQ=,0)
! (CON=0) ! !
! (SEQ=,0) ! !
M M M
--------------------------------------------------------------------
Outstation L L
! Response CONFIRM not ! Response
! (CON=,) received. RTU ! (CON=,)
! (SEQ=,0) time-out. Resend ! (SEQ=,0)
! response. !
! !
CASE 6
Time
############################################################
Master ! Request. Time-out on ! Request. !
! Response response. ! Response ! CONFIRM
! expected. Resend ! expected. ! (SEQ=5)
! (CON=0) Request. ! (CON=0) !
! (SEQ=5 ) ! (SEQ=5) !
M M M
--------------------------------------------------------------------
Outstation L
Request not ! Response
received. ! (CON=,)
! (SEQ=5)
!
!
Figure 3-6 Message Transactions With Response Time-outs
Case Seven is similar to Case Four. In both cases, the Outstation response to the
master request is not received. In Case Four the Outstation timed out waiting for the
CONFIRMation and repeated the response. In Case Seven however, the master times
out first and repeats the request. The Outstation automatically stops waiting for the
CONFIRMation and repeats its previous response. Case Seven also illustrates another
possible condition. The original response that the master did not receive is delayed in
the communication network. The master re-sends the request, the Outstation replies
and the master finishes the transaction sequence with a CONFIRMation. The original
response from the Outstation then arrives at the master station. The master station
assumes that the first CONFIRMation was not received by the Outstation. It therefore
re-transmits the CONFIRMation. The Outstation receives and discards this second
CONFIRMation.
Case Eight is similar to Case Seven. In this case, the first CONFIRMation from the
Outstation is delayed in the communication network. When this CONFIRMation
eventually arrives at the master station, it is ignored.
DNP V3.00 Application Layer (Version 0.03)
3-7
CASE 7
Time
############################################################
Master ! Request. Response ! Request. ! !
! Response not received. ! Response ! CONFIRM ! CONFIRM
! expected. Resend ! expected. ! (SEQ=8) ! (SEQ=8)
! (CON=0) request. ! (CON=0) ! !
! (SEQ=8) ! (SEQ=8) ! !
M M M M
--------------------------------------------------------------------
Outstation L L
! Response ! Response RTU ignores
! (CON=,) ! (CON=,) second
! (SEQ=8) ! (SEQ=8) CONFIRM
! !
! !
CASE 8
Time
############################################################
Master ! Request. CONFIRM delayed ! Request. Master receives
! No response in network. ! No response first delayed
! expected. Time-out. Master ! expected. CONFIRM and
! (CON=0) resends request. ! (CON=,) ignores it.
! (SEQ=5 ) ! (SEQ=,2)
M M
--------------------------------------------------------------------
Outstation L L
! CONFIRM ! CONFIRM
! (SEQ=,2) ! (SEQ=,2)
! !
! !
! !
Figure 3-7 Message Flow When Response Delayed on a Network
In Case Nine, the Unsolicited Response is re-transmitted by the Outstation when a
time-out on the CONFIRMation occurs. The master eventually receives it twice. It
does not process it the second time, but does respond to it in the same way as the first
time. The Outstation discards the second CONFIRMation. This illustrates a situation
where network delays, and not message losses, cause time-outs to occur.
CASE 9
Time
############################################################
Master Unsol. response ! Master !
delayed in ! CONFIRM receives the ! CONFIRM
network. ! (SEQ=30) delayed unsol. ! (SEQ=30)
Not received. ! response. !
! Resend CONFIRM. !
M M
--------------------------------------------------------------------
Outstation L L
! Unsol. Time-out on ! Unsol. RTU discards
! response. CONFIRM ! Response. second
! (CON=,) Resend. ! (CON=,) CONFIRM.
! (SEQ=30) ! (SEQ=30)
! !
Figure 3-8 Resending Unsolicited Responses Due to Network Delays
DNP Users Group
3-8
3.3 MASTER REQUEST & UNSOLICITED RESPONSE
COLLISIONS
When Unsolicited Responses are generated by an Outstation there exists the
possibility that the master station sends a request at the same time that the Outstation
sends an Unsolicited Response. The Outstation may receive the request when it
expects to receive a CONFIRMation of its Unsolicited Response. The master receives
the Unsolicited Response when it expects to receive a response to its request.
The processing of the above and similar situation depends on the type of request
issued by the master station.
The master station will always process an Unsolicited Response immediately, ever if
it arrives when the master station is expecting a response to a previously issued
request. A CONFIRMation of the Unsolicited Response is issued immediately if
requested by the Outstation (i.e. if CON bit is set).
The Outstation will generally process a request immediately, even if it is waiting for
CONFIRMation of a previous Unsolicited Response. All requests except READ
requests for system data (e.g. Binary input data, counter event data etc.) are processed
in this way. This mode of operation is referred to as IMMEDIATE_PROCESS mode.
The Outstation will NOT process a master station READ request if it is waiting for
CONFIRMation of a previous Unsolicited Response. It will wait for the
CONFIRMation before processing the request. The reason for the different
functionality is to prevent the loss or duplication of data events. This mode of
operation is referred to PROCESS_AFTER_CONFIRM mode.
3.3.1 IMMEDIATE_PROCESS Mode
Figures 3-9 and 3-10 illustrate the normal functionality when a master station request
and an Outstation Unsolicited Response are transmitted simultaneously and the
Outstation is in the IMMEDIATE_PROCESS mode (i.e. request is not a READ
request).
In Case Ten, the master immediately responds to the Unsolicited Response. The
Outstation immediately processes and responds to the master station request. Note
that the two CONFIRMation responses could be sent from the master in the opposite
order to the order shown in Case Ten. This would not confuse the Outstation.
Case Eleven illustrates a basic message flow where the Unsolicited Response does not
require a CONFIRMation.
DNP V3.00 Application Layer (Version 0.03)
3-9
CASE ,0
Time
############################################################
Master ! Request. ! !
! Response ! CONFIRM ! CONFIRM
! expected. ! (SEQ=7) ! (SEQ=24)
! (CON=0) ! !
! (SEQ=7) ! !
M M M
--------------------------------------------------------------------
Outstation L L
! Unsol. ! Response
! Response ! to master
! (CON=,) ! request
! (SEQ=24) ! (CON=,)
! ! (SEQ=7)
CASE,,
Time
############################################################
Master ! Request. Store and !
! Response process the ! CONFIRM
! expected. unsol. response. ! (SEQ=2)
! (CON=,) !
! (SEQ=2) !
M M
--------------------------------------------------------------------
Outstation L L L
! Unsol. ! CONFIRM ! Response
! response ! (SEQ=2) ! to master
! (CON=0) ! ! request
! (SEQ=22) ! ! (CON=,)
! ! ! (SEQ=2)
Figure 3-9 Simultaneous Transmissions, IMMEDIATE_PROCESS Mode
In Case Twelve, the Unsolicited Response is CONFIRMed in between
CONFIRMations to two fragments of a multi-fragment response to the master request.
Case Thirteen illustrates the situation where the Unsolicited Response is not received
by the master station. The Outstation responds to the master request, then after the
CONFIRMation time-out for the Unsolicited Response, the Outstation re-transmits
the Unsolicited Response. The master then CONFIRMs the Unsolicited Response.
Note that it is possible that the first Unsolicited Response later arrives at the master
station (it was delayed in the network). The master would not re-process the response,
but would reply to it again. The Outstation would discard the reply.
DNP Users Group
3-10
CASE ,2
Time
############################################################
Master ! Request. ! ! !
! Response ! CONFIRM ! CONFIRM ! CONFIRM
! expected. ! (SEQ=2) ! (SEQ=,8) ! (SEQ=3)
! (CON=0) ! ! !
! (SEQ=2) ! ! !
M M M M
--------------------------------------------------------------------
Outstation L L L
! Unsol. ! Response ! Response
! Response ! Frag. , ! Frag. 2
! (CON=,) ! (CON=,) ! (CON=,)
! (SEQ=,8) ! (SEQ=2) ! (SEQ=3)
! ! !
CASE ,3
Time
############################################################
Master ! Request. Master does ! !
! Response not receive ! CONFIRM ! CONFIRM to
! expected. unsol. response. ! (SEQ=3) ! unsol.
! (CON=0) ! ! response
! (SEQ=3) ! ! (SEQ=28)
M M M
--------------------------------------------------------------------
Outstation L L L
! Unsol. ! Response RTU time-out for ! Unsol.
! response ! (CON=,) CONFIRM to unsol. ! response
! (CON=,) ! (SEQ=3) response. Resend ! (CON=,)
! (SEQ=28) ! request. !
! ! !
Figure 3-10 Simultaneous Transmissions, IMMEDIATE_PROCESS Mode
3.3.2 PROCESS_AFTER_CONFIRM Mode
When a READ request for system data is received by the Outstation and a previous
Unsolicited Response has not yet been CONFIRMed, the Outstation will not process
the READ request until it receives the CONFIRMation to the Unsolicited Response.
If the Outstation was to respond to the READ request immediately, there is a risk of
data being lost or duplicated. This is due to the possibility that the READ request
requests data objects which are already in the unCONFIRMed Unsolicited Response.
Case Fourteen illustrates the situation where the READ request is received while the
Outstation is waiting for a CONFIRMation. The Outstation will not process the
READ request until the CONFIRMation is received.
Case Fifteen is similar to Case Fourteen except the Unsolicited Response is not
CONFIRMed. The Outstation must re-transmit the Unsolicited Response until it is
CONFIRMed or its configured re-transmission limit is reached. If this limit is ever
reached, the Outstation will internally re-buffer the data in the Unsolicited Response,
respond to any outstanding master station requests then try to send the Unsolicited
Response again.
DNP V3.00 Application Layer (Version 0.03)
3-11
CASE ,4
Time
############################################################
Master ! Request. ! !
! Response ! CONFIRM ! CONFIRM
! expected. ! to unsol. ! (SEQ=2)
! (CON=0) ! response !
! (SEQ=2) ! (SEQ=,8) !
M M M
--------------------------------------------------------------------
Outstation L RTU waits RTU now L
! Unsol. for confirm processes ! Response
! Response Do not process master ! (CON=,)
! (CON=,) request. request. ! (SEQ=2)
! (SEQ=,8) !
! !
CASE ,5
Time
############################################################
Master ! Request. Master does ! !
! Response not receive ! CONFIRM to ! CONFIRM
! expected. unsol. response. ! unsol. ! (SEQ=3)
! (CON=0) ! response !
! (SEQ=3) ! (SEQ=28) !
M M M
--------------------------------------------------------------------
Outstation L L L
! Unsol. RTU time-out for ! Unsol. ! Response
! response CONFIRM to unsol. ! response ! (CON=,)
! (CON=,) response. Resend ! (CON=,) ! (SEQ=3)
! (SEQ=28) unsol. response. ! (SEQ=28) !
! ! !
Figure 3-11 Simultaneous Transmissions, PROCESS_AFTER_CONFIRM
Mode
3.4 ERROR RECOVERY
The DNP application layer relies on the data link layer for all message transmission,
reception and error checking. The application layer is NOT responsible for recovering
from communication problems. When and if a transaction failure is reported by the
data link layer, the application layer should fail the application layer transaction and
report the error to the user. In addition, the master application layer should indicate
the value of the Internal Indications in all Outstation responses. The user layer is
responsible for initiating any kind of error recovery procedure. In particular, the user
layer should make use of the IIN or Internal Indications that are returned in any
Outstation response.
DNP Users Group
3-12
3.5 FUNCTION CODES
The function code identifies the purpose of the message. The size of this field is one
octet. There are two groups of function codes; one for requests and the other for
responses.
CODE FUNCTION DESCRIPTION
Transfer Function Codes
0 Confirm Message fragment confirmation used in
both requests and responses. No
response to this message is required.
1 Read Request specified objects from Outstation;
respond with objects requested that are
available.
2 Write Store specified objects in Outstation;
respond with status of the operation
Control Function Codes
3 Select Select or arm output points but do not set
or produce any output action (controls,
setpoints, analog outputs) ; respond with
the status of the control points selected.
The Operate function code is required to
activate these outputs.
4 Operate Set or produce the output actions on the
points previously selected with the Select
function; respond with the status of the
control points.
5 Direct Operate Select and set or operate the specified
outputs; respond with the status of the
control points.
6 Direct Operate
- No
Acknowledgment
Select and set or operate the specified
outputs but do not send a response to the
request.
Freeze Function Codes
7 Immediate Freeze Copy the specified objects to a freeze
buffer and respond with status of the
operation.
8 Immediate Freeze
-No Acknowledgment
Copy the specified objects to a freeze
buffer; do not respond with a message.
Transfer Function Codes
9 Freeze and Clear Copy the specified objects to a freeze
buffer, then clear the objects; respond with
the status of the operation.
10 Freeze and Clear
-No Acknowledgment
Copy the specified objects to a freeze
buffer, then clear the objects; do not
respond with a message.
DNP V3.00 Application Layer (Version 0.03)
3-13
CODE FUNCTION DESCRIPTION
11 Freeze with Time Copy the specified objects to a freeze
buffer at the specified time and intervals;
respond with the status of the operation.
12 Freeze with Time
-No Acknowledgment
Copy the specified objects to a freeze
buffer at the specified time and intervals;
do not respond with a message.
Application Control Function Codes
13 Cold Restart Perform the desired reset sequence;
respond with a time object indicating time
till Outstation availability.
14 Warm Restart Perform the desired partial reset sequence;
respond with a time object indicating time
till Outstation availability.
15 Initialize Data to
Defaults
Initialize the specified data to power up
initial values; respond with status of the
operation.
16 Initialize Application Ready the specified application(s) to run;
respond with status of the operation.
17 Start Application Start running the specified application(s);
respond with status of the operation.
18 Stop Application Stop the specified application(s); respond
with status of the operation.
Configuration Function Codes
19 Save Configuration Save the specified configuration to non-
volatile memory; respond with a time object
indicating time till Outstation availability.
20 Enable Unsolicited
Messages
Enable spontaneous reporting of the
specified data object(s); respond with
status of the operation
21 Disable Unsolicited
Messages
Disable spontaneous reporting of the
specified data object(s); respond with
status of the operation
22 Assign Class Assigned specified data object(s) to a
particular class
Time Synchronization Function Codes
23 Delay Measurement
Allows the application to calculate the path
delay (or propagation delay) for a particular
Outstation. The value calculated from this
function code should be used to adjust the
time of day when setting the Outstation
time.
Reserved
24 - 120 Reserved for future use
121 - 128 Reserved for testing only
DNP Users Group
3-14
CODE FUNCTION DESCRIPTION
Response Function Codes
0 Confirm Message fragment confirmation used in
both requests and responses. No response
to this message is required.
129 Response Response to a request message
130 Unsolicited Message Unsolicited response that was not
prompted by a request.
Table 3-1 Function Codes
3.6 INTERNAL INDICATIONS
The Internal Indications (IIN) field is a two-octet field that follows the function code
in all responses. When a request cannot be processed due to formatting errors or the
requested data is not available, the IIN is always returned with the appropriate bits set.
"############################%
! First Octet Second Octet !
! | !
*############################)
First Octet
"#####+#####+#####+#####+#####+#####+#####+#####%
! 7 ! 6 ! 5 ! 4 ! 3 ! 2 ! , ! 0 ! Bit number
! ! ! ! ! ! ! ! !
*#####(#####(#####(#####(#####(#####(#####(#####)
A one (1) in the bit position indicates the described state.
Bit 0 - All stations message received
- Set when a request is received with the destination address of
the all stations address (ffff hexadecimal).
- Cleared after next response (even if response to global request
is required)
- Used to let the master station know that a Broadcasted message
was received by this station.
Bit 1 - Class 1 data available
- Set when data that has been configured as Class 1 data is ready to be
sent to the master
- Master station should request this class data from the Outstation when
this bit is set in a response
Bit 2 - Class 2 data available
- Set when data that has been configured as Class 2 data is ready to be
sent to the master
- Master station should request this class data from the Outstation when
this bit is set in a response
Bit 3 - Class 3 data available
- Set when data that has been configured as Class 3 data is ready to be
sent to the master
DNP V3.00 Application Layer (Version 0.03)
3-15
- Master station should request this class data from the Outstation when
this bit is set in a response
Bit 4 - Time-synchronization required from the master. The master
synchronizes the time by writing the Time and Date object to the
Outstation.
- Cleared when the time is set by the master. This bit is also cleared
when the master explicitly writes a 0 into this bit of the Internal
Indication object of the Outstation.
Bit 5 - Set when some or all of the Outstation's digital output points are in the
Local state. That is, the Outstation's control outputs are NOT
accessible through the DNP protocol.
- Clear when the Outstation is in the Remote state. That is, the
Outstation's control outputs are accessible through the DNP protocol.
Bit 6 - Device trouble
- Set when an abnormal condition exists at the Outstation. The device
profile for a given device states the conditions that effect this bit.
- This should only be used when the state can not be described by a
combination of one or more of the other IIN bits.
Bit 7: - Device restart
- Set when the user application at the Outstation restarts.
- Cleared when the master explicitly Writes a 0 into this bit of the
Internal Indications object in the Outstation.
Second Octet
"#####+#####+#####+#####+#####+#####+#####+#####%
! 7 ! 6 ! 5 ! 4 ! 3 ! 2 ! , ! 0 ! Bit number
! ! ! ! ! ! ! ! !
*#####(#####(#####(#####(#####(#####(#####(#####)
Bit 0 - Function code not implemented
Bit 1 - Requested object(s) unknown. The Outstation does not have the
specified objects or there are no objects assigned to the requested class.
- This indication should be used for debugging purposes and usually
indicates a mismatch in device profiles or configuration problems.
Bit 2 - Parameters in the qualifier, range or data fields are not valid or out of
range. This is a catch-all for application request formatting errors.
- This indication should be used for debugging purposes and usually
indicates configuration problems.
Bit 3 - Event buffer(s), or other application buffers have overflowed. For
example, COS/SOE buffers have overflowed.
- The master should attempt to recover as much data as possible and
indicate to the user that their may be lost data. The appropriate error
recovery procedures should be initiated by the user.
DNP Users Group
3-16
Bit 4 - Request understood but requested operation is already executing.
Bit 5 - Set to indicate that the current configuration in the Outstation is corrupt
and that the master application layer should inform the user of this
exception. The master may download another configuration to the
Outstation. Note that sometimes a corrupt configuration will disable
an Outstation, making it impossible to communicate this condition to a
master station.
Bit 6 - Reserved for use by agreement, currently always returned as zero (0).
Bit 7 - Reserved for use by agreement, currently always returned as zero (0).
3.7 OBJECT HEADER
The object header of a message specifies the data objects (or IOs) that are either
contained in the message or are to be used to respond to this message. The format of
the object header is identical for a request and a response but the interpretation of the
header is dependent on whether it is a request or a response and which function code
accompanies the header.
"########+###########+#######%
! Object ! Qualifier ! Range !
! ! ! !
*########(###########(#######)
Figure 3-12 Object Header
Object Specifies the object group and variation of the objects that follow the
header as described in section 3. OBJECT. This is a two-octet field.
The object field uniquely identifies the type or class of object which
gives the structure (and hence size) of the data object.
Qualifier Specifies the meaning of the range field as described in section 3.
QUALIFIER. This is a one-octet field. The qualifier specifies how the
range field is to be interpreted.
Range Indicates the quantity of objects, starting and ending index or
identifiers for the objects in question as described in section 3. This
field uniquely identifies the objects in question.
NOTE: The range field may not be present if the qualifier specifies that there is
no range field. The size of this field ranges from zero (0) octets to eight
octets.
3.7.1 Object Field
The Object field specifies an object group and the variation of the object within the
group. The combined object group plus variation specifies uniquely the object to
which the message refers. The currently defined object structures are described in
DNP-V3.00 Data Object Library (P009-0BL).
DNP V3.00 Application Layer (Version 0.03)
3-17
Objects may be assigned to one of four classes. When the Object field specifies a data
class instead of a specific object type, the object field refers indirectly to all the data
objects assigned to that class of data and not to any specific object type. See Section
5: CLASSES for more detail.
The object field is two octets in length. The first octet specifies the general type of
data (e.g. analog inputs) and the second octet specifies the variation of the data type
(e.g. 16-bit analog inputs or 32-bit analog inputs). In the request direction, if the
object variation is specified as 0, this indicates all object variations belonging to the
same group (i.e. all or any analog inputs types). In the response direction however,
variation 0 cannot be used to specify the objects. The specific variation has to be
specified.
Consider the example where the request message specifies counter objects in the first
octet and the variation is 0. Given that the Outstation supports only 16 bit counters, it
will respond with an object header with the variation field set to indicate that the
counter objects are 16 bit counters.
With the same request message directed to another station, the returned object header
may indicate a 32 bit count field in the counter objects it returns. By requesting data
with the variation set to 0, it is not necessary for the master to know what variations
the Outstation supports. The master must however be able to interpret the object
headers and have some knowledge of the structure of each variation.
first octet second octet
"################+######################%
! ! 0 or Object variation! Application request direction
! Object Group &######################'
! ! Object variation ! Application response direction
*################(######################)
Figure 3-13 Object Field
3.7.2 Qualifier Field
The qualifier field specifies the meaning of the range field.
7 6 5 4 3 2 , 0 bit
"#####+##################+#######################%
! R ! Index Size ! 4 bit Qualifier Code !
! ! ! !
*#####(##################(#######################)
Figure 3-14 Qualifier Field
R Reserved bit always set to 0
The Range Field is used to index data or as an identifier. The structure and use of the
Range Field is dependent on the value in the Index Size field and the Qualifier Code
field. When the Range Field is used to index data, it often consists of a Start Range
value and an Stop Range value. Together they define a range of objects in the data
following the Object Header. Each of the Start Range and Stop Range sub-fields is
termed as index.
DNP Users Group
3-18
Index Size (3-bits)
In a Request Object Header when Qualifier Code equals 11
The Index Size bits are valid only when the qualifier code is 11. These bits
indicate the size, in octets, of each entry in the Range Field. The Range Field
follows the Qualifier Field. The Range Field consists of indices (to specify a
range of objects) or object identifier lists (see qualifier code 11).
0 = not valid with qualifier code 11
1 = 1 octet identifier size
2 = 2 octet identifier size
3 = 4 octet identifier size
4 = reserved
5 = reserved
6 = reserved
7 = reserved
In a Response or Request Object Header that is part of a message containing data
objects.
The 3 bit Index Size field specifies the size of the indices or object size
prefixing each object.
0 = objects are packed with no index prefixing them
1 = objects are prefixed with a 1 octet index
2 = objects are prefixed with a 2 octet index
3 = objects are prefixed with a 4 octet index
4 = objects are prefixed with a 1 octet object size
5 = objects are prefixed with a 2 octet object size
6 = objects are prefixed with a 4 octet object size
7 = reserved
Qualifier Code (4-bits)
The Qualifier Code is used to specify the meaning of the Range field.
Start and Stop Sub-Fields in the Range Field
The Range field following the Qualifier field often contains sub-fields (Start
Range and Stop Range) that designate a range of integer values starting
numerically from Start Range (including the number Start Range) to Stop
Range (including the number Stop Range).
For Qualifier Codes 0, 1 and 2, Start Range and Stop Range are interpreted as
indices of data
For Qualifier Codes 3, 4 and 5, Start Range and Stop Range are interpreted as
virtual memory addresses.
DNP V3.00 Application Layer (Version 0.03)
3-19
The Qualifier Code can be used both in the request and response messages as
it can uniquely identify data objects whether they do or do not exist in the
message.
The Index Size field should be 0 in a data-less message to indicate no further
indexing. The Index Size field can be 4, 5 or 6 in a message with data objects
to indicate that each data object (with indices specified by the Range Field) has
an object size prefix (with this size determines by the Index size). A message
with data can also use Index size of 0 to indicate no more indexing. For
Qualifier Codes specifying Start ad Stop Indices in the Range, Index Size
values of 1, 2 and 3 cannot be used.
Some Qualifier Code definitions are:
0 = 8 bit start and stop indices in the Range Field
1 = 16 bit start and stop indices in the Range Field
2 = 32 bit start and stop indices in the Range Field
3 = 8 bit absolute address identifiers in the Range
4 = 16 bit absolute address identifiers in the Range
5 = 32 bit absolute address identifiers in the Range
All objects of the given object type
When the Qualifier Field equals 6, the length of the range field is 0 (i.e. no
range field) because all the data objects of the specified type are being referred
to. This qualifier can be used in messages with object headers only because it
cannot uniquely identify data objects if they are present in the message. The
Index size should be set to 0 when this Qualifier code is used.
Qualifier Code 6 = no range field (implies all the specified objects)
Single field quantity
Qualifier Codes 7, 8 and 9 are used to indicate that the Range Field consists of
a single count indicating the number of data objects in question. The Range
Field that follows designates the number of objects referenced.
If the Index Size field equals zero, the Range Field specifies the number of
objects referenced starting numerically from 0 (including 0) to the value in the
Range Field minus 1.
If the Index Size is 1, 2 or 3 then the Range Field specifies the number of
indices and objects following the Range Field.
Qualifier Codes 7, 8 and 9 can be used in the request and response messages.
In a message with or without data objects, the value in the Range Field
specifies the number of data objects to be referred to. The Index Size field
should be set to the size of the indices that either pre-fix each data object (for
messages with data objects) or that form a sequential list of identifiers.
DNP Users Group
3-20
The Index Size field should not indicate an object size identifier as this would
not uniquely specify the data objects in question and should be set to 0 if no
identifiers or indices are following. The order of identifiers (and optional data
objects) is arbitrary but should not consist of duplicate indices.
Some Qualifier Code definitions are:
7 = 8 bit single field quantity
8 = 16 bit single field quantity
9 = 32 bit single field quantity
Free-format Qualifier (Qualifier Code 11)
This Qualifier Code is used to specify objects when other Qualifier Codes are
inadequate or do not provide enough identifying information.
Qualifier 11 is used only when the Range Field (index) cannot uniquely
specify the data objects in question. In this case, the Qualifier Code defines a
variable length array of octets (string) that contains the object identifier.
This identifier has a free-format and will not be interpreted in any way by the
application layer at this time.
The Range Field is always a 1 octet value (Count) which specifies the number
of object identifiers. Following the Range Field are Count object size
field/object identifier pairs. The size of the identifier (in octets) is determined
by the object size field which prefixes each identifier. The size of the object
size field is determined by the Index size. Index sizes 4,5, and 6 should be
used to specify the size of the object size field in octets.
Reserved Qualifier Codes
The following Qualifier Code values are reserved and should not be used:
10 = reserved
12 = reserved
13 = reserved
14 = reserved
15 = reserved
3.7.3 Range
The meaning of the Range Field is specified by the Qualifier Field. For Qualifier
Codes 0 to 5 the Range field has 2 sub-fields specifying a start and stop index or
address. The values in these fields are inclusive. The Range field is not present for
qualifier code 6. The range field is a single field specifying a quantity for qualifier
codes 7, 8, 9 and 11. In the following, the term 'Q-code' refers to the 4 bit Qualifier
Code field and 'I-size' refers to the Index Size field.
DNP V3.00 Application Layer (Version 0.03)
3-21
The following figure defines all the valid qualifier/range/index combinations for a
request or response which do NOT contain any IO or data objects and simply specifies
the objects in question. The bytes described appear after the qualifier octet of the
object header and before the next object header or end of message.
Request for known points specified with a Range of indices.
Use Q-code 0-5 for describing points related in sequence:
"#########+#########%
! Start ! Stop ! Q-code 0 and 3; I-size MUST be 0
! 8 bit ! 8 bit ! Definition of Range Field.
! ! ! Points are I, to I2 inclusive
! I, ! I2 !
*#########(#########)
LSB MSB LSB MSB
"###################+###################%
! ,6 bit Start ! ,6 bit Stop ! Q-code 1 and 4; I-size MUST be 0
! ! ! ! ! Points are I, to I2 inclusive
! ! ! ! !
! I, ! I2 !
! ! !
*###################(###################)
LSB MSB LSB MSB
"#######################################+#####################################%
! 32 bit Start ! 32 bit Stop !
! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! !
! I, ! I2 !
! ! !
*#######################################(#####################################)
Q-code 2 and 5; I-size MUST be 0
Points are I, to I2 inclusive
Use Q-code 6 for describing ALL points of the given data type:
(There is no range field or indices with this qualifier
Use Q-code 7-9 for describing a number of unrelated points:
"#########%
!Quantity ! Q-code 7; I-size MUST be 0
! 8 bit ! Points are 0 .. Q-, inclusive
! !
! Q !
! !
*#########)
"#########+########% "########%
!Quantity ! Index ! ! !
! ! Index ! ! ! Q-code 7; I-size MUST be 1
! 8 bit ! ! ! ! Points are I,, I2 .. IQ inclusive
! ! I, ! ....... ! IQ !
! Q ! ! ! !
! ! LSB ! ! LSB !
*#########(########) *########)
"#########+##############% "#############%
!Quantity ! Index ! ! Index ! Q-code 7; I-size MUST be 2
! 8 bit ! ! ! ! Points are I,, I2 .. IQ inclusive
! ! I, ! .......! IQ !
! Q ! ! ! !
! ! LSB ! MSB ! ! LSB ! MSB !
*#########(######(#######) *######(######)
"#########+#####################% "##################%
!Quantity ! Index ! ! Index ! Q-code 7; I-size MUST be 3
! 8 bit ! ! ! ! Points are I,, I2 .. IQ
inclusive
! ! I, ! ....... ! IQ !
! Q ! ! ! !
! ! LSB ! ! ! MSB ! ! LSB ! ! ! MSB !
*#########(######(###(##(#######) *######(##(##(#####)
LSB MSB
"###################%
! ,6 bit Quantity ! Q-code 8; I-size MUST be 0
! Q ! Points are 0 to Q-, inclusive
! ! !
*#########(#########)
DNP Users Group
3-22
LSB MSB
"###################+######% "#######%
! ,6 bit Quantity ! Index! ! Index ! Q-code 8; I-size MUST be 1
! | ! LSB !...... ! LSB ! Points are I,,I2 .. IQ inclusive
! ! ! ! !
! Q ! I, ! ! IQ !
*###################(######) *#######)
LSB MSB
"###################+###########% "############%
! ,6 bit Quantity ! Index ! ! Index ! Q-code 8; I-size MUST be 2
! ! ! LSB ! MSB!......! LSB ! MSB! Points are I,,I2 .. IQ inclusive
! ! ! ! ! ! !
! Q ! I, ! ! IQ !
*###################(###########) *############)
LSB MSB
"###################+#################% "##################%
! ,6 bit Quantity ! Index ! ! Index ! Q-code 8; I-size MUST be 3
! ! ! LSB ! ! ! MSB!......! LSB ! ! ! MSB! Points are I,,I2 .. IQ
inclusive
! ! ! ! ! ! ! ! ! ! ! !
! Q ! I, ! ! IQ !
*###################(#################) *##################)
LSB MSB
"#######################################%
! 32 bit Quantity ! Q-code 9; I-size MUST be 0
! ! | ! ! Points are 0 .. IQ-,
! ! IQ ! !
*#######################################)
LSB MSB
"######################################+#########% "########%
! 32 bit Quantity ! Index ! ! Index ! Q-code 9; I-size MUST be 1
! | | | ! LSB !....! LSB ! Points are I,, I2 .. IQ
! Q ! I, ! ! IQ !
*######################################(#########) *########)
LSB MSB
"######################################+###########% "###########%
! 32 bit Quantity ! Index ! ! Index ! Q-code 9; I-size MUST be 2
! | | | ! LSB | MSB !....! LSB | MSB ! Points are I,, I2 .. IQ
! Q ! I, ! ! IQ !
*######################################(###########) *###########)
LSB MSB
"######################################+#################% "#################%
! 32 bit Quantity ! Index ! ! Index ! Q-code 9; I-size MUST
be 3
! | | | ! LSB | | | MSB !....! LSB | | | MSB ! Points are I,, I2 ..
IQ
! Q ! I, ! ! IQ !
*######################################(#################) *#################)
Use qualifier ,, when describing points that need to be uniquely identified by an object identifier such as
a File Object Identifier or Configuration Header. The type of identifier is implied by the object type:
"#########+#######+#####+####% "####% "#######+####% "####%
! 8-bit ! 8-bit ! ! ! ! ! ! 8-bit ! ! ! !
! ! ! O,, ! O,2! .... ! O,N!...! ! OQ,!...! OQN!
! Q !Size N,! ! ! ! ! !Size NQ! ! ! !
*#########(#######(#####(####) *####) *#######(####) *####)
Q-code 11; Index size MUST be 1
Octets Oi, .. OiN form the object identifier for Object i where 0<=i<Q (quantity)
"###########+###########+#####+####% "####%
! ,6-bit ! ,6-bit ! ! ! ! ! Q-code 11; I-size MUST be 2
! LSB | MSB ! LSB | MSB ! O, ! O2 ! .... ! ON ! Octets , to N are the object identifier
! Q ! Size N ! ! ! ! !
*###########(###########(#####(####) *####)
As for the previous case, there could be many identifiers each one following the other.
"#################+#################+#####+####% "####%
! 32-bit ! 32-bit ! ! ! ! ! Q-code 11; I-size MUST be 3
! LSB | | | MSB ! LSB | | | MSB ! O, ! O2 ! .... ! ON ! Octets , to N are the object identifier
! Q ! Size N ! ! ! ! !
*#################(#################(#####(####) *####)
As for the previous case, there could be many identifiers each one following the other.
Figure 3-15 Messages Without Data Objects
DNP V3.00 Application Layer (Version 0.03)
3-23
The following figure defines all the valid qualifier/range/index combinations for a
request or response which contain IO or data objects and specifies that the objects in
question either follow the qualifier/range fields (for qualifier without pre-fixing
indices) or follow each individual identifying index. The bytes described appear after
the qualifier octet of the object header and before the next object header or end of
message.
Request/response with known points specified with a Range of indices.
Use Q-code 0-5 for describing points related in sequence:
"#########+#########+####+######+######% "######%
! Start ! Stop ! DO ! DO ! DO ! ! DO ! Q-code 0 and 3; I-size MUST be 0
! 8 bit ! 8 bit ! ! ! ! ! ! Points/Objects are I, .. I2 inclusive
! ! ! I, ! I,+, ! I,+2 !.... ! I2 !
! I, ! I2 ! ! ! ! ! !
*#########(#########(####(######(######) *######)
LSB MSB LSB MSB
"###################+###################+######% "#####%
! ,6 bit Start ! ,6 bit Stop ! DO ! ! DO ! Q-code 1 and 4; I-size MUST be 0
! | ! | ! ! ! ! Points/Objects are I, .. I2 inclusive
! ! ! I, !....! I2 !
! I, ! I2 ! ! ! !
! ! ! ! ! !
*###################(###################(######) *#####)
LSB MSB LSB MSB
"#######################################+#####################################+######% "#####%
! 32 bit Start ! 32 bit Stop ! DO ! ! DO !
! | | | ! | | | ! ! ! !
! ! ! I, !....! I2 !
! I, ! I2 ! ! ! !
! ! ! ! ! !
*#######################################(#####################################(######) *#####)
Q-code 2 and 5; I-size MUST be 0
Points/Objects are I, .. I2 inclusive
"#########+#########+########+######% "########+#####%
! Start ! Stop ! Object !DO-I, ! ! Object !DO-I2! Q-code 0 and 3; I-size MUST be 4
! 8 bit ! 8 bit ! Size ! with ! ! Size ! with! Points/Objects are I, .. I2 inclusive
! ! ! 8-bit ! size !..... ! 8-bit ! size!
! I, ! I2 ! S, ! S, ! ! S2 ! S2 !
*#########(#########(########(######) *########(#####)
Note: ,6 and 32-bit object sizes can also be used by using I-size 5 and 6
LSB MSB LSB MSB
"###################+###################+###########+######% "###########+######%
! ,6 bit Start ! ,6 bit Stop ! Object !DO-I, ! ! Object !DO-I2 !
! | ! | ! Size ! with ! ! Size ! with !
! ! ! ,6-bit ! size ! !.,6-bit ! size !
! I, ! I2 ! S, ! S, !....! S2 ! S2 !
! ! ! LSB | MSB ! ! ! LSB | MSB ! !
*###################(###################(###########(######) *###########(######)
Q-code 1 and 4; I-size MUST be 5
Points/Objects are I, .. I2 inclusive
Note: 8 and 32-bit object sizes can also be used by using I-size 4 and 6
LSB MSB LSB MSB
"###############################+#############################+###############+######%
! ! ! ! ! "###############+######%
! ! ! ! ! ! ! !
! 32 bit Start ! 32 bit Stop ! Object ! DO-I,! ! Object !DO-I2 !
! | | | ! | | | ! Size ! with ! ! Size ! with !
! ! ! 32-bit ! size ! ! 32-bit ! size !
! I, ! I2 ! S, ! S, !...! S2 ! S2 !
! ! ! LSB | | | MSB ! ! ! LSB | | | MSB ! !
*###############################(#############################(###############(######) *###############(######)
Q-code 2 and 5; I-size MUST be 6
Points/Objects are I, .. I2 inclusive
Note: 8 and ,6-bit object sizes can also be used by using I-size 4 and 5
Important Note !!!
Do NOT use Q-code 6 for describing a message which contains data objects as the exact number of
points are not known and therefore the contents of the message cannot be determined.
DNP Users Group
3-24
Use Q-code 7-9 for describing a number of unrelated points:
"#########+#####% "#########%
!Quantity ! DO ! ! DO ! Q-code 7; I-size MUST be 0
! 8 bit ! ! ! ! Points/Objects are 0 .. Q-, inclusive
! ! I0 !.... ! I(Q-,) !
! Q ! ! ! !
! ! ! ! !
*#########(#####) *#########)
"#########+########+#####% "#########+#####%
!Quantity ! Index ! DO ! ! Index ! DO ! Q-code 7; I-size MUST be 1
! 8 bit ! ! ! ! ! ! Points/Objects are I,, I2 .. IQ inclusive
! ! I, ! I, ! ..! IQ ! IQ !
! Q ! ! ! ! ! !
! ! LSB ! ! ! LSB ! !
*#########(########(#####) *#########(#####)
"#########+##############+#####% "#############+#####%
!Quantity ! Index ! DO ! ! Index ! DO ! Q-code 7; I-size MUST be 2
! 8 bit ! ! ! ! ! ! Points/Objects are I,, I2 ..
IQ inclusive
! ! I, ! I, !....! IQ ! IQ !
! Q ! ! ! ! ! !
! ! LSB | MSB ! ! ! LSB | MSB ! !
*#########(##############(#####) *#############(#####)
"#########+#####################+####% "##################+#####%
!Quantity ! Index ! DO ! ! Index ! DO ! Q-code 7; I-size MUST
be 3
! ! ! ! ! ! ! Points/Objects are
! 8 bit ! ! ! ! ! ! I,, I2 .. IQ
inclusive
! ! I, ! I, ! .....! IQ ! I, !
! ! ! ! ! ! !
! Q ! ! ! ! ! !
! ! LSB | | | MSB ! ! ! LSB | | | MSB ! !
*#########(#####################(####) *##################(#####)
LSB MSB
"###################+####% "######%
! ,6 bit Quantity ! DO ! ! DO ! Q-code 8; I-size MUST be 0
! Q ! !... ! ! Points/Objects are 0 .. Q-, inclusive
! | ! I0 ! !I(Q-,)!
*###################(####) *######)
LSB MSB
"###################+#######+#####% "#######+#####%
! ,6 bit Quantity ! Index ! DO ! ! Index ! DO ! Q-code 8; I-size MUST be 1
! | ! LSB ! ! ! LSB ! ! Points/Objects are I,,I2 .. IQ
inclusive
! ! ! I, ! ! !IQ !
! Q ! I, ! ! ! IQ ! !
*###################(#######(#####) *#######(#####)
LSB MSB
"###################+###########+####% "############+####%
! ,6 bit Quantity ! Index ! DO ! ! Index ! DO ! Q-code 8; I-size MUST be 2
! | ! LSB | MSB! !......! LSB | MSB! ! Points/Objects are I,,I2 .. IQ
inclusive
! | ! ! I, ! ! ! IQ !
! Q ! I, ! ! ! IQ ! !
*###################(###########(####) *############(####)
LSB MSB
"###################+#################+####% "##################+####%
! ,6 bit Quantity ! Index ! DO ! ! Index ! DO ! Q-code 8; I-size MUST
be 3
! | ! LSB | | | MSB! !.....! LSB | | | MSB! ! Points/Objects are
I,,I2 .. IQ
! ! ! I, ! ! ! IQ ! inclusive
! Q ! I, ! ! ! IQ ! !
*###################(#################(####) *##################(####)
LSB MSB
"#######################################+####% "####%
! 32 bit Quantity ! DO ! ! DO ! Q-code 9; I-size MUST be 0
! | | | ! !.... ! ! Points are I,, I2 .. IQ
inclusive
! IQ ! I, ! ! IQ !
*#######################################(####) *####)
LSB MSB
"######################################+#########+####% "########+####%
! 32 bit Quantity ! Index ! DO ! ! Index ! DO ! Q-code 9; I-size MUST
be 1
! | | | ! LSB ! !....! LSB ! ! Points are I,, I2 ..
IQ
! Q ! I, ! I, ! ! I2 ! I2 !
*######################################(#########(####) *########(####)
DNP V3.00 Application Layer (Version 0.03)
3-25
LSB MSB
"######################################+###########+####% "###########%
! 32 bit Quantity ! Index ! DO ! ! Index ! Q-code 9; I-size MUST
be 2
! | | | ! LSB | MSB ! !...! LSB | MSB ! Points are I,, I2 ..
IQ
! Q ! I, ! I, ! ! I2 !
*######################################(###########(####) *###########)
LSB MSB
"######################################+#################% "#################%
! 32 bit Quantity ! Index ! ! Index ! Q-code 9; I-
size MUST be 3
! | | | ! LSB | | | MSB !....! LSB | | | MSB ! Points are I,,
I2 .. IQ
! Q ! I, ! ! I2 !
*######################################(#################) *#################)
Use qualifier ,, when describing points that need to be uniquely identified by an object
identifier such as a File Object Identifier or Configuration Header. The type of identifier is
implied by the object type:
"#########+#######+#####+####% "####+#####% "#######+####% "####+####%
! 8-bit ! 8-bit ! ! ! ! ! DO ! ! 8-bit ! ! ! ! DO !
! ! ! O,, ! O,,! .... ! O,N! !...! ! OQ,!...! OQN! !
! Q !Size N,! ! ! ! ! ID, ! !Size NQ! ! ! ! IDQ!
*#########(#######(#####(####) *####(#####) *#######(####) *####(####)
Q-code ,,; Index size MUST be ,
Octets Oi, .. OiN form the object identifier for Object i where 0<=i<Q (quantity) which is
followed by the object identified. The size of the object is contained in the Object Identifier so
the Application Layer must be able to interpret some fields of the Object Identifier in order to
process a message.
"###########+###########+#####+####% "####+#####%
! ,6-bit ! ,6-bit ! ! ! ! ! DO ! Q-code ,,; I-size MUST be 2
! LSB | MSB ! LSB | MSB ! O, ! O2 ! .... ! ON ! ! Octets , to N are the object
identifier
! Q ! Size N ! ! ! ! ! ID, !
*###########(###########(#####(####) *####(#####)
As for the previous case, there could be many identifiers each one following the other.
"#################+#################+#####+####% "####+#####%
! 32-bit ! 32-bit ! ! ! ! ! DO ! Q-code ,,; I-size MUST be 3
! LSB | | | MSB ! LSB | | | MSB ! O, ! O2 ! .... ! ON ! ! Octets , to N are the object
! Q ! Size N ! ! ! ! ! ID, ! identifier
! ! ! ! ! ! ! !
*#################(#################(#####(####) *####(#####)
As for the previous case, there could be many identifiers each one following the other.
Figure 3-16 Messages With Data Objects
DNP V3.00 Application Layer (Version 0.03)
4-1
4. DETAILED FUNCTION CODE
DESCRIPTIONS
This section describes the application layer function codes with examples. The
application headers containing the application control, function code and internal
indication have been omitted from most of the examples but are always present in
reality. The requests and responses are assumed to consist of one fragment each. An
example of a multiple fragment message is illustrated in the description of function
code 0.
4.1 CONFIRM (FUNCTION CODE 0)
The confirm function is used to confirm the reception of a message fragment when the
application control field (AC) in the received fragment has the CON bit set. Note the
CON bit in the confirmation message may be set to 0 or 1. This allows the option of
having the confirmation message confirmed. However, any station receiving a
message fragment with the CON bit set MUST respond with a CONFIRMation
message BEFORE sending any other application layer message. In addition, any
station that sends a message fragment with the CON bit set must wait until the
CONFIRMation message arrives before continuing with message fragment
transmission or another transaction.
The confirmation response for a single fragment message is illustrated in Figure 4-1.
"#############################+###########%
! Application Control ! Function !
! FIR = ,, FIN = ,, CON = ? ! Code = 0 !
! ! !
*#############################(###########)
Figure 4-1 Confirmation Message
"#####################+####################################%
! Request Header ! Read request that will result in !
! FIR = ,, FIN = ,, ! a multiple fragment response !
! CON = 0 ! !
*#####################(####################################)
Read request, CON = 0 indicates no application confirmation expected for request.
"#####################+############################################%
! Response Header ! ASDU of first fragment of the response !
! FIR = ,, FIN = 0 ! !
! CON = , ! !
*#####################(############################################)
DNP Users Group
4-2
First fragment of response. CON = 1 indicates the Outstation is expecting an
application confirmation of the reception of this fragment.
"#############################+###########%
! Request Header ! Function !
! FIR = ,, FIN = ,, CON = 0 ! Code = 0 !
! ! !
*#############################(###########)
Confirmation sent by the requesting station
"#####################+####################################%
! Response Header ! ASDU of second fragment !
! FIR = 0, FIN = 0 ! of response !
! CON = , ! !
*#####################(####################################)
The second fragment of the response
"###########################+###########%
! Request Header ! Function !
! FIR = ,, FIN = ,, CON = 0 ! Code = 0 !
! ! !
*###########################(###########)
Confirmation of the second fragment
"#####################+###########################################%
! Response Header ! ASDU of last fragment of the response !
! FIR = 0, FIN = , ! !
! CON = , ! !
*#####################(###########################################)
The last fragment of the response
"#############################+###########%
! Request Header ! Function !
! FIR = ,, FIN = ,, CON = 0 ! Code = 0 !
! ! !
*#############################(###########)
Confirmation of the last fragment of the response
4.2 READ (FUNCTION CODE 1)
The read function is the basic code used for requesting data objects from a Outstation.
The object, qualifier and range field are coded in such a way that their size can be
calculated allowing requests for multiple objects or ranges to be sent in a single
message. The number of multiple requests allowed in a single message is defined in
the device profile of each device DNP is implemented on.
The read request for a single range of objects is illustrated in Figure 4-2. Figure 4-3
illustrates the request for 2 object types or possibly 2 ranges of the same object type.
DNP V3.00 Application Layer (Version 0.03)
4-3
"#################+########+############+########%
! Request Header ! Object ! Qualifier ! Range !
! AC ! FC = , ! ! ! !
! ! ! ! ! !
*######(##########(########(############(########)
Figure 4-2 Single Object Request
! first Read request ! second Read request !
"#################$########+############+########$########+###########+#######'
! Request Header ! Object ! Qualifier ! Range ! Object ! Qualifier ! Range !
! AC | FC = , ! ! ! ! ! ! !
! ! ! ! ! ! ! !
*#################(########(############(########(########(###########(#######)
Figure 4-3 Multiple Objects or Ranges
4.2.1 Read Requests
The following examples illustrate some legal qualifier and range combinations for the
read function code.
octet , 2 3 4 5
"######+########+#################+############%
! ! ! Object gv ! Qualifier !
! AC ! FC = , ! g = n v = 0 ! 0000 0,,0 !
! ! ! | ! 0 6 !
*######(########(#################(############)
Read object group n.
The qualifier code specifies all the defined objects of the group defined at the
Outstation. This qualifier code also indicates the range field is not present.
The index size has no meaning and is set to 0.
The Outstation may respond with any or all objects of the defined group. This
method is useful for requesting event data because the requesting station does not
know in advance which points have generated events.
octet , 2 3 4 5 6 7
"######+########+#################+##############+#################%
! ! ! Object gv ! Qualifier ! Range !
! AC ! FC = , ! g = n v = x ! 0000 | 0000 ! Start Stop !
! ! ! | ! 0 0 ! 7 | 9 !
*######(########(#################(##############(#################)
Read object group n variation x.
The qualifier code specifies a range field with a 1 octet start and stop sub-field.
The range field specifies 3 objects starting at index 7 to index 9 inclusive.
The index size has no meaning and is set to 0.
The Outstation may respond within the range specified. This method is useful for
requesting specific data that is known to be valid at the time of the request.
octet , 2 3 4 5 6 7 8 9
"######+########+#################+############+#########+####################+########%
! ! ! object gv ! Qualifier ! Range ! !
! AC ! FC = , ! g = n v = x ! 0000 000, ! Start ! Stop !
! ! ! | ! 0 , ! 700 ! 702 !
*######(########(#################(############(#######################################)
Read object group n, variation x.
DNP Users Group
4-4
The qualifier code specifies a range field with a 2 octet start and stop sub-field.
The range field specifies 3 objects starting at index 700 to index 702 inclusive.
The index size has no meaning and is set to 0.
The Outstation may respond within the range specified. This method is useful for
requesting specific data that is known to be valid at the time of the request.
octet , 2 3 4 5 6 7 8 9 ,0 ,, ,2 ,3
"######+########+#################+############+#######################################%
! ! ! ! ! !
! ! ! Object gv ! Qualifier ! | | | Range | | | !
! AC ! FC = , ! g = n v = x ! 0000 00,0 ! Start ! Stop !
! ! ! | ! 0 2 ! 70000 ! 70002 !
*######(########(#################(############(#######################################)
Read object group n, variation x.
The qualifier code specifies a range field with a 4 octet start and stop sub-field.
The range field specifies 3 objects starting at index 70000 to index 70002
inclusive.
The Index Size field has no meaning and is set to 0.
The Outstation may respond within the range specified. This method is useful for
requesting specific data that is known to be valid at the time of the request.
octet , 2 3 4 5 6 7
"######+########+#################+############+###################%
! ! ! Object gv ! Qualifier ! Range !
! AC ! FC = , ! g = n v = x ! 0000 00,, ! Start ! Stop !
! ! ! | ! 0 3 ! 7 ! 9 !
*######(########(#################(############(###################)
Read object group n, variation x. In this case n and x would specify a generic octet
object
The qualifier code specifies a range field with a 1 octet start and stop sub-field.
The range field specifies a starting virtual address of 7 and a virtual ending address
of 9.
The Index Size field has no meaning and is set to 0.
The Outstation may respond within the range specified. This method is useful for
requesting specific bytes from the memory of some remote application.
NOTE: Virtual addressing is normally used only for diagnostic or
manufacturing tests as intimate knowledge of the Outstation is needed
to interpret the response.
octet , 2 3 4 5 6 7 8 9
"######+########+#################+############+#######################################%
! ! ! Object gv ! Qualifier ! | Range | !
! AC ! FC = , ! g = n v = x ! 0000 0,00 ! Start ! Stop !
! ! ! | ! 0 4 ! 700 ! 702 !
*######(########(#################(############(#######################################)
Read object group n, variation x. In this case n and x would specify a generic octet
object.
The qualifier code specifies a range field with a 2 octet start and stop sub-field.
The range field specifies a starting virtual address of 700 and a virtual ending
address of 702.
The Index Size field has no meaning and is set to 0.
DNP V3.00 Application Layer (Version 0.03)
4-5
The Outstation may respond within the range specified. This method is useful for
requesting specific bytes from the memory of some remote application.
NOTE: Virtual addressing is normally used only for diagnostic or
manufacturing tests as intimate knowledge of the Outstation is needed
to interpret the response.
octet , 2 3 4 5 6 7 8 9 ,0 ,, ,2 ,3
"######+#########+#################+############+#######################################%
! ! ! Object gv ! Qualifier ! | | | Range | | | !
! AC ! FC = , ! g = n v = x ! 0000 0,0, ! Start ! Stop !
! ! ! | ! 0 5 ! 70000 ! 70002 !
*######(#########(#################(############(#######################################)
Read object group n, variation x. In this case n and x would specify a generic octet
object.
The qualifier code specifies a range field with a 4 octet start and stop sub-field.
The range field specifies a starting virtual address of 70000 and a virtual ending
address of 70002.
The index size has no meaning and is set to 0.
The Outstation may respond within the range specified. This method is useful for
requesting specific bytes from the memory of some remote application.
NOTE: Virtual addressing is normally used only for diagnostic or
manufacturing tests as intimate knowledge of the Outstation is needed
to interpret the response.
octet , 2 3 4 5 6
"#####+########+#################+############+##########%
! ! ! Object gv ! Qualifier ! Range !
! AC ! FC = , ! g = n v = p ! 0000 0,,, ! Quantity !
! ! ! | ! 0 7 ! 3 !
*#####(########(#################(############(##########)
Read object group n variation p.
The qualifier code specifies a 1 octet quantity.
The range field specifies 3 objects.
The index size has no meaning and is set to 0.
This method is useful for requesting a limited amount of data of a particular
variation (e.g. analog change events) as the receiving station may not be able to
handle the entire data base of the Outstation.
octet , 2 3 4 5 6 7
"######+#########+#################+############+###################%
! ! ! Object gv ! Qualifier ! Range !
! AC ! FC = , ! g = n v = p ! 0000 ,000 ! Quantity !
! ! ! | ! 0 8 ! 400 !
*######(#########(#################(############(###################)
Read object group n variation p.
The qualifier code specifies a 2 octet quantity.
The range field specifies 400 objects.
The index size has no meaning and is set to 0.
DNP Users Group
4-6
This method is useful for requesting a limited amount of data of a particular
variation (e.g. binary input with time objects) as the receiving station may not be
able to handle the entire data base (i.e. analog) of the Outstation.
octet , 2 3 4 5 6 7 8 9
"######+#########+#################+############+#####################################%
! ! ! Object gv ! Qualifier ! Range !
! AC ! FC = , ! g = n v = p ! 0000 ,00, ! Quantity !
! ! ! | ! 0 9 ! | 70000 | !
*######(#########(#################(############(#####################################)
Read object group n variation p.
The qualifier code specifies a 4 octet quantity.
The range field specifies 70000 objects.
The index size has no meaning and is set to 0.
This method is useful for requesting a limited amount of data of a particular
variation as the receiving station may not be able to handle the entire data base (i.e.
analog) of the Outstation.
octet , 2 3 4 5 6 7 8 9
"######+#########+#################+############+##########+###########################%
! ! ! Object gv ! Qualifier ! Range ! Indices !
! AC ! FC = , ! g = n v = x ! 000, 0,,, ! Quantity ! ,, ! 22 ! ,08 !
! ! ! ! , 7 ! 3 ! ! ! !
*######(#########(#################(############(##########(###########################)
Read object group n, variation x.
The qualifier code specifies a list of objects in the index field.
The range field specifies that the list contains 3 entries.
The index size specifies each entry in the list is a 1 octet index.
This method is useful for requesting some specific points from the remote device.
For example, some critical status points may be requested for analysis or reporting
purposes.
NOTE: The range field is always the same size as an entry in the index list.
This format would normally be used when the indices have values
between 0 and 255.
octet , 2 3 4 5 6 7 8 9 ,0 ,, ,2 ,3
"######+########+#################+############+####################+#############################
%
! ! ! Object gv ! Qualifier ! Range ! Indices
!
! AC ! FC = , ! g = n v = x ! 00,0 0,,, ! Quantity ! 3,, ! 422 ! ,08
!
! ! ! | ! 2 7 ! 3 ! | ! | ! |
!
*######(########(#################(############(####################(#############################
)
Read object group n, variation x.
The qualifier code specifies a list of objects in the index field.
The range field specifies the list contains 3 entries.
The index size specifies each entry in the list is a 2 octet index.
This method is useful for requesting some specific points from the remote device.
For example, some critical status points may be requested for analysis or reporting
purposes.
DNP V3.00 Application Layer (Version 0.03)
4-7
NOTE: The range field is always the same size as an entry in the index list.
This format would normally be used when some or all of the indices
have values greater than what will fit in 1 octet.
octet , 2 3 4 5 6 7 8 9 ,8 ,9 20 2,
"######+#########+#################+############+############+####################################
%
! ! ! Object gv ! Qualifier ! Range ! Indices
!
! AC ! FC = , ! g = n v = x ! 00,, 0,,, ! Quantity ! ! !
!
! ! ! | ! 3 7 ! 3 ! 70000 ! 76000 ! 90000
!
*######(#########(#################(############(############(####################################
)
Read object group n, variation x.
The qualifier code specifies a list of objects in the index field.
The range field specifies the list contains 3 entries.
The index size specifies each entry in the list is a 4 octet index.
This method is useful for requesting some specific points from the remote device.
For example, some critical status points may be requested for analysis or reporting
purposes.
NOTE: The range field is always the same size as an entry in the index list.
octet , 2 3 4 5 6 7 .....
"######+########+#################+############+##########+##########################%
! ! ! Object gv ! Qualifier ! Range ! Identifier !
! AC ! FC = , ! g = n v = v ! 000, ,0,, ! Quantity ! !
! ! ! | ! , ,, ! , ! Size | Object Identifier !
*######(########(#################(############(##########(######+###################'
! Size octets !
Read object group n variation v (in this case the group and variation identify the
object identifier).
The qualifier code specifies a list of object identifiers in the identifier field and the
range field is an 8 bit quantity. The size field is also an 8-bit quantity specifying
that the object identifier is 'size' octets in length.
The range field specifies the list contains 1 entry. The index size specifies that the
quantity field and Size field are 8-bit in length.
This method is useful for reading configurations from a remote device (if the File
Object Identifier is used). This method is however the only way in which to
request a data object that is larger than one fragment in size.
4.2.2 Read Responses
This section defines some of the legal forms of an object header prefixing the objects
in a response to a read request.
octet , 2 3 4 5
"################+############+###################% ....
! Object gv ! Qualifier ! Range !
! group = n ! 0000 0000 ! Start ! Stop !
! variation = v ! 0 0 ! 7 ! 9 !
*################(############(#########(#########) .....
Objects following this header are group n, variation v.
DNP Users Group
4-8
The qualifier code specifies a range field with a 1 octet start and stop sub-fields.
The range field specifies 3 objects starting at index 7 to index 9 inclusive follow
this header
The index size has no meaning and is set to 0 as the start and stop field identify the
index of each object.
octet , 2 3 4 5 6 7
"################+############+#####################%....
! Object gv ! Qualifier ! Range !
! group = n ! 0000 000, ! Start ! Stop !
! variation = v ! 0 , ! 300 ! 302 !
*################(############(##########(##########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with 2 octet start and stop sub-fields.
The range field specifies 3 objects starting at index 300 to index 302 inclusive
follow this header.
The index size has no meaning and is set to 0 as the start and stop field identify the
index of each object.
octet , 2 3 4 5 6 7 8 9 ,0 ,,
"################+############+###########################%....
! Object gv ! Qualifier ! Range !
! group = n ! 0000 00,0 ! Start ! Stop !
! variation = v ! 0 2 ! 70000 ! 70002 !
*################(############(#############(#############)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with 4 octet start and stop sub-fields.
The range field specifies 3 objects starting at index 70000 to index 70002 inclusive
follow this header.
The index size has no meaning and is set to 0 as the start and stop field identify the
index of each object.
octet , 2 3 4 5
"################+############+###################% .....
! Object gv ! Qualifier ! Range !
! group = n ! 0000 00,, ! Start ! Stop !
! variation = v ! 0 3 ! 7 ! 9 !
*################(############(#########(#########) .....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 1 octet start and stop sub-fields.
The range field specifies the contents of virtual addresses 7 to 9 inclusive following
this header.
The index size has no meaning and is set to 0 as the start and stop field identify the
index of each object.
octet , 2 3 4 5 6 7
"################+############+#####################%....
! Object gv ! Qualifier ! Range !
! group = n ! 0000 0,00 ! Start ! Stop !
! variation = v ! 0 4 ! 300 ! 302 !
*################(############(##########(##########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with 2 octet start and stop sub-fields.
DNP V3.00 Application Layer (Version 0.03)
4-9
The range field specifies the contents of virtual addresses 300 to 302 inclusive
following this header.
The index size has no meaning and is set to 0 as the start and stop field identify the
index of each object.
octet , 2 3 4 5 6 7 8 9 ,0 ,,
"################+############+###########################%....
! Object gv ! Qualifier ! Range !
! group = n ! 0000 0,0, ! Start ! Stop !
! variation = v ! 0 5 ! 70000 ! 70002 !
*################(############(#############(#############)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with 4 octet start and stop sub-fields.
The range field specifies the contents of virtual addresses 70000 to 70002 inclusive
following this header.
The index size has no meaning and is set to 0 as the start and stop field identify the
index of each object.
octet , 2 3 4
"################+############+########%....
! Object gv ! Qualifier ! Range !
! group = n ! 0000 0,,, ! 3 !
! variation = v ! 0 7 ! !
*################(############(########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 1 octet quantity.
The range field specifies 3 objects.
The index size specifies the objects are packed with no indices prefixing them.
This implies the first object in the message has an index of 0 and the last object in
this example will have an index of 2.
octet , 2 3 4
"################+############+########%....
! Object gv ! Qualifier ! Range !
! group = n ! 000, 0,,, ! 3 !
! variation = v ! , 7 ! !
*################(############(########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 1 octet quantity.
The range field specifies 3 objects.
The index size specifies the objects are prefixed with 1 octet index identifiers.
octet , 2 3 4
"################+############+########%....
! Object gv ! Qualifier ! Range !
! group = n ! 00,0 0,,, ! 3 !
! variation = v ! 2 7 ! !
*################(############(########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 1 octet quantity.
The range field specifies 3 objects.
The index size specifies the objects are prefixed with 2 octet index identifiers.
DNP Users Group
4-10
octet , 2 3 4
"################+############+########%....
! Object gv ! Qualifier ! Range !
! group = n ! 00,, 0,,, ! 3 !
! variation = v ! 3 7 ! !
*################(############(########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 1 octet quantity.
The range field specifies 3 objects.
The index size specifies the objects are prefixed with 4 octet index identifiers.
octet , 2 3 4
"################+############+###############%....
! Object gv ! Qualifier ! Range !
! group = n ! 0,00 0,,, ! Quantity !
! variation = v ! 4 7 ! , !
*################(############(###############)....
Objects following this header are group n, variation v.
The qualifier code specifies the range field is an 8 bit quantity.
The range field specifies the number of the objects in the data field.
The index size specifies the objects are prefixed with 1 octet object sizes.
Note that since the object indices are not specified (and the response and request do
not have to match), the data object itself must contain some unique identification
(such as a time-stamp).
octet , 2 3 4 5
"################+############+########%....
! Object gv ! Qualifier ! Range !
! group = n ! 0000 ,000 ! 3 !
! variation = v ! 0 8 ! !
*################(############(########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 2 octet quantity.
The range field specifies 3 objects.
The index size specifies the objects are packed with no indices prefixing them.
This implies the first object in the message has an index of 0 and the last object in
this example will have an index of 2.
Note that since the object indices are not specified (and the response and request do
not have to match), the data object itself must contain some unique identification
(such as a time-stamp).
octet , 2 3 4 5
"################+############+########%....
! Object gv ! Qualifier ! Range !
! group = n ! 000, ,000 ! 3 !
! variation = v ! , 8 ! !
*################(############(########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 2 octet quantity.
The range field specifies 3 objects.
The index size specifies the objects are prefixed with a 1 octet index identifier.
DNP V3.00 Application Layer (Version 0.03)
4-11
octet , 2 3 4 5
"################+############+########%....
! Object gv ! Qualifier ! Range !
! group = n ! 00,0 ,000 ! 300 !
! variation = v ! 2 8 ! !
*################(############(########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 2 octet quantity.
The range field specifies 300 objects.
The index size specifies the objects are prefixed with a 2 octet index identifier.
octet , 2 3 4 5
"################+############+########%....
! Object gv ! Qualifier ! Range !
! group = n ! 00,, ,000 ! 300 !
! variation = v ! 3 8 ! !
*################(############(########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 2 octet quantity.
The range field specifies 300 objects.
The index size specifies the objects are prefixed with a 4 octet index identifier.
octet , 2 3 4 5
"################+############+###############%....
! Object gv ! Qualifier ! Range !
! group = n ! 0,0, ,000 ! Quantity !
! variation = v ! 5 8 ! !
*################(############(###############)....
Objects following this header are group n, variation v.
The qualifier code specifies the range field is a 16 bit quantity.
The range field specifies the number of objects in the data field.
The index size specifies the objects are prefixed with 2 octet object sizes.
Note that since the object indices are not specified (and the response and request do
not have to match), the data object itself must contain some unique identification
(such as a time-stamp).
octet , 2 3 4 5 6 7
"################+############+########%....
! Object gv ! Qualifier ! Range !
! group = n ! 0000 ,00, ! 3 !
! variation = v ! 0 9 ! !
*################(############(########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 4 octet quantity.
The range field specifies 3 objects.
The index size specifies the objects are packed with no indices prefixing them.
This implies the first object in the message has an index of 0 and the last object in
this example will have an index of 2.
DNP Users Group
4-12
octet , 2 3 4 5 6 7
"################+############+########%....
! Object gv ! Qualifier ! Range !
! group = n ! 000, ,00, ! 3 !
! variation = v ! , 9 ! !
*################(############(########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 4 octet quantity.
The range field specifies 3 objects.
The index size specifies the objects are prefixed with a 1 octet index identifier.
octet , 2 3 4 5 6 7
"################+############+########%....
! Object gv ! Qualifier ! Range !
! group = n ! 00,0 ,00, ! 3 !
! variation = v ! 2 9 ! !
*################(############(########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 4 octet quantity.
The range field specifies 3 objects.
The index size specifies the objects are prefixed with 2 octet index identifiers.
octet , 2 3 4 5 6 7
"################+############+########%....
! Object gv ! Qualifier ! Range !
! group = n ! 00,0 ,00, ! 3 !
! variation = v ! 3 9 ! !
*################(############(########)....
Objects following this header are group n, variation v.
The qualifier code specifies a range field with a 4 octet quantity.
The range field specifies 3 objects.
The index size specifies the objects are prefixed with 4 octet index identifiers.
octet , 2 3 4 5 6 7
"################+############+###############%....
! Object gv ! Qualifier ! Range !
! group = n ! 0,00 ,00, ! Quantity !
! variation = v ! 4 9 ! !
*################(############(###############)....
Objects following this header are group n, variation v.
The qualifier code specifies the range field is a 32 bit quantity.
The range field specifies the number of the objects in the data field.
The index size specifies the objects are prefixed with 1 octet object sizes.
Note that since the object indices are not specified (and the response and request do
not have to match), the data object itself must contain some unique identification
(such as a time-stamp).
DNP V3.00 Application Layer (Version 0.03)
4-13
The read response can also consist of a multi-fragment message with each object
identifier specifying different portions (pages) of the entire object:
Fragment #,: FC=,29, CON=? FIR=, FIN=0
octet , 2 3 4 5 6 7 .....
"#################+############+##########+#####################################+#########%
! Object gv ! Qualifier ! Range ! Identifier ! Data !
! g = n v = v ! 000, ,0,, ! Quantity ! ! for !
! | ! , ,, ! , ! Size ! Object Identifier for piece ,! piece , !
*#################(############(##########(###############################################)
Size octets
Fragment #2: FC=,29, CON=? FIR=0 FIN=0
octet , 2 3 4 5 6 7 .....
"#################+############+##########+#####################################+#########%
! Object gv ! Qualifier ! Range ! Identifier ! Data !
! g = n v = v ! 000, ,0,, ! Quantity ! ! for !
! | ! , ,, ! , ! Size ! Object Identifier for piece 2! piece 2 !
*#################(############(##########(###############################################)
Size octets
Fragment #3: FC=,29, CON=? FIR=0 FIN=,
octet , 2 3 4 5 6 7 .....
"#################+############+##########+#####################################+#########%
! Object gv ! Qualifier ! Range ! Identifier ! Data !
! g = n v = v ! 000, ,0,, ! Quantity ! ! for !
! | ! , ,, ! , ! Size ! Object Identifier for piece 3! piece 3 !
*#################(############(##########(######(##############################$#########)
Size octets
Read object group n variation v (in this case the group and variation identify the
object identifier).
The qualifier code specifies a list of object identifiers in the identifier field and the
range field is an 8 bit quantity. The size field is also an 8-bit quantity specifying
that the object identifier plus data following the identifier is 'size' octets in length.
The range field specifies the list contains 1 entry. The index size specifies that the
quantity field and Size field are 8-bit in length.
This method is useful for reading configurations from a remote device (if the File
Identifier Object is used). This method is however the only way in which to
request a data object that is larger than one fragment in size.
Note that each fragment is digestible by the requesting station because each object
identifier specifies a unique portion of the object.
4.3 WRITE (FUNCTION CODE 2)
The write function code is used for moving objects from a master station to an
Outstation. Figure 4-4 illustrates the general format of a message writing single object
type or range. Figure 4-5 illustrates the writing of multiple objects or ranges. The
object header is defined the same as in a read request. Figure 4-6 is an example of the
writing of a configuration to an Outstation. The response from the Outstation is
always a function code followed by the IIN. Typical uses of the Write function are to
download configuration or files to an Outstation and to set the time in the Outstation.
DNP Users Group
4-14
"######+########+###############% ...........
! ! ! Object Header !
! AC ! FC = 2 ! ! Object(s) and prefixing indices or identifiers
! ! ! !
*######(########(###############) ...........
Figure 4-4 Single Object Range Write
"#####+#########+###############%..........."###############% ........
! ! ! Object Header ! ! Object Header !
! AC ! FC = 2 ! ! Object(s) ! ! Objects(s)
! ! ! ! ! !
*#####(#########(###############)......... *###############).........
Figure 4-5 Multiple Object or Multiple Ranges
4.3.1 Write Requests
The Write request transfers a multi-fragment object to a remote device. The Write
Request is typically used for writing objects such as the Internal Indication Object,
File Identifier Objects and the Time and Date Object.
Each fragment contains identifying information for each portion of the entire object.
octet , 2 3 4 5 6 7 .....
"######+########+#################+############+##########+#####################################+#########%
! AC ! ! Object gv ! Qualifier ! Range ! Identifier ! Data !
! FIN=0! FC = 2 ! g = n v = v ! 000, ,0,, ! Quantity ! ! for !
! FIR=,! ! | ! , ,, ! , ! Size ! Object Identifier for piece ,! piece , !
*######(########(#################(############(##########(######$##############################$#########)
Size octets
octet , 2 3 4 5 6 7 .....
"######+########+#################+############+##########+#####################################+#########%
! AC ! ! Object gv ! Qualifier ! Range ! Identifier ! Data !
! FIN=0! FC = 2 ! g = n v = v ! 000, ,0,, ! Quantity ! ! for !
! FIR=0! ! | ! , ,, ! , ! Size ! Object Identifier for piece 2! piece 2 !
*######(########(#################(############(##########(######$##############################$#########'
Size octets
octet , 2 3 4 5 6 7 .....
"######+########+#################+############+##########+#####################################+#########%
! AC ! ! Object gv ! Qualifier ! Range ! Identifier ! Data !
! FIN=,! FC = 2 ! g = n v = v ! 000, ,0,, ! Quantity ! ! for !
! FIR=0! ! | ! , ,, ! , ! Size ! Object Identifier for piece 3! piece 3 !
*######(########(#################(############(##########(######$##############################$#########)
Size octets
Write object group n variation v (in this case the group and variation identify the
object identifier).
The qualifier code specifies a list of object identifiers in the identifier field and the
range field is an 8 bit quantity. The size field is also an 8-bit quantity specifying
that the object identifier plus data is 'size' octets in length
The range field specifies the list contains 1 entry.
The Data field contains the data (of size specified in the identifier) belonging to the
identified object.
This method is useful for downloading configurations to a remote device (if the
File Object Identifier is used) as the contents of the Data filed is not interpreted by
the application layer. This method is however the only way in which to send a data
object that is larger than one fragment in size.
The Write request below sets the time of day in the Outstation.
DNP V3.00 Application Layer (Version 0.03)
4-15
octet , 2 3 4 5 6 7 .....
"######+########+#################+############+##########+#############%
! AC ! ! Object gv ! Qualifier ! Range ! Time Object !
! FIN=,! FC = 2 ! g = n v = v ! 0000 0000 ! Quantity ! !
! FIR=,! ! | ! 0 00 ! , ! !
*######(########(#################(############(##########(#############)
The qualifier specifies a 1 octet quantity; the quantity field specifies 1 object and
the Object field identifies the object as a Time and Date Object.
4.3.2 Write Responses
The response to a Write request can only consist of the IIN (Internal Indications) that
indicates the success of the Write operation and so there is no ASDU portion of a
Write response. The response always uses the Response function code.
4.4 SELECT (FUNCTION CODE 3)
The select function code is used to select one or more control points at an Outstation.
These may be control relay outputs, analog outputs or pattern control blocks. This
function does not output or activate the new state or value but makes them ready
(arms them) and reports their status. An additional operate message must be sent to
the Outstation to actually activate the request. The operate message control objects
must match the control objects in the preceding select message before the activation
takes place. The select message causes the Outstation to starts a timer. The operate
message must be received correctly before the timer expires in order for the activation
to take place.
There are two forms to the control messages. The first form is for control blocks with
a fixed size and the second form is for a control block of variable size. The variable
sized control block is for pattern outputs.
Figure 4-6 illustrates a select message (fixed size control blocks) sent from a master
station to an Outstation.
The Outstation responds to a select message by arming the specified points (specified
by the index preceding the control blocks) and returning the request in the response as
illustrated in Figure 4-7 (fixed size control blocks). The response is identical to the
request except that it includes the IIN and modified status bytes (part of the control
block objects). The status bytes state the success or failure of the Select request.
"######+#########+###############+###########+##########+#######+#########+#######+#########%
! ! ! Object gv ! Qualifier ! Range ! ! control ! ! control !
! AC ! FC = 3 ! group = n ! 000, 0,,, ! Quantity ! index ! block ! index ! block !
! ! ! variation = v ! , 7 ! 2 ! ! object ,! ! object 2!
*######(#########(###############(###########(##########(#######(#########(#######(#########)
Figure 4-6 Master Selection of Two Control or Analog Outputs
Object following this header is group n (must be a control block object relating to
outputs or setpoints), variation v.
The qualifier code specifies a range field with a 1 octet quantity of control blocks.
The index size specifies 1 octet indices prefixing each control block.
DNP Users Group
4-16
"####+####+######+###############+###########+##########+#######+#########+#######+#########%
! ! ! ! Object gv ! Qualifier ! Range ! ! control ! ! control !
! AC ! FC ! IIN ! group = n ! 000, 0,,, ! Quantity ! index ! block ! index ! block !
! ! ! ! variation = v ! , 7 ! ! ! object ,! ! object 2!
*####(####(######(###############(###########(##########(#######(#########(#######(#########)
Figure 4-7 Outstation Response
The Outstation response control objects must match the control objects (byte for byte)
in the request or the operate message will not be sent.
4.4.1 Pattern Control
Figure 4-8 illustrates a master station select message for a pattern and
Figure 4-9 an Outstation response.
"####+########+###############+############+########+##########%
! ! ! Object gv ! Qualifier !Quantity! pattern !
! AC ! FC = 3 ! group = a ! 0000 0,,, ! ! control !
! ! ! variation = b ! 0 7 ! , ! block !... (continued)
*####(########(###############(############(########(##########)
"################+###########+##############+########+########+########+########%
! Object gv ! Qualifier ! Range !pattern !pattern !pattern !pattern !
! group = c !0000 0000 ! Start | Stop ! mask ! mask ! mask ! mask !
! variation = d ! 0 0 ! 5 8 !object 5!object 6!object 7!object 8!
*################(###########(##############(########(########(########(########)
Figure 4-8 Master Selection of a Pattern Output
The first object, Object a, Variation b, specified is a Pattern Control Block which
describes all the parameters that are common to the control points specified in the
Pattern Mask Objects. Following this object are a number of Pattern Mask objects,
Object c, Variation d, which describe whether or not the point should be activated.
The first qualifier code specifies a 8-bit range (quantity) field which specifies one
(1) Pattern Control Block.
The second qualifier code specifies a range field with a 1 octet start and stop sub-
field. This range specifies the Pattern Mask Objects which are to be considered for
the pattern control.
The above message constitutes one pattern control request. Multiple requests
(Pattern Control Block followed by multiple Pattern Mask Objects) can be sent in
one message as long as the total size of the requests can fit into one application
layer fragment.
"####+########+###############+############+########+##########%
! ! ! Object gv ! Qualifier !Quantity! pattern !
! AC ! FC=,28 ! group = a ! 0000 0,,, ! ! control !
! ! ! variation = b ! 0 7 ! , ! block !... (continued)
*####(########(###############(############(########(##########)
"################+###########+##############+########+########+########+########%
! Object gv ! Qualifier ! Range !pattern !pattern !pattern !pattern !
! group = c !0000 0000 ! Start | Stop ! mask ! mask ! mask ! mask !
! variation = d ! 0 0 ! 5 8 !object 5!object 6!object 7!object 8!
*################(###########(##############(########(########(########(########)
Figure 4-9 Outstation Response to the Pattern Select Message
Notice that the format of the response is identical to the request message (except
the application response header). The objects returned will be used by the master
to verify the success of the select operation.
DNP V3.00 Application Layer (Version 0.03)
4-17
4.5 OPERATE (FUNCTION CODE 4)
The operate function code is used to activate one or more control or analog outputs at
an Outstation. A matching message using the select function code must previously
have been received, and the arm timer must still be active before the activation will
take place. The format of this message is the same as a select message except the
function code is 4.
"####+########+###############+############+#############+##########+###########%
! ! ! Object gv ! Qualifier ! Range ! control ! control !
! AC ! FC = 4 ! group = n ! 0000 0,,, ! Quantity ! block , ! block 2 !
! ! ! variation = v ! 0 7 ! 2 ! ! !
*####(########(###############(############(#############(##########(###########)
Figure 4-10 Master Selection of Two Outputs or Setpoints
Object following this header is group n (must be a control block object relating to
outputs or setpoints), variation v.
The qualifier code specifies a range field with a 1 octet quantity of control blocks.
"####+####+######+###############+############+##########+#########+#########%
! ! ! ! Object gv ! Qualifier ! Range ! control ! control !
! AC ! FC ! IIN ! group = n ! 0000 0,,, ! Quantity ! block , ! block 2 !
! ! ! ! variation = v ! 0 7 ! 2 ! ! !
*####(####(######(###############(############(##########(#########(#########)
Figure 4-11 Outstation Response
Object following this header is group n (must be a control block object relating to
outputs or setpoints), variation v.
The qualifier code specifies a range field with a 1 octet quantity of control blocks.
Indication of the success or failure of the operations is returned in the Output Status
bytes, one of which is built into each of the control block objects. In the case of a
Pattern Mask object, the status is part of the Pattern Control Block object preceding
the mask.
4.6 DIRECT OPERATE (FUNCTION CODE 5)
The direct operate function code is used to activate one or more outputs or setpoints at
an Outstation. A preceding select message is not required. The format of this message
is the same as a select or operate message except the function code is 5.
"####+########+###############+############+#############+##########+###########%
! ! ! Object gv ! Qualifier ! Range ! control ! control !
! AC ! FC = 5 ! group = n ! 0000 0,,, ! Quantity ! block , ! block 2 !
! ! ! variation = v ! 0 7 ! 2 ! ! !
*####(########(###############(############(#############(##########(###########)
Figure 4-12 Master Selection of Two Outputs or Setpoints
Object following this header is group n (must be a control block object relating to
outputs or setpoints), variation v.
The qualifier code specifies a range field with a 1 octet quantity of control blocks.
DNP Users Group
4-18
"####+####+#####+###############+############+##########+#########+#########%
! ! ! ! Object gv ! Qualifier ! Range ! control ! control !
! AC ! FC ! IIN ! group = n ! 0000 0,,, ! Quantity ! block , ! block 2 !
! ! ! ! variation = v ! 0 7 ! 2 ! ! !
*####(####(#####(###############(############(##########(#########(#########)
Figure 4-13 Outstation Response
Object following this header is group n (must be a control block object relating to
outputs or setpoints), variation v.
The qualifier code specifies a range field with a 1 octet quantity of control blocks.
4.7 DIRECT OPERATE - NO ACKNOWLEDGEMENT
(FUNCTION CODE 6)
The direct operate No Acknowledgement function code is used to activate one or
more outputs or setpoints at a Outstation. A preceding select message is not required.
The format of this message is the same as a select or operate message except the
function code is 6 and the Outstation does not respond with a message to the master
station.
"####+########+###############+############+#############+##########+###########%
! ! ! Object gv ! Qualifier ! Range ! control ! control !
! AC ! FC = 6 ! group = n ! 0000 0,,, ! Quantity ! block , ! block 2 !
! ! ! variation = v ! 0 7 ! 2 ! ! !
*####(########(###############(############(#############(##########(###########)
Figure 4-14 Master Selection of Two Outputs or Setpoints
Object following this header is group n (must be a control block object relating to
outputs or setpoints), variation v.
The qualifier code specifies a range field with a 1 octet quantity of control blocks.
4.8 IMMEDIATE FREEZE (FUNCTION CODE 7)
This function code is used to copy the specified data objects to a freeze buffer. Upon
reception of the message, the Outstation should copy the current values of the
specified data objects to their appropriate freeze buffers. The objects which were
frozen can be requested (in another request) by asking for frozen objects.
"####+########+###############% "###############%
! ! ! Object Header ! ! Object Header !
! AC ! FC = 7 ! !...! !
! ! ! ! ! !
*####(########(###############) *###############)
Figure 4-15 Master Immediate Freeze Control Message
The request can contain multiple object headers which specify many objects to freeze.
Typically, however, only counter objects are frozen.
"####+#####+###########%
! ! ! !
! AC ! FC ! IIN !
! ! ! !
*####(#####(###########)
Figure 4-16 Outstation Response to Immediate Freeze
DNP V3.00 Application Layer (Version 0.03)
4-19
The Outstation response can indicate (in the IIN) that the objects in the request are not
known.
4.9 IMMEDIATE FREEZE - NO ACKNOWLEDGEMENT
(FUNCTION CODE 8)
This function code works identically to the previous function code (Immediate Freeze)
except that no Outstation response is needed. Typically, this function code is used to
perform a global freeze on all Outstations belonging to the master. In this case, the
SEND-NO REPLY services of the Data Link Layer may have to be used in certain
environments.
"####+########+###############% "###############%
! ! ! Object Header ! ! Object Header !
! AC ! FC = 8 ! !...! !
! ! ! ! ! !
*####(########(###############) *###############)
Figure 4-17 Master Immediate Freeze No-Ack Control Message
4.10 FREEZE AND CLEAR (FUNCTION CODE 9)
This function code is used to copy the specified data to a freeze buffer like the freeze
immediate function code but then the Outstation clears ( to 0 ) the specified data
objects. Typically, this function code is used to freeze counters or accumulators and
then reset them to 0.
"####+########+###############% "###############%
! ! ! Object Header ! ! Object Header !
! AC ! FC = 9 ! !...! !
! ! ! ! ! !
*####(########(###############) *###############)
Figure 4-18 Master Freeze and Clear Control Message
"####+#####+###########%
! ! ! !
! AC ! FC ! IIN !
! ! ! !
*####(#####(###########)
Figure 4-19 Outstation Response to Freeze and Clear Request
4.11 FREEZE AND CLEAR - NO ACKNOWLEDGEMENT
(FUNCTION CODE 10)
This function code works identically to the previous function code (Freeze and Clear)
except that no Outstation response is needed. Typically, this function code is used to
perform a global freeze and clear on all Outstations belonging to the master.
DNP Users Group
4-20
"####+########+###############% "###############%
! ! ! Object Header ! ! Object Header !
! AC ! FC= ,0 ! !...! !
! ! ! ! ! !
*####(########(###############) *###############)
Figure 4-20 Master Freeze and Clear No-Ack Control Message
4.12 FREEZE WITH TIME (FUNCTION CODE 11)
This function code initiates the periodic freezing of the specified data objects. The
Time and Date with Interval object sent preceding the objects to freeze is described in
the table below. As shown, the object has two components: a time field (absolute) and
an interval time field. The value of these fields determines the behaviour of the
Outstation freezing.
TIME INTERVAL DESCRIPTION
non zero zero Freeze once at specified time.
zero zero Freeze Immediately.
zero non zero Freezing is synchronized to the
beginning of the current hour. The first
freeze will occur at the smallest
multiple greater than or equal to the
current time. Subsequent freezes will
occur at each interval increment.
non zero non zero Start freezing at the specified time and
repeat at each interval increment
thereafter
"####+#########+#################+###########################+###################%
! ! ! Object Header ! Time Object ! Object Header(s) !
! AC ! FC = ,, ! for time object ! Time and Date ! Interval ! for data objects !
! ! ! ! ! ! to freeze !
*####(#########(#################(###############(###########(###################)
Figure 4-21 Master Freeze With Time Message
"####+#####+###########%
! ! ! !
! AC ! FC ! IIN !
! ! ! !
*####(#####(###########)
Figure 4-22 Outstation Response to Freeze With Time
The time object must contain the time and interval. These objects are defined in the
DNP Data Object Library (P009-0BL).
Example: A time object specifies the time of day as 2:32 pm and an interval of 10
minutes. The first freeze will occur at 2:32 pm and subsequent freezes every 10
minutes starting from 2:42 pm.
DNP V3.00 Application Layer (Version 0.03)
4-21
4.13 FREEZE WITH TIME - NO ACKNOWLEDGEMENT
(FUNCTION CODE 12)
This function code works identically to the previous function code (Freeze With
Time) except that no Outstation response is needed. Typically, this function code is
used to perform a global freeze with time on all Outstations belonging to the master.
In this case, the SEND-NO REPLY services of the Data Link Layer may have to be
used in certain environments.
"####+#########+#################+###########################+###################%
! ! ! Object Header ! Time Object ! Object Header(s) !
! AC ! FC = ,2 ! for time object ! Time and Date ! Interval ! for data objects !
! ! ! ! ! ! to freeze !
*####(#########(#################(###############(###########(###################)
Figure 4-23 Master Freeze With Time No-Ack Message
4.14 COLD RESTART (FUNCTION CODE 13)The cold restart function
code makes the Outstation perform a complete restart of the user application , as if it
has been newly powered up.
"####+########%
! ! !
! AC ! FC = ,3!
! ! !
*####(########)
Figure 4-24 Master Cold Restart Control Message
"####+#####+###########+###########+###############%
! ! ! ! Object ! Time Delay !
! AC ! FC ! IIN ! Header ! Object !
! ! ! ! for time ! !
*####(#####(###########(###########(###############)
Figure 4-25 Outstation Response to Cold Restart Request
The Outstation, upon receiving the Cold Restart request will response with a Time
Delay Object (Time Delay Fine or Time Delay Course) which specifies a time interval
until the Outstation will be ready for further communications. The master should not
attempt to communicate with the Outstation until the interval has elapsed. The
interval allows the Outstation to perform a restart sequence and enable DNP
communications again. After the response is sent (and transaction was successful) the
Outstation should perform the restart procedure. The Time Delay Fine object is
defined in the DNP Data Object Library (P009-0BL).
4.15 WARM RESTART (FUNCTION CODE 14)
This code restart function code specifies that the Outstation perform a restart, but it is
not necessary to run through the entire reset sequence (only certain applications need
be restarted). The DNP application may reset itself without resetting other subsystems
or processes. Typically this function makes an Outstation application initialize its
configuration and clear events stored in its local buffers.
DNP Users Group
4-22
"####+#########%
! ! !
! AC ! FC = ,4 !
! ! !
*####(#########)
Figure 4-26 Master Warm Restart Control Message
"####+#####+###########+###########+##############%
! ! ! ! Object ! Time Delay !
! AC ! FC ! IIN ! Header ! Object !
! ! ! ! for time ! !
*####(#####(###########(###########(##############)
Figure 4-27 Outstation Response to Warm Restart Request
The Outstation response is identical to the response to the Cold Restart function code
and should be interpreted in the same way. The Time Delay Object is actually a Time
Delay Fine or Time Delay Course object.
4.16 INITIALIZE DATA (FUNCTION CODE 15)
This function code specifies that configurable data is to be set to the initial or default
settings. For example, this function could be used to clear counters. Note that the
initial settings are NOT contained in the request.
"####+#########+##################%
! ! ! Object Header !
! AC ! FC = ,5 ! for data objects !
! ! ! to initialize !
*####(#########(##################)
Figure 4-28 Master Initialize Data Control Message
"####+#####+###########%
! ! ! !
! AC ! FC ! IIN !
! ! ! !
*####(#####(###########)
Figure 4-29 Outstation Response to Initialize Data Request
The response only indicates the success or failure of the requested operation.
4.17 INITIALIZE APPLICATION (FUNCTION CODE 16)
This function code initializes the specified applications at the Outstation in
preparation for execution.
octet , 2 3 4 5 6 7...
"####+#########+###############+###########+#############+#############+#############%
! ! ! Object gv ! Qualifier ! Range ! Application !Application !
! AC ! FC = ,6 ! Group = n ! 000, ,0,, ! Quantity ! Identifier !Object !
! ! ! Variation = v ! , ,, ! , ! Size !Identifier !
*####(#########(###############(###########(#############(#############(#############)
Figure 4-30 Master Initialize Application Control Message
DNP V3.00 Application Layer (Version 0.03)
4-23
The object group and variation must specify an application identifier object.
The qualifier indicates the range field is an 8 bit quantity specifying the number of
object identifiers that follow.
The application identifier size field indicates the size of the Application Object
Identifier that follows.
"####+#####+###########%
! ! ! !
! AC ! FC ! IIN !
! ! ! !
*####(#####(###########)
Figure 4-31 Outstation Response After Initializing Application(s)
The Outstation, upon receiving the request, should initialize the specified
application(s) and then respond with either the success or failure of the transaction.
4.18 START APPLICATION (FUNCTION CODE 17)
This function code is used to start the specified application(s) at the Outstation.
octet , 2 3 4 5 6 7...
"####+#########+###############+###########+#############+#############+#############%
! ! ! Object gv ! Qualifier ! Range ! Application !Application !
! AC ! FC = ,7 ! Group = n ! 000, ,0,, ! Quantity ! Identifier !Object !
! ! ! Variation = v ! , ,, ! , ! Size !Identifier !
*####(#########(###############(###########(#############(#############(#############)
Figure 4-32 Master Start Application Control Message
The object group and variation must specify an application identifier object.
The qualifier indicates the range field is an 8 bit quantity specifying the number of
object identifiers that follow.
The application identifier size field indicates the size of the Application Object
Identifier that follows.
"####+#####+###########+###########+##############%
! ! ! ! Object ! Time Delay !
! AC ! FC ! IIN ! Header ! Object !
! ! ! ! for time ! !
*####(#####(###########(###########(##############)
Figure 4-33 Outstation Response After Starting Application(s)
The Outstation, upon receiving the request, should start the specified application(s)
and then respond with either the success or failure of the transaction.
4.19 STOP APPLICATION (FUNCTION CODE 18)
This function code informs the Outstation to stop the execution of the specified
application.
octet , 2 3 4 5 6 7...
"####+#########+###############+###########+#############+#############+#############%
! ! ! Object gv ! Qualifier ! Range ! Application !Application !
! AC ! FC = ,8 ! Group = n ! 000, ,0,, ! Quantity ! Identifier !Object !
! ! ! Variation = v ! , ,, ! , ! Size !Identifier !
*####(#########(###############(###########(#############(#############(#############)
DNP Users Group
4-24
Figure 4-34 Master Stop Application Control Message
The object group and variation must specify an application identifier object.
The qualifier indicates the range field is an 8 bit quantity specifying the number of
object identifiers that follow.
The application identifier size field indicates the size of the Application Object
Identifier that follows.
"####+#####+###########%
! ! ! !
! AC ! FC ! IIN !
! ! ! !
*####(#####(###########)
Figure 4-35 Outstation Response After Stopping Application(s)
The Outstation, upon receiving the request, should stop the specified application(s)
and then respond with either the success or failure of the transaction.
4.20 SAVE CONFIGURATION (FUNCTION CODE 19)
This function initiates the saving of the specified configuration(s) to nonvolatile
storage at the Outstation station.
octet , 2 3 4 5 6 7...
"####+#########+###############+###########+#############+##############+#############%
! ! ! Object gv ! Qualifier ! Range ! File !File !
! AC ! FC = ,9 ! Group = n ! 000, ,0,, ! Quantity ! Identifier !Identifier !
! ! ! Variation = v ! , ,, ! , ! Object Size !Object !
*####(#########(###############(###########(#############(##############(#############)
Figure 4-36 Master Save Configuration Control Message
The object group and variation must specify a configuration or file identifier object.
The qualifier indicates the range field is an 8 bit quantity specifying the number of
object identifiers that follow.
The configuration identifier size field indicates the size of the configuration Object
Identifier that follows.
"####+####+###########+#############+###########%
! ! ! ! Object ! Time !
! AC ! FC ! IIN ! Header ! Object !
! ! ! ! ! !
*####(####(###########(#############(###########)
Figure 4-37 Outstation Response After Saving Configuration(s)
The Outstation, upon receiving the request, should save the specified configuration(s)
and then respond with either the success or failure of the transaction and a time object
(Time Delay Fine or Time Delay Course) which indicates the time at which the
Outstation will be available again for communication. The master should not attempt
to communicate with the Outstation until the time specified.
DNP V3.00 Application Layer (Version 0.03)
4-25
4.21 ENABLE SPONTANEOUS MESSAGES (FUNCTION CODE
20)
This function code informs the Outstation to enable spontaneous reporting of the
objects specified in the object header.
"####+########+##################%
! ! ! Object Header(s) !
! AC ! FC= 20 ! !
! ! ! !
*####(########(##################)
Figure 4-38 Master Request to Enable Spontaneous Messages
"####+#####+###########%
! ! ! !
! AC ! FC ! IIN !
! ! ! !
*####(#####(###########)
Figure 4-39 Outstation Response
The Outstation will enable spontaneous messages for all object (types or points)
specified in the object header. The master could also send an object header specifying
class data. This means that any objects which are configured for the specified class
will be enabled for spontaneous messages.
4.22 DISABLE SPONTANEOUS MESSAGES (FUNCTION
CODE 21)
This function code informs the Outstation to disable spontaneous reporting of the
objects specified in the object header.
"####+#########+###############%
! ! ! Object Header !
! AC ! FC = 2, ! !
! ! ! !
*####(#########(###############)
Figure 4-40 Master Request to Disable Spontaneous Messages
"####+#####+###########%
! ! ! !
! AC ! FC ! IIN !
! ! ! !
*####(#####(###########)
Figure 4-41 Outstation Response to Disable Spontaneous Message
The Outstation will disable spontaneous messages for all object (types or points)
specified in the object header. The master could also send an object header specifying
class data. This means that any objects which are configured for the specified class
will be disabled for spontaneous messages.
4.23 ASSIGN CLASSES (FUNCTION CODE 22)
This function is used to assign data objects to classes.
DNP Users Group
4-26
"####+#########+###############+##############%.."###############%
! ! ! Class Object ! Data Object ! ! Data Object !
! AC ! FC = 22 ! Header ! Header , ! ! Header n !
! ! ! ! ! ! !
*####(#########(###############(##############)..*###############)
Figure 4-42 Master Request to Assign Classes to Data
The class object header must specify the class object group and a variation between
1 and 3 indicating the class assignment to all the data object (specified by the
headers) that follow.
The data object header(s) identifies the group, variation and range of the objects to
be assigned to the class specified in the class object header preceding the data
object header.
Multiple sets of Class Object headers followed by one or more Data Object headers
can be sent in one message. Each set must not span multiple fragments, however.
Static data objects are assigned to Class 0 and cannot be assigned to other classes.
Event data objects are assigned to classes 1, 2 and/or 3 and cannot be assigned to
Class 0.
"####+####+#####%
! ! ! !
! AC ! FC ! IIN !
! ! ! !
*####(####(#####)
Figure 4-43 Outstation Response to Assign Classes
The Outstation response indicates the success or response of the operation (success or
failure determined by the state of the IIN bits).
4.24 DELAY MEASUREMENT (FUNCTION CODE 23)
This function is used to calculate the communication delay for a particular Outstation.
It is generally used in the time synchronization process for the Outstations (see section
6. Time Synchronization for a detailed description of the process).
"####+#########%
! ! !
! AC ! FC = 23 !
! ! !
*####(#########)
Figure 4-44 Master Request to Initiate Delay Measurement
Only one time object can be sent in any one separate request.
"####+####+#####+#############+###############%
! ! ! ! Time Delay ! Time Delay !
! AC ! FC ! IIN ! Fine Header ! Fine object !
! ! ! ! ! !
*####(####(#####(#############(###############)
Figure 4-45 Outstation Reponse to Delay Measurement Request
DNP V3.00 Application Layer (Version 0.03)
4-27
The Outstation responds with the Time Delay Fine object. This object states the
number of milliseconds elapsed between the Outstation receiving the first bit of the
first byte of the request and the time of transmission of the first bit of the first byte of
the response.
DNP Users Group
4-28
DNP V3.00 Application Layer (Version 0.03)
5-1
5. CLASSES
Objects may be assigned to a class. There are four Classes of data. Class 0 is reserved
for static data objects (static data reflects the current value of data in the Outstation).
Classes 1, 2 and 3 are reserved for event data objects (objects created as the result of
data changes in the Outstation or some other stimulant). Each event object can be
assigned to Class 1, 2 or 3. Objects may be grouped in Classes by priority (the priority
is determined by the user) and the data classes polled at varying rates.
The ability to assign data to Classes and the degree of configurability is described in
the Outstation's device profile. It is not required that an Outstation have data assigned
to Classes 1, 2 or 3.
Class data is used by a master station to request pre-assigned data objects on a demand
or availability basis from an Outstation. Therefore, a class data object header can be
used only in a request (with no associate data object) to indicate to the Outstation
which data objects to return. The Outstation will return (in the response) object
headers for the ACTUAL data objects and NOT the class object header.
DNP Users Group
5-2
DNP V3.00 Application Layer (Version 0.03)
6-1
6. TIME SYNCHRONIZATION
Time synchronization is handled by the application layer BUT has to make use of
special services of the data link layer. The application must initiate the time
synchronization sequence by sending the appropriate request or response.
To synchronize Master station and Outstation time, the following procedure is used.
1. The Master station sends a Delay Measurement request to the Outstation. The
master records the time of transmission of the first bit of the first byte of the
request (MasterSendTime).

2. The Outstation receives the first bit of the first byte of the Delay Measurement
request at time RtuReceiveTime (this is a local time in the Outstation).

3. The Outstation transmits the first bit of the first byte of the response to the Delay
Measurement request at time RtuSendTime. The response contains the Time
Delay object (Time Delay Fine or Time Delay Course), with the time in this object
equal to RtuTurnAround, where

RtuTurnAround = RtuSendTime - RtuReceiveTime

4. The Master station receives the first bit of the first byte of the Outstation's response
at time MasterReceiveTime.

5. The master station can now calculate the one way propagation delay as

MasterSendTime - MasterReceiveTime - RtuTurnAround
Delay = ----------------------------------------------------
2

6. The master now transmits the first bit of the first byte of a Write request at time
MasterSend. The Write request contains the Time and Date object, with the time
in the object representing a time equal to (MasterSend + Delay). This is the time
that the Master station wants the Outstation to be set to.

7. The Outstation receives the first bit of the first byte of the Write request at time
RtuReceive.

8. The Outstation will process the Write request, setting the Outstation clock to time
NewRtuTime. The following algorithm is used:

Adjustment = CurrentRtuTime - RtuReceive
NewRtuTime = (time in the Time and Date object) + Adjustment

DNP Users Group
6-2
9. The Master and Outstation time are now synchronized.
NOTE: The Time Synchronization scheme assumes that the Outstation to
master propagation delay and the master to Outstation propagation
delay are equal.
If desired, the master station may send a global request (using the reserved destination
address of FFFF hexadecimal) to simultaneously synchronize all Outstations, only if
all path delays are equal.
DNP V3.00 Application Layer (Version 0.03)
7-1
7. BINARY INPUT WITH TIME
EVENTS
An Outstation will often transmit Binary Input with Time or Binary Input with
Relative Time objects when digital input points changes state. Binary input event
objects are transmitted in different formats depending on different conditions.
1) Outstation Time Synchronized, one event object to send. The data is transmitted
in the Binary Input with Time object format.

2) Outstation Time Synchronized, several event object to send. The Time and
Date Common Time of Occurrence object is transmitted followed by several
Binary Input with Relative Time objects. The time in the Time and Date Common
Time of Occurrence object is the time of the oldest object. The relative times start
at 0 (for the oldest object) and range upwards relative to the Date and Time object.

3) Outstation Time NOT Synchronized, one or more event object to send. The
Unsynchronized Common Time and Date object is transmitted followed by one or
more Binary Input with Relative Time objects. The time in the Time and Date
Common Time of Occurrence object is the time of the oldest object. The relative
times start at 0 (for the oldest object) and range upwards relative to the Time and
Date object.
DNP Users Group
7-2
DNP V3.00 Application Layer (Version 0.03)
8-1
8. FILE TRANSFER
The File Identifier Object (FIO) may be used to transfer data files between
Outstations and master stations. This is commonly used to write configurations
from a master to an Outstation or read configurations from an Outstation to a
master.
The functionality of the File Identifier Object allows configuration
information to be routed to Outstations via intermediate Data Concentrators.
A data concentrator is located between a master station and an Outstation - it is
effectively an Outstation to the master station and a master station to the
Outstation. Note that a Data Concentrator is not just a communication node - it
does not directly route messages between a master station and an Outstation.
The File Identifier Object is always passed to an Outstation in a request using
the WRITE function code. The action to be done (reading, writing or
otherwise) is specified by the File_Function field within the object. The
response always uses the RESPONSE function code. However, an outstation
can send an unsolicited message containing a FIO.
The File Identifier Object contains routing information in its File_Name field.
This field describes how the object is to be routed from the master station,
through any number of intermediate Data Concentrators, to the Outstation.
The interpretation of the File_Name field is dependent on the Data
Concentrator through which the object is being routed.
8.1 FILE IDENTIFIER OBJECTS PERFORMING WRITE
FUNCTIONS
This section describes how a File Identifier Object is passed from a master
station through a Data Concentrator to an Outstation. The Outstation may be
another Data Concentrator. Note that the request message is using the WRITE
function code. The File_Function field in the object will be WRITE,
APPEND, INSERT, DELETE or ERASE. The object may or may not contain
data (no data for DELETE or ERASE).
DNP Users Group
8-2
The following Nomenclature is used:
Outstation Application - This is the software application in the Data
Concentrator that communicates to the master station. It is an Outstation
with respect to the master station.
Master Application - This is the software application in the Data
Concentrator that communicates to the Outstation. It is a master with
respect to the Outstation.
The master station send the request (WRITE function code) with the File
Identifier Object to the Outstation Application. For the request, the following
conditions must be satisfied;
DNP WRITE Function Code is used in the request.
File_Function field in the object is set to WRITE, APPEND, INSERT,
DELETE or ERASE.
File_Name field contains an ASCII character string. The length and
contents of the string is dependant on the Data Concentrator. The Harris
implementation uses a string, the first 9 character of which are
"/DNPDCAxx", where xx (2 ASCII characters) contains the Master
Application number to which this File Identifier Object must be routed.
This information routes the object from the Outstation Application to the
Master Application within the Data Concentrator, which will send it on to
the Outstation.
If the above conditions are met, the following sequence occurs:
1) Outstation Application sends a CONFIRMation response to the master
station (if the CON bit in the Request Header is set).
2) Outstation Application removes the first 9 characters (for HARRIS
implementation) from the FILE_NAME field, modifying other File
Identifier Object fields if necessary.
3) Outstation Application sends the File Identifier Object to the Master
Application.
4) Master Application sends a request (WRITE function code) containing
the File Identifier Object to the appropriate Outstation.
5) If a CONFIRMation Response is required, the Master Application
waits for this response.
6) Master Application now waits for the response containing the File
Identifier Object. The object in the response contains the status of the
command specified in the File_Function field. When this object is
received, the Master Application sends it to the Outstation Application.
If the Master Application does not receive the object, a negative
acknowledgement is sent to the Outstation Application.
7) Upon receipt of a response File Identifier Object or negative
acknowledgement (from the Master Application), the Outstation
Application sends a response to the master. The transaction is
complete.
The response to the request uses the RESPONSE Function Code. It contains
the File Identifier Object, which contains the status of the operation requested
DNP V3.00 Application Layer (Version 0.03)
8-3
in the File_Function field, with no data records. If the Outstation Application
receives a response from the Master Application, this response contains a File
Identifier Object. The Outstation Application does not need to change this
response. If the Outstation Application receives a negative acknowledgement
from the Master Application, it will modify and set the following fields in the
response File Identifier Object:
START_RECORD = END_RECORD = 0
FILE_SIZE = 0
FILE_FUNCTION = RESPONSE
PERMISSION = 0
STATUS = 2 Master Application was unable to pass the File
Identifier Object to the Master Application.
4 Operation unsuccessful because the device addressed by
FILE_ID is offline.
4 Operation unsuccessful because a negative
acknowledgement received from the Master
Application.
The File_Name field is designed so that File Identifier Objects containing
configurations can be downloaded to an Outstation via any number of
intermediate data concentrators.
Figure 8-1 is a simplistic example illustrating how the File Identifier Object is
passed through the system from a master station to an Outstation via two data
concentrators.
DNP Users Group
8-4
!
!
FILE_NAME = /DNPDCA03/DNPDCA,0/config,
"################################%
! Outstation application removes!
! ,st 9 chars of FILE_NAME !
!--------------------------------!
! sends object to internal ! First Data Concentrator
! device number 03 ! Outstation Application
!--------------------------------! has Address DST=,
! Master applic. configuration !
! maps device 03 to DST=22 !
! Master applic. addresses !
! the object to DST=22 !
*################################)
!
!
FILE_NAME = /DNPDCA,0/config,
"################################%
! Outstation application removes!
! ,st 9 chars of FILE_NAME !
!--------------------------------!
! sends object to internal ! Second Data Concentrator
! device number ,0 ! Outstation Application
!--------------------------------! has Address DST=22
! Master applic. configuration !
! maps device ,0 to DST=8 !
! Master applic. addresses !
! the object to DST=8 !
*################################)
!
!
FILE_NAME = /config,
"##################%
! !
! End Device !
! Address 8 !
! !
*##################)
Figure 8-1 Passing a File Identifier Object Via Data Concentrators
In Figure 8-1:
1) The master station WRITEs the File Identifier Object to the first data
concentrator (DC). The File_Name field specifies that the object is to
be sent to device number 3 in the first DC.
2) The Outstation Application in the first DC removes the first nine
characters of the File_Name. It then routes the object to the Master
Application specified as device number 3.
3) The Master Application configuration specifies device number 3 has
DNP destination address 22. The Master Application in the first DC
WRITEs the File Identifier Object to the second DC.
4) The second DC receives the WRITE request. The File_Name field
specifies that the object is to be sent to device number 10 in the second
DC.
5) The Outstation Application in the second DC removes the first nine
characters of the File_Name. It then routes the object to the Master
Application specified as device number 10.
6) The Master Application configuration specifies device number 10 has
DNP destination address 8. The Master Application in the second DC
WRITEs the File Identifier Object to the Outstation.
7) The Outstation receives the WRITE request. It responds with a
RESPONSE containing the modified File Identifier Object. This object
DNP V3.00 Application Layer (Version 0.03)
8-5
contains the status of the operation. It is transmitted to the Master
Application in the second DC.
8) The Master Application in the second DC transfers the response File
Identifier Object to the Outstation Application.
9) The Outstation Application sends a RESPONSE containing the File
Identifier Object to the first DC.
10) The Master Application in the first DC transfers the response File
Identifier Object to the Outstation Application.
11) The Outstation Application in the first DC sends a RESPONSE
containing the File Identifier Object to the DNP master station.
NOTES:
This functionality requires the DNP master station to have a larger response
timeout than the Outstation Application in the first DC, which in turn has a
larger response timeout than the Outstation Application in the second DC.
The DNP master station must have detailed configuration and routing
information in order to construct the File_Name field.
AN Outstation Application will not receive while it waits for a response
from a down stream device. It is "locked out" to master requests.
8.2 FILE IDENTIFIER OBJECT PERFORMING READ
FUNCTIONS
This section describes how a File Identifier Object is used to perform read
functions. Note that the object is passed to applications via a request using the
WRITE function code. The File_Function field is set to READ.
The master station can read the File Identifier Object when the following
conditions are met:
The DNP WRITE Function Code is used in the request.
The File_Function field in the File Identifier Object received in the
request is set to READ.
The File_Name field contains an ASCII character string. The length
and contents of the string is dependant on the DC. The HARRIS
implementation uses a string, the first 9 character of which are
"/DNPDCAxx", where xx (2 ASCII characters) contains the Master
Application number of the destination for this File Identifier Object.
This information routes the object through the DC to the Master
Application which will send it on from the DC to the Outstation.
If the above conditions are met, the following sequence occurs;
1) The Outstation Application sends a CONFIRMation response to the
DNP master station (if required).
2) The Outstation Application removes the first 9 characters from the
File_Name field( for HARRIS implementation), modifying the File
Identifier Object as required.
3) The Outstation Application sends a READ command with the File
Identifier Object to the Master Application.
DNP Users Group
8-6
5) The Master Application sends a READ command with the File
Identifier Object to the appropriate Outstation.
6) If a CONFIRMation Response is required, the Master Application
waits for this response.
7) The Master Application now waits for the response containing the
requested File Identifier Object. When this object is received, the
Master Application sends the response to the Outstation Application. If
the Master Application does not receive the object, a negative
acknowledgement is sent to the Outstation Application.
8) Upon receipt of an response File Identifier Object or negative
acknowledgement, the Outstation Application sends a response to the
master. The transaction is complete.
Some error conditions can occur in the above sequence. In the cases where the
Outstation Application cannot pass the request to the Master Application or a
negative acknowledgement is received from the Master Application, the
Outstation Application returns the File Identifier Object received as part of the
request to the master station.
The Outstation Application will modify and set the following fields in the
response File Identifier Object;
START_RECORD = END_RECORD = 0
FILE_SIZE = 0
FILE_FUNCTION = RESPONSE
PERMISSION = 0
STATUS = 2 Outstation Application was unable to pass the File
Identifier Object to the Master Application.
4 Operation unsuccessful because the device addressed by
FILE_ID is offline.
4 Operation unsuccessful because a negative
acknowledgement received from the Master
Application.
DNP V3.00 Application Layer (Version 0.03)
1
LIST OF ABBREVIATIONS AND
ACRONYMS
AC application control
APCI application protocol control information
APDU application protocol data unit
ASDU application service data unit
COS change of state
DA distribution automation
DC data concentrator
DNP distributed network protocol
DUI data unit identifiers
EPA enhanced protocol architecture
IEC International Electrotechnical Commission
IIN internal indications
IO information objects
ISO International Standards Organization
OSI Open System Interconnection
PDU protocol data unit
RTU remote terminal unit
SCADA supervisory control and data acquisition
SEQ sequence number
DNP Users Group
DNP PRODUCT DOCUMENTATION
DNP V3.00
DATA OBJECT LIBRARY
Document Version: 0.02
Internal File: P009-OBL
Associated Software Release: DNP V3.00
NOTICE OF RIGHTS - DNP USERS GROUP
The contents of this manual are the property of the DNP Users
Group. Revisions or additions to the definition and functionality of
the Distributed Network Protocol cannot be made without express
written agreement from the DNP Users Group or its duly authorized
party. In addition, no part of this document may be altered or
revised or added to in any form or by any means, except as permitted
by written agreement with the DNP Users Group or a Party duly
authorized by the DNP Users Group.
As a Party, duly authorized by the DNP Users Group, Harris
Corporation has made every reasonable attempt to ensure the
completeness and accuracy of this document, however, the
information contained in this manual is subject to change without
notice, and does not represent a commitment on the part of Harris
Corporation or the DNP Users Group. An update program for DNP
documents is provided upon request by Harris Corporation on
behalf of the DNP Users Group.
TRADEMARK NOTICES
Brand and product names mentioned in this document are
trademarks or registered trademarks of their respective companies.
DNP V3.00 Data Object Library (Version 0.02)
i
TABLE OF CONTENTS
ABOUT THIS DOCUMENT v
PURPOSE OF THIS SPECIFICATION v
WHO SHOULD USE THIS SPECIFICATION v
HELP AND ADDITIONAL DOCUMENTATION v
HOW THIS SPECIFICATION IS ORGANIZED vi
CONVENTIONS USED IN THIS SPECIFICATION vi
1. OVERVIEW 1-1
2. DECLARATION RULES FOR INFORMATION ELEMENTS 2-1
2.1 GENERAL 2-1
3. GENERAL RULES 3-1
3.1 LIBRARY STRUCTURE 3-1
3.2 POINT NUMBERING 3-4
4. BINARY INPUT OBJECT DEFINITIONS 4-1
4.1 SINGLE-BIT BINARY INPUT 4-1
4.2 BINARY INPUT WITH STATUS 4-2
4.3 BINARY INPUT CHANGE WITHOUT TIME 4-3
4.4 BINARY INPUT CHANGE WITH TIME 4-5
4.5 BINARY INPUT CHANGE WITH RELATIVE TIME 4-7
5. BINARY OUTPUT OBJECT DEFINITIONS 5-1
5.1 BINARY OUTPUT 5-1
5.2 BINARY OUTPUT STATUS 5-2
5.3 CONTROL RELAY OUTPUT BLOCK 5-3
5.4 PATTERN CONTROL BLOCK 5-6
5.5 PATTERN MASK 5-7
6. COUNTER OBJECT DEFINITIONS 6-1
6.1 32-BIT BINARY COUNTER 6-1
6.2 16-BIT BINARY COUNTER 6-3
6.3 32-BIT DELTA COUNTER 6-4
6.4 16-BIT DELTA COUNTER 6-5
6.5 32-BIT COUNTER WITHOUT FLAG 6-6
6.6 16-BIT COUNTER WITHOUT FLAG 6-7
6.7 32-BIT DELTA COUNTER WITHOUT FLAG 6-8
DNP Users Group
ii
6.8 16-BIT DELTA COUNTER WITHOUT FLAG 6-9
6.9 32-BIT FROZEN COUNTER 6-10
6.10 16-BIT FROZEN COUNTER 6-11
6.11 32-BIT FROZEN DELTA COUNTER 6-12
6.12 16-BIT FROZEN DELTA COUNTER 6-13
6.13 32-BIT FROZEN COUNTER WITH TIME OF FREEZE 6-14
6.14 16-BIT FROZEN COUNTER WITH TIME OF FREEZE 6-15
6.15 32-BIT FROZEN DELTA COUNTER WITH TIME OF FREEZE 6-16
6.16 16-BIT FROZEN DELTA COUNTER WITH TIME OF FREEZE 6-18
6.17 32-BIT FROZEN COUNTER WITHOUT FLAG 6-20
6.18 16-BIT FROZEN COUNTER WITHOUT FLAG 6-21
6.19 32-BIT FROZEN DELTA COUNTER WITHOUT FLAG 6-22
6.20 16-BIT FROZEN DELTA COUNTER WITHOUT FLAG 6-23
6.21 32-BIT COUNTER CHANGE EVENT WITHOUT TIME 6-24
6.22 16-BIT COUNTER CHANGE EVENT WITHOUT TIME 6-25
6.23 32-BIT DELTA COUNTER CHANGE EVENT WITHOUT TIME 6-26
6.24 16-BIT DELTA COUNTER CHANGE EVENT WITHOUT TIME 6-27
6.25 32-BIT COUNTER CHANGE EVENT WITH TIME 6-28
6.26 16-BIT COUNTER CHANGE EVENT WITH TIME 6-29
6.27 32-BIT DELTA COUNTER CHANGE EVENT WITH TIME 6-30
6.28 16-BIT DELTA COUNTER CHANGE EVENT WITH TIME 6-31
6.29 32-BIT COUNTER CHANGE EVENT WITHOUT TIME 6-32
6.30 16-BIT FROZEN COUNTER EVENT WITHOUT TIME 6-33
6.31 32-BIT FROZEN DELTA COUNTER EVENT WITHOUT TIME 6-34
6.32 16-BIT FROZEN DELTA COUNTER WITHOUT TIME 6-35
6.33 32-BIT FROZEN COUNTER EVENT WITH TIME 6-36
6.34 16-BIT FROZEN COUNTER EVENT WITH TIME 6-37
6.35 32-BIT FROZEN DELTA COUNTER EVENT WITH TIME 6-38
6.36 16-BIT FROZEN DELTA COUNTER EVENT WITH TIME 6-39
7. ANALOG INPUT OBJECT DEFINITIONS 7-1
7.1 32-BIT ANALOG INPUT 7-1
7.2 16-BIT ANALOG INPUT 7-3
7.3 32-BIT ANALOG INPUT WITHOUT FLAG 7-4
7.4 16-BIT ANALOG INPUT WITHOUT FLAG 7-5
7.5 32-BIT FROZEN ANALOG INPUT 7-6
7.6 16-BIT FROZEN ANALOG INPUT 7-7
7.7 32-BIT FROZEN ANALOG INPUT WITH TIME OF FREEZE 7-8
7.8 16-BIT FROZEN ANALOG INPUT WITH TIME OF FREEZE 7-10
7.9 32-BIT FROZEN ANALOG INPUT WITHOUT FLAG 7-12
7.10 16-BIT FROZEN ANALOG INPUT WITHOUT FLAG 7-13
7.11 32-BIT ANALOG CHANGE EVENT WITHOUT TIME 7-14
7.12 16-BIT CHANGE EVENT WITHOUT TIME 7-15
7.13 32-BIT ANALOG CHANGE EVENT WITH TIME 7-16
7.14 16-BIT ANALOG CHANGE EVENT WITH TIME 7-17
7.15 32-BIT FROZEN ANALOG EVENT WITHOUT TIME 7-18
7.16 16-BIT FROZEN ANALOG EVENT WITHOUT TIME 7-19
7.17 32-BIT FROZEN ANALOG EVENT WITH TIME 7-20
7.18 16-BIT FROZEN ANALOG EVENT WITH TIME 7-22
DNP V3.00 Data Object Library (Version 0.02)
iii
8. ANALOG OUTPUT OBJECT DEFINITIONS 8-1
8.1 32-BIT ANALOG OUTPUT STATUS 8-1
8.2 16-BIT ANALOG OUTPUT STATUS 8-3
8.3 32-BIT ANALOG OUTPUT BLOCK 8-4
8.4 16-BIT ANALOG OUTPUT BLOCK 8-5
9. TIME OBJECT DEFINITIONS 9-1
9.1 TIME AND DATE 9-1
9.2 TIME AND DATE WITH INTERVAL 9-2
9.3 TIME AND DATE CTO 9-3
9.4 UN-SYNCHRONIZED TIME AND DATE CTO 9-4
9.5 TIME DELAY COARSE 9-5
9.6 TIME DELAY FINE 9-6
10. CLASS OBJECT DEFINITIONS 10-1
10.1 CLASS 0 DATA 10-1
10.2 CLASS 1 DATA 10-2
10.3 CLASS 2 DATA 10-3
10.4 CLASS 3 DATA 10-4
11. FILE OBJECT DEFINITIONS 11-1
11.1 FILE IDENTIFIER 11-1
12. DEVICE OBJECT DEFINITIONS 12-1
12.1 INTERNAL INDICATIONS 12-1
12.2 STORAGE OBJECT 12-2
12.3 DEVICE PROFILE 12-3
12.4 PRIVATE REGISTRATION OBJECT 12-6
12.5 PRIVATE REGISTRATION OBJECT DESCRIPTOR 12-7
13. APPLICATION OBJECT DEFINITIONS 13-1
13.1 APPLICATION IDENTIFIER 13-1
14. ALTERNATE NUMERIC OBJECT DEFINITIONS 14-1
14.1 SHORT FLOATING POINT 14-1
14.2 LONG FLOATING POINT 14-4
14.3 EXTENDED FLOATING POINT 14-6
14.4 SMALL-PACKED BINARY CODED DECIMAL 14-8
14.5 MEDIUM-PACKED BINARY CODED DECIMAL 14-9
14.6 LARGE-PACKED BINARY CODED DECIMAL 14-10
LIST OF ABBREVIATIONS AND ACRONYMS
DNP Users Group
iv
LIST OF TABLES
TABLE 2-1 DATA TYPES 2-1
TABLE 2-2 BIT POSITIONS 2-2
DNP V3.00 Data Object Library (Version 0.02)
v
ABOUT THIS DOCUMENT
PURPOSE OF THIS SPECIFICATION
This document defines coding specifications of Distributed Network Protocol (DNP)
information elements or data objects used in the DNP Application Layer. The object
syntax is specified as well as the semantics of each object. In the case of compound
objects, the semantics of each component is described.
WHO SHOULD USE THIS SPECIFICATION
All programmers, implementers or engineers interested in the structure of application
information objects used in the DNP Application Layer.
HELP AND ADDITIONAL DOCUMENTATION
The following documentation may be helpful.
DNP V3.00 Data Link Layer (P009-0PD.DL).
DNP V3.00 Application Layer (P009-0PD.APP)
DNP V3.00 Transport Functions (P009-0PD.TF)
DNP Users Group
vi
HOW THIS SPECIFICATION IS ORGANIZED
This document is organized into 13 sections as outlined below.
1. OVERVIEW
2. DECLARATION RULES FOR INFORMATION ELEMENTS
Covers the rules for construction and interpretation of the data objects.
3. GENERAL RULES
Describes the rules governing each of the currently defined objects.
The rest of the sections provide detailed definitions of each type of object.
4. BINARY INPUT OBJECT DEFINITIONS
5. BINARY OUTPUT OBJECT DEFINITIONS
6. COUNTER OBJECT DEFINITIONS
7. ANALOG INPUT OBJECT DEFINITIONS
8. ANALOG OUTPUT OBJECT DEFINITIONS
9. TIME OBJECT DEFINITIONS
10. CLASS OBJECT DEFINITIONS
11. FILE OBJECT DEFINITIONS
12. DEVICE OBJECT DEFINITIONS
13. APPLICATION OBJECT DEFINITIONS
14. ALTERNATE NUMERIC OBJECT DEFINITIONS
LIST OF ABBREVIATIONS AND ACRONYMS
CONVENTIONS USED IN THIS SPECIFICATION
This document deviates from the IEC conventions for bit position numbering. Bit
positions are numbered from 0 through n, with 0 to the top right and n to the bottom
left.
DNP V3.00 Data Object Library (Version 0.02)
vii
DNP V3.00 Data Object Library (Version 0.02)
1-1
1. OVERVIEW
The intelligent devices which use the DNP Application Layer protocol are capable of
monitoring, controlling and/or producing a large number of different pieces of data
both at the hardware and software levels. These pieces of data, called information
elements (IEC 870-5-3: General Structure of Application Data), are processed and
stored as information objects and these can be packaged for transmission as
application data units. All devices provide stored information elements as information
objects in the same format. These formats are described within this document.
This document will be revised and new information elements or objects will be added
as necessary, and as authorized by the DNP User's Group.
DNP Users Group
1-2
DNP V3.00 Data Object Library (Version 0.02)
2-1
2. DECLARATION RULES FOR
INFORMATION ELEMENTS
2.1 GENERAL
This section describes the basic rules for the declaration of information elements.
These rules have been derived from the IEC TC57 870 series of standards or drafts.
These rules provide an unambiguous means of describing and representing data
irrespective of its origin. Device profile documents are used to indicate the exact
origin and meaning of the data object for each telecontrol device.
2.1.1 Data Types
All data can be described in its most elemental form as a data type. Data types are
recognized as standard constructs used in most language compilers. DNP information
elements use constructs, as supported by the IEC 870-5-4, as the basis of its
descriptions. Table 2-1 lists the available data types and their meaning.
Data Type Symbol Meaning
1. UNSIGNED INTEGER UI Positive whole number
2. INTEGER I Positive or negative whole number
3. UNSIGNED FIXED POINT UF Positive fixed point number
4. FIXED POINT F Positive or negative fixed point
number
5. REAL R Positive or negative floating-point
number
6. BITSTRING BS Assembly of independent bits
1
7. OCTETSTRING OS Assembly of octets
Table 2-1 Data Types
2.1.2 Data Size
Each information element is composed of a data type and a size. Data size i, is noted
after the data type symbol notation, and is a cardinal number that specifies the length
of the data field in bits or octets as appropriate. An example is:

1
BOOLEAN is a BITSTRING of size 1.
DNP Users Group
2-2
BS12 specifies a BITSTRING of 12 bits.
2.1.3 Bit Position
In defining information objects, which are a combination of information elements, the
position of individual bits can be significant. The bit position of a specified field of
data size i is denoted in square brackets [p
1
..pn], where p
1
and p
n
denote the first and
the last bits of the field. The order of bits is shown in Table 2-2, below.
BITS 7 6 5 4 3 2 1 0
OCTETS Data Size i
1 7 6 5 4 3 2 1 0
2 15 14 13 12 11 10 9 8
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
j 8j-1 8j-2 8j-3 8j-4 8j-5 8j-6 8j-7 8j-8
Table 2-2 Bit Positions
2.1.4 Element Value
If applicable, a selected range and a selected code of values of the declared data field
is denoted within angle brackets: <v1..vn code>. In general this is declared by the
range of admitted values and by a term that identifies the used code. Terms that
identify codes are: binary code (BIN), binary coded decimal (BCD), ASCII (ASCII),
etc. The default code declaration is binary if no term is used.
2.1.5 Compound Elements
Compound data fields are information elements composed of different data fields with
successive bit allocations. Compound data fields are declared by listing individual
data fields separated by commas or listed in a column, within curly brackets. A
following list declares the data types, the sizes, the bit allocations and the functional
purpose of the individual data fields. The first declared data field begins with bit
position 0, the other fields use successive bit allocations:
'Information Element = CPi {data field 1, data field 2,...}
or
{data field 1 = data type 1 size i
1
[0..i-1] = function 1
data field 2 = data type 2 size i
2
[i
1
..i
1
+i
2
-1] = function 2
etc.}
2.1.6 Sequence Elements
DNP V3.00 Data Object Library (Version 0.02)
2-3
Sequence data fields are information elements composed of different data fields.
Sequences of data fields are declared as compound data fields, however each field
begins bit allocation 0:
'Information Element = SQi {data field 1, data field 2, ...}
or
{data field 1 size i
1
[1..i
1
] = function 1
data field 2 size i
2
[1..i
2
] = function 2
etc.}
DNP Users Group
2-4
DNP V3.00 Data Object Library (Version 0.02)
3-1
3. GENERAL RULES
This section will describe the general rules that apply to the DNP data objects. These
rules apply to all the current objects (except where noted) and all future objects.
3.1 LIBRARY STRUCTURE
The DNP application layer has an 8-bit object and an 8-bit variation field used to
denote the data object. The 8-bit object denotes a general type of data such as static
binary data. The variation of this object gives a different representation of the same
data point, such as the size of the object or whether or not the object has flag
information.
There are generally four different categories of data within each data type, as outlined
below:
Static Objects: The objects which reflect the current value of the field point
or software point.
Event Objects: The objects which are generated as a result of data changing
or some other stimulant. These are historical objects reflecting the value of
data at some time in the past.
Frozen Static Objects: The objects which reflect the current frozen value of
the field point or software point. Data is frozen as a result of the data freeze
requests. (Refer to the DNP V3.00 Application Layer, P009-0PD.APP.)
Frozen Event Objects: The objects which are generated as a result of frozen
data changing or some other stimulant. These are historical objects reflecting
the value of changed data at some time in the past.
Each category should be represented with a different object. All the classes of a
different data type should also be organized in the same range of object numbers. So
far, the following groupings have been created for all traditional SCADA/DA data
types and several non-traditional data types. These are as follows:
3.1.1 Binary Input
The binary input grouping contains all objects that represent binary (status or
Boolean) input information. The objects 1 - 9 are reserved for these objects.
DNP Users Group
3-2
3.1.2 Binary Output
The binary output grouping contains all objects that represent binary output or relay
control information. The objects 10 - 19 are reserved for these objects.
3.1.3 Counters
The counter grouping contains all objects that represent counters. The objects 20 - 29
are reserved for these objects.
3.1.4 Analog Input
The analog input grouping contains all objects that represent analog input information.
The objects 30 - 39 are reserved for these objects.
3.1.5 Analog Output
The analog output grouping contains all objects that represent analog output
information. The objects 40 - 49 are reserved for these objects.
3.1.6 Time
The time grouping contains all objects that represent time in absolute or relative form
in any resolution. The objects 50 - 59 are reserved for these objects.
3.1.7 Class
The class grouping contains all objects that represent data classes or data priority. The
objects 60 - 69 are reserved for these objects.
3.1.8 Files
The files grouping contains all objects that represent files or a file system. The objects
70 - 79 are reserved for these objects.
3.1.9 Devices
The devices grouping contains all objects that represent device (rather than point)
information. The objects 80 - 89 are reserved for these objects.
3.1.10 Applications
The applications grouping contains all objects that represent software applications or
operating system processes. The objects 90 - 99 are reserved for these objects.
3.1.11 Alternate Numeric
The alternate numeric grouping contains all objects that represent alternate or custom
numeric representations. The objects 100 - 109 are reserved for these objects.
DNP V3.00 Data Object Library (Version 0.02)
3-3
3.1.12 Future Expansion
The future expansion grouping is reserved for future or custom expansion of the DNP
protocol. The objects 110 - 254 are reserved for these objects.
3.1.13 Reserved
The objects 0 and 255 are permanently reserved and should not be used to denote any
DNP object. Applications which use these object numbers may not be compatible
with future versions of DNP.
DNP Users Group
3-4
3.2 POINT NUMBERING
The following rules apply to the interpretation of the object point number (DNP
Application Layer range field) in conjunction with objects and variations.
Rule 1:
Point i of object x, variation y represents the same physical point as point i, object x,
variation z, where y and z are variations of object x.
For example: A device has 16 running counters (object 20) numbered 0 to 15. Point 5
can be asked for in four different ways:
Obj 20, var 1, range 5 returns the running value of counter 5 in 32-bit format.
Obj 20, var 2, range 5 reports the same information, only in 16-bit format.
Obj 20, var 3, range 5 returns the number of counts accumulated in counter 5 since
the last time it was reported, again in 32-bit format.
Obj 20, var 4, range 5 reports the same information, only in 16-bit format.
RULE 2:
Point i of object x can be reported in one of many variations (i.e. it can be a 16-bit or
32-bit counter). When reported as an event, point i can be returned in either one of the
variations for that object. The exact variation to return is an application specific
decision, however an application should report only ONE event object in any one
variation for each event. When responding to a request for Class data or variation 0 of
object x, there should be only one variation of the object returned.
RULE 3:
Point i within different objects of the same grouping are not necessarily unique,
however, within each of the binary input, binary output, analog input, analog output
and counter groupings the following rules apply.
(a) Point i in the static object is the same physical point as point i in the
event object.
(b) Point i in the frozen object is the same physical point as point i in the
frozen event object.
For example: For binary inputs, point i in obj 1 var 1 and 2 is the same point as point
i in obj 2 var 1, 2 and 3 (static and event correlation). For counters, point i in obj 20
var 1, 2, 3, and 4 is the same point as point i in obj 22 var 1, 2, 3, 4, 5, 6, 7, and 8
(static and event correlation). In addition, point i in obj 21 var 1, 2, 3, 4, 5, 6, 7, and 8
is the same point as point i in obj 23 var 1, 2, 3, 4, 5, 6, 7, and 8 (frozen and frozen
static correlation).
NOTE: Point i in obj 20 and point i in obj 21 are NOT necessarily the same
point. There is no direct correlation between frozen and non-frozen
objects.
DNP V3.00 Data Object Library (Version 0.02)
3-5
Rule 4:
Object groupings which can by definition or due to device limitation have only one
point per object or where the point number is not needed should use the range number
0 or quantity equals to 1, when using a message format that requires a point number.
DNP Users Group
3-6
DNP V3.00 Data Object Library (Version 0.02)
4-1
4. BINARY INPUT OBJECT
DEFINITIONS
This section defines the binary input data objects using the rules established in section
2. DECLARATION RULES FOR INFORMATION ELEMENTS.
4.1 SINGLE-BIT BINARY INPUT
Data Object 01 - Variation: 01 Type: Static
Description:
The single-bit binary input object is used to represent the state of a digital input point
(hardware or software).
Object Coding:
0
BS1 [0..0]
State = BS1 [0] <0,1 BIN>
Narrative:
This single-bit binary input representation is used to transmit binary input states in a
packed format. Transmission of the data object is always performed in complete octets
with unoccupied bit positions set to zero. The following example illustrates the
packing of n of these data objects.
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
0 0 0 n n-1 n-2 n-3 n-4
NOTE: This variation contains no point status information. For example, on-
line, restart, etc. bits which are part of the binary input with status
variation, are not part of this variation. The use of the single-bit binary
input variation implies that the point is on-line and all other status bits
are clear. (i.e. restart, communication lost, etc. bits are cleared).
DNP Users Group
4-2
4.2 BINARY INPUT WITH STATUS
Data Object 01 - Variation: 02 Type: Static
Description:
The binary input with status object is used to represent the state of a digital input
point (hardware or software), and also indicates the status of the point as follows:
The on-line bit indicates that the binary input point has been read successfully.
If this field is set to off-line, the state of the digital point may not be correct.
The restart bit indicates that the field device that originated the data object is
currently restarting. This device may be the device reporting this data object.
The communication lost bit indicates that the device reporting this data object
has lost communication with the originator of the data object.
The remote forced data bit indicates that the state of the binary input has been
forced to its current state at a device other than the end device.
The local forced data bit indicates that the state of the binary input has been
forced to its current state at the end device.
The chatter filter bit indicates that the binary input point has been filtered in
order to remove unneeded transitions in the state of the point.
The state bit indicates the current state of the binary input point.
Object Coding:
7 6 5 4 3 2 1 0
BS8 [0..7]
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Chatter filter = BS1 [5] <0, normal; 1, filter on>
Reserved = BS1 [6] <0>
State = BS1 [7] <0, 1 BIN>
DNP V3.00 Data Object Library (Version 0.02)
4-3
4.3 BINARY INPUT CHANGE WITHOUT TIME
Data Object 02 - Variation: 01 Type: Event
Description:
The binary input change without time object is used to represent the changed state of a
digital input point (hardware or software) and also indicates the status of the point as
follows:
The on-line bit indicates that the binary input point has been read successfully.
If this field is set to off-line, the state of the digital point may not be correct.
The restart bit indicates that the field device that originated the data object has
been re-started. This device may be the device reporting this data object.
The communication lost bit indicates that the device reporting this data object
has lost communication with the originator of the data object.
The remote forced data bit indicates that the state of the binary input has been
forced to its current state at the originating device.
The local forced data bit indicates that the state of the binary input has been
forced to its current state at the device reporting this data object.
The chatter filter bit indicates that the binary input point has been filtered in
order to remove unneeded transitions in the state of the point.
The state bit indicates the current changed state of the binary input point.
DNP Users Group
4-4
Object Coding:
7 6 5 4 3 2 1 0
BS8 [0..7]
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Chatter filter = BS1 [5] <0, normal; 1, filter on>
Reserved = BS1 [6] <0>
State = BS1 [7] <0,1 BIN>
Narrative:
This object is only reported when the current value is different than the last recorded
or measured value. If the chatter filter is on, this object may only be reported when the
new state has remained constant for a certain period of time.
DNP V3.00 Data Object Library (Version 0.02)
4-5
4.4 BINARY INPUT CHANGE WITH TIME
Data Object 02 - Variation: 02 Type: Event
Description:
The binary input change with time object is used to represent the changed state of a
digital input point (hardware or software) and the time at which the state changed. It
also indicates the status of the point as follows:
The on-line bit indicates that the binary input point has been read successfully.
If this field is set to off-line, the state of the digital point may not be correct.
The restart bit indicates that the field device that originated the data object has
been re-started. This device may be the device reporting this data object.
The communication lost bit indicates that the device reporting this data object
has lost communication with the originator of the data object.
The remote forced data bit indicates that the state of the binary input has been
forced to its current state at the originating device.
The local forced data bit indicates that the state of the binary input has been
forced to its current state at the device reporting this data object.
The chatter filter bit indicates that the binary input point has been filtered in
order to remove unneeded transitions in the state of the point.
The state bit indicates the current changed state of the binary input point.
The Time of Occurrence indicates the absolute time at which the telecontrol device
detected the change of state. The accuracy of this time will depend on the accuracy of
the individual device.
DNP Users Group
4-6
Object Coding:
FLAG
7 6 5 4 3 2 1 0
TIME OF OCCURRENCE
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
23 22 21 20 19 18 17 16
31 30 29 28 27 26 25 24
39 38 37 36 35 34 33 32
47 46 45 44 43 42 41 40
SQ2 {FLAG = BS8 [0..7]
Time of Occurrence = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={ BS8 [0..7]
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Chatter filter = BS1 [5] <0, normal; 1, filter on>
Reserved = BS1 [6] <0>
State = BS1 [7] <0,1 BIN>
}
Narrative:
Time of occurrence is recorded as milliseconds since midnight, January 1st, 1970, at
zero hours, zero minutes, seconds, and milliseconds.
DNP V3.00 Data Object Library (Version 0.02)
4-7
4.5 BINARY INPUT CHANGE WITH RELATIVE TIME
Data Object 02 - Variation: 03 Type: Event
Description:
The binary input change with relative time object is used to represent the changed
state of a digital input point (hardware or software), and the relative time at which the
state changed. It also indicates the status of the point as follows:
The on-line bit indicates that the binary input point has been read successfully.
If this field is set to off-line, the state of the digital point may not be correct.
The restart bit indicates that the field device that originated the data object has
been re-started. This device may be the device reporting this data object.
The communication lost bit indicates that the device reporting this data object
has lost communication with the originator of the data object.
The remote forced data bit indicates that the state of the binary input has been
forced to its current state at the originating device.
The local forced data bit indicates that the state of the binary input has been
forced to its current state at the device reporting this data object.
The chatter filter bit indicates that the binary input point has been filtered in
order to remove unneeded transitions in the state of the point.
The state bit indicates the current changed state of the binary input point.
The MSEC field indicates the relative time at which the telecontrol device detected the
change of state. The accuracy of this time will depend on the accuracy of the
individual device.
DNP Users Group
4-8
Object Coding:
FLAG
7 6 5 4 3 2 1 0
MSEC
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
SQ2 {FLAG = BS8 [0..7]
MSEC = UI16 [0..15] <0..2
16
-1>
}
FLAG ={ BS8 [0..7]
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Chatter filter = BS1 [5] <0, normal; 1, filter on>
Reserved = BS1 [6] <0>
State = BS1 [7] <0,1 BIN>
}
Narrative:
This object MUST be preceded by an absolute time object (common time object or
CTO) or an unsynchronized CTO in the DNP Application Layer message. The CTO is
used as an absolute time base for all following binary input change with relative time
objects. The relative time in each binary input object is added to the CTO absolute
time to give the absolute time at which the binary input change was detected by the
device.
DNP V3.00 Data Object Library (Version 0.02)
4-9
DNP V3.00 Data Object Library (Version 0.02)
5-1
5. BINARY OUTPUT OBJECT
DEFINITIONS
This section defines the binary output data objects using the rules established in
section 2. DECLARATION RULES FOR INFORMATION ELEMENTS.
5.1 BINARY OUTPUT
Data Object 10 - Variation: 01 Type: Static
Description:
The binary output object is used to control a digital output point (hardware or
software). The state bit indicates the desired logic state of the digital output point.
Object Coding:
0
BS1 [0..0]
State = BS1 [0] <0,1 BIN>
Narrative:
Transmission of the data object is always pre-formed in complete octets, with
unoccupied bit positions set to zero. The following example illustrates the packing of
n of these data objects:
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
0 0 0 n n-1 n-2 n-3 n-4
DNP Users Group
5-2
5.2 BINARY OUTPUT STATUS
Data Object 10 - Variation: 02 Type: Static
Description:
The binary output status object is used to indicate the current state of a controlled
digital point and the status of that point as follows:
The on-line bit indicates that the device controlling the binary output point is
operating correctly. A binary output command to this point should work
correctly. If this field is set to off-line, a binary output command to this point
would be unsuccessful.
The restart bit indicates that the field device that originated the data object has
been re-started. This device may be the device reporting this data object.
The communication lost bit indicates that the digital output point could not be
controlled because communications have been lost with the controlled device.
The remote forced data bit indicates that the digital output point has been
controlled at the originating device and the current state is in the state bit.
The local forced data bit indicates that the digital output point has been
controlled at this device and the current state is in the state bit.
The state bit indicates the current state of the binary output point.
Object Coding:
7 6 5 4 3 2 1 0
BS8 [0..7]
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Reserved = BS1 [5] <0>
Reserved = BS1 [6] <0>
State = BS1 [7] <0,1 BIN>
DNP V3.00 Data Object Library (Version 0.02)
5-3
5.3 CONTROL RELAY OUTPUT BLOCK
Data Object 12 - Variation: 01 Type: Static
Description:
The control relay output Block information object contains digital output control
parameters. These parameters define the type and duration of the digital output.
The control code field indicates the control function to perform. The
applicability of this code will depend on the type of hardware used in the end
device.
The count field indicates the number of times that the control operation should
be performed in succession.
The on-time field specifies the amount of time the digital output is to be turned
on (may not apply to all control types).
The off-time field specifies the amount of time the digital output is to be turned
off (may not apply to all control types).
Object Coding:
Control Code
7 6 5 4 3 2 1 0
Count
7 6 5 4 3 2 1 0
On Time
31 0
Off Time
31 0
Status
7 6 5 4 3 2 1 0
SQ4 {Control code = BS8 [0..7]
Count = UI8 [0..7] <0..255>
On-time = UI32 [0..31] <0..2
32
-1, ms>
Off-time = UI32 [0..31] <0..2
32
-1, ms>
Status = UI7 [0..6] <0..127>
Reserved = [0..0] <0..1>
}
DNP Users Group
5-4
Control code ={
Code = BS4 [0..3] <0..15>
Queue = BS1 [4] <0, normal; 1, requeued>
Clear = BS1 [5] <0, normal; 1, clear>
Trip/Close = BS2 [6..7] <00, NUL; 01, Close; 10, Trip>
}
Narrative:
Trip/Close: This field determines which control relay to activate in a system where
a trip and close relay pair is used to energize and de-energize the field
points. The NUL value in this field can be used to activate the field
point select relay only without activating the trip or close relays. In a
system without field point select relays, the NUL value would not
perform any control operation. In a system without trip/close relays,
this field should always be NUL to indicate a normal digital control
operation where the exact control point is inherently known. This field
does not support having both the trip and close attributes
simultaneously, as this is an illegal operation for the system.
Count: The Count field determines how many times the control is executed. If
the count is 0, do not execute the control. When the count reaches 0,
the control is complete.
Code: The control block can be used with devices which support control
queuing on a point per point basis or devices which have other control
mechanisms. In the former, any control command should be queued for
the particular point in question. In the latter, each control is performed
until completion before the next control is accepted for that point.
Queue: If the control code is NUL then no control operation is queued, and the
queue is cleared of all controls including the presently running control
if the clear attribute is set.
When the control function is executed and completed, it is removed
from the queue. If the control block for that operation had the queue
attribute set, the control operation is re-queued (to the back of the
queue) for that point.
Clear: If the control operation has the clear attribute set, all control operations
are removed from the queue including the presently running control
and this control operation is performed.
The meaning of the code field and the operation to perform is determined by the
following:
0: NUL operation. No operation specified. Only the R attribute is
processed.
DNP V3.00 Data Object Library (Version 0.02)
5-5
1: Pulse On - The point(s) is turned on for the specified on-time, turned
off for the specified off-time and left in the off state.
2: Pulse Off - The point(s) is turned off for the specified off-time, then
turned on for the specified on-time and left in the on state.
3: Latch On - This latches the point(s) on.
4: Latch Off - This latches the point(s) off.
5 - 15: Undefined.
Queue: Place operation at the back of the control queue when complete.
Clear: Cancel currently running operation and remove queued operations on
affected points immediately before activating this new operation (if not
NUL).
The reserved bit of the control point after the operation can be
determined if the control output is on.
The success or failure of the requested control operation is returned in
the status field. The meaning of this field is determined as follows:
0: Request accepted, initiated, or queued.
1: Request not accepted as the operate message was received after
the arm timer timed out. The arm timer was started when the
select operation for the same point was received.
2: No previous matching select message (i.e. an operate message
was sent to activate a control point that was not previously
armed with the select message.
3: Request not accepted as there were formatting errors in the
control request (either select, operate, or direct operate).
4: Control operation not supported for this point.
5: Request not accepted, as the control queue is full or the point is
already active.
6: Request not accepted because of control hardware problems.
7 - 127:Undefined.
DNP Users Group
5-6
5.4 PATTERN CONTROL BLOCK
Data Object 12 - Variation: 02 Type: Static
Description:
The pattern control block (PCB) object contains digital output control parameters for
pattern type controls. These parameters define the type and duration of the digital
output for each of the affected points. The PCB object defines all the parameters for
the subsequent pattern mask objects which follow this object in the message. These
parameters contained in the PCB influence all the pattern mask object(s) that
immediately follow the PCB object, until the next PCB in the message.
The combination of this object and the pattern mask objects that follow will specify a
number (0 or more) of control operations to perform (i.e. the same operation on
different points). All these controls must be performed in parallel. The meaning of all
fields, attributes, and parameters are identical to the control relay output block except
that the queuing attributes are not valid. This is, the pattern control is not meant to be
re-queued.
Object Coding:
Control Code
7 6 5 4 3 2 1 0
Count
7 6 5 4 3 2 1 0
On Time
31 0
Off Time
31 0
Status
7 6 5 4 3 2 1 0
DNP V3.00 Data Object Library (Version 0.02)
5-7
5.5 PATTERN MASK
Data Object 12 - Variation: 03 Type: Static
Description:
The pattern mask object is used to select from a range of possible control points that
have to be executed in parallel.
This object is used in conjunction with the PCB object to specify both the control points
to operate and the parameters that determine the control operation.
If the mask bit is set to active, then the parameters specified in the preceding PCB are
applied to a specified point for each pattern mask object and a control operation is
generated for the point.
Object Coding:
M
BS1 [0..0]
Mask = BS1 [0] <0, inactive; 1, active>
Narrative:
This single-bit pattern mask is typically sent in groups. Transmission of the data object
is always performed in complete octets with unoccupied bit positions set to zero. The
following example illustrates the packing of n of these data objects.
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
0 0 0 n n-1 n-2 n-3 n-4
DNP V3.00 Data Object Library (Version 0.02)
6-1
6. COUNTER OBJECT DEFINITIONS
This section defines the counter data objects using the rules established in section 2..
DECLARATION RULES FOR INFORMATION ELEMENTS.
6.1 32-BIT BINARY COUNTER
Data Object 20 - Variation: 01 Type: Static
Description:
The 32-bit binary counter represents an accumulated value. This can be accumulated
pulses or transitions from a hardware or software point.
The value field shows the current value of the counter at the time of reporting or last
reported value from the originating device. This value increments indefinitely until a
counter clear operation is performed in which case the value is reset to 0.
The flag field has the same meaning as in previous objects, with the following inclusion:
When set, the roll-over bit indicates that the accumulated value has exceeded the last
reported recordable value (2
32
-1). The counter value has been reset to 0 upon the roll-
over and counting has resumed as normal. This bit is cleared when the counter value
(plus the roll-over state) is reported.
DNP Users Group
6-2
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Value
31 0
SQ2 {FLAG = BS8 [0..7]
Value = UI32 [0..31] <0..2
32
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
6-3
6.2 16-BIT BINARY COUNTER
Data Object 20 - Variation: 02 Type: Static
Description:
The 16-bit binary counter represents an accumulated value. This can be accumulated
pulses or transitions from a hardware or software point.
The value field shows the current value of the counter at the time of reporting or last
reported value from the originating device. This value increments indefinitely until a
counter clear operation is performed in which case the value is reset to 0.
The flag field has the same meaning as in previous objects, with the following inclusion:
When set, the roll-over bit indicates that the accumulated value has exceeded the
maximum possible recordable value (2
16
-1). The counter value has been reset to 0
upon roll-over, and counting has resumed as normal. This bit is cleared when the
counter value (plus the roll-over state) is reported.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Value
15 0
SQ2 {FLAG = BS8 [0..7]
Value = UI16 [0..15] <0..2
16
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP Users Group
6-4
6.3 32-BIT DELTA COUNTER
Data Object 20 - Variation: 03 Type: Static
Description:
The 32-bit delta counter represents a value that has accumulated since the last value was
reported. This can be accumulated pulses or transitions from a hardware or software
point.
The value field shows the current value of the counter at the time of reporting or last
reported value from the originating device. This value increments until it is reported at
which point it is reset to 0.
The flag field has the same meaning as in previous objects, with the following inclusion:
When set, the roll-over bit indicates that the accumulated value has exceeded the
maximum possible recordable value (2
32
-1). The counter value has been reset to 0
upon roll-over, and counting has resumed as normal. This bit is cleared when the
counter value (plus the roll-over state) is reported.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Value
31 0
SQ2 {FLAG = BS8 [0..7]
Value = UI32 [0..31] <0..2
32
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
6-5
6.4 16-BIT DELTA COUNTER
Data Object 20 - Variation: 04 Type: Static
Description:
The 16-bit delta counter represents a value that has accumulated since the last value was
reported. This can be accumulated pulses or transitions from a hardware or software
point.
The value field shows the current value of the counter at the time of reporting or last
reported value from the originating device. This value increments until it is reported at
which point it is reset to 0.
The flag field has the same meaning as in previous objects, with the following inclusion:
When set, the roll-over bit indicates that the accumulated value has exceeded the
maximum possible recordable value (2
16
-1). The counter value has been reset to 0
upon the roll-over and counting has resumed as normal. This bit is cleared when the
counter value (plus the roll-over state) is reported.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Value
15 0
SQ2 {FLAG = BS8 [0..7]
Value = UI16 [0..15] <0..2
16
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP Users Group
6-6
6.5 32-BIT COUNTER WITHOUT FLAG
Data Object 20 - Variation: 05 Type: Static
Description:
The 32-bit binary counter represents an accumulated value. This can be accumulated
pulses or transitions from a hardware or software point.
The value field shows the current value of the counter at the time of reporting or last
reported value from the originating device. This value increments indefinitely until a
counter clear operation is performed in which case the value is reset to 0.
Object Coding:
Value
31 0
SQ2 {Value = UI32 [0..31] <0..2
32
-1>
}
NOTE: The use of this variation implies that the input point is on-line and that
all other flag bits are normal (i.e. this variation implies that flag = 1).
DNP V3.00 Data Object Library (Version 0.02)
6-7
6.6 16-BIT COUNTER WITHOUT FLAG
Data Object 20 - Variation: 06 Type: Static
Description:
The 16-bit binary counter represents an accumulated value. This can be accumulated
pulses or transitions from a hardware or software point.
The value field shows the current value of the counter at the time of reporting or last
reported value from the originating device. This value increments indefinitely until a
counter clear operation is performed in which case the value is reset to 0.
Object Coding:
Value
15 0
SQ2 {Value = UI16 [0..15] <0..2
16
-1>
}
NOTE: The use of this variation implies that the input point is on-line and that
all other flag bits are normal (i.e. this variation implies that flag = 1).
DNP Users Group
6-8
6.7 32-BIT DELTA COUNTER WITHOUT FLAG
Data Object 20 - Variation: 07 Type: Static
Description:
The 32-bit delta counter represents a value that has accumulated since the last value was
reported. This can be accumulated pulses or transitions from a hardware or software
point.
The value field shows the current value of the counter at the time of reporting or last
reported value from the originating device. This value increments until it is reported at
which point it is reset to 0.
Object Coding:
Value
31 0
SQ2 {Value = UI32 [0..31] <0..2
32
-1>
}
NOTE: The use of this variation implies that the input point is on-line and that
all other flag bits are normal (i.e. this variation implies that flag = 1).
DNP V3.00 Data Object Library (Version 0.02)
6-9
6.8 16-BIT DELTA COUNTER WITHOUT FLAG
Data Object 20 - Variation: 08 Type: Static
Description:
The 16-bit delta counter represents a value that has accumulated since the last value was
reported. This can be accumulated pulses or transitions from a hardware or software
point.
The value field shows the current value of the counter at the time of reporting or last
reported value from the originating device. This value increments until it is reported at
which point it is reset to 0.
Object Coding:
Value
15 0
SQ2 {Value = UI16 [0..15] <0..2
16
-1>
}
NOTE: The use of this variation implies that the input point is on-line and that
all other flag bits are normal (i.e. this variation implies that flag = 1).
DNP Users Group
6-10
6.9 32-BIT FROZEN COUNTER
Data Object 21 - Variation: 01 Type: Frozen Static
Description:
The 32-bit frozen counter is a compound information object which contains information
about a counter which was previously frozen.
The frozen value shows the value of the counter when the last counter freeze was
performed at the originating device.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen Value
31 0
SQ2 {FLAG = BS8 [0..7]
Frozen Value = UI32 [0..31] <0..2
32
-1>
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
6-11
6.10 16-BIT FROZEN COUNTER
Data Object 21 - Variation: 02 Type: Frozen Static
Description:
The 16-bit frozen counter is a compound information object that contains information
about a counter that was previously frozen. The counter accumulates pulses or
transitions from a hardware or software point.
The frozen value shows the value of the counter when the last counter freeze was
performed at the originating device.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen Value
15 0
SQ2 {FLAG = BS8 [0..7]
Frozen Value = UI16 [0..15] <0..2
16
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP Users Group
6-12
6.11 32-BIT FROZEN DELTA COUNTER
Data Object 21 - Variation: 03 Type: Frozen Static
Description:
The 32-bit frozen delta counter represents a frozen value that has accumulated since the
last value was reported. This can be accumulated pulses or transitions from a hardware
or software point.
The frozen value shows the value of the counter when the last counter freeze was
performed at the originating device.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen Value
31 0
SQ2 {FLAG = BS8 [0..7]
Frozen Value = UI32 [0..31] <0..2
32
-1>
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
6-13
6.12 16-BIT FROZEN DELTA COUNTER
Data Object 21 - Variation: 04 Type: Frozen Static
Description:
The 16-bit frozen delta counter represents a frozen value that has accumulated since the
last value was reported. This can be accumulated pulses or transitions from a hardware
or software point.
The frozen value shows the value of the counter when the last counter freeze was
performed at the originating device.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen Value
15 0
SQ2 {FLAG = BS8 [0..7]
Frozen Value = UI16 [0..15] <0..2
16
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP Users Group
6-14
6.13 32-BIT FROZEN COUNTER WITH TIME OF FREEZE
Data Object 21 - Variation: 05 Type: Frozen Static
Description:
The 32-bit frozen counter with time of freeze is a compound information object which
contains information about a counter which was previously frozen. The counter
accumulates pulses or transitions from a hardware or software point.
The frozen value shows the value of the counter when the time was time of freeze.
The time of freeze field contains a time that this object was frozen. This time
corresponds to the frozen value so that the current value of this object at time of freeze is
frozen value.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen Value
31 0
Time of Freeze
47 0
SQ4 {FLAG = BS8 [0..7]
Frozen value = UI32 [0..31] <0..2
32
-1>
Time of Freeze = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1[4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
Narrative:
Time of freeze is recorded as milliseconds since midnight, January 1st, 1970, at zero
hours, zero minutes, seconds, and milliseconds.
DNP V3.00 Data Object Library (Version 0.02)
6-15
6.14 16-BIT FROZEN COUNTER WITH TIME OF FREEZE
Data Object 21 - Variation: 06 Type: Frozen Static
Description:
The 16-bit frozen counter with time of freeze is a compound information object which
contains information about a counter which was previously frozen. The counter
accumulates pulses or transitions from a hardware or software point.
The frozen value shows the value of the counter when the time was time of freeze.
The time of freeze field contains a time that this object was frozen. This time
corresponds to the frozen value so that the current value of this object at time of freeze is
frozen value.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen Value
15 0
Time of Freeze
47 0
SQ4 {FLAG = BS8 [0..7]
Frozen value = UI16 [0..15] <0..2
16
-1>
Time of Freeze = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1[4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
Narrative:
Time of freeze is recorded as milliseconds since midnight, January 1st, 1970, at zero
hours, zero minutes, seconds, and milliseconds.
DNP Users Group
6-16
6.15 32-BIT FROZEN DELTA COUNTER WITH TIME OF
FREEZE
Data Object 21 - Variation: 07 Type: Frozen Static
Description:
The 32-bit frozen delta counter with time of freeze represents a frozen value that has
accumulated since the last value was reported. This can be accumulated pulses or
transitions from a hardware or software point.
The frozen value shows the value of the counter when the time was time of freeze.
The time of freeze field contains a time that this object was frozen. This time
corresponds to the frozen value so that the current value of this object at time of freeze is
frozen value.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen value
31 0
Time of Freeze
47 0
SQ4 {FLAG = BS8 [0..7]
Frozen value = UI32 [0..31] <0..2
32
-1>
Time of Freeze = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
6-17
Narrative:
Time of freeze is recorded as milliseconds since midnight, January 1st, 1970, at zero
hours, zero minutes, seconds, and milliseconds.
DNP Users Group
6-18
6.16 16-BIT FROZEN DELTA COUNTER WITH TIME OF
FREEZE
Data Object 21 - Variation: 08 Type: Frozen Static
Description:
The 16-bit frozen delta counter with time of freeze represents a frozen value that has
accumulated since the last value was reported. This can be accumulated pulses or
transitions from a hardware or software point.
The frozen value shows the value of the counter when the time was time of freeze.
The time of freeze field contains a time that this object was frozen. This time
corresponds to the frozen value so that the current value of this object at time of freeze is
frozen value.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen value
15 0
Time of Freeze
47 0
SQ4 {FLAG = BS8 [0..7]
Frozen value = UI16 [0..15] <0..2
16
-1>
Time of Freeze = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
6-19
Narrative:
Time of freeze is recorded as milliseconds since midnight, January 1st, 1970, at zero
hours, zero minutes, seconds, and milliseconds.
DNP Users Group
6-20
6.17 32-BIT FROZEN COUNTER WITHOUT FLAG
Data Object 21 - Variation: 09 Type: Frozen Static
Description:
The 32-bit frozen counter is a compound information object which contains information
about a counter which was previously frozen.
The frozen value shows the value of the counter when the last counter freeze was
performed at the originating device.
Object Coding:
Frozen Value
31 0
SQ2 {Frozen Value = UI32 [0..31] <0..2
32
-1>
}
NOTE: The use of this variation implies that the input point is on-line and that
all other flag bits are normal (i.e. this variation implies that flag = 1).
DNP V3.00 Data Object Library (Version 0.02)
6-21
6.18 16-BIT FROZEN COUNTER WITHOUT FLAG
Data Object 21 - Variation: 10 Type: Frozen Static
Description:
The 16-bit frozen counter is a compound information object which contains information
about a counter which was previously frozen. The counter accumulates pulses or
transitions from a hardware or software point.
The frozen value shows the value of the counter when the last counter freeze was
performed at the originating device.
Object Coding:
Frozen Value
15 0
SQ2 {Frozen Value = UI16 [0..15] <0..2
16
-1>
}
NOTE: The use of this variation implies that the input point is on-line and that
all other flag bits are normal (i.e. this variation implies that flag = 1).
DNP Users Group
6-22
6.19 32-BIT FROZEN DELTA COUNTER WITHOUT FLAG
Data Object 21 - Variation: 11 Type: Frozen Static
Description:
The 32-bit frozen delta counter represents a frozen value that has accumulated since the
last value was reported. This can be accumulated pulses or transitions from a hardware
or software point.
The frozen value shows the value of the counter when the last counter freeze was
performed at the originating device.
Object Coding:
Frozen Value
31 0
SQ2 {Frozen Value = UI32 [0..31] <0..2
32
-1>
}
NOTE: The use of this variation implies that the input point is on-line and that
all other flag bits are normal (i.e. this variation implies that flag = 1).
DNP V3.00 Data Object Library (Version 0.02)
6-23
6.20 16-BIT FROZEN DELTA COUNTER WITHOUT FLAG
Data Object 21 - Variation: 12 Type: Frozen Static
Description:
The 16-bit frozen delta counter represents a frozen value that has accumulated since the
last value was reported. This can be accumulated pulses or transitions from a hardware
or software point.
The frozen value shows the value of the counter when the last counter freeze was
performed at the originating device.
Object Coding:
Frozen Value
15 0
SQ2 {Frozen Value = UI16 [0..15] <0..2
16
-1>
}
NOTE: The use of this variation implies that the input point is on-line and that
all other flag bits are normal (i.e. this variation implies that flag = 1).
DNP Users Group
6-24
6.21 32-BIT COUNTER CHANGE EVENT WITHOUT TIME
Data Object 22 - Variation: 01 Type: Event
Description:
The 32-bit counter change event without time represents a counter value that, since last
reported, has exceeded a configured count. This can be accumulated pulses or transitions
from a hardware or software point.
The current value field shows the value of the counter which generated the event.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Current value
31 0
SQ4 {FLAG = BS8 [0..7]
Current value = UI32 [0..31] <0..2
32
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
6-25
6.22 16-BIT COUNTER CHANGE EVENT WITHOUT TIME
Data Object 22 - Variation: 02 Type: Event
Description:
The 16-bit counter change event without time represents a counter value that has
exceeded a configured deadband. This can be accumulated pulses or transitions from a
hardware or software point.
The current value field shows the value of the counter which generated the event.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Current value
15 0
SQ4 {FLAG = BS8 [0..7]
Current value = UI16 [0..15] <0..2
16
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP Users Group
6-26
6.23 32-BIT DELTA COUNTER CHANGE EVENT WITHOUT
TIME
Data Object 22 - Variation: 03 Type: Event
Description:
The 32-bit delta counter change event without time represents a delta counter value that
has exceeded a configured deadband. This can be accumulated pulses or transitions from
a hardware or software point.
The delta value field shows the change of the counter which generated the event.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Delta value
31 0
SQ4 {FLAG = BS8 [0..7]
Current value = UI32 [0..31] <0..2
32
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
6-27
6.24 16-BIT DELTA COUNTER CHANGE EVENT WITHOUT
TIME
Data Object 22 - Variation: 04 Type: Event
Description:
The 16-bit delta counter change event without time represents a delta counter value that
has exceeded a configured deadband. This can be accumulated pulses or transitions from
a hardware or software point.
The delta value field shows the change of the counter which generated the event.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Delta value
15 0
SQ4 {FLAG = BS8 [0..7]
Current value = UI32 [0..16] <0..2
16
-1>}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP Users Group
6-28
6.25 32-BIT COUNTER CHANGE EVENT WITH TIME
Data Object 22 - Variation: 05 Type: Event
Description:
The 32-bit counter change event with time represents a counter value that has exceeded
a configured deadband. This can be accumulated pulses or transitions from a hardware
or software point.
The value field shows the value of the counter which generated the event.
The Time field contains the time that processing generated the event.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Value
31 0
Time
47 0
SQ4 {FLAG = BS8 [0..7]
Value = UI32 [0..31] <0..2
32
-1>
Time = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
Narrative:
Time is recorded as milliseconds since midnight, January 1st, 1970, at zero hours, zero
minutes, seconds, and milliseconds.
DNP V3.00 Data Object Library (Version 0.02)
6-29
6.26 16-BIT COUNTER CHANGE EVENT WITH TIME
Data Object 22 - Variation: 06 Type: Event
Description:
The 16-bit counter change event with time represents a counter value that has exceeded
a configured deadband. This can be accumulated pulses or transitions from a hardware
or software point.
The value field shows the value of the counter which generated the event.
The time field contains the time that processing generated the event.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Value
15 0
Time
47 0
SQ4 {FLAG = BS8 [0..7]
Value = UI16 [0..15] <0..2
16
-1>
Time = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
Narrative:
Time is recorded as milliseconds since midnight, January 1st, 1970, at zero hours, zero
minutes, seconds, and milliseconds.
DNP Users Group
6-30
6.27 32-BIT DELTA COUNTER CHANGE EVENT WITH TIME
Data Object 22 - Variation: 07 Type: Event
Description:
The 32-bit delta counter change event with time represents a delta counter value that has
exceeded a configured deadband. This can be accumulated pulses or transitions from a
hardware or software point.
The value field shows the value of the change which generated the event.
The time contains the time that processing generated the event.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Value
31 0
Time
47 0
SQ4 {FLAG = BS8 [0..7]
Value = UI32 [0..31] <0..2
32
-1>
Time = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
Narrative:
Time is recorded as milliseconds since midnight, January 1st, 1970, at zero hours, zero
minutes, seconds, and milliseconds.
DNP V3.00 Data Object Library (Version 0.02)
6-31
6.28 16-BIT DELTA COUNTER CHANGE EVENT WITH TIME
Data Object 22 - Variation: 08 Type: Event
Description:
The 16-bit delta counter change event with time represents a delta counter value that has
exceeded a configured deadband. This can be accumulated pulses or transitions from a
hardware or software point.
The value field shows the value of the change which generated the event.
The time field contains the time that processing generated the event.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Value
15 0
Time
47 0
SQ4 {FLAG = BS8 [0..7]
Value = UI16 [0..15] <0..2
16
-1>
Time = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
Narrative:
Time is recorded as milliseconds since midnight, January 1st, 1970, at zero hours, zero
minutes, seconds, and milliseconds.
DNP Users Group
6-32
6.29 32-BIT COUNTER CHANGE EVENT WITHOUT TIME
Data Object 23 - Variation: 01 Type: Frozen Event
Description:
The 32-bit frozen counter event without time object represents a frozen counter value
that is reported as an event. This can be accumulated pulses or transitions from a
hardware or software point.
The frozen value field shows the value at the time of freezing.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen value
31 0
SQ4 {FLAG = BS8 [0..7]
Frozen value = UI32 [0..31] <0..2
32
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
6-33
6.30 16-BIT FROZEN COUNTER EVENT WITHOUT TIME
Data Object 23 - Variation: 02 Type: Frozen Event
Description:
The 16-bit frozen counter event without time represents a frozen counter value that is
reported as an event. This can be accumulated pulses or transitions from a hardware or
software point.
The frozen value field shows the value at the time of freezing.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen value
15 0
SQ4 {FLAG = BS8 [0..7]
Frozen value = UI16 [0..15] <0..2
16
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP Users Group
6-34
6.31 32-BIT FROZEN DELTA COUNTER EVENT WITHOUT
TIME
Data Object 23 - Variation: 03 Type: Frozen Event
Description:
The 32-bit frozen delta counter event without time represents a frozen delta counter
value that is reported as an event. This can be accumulated pulses or transitions from a
hardware or software point.
The frozen delta value field shows the change in counter value at the time of freezing.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen delta value
31 0
SQ4 {FLAG = BS8 [0..7]
Frozen delta value = UI32 [0..31] <0..2
32
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
6-35
6.32 16-BIT FROZEN DELTA COUNTER WITHOUT TIME
Data Object 23 - Variation: 04 Type: Frozen Event
Description:
The 16-bit frozen delta counter event without time represents a frozen delta counter
value that is reported as an event. This can be accumulated pulses or transitions from a
hardware or software point.
The frozen delta value field shows the change in counter value at the time of freezing.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen delta value
15 0
SQ4 {FLAG = BS8 [0..7]
Frozen delta value = UI16 [0..15] <0..2
16
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
DNP Users Group
6-36
6.33 32-BIT FROZEN COUNTER EVENT WITH TIME
Data Object 23 - Variation: 05 Type: Frozen Event
Description:
The 32-bit frozen counter event with time represents a frozen counter value that is
reported as an event. This can be accumulated pulses or transitions from a hardware or
software point.
The frozen value shows the value of the counter at time of freeze.
The time of freeze contains the time that the object was frozen.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen Value
31 0
Time of Freeze
47 0
SQ4 {FLAG = BS8 [0..7]
Frozen Value = UI32 [0..31] <0..2
32
-1>
Time of Freeze = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
Narrative:
Time is recorded as milliseconds since midnight, January 1st, 1970, at zero hours, zero
minutes, seconds, and milliseconds.
DNP V3.00 Data Object Library (Version 0.02)
6-37
6.34 16-BIT FROZEN COUNTER EVENT WITH TIME
Data Object 23 - Variation: 06 Type: Frozen Event
Description:
The 16-bit frozen counter event with time represents a frozen counter value that is
reported as an event. This can be accumulated pulses or transitions from a hardware or
software point.
The frozen value shows the value of the counter at time of freeze.
The time of freeze contains the time that the object was frozen.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen Value
15 0
Time of Freeze
47 0
SQ4 {FLAG = BS8 [0..7]
Frozen Value = UI16 [0..15] <0..2
16
-1>
Time of Freeze = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
Narrative:
Time is recorded as milliseconds since midnight, January 1st, 1970 at zero hours, zero
minutes, seconds and milliseconds.
DNP Users Group
6-38
6.35 32-BIT FROZEN DELTA COUNTER EVENT WITH TIME
Data Object 23 - Variation: 07 Type: Frozen Event
Description:
The 32-bit frozen delta counter event with time represents a frozen delta counter value
that is reported as an event. This can be accumulated pulses or transitions from a
hardware or software point.
The frozen value shows the change in the counter at time of freeze.
The time of freeze contains the time that the object was frozen.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen Value
31 0
Time of Freeze
47 0
SQ4 {FLAG = BS8 [0..7]
Frozen Value = UI32 [0..31] <0..2
32
-1>
Time of Freeze = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
Narrative:
Time is recorded as milliseconds since midnight, January 1st, 1970 at zero hours, zero
minutes, seconds and milliseconds.
DNP V3.00 Data Object Library (Version 0.02)
6-39
6.36 16-BIT FROZEN DELTA COUNTER EVENT WITH TIME
Data Object 23 - Variation: 08 Type: Frozen Event
Description:
The 16-bit frozen delta counter event with time represents a frozen delta counter value
that is reported as an event. This can be accumulated pulses or transitions from a
hardware or software point.
The frozen value shows the change in the counter at time of freeze.
The time of freeze contains the time that the object was frozen.
The flag field has the same meaning as in previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Frozen Value
15 0
Time of Freeze
47 0
SQ4 {FLAG = BS8 [0..7]
Frozen Value = UI16 [0..15] <0..2
16
-1>
Time of Freeze = UI48 [0..47] <2
48
-1 ms>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Roll-over = BS1 [4] <0, normal; 1, roll-over>
Roll-over = BS1 [5] <0, normal; 1, roll-over>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
Narrative:
Time is recorded as milliseconds since midnight, January 1st, 1970, at zero hours, zero
minutes, seconds, and milliseconds.
DNP V3.00 Data Object Library (Version 0.02)
7-1
7. ANALOG INPUT OBJECT
DEFINITIONS
This section defines the analog input data objects using the rules established in section 2.
DECLARATION RULES FOR INFORMATION ELEMENTS.
7.1 32-BIT ANALOG INPUT
Data Object 30 - Variation: 01 Type: Static
Description:
The 32-bit Analog Input is an information object used to represent a hardware or
software analog point. The 32-bit signed value could represent a digitized signal or
calculated value.
The Value field shows the current value of the analog input at the time of reporting or
the last reported value from the originating device.
The flag field has the same meaning as previous objects, with these additions:
The out of range field indicates that the digitized signal or calculation has exceeded
+2
31
-1 positively, or -2
31
negatively. The actual value will be +2
31
-1 or -2
31
if it is
over-range or under-range.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable and the resulting digitized value may not be correct.
DNP Users Group
7-2
Object Coding:
FLAG
7 0
Current value
31 0
SQ2 {FLAG = BS8 [0..7]
Current value = I32 [0..31] <2
31
-1..-2
31
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
7-3
7.2 16-BIT ANALOG INPUT
Data Object 30 - Variation: 02 Type: Static
Description:
The 16-bit analog input is an information object used to represent a hardware or
software analog point. The 16-bit signed value could represent a digitized signal or
calculated value.
The value field shows the current value of the analog input at the time of reporting, or
the last reported value from the originating device.
The flag field has the same meaning as previous objects, with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
15
-1 positively, or -2
15
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable and the resulting digitized value may not be correct.
Object Coding:
FLAG
7 0
Current value
15 0
SQ2 {FLAG = BS8 [0..7]
Current value = I16 [0..15] <2
15
-1..-2
15
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP Users Group
7-4
7.3 32-BIT ANALOG INPUT WITHOUT FLAG
Data Object 30 - Variation: 03 Type: Static
Description:
The 32-bit analog input is an information object used to represent a hardware or
software analog point. The 32-bit signed value could represent a digitized signal or
calculated value.
The value field shows the current value of the analog input at the time of reporting, or
the last reported value from the originating device.
Object Coding:
Current value
31 0
SQ2 {Current value = I32 [0..31] <2
31
-1..-2
31
>
}
NOTE: The use of this variation implies that the input point is on-line and that
all other flag bits are normal (i.e. this variation implies that flag = 1).
DNP V3.00 Data Object Library (Version 0.02)
7-5
7.4 16-BIT ANALOG INPUT WITHOUT FLAG
Data Object 30 - Variation: 04 Type: Static
Description:
The 16-bit analog input is an information object used to represent a hardware or
software analog point. The 16-bit signed value could represent a digitized signal or
calculated value.
The current value field shows the current value of the analog input at the time of
reporting, or the last reported value from the originating device.
Object Coding:
Current value
15 0
SQ2 {Current value = I16 [0..15] <2
15
-1..-2
15
>
}
NOTE: The use of this variation implies that the input point is on-line and that
all other flag bits are normal (i.e. this variation implies that flag = 1).
DNP Users Group
7-6
7.5 32-BIT FROZEN ANALOG INPUT
Data Object 31 - Variation: 01 Type: Frozen Static
Description:
The 32-bit frozen analog input is an information object used to represent a frozen
hardware or software analog point. The 32-bit signed value could represent a digitized
signal or calculated value.
The frozen value shows the value of the analog input at the time the last freeze
command was performed on this point.
The flag field has the same meaning as previous objects, with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
31
-1 positively, or -2
31
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable, and the resulting digitized value may not be correct.
Object Coding:
FLAG
7 0
Frozen value
31 0
SQ2 {FLAG = BS8 [0..7]
Current value = I32 [0..31] <2
31
-1..-2
31
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
7-7
7.6 16-BIT FROZEN ANALOG INPUT
Data Object 31 - Variation: 02 Type: Frozen Static
Description:
The 16-bit frozen analog input is an information object used to represent a frozen
hardware or software analog point. The 16-bit signed value could represent a digitized
signal or calculated value.
The frozen value shows the value of the analog input at the time the last freeze
command was performed on this point.
The flag field has the same meaning as previous objects, with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
15
-1 positively, or -2
15
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable, and the resulting digitized value may not be correct.
Object Coding:
FLAG
7 0
Frozen value
15 0
SQ2 {FLAG = BS8 [0..7]
Current value = I16 [0..15] <2
15
-1..-2
15
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP Users Group
7-8
7.7 32-BIT FROZEN ANALOG INPUT WITH TIME OF FREEZE
Data Object 31 - Variation: 03 Type: Frozen Static
Description:
The 32-bit frozen analog input with time of freeze is an information object used to
represent a frozen hardware or software analog point. The 32-bit signed value could
represent a digitized signal or calculated value.
The frozen value shows the value of the analog input at the time specified in time of
freeze.
The time of freeze field shows the time at which the frozen value was equal to the
current value of the analog input. These values are equated on reception of a freeze
analog command.
The flag field has the same meaning as previous objects, with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
31
-1 positively, or -2
31
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable and the resulting digitized value may not be correct.
DNP V3.00 Data Object Library (Version 0.02)
7-9
Object Coding:
FLAG
7 0
Frozen value
31 0
Time of Freeze
47 0
SQ2 {FLAG = BS8 [0..7]
Current value = I32 [0..31] <2
31
-1..-2
31
>
Time of Freeze = UI48[0..47] <0 .. 2
48
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP Users Group
7-10
7.8 16-BIT FROZEN ANALOG INPUT WITH TIME OF FREEZE
Data Object 31 - Variation: 04 Type: Frozen Static
Description:
The 16-bit frozen analog input with time of freeze is an information object used to
represent a frozen hardware or software analog point. The 16-bit signed value could
represent a digitized signal or calculated value.
The frozen value shows the value of the analog input at the time specified in time of
freeze.
The time of freeze field shows the time at which the frozen value was equal to the
current value of the analog input. These values are equated on reception of a freeze
analog command.
The flag field has the same meaning as previous objects, with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
15
-1 positively, or -2
15
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable, and the resulting digitized value may not be correct.
DNP V3.00 Data Object Library (Version 0.02)
7-11
Object Coding:
FLAG
7 0
Frozen value
15 0
Time of Freeze
47 0
SQ2 {FLAG = BS8 [0..7]
Time of freeze = UI48[0..47] <0 .. 2
48
-1>
Current value = I16 [0..15] <2
15
-1..-2
15
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP Users Group
7-12
7.9 32-BIT FROZEN ANALOG INPUT WITHOUT FLAG
Data Object 31 - Variation: 05 Type: Frozen Static
Description:
The 32-bit frozen analog input is an information object used to represent a frozen
hardware or software analog point. The 32-bit signed value could represent a digitized
signal or calculated value.
The frozen value shows the value of the analog input at the time the last freeze
command was performed on this point.
Object Coding:
Frozen value
31 0
SQ2 {Current value= I32 [0..31] <2
31
-1..-2
31
>
}
NOTE: The use of this variation implies that the input point is on-line and that
all other flag bits are normal (i.e. this variation implies that flag = 1).
DNP V3.00 Data Object Library (Version 0.02)
7-13
7.10 16-BIT FROZEN ANALOG INPUT WITHOUT FLAG
Data Object 31 - Variation: 06 Type: Frozen Static
Description:
The 16-bit frozen analog input is an information object used to represent a frozen
hardware or software analog point. The 16-bit signed value could represent a digitized
signal or calculated value.
The frozen value shows the value of the analog input at the time the last freeze
command was performed on this point.
Object Coding:
Frozen value
15 0
SQ2 {Current value= I16 [0..15] <2
15
-1..-2
15
>
}
DNP Users Group
7-14
7.11 32-BIT ANALOG CHANGE EVENT WITHOUT TIME
Data Object 32 - Variation: 01 Type: Event
Description:
The 32-bit analog change event without time is an information object used to
represent a changed hardware or software analog point. The 32-bit signed value could
represent a digitized signal or calculated value.
The current value field shows the current value of the analog input at the time of
reporting, or the last reported value from the originating device. This object will only
be reported if the current value and the last reported value differ by a configurable
deadband value. This filtering is commonly known as deadbanding.
The flag field has the same meaning as previous objects, with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
31
-1 positively, or -2
31
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable, and the resulting digitized value may not be correct.
Object Coding:
FLAG
7 0
Current value
31 0
SQ2 {FLAG = BS8 [0..7]
Current value = I32 [0..31] <2
31
-1..-2
31
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
7-15
7.12 16-BIT CHANGE EVENT WITHOUT TIME
Data Object 32 - Variation: 02 Type: Event
Description:
The 16-bit analog change event without time is an information object used to
represent a changed hardware or software analog point. The 16-bit signed value could
represent a digitized signal or calculated value.
The current value field shows the current value of the analog input at the time of
reporting, or the last reported value from the originating device. This object will only
be reported if the current value and the last reported value differ by a configurable
deadband value. This filtering is commonly known as deadbanding.
The flag field has the same meaning as previous objects, with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
15
-1 positively, or -2
15
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable, and the resulting digitized value may not be correct.
Object Coding:
FLAG
7 0
Current value
15 0
SQ2 {FLAG = BS8 [0..7]
Current value = I16 [0..15] <2
15
-1..-2
15
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP Users Group
7-16
7.13 32-BIT ANALOG CHANGE EVENT WITH TIME
Data Object 32 - Variation: 03 Type: Event
Description:
The 32-bit analog change event with time is an information object used to represent a
changed hardware or software analog point. The 32-bit signed value could represent a
digitized signal or calculated value.
The current value shows the value of the analog input at the time specified in time.
The time field shows the time at which the processing caused the event.
The flag field has the same meaning as previous objects, with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
31
-1 positively, or -2
31
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable, and the resulting digitized value may not be correct.
Object Coding:
FLAG
7 0
Value
31 0
Time
47 0
SQ2 {FLAG = BS8 [0..7]
Time = UI48[0..47] <0 .. 2
48
-1>
Value = I32[0..31] <2
31
-1..-2
31
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
7-17
7.14 16-BIT ANALOG CHANGE EVENT WITH TIME
Data Object 32 - Variation: 04 Type: Event
Description:
The 16-bit analog change event with time is an information object used to represent a
changed hardware or software analog point. The 16-bit signed value could represent a
digitized signal or calculated value.
The current value shows the value of the analog input at the time specified in time.
The time field shows the time at which the processing caused the event.
The flag field has the same meaning as previous objects, with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
15
-1 positively, or -2
15
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable, and the resulting digitized value may not be correct.
Object Coding:
FLAG
7 0
Value
15 0
Time
47 0
SQ2 {FLAG = BS8 [0..7]
Time = UI48 [0..47] <0 .. 2
48
-1>
Value = I16 [0..15] <2
15
-1..-2
15
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP Users Group
7-18
7.15 32-BIT FROZEN ANALOG EVENT WITHOUT TIME
Data Object 33 - Variation: 01 Type: Frozen Event
Description:
The 32-bit frozen analog event without time is an information object used to represent
a frozen hardware or software analog point that is reported as an event. The 32-bit
signed value could represent a digitized signal or calculated value.
The frozen value field shows the value of the analog input at the time of freeze.
The flag field has the same meaning as previous objects, with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
31
-1 positively, or -2
31
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable, and the resulting digitized value may not be correct.
Object Coding:
FLAG
7 0
Frozen value
31 0
SQ2 {FLAG = BS8 [0..7]
Frozen value = I32 [0..31] <2
31
-1..-2
31
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
7-19
7.16 16-BIT FROZEN ANALOG EVENT WITHOUT TIME
Data Object 33 - Variation: 02 Type: Frozen Event
Description:
The 16-bit frozen analog event without time is an information object used to represent
a frozen hardware or software analog point that is reported as an event. The 16-bit
signed value could represent a digitized signal or calculated value.
The frozen value field shows the value of the analog input at the time of freeze.
The flag field has the same meaning as previous objects, with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
15
-1 positively, or -2
15
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable, and the resulting digitized value may not be correct.
Object Coding:
FLAG
7 0
Frozen value
15 0
SQ2 {FLAG = BS8 [0..7]
Frozen value = I16 [0..15] <2
15
-1..-2
15
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP Users Group
7-20
7.17 32-BIT FROZEN ANALOG EVENT WITH TIME
Data Object 33 - Variation: 03 Type: Frozen Event
Description:
The 32-bit frozen analog event with time is an information object used to represent a
frozen hardware or software analog point that is reported as an event. The 32-bit
signed value could represent a digitized signal or calculated value.
The frozen value field shows the value of the analog input at the time of a freeze.
The flag field has the same meaning as previous objects, with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
31
-1 positively, or -2
31
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable, and the resulting digitized value may not be correct.

The time of freeze field shows the time at which the frozen value was equal to the
current value of the analog input. These values are equated on reception of a freeze
analog command.
DNP V3.00 Data Object Library (Version 0.02)
7-21
Object Coding:
FLAG
7 0
Frozen value
31 0
Time of Freeze
47 0
SQ2 {FLAG = BS8 [0..7]
Frozen value = I32 [0..31] <2
31
-1..-2
31
>
Time of Freeze = UI48[0..47] <0 .. 2
48
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP Users Group
7-22
7.18 16-BIT FROZEN ANALOG EVENT WITH TIME
Data Object 33 - Variation: 04 Type: Frozen Event
Description:
The 16-bit frozen analog event with time is an information object used to represent a
frozen hardware or software analog point that is reported as an event. The 16-bit
signed value could represent a digitized signal or calculated value.
The frozen value field shows the value of the analog input at the time of a freeze.
The Flag field has the same meaning as previous objects with these additions:
The over-range field indicates that the digitized signal or calculation has exceeded
+2
15
-1 positively, or -2
15
negatively. The actual value field can be ignored as its
value is not defined.

The reference check field indicates that the reference signal used to digitize the
analog input is not stable, and the resulting digitized value may not be correct.

The time of freeze field shows the time at which the frozen value was equal to the
current value of the analog input. These values are equated on reception of a freeze
analog command.
DNP V3.00 Data Object Library (Version 0.02)
7-23
Object Coding:
FLAG
7 0
Frozen value
15 0
Time of Freeze
47 0
SQ2 {FLAG = BS8 [0..7]
Frozen value = I16 [0..15] <2
15
-1..-2
15
>
Time of Freeze = UI48[0..47] <0 .. 2
48
-1>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0, normal; 1, forced>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
8-1
8. ANALOG OUTPUT OBJECT
DEFINITIONS
This section defines the analog output data objects using the rules established in
section 2. DECLARATION RULES FOR INFORMATION ELEMENTS.
8.1 32-BIT ANALOG OUTPUT STATUS
Data Object 40 - Variation: 01 Type: Static
Description:
The 32-bit analog output status information object represents the actual value of an
analog output or software point and associated status.
The actual value field contains the current value of the analog output.
The flag field has the same meaning as previous objects.
DNP Users Group
8-2
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Current value
31 0
SQ3 {FLAG = BS8 [0..7]
Current value = I32 [0..31] <2
31
-1..-2
31
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, unlock; 1, forced>
Reserved = BS1 [4] <0>
Reserved = BS1 [5] <0>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
Narrative:
This object can be returned after an analog output operation is performed in order to
determine the success of the operation.
DNP V3.00 Data Object Library (Version 0.02)
8-3
8.2 16-BIT ANALOG OUTPUT STATUS
Data Object 40 - Variation: 02 Type: Static
Description:
The 16-bit analog output status information object represents the actual value of a
hardware DAC analog output or software point and associated status.
The actual value field contains the current value of the analog output.
The flag field has the same meaning as previous objects.
Object Coding:
FLAG
7 6 5 4 3 2 1 0
Current value
15 0
SQ3 {FLAG = BS8 [0..7]
Current value = I16 [0..15] <2
15
-1..-2
15
>
}
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, unlock; 1, forced>
Reserved = BS1 [4] <0>
Reserved = BS1 [5] <0>
Reserved = BS1 [6] <0>
Reserved = BS1 [7] <0>
}
Narrative:
This object can be returned after an analog output operation is performed in order to
determine the success of the operation.
DNP Users Group
8-4
8.3 32-BIT ANALOG OUTPUT BLOCK
Data Object 41 - Variation: 01 Type: Static
Description:
The 32-bit analog output information object represents the desired value of a
hardware DAC analog output or software point. The value represented is merely
logical, as the value may be scaled and/or manipulated before any output level is set.
The requested value field contains the desired value of the analog output. The actual
value of the analog output is returned in the analog output status object.
The control status field indicates the status of the analog control operation, in the
same way that the control delay output block does. The definition of this field is the
same as the control relay output block.
Object Coding:
Requested value
31 0
Control Status
7 0
Requested value = I32 [0..31] <2
31
-1..-2
31
>
Status = I8 [0..7] <0..255>
This is used in a control request/response.
DNP V3.00 Data Object Library (Version 0.02)
8-5
8.4 16-BIT ANALOG OUTPUT BLOCK
Data Object 41 - Variation: 02 Type: Static
Description:
The 16-bit analog output block information object represents the desired value of a
hardware DAC analog output or software point. The value represented is merely
logical, as the value may be scaled and/or manipulated before any output level is set.
The requested value field contains the desired value of the analog output. The actual
value of the analog output is returned in the analog output status object.
The control status field indicates the status of the analog control operation in the same
way as the control relay output block. The definition of this field is the same as the
control relay output block.
Object Coding:
Requested value
15 0
Control Status
7 0
I16 Requested value = I16 [0..15] <2
15
-1..-2
15
>
I8 Status = I8 [0..7] <0..255>
DNP Users Group
8-6
DNP V3.00 Data Object Library (Version 0.02)
9-1
9. TIME OBJECT DEFINITIONS
This section defines the time data objects using the rules established in section 2.
DECLARATION RULES FOR INFORMATION ELEMENTS.
9.1 TIME AND DATE
Data Object 50 - Variation: 01
Description:
The time and date object is an information object that represents the absolute time of
day and date. This object should be used for time-synchronization.
Object Coding:
Absolute Time
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
23 22 21 20 19 18 17 16
31 30 29 28 27 26 25 24
39 38 37 36 35 34 33 32
47 46 45 44 43 42 41 40
Absolute Time= UI48 [0..47] <0..2
48
-1, msec>
Narrative:
Absolute Time is recorded as milliseconds since midnight, January 1st, 1970, at zero
hours, zero minutes, zero seconds, and milliseconds.
DNP Users Group
9-2
9.2 TIME AND DATE WITH INTERVAL
Data Object 50 - Variation: 02
Description:
The time and date with interval represents both an absolute time and an interval time.
The absolute time represents a starting time (or base time), and the interval time is a
positive offset from the base time. The interval could be applied several times to the
base time in order to specify a sequence of periodic times.
For example, this can be used to specify a sequence of times for periodic freezing of
objects.
The absolute time field specifies the base time. This time is the real time-of-day.
The interval field specifies the periodic interval or offset from the base time.
Object Coding:
Absolute time
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
23 22 21 20 19 18 17 16
31 30 29 28 27 26 25 24
39 38 37 36 35 34 33 32
47 46 45 44 43 42 41 40
Interval
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
23 22 21 20 19 18 17 16
31 30 29 28 27 26 25 24
SQ2 {Absolute time = UI48 [0..47] <0..2
48
-1, msec>
Interval = UI32 [0..31] <0..2
32
-1, msec>
}
Narrative:
Absolute time is recorded as milliseconds since midnight, January 1st, 1970, at zero
hours, zero minutes, zero seconds, and milliseconds.
DNP V3.00 Data Object Library (Version 0.02)
9-3
9.3 TIME AND DATE CTO
Data Object 51 - Variation: 01
Description:
The time and date CTO (common time of occurrence) object is an information object
that represents the absolute time of day. This object should be used in conjunction
with other objects that contain time references. This object is a base time to which a
relative (incremental) time can be added, or from which it can be subtracted, in order
to obtain another absolute time reference.
Object Coding:
Absolute Time
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
23 22 21 20 19 18 17 16
31 30 29 28 27 26 25 24
39 38 37 36 35 34 33 32
47 46 45 44 43 42 41 40
Absolute time = UI48 [0..47] <0..2
48
-1, msec>
Narrative:
Absolute time is recorded as milliseconds since midnight, January 1st, 1970, at zero
hours, zero minutes, zero seconds, and milliseconds.
DNP Users Group
9-4
9.4 UN-SYNCHRONIZED TIME AND DATE CTO
Data Object 51 - Variation: 02
Description:
The un-synchronized time and date CTO object is an information object that
represents the relative-absolute time of day. This object should be used in conjunction
with other objects that contain time references. This object is a relative base time to
which a relative (incremental) time can be added, or from which it can be subtracted,
in order to obtain another relative-absolute time reference. The real absolute time can
be calculated by the message receiver, based on the reception time of the message
containing this object. Any objects that follow this object, and come before the next
common-time object that contains relative time, must be corrected using this relative-
absolute time value.
Relative-absolute time is the un-synchronized time-of-day at the station sending this
object (i.e. the responding station).
Object Coding:
Relative Absolute Time
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
23 22 21 20 19 18 17 16
31 30 29 28 27 26 25 24
39 38 37 36 35 34 33 32
47 46 45 44 43 42 41 40
Relative-absolute time = UI48 [0..47] <0..2
48
-1, msec>
Narrative:
Relative-absolute time is recorded as milliseconds since midnight, January 1st, 1970,
at zero hours, zero minutes, zero seconds, and milliseconds.
DNP V3.00 Data Object Library (Version 0.02)
9-5
9.5 TIME DELAY COARSE
Data Object 52 - Variation: 01
Description:
The time delay coarse information object represents a relative time that indicates a
time period starting from the time of message reception.
Object Coding:
Seconds
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
Seconds = UI16 [0..15] <0..65,535, seconds>
DNP Users Group
9-6
9.6 TIME DELAY FINE
Data Object 52 - Variation: 02
Description:
The time delay fine information object represents a relative time that indicates a time
period starting from the time of message reception. This object can be used in time-
synchronization to perform path delay measurement calculations or other functions
that require time-based calibration.
Object Coding:
Milliseconds
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
Milliseconds = UI16 [0..15] <0..65,535, milliseconds>
DNP V3.00 Data Object Library (Version 0.02)
9-7
DNP V3.00 Data Object Library (Version 0.02)
10-1
10. CLASS OBJECT DEFINITIONS
This section defines the class data objects using the rules established in section 2.
DECLARATION RULES FOR INFORMATION ELEMENTS.
10.1 CLASS 0 DATA
Data Object 60 - Variation: 01
Description:
The class 0 data object is an object place-holder that specifies a class of zero or more
information elements. These elements can be entire object types, a specific variation,
certain points of the variation, or any combination of these. The data specified by this
object type is configurable within the responding station.
Class 0 data is potentially any information object not assigned to class 1, 2, or 3. That
is, class 0 data is non-priority data.
Object Coding:
None.
Narrative:
The class 0 data object does not carry any information in itself, and therefore does not
have an object coding. Class 0 is a null class to which all data objects not assigned to
other classes can belong by default.
DNP Users Group
10-2
10.2 CLASS 1 DATA
Data Object 60 - Variation: 02
Description:
The class 1 data object is an object place-holder that specifies a class of zero or more
information elements. These elements can be entire object types, a specific variation,
certain points of the variation, or any combination of these. The data specified by this
object type is configurable within the responding station.
The responding station does not send the class 1 data object, as it does not contain
any actual information, but is simply an identifier for other objects.
Object Coding:
None.
Narrative:
The class 1 data object is used to request a configured group, usually changes, of
information objects from a responding station. This data object does not carry any
information in itself, and therefore does not have an object coding.
Typically, class 1 data has higher priority than class 2, class 3, and class 0 data.
DNP V3.00 Data Object Library (Version 0.02)
10-3
10.3 CLASS 2 DATA
Data Object 60 - Variation: 03
Description:
The class 2 data object is an object place-holder that specifies a class of zero or more
information elements. These elements can be entire object types, a specific variation,
certain points of the variation, or any combination of these. The data specified by this
object type is configurable within the responding station.
The responding station does not send the class 2 data object, as it does not contain
any actual information, but is simply an identifier for other objects.
Object Coding:
None.
Narrative:
The class 2 data object is used to request a configured group, usually changes, of
information objects from a responding station. This data object does not carry any
information in itself, and therefore does not have an object coding.
DNP Users Group
10-4
10.4 CLASS 3 DATA
Data Object 60 - Variation: 04
Description:
The class 3 data object is an object place-holder that specifies a class of zero or more
information elements. These elements can be entire object types, a specific variation,
certain points of the variation, or any combination of these. The data specified by this
object type is configurable within the responding station.
The responding station does not send the class 3 data object, as it does not contain
any actual information, but is simply an identifier for other objects.
Object Coding:
None.
Narrative:
The class 3 data object is used to request a configured group, usually an event, of
information objects from a responding station. The data object does not carry any
information in itself, and therefore does not have an object coding.
DNP V3.00 Data Object Library (Version 0.02)
11-1
11. FILE OBJECT DEFINITIONS
This section defines the file data objects using the rules established in section 2.
DECLARATION RULES FOR INFORMATION ELEMENTS.
11.1 FILE IDENTIFIER
Data Object 70 - Variation: 01
Description:
The file identifier object is an information object that represents information about a
file in a network file system. This object is intended to be used for transferring large
blocks of data that do not follow the format of an existing data object. In particular,
this object is suitable for uploading and downloading configuration files to remote
devices or data concentrators.
File operations are defined for this object to allow copying, deleting, etc. of a file. The
contents of the file object and the exact procedure to perform on the file will not be
interpreted by the Application Layer, and so must be performed by the user of the
Application Layer.
Networking Capability:
The File_Name field defines a logical name of a file or device. The receiving
application should interpret this name as a network file name. The root (or /)
represents the root of the host file system or receiving node. Sub-directories off of the
root are interpreted as branches off of the root. A branch can be a new directory, or
more importantly, the directory can be a remote file system which resides in a remote
device that is accessible from the current node.
When an application receives a file that specifies a directory or file that does not
reside in the current file system, the application must do whatever is necessary to
obtain the file from the specified device.
If the remote device is a DNP 3 device, then the following rules apply:
On reception of a non-local file request, the application shall forward the request
(in its entirety) to the appropriate DNP 3 device.

The File_Name field will be modified so that the root of the remote device is
specified by the File_Name field. This means stripping off any paths that were used
to actually derive the name of the remote device.
DNP Users Group
11-2
For example, an IED configuration is sent from a host through two data concentrators
DC1 and DC2. The name from the Host to DC1 is:
\DC2\IED\config1
The name from the DC1 to DC2 is:
\IED\config1
The name from the DC2 to IED is:
\config1
In this case DC2 and IED were logical directories which specified remote devices and
config1 was the name of a physical file.
Object Coding:
This is not a fixed format object, but it is a variable format/sized object. This part of
the object is sent in a request.
31 24 23 16 15 8 7 0
Attributes File_Type Name_Size
End_Record Start_Record
File_Size
Time_Of_Creation
Permission
File_ID
Owner_ID
Group_ID
Status File_Function
X File_Name 0
The File_Name field consists of 0 .. x bits where x = Name_Size * 8 and Name_Size =
0 .. 65535.
The file identifier object is sent in a DNP application request message to a remote
device using the Application Layer WRITE request function code. A device responds
to a request (or spontaneously reports) the file identifier object with an Application
Layer RESPONSE or UNSOLICITED RESPONSE function code (where appropriate).
File_Name: Name of file to perform operation on. Consists of 1 or more of
the characters A .. Z, a..z, 0 .. 9, ".", "_", "\" and "-" ONLY,
where " is a delimiter, and where the hyphen cannot be used as
the first character of the file name. The size of this field is
determined by the Name_Size field below. The name can
DNP V3.00 Data Object Library (Version 0.02)
11-3
contain all path information starting from the root (i.e. "\" of the
file system. The name can contain spaces ONLY to separate the
file path/name from program arguments.
Name_Size: Number of characters in File_Name above.
File_Function: Function to perform on specified records of file or on file
system at user layer. Includes the following: APPEND,
DELETE, INSERT, WRITE, ERASE, INFO, CWD, PWD,
EXECUTE and READ. The following values are defined:
0 = APPEND: Add data records specified at END of file. The
Start_Record field indicates the number of records to
append to the file and also the number of data records
following the file identifier header in the message. The
data records that follow the header are described in the
WRITE function code (below). The device should
respond with the file identifier object with all available
fields filled in, the File_Function field set to
RESPONSE, and the status field set to the status of the
requested operation.
1 = DELETE: Remove the specified records from the file (i.e. file
shrinks). The Start_Record indicates the first record to
delete and the End_Record indicates the last record to
delete. There are no data records with this request. The
device should respond with the file identifier object with
all available fields filled in, the File_Function field set
to RESPONSE, and the status field set to the status of
the requested operation.
2 = INSERT: Insert these records at the place specified by the
Start_Record field and continuing to End_Record field
(i.e. the file grows in size). The number of data records
following the file identifier header in the message is
End_Record - Start_Record + 1. The data records that
follow the header are described in the WRITE function
code (below). The device should respond with the file
identifier object with all available fields filled in, the
File_Function field set to RESPONSE, and the status
field set to the status of the requested operation.
3 = WRITE: Place these records at the place specified by
Start_Record field and continuing to End_Record field
(i.e. the file can potentially grow, and previous data is
replaced by these records). The number of data records
following the file identifier header in the message is
End_Record - Start_Record + 1. The data records that
follow the header are described below. The device
should respond with the file identifier object with all
DNP Users Group
11-4
available fields filled in, the File_Function field set to
RESPONSE, and the status field set to the status of the
requested operation.
Data
x 0
Record_Size
15 0
Where: x = Record_Size * 8
Record_Size = 0 .. 65535
4 = ERASE: Clear (to NUL) or ERASE all records specified in Start
and End record fields (i.e. the file stays same size, BUT
data is cleared). There are no data records in this
message. The device should respond with the file
identifier object with all available fields filled in, the
File_Function field set to RESPONSE, and the status
field set to the status of the requested operation.
5 = INFO: This request is used to obtain INFORMATION on the
specified file. The device should respond with the file
identifier object header with all fields filled in, the
File_Function set to RESPONSE and the status field set
to the status of the requested operation. The File_Name
field can be set to the special name "/" which indicates
ALL files. The device should respond with file identifier
object headers for each file in the device's file system. If
the device has only one file (and no directories) then
this one file's file identifier object header should be
returned.
6 = CWD: Change working directory (CWD) to path specified in
File_Name. The device should respond with the file
identifier object with all available fields filled in, the
File_Function field set to RESPONSE, the File_Name
field set to the new working directory, and the status
field set to the status of the requested operation.
7 = PWD: Return the present working directory (PWD) in
File_Name. The device should respond with the file
identifier object with all available fields filled in, the
File_Function field set to RESPONSE, the File_Name
field set to the current working directory, and the status
field set to the status of the requested operation.
8 = EXEC: Start or EXECUTE the application specified by
File_Name and pass it parameters that follow the file
name portion of File_Name (separated by spaces). The
device should respond with the file identifier object with
DNP V3.00 Data Object Library (Version 0.02)
11-5
all available fields filled in, the File_Function field set
to RESPONSE and the status field set to the status of
the requested operation.
9 = READ: Read the specified records of file. The Start_Record
specifies the first record to READ, and the End_Record
specifies the last record to READ. If the Start_Record
field is 0, and the End_Record field is 65535, then the
device should respond with all available records. The
File_Size field in the response should indicate the total
size of the file. The device should respond with the file
identifier object with all available fields filled in, and
all requested data records (if possible), the
File_Function field set to RESPONSE, the
Start_Record and End_Record should be set to the
beginning and end data records returned in the
response, and the status field set to the status of the
requested operation. The number of data records
following the file identifier header in the message is
End_Record - Start_Record + 1. The data records that
follow the header are described above under the
WRITE function code.
255 = RESP: This function code is used to indicate a response to a
request. The contents of this message are defined by the
function code in the request message.
Permission: The permission field specifies the READ, WRITE, and
EXECUTE privileges for the file owner, the file owner's group
and the world (all others). The READ privilege gives the user
the right to read the file (READ, PWD, CWD, INFO request).
The WRITE privilege gives the user the right to change the file
(APPEND, DELETE, INSERT, WRITE, ERASE). The
EXECUTE privilege gives the user the right to run the specified
application (EXEC request).
File_Type: Indicates to a receiving application how to interpret the
contents of the file object. Valid types are: 8-bit binary, 8-bit
ASCII, 7-bit ASCII, EBCDIC, BCD, Baudot, International
Baudot. The following values are associated:
0 = 8-bit binary (un-coded octets of binary)
1 = 8-bit ASCII (extended ASCII characters)
2 = 7-bit ASCII (ASCII characters)
3 = EBCDIC (extended binary coded decimal)
4 = BCD (binary coded decimal)
5 = Baudot (5-bit Baudot)
6 = International Baudot (6-bit Baudot)
DNP Users Group
11-6
Attributes: File attributes consisting of: regular, temporary, directory, or
FIFO. The following values are associated:
0: Regular file is a real PERMANENT file.
1: Temporary file is TEMPORARY and MUST be saved if changes are to
be kept.
2: Directory is a file of files (cannot be read).
3: FIFO is a first-in-first-out queue and can be used for inter-process
communication (analogous to a socket or pipe).
Status: The status of the requested operation, consisting of: OK,
Doesn't_exist, Out_of_Space, No_Permission and File_Busy.
The following values are associated:
0: OK indicates that the requested operation was successful.
1: Doesn't_exist indicates that the file name is not contained in the file
system.
2: Out_of_Space indicates that the file operation caused the file to exceed
its maximum size as determined by the User ID, Group ID, and
Permission.
3: No_Permission indicates that the file owner does not have enough
privileges for the operation requested.
4: File_Busy indicates that the file could not be delivered to the
destination.
File_Size: Number of total bytes in file specified by File_Name.
Start_Record: The start record number of file. A start record of 0 indicates the
start of the file, and a start record of 65535 indicates the last
record.
End_Record: The end record number of file, similar to the Start_record. An
end record of 65535 combined with a start record of 0 in a
READ request indicates the entire file.
Record_Size: Size in bytes of each individual data record excluding
Record_Size field.
Time_of_Creation: Time that the file was created or last modified. This field has
the same format as Object 50 Variation 1.
Owner_ID: Unique identifier for the owner of the file.
DNP V3.00 Data Object Library (Version 0.02)
11-7
Group_ID: Unique identifier for the owner's group.
File_ID: Unique integer identifier for the file. This field can also be used
to hold the error check (typically 16-bit CRC) for the file. In
this case, the File_ID is only unique when concatenated with
the File_Name and the Time_Of_Creation.
Data: Actual data bytes that make up the file record. These 8-bit
objects are interpreted according to the File_Type field. The
contents of the Data field will not be interpreted by the DNP
Application Layer.
DNP V3.00 Data Object Library (Version 0.02)
12-1
12. DEVICE OBJECT DEFINITIONS
This section defines the device data objects using the rules established in section 2.
DECLARATION RULES FOR INFORMATION ELEMENTS.
12.1 INTERNAL INDICATIONS
Data Object 80 - Variation: 01
Description:
The internal indications is an information element used to convey internal states and
diagnostic results of a responding station. This information can be used by a receiving
station to perform error recovery or other functions.
The number of internal indications objects sent in a message is device-dependent.
Object Coding:
0
BS1 [0..0]
State = BS1 [0] <0,1>
Narrative:
Transmission of the data object is always performed in complete octets, with
unoccupied bit positions set to zero. The following example illustrates the packing of
n of these data objects.
7 6 5 4 3 2 1 0
15 14 13 12 11 10 9 8
0 0 0 n n-1 n-2 n-3 n-4
DNP Users Group
12-2
12.2 STORAGE OBJECT
Data Object 81 - Variation: 01
Description:
The storage object is an information element used to convey the status of internal
buffers and storage areas for specific data types.
The group field indicates the group (or data type) that the status field corresponds to.
The variation field indicates the variation of the object that the status field
corresponds to.
The group and variation fields together specify the exact data type.
The status field shows what percentage of the buffer space allocated for this data type
is currently used up. The overflow bit indicates that the buffer space for the specified
data type has been over-utilized, and data objects have been lost.
Object Coding:
STATUS
7 6 5 4 3 2 1 0
GROUP
7 0
VARIATION
7 0
Storage Object ={
Status = BS8 [0..7]
Group = UI8 [0..7] <0..255>
Variation = UI8 [0..7] <0..255>
}
Status ={
Percent = BS7 [0..6] <0..100>
Overflow = BS1 [7] <0, 1; Overflow>
}
Narrative:
The storage object is used to indicate the status of buffer, queues, or other storage
areas within the sending device. The object is generated by the device as configured in
the device and described in the particular device profile.
DNP V3.00 Data Object Library (Version 0.02)
12-3
12.3 DEVICE PROFILE
Data Object 82 - Variation: 01
Description:
The device profile object provides for inter-operability between different DNP devices
which use only a sub-set of the DNP Application Layer function codes and data
objects. This object describes the station acting as a DNP master, and the valid
function codes and objects that the slave device supports. In addition, the range of
indices for each object/variation is also given so that configuration can be done on a
dynamic basis.
Principle of operation:
The device profile object is intended to be sent by a slave device ONLY when the
request sent by the master is not recognizable, un-parsable, or objects referenced in
the request are not supported. Coincident with this message would be internal
indications indicating a problem with parsing.
Alternately, if the slave is configured in a quiescent environment, the slave could
report (spontaneously) the device profile object upon start-up.
The master, upon reception of this object, can change its polling scheme, poll request
message, limit or expand the assumed functionality of the slave, or re-configure the
master database with objects specified in this object.
If the master station is less sophisticated, the slave station can be marked off-line, and
manual re-configuration would be necessary to obtain proper communications again.
The device profile object consists of two sections. The first section, functions,
specifies the supported DNP Application Layer function codes. The second section,
objects, specifies the range of indices valid for each object/variation combination.
Essentially, the objects section is a sample master poll object header for each
object/variation. It is implied by the type of object what type of operation (function)
can be performed on it so there is no need to map each function code to a set of
objects.
The functions field is an array of bits indicating support or non-support for each
function code. The bit positions 0 .. 63 correspond to DNP Application Layer function
codes 0 to 63. For request function codes beyond 63, another functions field can
follow the ObjectHeaders.
The NumObjects field specifies how many sample object headers follow.
The ObjectHeader fields have the same form as a DNP Application Layer object
header. As a minimum, the header consists of the object, variation, qualifier, and 8-bit
quantity. This means that to describe most object variations, only four bytes are
needed.
DNP Users Group
12-4
Object Coding:
Functions
63 0
NumObjects (n)
15 0
ObjectHeader 1
Quantity
7 0
Qualifier
7 0
Variation
7 0
Object
7 0
ObjectHeader 2
Quantity
7 0
Qualifier
7 0
Variation
7 0
Object
7 0
ObjectHeader n
Quantity
7 0
Qualifier
7 0
Variation
7 0
Object
7 0
SQ2 {Functions = BS64 [0..63]
NumObjects = UI16 [0.15] <0..65535>
}
Each object header that follows has a variable format determined by the rules for
constructing Application Layer object headers.
Some sample headers are:
Object Header =
SQ4 {
Object = UI8 [0..7] <0..255>
Variation = UI8 [0..7] <0..255>
Qualifier = UI8 [0..7] <0..255>
Quantity = UI8 [0..7] <0..255>
}
DNP V3.00 Data Object Library (Version 0.02)
12-5
Object Header =
SQ5 {
Object = UI8 [0..7] <0..255>
Variation = UI8 [0..7] <0..255>
Qualifier = UI8 [0..7] <0..255>
Start = UI8 [0..7] <0..255>
Stop = UI8 [0..7] <0..255>
}
Object Header =
SQ5 {
Object = UI8 [0..7] <0..255>
Variation = UI8 [0..7] <0..255>
Qualifier = UI8 [0..7] <0..255>
Start = UI16 [0..15] <0..65535>
Stop = UI16 [0..15] <0..65535>
}
DNP Users Group
12-6
12.4 PRIVATE REGISTRATION OBJECT
Data Object 83 - Variation: 01 Type: Static\Event\Frozen Static\Frozen Event
Description:
This private registration object (PRO) object type is reserved for vendor-specific
definition. The object consists of a fixed header to provide for transparent data
transfer, and a unique registration number of the following object. The description of
the contents is entirely at the discretion of the vendor.
The Vendor field is a four-byte ASCII vendor name.
The Private Registration Number (PRN) field is a vendor designated object I.D.
The Len field contains the length of the Data Objects field in octets.
The Data Objects field contains the vendor's data (variable size and format) as
described by the PROD object.
Object Coding:
VENDOR
31 0
PRN 0
15
LEN
15 0
DATA OBJECTS
0
SQx {Vendor = U132 [0..2
32
-1]
PRN = U116[0..2
16
-1]
LEN = U116 [0..2
16
-1] Length of objects in <octets>
SQn = sequence of n basic DNP objects
}
DNP V3.00 Data Object Library (Version 0.02)
12-7
12.5 PRIVATE REGISTRATION OBJECT DESCRIPTOR
Data Object 83 - Variation: 02 Type: Static
Description:
This object type is reserved for vendor private registration object description. The
object is matched one-to-one with its PRO object. The object consists of a fixed
header to provide for transparent data transfer, and a unique registration number of the
following object. The description of the contents is entirely at the discretion of the
vendor.
The private registration object description (PROD) object maintains a one-to-one
relationship with the PRO object, and can be used to parse the PRO into basic DNP
Objects for processing. The PROD consists of one element for each corresponding
element of the PRO. Each element consists in turn of a set of DNP object and
variation numbers.
The Vendor field is a four-byte ASCII vendor name.
The Private Registration Number (PRN) field is a vendor designated object I.D.
The Count field specifies the number of object definitions that follow this field. Each
object definition consists of the three fields: quantity, object and variation.
The Quantity field specifies the number of objects, specified by the object and
variation fields, which will be found in the PRO object.
DNP Users Group
12-8
Object Coding:
VENDOR
31 0
PRN
15 0
COUNT
15 0
QUANTITY
15 0
OBJECT
7 0
VARIATION
7 0
QUANTITY
15 0
OBJECT
7 0
VARIATION
7 0
QUANTITY
15 0
OBJECT
7 0
VARIATION
7 0
SQx {Vendor = UI32 [0..2
32
-1]
PRN = UI16 [0..2
16
-1]
COUNT = UI16 [0..2
16
-1]
SQn = Sequence of n basic DNP object definitions
{ Object = U18 [0..2
8
-1]
Variation = U18 [0..2
8
-1]
Quantity = U18 [0..2
16
-1]
}
}
DNP V3.00 Data Object Library (Version 0.02)
12-9
The following illustrations serve as examples for more clarification:
PROD:
(blank) B B A
0 16
0 3
2
1
2
2
21
2
5
30
1
In the above example:
B, B, and A, represent the vendor name.
PRN is private object #16 for vendor A B B.
Count specifies that three definitions follow, with each definition consisting of
quantity, object, and variation.
DNP Users Group
12-10
The corresponding PRO object is:
(blank) B B A
0 16
0 33
binary input
1
binary input
2
Counter 1
Counter 2
Analog 1
Analog 2
Analog 3
Analog 4
Analog 5
DNP V3.00 Data Object Library (Version 0.02)
12-11
DNP V3.00 Data Object Library (Version 0.02)
13-1
13. APPLICATION OBJECT
DEFINITIONS
This section defines the application data objects using the rules established in section
2. DECLARATION RULES FOR INFORMATION ELEMENTS.
13.1 APPLICATION IDENTIFIER
Data Object 90 - Variation: 01
Description:
The application identifier object is an information object used to represent an
application or operating system process within a device. This object is used in
conjunction with the application functions of the application layer to control software
applications.
This object has no defined format and is simply used as a place holder. The free-
format qualifier of the application layer should be used to identify the application in
question, or if the application is unknown, the ALL qualifier should be used to specify
all relevant applications.
DNP Users Group
13-2
DNP V3.00 Data Object Library (Version 0.02)
14-1
14. ALTERNATE NUMERIC OBJECT
DEFINITIONS
This section defines the alternate or custom numeric representation data objects using
the rules established in section 2. DECLARATION RULES FOR INFORMATION
ELEMENTS.
14.1 SHORT FLOATING POINT
Data Object 100 - Variation: 01
Description:
The short floating point information object represents a calculated or measured
scientific value. The format of this object complies with the IEEE-754 standard for
floating-point number representation.
The value field holds the actual floating point number and follows the format for a
short real as specified by the IEEE-754 standard.
The flag field holds information about the point and has the same meaning as previous
objects.
The units field determines the units of the value field. This is the scientific or
engineering units associated with the measured or calculated quantity.
DNP Users Group
14-2
Object Coding:
Units
7 0
Flag
7 0
Value
Sign
0 0
Exponent
7 0
Significant
22 0
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
Narrative:
The absolute value can be derived from the value field as follows:
Absolute_Value = 1.s
0
s
1
s
2
s
3
s
4
.. s
22
x 2
(Exp -127)
where: si = Significant[i..i] and Exp= Exponent[0..7]
Sign: 0 if number is positive, and 1 if the number is negative.
Exponent: Power of 2 applied to 1. Significant.
Significant: Significant binary digits in value.
DNP V3.00 Data Object Library (Version 0.02)
14-3
The units field has the following defined values:
0: Volts p-p (peak-to-peak voltage)
1: Amperes p-p (peak-to-peak current)
2: Volts RMS
3: Amperes RMS
4: KW or kilowatts (real power or volt-amps resistive)
5: KVA or kilo volt-amps (volt-amps total)
6: KVAR or kilovars (imaginary power or volt-amps reactive)
7: KwH (kilowatt hours)
8: KVARH (kiloVAR hours)
9: PF (power factor)
10: Hz (frequency in cycles per second)
11: w (frequency in radians)
12: C (degrees Celsius)
13: F (degrees Fahrenheit)
14: K (degrees Kelvin)
15: N (force in Newtons)
16: kg (mass in kilograms)
17: m/s
2
(acceleration)
18: N/m
2
(pressure in Newtons per square meter)
19: N*m (torque in Newton-meters)
DNP Users Group
14-4
14.2 LONG FLOATING POINT
Data Object 100 - Variation: 02
Description:
The long floating point information object represents a calculated or measured
scientific value. The format of this object complies with the IEEE-754 standard for
floating-point number representation.
The value field holds the actual floating point number and follows the format for a
long real as specified by the IEEE-754 standard.
The flag field holds information about the point and has the same meaning as previous
objects.
The units field determines the units of the value field. This is the scientific or
engineering units associated with the measured or calculated quantity.
Object Coding:
Units
7 0
Flag
7 0
Value
Sign
0 0
Exponent
10 0
Significant
51 0
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
14-5
Narrative:
The absolute value can be derived from the value field as follows:
Absolute_Value = 1.s
0
s
1
s
2
s
3
s
4
.. s
51
x 2
(Exp -1023)
where: si = Significant[i..i] and Exp= Exponent[0..7]
Sign: 0 if number is positive, and 1 if the number is negative.
Exponent: Power of 2 applied to 1. Significant.
Significant: Significant binary digits in value.
The units field has the following defined values:
0: Volts p-p (peak-to-peak voltage)
1: Amperes p-p (peak-to-peak current)
2: Volts RMS
3: Amperes RMS
4: KW or kilowatts (real power or volt-amps resistive)
5: KVA or kilo volt-amps (volt-amps total)
6: KVAR or kilovars (imaginary power or volt-amps reactive)
7: KwH (kilowatt hours)
8: KVARH (kiloVAR hours)
9: PF (power factor)
10: Hz (frequency in cycles per second)
11: w (frequency in radians)
12: C (degrees Celsius)
13: F (degrees Fahrenheit)
14: K (degrees Kelvin)
15: N (force in Newtons)
16: kg (mass in kilograms)
17: m/s
2
(acceleration)
18: N/m
2
(pressure in Newtons per square meter)
19: N*m (torque in Newton-meters)
DNP Users Group
14-6
14.3 EXTENDED FLOATING POINT
Data Object 100 - Variation: 03
Description:
The extended floating point information object represents a calculated or measured
scientific value. The format of this object complies with the IEEE-754 standard for
floating-point number representation.
The value field holds the actual floating point number and follows the format for a
temp real as specified by the IEEE-754 standard.
The flag field holds information about the point and has the same meaning as previous
objects.
The units field determines the units of the value field. This is the scientific or
engineering units associated with the measured or calculated quantity.
Object Coding:
Units
7 0
Flag
7 0
Value
Sign
0 0
Exponent
14 0
Significant
63 0
FLAG ={
On-line = BS1 [0] <0, off-line; 1, on-line>
Restart = BS1 [1] <0, normal; 1, restart>
Communication lost = BS1 [2] <0, normal; 1, lost>
Remote forced data = BS1 [3] <0, normal; 1, forced>
Local forced data = BS1 [4] <0>
Over-range = BS1 [5] <0, normal; 1, over-range>
Reference check = BS1 [6] <0, normal; 1, error>
Reserved = BS1 [7] <0>
}
DNP V3.00 Data Object Library (Version 0.02)
14-7
Narrative:
The absolute value can be derived from the value field as follows:
Absolute_Value = 1.s
0
s
1
s
2
s
3
s
4
.. s
51
x 2
(Exp -1023)
where: si = Significant[i..i] and Exp= Exponent[0..7]
Sign: 0 if number is positive, and 1 if the number is negative.
Exponent: Power of 2 applied to 1. Significant.
Significant: Significant binary digits in value.
The units field has the following defined values:
0: Volts p-p (peak-to-peak voltage)
1: Amperes p-p (peak-to-peak current)
2: Volts RMS
3: Amperes RMS
4: KW or kilowatts (real power or volt-amps resistive)
5: KVA or kilo volt-amps (volt-amps total)
6: KVAR or kilovars (imaginary power or volt-amps reactive)
7: KwH (kilowatt hours)
8: KVARH (kiloVAR hours)
9: PF (power factor)
10: Hz (frequency in cycles per second)
11: w (frequency in radians)
12: C (degrees Celsius)
13: F (degrees Fahrenheit)
14: K (degrees Kelvin)
15: N (force in Newtons)
16: kg (mass in kilograms)
17: m/s
2
(acceleration)
18: N/m
2
(pressure in Newtons per square meter)
19: N*m (torque in Newton-meters)
DNP Users Group
14-8
14.4 SMALL-PACKED BINARY CODED DECIMAL
Data Object 101 - Variation: 01
Description:
The small-packed binary coded decimal information object represents a sequence of
BCD digits. Each BCD digit can represent a variety of information from control
outputs to analog inputs.
Object Coding:
Digit 4
3 0
Digit 3
3 0
Digit 2
3 0
Digit 1
3 0
SPBCD = SQ4 {
Digit1 = UI4 [0..3] <0..10>
Digit2 = UI4 [0..3] <0..10>
Digit3 = UI4 [0..3] <0..10>
Digit4 = UI4 [0..3] <0..10>
}
DNP V3.00 Data Object Library (Version 0.02)
14-9
14.5 MEDIUM-PACKED BINARY CODED DECIMAL
Data Object 101 - Variation: 02
Description:
The medium-packed binary coded decimal information object represents a sequence
of BCD digits. Each BCD digit can represent a variety of information from control
outputs to analog inputs.
Object Coding:
Digit 4
3 0
Digit 3
3 0
Digit 2
3 0
Digit 1
3 0
Digit 8
3 0
Digit 7
3 0
Digit 6
3 0
Digit 5
3 0
MPBCD = SQ8 {
Digit1 = UI4 [0..3] <0..10>
Digit2 = UI4 [0..3] <0..10>
Digit3 = UI4 [0..3] <0..10>
Digit4 = UI4 [0..3] <0..10>
Digit5 = UI4 [0..3] <0..10>
Digit6 = UI4 [0..3] <0..10>
Digit7 = UI4 [0..3] <0..10>
Digit8 = UI4 [0..3] <0..10>
}
DNP Users Group
14-10
14.6 LARGE-PACKED BINARY CODED DECIMAL
Data Object 101 - Variation: 03
Description:
The large-packed binary coded decimal information object represents a sequence of
BCD digits. Each BCD digit can represent a variety of information from control
outputs to analog inputs.
Object Coding:
Digit 4
3 0
Digit 3
3 0
Digit 2
3 0
Digit 1
3 0
Digit 8
3 0
Digit 7
3 0
Digit 6
3 0
Digit 5
3 0
Digit 12
3 0
Digit 11
3 0
Digit 10
3 0
Digit 9
3 0
Digit 16
3 0
Digit 15
3 0
Digit 14
3 0
Digit 13
3 0
LPBCD = SQ16 {
Digit1= UI4 [0..3] <0..10>
Digit2= UI4 [0..3] <0..10>
Digit3= UI4 [0..3] <0..10>
Digit4= UI4 [0..3] <0..10>
Digit5= UI4 [0..3] <0..10>
Digit6= UI4 [0..3] <0..10>
Digit7= UI4 [0..3] <0..10>
Digit8= UI4 [0..3] <0..10>
Digit9= UI4 [0..3] <0..10>
Digit10= UI4 [0..3] <0..10>
Digit11= UI4 [0..3] <0..10>
Digit12= UI4 [0..3] <0..10>
Digit13= UI4 [0..3] <0..10>
Digit14= UI4 [0..3] <0..10>
Digit15= UI4 [0..3] <0..10>
}
DNP V3.00 Data Object Library (Version 0.02)
1
LIST OF ABBREVIATIONS AND
ACRONYMS
ASCII American Standard Code for Information Interchange
BCD binary coded decimal
BIN
BS bit string
CRC cyclic redundancy check
CTO common time object
CTO common time of occurrence
CWD change working directory
DA distributed automation
DAC data acquisition and control
DNP Distributed Network Protocol
EBCDIC extended binary coded decimal
EXEC execute
F fixed point
FIFO first-in-first-out
I integer
ID identification
IEC International Electrotechnical Commission
IEEE Institute of Electrical and Electronics Engineers
LEN length
LPBCD large-packed binary coded decimal
MPBCD medium-packed binary coded decimal
MSEC millisecond
OS octet string
DNP Users Group
2
PCB pattern control block
PRN private registration number
PRO private registration object
PROD private registration object description
PWD (return to) present working directory
R real
RESP response
RMS root mean squared
SCADA supervisory control and data acquisition
SPBCD small-packed binary coded decimal
UF unsigned fixed point
UI unsigned integer

You might also like