DNP3 OPC Server Configuration Guide
DNP3 OPC Server Configuration Guide
html
Home Protocols Link Drivers Interfaces Features FAQ Prices IOServer Users
Pilih Bahasa ▼
Channel Configuration
File Transfer Directory If not blank, then restrict all file transfer activities in the slave to this directory.
Put all devices attached to this port online at startup. For multi-dropped devices when each device takes more than
Force all devices online at start up
30 seconds to start up.
Never Never request for Data Link confirmation. Disable link layer retry.
Data Link Confirm Mode Always request Data Link confirmation. The port.Timeout is used as the link layer
Always
timeout, the port.Retries is used as the link layer retry.
1 of 7 2/13/2019, 6:22 AM
DNP3 OPC Server Configuration Guide http://www.ioserver.com/dnp3.html
Device Configuration
Station Address of Slave. A device with an address of 65535 is used to send broadcast commands such as Freeze or Operate to all devices on a
Slave Station Address
channel.
If Enable, all timestamp read and written to the slave are assumed to be based on UTC (Coordinated Universal Time) time. Otherwise local
Use UTC Time time is used. Use of UTC time is recommended, it is the responsibility of each OPC client in different time zones to convert the UTC time to
local time for display.
The value of DNP objects are written to this file at device shutdown. The next time the device is started up, it will use this information to
restore the time stamp of DNP objects. Leave this field blank if restoration of timestamp is not necessary, otherwise specify a different filename
Object File
for each device. Writing a 0 value to .Backup will cause the current values of DNP3 object to be written to this file. Writing a 1 value to .Backup
will restore the values from this file.
The DNP3 Master will ensure that all changes to static objects are saved to the object file within this time. The DNP3 Slave will ensure new
Object File Update
object file is loaded in within this time. Set to 0 to disable this feature. e.g. A value of 0.1 in a DNP3 master will ensure that all changes to
Time
static objects are saved to the object file within 0.1 second.
Log SOE (Sequence of Events) to log file.
Master.2.3.0 DNP3 event object 2, variation 3 and index 0 from device Master
Master.32.4.0 DNP3 event object 32, variation 4 and index 0 from device Master
2 of 7 2/13/2019, 6:22 AM
DNP3 OPC Server Configuration Guide http://www.ioserver.com/dnp3.html
When enabled in a DNP3 master, all received DNP3 events objects will routed to the .SOE tag. Writes to the .SOE tag will cause a DNP3 event
to be generated in the DNP3 Slave.
Enable SOE Tag The .SOE tag is string (VT_BSTR) with the format
Digital : object.variation.index,status(hex),optional timestamp
Analog: object.variation.index,status(hex),analog value,optional timestamp
Enable Level 3 commands, this option should only be enable if the RTU support the following level 3 command:
Start/Stop Qualifiers in Poll and Freeze commands
Use Level 3
Pattern Control Block and Pattern Mask objects
commands
Assign class
Enable/Disable Unsolicited Message
Enable Freeze Writing to analog inputs will cause FREEZE command to be issued, otherwise WRITE command will be issued.
Enable Unsolicited
Enable the transmission of unsolicited messages for Slave.
Messages
Execute Pulse on/off Pulse on/off, Close and Trip commands from the DNP master are executed with the correct on/off time. If disabled, the command from the DNP
commands master is encoded as a 32 bit value that can be passed on to other DNP masters.
Time offset between clocks on Slave station and Master station. Each DNP3 slave clock must be accurate, but the actual clock of each DNP3
slave can be set to any time or not set all. With DNP3 time synchronization, each DNP3 slave will automatically adjust the timestamp it sends
to the master based on the time difference it calculated during the time synchronization procedure. In IOServer DNP3 slave this time offset is
displayed in DNP Slave.Time offset. If you want the DNP3 slave to send unsynchronized time, then you will need to turn off time
synchronization by clearing the Needtime internal indication before a DNP3 master connects to it.
Time Offset
The following OPC Gateway item will turn off the Needtime internal indicator as soon as the device comes online.
Source: 0
Destination: Device.80.1.NeedTime
Trigger: Device.Status
Event data older than Event lifetime are discarded by the slave. Each write to an object, will cause an event to be generated. All events will be
Event Lifetime accumulated indefinitely at the DNP3 slave until they are transmitted and confirmed by the DNP3 Master. e.g. A value of 0.5 will discard all
events older than 30 minutes. The number of events currently stored in each class is indicated by Events(Total, Class 1, Class 2, Class 3).
Unsolicited data buffer time, a value of zero means that events are sent immediately. A non zero value allows the slave to pack more events
Event Update Time
into a single frame for transmission to the master.
Control Output Close
A close command (Pulse On/Close:65) to control output x will cause the control output x + offset to be operated.
Address Offset
Binary Input Change When sending more than N Binary Input Change with Time (2.2) objects, convert them to Time and Data (51.1) and Binary Input Change with
with Relative Time Relative Time (2.3) objects.
Class 0 are static data, these are the current value of the data in the RTU. Class 1, 2 and 3 are event data, these are data changes (possibly
with time stamp) of the data in the RTU. Each event object in the RTU can be assigned to class 1, 2 or 3. Belonging to a class does not imply
any sort of priority. Most RTU will statically assign a default class to each event object. More advance RTU allows the user to assign the class of
Poll Type each event object. Level 3 RTU allows the Master to assign the class of each event object dynamically. Event data are used to update the DNP3
Master database. Event data are normally polled at a much faster rate than static data. Class 0 poll are issued at a very slow rate to keep DNP3
Master database is up to date. The RTU will respond with all its static data points to a class 0 poll, which could be quite substantial for large
RTU. The RTU will respond only with data changes to class 1, 2 or 3 polls.
Interval between poll for that poll type. A poll interval of 7 seconds with a sync time of 0 seconds means that the master will poll the device at
following times (starting from midnight): 0,7,14,...,63,70.
The Device Polling schedule can be paused by writing a value of 2 to the Device.Enable tag. Other possible values are:
Start of poll time within poll interval. A poll interval of 7 seconds with a sync time of 2 seconds means that the master will poll the device at the
Sync Time
following times (starting from midnight): 2,9,16,...,65,72.
Enable Unsolicited Enable the reception or transmission of unsolicited messages for that class
Maximum number of items requested per class poll (supported only by level 2 slaves). Use 0 for no limit. This is used to limit the amount of
Items data that a level 2 slave may return per poll. Use -1 to stop DNP Master from issuing event poll whenever the class internal indication flag from
the RTU is set for this class. Use -1 to stop DNP Slave from setting the class internal indication flags.
List of objects/data points to be assigned to this class (supported only by level 3 slaves). Assigning a data point to class 0 stops that slave from
producing event object for that data point. Examples of objects:
1 All variations and indexes for object 1
1.1 Variations 1 for object 1
1.1.1-20 Indexes 1 to 20 for variation 1 for object 1
Objects
You can suppress the sending of object 10 in static responses by setting the Objects column in Class 1, 2 or 3 to 10.1 10.2
Setting the Objects column in Class 0 to 10 will stop the DNP3 Slave from generating Binary output events (object 11)
Setting the Objects column in Class 0 to 40 will stop the DNP3 Slave from generating Analog Output events (object 42)
3 of 7 2/13/2019, 6:22 AM
DNP3 OPC Server Configuration Guide http://www.ioserver.com/dnp3.html
Variable Types
The OPC Browse Server Address Space will show all the available data of each Slave station based on information received from the Slave station. To find out what type of
data is available, connect to IOServer, using the built in OPC Server explorer, add a group then add item to see the available data types.
1.2.1 is the 8 bit byte value of the status (online, state and etc.,) of Object 1, variation 2, index 1.
1.2.1.State is the Digital value of the state of object 1, variation 2, index 1.
1.1.1 is the Digital value of the state of object 1, variation 1, index 1.
Maximum Data Link Frame Size (octets) Maximum Application Fragment Size (octets)
Transmitted 292 Transmitted Configurable between 200 and 16000
Received 292 Received 2048
Setting the Application Layer Fragment Size to less than 249 will stop the device from sending Multi-fragments.
4 of 7 2/13/2019, 6:22 AM
DNP3 OPC Server Configuration Guide http://www.ioserver.com/dnp3.html
For analog outputs, the 41.x.x will be set to 255 when the write command is issued. The result code of the response will be reported in 40.x.x
Writing to the first output object x by OPC/DDE clients will cause second output block y to be written to the RTU:
Without Status With Status 32 Bit 16 Bit Short Real Long Real
10.1, 12.1 or 12.2 or 12.3 10.2, 12.1 or 12.2 or 12.3 40.1, 41.1 40.2, 41.2 40.3, 41.3 40.4, 41.4
After the response to a write to an output is received, a read is issued to read back the new value of the output. After the write, the result code of the operation is
available in 12.1 for binary outputs and 41.x for analog outputs. The meaning of the result code are:
0 Request accepted, initiated, or queued.
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
1
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 Request not accepted because Local/Remote switch is in Local position
10 Request not accepted because it was prevented or inhibited by a local automation process. i.e. .LocalForce of that point is set.
255 Set by the driver, when the command is issued.
Maximum number of CROB (Control Relay Output Object 12.1) objects issued in a single message is limited by the Input Queue Length parameter for that port.
Maximum number of analog output (41.x) objects issued in a single message is limited by the Input Queue Length parameter for that port.
Pattern Control Block and Pattern Mask (12.2 and 12.3) are only issued if the Use Level 3 command option is enabled and the Input Queue Length parameter for that
port is greater than one.
CROB (12.1) and analog output (41.x) are permitted together in a single message.
Binary Outputs
Binary Output with status (10.2) and Binary Output (10.1) are declared as unsigned long, the 32 bit value is interpreted as follows:
Bits 0..7 (8 bits) is the Control Code.
Control Code Action
1 Pulse On - The point is turned on for on time, then turned off for off time.
2 Pulse Off - The point is turned off for off time, then turned on for on time.
3 Latch On
4 Latch Off
65 Pulse On/Close
129 Pulse On/Trip
+16 Queue
+32 Clear
Bits 8..15 (8 bits) is Count - 1. i.e. Use a value of zero to specify a count of 1.
Bits 16..22 (7 bits) is the pulse on time.
Bits 23-29 (7 bits) is the pulse off time.
Bit 30-31 (2 bits) is the pulse time factor.
For pulse on/pulse off code with count of 1 and not queued, Bits 16..29(14 bits) is the pulse time
Time
Step Size 7 Bit Pulse 14 Bit Pulse
Factor
0 1 ms Up to 127 ms Up to 16.384 seconds
1 100 ms Up to 12.70 seconds Up to 1638.4 seconds
2 10 seconds Up to 1,270 seconds Up to 163,840 seconds
3 1000 seconds Up to 127,000 seconds Up to 4,294,000 seconds
Writing a 0 or 1 to "10.2.x.State" object will cause control code 4 or 3 to be written to the output block object respectively.
Writing a 2 to 10.2.10 will pulse 10.2.10 off with Direct Operate.
Writing a 1 to 10.2.10.SO will pulse 10.2.10 on with Select and Operate.
Writing a 1 to 10.1.10.SO,bool will latch on 10.2.10 with Select and Operate.
Writing a 0 to 10.2.10.State will latch off 10.2.10 with Direct Operate.
Writing 845416705 (hex 0032640901) to 10.2.10.SO will pulse 10.2.10 on 10 times with 100ms on and 100ms off time with Select and Operate.
Writing 0 to Device.10.1.2.SO.3000,bool will issue control code 2 (Pulse Off) with an off time of 3000 ms with Select and Operate
Writing 1 to Device.10.1.2.DO.3000,bool will issue control code 1 (Pulse On) with an on time of 3000 ms with Direct Operate.
Writing 0 to Device.10.1.2.SO.3000.1,bool will issue control code 129 (Trip/Pulse On) with an on time of 3000 ms
Writing 1 to Device.10.1.2.SO.3000.1,bool will issue control code 65 (Close/Pulse On) with an on time of 3000 ms
Master Devices will accept both time-tagged and non-time-tagged for all event data. The Time of Occurrence in received event data will be used as the item timestamp
for the static data. If none is available then the time when the data is acquired is used. Each item reported by our OPC Server to any OPC client contains the value,
timestamp and quality of the item. This is a standard feature of OPC.
Every single SOE received from the slave RTU will be reported to the interested OPC client via the static data. It is up to the OPC client to accept (not ignore) and use
the VTQ (value, timestamp and quality) information correctly. IOServer will never issue multiple changes for a particular object in each advise to the OPC client. You
can inserting a delay between each advise by setting the Preference.SOE Interval parameter. Try to use as small value as you can (less than 50ms).
e.g. If the slave reports 2.3.0 (Binary Input Change with relative time), then the OPC client can see the new value and timestamp in 1.1.0 or 1.2.0.State
5 of 7 2/13/2019, 6:22 AM
DNP3 OPC Server Configuration Guide http://www.ioserver.com/dnp3.html
Slave Devices
Objects.variations in the slave are only created when they are first read or written to by OPC/DDE clients.
Default class assignment
Class 0 All static data and 10 12 40
Class 1 All Binary Input/Output Events(1)
Class 2 All Analog Input/Output Events(30 31)
Class 3 All Counters Events(20 21)
Writing to first static object x by OPC/DDE clients will cause second event object y to be reported. e.g. Writing to static object 1.1.0 will create a 2.1.0
event object. Writing to static object 1.2.0.State will create a 2.2.0 event object.
Counter Frozen Counter
Binary
Input 32 Bit 16 Bit 32 Bit Delta 16 Bit Delta 32 Bit 16 Bit 32 Bit Delta 16 Bit Delta
The device Event Update Time is used to delay the transmission of unsolicited event data messages to allow the slave to pack more data into a frame for
transmission. Static data are sent in unsolicited messages when the OPC/DDE clients add new objects.
Enable/Disable unsolicited Function are supported.
Time tagged binary input events always use Relative time when polled by event polls.
Sends static data in unsolicited Responses when device restarts.
Counter Roll Over at 16/32 bits for 16/32 bits counter respectively.
Writing User specified timestamp to DNP3 Slave
File Transfer
Writing to the ".File" Object initiate file transfer operations, The write command is a string of the form:
Operation,RTUFile,PCFile,UserName,Password. Use ".FIO" instead of ".File" for RTU that support the legacy implementation of 70.1 object.
Example:
Write the string "Write,rtucfg.pcc,C:\RTU\PCFilename" to RTU.File to upload the file PCFileName to the RTU.
Write the string "rtucfg.pcc" to RTU.70.8 to activate it.
Master Slave
Class 1,2,3
Station Station Class 0 Poll Mode of Operation (The lower numbered ones are
Poll
Unsolicited Unsolicited Interval the most efficient)
Interval
Mode Mode
1. Quiescent Operation - Never poll any Slave, and all
1 1 0 0
communication is unsolicited report-by-exception.
2. Unsolicited Report-by-Exception Operation. Most
1 1 0 Non Zero communication is unsolicited, but also polls for event
data.
3. Unsolicited Report-by-Exception Operation. Most
1 1 Non zero 0 communication is unsolicited, but poll for static data to
keep its database up to date.
4. Unsolicited and Polled Report-by-Exception
1 1 Non zero Non zero Operation. Most communication is unsolicited, but also
polls for event data and static data.
0 x 5. Polled Report-by-Exception Operation. Polls for event
Non zero Non Zero
x 0 data and static data.
6 of 7 2/13/2019, 6:22 AM
DNP3 OPC Server Configuration Guide http://www.ioserver.com/dnp3.html
0 x
0 Non Zero 6. Poll for event data only.
x 0
0 x 7. Poll for static data only. Event data is never
Non zero 0
x 0 requested.
8. Poll Static Data Operation - Polls for the specific
0 x static data it requires. Not recommended because it is
very inefficient when the number of points is high and
0 0
changes are infrequent. Event data are never
x 0 requested. Polling rate will be controlled by the OPC
Group or DDE update time.
Poll for event data - Poll for class 1, class 2 and class 3 data.
Poll for static data - Poll for class 0 data.
The DNP3 master can be scheduled to perform regular polling for class 0, 1, 2 or 3 data. The OPC client can also perform demand poll by writing a 0 to object 60.1, 60.2,
60.3 or 60.4.
e.g Writing a 0 to 60.4 will cause a Class 3 read to be issued to the RTU
writing a 0 to 60.0 will cause a read function code to be issued for Class 1, 2, 3 and 0 data
writing a 4 to 60.0 will cause a disable unsolicited message function code to be issued for Class 1, 2 and 3
OPC clients are allowed access to static (1, 20, 30) or output objects (10, 40)
OPC clients are not allowed access to events (2, 22, 32) or output block objects (12, 41).
Events received will be reflected in their static objects, eg. received events objects 2.1, 2.2 or 51.1/2.3 will be reported in static objects 1.1 or 1.2.
e.g if we allowed OPC client to access 2.1, but the RTU send 2.2 or 51.1/2.3 then the OPC client will never see any 2.1 events.
OPC clients writing to 10.1 or 10.2 output objects will cause the appropriate object 12.1, 12.2 or 12.3 object to be issued to the DNP Slave. If we allowed OPC client
access to 12, then the OPC client will have to use separate tags to read (10) and write (12) to the same point.
Using TCP/IP
DNP3 masters are normally configured as TCP/IP clients and DNP3 slaves are normally configured as TCP/IP servers
When a DNP3 master is configured as a TCP/IP server. The DNP3 master will remain online when the slave disconnects and will go offline when there is no activity for
more than twice the port watchtime or poll intervals.
Performance
IOServer running on a Pentium 4, 2.8 GHz PC under Windows 2000 Advanced Server reading from a DNP3 Slave device over TCP/IP. Test configuration file
Binary Input Event with Time (2.3) 180,000 events per second
32 Bit Counter Change Event with Time (22.5) 130,000 events per second
32 Bit Analog Input Change Event with Time (32.3) 130,000 events per second
DNP3 FAQ
Home | Protocols | Link Drivers | Interfaces | Features | FAQ | Prices | IOServer Users
7 of 7 2/13/2019, 6:22 AM