Wenn ein Modbus-Slave eine Anfrage nicht ausführen kann (ungültige Adresse, Wert außerhalb des zulässigen Bereichs usw.), antwortet er mit einer 'Exception Response': dem ursprünglichen Funktionscode mit gesetztem Bit 7, gefolgt von einem Exception Code, der den Grund angibt.
Richtig
Die Exception Response entsteht durch OR-Verknüpfung des Funktionscodes mit 0x80: aus Anfrage 0x03 (Read Holding) wird Exception 0x83. Es folgt ein Exception Code, z. B. 0x01 'Illegal Function' (Funktionscode nicht unterstützt), 0x02 'Illegal Data Address' (Adresse außerhalb des Bereichs), 0x03 'Illegal Data Value' (ungültiger Wert), 0x04 'Slave Device Failure' (interner Fehler), 0x05 'Acknowledge' (akzeptiert, Verarbeitung dauert) und 0x06 'Slave Device Busy' (später erneut versuchen). Für die Felddiagnose über Modbus-Logs sind diese Codes essenziell.
Praxistipp: Bei Inbetriebnahme die Exception Codes im Trace mitschneiden - 0x02 zeigt oft sofort eine falsche Registernummer in der Mapping-Tabelle.
Modbus-Bank in Vorbereitung
Die vollständige Modbus-Bank ist noch nicht verfügbar. Hinterlassen Sie Ihre E-Mail, um beim Start benachrichtigt zu werden und einen Early-Bird-Rabatt zu erhalten.
Der Warteliste beitreten →Die 9 weiteren Modbus-Übungsfragen ansehen
Verwandte Fragen
- Ein Modbus-RTU-Bus auf RS-485 unterstützt bis zu 32 Knoten pro Segment (mit Repeatern erweiterbar), benötigt Abschlusswiderstände (typischerweise 120 Ohm) an beiden Busenden sowie Polarisationswiderstände, um den Ruhepegel zu definieren.3. Modbus RTU · RS-485 Multi-Drop
- Welcher Modbus-Funktionscode wird zum LESEN der Holding Registers (16-Bit-Register, Lese-/Schreibzugriff) eines Slaves verwendet?4. Function codes · Lesen Coils/Register
- Die Funktion 0x06 'Write Single Register' schreibt ein einzelnes 16-Bit-Holding-Register in einem Modbus-Slave; Adresse und Wert sind in der Anfrage jeweils 16 Bit lang.4. Function codes · Write Single Register (0x06)
- Um einen 32-Bit-Gleitkommawert nach IEEE 754 über Modbus (16-Bit-Register) zu übertragen, werden typischerweise zwei aufeinanderfolgende Register verwendet, wobei die Bytereihenfolge in der Slave-Dokumentation festgelegt ist.5. Data encoding · 32-Bit-Float
- Modpoll (focus-sw.com) und mbpoll (Linux/macOS) sind kostenfreie Kommandozeilenwerkzeuge, um einen Modbus-Slave vom PC aus abzufragen, und sind für Diagnose und Inbetriebnahme einer Modbus-Integration unverzichtbar.6. Practical · Modpoll / mbpoll