DNP3 Class 0, 1, 2, 3 Explained: Event Polling Strategy
The single feature that makes DNP3 a utility SCADA protocol rather than just another poll-response protocol is its class-based event model. Every point change an outstation detects is queued as an event, tagged with a priority class and a timestamp. The master does not re-read every point every cycle — it polls a small event backlog by class, retrieving only what changed, in priority order. Understanding Classes 0, 1, 2, and 3 is the key to understanding why DNP3 behaves the way it does.
This is a reference for what each class means and how masters use them. For the wider DNP3 context, see DNP3 vs Modbus.
Class 0 — The Full Snapshot
A Class 0 poll returns the current values of all points on the outstation — every Binary Input, Analog Input, and Counter, as they stand right now. It is not an event poll; it is a full rebuild of the master's picture of the device.
Masters issue Class 0 at two moments: at startup, to initialize the database; and after a communications loss, to recover anything missed while the link was down. Class 0 is bandwidth-heavy, so it is not polled cyclically in steady state — that is what Classes 1–3 are for.
Classes 1, 2, 3 — Prioritized Event Backlogs
When a point changes, the outstation queues an event with the new value, a timestamp, and the class assigned to that point. The three classes are priority tiers:
- Class 1 — highest priority. Critical alarms: breaker trip, protection operation, high-high level. Polled most often so these surface within seconds.
- Class 2 — medium priority. Status changes: breaker open/close, run/stop, mode changes.
- Class 3 — low priority. Analog changes that exceed a configured deadband: voltage, flow, level drift.
How the Master Polls
- Poll Class 1 frequently (every 1–2 s). Retrieve any queued high-priority events.
- Poll Class 2 on a slower cycle. Retrieve status events.
- Poll Class 3 slowest. Retrieve analog changes above deadband.
- Poll Class 0 only at startup or after a link loss.
Events come back in timestamp order within each class. The master applies them to its database in sequence, so the local copy reflects exactly what happened at the outstation, in order.
Unsolicited Reporting (Push)
DNP3 also supports unsolicited responses — the outstation pushes events to the master the moment they happen, without waiting for a poll. This cuts alarm latency on quiet links. Many systems run a hybrid: unsolicited for Class 1 alarms, periodic polling for Classes 2 and 3. The master must enable unsolicited reporting per class during configuration.
Assigning Points to Classes
Class assignment is part of outstation configuration. Typical mapping: protection/alarm Binary Inputs → Class 1; status Binary Inputs → Class 2; Analog Inputs → Class 3 (with a deadband). Counters may go to Class 3 or be frozen-and-read on a schedule. The right mapping is a utility engineering decision tied to alarm-response requirements.
Testing Class Polls on macOS
MacTools DNP3 Explorer issues Class 0/1/2/3 polls as a DNP3 master and renders the returned events with values, flags, and timestamps. Pair it with the built-in outstation simulator (see simulating an outstation) to generate class-tagged events and watch them come back in the right poll, in order — a complete way to validate a polling strategy before deployment.
Poll DNP3 by Class on macOS
MacTools DNP3 Explorer — DNP3 master with Class 0/1/2/3 polling, event display, and a built-in outstation simulator. Native macOS app.
Get MacTools DNP3 ExplorerFrequently Asked Questions
What is DNP3 Class 0?
Class 0 is a DNP3 poll that returns the current values of all points on the outstation — a full snapshot, not events. Masters issue a Class 0 poll at startup or after a communications loss to rebuild their entire picture of the device. It is bandwidth-heavy, so in steady state masters poll Classes 1–3 for events instead.
What is the difference between DNP3 Class 1, 2, and 3?
They are prioritized event backlogs. Class 1 holds the highest-priority events (critical alarms), Class 2 medium priority (status changes), Class 3 low priority (analog changes above a deadband). The master polls them in priority order so critical events are always retrieved first. Each point is assigned to a class in the outstation configuration.
How often should a DNP3 master poll each class?
Class 1 (critical) is polled most frequently — typically every second or two — so alarms appear quickly. Class 2 and 3 are polled less often. Class 0 is polled only at startup or after a link loss to rebuild the snapshot, not cyclically. Exact intervals depend on the link bandwidth and the utility's alarm-latency requirements.
What is unsolicited reporting in DNP3?
Instead of waiting to be polled, the outstation can send events to the master unsolicited (push) as soon as they happen. This reduces latency for critical alarms on quiet links. The master must enable unsolicited reporting per class during configuration. Many systems use a hybrid: unsolicited for Class 1, polled for Classes 2 and 3.
Related: Utility SCADA
Voltrus SCADA runs the full DNP3 poll cycle in production — Class 0/1/2/3, alarms, historian. From $249 lifetime.