0
0
Drone-programmingHow-ToBeginner · 3 min read

How to Use Modbus with Python: Simple Guide and Example

To use Modbus with Python, install the pymodbus library and create a client to connect to a Modbus server. Use the client methods like read_holding_registers or write_register to communicate with Modbus devices.
📐

Syntax

The basic syntax involves importing pymodbus, creating a Modbus client, connecting to the server, and calling read or write methods.

  • ModbusTcpClient(host, port): Creates a client for TCP connection.
  • connect(): Opens connection to the Modbus server.
  • read_holding_registers(address, count): Reads registers starting at address.
  • write_register(address, value): Writes a value to a register.
  • close(): Closes the connection.
python
from pymodbus.client.sync import ModbusTcpClient

client = ModbusTcpClient('192.168.1.10', port=502)
client.connect()
response = client.read_holding_registers(0, 2)
if not response.isError():
    print(response.registers)
client.close()
💻

Example

This example connects to a Modbus TCP server at IP 192.168.1.10, reads two holding registers starting at address 0, and prints their values.

python
from pymodbus.client.sync import ModbusTcpClient

client = ModbusTcpClient('192.168.1.10', port=502)
if client.connect():
    response = client.read_holding_registers(0, 2)
    if not response.isError():
        print('Register values:', response.registers)
    else:
        print('Error reading registers')
    client.close()
else:
    print('Failed to connect to Modbus server')
Output
Register values: [123, 456]
⚠️

Common Pitfalls

  • Not installing pymodbus before running code (pip install pymodbus).
  • Using wrong IP address or port (default Modbus TCP port is 502).
  • Not checking if connection was successful before reading/writing.
  • Ignoring error responses from Modbus server.
  • For serial Modbus RTU, using TCP client instead of serial client.
python
from pymodbus.client.sync import ModbusTcpClient

client = ModbusTcpClient('192.168.1.10', port=502)
# Wrong: Not checking connection
response = client.read_holding_registers(0, 2)
# Correct:
if client.connect():
    response = client.read_holding_registers(0, 2)
    if not response.isError():
        print(response.registers)
    client.close()
📊

Quick Reference

CommandDescription
ModbusTcpClient(host, port)Create a Modbus TCP client to connect to server
connect()Open connection to Modbus server
read_holding_registers(address, count)Read holding registers starting at address
write_register(address, value)Write a value to a register
close()Close the connection

Key Takeaways

Install pymodbus library to use Modbus with Python.
Always check if the client connects successfully before reading or writing.
Use the correct client type for your Modbus protocol (TCP or RTU).
Handle error responses to avoid silent failures.
Default Modbus TCP port is 502; ensure your device uses this or specify the correct port.