Automation Glossary • DNP3 Analog Output Block

What Is a DNP3 Analog Output Block?

Merobix Engineering • • 6 min read

Not every DNP3 command is on or off. When a master needs to send a target value - a pump speed setpoint, a flow limit, a valve position percentage - it uses the analog output block. If you are mapping setpoints or checking why a written value did not take, you need to know this object. This page explains the DNP3 analog output block, its variations, and how it differs from the digital CROB.

Back to Blog

DNP3 Analog Output Block in one line: A DNP3 analog output block is the object, in group 41, that a master uses to send a numeric setpoint to an outstation - a target value such as a speed reference or position command. It comes in variations for 16-bit, 32-bit, and floating-point values, and it is delivered by a select, operate, or direct-operate command just like a digital control. The outstation returns an analog output status object so the master can read back the commanded value.

Sending a Setpoint With Group 41

Where a binary output uses the control relay output block, an analog output uses group 41. The master builds an analog output block carrying the target value and the point index, and sends it with a control function code. The outstation applies the value to the corresponding output point - for instance passing a speed reference through to a drive or a position command to a control valve.

The object comes in several variations by number format: 32-bit integer, 16-bit integer, single-precision float, and double-precision float. The master picks the variation that matches how the outstation expects the setpoint, which the outstation's device profile lists. Because the value can be scaled or ranged inside the outstation, a setpoint that lands wrong is often a scaling issue rather than a delivery failure - the same class of problem seen when fixing wrong DNP3 analog values on the input side.

Analog Output Versus CROB

The analog output block and the DNP3 CROB are parallel objects for two different kinds of command. A CROB drives a binary output with trip, close, pulse, or latch semantics; an analog output block writes a numeric value. Both can be sent as a direct-operate for speed or wrapped in a select-before-operate handshake for safety, and both return a status object.

The read-back path is worth noting. After writing an analog output, the master can read the analog output status object (group 40) to confirm the value the outstation is actually holding. This closes the loop on a setpoint the way analog output readback does in a controller, letting the master verify the commanded value took effect rather than assuming the write succeeded because it was acknowledged. That distinction matters when a command is accepted at the protocol level but not applied at the device.

Group 41 Variations at a Glance

ObjectVariationFormat
Group 41Variation 132-bit signed integer
Group 41Variation 216-bit signed integer
Group 41Variation 3Single-precision floating point
Group 41Variation 4Double-precision floating point
Group 40Variations 1-4Analog output status, read back by the master

The choice is not cosmetic. A 16-bit integer setpoint can only carry values from -32768 to 32767, so any engineering value outside that range has to be scaled before it is sent, and the outstation must apply the matching inverse scaling. Floating-point variations avoid the scaling step entirely, but only if the outstation supports them - the device profile is the document that says which variations each output point accepts. Sending a variation the point does not support is one of the quiet ways a setpoint write fails.

Reading the Status Code When a Write Fails

Every control response carries a per-point status code, and it is the first thing to read when a setpoint does not take. SUCCESS means the outstation accepted the command. TIMEOUT and NO_SELECT mean a select-before-operate sequence broke down: the operate arrived too late or without a matching select. FORMAT_ERROR points at a malformed request or an unsupported variation. NOT_SUPPORTED means the point does not accept that control at all. LOCAL means the outstation is switched to local control and is refusing remote commands, and HARDWARE_ERROR means it tried and the output stage itself failed.

The important habit is separating protocol failure from application failure. A rejected status code is a protocol-level answer you can act on directly. A SUCCESS followed by no change in the process means the outstation accepted the value but something downstream - local logic, an interlock, a drive not in remote - discarded it, which is a different hunt, covered in troubleshooting failed DNP3 control operations.

A Worked Setpoint, Symbolically

Take a pump speed reference on point index N, where the drive expects a raw value from 0 to R representing zero to full speed S. To command a target speed T, the master computes raw = (T / S) x R, rounds to an integer, and sends it in a group 41 variation 2 block to index N as a direct-operate. The outstation answers with SUCCESS and applies the raw value to the output point.

Verification is a read of group 40 for the same index: it should return the raw value just written. If the readback is right but the pump speed is wrong, check the scaling assumptions at both ends - if the master scales against R but the outstation maps its raw range differently, the number is delivered faithfully and is still wrong, the same failure shape as a mis-scaled analog input. If the readback itself differs from what was written, look for local clamping: many outstations limit an output to a configured range and hold the clamped value instead.

Frequently Asked Questions

What object group is a DNP3 analog output?

The analog output block is group 41, and the analog output status a master reads back is group 40. Group 41 carries the setpoint command; group 40 reports the value the outstation is currently holding on that output point.

How is an analog output different from a CROB?

A CROB commands a binary output with trip, close, pulse, or latch actions. An analog output block writes a numeric setpoint. One is for on/off and relay control, the other for target values like a speed reference or valve position.

Can a DNP3 setpoint use select-before-operate?

Yes. An analog output block can be sent as a direct-operate in one request, or armed with a select and confirmed with an operate. Critical setpoints often use the two-pass select-before-operate sequence for the same safety reason binary controls do.

Can an analog output generate events like an analog input does?

Yes, where the outstation supports it. Group 42 carries analog output events and group 43 carries analog output command events, letting a master learn that an output value changed or that a command was attempted. Support varies by device, so the device profile is the reference for whether these groups are populated.

Why does the group 40 readback differ from the value I wrote?

The usual causes are scaling applied inside the outstation, a configured output limit clamping the commanded value, or local logic overriding the remote setpoint after it was accepted. Reading group 40 immediately after the write and comparing it against the commanded raw value tells you whether the outstation is holding your number or a modified one.

Sources and verification

This page references the protocol specifications published by the organizations below. Editions, product capabilities, and documentation change over time - confirm current requirements and specifications directly with the source.

Merobix is not affiliated with, endorsed by, or sponsored by these organizations; their names are used only to identify the standards and products discussed.

More in PLC, RTU, HMI & DCS
Analog Output Module  •  AO Readback and Fault State  •  DNP3 CROB Control Output  •  Block averaging  •  Discrete vs Analog I/O  •  All PLC, RTU, HMI & DCS →
Free SCADA operator training
Merobix University - 70 video lessons & 261 quiz questions, from first login to compliance reporting. No demo call required.
Start free →