まず、Modbusはシリアルリンク上のマスタースレーブプロトコルであり、通信回線上には1つのホストしか存在できず、複数のホストは存在しません。ホストは1つですが、スレーブは複数存在できます。
Modbusの通信プロセスはすべてホストによって開始され、スレーブはホストからの要求を受信した後に応答し、スレーブはデータを送信しません。また、スレーブ間でデータを送信しません。
1. Modbusのアドレス規則
Modbusの各スレーブは、通信中にホストによって認識されるように、スレーブアドレスとも呼ばれるアドレスを持ちます。
スレーブノードアドレスはスレーブデバイスにとって一意でなければならず、バス上で一意のデバイスアドレスは1つだけです。つまり、スレーブデバイスのアドレスはバス上で競合することはできません。
スレーブには一意のデバイスアドレスがありますが、ホスト自体にはアドレスがありません。
Modbusがサポートするアドレス空間は256個で、以下の通り。
上の図からわかるように、子ノードに使用されるアドレス範囲は1 ~ 247であり、248 ~255が予約されています。重要なことに、0はブロードキャストアドレスであり、すべての子ノードがブロードキャストアドレスを認識できなければならない。
2. Modbusの通信モード
Modbusの通信モードには、ユニキャストモードとブロードキャストモードの2種類があります。
(1)ユニキャストモデル
ユニキャストモード:ホストがある子ノードにアクセスしようとするとき,子ノードのアドレスを介して1対1のアクセス方式である.子ノードがマスターノードから要求を受信した後、要求の種類に応じて対応する処理を完了すると、子ノードはマスターノードにメッセージを返します。これはしばしば“応答”と呼ばれます。図は以下の通り。
上の図から、マスターノードがスレーブノードに要求コマンドを送信することによって、スレーブノードはバスからマスターノードからの要求を受信し、マスターノードの要求コマンドを解析し、命令に従って対応するアクションを完了し、マスターノードの要求に応答してユニキャスト通信のプロセスを完了することがわかります。
実際、ユニキャストモードでは、Modbusトランザクションには2つのメッセージが含まれています。1つはホストが積極的に発行した“要求”メッセージで、もう1つはスレーブが返す“応答”メッセージです。
そして、ホストはスレーブの一意のアドレスによって達成されるスレーブにアクセスする準備ができ、スレーブはホストからのコマンドが自分に送信されたかどうかを識別し、スレーブの一意のアドレスによって識別します。
(2)放送モード
ブロードキャストモードは、ホストがバス上のすべてのスレーブにリクエストを送信するために使用するコマンドです。
ホストからのブロードキャストコマンドは一般にコマンドを書き込むためのものであり,ホストからのブロードキャストコマンドに対してスレーブが応答する必要はない.ブロードキャストモードの概略図は以下の通りです。
図からわかるように、ブロードキャストモードは一方通行であり、ホストはブロードキャストコマンドを送信し、スレーブはブロードキャストコマンドに応答しなくなり、データフローは一方向にのみ流れる。
注:バス上のすべてのスレーブは、ホストのブロードキャスト命令を認識できなければならず、アドレス0はブロードキャスト用であり、スレーブのアドレスとして使用できません。
3.マスター·マスタの状態特性
Modbusはマスターとスレーブの通信モードであるため、通信プロセスではマスターとスレーブ間の状態を知り、状態を通じてModbusの通信フローを理解する必要があります。(1)ホストの状態特性下の写真は
上の図から、ホストの通信プロセスに関するいくつかの情報を分析することができます。
1“アイドル”=待ち受けのリクエストなし。これは通常、最初の電源投入後の状態になりますホストは“アイドル”状態の場合にのみリクエストを送信できます。リクエストを送信すると、ホストは“アイドル”状態から“ビジー”状態になり、他のリクエストを送信できなくなります。
2)ユニキャストリクエストがスレーブに送信されると、ホストは“応答待ち”状態に入り、クリティカルタイムアウトタイミングカウンタが起動します。このタイムアウトを“レスポンスタイムアウト”と呼ぶ。マスターノードが“応答待ち”状態になるのを防ぎます。応答タイムアウトの時間は、実際のアプリケーションシナリオに依存します。
3)応答を受信すると、マスターノードはデータを処理する前に応答を検証します。場合によっては、検査結果が間違っていることがあります。望ましくない子ノードから応答を受信したり、フレームエラーを受信したりすると、応答タイムアウトは継続され、フレームエラーが検出されると再試行が行われる。
4)応答がタイムアウトしても応答が受信されない場合、エラーが発生します。マスターノードは“アイドル”状態に戻り、再試行要求を発行します。再試行の最大回数は、マスター·ノードの設定によって異なります。
5)ブロードキャストリクエストがシリアルバスに送信されると、子ノードからの応答はありません。しかし、マスターノードは、子ノードが新しいリクエストを送信するときに現在のリクエストを処理できるように遅延する必要があります。この遅延を“転换遅延”と呼ぶ。したがって、マスターノードは、別の要求を送信できる“アイドル”状態に戻る前に、“遷移遅延待ち”状態になります。
ユニキャストモードでは、応答タイムアウトは、任意の子ノードがリクエストを処理してレスポンスを返すのに十分な長さに設定する必要があります。ブロードキャスト変換遅延は、任意の子ノードがリクエストを処理し、新しいリクエストを受信できるように十分な長さでなければなりません。したがって、変換遅延はレスポンスタイムアウトよりも短くする必要があります。
フレームエラーの一般的な例は、各文字のパリティチェックとフレーム全体の冗長チェックです。
(2)スレーブの状態特徴下の写真は
上の写真からわかること:
1)“アイドル” =待機中のリクエストがない。これは通常、最初の電源投入後の状態です。
2)リクエストを受信すると、子ノードはリクエストで要求されたアクションを処理する前にパケットをチェックします。エラーが検出された場合、マスターノードにエラーを知らせる応答を送らなければならない。(エラーには、リクエストのフォーマットエラー、不正な動作、不正なアクセスアドレスが含まれます。
3)要求された動作が完了すると、ユニキャストメッセージ要求は、フォーマットでマスターノードに応答しなければならない。
4)子ノードが受信したフレームでエラーを検出した場合、応答は主ノードに返されません。
すべての子ノードは、診断情報を提供するModbus診断カウンタを定義して管理する必要があります。Modbus診断機能コードを用いることにより、これらのカウント値を得ることができる。最後に、マスターとスレーブの通信タイミング図を追加します。
上記のタイミング図では、上記のマスタースレーブ状態特性が記述されており、比較するとその意味がわかります。
发表回复