1

直列に接続されたさまざまな電気メーターのレイディングをキャプチャするためにJamodRTUを使用しています。modbus timeoutexception=1200msを設定しました。何が起こっているのか、1つのメーターにpingを実行していて、結果(または読み取り)が得られない場合、同じシリーズで接続されている次のメーターに移動します。ただし、前のメーターが読み取り値をアプリケーションに送り返し、そのメーターの読み取り値が新しいメーターまたは次のメーターのために保存される場合があります。

この問題を解決するために、nport管理者(comポートを管理するため)のネットワークタイムアウトを5000ミリ秒から500ミリ秒に短縮しました。しかし、それが恒久的な解決策だとは思いません。遅れて届くメッセージを回避したり、対応するメーターですべてのメッセージにマークを付けたりする方法はありますか?

4

2 に答える 2

2

各MODBUS応答には、メッセージ内に埋め込まれたデバイス送信元アドレスがあります。それを読むことはあなたの問題を解決します。

于 2012-06-01T07:53:27.093 に答える
0

Modicon Modbus プロトコル リファレンス ガイド PI–MBUS–300 Rev. J の10 ページから

住所フィールドの処理方法

メッセージ フレームのアドレス フィールドには、2 文字 (ASCII) または 8 ビット (RTU) が含まれます。有効なスレーブ デバイス アドレスは、10 進数で 0 ~ 247 の範囲です。個々のスレーブ デバイスには、1 ~ 247 の範囲のアドレスが割り当てられます。マスターは、メッセージのアドレス フィールドにスレーブ アドレスを配置することにより、スレーブのアドレスを指定します。スレーブが応答を送信すると、応答のこのアドレス フィールドに自身のアドレスを配置して、どのスレーブが応答しているかをマスターに知らせます。

アドレス 0 は、すべてのスレーブ デバイスが認識するブロードキャスト アドレスに使用されます。Modbus プロトコルが上位レベルのネットワークで使用される場合、ブロードキャストが許可されないか、他の方法に置き換えられる場合があります。たとえば、Modbus Plus は、トークンのローテーションごとに更新できる共有グローバル データベースを使用します。

そのため、スレーブ アドレスを追跡し、指定されたスレーブ アドレスによって受信時に値を割り当てることができます。getUnitID()これは、すべての応答オブジェクトからアクセスできる必要があります。

于 2012-05-31T19:03:20.037 に答える