背后的故事:使用QModbusTcpClient
,我正在尝试从连接到Modbus/TCP
网络的设备中读取内容。为此,我在Qt C++ (QtVersion5.7.0)中编写了一个Windows程序(在7和10上进行了测试),它实际上调用了以QModbusDataUnit::QModbusDataUnit(RegisterType type, int address, quint16 size)
作为参数的QModbusClient::sendReadRequest
,其中类型为HoldingRegisters
,地址等于1000
(可能是另一个地址,对于这个特定问题并不重要),大小是从设备中读取所需数据的长度。
问题:所有东西在size
小于或等于63
寄存器时运行良好。任何超越这个值的尝试都会导致一个错误,这取决于我正在测试程序的设备,但是通常会说无效请求。
测试:
size
<= 63
-> okay;size
> 63
->错误Modpoll
允许我使用大于63
寄存器的size
从相同的设备和模拟器读取数据块。一些研究: 这里说,确实有一个限制,但它是256个字节,等于128个16位寄存器,换句话说,远远高于我的读取尝试的限制。
我的怀疑:似乎QModbusTcpClient
不允许读取超过63
寄存器的内容。
问题:是否有人在使用QModbusTcpClient
时遇到过这样的问题,除了在两次传递中读取数据之外,还有什么方法可以克服这个限制?
https://stackoverflow.com/questions/40710632
复制相似问题