Modbus通信プロトコルは、産業オートメーションで一般的に使用されるプロトコルで、マスター(通常はクライアント)とスレーブ(通常はサーバー)間のデータ交換を可能にします。Modbus通信では、サーバ(スレーブデバイス)が要求を処理するために適切な応答を生成し、必要に応じて例外応答を送信する必要があります。この記事ではModbusレスポンスの生成と例外処理について詳しく説明します。
Modbus応答タイプ
Modbus通信では、リクエストの処理結果に応じて2種類の応答が生成されます。
- 肯定的なModbus応答これは通常の応答で、サーバーがリクエストを正常に処理したことを示します。この場合、レスポンスの機能コードはリクエストの機能コードと同じです。
- Modbus例外応答:この応答は、エラーまたは異常な状況が発生したことを示します。例外レスポンスの関数コードは、クライアントが例外レスポンスを認識できるように、リクエストの関数コードに0 x 80を加えたものになります。
Modbus例外応答の目的
Modbus例外応答の主な目的は、リクエスト処理中に検出されたエラーに関する情報をクライアントに提供することです。クライアントが通信問題の具体的な原因を理解し、適切な対策を講じるのに役立ちます。
Modbus例外応答の例外コード
例外応答には、エラーの原因を明確に示す例外コードが含まれています。以下は一般的なModbus例外コードとその意味です。
- 例外コード01 0x01-不正な機能コード:サーバーがリクエスト内のファンクションコードを認識していないか、処理できないことを示します。通常、スレーブデバイスがこの機能コードをサポートしていないことを示します。
- 例外コード02 0x02-不正なデータ·アドレス:要求に含まれるデータアドレスがスレーブの認証アドレスの範囲外であるため、要求されたアドレスが無効であることを示します。
- 例外コード03 0x03-不正なデータ値:要求に含まれているデータ値がスレーブの許容値の範囲外であるため、データ値が無効であることを示します。
- 例外コード04 0x04-サーバ障害要求された操作の実行中に、サーバに修復不可能な障害が発生したため、操作を続行できないことを示します。
- 例外コード05 0x05-確認サーバーがリクエストを受信したが、処理を完了するのに時間がかかることを示します。クライアントはサーバが処理を完了するまで待つ必要があります。
- 例外コード06 0x06-サーバーがビジー状態です。::サーバが他のコマンドでビジー状態で、クライアントは後でリクエストを再送信する必要があります。
- 例外コード0A 0x0A-ゲートウェイ障害:ゲートウェイまたはルータへのパスが無効であることを示します。ゲートウェイの過負荷または正しく設定されていない可能性があります。
- 例外コード0B 0x0B-ゲートウェイ·ターゲット·デバイスが応答できませんでした。:ターゲットスレーブがネットワーク上で見つからないことを示します。
Modbusレスポンスの生成
Modbusレスポンスを生成するには、サーバはまずリクエストを解析し、リクエストの内容と処理結果に基づいてレスポンスフレームを構築する必要があります。応答フレームはMBAPヘッダをプレフィックスとして使用し、トランザクションボディのデータを使用してMBAPヘッダを生成する必要がある。具体的なステップは:
- 要求内のユニット識別子をコピーして、トランザクションの本記事に格納します。
- Modbus PDUおよびユニット識別子フィールドのサイズを計算し、“長さ”フィールドに値を設定する。
- プロトコル識別子フィールドを0 x 0000(Modbusプロトコルを表す)に設定します。
- トランザクション識別子フィールドを初期要求に関連する値に設定し、格納します。
生成されたModbus応答フレームは、通信プロセスを完了するためにTCP接続を介して正しいModbusクライアントに送信する必要があります。
まとめ:
Modbus通信では、適切な応答の生成が通信の成功を確実にするために重要である。通常のレスポンスと例外レスポンスには、クライアントがリクエスト処理の結果と発生したエラーを理解できるように、固有の関数コードと例外コードがあります。サーバは、通信の信頼性と安定性を確保するために、プロトコルに従って応答を生成し、必要に応じて例外応答を送信する必要があります。
发表回复