from serial import ModbusRTU
# пины для UART
rtu_pins = (34, 35)         # (TX, RX)
# номер UART
uart_id = 0
slave_addr = 10
# инициализация устройства Modbus RTU
client = ModbusRTU(
    addr=slave_addr,    # адрес слейва
    pins=rtu_pins,      # пины UART
    baudrate=9600,      # скорость
    data_bits=8,        # количество бит данных
    stop_bits=1,        # количество стоп-бит
    parity=None,        # четность
    ctrl_pin=12,        # пин для управления направлением передачи
    uart_id=uart_id     # номер UART
)
# иниициализация регистров
register_definitions = {
    "COILS": {
        "EXAMPLE_COIL": {
            "register": 123,
            "len": 1,
            "val": 1
        }
    },
    "HREGS": {
        "EXAMPLE_HREG": {
            "register": 93,
            "len": 1,
            "val": 19
        }
    },
    "ISTS": {
        "EXAMPLE_ISTS": {
            "register": 67,
            "len": 1,
            "val": 0
        }
    },
    "IREGS": {
        "EXAMPLE_IREG": {
            "register": 10,
            "len": 1,
            "val": 60001
        }
    }
}
# use the defined values of each register type provided by register_definitions
client.setup_registers(registers=register_definitions)
while True:
    try:
        result = client.process()
    except Exception as e:
        print('Exception during execution: {}'.format(e))