Modbus通信プロトコル是工业自動化中常用的协议,它允许主デバイス(通常是クライアント側は)与从デバイス(通常是サーバー·サーバー)之间进行データ交換。在Modbus通信中,Server(从デバイス)必须生成适当的レスポンス来処理リクエスト,并在必要时送信異常な応答。本記事将深入探讨Modbusレスポンス的生成和異常処理。
Modbusレスポンスタイプ
Modbus通信中,根据リクエスト的結果の処理,可以生成两种タイプ的レスポンス:
- 肯定的ModbusResponse:这是正常的レスポンス,表示サーバー·サーバー成功処理了リクエスト。在这种情况下,レスポンス的機能コード与リクエスト的機能コード相同。
- ModbusException Response:这种レスポンス用于指示出现了エラー或異常情况。異常な応答的機能コード等于リクエスト的機能コード加上0x80,以便クライアント側は可以识别異常な応答。
Modbus異常な応答的目的
Modbus異常な応答的主要目的是向クライアント側は提供与リクエスト処理过程中检测到的エラー相关的信息。它帮助クライアント側は了解コミュニケーションの問題的具体原因,从而采取适当的措施来処理这些問題。
Modbus異常な応答的異常コード。
異常な応答中包含一个異常コード。,用于明确指示出现エラー的原因。以下是常见的Modbus異常代码及其含义:
- Exception Code 01 (0x01) - 非法的機能コード:表示サーバー·サーバー不了解或无法処理リクエスト中的機能コード。通常意味着从デバイスサポートなし。此機能コード。
- Exception Code 02 (0x02) - 非法的データアドレス:指示リクエスト中包含的データアドレス不在从デバイス的認証アドレス範囲内,因此リクエスト的アドレス无效。
- Exception Code 03 (0x03) - 非法的データ值:表示リクエスト中包含的データ值不在从デバイス的允许值範囲内,因此データ值无效。
- Exception Code 04 (0x04) - サーバー·サーバー故障:指示サーバー·サーバー在执行リクエスト的操作时发生了无法修复的故障,无法继续操作。
- Exception Code 05 (0x05) - Confirm:表示サーバー·サーバー已受信リクエスト,但需要もっと見る时间来完成操作。クライアント側は应待機中サーバー·サーバー完成処理。
- Exception Code 06 (0x06) - サーバー·サーバー繁忙:表示サーバー·サーバー正忙于処理其他命令,クライアント側は应稍后重新リクエストの送信。
- Exception Code 0A (0x0A) - ゲートウェイ故障:指示ゲートウェイ或ルータの設置的路径无效,可能是ゲートウェイ过载或未正确設定。
- Exception Code 0B (0x0B) - ゲートウェイ目标デバイス未能レスポンス:表示在网络中找不到目标从デバイス。
生成ModbusResponse
为生成ModbusResponse,サーバー·サーバー必须首先解析リクエスト,然后根据リクエスト的内容和結果の処理构建レスポンスフレーム。レスポンスフレーム必须以MBAP报文头为前缀,使用トランザクション処理正文中的データ生成MBAPmessage header。具体步骤包括:
- 拷贝リクエスト中的ユニット标识符,并将其存储在トランザクション処理的正文中。
- resultModbus PDU和ユニット标识符字段的大小,并在"Length"域中に設置。该值。
- 設定协议标识符域为0x0000(表示ModbusProtocol)。
- 設定トランザクション処理标识符域为与初始リクエスト相关的值,并将其存储。
生成的Modbusレスポンスフレーム需要経由TCP连接送信到正确的Modbusクライアント側は,以完成通信过程。
总结:
Modbus通信中,生成适当的レスポンス对于确保通信的成功非常重要。普通の反応和異常な応答都有其特定的関数コードと異常代码,以便クライアント側は了解リクエスト処理的结果和出现的エラー。サーバー·サーバー必须按照協定の規定生成レスポンス,并在需要时送信異常な応答,以确保通信的可靠性和稳定性。
Leave a Reply