Как вы сказали, входные регистры Modbus представляют собой 16-битные целые числа без знака. Поэтому без какого-либо преобразования они ограничиваются диапазоном: 0 - 65535. Для 32-разрядных значений без знака обычно (в Modbus) объединяются два регистра.
Например, старшие 16 битов могут быть сохранены в 40006, а младшие 16 битов в 40007.
Итак, если вы читали значение 2271560481 (гекс 0x87654321), вы бы прочитали 34661 (0x8765) с адреса 40006 и 17185 (гекс 0x4321) из местоположения 40007. Затем вы бы объединили их, чтобы получить реальная стоимость.
Я не знаю код Qt Modbus, но, расширив свой пример кода, вы, вероятно, можете прочитать оба значения одновременно, выполнив что-то вроде этого:
readUnit(QModbusDataUnit::InputRegisters, 40006, 2);
и объединить их
quint32 value = result.value(0);
value = (value << 16) | result.value(1);