← All Posts

Modbus Poll Tool: How to Read and Write Registers on macOS (2026)

A Modbus poll tool is the single most important piece of software an automation engineer carries in the field. It is the program you open when a power meter reads zero, when a solar inverter will not respond, or when you need to verify that a PLC is actually writing the correct setpoint to register 40001. Without a working Modbus polling tool, commissioning grinds to a halt.

The concept is straightforward: the tool acts as a Modbus master, repeatedly sending read and write requests to slave devices at configurable intervals. Each request targets a specific register address and returns the live value. This is what "polling" means in the Modbus world — a continuous cycle of queries that keeps a table of register values updated in real time. For background on the protocol itself, see our What Is Modbus? primer.

This guide explains what a Modbus poll tool does, which function codes and register types it supports, why most options are Windows-only, and how to poll Modbus devices on macOS using MacTools Modbus Poll — a native Mac application that requires no virtualization.

What Does a Modbus Poll Tool Do?

Modbus is a master-slave protocol. One device (the master, also called the client in Modbus TCP terminology) initiates every transaction. The other devices (slaves, or servers) only respond when addressed. A Modbus poll tool is software that runs on your computer and acts as that master. It sends requests, receives responses, and displays the results.

Every request specifies three things: the slave address (also called unit ID, from 1 to 247), the function code (which determines the type of operation), and the register address and quantity. The slave responds with the requested data or an error code. If you are new to register addressing and the differences between the four register types, our Modbus register types guide covers it in detail.

Here are the standard function codes a Modbus polling tool should support:

  • FC01 — Read Coils — reads the ON/OFF state of output coils (addresses 00001–09999). Used for relay outputs, digital outputs, and contact closures.
  • FC02 — Read Discrete Inputs — reads the ON/OFF state of discrete inputs (addresses 10001–19999). Used for digital inputs, limit switches, and status bits.
  • FC03 — Read Holding Registers — reads 16-bit registers that the device uses for configuration and control (addresses 40001–49999). This is the most commonly used function code. Power meters store voltage, current, and power values here. PLCs store setpoints here.
  • FC04 — Read Input Registers — reads 16-bit read-only registers (addresses 30001–39999). Typically used for measured values from sensors that cannot be overwritten.
  • FC05 — Write Single Coil — forces a single coil ON or OFF. Used to toggle a relay, start a motor, or enable a feature.
  • FC06 — Write Single Holding Register — writes a single 16-bit value to a holding register. Used to change setpoints, baud rates, device addresses, and other configuration parameters.
  • FC15 — Write Multiple Coils — writes ON/OFF states to a block of consecutive coils in a single transaction.
  • FC16 — Write Multiple Holding Registers — writes a block of consecutive 16-bit values. Essential for writing 32-bit values (which span two registers) and for bulk configuration.

A complete Modbus poll tool handles all eight of these function codes. Read-only tools that only support FC03 are fine for basic monitoring, but commissioning and troubleshooting require write capability. When a device is not behaving as expected, being able to write a known value to a register and verify the device response is the fastest way to isolate whether the problem is in the communication layer or the application logic.

The four register types map to different data and different permissions:

  • Coils (0x) — writable boolean values. Relay states, digital outputs, enable/disable flags.
  • Discrete Inputs (1x) — read-only boolean values. Digital inputs, alarm states, limit switch positions.
  • Input Registers (3x) — read-only 16-bit numeric values. Sensor readings, measured voltage/current, status words.
  • Holding Registers (4x) — read/write 16-bit numeric values. Configuration parameters, setpoints, control words, counters.

The polling tool presents these values in a table where each row is a register and the value column updates at the configured poll interval. Typical intervals range from 100 milliseconds (for fast process monitoring) to 60 seconds (for slow-changing values like daily energy totals).

Why Most Modbus Poll Tools Are Windows-Only

The Modbus protocol was published in 1979 by Modicon (now Schneider Electric). For decades, industrial automation software was developed exclusively for Windows because that was the only OS running on plant-floor engineering stations. Tools like Modbus Poll by ModbusTools, Simply Modbus, and QModMaster were all built as Windows applications using Win32 serial port APIs and Windows-specific UI frameworks.

When Apple Silicon Macs began replacing Windows laptops in engineering workflows around 2021–2022, the Modbus tool ecosystem did not follow. The Windows-only tools remained Windows-only. The serial port landscape on macOS was different enough from Windows (no COM ports, different driver model for USB-to-RS485 adapters) that porting was not trivial.

The standard workaround has been to run Parallels Desktop ($99/year subscription) on macOS and install the Windows Modbus poll tool inside the virtual machine. This works for Modbus TCP over the network, but it is unreliable for Modbus RTU over USB-to-RS485 serial adapters. Apple Silicon Macs have known USB passthrough issues with FTDI and CH340 chips inside Parallels — adapters disconnect mid-poll, driver crashes are common, and latency is higher than native serial access.

The real cost adds up quickly:

  • Modbus Poll (Windows) — $129 for a single-user license
  • Parallels Desktop — $99 per year (subscription)
  • Total year-one cost — $228, plus $99 every subsequent year just to keep the VM running
The bottom line: the dominant Modbus polling software ecosystem is Windows-only, and running it on macOS through virtualization costs over $200 in year one with unreliable serial adapter support on Apple Silicon.

How to Use a Modbus Poll Tool

The workflow for polling a Modbus device is the same regardless of which tool you use. Here is the step-by-step process:

Step 1: Connect to the Device

For Modbus TCP: You need the device's IP address and the Modbus port (default 502). Some devices use non-standard ports like 5020 or 1502. You also need the unit ID (slave address), which is configured in the device's settings. Enter these into the connection dialog of your Modbus poll tool. The tool opens a TCP socket to the device.

For Modbus RTU: You need a USB-to-RS485 serial adapter connected to your computer. In the tool, select the serial port (on macOS this appears as /dev/tty.usbserial-* or /dev/cu.usbserial-*), then configure the serial parameters to match the device: baud rate (common values: 9600, 19200, 38400), parity (None, Even, Odd), stop bits (1 or 2), and the unit ID. The tool opens the serial port and begins framing Modbus RTU requests.

Mismatched serial parameters are the single most common cause of "device not responding" errors. If the device expects 9600 baud, Even parity, 1 stop bit and you send at 19200/None/1, every request will time out. Always verify these parameters against the device manual before polling. For a deeper comparison of the two transport layers, see our Modbus RTU vs TCP comparison.

Step 2: Configure the Poll

Select the register type you want to read (holding registers, input registers, coils, or discrete inputs), enter the starting register address, and specify how many consecutive registers to read. For example, to read the first 10 holding registers of a Schneider PM5560 power meter, you would select FC03 (Read Holding Registers), start address 0 (corresponding to register 40001), and quantity 10.

Set the poll interval. Faster intervals (100–500ms) are useful for watching rapidly changing values like instantaneous power. Slower intervals (1–10 seconds) are better for values that change gradually, like temperature or energy counters.

Step 3: Start Polling

Click Start (or the equivalent button in your tool). The Modbus poll tool begins sending read requests at the configured interval. Values appear in the register table and update on each successful response. If a request times out or the device returns an exception code (such as "illegal data address"), the tool displays the error.

Common exception codes to watch for:

  • Exception 02 — Illegal Data Address — the register address you requested does not exist on this device. Check the device's register map.
  • Exception 03 — Illegal Data Value — the value you tried to write is outside the allowed range for that register.
  • Exception 04 — Server Device Failure — the device received the request but failed to process it. Often a firmware issue.

Step 4: Write Values

When you need to change a setpoint or toggle a coil, select the target register in the poll table, enter the new value, and send the write command. The tool uses FC05, FC06, FC15, or FC16 depending on the register type and whether you are writing one value or multiple.

For example, to change the demand power threshold on a power meter from 500 kW to 600 kW, locate the register address in the device manual (say register 41000), type 600, and send an FC06 request. The device responds with the value it actually wrote — if the response matches, the write succeeded. If you get an exception, the device rejected the write (often because the value is out of range or the register is read-only at the current access level).

Key Features to Look For in a Modbus Poll Tool

Not all Modbus polling software is equal. Here is what matters in practice:

  • Both TCP and RTU support — Field work involves both Ethernet-connected devices (Modbus TCP) and serial RS485 bus devices (Modbus RTU). A tool that only does one forces you to switch between applications mid-commissioning. For a deeper look at the differences, see Modbus RTU vs TCP.
  • Write capability (FC05/06/15/16) — Read-only tools are sufficient for monitoring but useless for commissioning. You need to write setpoints, toggle coils, and configure devices. Make sure the tool supports all four write function codes.
  • Slave simulation mode — The ability to act as a Modbus slave device, not just a master. This lets you test SCADA systems, IoT gateways, and custom clients without physical hardware. Most Windows tools charge extra for this as a separate application.
  • Device templates — Pre-built register maps for real industrial devices (power meters, inverters, analyzers). Instead of manually entering register addresses from a PDF manual, you load a template and see labeled values instantly.
  • Serial adapter support — On macOS, the tool needs to talk directly to USB-to-RS485 adapters (FTDI, CH340, CP2102, Prolific) without requiring a virtual machine or kernel driver installation.
  • Communication logging — Raw frame logging with timestamps is essential for debugging timing issues, malformed responses, and bus contention problems.
  • 32-bit value support — Many devices store 32-bit values (floats, long integers, unsigned long) across two consecutive 16-bit registers. The tool should decode these correctly.

Comparison: Modbus Poll Tools

Feature
MacTools Modbus Poll
Modbus Poll (Windows)
Protocol support
TCP + RTU
TCP + RTU
Write capability
FC05/06/15/16
FC05/06/15/16
Slave simulation
Built-in
Separate $129 app
Device templates
6 built-in + custom
None
macOS native
Yes (Apple Silicon + Intel)
No (requires Parallels VM)
Price
$19.99 one-time
$129 + $99/yr Parallels
Feature
MacTools Modbus Poll
mbpoll (CLI)
Protocol support
TCP + RTU
TCP + RTU (limited RTU)
Write capability
Full (FC05/06/15/16)
Limited
Slave simulation
Built-in
None
Device templates
6 built-in + custom
None
macOS native
Yes (GUI)
Cross-platform CLI
Price
$19.99 one-time
Free

mbpoll is a free, open-source command-line tool that works on macOS. It is useful for quick one-off register reads, but it lacks a GUI, slave simulation, device templates, and full write support. For anything beyond a single register read, a dedicated GUI-based Modbus polling tool is significantly faster.

Frequently Asked Questions

What is a Modbus poll tool?

A Modbus poll tool is software that acts as a Modbus master to read data from and write data to Modbus slave devices. It sends requests using standard Modbus function codes (FC01 through FC06, FC15, FC16) to read coils, discrete inputs, input registers, and holding registers, and to write values to coils and holding registers. Engineers use Modbus polling software during commissioning, troubleshooting, and maintenance of PLCs, power meters, inverters, and other industrial equipment. The tool displays register values in a table that updates at a configurable poll interval, giving you a live view of what the device is reporting.

Is there a Modbus poll tool for macOS?

Yes. MacTools Modbus Poll is a native macOS application that provides full Modbus master polling and slave simulation with both TCP and RTU support. It runs directly on macOS without Windows, Parallels, or any virtualization. It supports Apple Silicon (M1 through M4) and Intel Macs, and works with USB-to-RS485 serial adapters including FTDI, CH340, and CP2102 chips. It includes device templates for Schneider PM5560, SMA solar inverters, ABB analyzers, and other common field devices.

Can I write to registers with a Modbus poll tool?

Yes. A Modbus poll tool with write capability can send write commands using function codes FC05 (write single coil), FC06 (write single holding register), FC15 (write multiple coils), and FC16 (write multiple holding registers). This lets you change setpoints, toggle outputs, and configure devices during commissioning. MacTools Modbus Poll supports all four write function codes over both Modbus TCP and Modbus RTU. You select the register, enter the new value, and the tool sends the request and confirms the device accepted the write.

Try MacTools Modbus Poll

Native Modbus poll tool for macOS. Master and slave modes. TCP + RTU. Device templates for PM5560, SMA, ABB, and more. $19.99 one-time, no subscription.

Get MacTools Modbus Poll — $19.99

Other macOS Protocol Tools You Might Need

Besides Modbus polling, field engineers working on macOS often need other protocol tools. MacTools also includes:

Related: Full SCADA System

Need continuous monitoring with dashboards, alarms, and trending across all your devices? Voltrus SCADA supports Modbus, OPC-UA, Siemens S7, Allen-Bradley, DNP3, BACnet, MQTT, and more. Lifetime license from $249.

Further Reading