1

Modbus TCP/IP のマルチマスターに奇妙な問題があります。Modbus Serial がマルチマスターをサポートしていないことは知っています。しかし、ドキュメントを見たところ、Modbus TCP はマルチマスターをサポートしていると書かれていました。

Modbus TCP マスターとして 3 つの tcp クライアントを構成し、Modbus TCP スレーブとしてサーバーを構成しました。各 Modbus TCP マスターは、定期的に 2 秒ごとにデータを取得するように Modbus TCP スレーブに要求します。また、マスターデバイスには Triangle MicroWorks 製の Modbus TCP スタックを使用しています。

すべてのマスターがスレーブからデータを受信できると思っていましたが、実際には 1 つのマスターだけがスレーブとうまく通信し、他のマスターはデータを受信できませんでした。彼らは、「MBCHNL_RESP_STATUS_CANCELED」を意味するリターンステータス「3」のみを受け取りました。

この構図で、この振る舞いは正しいですか?「マルチマスター/複数の同じリクエスト」がスタックでサポートされていないか、マルチマスターを動作させる他の方法があるのだろうか。

4

1 に答える 1

2

この問題の答えを見つけました。つまり、マスターが速すぎて、スレーブ チャネルがビジーでした。すべてのタイプの modbus スタックがこのように動作することを保証することはできませんが、その場合はそうでした。

戻りメッセージ「MBCHNL_RESP_STATUS_CANCELED」は、TMW スタック コードのメッセージ キューからのもので、これは、これが重複した要求ではないことを確認するためのコードがあるためです。そのため、スレーブ チャネルは 3 つのマスターからのメッセージを同時に処理する余裕がなく、各マスターのメッセージはそれぞれのキューに残りました。

Triangle Microworks に同じ質問をしたところ、先週彼らの意見を受け取りました。「...複数のチャネルを持つことが許可されています(各チャネルには一意のIP /ポートの組み合わせが必要です。1つのチャネルだけでは2秒は速すぎるかもしれません....期間を3秒に変更してみてください.」

完璧な回答ではないと思うので、以下のようにリクエストのロジックを改善しました。- 2 秒ごとに送信しますが、応答しか受信しなかった場合。

以前よりコミュニケーションがスムーズになりました。より継続的に見えます。マスターが数秒間受信できない場合がありますが、数秒後には再び正常に通信できます。

それが完璧な答えではないことも知っています。より良い答えが見つかったら、もう一度書きます。

于 2017-06-21T08:20:14.677 に答える