Объект '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)
Вернуться на верх