sudo apt-get install python3-pymodbus
(maybe python2 also works, but I didn't check)
(see modbus_server.py)
(see modbus_client.py)
#!/usr/bin/env python | |
from pymodbus.client.sync import ModbusTcpClient as ModbusClient | |
client = ModbusClient('localhost', port=5020) | |
client.connect() | |
res = client.read_holding_registers(1, 10, unit=1) | |
print(res.registers) |
#!/usr/bin/env python | |
from pymodbus.server.sync import StartTcpServer | |
from pymodbus.datastore import ModbusSequentialDataBlock | |
from pymodbus.datastore import ModbusSlaveContext, ModbusServerContext | |
store = ModbusSlaveContext( | |
di = ModbusSequentialDataBlock(0, [15]*100), | |
co = ModbusSequentialDataBlock(0, [17]*100), | |
hr = ModbusSequentialDataBlock(0, [18]*100), | |
ir = ModbusSequentialDataBlock(0, [19]*100)) | |
context = ModbusServerContext(slaves=store, single=True) | |
#‘di’ - Discrete Inputs initializer | |
#‘co’ - Coils initializer | |
#‘hr’ - Holding Register initializer | |
#‘ir’ - Input Registers iniatializer | |
StartTcpServer(context, identity=None, address=("localhost", 5020)) |