Поиск ведомых устройств с помощью Python pymodbus
У меня есть прибор, подключенный к COM-порту компьютера и общающийся с ним по протоколу Modbus. К этому прибору может быть подключено до 40 таких же ведомых приборов. Как с использованием Pymodbus найти все ведомые приборы? Я знаю, что, чтобы понять нужный ли тип устройства я нашел по определенному адресу, мне нужно сделать запрос к регистру 976 и если он ответит числом 60, значит все верно. Я делаю это следующим образом:
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
def get_slaves(port):
client = ModbusClient(method='rtu', port=port, stopbits=2, bytesize=8, parity='N', baudrate=19200)
client.connect()
slaves = []
for i in range(1, 250):
try:
response = client.read_holding_registers(address=976, count=1, unit=i)
registers_values = response.registers
print(registers_values)
# if registers_values[0] == 60:
slaves.append(i)
print(slaves)
except:
print('ошибка')
continue
print(slaves)
То есть т.к. у master-устройства может быть до 250 slave-устройств, я прохожу по всем возможным адресам с помощью параметра unit функции read_holding_registers. Такой опрос занимает довольно много времени, т.к. приходится ждать около 1 секунды, если по адресу вообще нет устройства. Можно ли как-то заранее узнать на каких адресах подключены ведомые устройства?