DNP3 Guide
Connect SCADA RTUs and outstations over DNP3 (TCP, TLS, serial).
Overview
DNP3 (Distributed Network Protocol) is a SCADA protocol widely used to link control centers with RTUs and IEDs across electric, water, and oil & gas utilities. ControlBird provides DNP3 in two roles. The Master role acts as a client: it polls outstations, receives unsolicited events, and issues commands. The Outstation role acts as a server: it listens for master connections, exposes ControlBird tags as DNP3 points, and sends unsolicited responses.
Each role connects over TCP, serial (RS-232/RS-485), or TLS. You set everything up in the IO Manager app. Each DNP3 point is a tag with a dotted ID that is unique in your tenant, for example Substation.Feeder1.Current. See the IO Manager guide for the app as a whole.
Master vs. Outstation
Choose Master when ControlBird should poll or command remote field devices. Choose Outstation when ControlBird should present its own data to an upstream SCADA master. A single ControlBird node can run both roles at once with separate connections.
Transports
| Transport | Connection settings |
|---|---|
| TCP | Host (master) or listen address (outstation), and port. The TCP port defaults to 20000. |
| Serial | Serial port, baud rate (default 9600), data bits (default 8), stop bits One or Two, and parity None, Odd, or Even |
| TLS | Host or listen address, port (default 20001) |
Connect a DNP3 device
In the IO Manager, open the Tags section and choose Add tag to start Create Custom Device.
- Pick the card for your transport: DNP3 TCP, DNP3 Serial, or DNP3 TLS, with the role Client (Master) or Server (Outstation).
- Enter a Device Name and fill in the connection form: the host or listen address, port, and the link addresses below.
- In the Points step, choose Add Point for each value. Give it a tag ID, a type, a source path, and a direction.
- Finish the wizard. The connection starts and your tags show live values in the Tags section.
To expose a tag to an upstream master instead, create a Server (Outstation) connection, select the tag, choose Publish… on its detail, pick that connection, then choose Expose read-only, Expose with write-back, or Configure… to edit the tag ID and address first.
Link-layer addressing
DNP3 uses 16-bit link-layer addresses to tell the master from the outstation on a shared link. The master address defaults to 1 and the outstation address defaults to 1024. Both ends of a connection must use the same pair.
Tag source addresses
A DNP3 tag's source path names one point by its object group and point index, written ObjectGroup:Index. For example, AnalogInput:5 is analog input point 5. The index is a whole number from 0 to 65535.
| Object group | Access | Tag value |
|---|---|---|
| BinaryInput | Read-only | Boolean |
| BinaryOutput (CROB) | Writable | Boolean (commandable) |
| DoubleBitBinary | Read-only | Choice (4 states) |
| AnalogInput | Read-only | Float |
| AnalogOutput | Writable | Float (commandable) |
| Counter | Read-only | Integer |
| FrozenCounter | Read-only | Integer |
Double-bit binary values map to a choice with four states: 0 = Intermediate, 1 = DeterminedOff, 2 = DeterminedOn, and 3 = Indeterminate.
The remaining point settings depend on the role:
- Master output points: a command mode,
DirectOperateorSelectBeforeOperate. - Outstation points: an event class,
Class1,Class2, orClass3, for unsolicited reporting.
Command modes
Use DirectOperate for immediate, single-message execution of an output. Use SelectBeforeOperate when the outstation requires the safer two-step select/confirm/operate handshake before acting on a command.
Polling and events
A DNP3 master combines periodic integrity polls (which request all data) with more frequent event polls (which request only changed data), plus optional unsolicited responses pushed by the outstation. The timing settings on the connection form are:
| Setting | Default | Meaning |
|---|---|---|
| Integrity poll interval | 60 s | How often the master requests all data. |
| Event poll interval | 5 s | How often the master requests changed data. |
| Response timeout | 5 s | How long the master waits for a reply before retrying. |
Unsolicited response classes
Outstations can push events without being polled. Each event carries the class set on its tag: Class 1 (urgent), Class 2 (normal), or Class 3 (background). Unsolicited reporting is on by default and can be turned off per class on the connection form. An outstation's event buffer holds 100 events by default.
Examples
Master over TCP
Host: 192.168.1.100
Port: 20000
Master address: 1
Outstation address: 1024Tag: read an analog input
Tag ID: Substation.Feeder1.Current
Source Path: AnalogInput:5
Direction: ReadTag: command a binary output
Tag ID: Substation.Breaker1.Close
Source Path: BinaryOutput:0
Direction: Write
Command mode: SelectBeforeOperateNotes
- The TLS transport has a skip certificate verification setting that bypasses peer certificate validation. Leave it off in production.
Skipping certificate verification is a security risk
Turning on skip certificate verification disables peer certificate validation and exposes the connection to man-in-the-middle attacks. Use it only for short-lived local testing, never on a routed or shared network.
For a hands-on introduction to connecting a device, see walkthrough step 6: Connect Your First Device.