2017-05-31 148 views
0

Modbus TCP/IPのマルチマスタに奇妙な問題があります。私はModbusシリアルがマルチマスターをサポートしていないことを知っています。しかし、いくつかの文書を見たとき、彼らはModbus TCPがマルチマスターをサポートしていると言いました。Modbus TCPのマルチマスタ

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

私はすべてのマスターがスレーブからデータを受け取ることができると期待しましたが、実際には マスターはスレーブと通信しているだけで、他のマスターはデータを受信できませんでした。彼らは "MBCHNL_RESP_STATUS_CANCELED"を意味する戻り状況 "3"を受信しました。

この構成では、この動作は正しいですか? "マルチマスター/複数の同じ要求"がスタックでサポートできないのか、マルチマスターを動作させる他の方法があるのだろうかと思います。

答えて

1

この問題の回答が見つかりました。要するに、マスタが速すぎてスレーブチャネルが混雑していました。私はこのようなモードバススタックのすべてのタイプを保証することはできませんが、その場合はそうでした。

"MBCHNL_RESP_STATUS_CANCELED"という返信メッセージは、TMWスタックコードのメッセージキューから来ました。これは、これが重複要求ではないことを確認するためのチェックコードがあるからです。したがって、スレーブチャネルは3つのマスタからのメッセージを同時に処理できず、各マスタのメッセージはそれぞれのキューに残りました。

私はTriangle Microworksに同じ質問をしました。私は先週彼らのopnionを受け取りました。 "...複数のチャンネルを使用することができます(各チャンネルには固有のIP /ポートの組み合わせが必要です)。 1秒間に2秒が速すぎる可能性があります。 "

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

コミュニケーションは以前よりも流暢です。それはより連続的に見えます。場合によっては、マスターは数秒間を受け取ることができませんが、数秒後には再びうまく通信します。

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

関連する問題