pyhoff.modbus.SimpleModbusClient#
- class pyhoff.modbus.SimpleModbusClient(host, port=502, unit_id=1, timeout=5, debug=False)#
Bases:
object
A simple Modbus TCP client
- host#
hostname or IP address
- Type:
str
- port#
server port
- Type:
int
- unit_id#
ModBus id
- Type:
int
- timeout#
socket timeout in seconds
- Type:
float
- last_error#
contains last error message or empty string if no error occurred
- Type:
str
- debug#
if True prints out transmitted and received bytes in hex
- Type:
bool
Instantiate a Modbus TCP client
- Parameters:
host (
str
) – hostname or IP addressport (
int
) – server portunit_id (
int
) – ModBus idtimeout (
float
) – socket timeout in secondsdebug (
bool
) – if True prints out transmitted and received bytes in hex
Example
>>> client = SimpleModbusClient('localhost', port = 502, unit_id = 1) >>> print(client.read_coils(0, 10)) >>> print(client.read_discrete_inputs(0, 10)) >>> print(client.read_holding_registers(0, 10)) >>> print(client.read_input_registers(0, 10)) >>> print(client.write_single_coil(0, True)) >>> print(client.write_single_register(0, 1234)) >>> print(client.write_multiple_coils(0, [True, False, True])) >>> print(client.write_multiple_registers(0, [1234, 5678])) >>> client.close()
- close()#
Close connection
- Return type:
bytes
- Returns:
empty bytes object
- connect()#
Connect manual to the configured modbus server. Usually there is no need to call this function since it is handled automatically.
- Return type:
bool
- read_coil(address)#
Read a coil from the given register address.
- Parameters:
address (
int
) – The register address to read from.- Return type:
bool
|None
- Returns:
The value of the coil or None if error
- read_coils(bit_address, bit_lengths=1)#
ModBus function for reading coils (0x01)
- Parameters:
bit_address (
int
) – Bit address (0 to 0xffff)bit_lengths (
int
) – Number of bits to read (1 to 2000)
- Returns:
Bits list or None if error
- Return type:
list of bool or None
- read_discrete_input(address)#
Read a discrete input from the given register address.
- Parameters:
address (
int
) – The register address to read from.- Return type:
bool
|None
- Returns:
The value of the discrete input.
- read_discrete_inputs(bit_address, bit_lengths=1)#
ModBus function for reading discrete inputs (0x02)
- Parameters:
bit_address (
int
) – Bit address (0 to 0xffff)bit_lengths (
int
) – Number of bits to read (1 to 2000)
- Returns:
Bits list or None if error
- Return type:
list of bool or None
- read_holding_registers(register_address, word_lengths=1)#
ModBus function for reading holding registers (0x03)
- Parameters:
register_address (
int
) – Register address (0 to 0xffff)word_lengths (
int
) – Number of registers to read (1 to 125)
- Returns:
Registers list or None if error
- Return type:
list of int or None
- read_input_registers(register_address, word_lengths=1)#
ModBus function for reading input registers (0x04)
- Parameters:
register_address (
int
) – Register address (0 to 0xffff)word_lengths (
int
) – Number of registers to read (1 to 125)
- Returns:
Registers list or None if error
- Return type:
list of int or None
- receive_modbus_data()#
Receive a ModBus frame
- Return type:
bytes
- Returns:
bytes received or empty bytes object if an error occurred
- send_modbus_data(function_code, body)#
Send raw ModBus TCP frame
- Parameters:
unction_code – ModBus function code
body (
bytes
) – data
- Return type:
int
- Returns:
number of transmitted bytes or 0 if transmission failed
- write_multiple_coils(bit_address, values)#
ModBus function for writing multiple coils (0x0F)
- Parameters:
bit_address (
int
) – Bit address (0 to 0xffff)values (
list
[bool
]) – List of bit values to write
- Return type:
bool
- Returns:
True if write succeeded or False if failed
- write_multiple_registers(register_address, values)#
ModBus function for writing multiple registers (0x10)
- Parameters:
register_address (
int
) – Register address (0 to 0xffff)values (
list
[int
]) – List of 16 bit register values to write
- Return type:
bool
- Returns:
True if write succeeded or False if failed
- write_single_coil(bit_address, value)#
ModBus function for writing a single coil (0x05)
- Parameters:
bit_address (
int
) – Bit address (0 to 0xffff)value (
bool
) – Value to write (single bit)
- Return type:
bool
- Returns:
True if write succeeded or False if failed
- write_single_register(register_address, value)#
ModBus function for writing a single register (0x06)
- Parameters:
register_address (
int
) – Register address (0 to 0xffff)value (
int
) – Value to write (0 to 0xffff)
- Return type:
bool
- Returns:
True if write succeeded or False if failed