Qt C++:使用 Modbus RTU 类(RS485)从多个从站读取数据

Posted

技术标签:

【中文标题】Qt C++:使用 Modbus RTU 类(RS485)从多个从站读取数据【英文标题】:Qt C++ : read data from multiple slaves using Modbus RTU class (RS485) 【发布时间】:2021-12-07 20:45:11 【问题描述】:

我尝试通过以下方式使用 Qt modbus 类从 1 个温度传感器读取值:

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

现在我想要的是从不同的从站读取值(不同的设备 ID 的相同端口)。

我尝试了 pymodbus,因为它的函数有设备 id 参数(例如:unit=0x03):

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

但我不知道如何使用 Qt 来做同样的事情。

感谢任何形式的帮助。

【问题讨论】:

【参考方案1】:

这并不像您想象的那么简单,并且 QtModbus 没有很好的文档记录,但我认为您需要在查询中使用 serverAddress 作为您的从站 ID:

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

请参阅here 了解更多(不多)详细信息。

【讨论】:

以上是关于Qt C++:使用 Modbus RTU 类(RS485)从多个从站读取数据的主要内容,如果未能解决你的问题,请参考以下文章

标准modbus-rtu通信协议是485通信吗?

RS485 Modbus-RTU设备给出的错误是什么?

RS485 MODBUS RTU通信协议

modbus tcp 到 rtu的转换

MODBUS RTU通讯协议简介

泓格WINPAC主机与第三方模块rs 485 modbus rtu通信测试