Объект 'NoneType' не является итерируемым - pyModbusTCP.client
Я делаю программу на django python, которая считывает метки с plc по modbus, программа считывает таблицу, в которой находятся ip адреса и адреса регистров, она делает цикл и в каждом обороте вставляет адрес нового регистра. Все работает отлично в первом раунде при чтении первой записи, но проблема возникает когда она анализирует вторую запись в таблице с циклом, она возвращает 'None', что мне не понятно, так как эти записи уже были индивидуально проверены и если они имеют такое значение, даже запустив тот же код и прочитав отдельный тег, если он работает, ошибка возникает когда я хочу прочитать несколько тегов одновременно из таблицы с циклом.
Я использую read_holding_registers для чтения записей и использую библиотеку:
from pyModbusTCP.client import ModbusClient
Вот мой код:
while True:
try:
queryset_modbus = tagopc_link_device.objects.filter(tag_type='MODBUS').values_list('id', 'tag_name', 'tag_type', 'source_ip_address', 'source_ip_port', 'register_len', 'modbus_type', 'device_id', 'digitalinput_id')
if queryset_modbus:
utility.logInfo('modbus', 'Reading Tags from model - modbus', "INFO")
try:
for row in queryset_modbus:
#Parameters
...
tag = row[1]
modbusAddress = int(tag) - 1
longitud = row[5]
# Parameters Modbus
...
modbus = ModbusClient()
modbus.host(ip)
modbus.port(port)
modbus.unit_id(1)
try:
#--------------------------------------------------
# Read registers
modbus.open()
registersModbus = modbus.read_holding_registers(modbusAddress, longitud)
modbus.close()
# Convert type of data to int
convertType = [str(reg) for reg in registersModbus]
a_string = "".join(convertType)
registers = int(a_string)
if registers == 1:
try:
# LOGIC
....
....
try:
modbus.write_single_register(modbusAddress, 0)
utility.logInfo("modbus", "Value inserted correctly ", "INFO")
except Exception as err:
utility.logInfo("modbus", "Error " + str(err), "ERROR")
except Exception as err:
utility.logInfo("modbus", "Error " + str(err), "ERROR")
except Exception as err:
utility.logInfo("modbus", "Error reading tags from PLC " + str(err), "ERROR")
except Exception as e:
utility.logInfo('modbus', 'Error reading tags from model: ' + str(e), "ERROR")
except Exception as e:
utility.logInfo('modbus', 'General Error: ' + str(e), "ERROR")
time.sleep(0.5)