Data source examples
- Last UpdatedFeb 20, 2025
- 3 minute read
- PI System
- Adapter for DNP3 1.2
- Adapters
Minimum configuration for a single outstation
The following example is a configuration for a single outstation on a single TCP channel. The optional configuration parameters have been omitted, so the default values are used. With the default configuration, the DNP3 adapter accepts unsolicited responses and performs an integrity scan every hour, potentially triggering Discovery.
For more information about the default configuration, reference the Data source parameters.
{
"masterStationBehaviors": [
{
"id": "masterBehavior1",
"masterAddress": 1
}
],
"outstationBehaviors": [
{
"id": "outstationBehavior1"
}
],
"tcpChannels": [
{
"masterStationBehaviorId": "masterBehavior1",
"hostNameOrIpAddress": "outstation1.scadanetwork.int",
"outstations": [
{
"id": "Outstation1",
"dnpAddress": 10,
"outstationBehaviorId": "outstationBehavior1"
}
]
}
]
}
Example configuration for multiple outstations
The following example is a configuration for two outstations that are on one channel and one outstation that is on a separate channel. Rather than using the default configurations, many configuration options are expressed here.
There are two MasterStationBehaviors, one of which increases the data link layer timeout and retry count. This can be needed when operating with network conditions that are less than ideal. Any TCPChannel that references the master station behavior poorNetworkConditions uses these settings, while TCPChannels that reference defaultMasterBehavior uses the default settings.
There are three OutstationBehaviors: eventScans-integrityScan-noUnsolicited, busyOutstation, and class1Events:
The behavior eventScans-integrityScan-noUnsolicited deviates from the default configuration options by disabling unsolicited responses and scanning for events every 10 minutes. This type of configuration is useful if the outstation does not support unsolicited events or it may be more efficient to scan for events periodically.
The behavior busyOutstation deviates from the default configuration by increasing the application layer timeout, disabling the time sync, and disabling all integrity scans.
Note: Disabling the integrity scan prevents discovery. Event scans are disabled by default.
With this configuration, the DNP3 adapter only collects data if it is configured to collect unsolicited responses. This type of configuration is useful if the outstation is very busy. For instance, the adapter cannot be the only master communicating with this outstation, so another master station is responsible for synchronizing the outstation's time and polling for events. In addition, an integrity scan can put too much burden on the outstation if there are a large number of points.
The behavior class1Events deviates from the default configuration by disabling unsolicited responses, only performing an integrity scan on startup, and only scanning for events from points assigned to class 1. This configuration is useful if you are not interested in collecting data for points assigned to class 2 or class 3.
There are two TCPChannels configured. One channel has two outstations configured. This channel might represent a connection to a DNP3 gateway at a substation. The other TCPChannel only contains one configured outstation. This might represent a DNP3 device that is in a remote location.
{
"masterStationBehaviors": [
{
"id": "defaultMasterBehavior",
"masterAddress": 1
}
],
"outstationBehaviors": [
{
"enableUnsolicited": false,
"EventClasses": [
1,
2,
3
],
"eventScanPeriod": "00:10:00",
"id": "eventScans-integrityScan-noUnsolicited"
},
{
"applicationLayerTimeout": "00:00:30",
"enableTimeSync": false,
"id": "busyOutstation",
"integrityScanOnEventBufferOverflow": false,
"integrityScanOnStartup": false,
},
{
"integrityScanPeriod": "00:00:00"
"applicationLayerTimeout": "00:00:03",
"enableUnsolicited": false,
"EventClasses": [
1
],
"eventScanPeriod": "00:10:00",
"id": "class1Events",
"integrityScanOnEventBufferOverflow": false,
"integrityScanOnStartup": true,
"integrityScanPeriod": "00:00:00"
}
],
"tcpChannels": [
{
"hostNameOrIpAddress": "substation1.scadanetwork.int",
"masterStationBehaviorId": "defaultMasterBehavior",
"outstations": [
{
"dnpAddress": 10,
"id": "outstation10",
"outstationBehaviorId": "eventScans-integrityScan-noUnsolicited"
},
{
"dnpAddress": 100,
"id": "outstation100",
"outstationBehaviorId": "busyOutstation"
}
]
},
{
"hostNameOrIpAddress": "outstation11.scadanetwork.int",
"masterStationBehaviorId": "defaultMasterBehavior",
"outstations": [
{
"dnpAddress": 11,
"id": "Outstation11",
"outstationBehaviorId": "class1Events"
}
],
"port": 20001,
"ServerCertificateDnsName": "outstation11.scadanetwork.int",
"ServerPublicKey": "peerkey.pem",
"TLSValidationMode": "CASigned",
"TLSVersion": "1.2"
}
],
"TLSClientPrivateKey": "c:\\certs\\key\\adapterkey.pem",
"TLSClientPublicKey": "c:\\certs\\adaptercert.pem",
"TLSPrivateKeyPassword": "xyz123"
}