DNP3 Select-Before-Operate (SBO): Safe Control Outputs
DNP3 carries commands that trip breakers, start pumps, and drive analog setpoints across hundreds of remote sites over noisy links. A single corrupted, duplicated, or misrouted command message could energize the wrong feeder or overflow the wrong tank. Select-Before-Operate (SBO) is DNP3's structural defense against that — a two-step handshake that makes a critical control much harder to fire by accident.
This guide explains how SBO works, when to use it instead of Direct Operate, and how the select timeout protects against stale commands. For where controls fit in the wider DNP3 model, see class polling.
The Two-Step Handshake
- Select. The master sends a Select message naming the control point and the intended value (e.g. Binary Output 3 → LATCH_ON). The outstation acknowledges the Select but performs no action. The point is now "armed" for a short window.
- Operate. The master sends an Operate message for the same point with the same value, within the select timeout. The outstation verifies the match and only then executes the control.
Direct Operate — the One-Shot Alternative
DNP3 also defines Direct Operate, where select and operate happen in a single message. It is faster and simpler but offers none of SBO's guards. Use Direct Operate only for non-critical points where an erroneous command has no safety consequence — an indicator lamp, a logging enable. Anything that moves a breaker, a valve, or a drive gets SBO.
The Select Timeout
Each armed Select has a configurable select timeout (commonly a few seconds). If the matching Operate does not arrive within the window, the outstation cancels the Select and any subsequent Operate is rejected. This is the anti-replay mechanism: a delayed Operate cannot act on a stale, forgotten Select.
Binary vs Analog Controls
SBO applies to both control object types:
- Binary Output (BO) — trip/close, latch on/off, pulse. The Operate carries the output code (LATCH_ON, LATCH_OFF, PULSE, etc.).
- Analog Output (AO) — setpoint values. The Operate carries the analog value and an operating mode (constant value, ramp, step).
Confirmation and Status
After an Operate executes, the resulting point-state change generates an event in the normal class event stream (see class polling). The master therefore sees confirmation of the control through the same mechanism it sees every other change — the point value moves, an event is queued, and the next class poll returns it.
Testing Controls Safely
Never exercise SBO against a live device until you have run it against a simulator. The pattern to validate: Select returns success, an Operate with a mismatched value is rejected, an Operate after the select timeout is rejected, and a correct Operate within the window changes the point. MacTools DNP3 Explorer issues Direct Operate and SBO on macOS with confirmation dialogs, and pairs with the built-in outstation simulator so you can prove all four cases safely before pointing controls at real equipment.
Run DNP3 Controls on macOS
MacTools DNP3 Explorer — Direct Operate and Select-Before-Operate on BO/AO points, with a built-in outstation simulator for safe testing. Native macOS app.
Get MacTools DNP3 ExplorerFrequently Asked Questions
What is DNP3 Select-Before-Operate?
Select-Before-Operate (SBO) is a two-step DNP3 control pattern for critical outputs. The master first sends a Select for a specific point and value; the outstation acknowledges but does nothing. The master then sends an Operate with the same point and value within a timeout window; only then does the outstation perform the action. SBO prevents a duplicate, stale, or misrouted Operate from accidentally tripping a breaker or driving a setpoint.
What is the difference between Direct Operate and Select-Before-Operate?
Direct Operate performs the control in a single message — select and operate happen atomically. It is faster but offers no guard against an erroneous or duplicated command reaching the device. SBO splits the operation into a Select (which arms but does not act) and a separate Operate (which acts only if it matches the prior Select within a timeout). Critical points like breaker trip/close use SBO; non-critical points like indicator lamps may use Direct Operate.
What happens if the Operate arrives after the select timeout?
The outstation cancels the selection and rejects the Operate, returning an error. Each selected point has a configurable select timeout (commonly a few seconds). This is the safety mechanism: a delayed or replayed Operate cannot act on a stale Select, because the Select has already expired and cleared.
Can I test DNP3 controls on macOS?
Yes. MacTools DNP3 Explorer issues both Direct Operate and Select-Before-Operate on Binary Output and Analog Output points on macOS, with confirmation dialogs that mirror the two-step pattern. Pair it with the built-in outstation simulator to safely exercise controls before pointing them at a real device.
Related: Utility SCADA
Voltrus SCADA runs DNP3 controls in production with operator confirmation, audit logging, and role-based permissions. From $249 lifetime.