Modbus-Fehlercodes

Nach einer Anfrage gibt es 4 mögliche Antworten vom Slave:

  • Die Anfrage wird vom Slave erfolgreich bearbeitet und eine gültige Antwort wird gesendet.

  • Die Anfrage wird vom Slave nicht empfangen, daher wird keine Antwort gesendet.

  • Die Anfrage wird vom Slave mit einem Paritäts-, CRC- oder LRC-Fehler empfangen. Der Slave ignoriert die Anforderung und sendet keine Antwort.

  • Die Anfrage wird fehlerfrei empfangen, kann aber vom Slave aus einem anderen Grund nicht bearbeitet werden. Der Slave antwortet mit einer Ausnahmeantwort.

In einer normalen Antwort gibt der Slave den Funktionscode zurück. Das erste Anzeichen einer Ausnahmeantwort ist, dass der Funktionscode in der Antwort mit dem höchsten Bit auf 1 zurückgegeben wird. Da das höchstwertige Bit bei allen Funktionscodes 0 ist, signalisiert das Setzen dieses Bits auf 1, dass der Slave die Anforderung nicht verarbeiten kann.

Funktionscode in der Anfrage

Funktionscode in der Ausnahmeantwort

01 (01 hex) = 0000 0001

129 (81 hex) = 1000 0001

02 (02 hex) = 0000 0010

130 (82 hex) = 1000 0010

03 (03 hex) = 0000 0011

131 (83 hex) = 1000 0011

04 (04 hex) = 0000 0100

132 (84 hex) = 1000 0100

05 (05 hex) = 0000 0101

133 (85 hex) = 1000 0101

06 (06 hex) = 0000 0110

134 (86 hex) = 1000 0110

15 (0F hex) = 0000 1111

143 (8F hex) = 1000 1111

16 (10 hex) = 0001 0000

144 (90 hex) = 1001 0000

Die in der Modbus-Spezifikation beschriebenen Ausnahmecodes sind:

Fehlercode

Name

Beschreibung

01 (01 hex)

Ungültige Funktion

Der in der Abfrage empfangene Funktionscode ist keine zulässige Aktion für den Slave. Dies kann daran liegen, dass der Funktionscode nur für neuere Geräte gilt und nicht in der gewählten Einheit implementiert wurde. Es könnte auch anzeigen, dass sich der Slave im falschen Zustand befindet, um eine solche Anfrage zu bearbeiten, z. B. weil er unkonfiguriert ist und aufgefordert wird, Registerwerte zurückzugeben. Wenn ein “Poll Program Complete”-Befehl ausgegeben wurde, zeigt dieser Code an, dass ihm keine Programmfunktion vorausgegangen ist.

02 (02 hex)

Ungültige Datenadresse

Die in der Abfrage empfangene Datenadresse ist keine zulässige Adresse für den Slave. Insbesondere ist die Kombination aus Referenznummer und Übertragungslänge ungültig. Bei einer Steuerung mit 100 Registern würde eine Anfrage mit Offset 96 und Länge 4 erfolgreich sein, eine Anfrage mit Offset 96 und Länge 5 erzeugt die Ausnahme 02.

03 (03 hex)

Ungültiger Datenwert

Ein im Abfragedatenfeld enthaltener Wert ist kein zulässiger Wert für den Slave. Dies deutet auf einen Fehler in der Struktur einer komplexen Anfrage hin, z. B. dass die implizite Länge falsch ist. Es bedeutet allerdings nicht, dass ein Datenelement, das zur Speicherung in einem Register gesendet wird, einen Wert hat, der außerhalb der Erwartungen des Anwendungsprogramms liegt, da das Modbus-Protokoll die Bedeutung eines bestimmten Wertes eines bestimmten Registers nicht kennt.

04 (04 hex)

Slave-Geräteausfall

Ein nicht behebbarer Fehler ist aufgetreten, während der Slave versucht hat, die angeforderte Aktion auszuführen.

05 (05 hex)

Quittierung

Spezielle Verwendung in Verbindung mit Programmierbefehlen. Der Slave hat die Anfrage angenommen und bearbeitet sie, aber dafür ist eine lange Zeitspanne erforderlich. Diese Antwort wird zurückgegeben, um einen Timeout-Fehler im Master zu vermeiden. Der Master kann als nächstes eine “Poll Program Complete”-Meldung ausgeben, um festzustellen, ob die Verarbeitung abgeschlossen ist.

06 (06 hex)

Slave-Gerät beschäftigt

Spezielle Verwendung in Verbindung mit Programmierbefehlen. Der Slave ist mit der Abarbeitung eines Langzeitprogrammbefehls beschäftigt. Der Master sollte die Nachricht später, wenn der Slave frei ist, erneut senden.

07 (07 hex)

Negative Quittierung

Der Slave kann die in der Abfrage empfangene Programmfunktion nicht ausführen. Dieser Code wird bei einer fehlgeschlagenen Programmieranforderung mit Funktionscode 13 oder 14 (dezimal) zurückgegeben. Der Master sollte vom Slave Diagnose- oder Fehlerinformationen anfordern.

08 (08 hex)

Speicherparitätsfehler

Spezielle Verwendung in Verbindung mit den Funktionscodes 20 und 21 und dem Referenztyp 6, um anzuzeigen, dass der erweiterte Dateibereich eine Konsistenzprüfung nicht bestanden hat. Der Slave hat versucht, den Erweiterungsspeicher oder die Aufzeichnungsdatei zu lesen, aber einen Paritätsfehler im Speicher festgestellt. Der Master kann die Anfrage wiederholen, aber möglicherweise ist eine Wartung des Slave-Geräts erforderlich.

10 (0A hex)

Gateway-Pfad nicht verfügbar

Spezielle Verwendung in Verbindung mit Gateways. Zeigt an, dass das Gateway keinen internen Kommunikationspfad vom Eingangsport zum Ausgangsport für die Verarbeitung der Anfrage zuordnen konnte. In der Regel bedeutet dies, dass das Gateway falsch konfiguriert oder überlastet ist.

11 (0B hex)

Gateway-Zielgerät antwortet nicht

Spezielle Verwendung in Verbindung mit Gateways. Zeigt an, dass vom Zielgerät keine Antwort erhalten wurde. Dies bedeutet in der Regel, dass das Gerät nicht im Netzwerk vorhanden ist.