背景:QModbusTcpClient
を使用していますModbus/TCP
ネットワークに接続されたデバイスからコンテンツを読み取ろうとしています。その目的のために、私は基本的にタイプは(アドレスが1000
に等しく、HoldingRegisters
あるパラメータとしてQModbusDataUnit::QModbusDataUnit(RegisterType type, int address, quint16 size)
でQModbusClient::sendReadRequest
を呼び出すのQt C++(Qtのバージョン5.7.0)に(7および10でテスト)Windowsプログラムを書かれています別のアドレスである可能性がありますが、この特定の問題では重要ではありません)。サイズは、デバイスから読み取るデータの長さです。QModbusTcpClientのデータサイズの制限
問題:size
が63
以下の場合、すべて正常に動作します。この値を超えようとすると、エラーが発生します。これは、プログラムをテストしているデバイスに依存しますが、一般的に無効なリクエストです。
テスト:私はいくつかの実際のデバイスで、同じ結果を得るModbus/TCP
simulatorでこれをテストした
- 、すなわち
size
< =63
- >大丈夫。 >size
63
- >エラー Modpoll
別の側面から、私は63
レジスタ
いくつかの研究よりも大きいsize
と同じデバイスとシミュレータからのデータチャンクを読み取ることができます:Hereは、それが記載されています、確かに制限がありますが、それは128バイトの16ビットレジスタに等しい256バイトです。言い換えれば、私の読み込み試行の限界を超えています。
私の疑惑:それはQModbusTcpClient
以上63
レジスタを読み出すことはできませんことが表示されます。
質問:QModbusTcpClient
を使用してこのような問題を経験したことがありますか?また、2回のパスでデータを読むことを除けば、この制限を克服する方法はありますか?