Qt C : считывание данных с нескольких подчиненных устройств с использованием класса Modbus RTU (RS485)

c #qt #serial-port #modbus #rs485

#c #qt #последовательный порт #modbus #rs485

Вопрос:

Я попытался считывать значения с 1 датчика температуры, используя класс Qt modbus следующим образом :

 QModbusDataUnit(QModbusDataUnit::InputRegisters, /*startAddress*/ 1000, /*numberOfEntries*/ 1 );
 

Теперь я хочу считывать значения с разных подчиненных устройств (один и тот же порт с разным идентификатором устройства).

Я попробовал pymodbus, поскольку его функции имеют аргумент идентификатора устройства (пример: unit = 0x03) :

 result = client.read_input_registers(0x03E8 ,1, unit=0x03)
 

Но я не могу понять, как сделать то же самое с помощью Qt.

Приветствуется любая помощь.

Ответ №1:

Это не так просто, как вы могли подумать, и QtModbus не очень хорошо документирован, но я думаю, вам нужно сделать это в запросе, используя serverAddress в качестве идентификатора подчиненного устройства:

 QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit amp;read, int serverAddress)
 

Смотрите здесь некоторые (не очень) подробности.