This driver is used for slave (or server) mode communication with remote IEDs (Intelligent Electronic Devices) using Level 2 DNP 3.0 protocol in master (or client) mode. Communication can be established through a multi-point serial channel or a LAN using Ethernet and TCP-IP. In the latter case, each IED has an IP address..  

Summary

Communication Driver Name: DNP30S

Implementation DLL: T.ProtocolDriver.DNP30S.dll

Protocol: DNP3.0 Slave standard protocol

Interface: TCP/IP or Serial

IEDs types supported: Any DNP 3.0-compatilble IED in master (or client) mode

Communication block size: Maximum 250 bytes, FT 1.2 format

Protocol Options: “LinkConfirm” mode and master station address

Multi-threading: User defined, five threads per communication node by default

Max number of nodes: User defined

PC Hardware requirements: Standard PC Ethernet interface board, RS485 or RS232 port

Data Objects Supported

The table below shows the DNP objects and variants supported by this implementation.


ObjectRequisition (Master)Response (Server)
ObjVarDescriptionFunction Codes (Decimal)Qualifier Codes (Hex)Function Codes (Decimal)Function Codes (Decimal)
10Binary Input (any variation)100,01,06




2200,01,06129
11Single Bit Binary Input (packed)100,01,0612900, 01
12Binary Input with status

12900, 01
20Binary Input event (any variation)106,07,08

21Binary Input change without time106,07,08129,13017,18
22Binary Input change with
absolute time
106,07,08129,13017,18
23Binary Input change with relative
time
106,07,08129,13017,18
30Double-bit Binary input – Any
variation
2200,01,06

31Double-bit Binary Input – Packed100,01,0612900, 01
32Double-bit Binary Input – With fla
gs
100,01,0612900, 01
40Double-bit Binary Input Event – A
ny Variation
106,07,08

41Double-bit Binary Input Event – w
ithout time
106,07,08129,13017,18
42Double-bit Binary Input Eventwith
absolute time
106,07,08129,13017,18
43Double-bit Binary Input Event -
with relative time
106,07,08129,13017,18
101Binary Output – Any Variation100,01,06

102Binary Output – Status with flags100,01,06129
121Control relay output block3,4,517,28129Echo of request
200Binary Counter – All variations



201Counter – 32-bit with flag100,01,0612900, 01
202Counter – 16-bit with flag100,01,0612900, 01
205Counter – 32-bit without flag100,01,0612900, 01
206Counter – 16-bit without flag100,01,0612900, 01
210Frozen counter – All variations



211Frozen Counter – 32-bit with flag100,01,0612900, 01
212Frozen Counter – 16-bit with flag100,01,0612900, 01
213Frozen Counter – 32-bit without f
lag
100,01,0612900, 01
214Frozen Counter – 16-bit without f
lag
100,01,0612900, 01
220Counter Event – Any Variation106

221Counter Event – 32-bit with flag106,07,08129,13017,18
222Counter Event – 16-bit with flag106,07,08129,13017,18
230Frozen Counter Event – Any Varia
tion
106,07,08

231Frozen Counter Event – 32-bit wi
th flag
106,07,08129,13017,18
232Frozen Counter Event – 16-bit wi
th flag
106,07,08129,13017,18
300Analog Input – All variations1, 2200,01,06

30132 Bits Analog Input100,01,0612900, 01
30216 Bit Analog input with flag100,01,0612900, 01
30332 Bits Analog Input without flag100,01,0612900, 01
30416 Bit Analog input without flag100,01,0612900, 01
305Short Floating Point (32bits)100,01,0612900, 01
320Analog Input event – All
variations
106,07,08

32132 Bits Analog Input event106,07,08129,13017,18
32216 Bit Analog event without flag106,07,08129,13017,18
32332 Bit Analog event with flag106,07,08129,13017,18
32416 Bit Analog event with flag106,07,08129,13017,18
325Analog input event single float
–without time
106,07,08129,13017,18
327Analog input event single float
–with time
106,07,08129,13017,18
400Analog Output Status – Any
variation
1


401Analog Output Status – 32bits
with flag
100,01,0612900, 01
402Analog Output Status - 16bits
with flag
100,01,0612900, 01
403Analog output status – Single
float with flag
100,01,0612900, 01
41132Bit Analog output block3,4,5,617,28129Echo of
request
41216 Bit Analog output block3,4,5,617,28129Echo of
request
413Analog output block – Single
float
3,4,5,617,28129Echo of
request
501Time and Data – Absolute time1,20x0712907
511Time and Date CTO – Absolute ti
me, synchronized


129,13007
512Time and Date CTO – Absolute ti
me, unsynchronized


129,13007
521Time Delay – Coarse

12907
522Time Delay – Fine

12907
601Class 0 data10x06

602Class 1 data1,20,2106,07,08

603Class 2 data1,20,2106,07,08

604Class 3 data1,20,2106,07,08

801Internal indications1,200,0112901


In master mode protocol implementation, the master only performs the requests highlighted in blue. The server equipment responds using the answers highlighted in yellow. Note that it is up to the server equipment to decide how to respond and the master must support all the features of level 2 to be used as a possible answer.

The objects, object variations, function codes and qualifiers have their standard meanings in DNP. Tables with the function code and qualifiers are shown below:

Function CodeDescription Origin
1ReadMaster
2WriteMaster
3SelectMaster
4OperateMaster
5Direct Operate (without selection)Master
6Direct Operate (without ack)Master
7Freeze ImmediatelyMaster
8Freeze Immediately (without ack)Master
9Freeze and ClearMaster
10Freeze and ReadMaster
13Restart (Cold)Master
14Restart (Warm)Master
20Enable non-requested messagesMaster
21Disable non-requested messagesMaster
22Assigns class for an objectMaster
23Measurement with delayMaster
129ResponseSlave
130Non-Requested Response (doesn´t exist on level 2)Slave


Qualifier CodeUse on Request Use on Response
00,01Static Points range (class 0) or a single point with a numberStatic Object
06All pointsInvalid
07,08

A limited number of events

A single point without number (this is a timestamp)

A single point without number (this is a timestamp)
17, 28Controls (one or more unrelated points)Event Objects (one or more unrelated points)


DNP has the concept of data classes, with four classes defined:

Class 0 : Corresponds to the static points, analog or digital. Its content is the value of an analog or digital variable, input or output in a given time;

Class 1, 2 and 3 : Events corresponding to class 0 variable transitions, state transitions or internal relay situations that causes an event.

A common practice in DNP IEDs is to associate the state variation of digital variables or the dead band pass of analog variables with class 1, 2 or 3 events. Thus, modifying the state/value of these variables will cause events to be transmitted at the request of the respective classes of events (60/2, 60/3 and 60/4). Periodically, a class 0 reading (60/1) may be requested for checking integrity.

Note

  • In this implementation, it is automatically assumed that BI-type digital variables, when altered, will be sent as Class 1, in Object 2 with variation 2 format (Binary input with time stamp).
  • In this implementation, it is automatically assumed that AI and AIF analog variables, when altered, will be sent as Class 2, in Object 30 with variation 3 format for AI and in Object 30 with variation 5 format for AIF.

General Operation

The normal slave sequence operation is shown below.

  • If necessary during installation, the master must send a synchronization message (50,1) periodically. The date and time received will be interpreted as UCT (or GMT) and will be used to change the host computer’s clock;
  • When starting execution, IIN flags will be sent on the first answer messages to indicate IED restarted. The master must then execute a “clear device flag” (80/1) to clear this indication;
  • Every time there is an alteration of the digital or analog state configured in the POINTS table, with A cessType set as R eadWrite , an event message will be sent as Class 1 or Class 2. If there is a point in which no event is desired, use A cessType = Read for it.
  • When slave mode receives a digital or analog output command request, it sends the respective requisition to the IED through software (12/1 or 41/2);



CHANNEL SETTINGS

Protocol Options

LinkConfirmMode – Protocol mode in which, in link layer, all requests should be confirmed by the remote IED. The default content is “Enabled.”

MasterStationID - A univocal number between 1 and 65534 corresponding to the master station address. This way, the master informs its own address to the slave when sending it a message. Some slaves reply to the master disregarding this number, while others demand that the address declared on the slave match the one from the master. The default for this field is “65534.”

Password for commands : In order to increase the security in sending commands, normally initiated only by a change in the state of a tag, it is possible to specify in the Client modules a password of up to 9 digits for the command. Here in this server module you must specify the password to generate the command for the Client module that will actually send the command to the field. This password must be the same as that used by the module sender of this command.

Logging Level – You can choose from this list the logging mode created by the communication module.

Logging Level
DebugInfoWarningError
All messages are registered in the LOG.Only Info, Warning and Error messages are registered in the LOG.Only Warning and Error messages are registered in the LOG.Only Error messages are registered in the LOG.


Get analog changes by sample - Alternatively to the mode of receiving changes of tag values, by using AccessType with WriteEventEnable, there’s an option to use, by the communication module, the sampling mode of changes occurred in tags. In this mode, the current values are checked against the last values sent periodically. This way only the change is considered, and the new value is sent to the client, if the absolute difference between the current value and the last one sent is greater than the Deadband attribute of the tag. To use this mode you must use the AccessType in the Points table, for these measurement tags, with WriteEventEnable disabled.


Max time to send analog changes (ms) - If you use the Get analog changes by sampling mode, this is the time to be used as the interval between two samples. The default time is set to 3 seconds.

Settings

Serial Channel:

  • Com: Communication Port used on the computer;
  • BaudRate
  • DataBits: 8
  • StopBits: 1 or 2
  • Parity: None, Even, Odd;
  • DTR: on, off
  • RTS: on, off
  • CTS: on, off;
  • Port configuration must be compatible between master and slave IEDs.



TCP/IP channels:

  • ServerMode and AcceptUnsolicited : Preset and cannot be changed;
  • ListeningPort: The port of the computer where this slave channel will accept connections is defined here.
  • MaxSimultaneousConnections: Must be 1.
  • ShareNodeSameIP : Accepts IED with the same IP.


Timeout

Defines limit times for transmission and reception of message characters and the number of retries.

Initial State

Defines how the channel will initiate: enabled or disabled. If the channel is disabled, no message will be sent or received through it. In other words, the channel will be deactivated.



Nodes Settings

Each node represents a remote station (IED). The user can configure multiple workstations into a single channel for serial communication. In the case of TCP-IP communication, only one node is supported for each channel. In this case, you must set as many channels as there are nodes.

Nodes Data (Primary and Backup)

Attribute set associated with the node (channel), which refers to its address and other
attributes presented below:

.


For TCP-IP Communication:

IP Address – Not used

Port – Not used

For both TCP-IP and Serial:

SlaveID – Slave station address, defined by this channel.

IgnoreBitOnLine – If “enabled,” it indicates the driver must ignore the “BitOnLine” indication which is inserted by the IED when a failure or normality occurs at a point, according to the IED criteria.

WaitForIdleToCmd – If “enabled,” it indicates that a command should only be sent when the sampled communication is at rest, i.e., is not happening.

Tag for Comm status - This field can indicate the name of an existing tag in the project to show success/failure in communication from a functional point of view. The module waits for a maximum of Timeout milliseconds (defined in Protocol Options, above) for receiving a request from the client. In case of failure, the value of this tag will be set to ZERO. In case of success, the value will be set as ONE.



Points Settings

General

Points can be input or output points.

Entry points, i.e. points that are acquired through the protocol, have basically two main parameters: point type and address.

Output points, used for remote controls, have besides the type and address, a parameter (ControlCode) for specifying the output operation. On SCADA, given an IED address map, address numbers must be unique for points of the same type.

Point states or point values are reported by IED through Information Objects defined in the standard. These objects have variations such as with or without “timestamp.” Every time the IED reports an Information Object with a “timestamp,” this will be listed on SCADA as an attribute of the point that corresponds to this object. When there is no “timestamp,” SCADA will fill it with the current time of the computer hosting SCADA.


SCADA communication module on Server mode implements:

  • Responses to requests to read digital points;
  • Responses to requests to read analog variables;
  • Responses to requests for meter reading;
  • Command request execution of digital and analog points.

Point Types

The implemented SCADA point types, listed below, are defined based on the data objects set out in the standard. For each type of point, whichever the object variation received on the IED might be, with or without a flag or a timestamp, the values acquired will be placed in points with the types listed below. In the Points table, the “ Address ” field is used to choose the type of point and to specify its address.


AI - Analog Input Scalar analog measurement used for transmission of analog quantities. The tag data with this type of point is sent through object 32 variation 1, when sent as events; when sending by class 0 (static), it uses object 30 variation 1.They are 32-bit integer numbers without timestamp.

BI - Binary Input Simple bitwise input point, value 0 or 1. The data of tags with this type of point is sent through object 2 variation 2, when by reason of change (event), with timestamp, or through object 2 var. 1, when for general reading (class 0).

DBI - Double-bit Binary Input Double binary input point, value between 0 and 3. The tag data with this type of point is sent through object 3 and variation 2, when by reason of change (event), with timestamp, or through object 3 var. 1, when for general reading (class 0).

RAO - Read Analog Output Not used in the implementation of slave mode.

CRO - Control Relay Output Digital output point used to receive switch and breaker commands. The DNP 12 object, including the Control Code (8 bits), is expected to indicate the type of command and execution details.  When registering these points in slave mode, it is necessary to define a control code that is identical to the one that will be sent by the Master IED, in order to identify the tag used in the Slave. The slave only executes the change of the value of the SCADA point. In order for the command to reach its final destination in an IED, the affected tag must be used by another Client protocol, which will send it to the IED. In the case of control of switches and circuit breakers it is recommended that two tags be used: one for Trip and one for Close. The possible values received from the client are shown in the table below with their associated actions:


ControlCodeProtocol ActionAction in SCADA tag executed on the slave
1Output Pulse ONChanges to 1 and later to zero
2Output Pulse OFFChanges to zero and later to 1
3Output Latch ONChanges to 1
4Output Latch OFFChanges to zero
65Output Pulse ON + CloseChanges to 1 and later to zero
66Output Pulse OFF + CloseChanges to zero and later to 1
67Output Latch ON + CloseChanges to 1
68Output Latch OFF + CloseChanges to zero
129Output Pulse ON + TripChanges to 1 and later do zero
130Output Pulse OFF + TripChanges to zero and later to 1
131Output Latch ON + TripChanges to 1
132Output Latch OFF + TripChanges to zero
+ 16Queue + TripDoes nothing
+ 32Clear + TripDoes nothing


CT – Counter Binary counter of 16 or 32 bits, received from the IEDs through objects 20 and all their
variations. This number has the last state of counter, at the instant it is read.

FRZ - Frozen Counter Binary counter of 32 bits, sent through an object 21 variation 1, which contains the
information of a counter used as a tag.

AO - Analog Output Status or Block (16bits) When this slave mode receives a message with a writing Function Code (2 = Write or 4 = Operate or 5 = DirectOperate) and this object 41 (required value to be reached on the analog
output) on its 2 variations (16 bits), this value is written on the tag defined by the POINTS table for the address received on the object.

AOL - Analog Output Long (32 bits) When this slave mode receives a message with a writing Function Code (2 = Write) and this object 41 (required value to be reached on the analog output) on its 1 variation (32 bits), this value is written on the tag defined by the POINTS table for the address received on the object.

AIF - Analog Input Floating (32 bits) Measurement used for analog transmission of analog quantities. Tags with this type must be identified as real on SCADA. Their value is sent through object 30 with variation 5, when sending static by class 0, or using object 32 variation 5 when sent as event changes.. These are floating point numbers with 32 or 64 bits, IEEE-754 format.

IIN - Internal Indications As a standard of this protocol, the Internal Indications statuses or the command answer
statuses are sent in every slave answer message, for client use. The following table shows the format of these two 16-bit words.


IIN: 16 bits sent in every slave answer with control data - Address: 65000

BITOrigin DescriptionContent 
0IINBroadcastReturns 1 if slave receives a broadcast
message (address = FFFF)
1IINClass 1Returns 1 if slave has class 1 events
2IINClass 2Returns 1 if slave has class 2 events
3IINClass 3Returns 1 if slave has class 3 events
4IINClock SynchronizationReturns 1 if slave asks for clock
synchronization
5IINOutputs set to localReturns 1 if slave has any output set to local
6IINProblemReturns 1 if slave has a problem
7IINRestartReturns 1 if slave has restarted
8IINFunction not ImplementedReturns 1 if a function asked by the master was not implemented in the slave
9IINUnknown ObjectReturns 1 if slave does not have a certain
object at all or in a specific class
10IINInvalid DataReturns 1 if slave has an invalid parameter in the qualifier or the address range is invalid
11IINOverflowReturns 1 if slave buffer has an overflow
12IINBusyReturns 1 if the request was received but is already running
13IINCorrupted DataReturns 1 if the parametric data was corrupted
14IINReservedAlways 0
15IINReservedAlways 0


Status field: 8 bits sent as an answer to a command. Address: 65001

BITOrigin DescriptionContent 
0StatusCommand AcceptedReturns 1 after a correct command
1StatusCommand Not AcceptedReturns 1 if a timeout has occurred between select and operate
2StatusSelect FaultReturns 1 if an operate has occurred without prior select
3StatusFormat ErrorReturns 1 if command has an error in format
4StatusControl not supportedReturns 1 if operation was not supported
5StatusFull QueueReturns 1 if the request queue on the slave is full or the point is already active
6StatusHardware ErrorReturns 1 if a hardware error occurred while the command was being processed
7
Not used

Point Types

The Address field to be filled in when registering a point is what the standard calls “Index.” It consists of a 16-bit number that is the indicative index [0 to n-1] of each of the points of the same type mapped within the IED.

For example purposes, a points table filled with several types of points is presented below. The digital output type points (CRO), as mentioned above, have their control code, besides the address.


To implement discrete digital input points, it is enough to use the “Bit” attribute of a tag for each of the points that define the discrete digital input value. Therefore, for example, a switch with two contacts that define its state:


TagAddress Complement
SEL_LINHA_01.SC89_18Switch Open
SEL_LINHA_01.SC89_19Switch Closed

This is defined as an AnalogInt Tag and the Bit attribute of this 16-bit variable (AnalogInt) is
used on the node table to address two points, as in the figure below:

The values assumed by the SEL_LINHA_01.SC89_1 variable will be:

TagBit 0Bit 1ValueMeaning
SEL_LINHA_01.SC89_1000UNDEFINED
SEL_LINHA_01.SC89_1101OPEN
SEL_LINHA_01.SC89_1012CLOSED
SEL_LINHA_01.SC89_1113ERROR

Access Type

Since this is a communication module in client mode, it requires a few characteristics of its own for parametrization of the Access Type field in the Points table:

For reading or command reception-type points (using writeEventsEnable, for getting tag changes):

  • ReadOnStartup= On;
  • ReadPooling= Never;
  • WriteEvent= Changed;
  • AccepUnsolictited = On;



For measure-type points (analog) - (Using get analog changes by sampling: Option Get analog changes by sampling):

  • Point type AI. AIF, CT EAO and FRZ.
  • Use WriteEventEnable = false: as shown in the SlaveAna picture below:


For command-type points:

Access Type must be defined ( as shown in the WriteSlave picture below )

    • ReadPooling = Never;
    • WriteEventEnable = off
    • WriteEvent= Changed;


  • No labels