例外コード
スレーブが通信エラーなしでクエリを受信したが、それに応答できない場合、スレーブは例外コードを発行して、マスターが正しく応答しなかった理由を通知します。例外コードの一般的な理由の1つは、Modbusがアドレス指定できるすべてのコイル、ステータス入力、およびレジスタがスレーブデバイスにない場合です。
スレーブからの例外コードの応答は、機能コードが次の値に等しいことで示されます。
80Hex + Function Code from the Master例として、マスターがModbus RTUネットワーク上のスレーブデバイス18のコイル4096〜4111を読み取ろうとする場合があります。
スレーブアドレス12 機能01 開始アドレスHi0F 開始アドレスLoFF ポイント数Hi00 ポイント数Lo10 エラーチェック(LRCまたはCRC)LRCまたはCRCHi、CRCLoスレーブからの例外コードの応答は次のようになります。
スレーブアドレス12 機能81 例外コード02 エラーチェック(LRCまたはCRC)LRCまたはCRCHi、CRCLo例外コード01:不正な機能
マスターからのクエリで受信した機能コードは、スレーブでは実行できません。
例外コード02:不正なデータアドレス
マスターからのクエリで受信したデータアドレスは、スレーブの有効なアドレスではありません。たとえば、スレーブには8つのコイル出力しかない場合がありますが、マスターはコイル56に対して読み取りまたは書き込みを試みています。
例外コード03:不正なデータ値
マスターからのクエリで受信したデータ値は、スレーブで許容される値ではありません。たとえば、スレーブには0?100の値しか持てない保持レジスタしかない場合がありますが、マスターは456の値を書き込もうとしています。
例外コード04:スレーブデバイスの障害
スレーブが要求されたアクションを実行しようとしたときに、回復不能なエラーが発生しました。
例外コード05:確認
スレーブはマスターからの要求を受信し、それを処理しています。
例外コード06:スレーブデバイスがビジー
スレーブはビジーであり、マスターからの要求に応答しません。マスターは後日クエリを再試行する必要があります。
例外コード07:否定的な承認
スレーブは、マスターからのクエリで受信したプログラム機能を実行できません。
例外コード08:メモリパリティエラー
スレーブは拡張メモリを読み取ろうとしましたが、メモリでパリティエラーを検出しました。
例外コード10:ゲートウェイパスが利用できません
Modbus TCPからシリアルゲートウェイへは、要求されたスレーブデバイスへの接続を確立できません。
例外コード11:ターゲットデバイスが応答しませんでした
シリアルゲートウェイへのModbusTCPは、スレーブデバイスから応答を取得できませんでした。