Modbus

Protocol overview for Modbus covering history, register model, transport variants, addressing pitfalls, point-list intake, and diagnostics.

What Modbus Is

Modbus is a simple register-oriented industrial protocol used to exchange coils, discrete inputs, and 16-bit register values between clients and servers. Its core value is simplicity: if the register map is accurate and the transport is known, the protocol is straightforward to move between devices, gateways, and supervisory systems.

That same simplicity also explains most failures. Modbus problems are usually not deep protocol mysteries. They are addressing mistakes, register-type mistakes, serial-parameter mistakes, or data-representation mistakes such as word order.

Block diagram showing Modbus feeding a Chipkin QuickServer that can bridge data to BACnet, Modbus, and more than 220 protocols.

See QuickServer for Modbus protocol conversion options

For Chipkin-specific troubleshooting and field diagnostics, use the Modbus Troubleshooting Guide, the Modbus Addressing & Register Reference, and the Modbus Data Types & Byte Order Reference.

History

Modbus was introduced by Modicon in 1979 for PLC and controller communications. Its longevity comes from one practical fact: many devices can expose useful telemetry and command points with only a small set of function codes and a vendor register map. The protocol remained relevant because it stayed openly published and easy for vendors, integrators, and gateway platforms to implement.

That is why Modbus still appears everywhere from generators and chillers to meters, UPS systems, VFDs, environmental monitors, and protocol gateways.

Core Concepts

Every Modbus job depends on four foundations:

If one of those four assumptions is wrong, the integration can look healthy while still returning the wrong data.

Modbus-Specific Information

Modbus is intentionally small compared with object-oriented building protocols. That small surface area is a strength, but it also means the protocol depends heavily on documentation discipline and consistent interpretation.

Standard Data Model

Data TypeAccessTypical UsePractical Risk
CoilsRead/writeCommands, enables, start-stop bitsEasy to confuse with discrete inputs when the register map is poorly labeled
Discrete inputsRead-onlyStatus contacts and digital statesOften mistaken for coils by teams that only look at the point name
Input registersRead-onlyMeasurements, sensor values, countersCommon place to find scaled analog values that look wrong if data type is assumed incorrectly
Holding registersRead/writeSetpoints, configuration, writable valuesMost common table in field work, but also the most common source of off-by-one mistakes

For deeper data-family coverage, use Modbus Coils, Modbus Discrete Inputs, Modbus Input Registers, and Modbus Holding Registers.

Common Public Function Codes

Function CodeTypical UseWhy It Matters
01 Read CoilsRead writable bit pointsCommon for enable states and relay outputs
02 Read Discrete InputsRead status bitsUsed for dry-contact style status values
03 Read Holding RegistersRead analog and writable register dataMost common read path in real integrations
04 Read Input RegistersRead read-only analog valuesCommon for meters, drives, and power devices
05 and 06 Write Single Coil/RegisterSingle-point writesUseful for simple command or setpoint tests during commissioning
15 and 16 Write Multiple Coils/RegistersBlock writesImportant when controllers expect batched writes rather than point-by-point updates
23 Read/Write Multiple RegistersCombined read and write transactionShows up on more capable devices and gateways
43/14 Read Device IdentificationIdentify vendor and model informationHelpful when a device partially documents its register map or gateway identity

For deeper request-behavior coverage, use Modbus Function Codes and Modbus Register Map.

Framing, Limits, and Design Tradeoffs

Modbus uses a simple application PDU made from function code plus data. On serial links that PDU is wrapped with address and CRC fields, and on Modbus TCP it is wrapped with an MBAP header and port 502 transport. That simplicity is why packet captures are usually readable and why gateway troubleshooting is often faster than with more layered protocols.

The tradeoff is that Modbus does not natively describe point meaning, units, or engineering context. There is no universal discovery model for a register map, classic serial deployments still top out at 247 addressed devices on one segment, and polling remains the normal data-exchange pattern. In practice, that means the register map is part of the protocol, not optional paperwork.

That is also why Modbus commissioning depends so heavily on register-map quality, function-code discipline, and the right word-order interpretation for multi-register values.

Common Variants

VariantWhere It FitsWhy It Matters
Modbus RTUSerial RS-485 field trunksCommon for meters, drives, UPS systems, and legacy controllers
Modbus TCPEthernet and IP-connected devicesCommon for PLCs, power devices, and gateway-facing integrations
Modbus ASCIILegacy serial installsLess common, but still relevant on older equipment and service ports

How To Get The Points List

Modbus is usually not discoverable in the way BACnet is. In most jobs, the points list must come from documentation rather than from live browse alone.

Preferred sources, in order:

  • Vendor register map or protocol manual
  • Device integration guide or engineering submittal
  • Existing PLC, SCADA, or gateway configuration already proven onsite
  • A known-good validation pass with CAS Modbus Scanner

Use a scanner to validate the map, not to invent one from scratch.

[!CAUTION] If the customer does not have the register map, the real blocker is missing documentation, not missing software.

Devices that Support Modbus

QuickServer is Chipkin’s primary gateway for exposing non-Modbus systems as Modbus-facing points and for translating Modbus data into BACnet, MQTT, SNMP, and other targets.

Modbus RTU: ABB ACS880, AERMEC ANKi, ASCO 7000 UPS, Azonix BG300, Dwyer DigiHelic, Eaton UPS, E-Mon Class 3200, GE EPM6000, Liebert CRAC, Piller frequency converter, Sierra ATMF8000-NH

Modbus TCP: Condair humidifier, CORDEX CXC HP, Honeywell steam controller, Honeywell liquid level controller, Horner X4 PLC, ifm AL1342, Megatron chemical monitor, Modicon PLC, Sunbird P-IQ, Swegon Dual ERV Controller tblz366

Common Integration Targets

  • BACnet for supervisory BMS visibility and protocol conversion
  • SNMP for infrastructure and DCIM telemetry workflows
  • MQTT for broker-based telemetry and cloud publishing

Tools & Diagnostics

ToolTypeDescription
CAS Modbus ScannerScannerValidate registers, data types, and live values before revising a gateway config
CAS Modbus RTU ParserParserDecode raw RTU frames, CRC behavior, and function-code traffic
WiresharkPacket analyzerBest first tool for Modbus TCP capture and MBAP validation
QuickServerGateway and diagnostics platformConvert Modbus data to BACnet, MQTT, SNMP, and 220+ other protocols while exposing diagnostics that separate source-side health from target-side presentation

Frequently Asked Questions

What is the difference between Modbus RTU and Modbus TCP?

Modbus RTU runs over serial RS-485 with CRC-based framing. Modbus TCP runs over Ethernet and wraps the same data model inside a TCP session.

What is the most common Modbus integration error?

Off-by-one addressing is still the most common failure. Many manuals show 40001-style references while tools and gateways often expect zero-based offsets.

Why do 32-bit values look wrong even when communication works?

That is usually a data-type or word-order mismatch rather than a transport failure.

Do all Modbus devices use holding registers?

No. Devices may use coils, discrete inputs, input registers, or holding registers. The vendor map is authoritative.

What should I collect before a Modbus project starts?

At minimum: the register map, transport type, serial or TCP settings, device model, firmware revision, and one known-good engineering value.

Reference Documents

Protocol Logo Attribution

Credit: Unknown author via Wikimedia Commons

Source: https://commons.wikimedia.org/wiki/File:Logo_of_Modbus.svg

License: Public domain text logo; may still be subject to trademark restrictions.