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)) |