Industrielle Kommunikation und Vernetzung – Modbus-Nachrichten im Testnetz lesen
Industrielle Kommunikation und Vernetzung – Modbus-Nachrichten im Testnetz lesen
Kurzbeschreibung: Du liest Modbus-Nachrichten in einer vollständig fiktiven, lokalen Testumgebung. Im Mittelpunkt stehen Register, Datentyp und Gerätebezug. Du ordnest Bytes einer Nachricht zu, interpretierst Rohwerte, verfolgst Signalverläufe und diagnostizierst typische Fehler.
Zielgruppe: Ausbildung in Automatisierungstechnik, Elektrotechnik, Mechatronik und Fachinformatik.
Sicherheitsrahmen: Alle Beispiele verwenden nur fiktive Daten und eine lokale oder ausdrücklich autorisierte Schulungsumgebung. Keine fremden Netze, Produktivanlagen, Zugangsdaten oder Kundendaten werden untersucht, verändert oder übertragen. Schreibzugriffe werden nur als synthetische Nachrichten oder in einer isolierten Simulation betrachtet.
Einleitung
In einer vernetzten Anlage reicht es nicht, nur „einen Wert“ zu sehen. Du musst wissen: Welches Gerät? Welcher Datenbereich? Welche Registeradresse? Welcher Datentyp? Welche Skalierung? Genau diese Kette trainierst Du hier.

Die Abbildung zeigt eine typische Modbus-Netzarchitektur. Im Kurs wird sie auf einen kleinen virtuellen Ausbildungsfall reduziert: Diagnose-PC → virtueller Modbus/TCP-Gateway → fiktives Gerät mit Unit-ID 17.
Lernziele
| Nach dem Kurs kannst Du … | Woran Du es zeigst |
|---|---|
| Gerätebezug herstellen | Transaction Identifier, Unit Identifier und Endgerät korrekt zuordnen |
| Register lesen | Coil, Discrete Input, Input Register und Holding Register unterscheiden |
| Datentypen deuten | UINT16, INT16, Skalierung und ein gerätespezifisch definiertes FLOAT32 auseinanderhalten |
| Nachrichten analysieren | MBAP-Header, Funktionscode, Startadresse, Anzahl und Datenbytes lesen |
| Diagnose begründen | Anfrage und Antwort vergleichen, Exception Codes und unplausible Signalverläufe erkennen |
Ausbildungsfall: Virtuelle Abfüllstation VA-17
Du bist in der Instandhaltung einer Ausbildungswerkstatt. Eine virtuelle Abfüllstation VA-17 läuft auf einem isolierten Schulungsrechner. Ein simulierter Modbus/TCP-Gateway ist nur lokal erreichbar. Hinter dem Gateway liegt das fiktive Gerät Unit-ID 17.
| Element | Fiktiver Wert | Bedeutung |
|---|---|---|
| Diagnose-PC | localhost | liest die bereitgestellten Testtelegramme |
| Virtueller Gateway | lokale Simulation | ordnet Unit-ID 17 dem Testgerät zu |
| Gerät | VA-17 | Förder- und Drucksimulation |
| Daten | ausschließlich fiktiv | keine Betriebs- oder Kundendaten |
Auftrag: Finde heraus, ob eine Meldung zum richtigen Gerät gehört, welche Register gelesen werden und wie die Bytes in technische Werte übersetzt werden.

Kurze Lerneinheiten
Gerätebezug: Wer spricht mit wem?
Modbus arbeitet auf Anwendungsebene mit einem Client, der eine Anfrage startet, und einem Server, der antwortet. Bei Modbus/TCP enthält der MBAP-Header einen Transaction Identifier zur Zuordnung von Anfrage und Antwort und einen Unit Identifier für den Gerätebezug, besonders hinter Bridges oder Gateways.
| Feld | Zweck im Ausbildungsfall |
|---|---|
| Transaction Identifier | Anfrage und passende Antwort zusammenhalten |
| Protocol Identifier | 0x0000 kennzeichnet Modbus |
| Length | Anzahl der folgenden Bytes |
| Unit Identifier | Unit 17 hinter dem virtuellen Gateway |
Merke: Bei einem direkt per TCP adressierten Server empfiehlt der Modbus-TCP-Leitfaden einen nicht signifikanten Unit Identifier, typischerweise 0xFF. Im Kurs wird Unit 17 bewusst in einer Gateway-Simulation verwendet.
Register: Wo liegt der Wert?
Das Modbus-Datenmodell kennt vier grundlegende Bereiche. Register sind jeweils 16 Bit breit.
| Datenbereich | Zugriff | Größe | Typischer Lese-Funktionscode |
|---|---|---|---|
| Coil | lesen/schreiben | 1 Bit | 01 |
| Discrete Input | lesen | 1 Bit | 02 |
| Holding Register | lesen/schreiben | 16 Bit | 03 |
| Input Register | lesen | 16 Bit | 04 |
Wichtig: Die bekannte Schreibweise wie 40001 ist eine Dokumentationskonvention. Im eigentlichen Modbus-PDU wird eine nullbasierte Adresse übertragen. Im Kursprofil bedeutet daher Holding Register 40001 → PDU-Adresse 0x0000.
Datentyp: Was bedeuten die 16 Bits?
Ein Register liefert zunächst nur 16 Bits. Erst die Gerätedokumentation macht daraus einen technischen Wert.
| Kursprofil | Register | Rohwert | Interpretation |
|---|---|---|---|
| Soll-Drehzahl | 40001 | 1500 | UINT16 → 1500 min⁻¹ |
| Soll-Temperatur | 40002 | 215 | UINT16 mit Faktor 0,1 → 21,5 °C |
| Druckgrenze | 40003–40004 | 0x4120 0x0000 | FLOAT32 → 10,0 bar |
Achtung: FLOAT32, INT32 und Wortreihenfolge sind nicht durch das grundlegende 16-Bit-Registermodell vollständig festgelegt. Im fiktiven Kursprofil gilt für FLOAT32 ausdrücklich: High-Word zuerst, IEEE-754 Single Precision. In realen Geräten musst Du immer die Herstellerdokumentation prüfen.

Eine Modbus/TCP-Nachricht lesen
Die Testanfrage lautet:
00 11 00 00 00 06 11 03 00 00 00 04
| Bytes | Feld | Deutung |
|---|---|---|
| 00 11 | Transaction Identifier | Transaktion 0x0011 |
| 00 00 | Protocol Identifier | Modbus |
| 00 06 | Length | 6 folgende Bytes |
| 11 | Unit Identifier | Gerät 17 |
| 03 | Function Code | Holding Register lesen |
| 00 00 | Startadresse | PDU 0 → im Kursprofil 40001 |
| 00 04 | Anzahl | vier Register |
Die passende Testantwort lautet:
00 11 00 00 00 0B 11 03 08 05 DC 00 D7 41 20 00 00
Daraus werden: 0x05DC = 1500; 0x00D7 = 215 → 21,5 °C; 0x41200000 = 10,0 als FLOAT32 nach der im Kursprofil festgelegten Wortreihenfolge.
Eine synthetische Fehlerantwort kann so aussehen: 00 12 00 00 00 03 11 83 02. 0x83 ist die Exception-Antwort zu Function Code 03; Exception Code 0x02 bedeutet „Illegal Data Address“.
Prüfreihenfolge: Transaction Identifier → Unit Identifier → Function Code → Startadresse/Anzahl → Byte Count → Registerdaten → Datentyp/Skalierung.
Signalverlauf statt Einzelwert
Ein einzelner Wert kann plausibel wirken. Ein Verlauf zeigt Zusammenhänge.
| Zeit | Motor-Coil | Ist-Drehzahl | Temperatur | Druck |
|---|---|---|---|---|
| 0 s | 0 | 0 min⁻¹ | 21,0 °C | 0,0 bar |
| 2 s | 1 | 720 min⁻¹ | 21,1 °C | 2,8 bar |
| 4 s | 1 | 1495 min⁻¹ | 21,2 °C | 7,5 bar |
| 6 s | 1 | 1502 min⁻¹ | 21,3 °C | 9,9 bar |
| 8 s | 1 | 1499 min⁻¹ | 21,4 °C | 10,0 bar |
Beobachtung: Coil und Drehzahl ändern sich zeitlich passend. Der Druck nähert sich dem Grenzwert. So entsteht aus einzelnen Registern ein Anlagenzustand.

Die Abbildung zeigt einen beispielhaften Signalverlauf auf einer RS-485/RS-422-Leitung. Für Modbus RTU ist zusätzlich zur logischen Nachricht die serielle Übertragung mit Adressbyte, Funktionscode, Daten und CRC wichtig.
RS-485 als physische Ebene für Modbus RTU

RS-485 beschreibt die elektrische Übertragung, nicht das Modbus-Datenmodell. Modbus RTU kann RS-485 als physische Übertragung nutzen. Deshalb musst Du bei Fehlern trennen: Ist die Verkabelung gestört oder ist die Modbus-Anfrage fachlich falsch?


Diagnose mit Wireshark im autorisierten Testnetz
Für eine lokale Aufzeichnung oder eine vom Ausbilder bereitgestellte PCAP-Datei kannst Du in Wireshark Modbus/TCP-Felder untersuchen. Geeignete Anzeigefilter sind beispielsweise mbtcp und modbus. Dokumentiert sind unter anderem mbtcp.trans_id, mbtcp.unit_id, modbus.func_code, modbus.reference_num und modbus.response_time.
Nicht Teil dieses Kurses: fremde Netze scannen, Produktionsverkehr mitschneiden, Zugangsdaten suchen, Schutzmechanismen umgehen oder ungefragt Daten senden.
Praxisstation: Steuerung und Diagnose
Basisaufgabe: Nachricht zuordnen
Aufgabe: Ordne die Anfrage 00 11 00 00 00 06 11 03 00 00 00 04 dem Gerät und Registerbereich zu.
Hilfe 1: Beginne nach den ersten sechs MBAP-Bytes mit dem Unit Identifier.
Hilfe 2: 0x11 entspricht dezimal 17; 0x03 ist „Read Holding Registers“.
Hilfe 3: Startadresse 0x0000 entspricht im Kursprofil dem ersten Holding Register.
Begründetes Feedback: Richtig ist: Unit 17, Function Code 03, vier Holding Register ab PDU-Adresse 0. Entscheidend ist die Kombination aus Gerätebezug, Funktionscode und Startadresse; nur eine Registerzahl allein reicht nicht.
Anwendungsaufgabe: Schreibtelegramm verstehen
Nur Simulation: 00 21 00 00 00 06 11 06 00 00 04 B0
Aufgabe: Erkläre, was dieses synthetische Telegramm im Kursprofil bewirken würde.
Hilfe 1: 0x06 bedeutet „Write Single Register“.
Hilfe 2: Adresse 0x0000 ist im Kursprofil der Drehzahl-Sollwert.
Hilfe 3: 0x04B0 ist dezimal 1200.
Begründetes Feedback: Im isolierten Simulator würde der Sollwert auf 1200 min⁻¹ gesetzt. Die Begründung ist nur vollständig, wenn Unit 17, Funktionscode, Zielregister und Wert gemeinsam genannt werden.
Transferaufgabe: Fehlerbild begründen
| Zeit | Motor-Coil | Ist-Drehzahl | Fehler-Coil |
|---|---|---|---|
| 10 s | 1 | 1498 min⁻¹ | 0 |
| 12 s | 1 | 310 min⁻¹ | 0 |
| 14 s | 1 | 0 min⁻¹ | 1 |
Aufgabe: Formuliere eine Diagnosehypothese und nenne eine Modbus-seitige Prüfung, die in der Simulation sinnvoll ist.
Hilfe 1: Vergleiche Steuerbit, Istwert und Fehlerbit zeitlich.
Hilfe 2: Der Startbefehl bleibt aktiv, während die Drehzahl einbricht und danach ein Fehlerbit gesetzt wird.
Hilfe 3: Prüfe, ob die Antworten weiterhin vom erwarteten Unit Identifier kommen und ob Fehlerstatus und Istwert aus den vorgesehenen Registern gelesen werden.
Begründetes Feedback: Eine plausible Hypothese ist ein simulierter Antriebsfehler oder ein modellierter Prozessstopp, nicht ein verlorener Startbefehl. Die Hypothese ist besser begründet, wenn Du Signalverlauf und Gerätebezug zusammenführst, statt aus nur einem Register zu schließen.
Typische Diagnosefehler
| Fehler | Warum problematisch? | Besser |
|---|---|---|
| 40001 direkt als 0x40001 senden | Dokumentationsnummer und PDU-Adresse werden verwechselt | Adresskonvention des Geräts prüfen |
| Zwei Register automatisch als FLOAT32 lesen | Modbus definiert nicht automatisch den Datentyp | Datentyp und Wortreihenfolge dokumentieren |
| Nur den Wert betrachten | Gerätebezug kann falsch sein | Unit Identifier und Transaktion mitprüfen |
| Antwort ohne Anfrage bewerten | Kontext fehlt | Request/Response-Paar vergleichen |
| Produktivnetz zum Üben verwenden | unnötiges Betriebs- und Datenschutzrisiko | isolierte Simulation oder freigegebene PCAP nutzen |
Fachliche Quellen und Medienrechte
Quellenprüfung, Stand 7. Oktober 2026:
- Modbus Organization – Specifications and Implementation Guides: Primärquelle für Modbus-Funktionscodes und Implementierungsleitfäden.
- Modbus Application Protocol Specification V1.1b3: Primärquelle zum Datenmodell, PDU und Funktionscodes.
- Modbus Messaging on TCP/IP Implementation Guide V1.0b: Primärquelle zu MBAP-Header, Transaction Identifier, Length und Unit Identifier.
- Wireshark Display Filter Reference – Modbus/TCP: Referenz zu aktuellen mbtcp-Feldern.
- Wireshark Display Filter Reference – Modbus: Referenz zu Funktionscode, Registerfeldern, Exception Code und Antwortzeit.
- Wikipedia – Modbus: frei zugängliche Überblicksquelle.
Verwendete Wikimedia-Commons-Medien:
- MODBUS Network Architecture.svg – CC BY-SA 4.0.
- MODBUS communication stack.png – CC BY-SA 4.0.
- RS-485 3 wire connection.svg – CC BY-SA 4.0.
- RS-485 waveform.svg – CC BY-SA 3.0 und GFDL.
- RS-485 Network.png – CC BY-SA 3.0.
- RS-485 transceiver.svg – CC BY-SA 4.0.
- Plc image.jpg – CC BY-SA 4.0.
YouTube: Die drei eingebetteten Videos wurden auf YouTube als abrufbare Fachvideos geprüft. Sie sind keine automatisch frei lizenzierten OER; die Rechte verbleiben bei den jeweiligen Urhebern und die Einbettung erfolgt über die YouTube-Plattform. Es wurden keine Sofatutor-Videos verwendet.
Interaktive Aufgaben
Quiz: Teste Dein Wissen
Welche Aussage beschreibt ein Modbus Holding Register korrekt? (Es ist 16 Bit breit und kann gelesen sowie geschrieben werden) (!Es ist immer ein 32 Bit Float) (!Es ist ausschließlich ein einzelnes Bit) (!Es enthält automatisch eine physikalische Einheit)
Wofür wird der Transaction Identifier bei Modbus TCP verwendet? (Zur Zuordnung von Anfrage und Antwort) (!Zur Festlegung der Baudrate) (!Zur Berechnung der CRC Prüfsumme) (!Zur Auswahl der RS 485 Abschlusswiderstände)
Welche Funktion liest Holding Register? (Function Code 03) (!Function Code 01) (!Function Code 02) (!Function Code 04)
Was bedeutet im Kursprofil die PDU Startadresse 0 bei Holding Registern? (Das erste Holding Register mit der Dokumentationsnummer 40001) (!Den TCP Port 0) (!Unit Identifier 0) (!Einen Broadcast an alle Geräte)
Was muss für die Interpretation zweier Register als FLOAT32 zusätzlich bekannt sein? (Die im Geräteprofil festgelegte Wortreihenfolge und Datentypdefinition) (!Nur die IP Adresse) (!Nur der TCP Port) (!Nur die Anzahl der Ethernet Frames)
Welches Feld stellt in der Gateway Simulation den Gerätebezug zu VA 17 her? (Unit Identifier) (!Protocol Identifier) (!Length) (!Byte Count allein)
Was zeigt ein Exception Function Code wie 0x83 an? (Eine Fehlerantwort zu Function Code 03) (!Eine normale Antwort auf Function Code 03) (!Eine RS 485 Baudrate von 83) (!Einen Wert von 83 Registern)
Welche Vorgehensweise ist für diesen Kurs zulässig? (Lokale oder ausdrücklich autorisierte Testumgebungen mit fiktiven Daten verwenden) (!Fremde Produktionsnetze scannen) (!Kundendaten ungefragt mitschneiden) (!Zugangsdaten aus Netzwerkverkehr sammeln)
Warum ist ein Signalverlauf oft aussagekräftiger als ein Einzelwert? (Er zeigt zeitliche Zusammenhänge zwischen mehreren Signalen) (!Er ersetzt die Gerätezuordnung vollständig) (!Er macht Datentypen überflüssig) (!Er garantiert fehlerfreie Kommunikation)
Welche Aussage zu Modbus und RS 485 ist richtig? (RS 485 beschreibt die elektrische Übertragung und Modbus RTU kann sie nutzen) (!RS 485 ist ein Modbus Funktionscode) (!Modbus TCP benötigt immer RS 485) (!RS 485 legt automatisch die Registertypen fest)
Memory
| Transaction Identifier | Zuordnung von Anfrage und Antwort |
| Unit Identifier | Gerätebezug hinter einem Gateway |
| Function Code 03 | Holding Register lesen |
| Input Register | Nur lesbarer 16 Bit Datenbereich |
| UINT16 | Vorzeichenlose 16 Bit Zahl |
| Skalierung | Umrechnung eines Rohwerts mit festgelegtem Faktor |
| Exception Code 02 | Ungültige Datenadresse |
| MBAP Header | Kopf einer Modbus TCP Nachricht |
Drag and Drop
| Ordne die richtigen Begriffe zu. | Modbus TCP Nachricht |
|---|---|
| Transaction Identifier | ordnet Antwort und Anfrage einander zu |
| Protocol Identifier | kennzeichnet Modbus mit dem Wert 0 |
| Length | zählt die folgenden Bytes |
| Unit Identifier | adressiert im Kurs das Gerät hinter dem Gateway |
| Function Code | bestimmt die auszuführende Modbus Operation |
Kreuzworträtsel
| Modbus | Wie heißt das im Kurs untersuchte industrielle Kommunikationsprotokoll? |
| Register | Wie heißt ein 16 Bit breiter Speicherplatz im Modbus Datenmodell? |
| Gateway | Welches Gerät kann eine TCP Anfrage anhand der Unit ID an ein unterlagertes Gerät weiterleiten? |
| Holdingregister | Welcher Registerbereich wird mit Function Code 03 gelesen? |
| Wireshark | Welches Analyseprogramm kann Modbus TCP Felder in freigegebenen Mitschnitten darstellen? |
| Skalierung | Wie heißt die Umrechnung eines Rohwerts mit einem Faktor in eine technische Größe? |
LearningApps
Lückentext
Offene Aufgaben
Leicht
- Modbus: Markiere in der Testanfrage MBAP-Header, Unit Identifier, Function Code, Startadresse und Anzahl.
- Register: Erstelle für VA-17 eine Mini-Registerkarte mit drei Registern, Einheit, Datentyp und Skalierung.
- Datentyp: Erfinde drei plausible Rohwerte und rechne sie mit einer selbst gewählten, dokumentierten Skalierung in technische Werte um.
- Signalverlauf: Zeichne den Verlauf von Motor-Coil und Drehzahl aus der Tabelle als Zeitdiagramm und beschreibe den Zusammenhang.
Standard
- Modbus/TCP: Vergleiche Anfrage und Antwort und erkläre, welche Felder identisch bleiben und welche sich ändern.
- Wireshark: Nutze ausschließlich eine freigegebene lokale PCAP oder die synthetischen Telegramme und dokumentiere, welche Felder Du für Gerätebezug und Registerzugriff brauchst.
- Fehlerdiagnose: Entwirf eine fiktive Exception-Antwort zu einem ungültigen Register und erkläre, wie Du sie erkennst.
- Automatisierungstechnik: Erstelle ein Zustandsbild der virtuellen Anlage aus mindestens vier Signalen und begründe, welche Kombination als Störung gelten soll.
Schwer
- Datenmodell: Entwickle ein konsistentes Registermapping für eine virtuelle Station mit Coil, Input Register und Holding Register; dokumentiere Adresskonvention und Zugriff.
- Gleitkommazahl: Zeige an einem selbst gewählten FLOAT32-Testwert, warum vertauschte 16-Bit-Wörter zu einer falschen Interpretation führen können.
- Netzwerkdiagnose: Entwirf einen Diagnoseablauf, der zuerst Gerätebezug, dann Protokollfelder, dann Register und zuletzt Prozessplausibilität prüft.
- Industrie 4.0: Übertrage den Ausbildungsfall auf eine zweite virtuelle Maschine und erkläre, wie Du beide Geräte eindeutig unterscheidest, ohne reale Netze oder Kundendaten zu verwenden.


Lernkontrolle
- Gerätebezug: Zwei Antworten enthalten denselben Messwert, aber unterschiedliche Unit Identifier. Begründe, warum Du sie nicht demselben Gerät zuordnen darfst.
- Registeradressierung: Ein Handbuch nennt 40010, ein Mitschnitt zeigt Startadresse 0x0009. Erkläre den Zusammenhang und nenne die Voraussetzung, unter der diese Zuordnung gilt.
- Datentyp: Ein Registerpaar kann als zwei UINT16 Werte oder als ein FLOAT32 interpretiert werden. Beschreibe, welche Dokumentation Du für eine fachlich richtige Entscheidung brauchst.
- Signaldiagnose: Motor-Coil bleibt 1, Drehzahl fällt auf 0 und Fehler-Coil wird 1. Entwickle zwei Hypothesen und nenne je ein Signal, das sie stützen oder widerlegen könnte.
- Protokolldiagnose: Eine Anfrage erhält 0x83 mit Exception Code 0x02. Erkläre, welche Prüfung Du am Registermapping durchführen würdest.
- Arbeitssicherheit und Datenschutz: Begründe, warum ein realistisches Lernziel mit einem lokalen Simulator besser erreicht werden kann als durch ungefragtes Mitschneiden einer Produktivanlage.
Lernnachweis
Für einen Lernnachweis zu diesem Thema solltest Du zeigen, dass Du:
- eine Modbus/TCP-Anfrage und die passende Antwort strukturiert zerlegen kannst,
- Unit Identifier, Funktionscode, Registeradresse und Anzahl sicher zuordnest,
- mindestens einen 16-Bit-Rohwert mit dokumentierter Skalierung korrekt interpretierst,
- bei 32-Bit-Werten die gerätespezifische Datentyp- und Wortreihenfolge begründest,
- einen kurzen Signalverlauf fachlich interpretierst,
- eine Exception-Antwort in einen sinnvollen Diagnoseweg überführst,
- zwischen Protokollfehler, Adressierungsfehler und Prozessauffälligkeit unterscheiden kannst,
- ausschließlich mit freigegebenen Testdaten und autorisierten Lernumgebungen arbeitest.
OERs zum Thema
Verknüpfte Lernbereiche
aiMOOC-Projekte
Schulfach+


aiMOOCs


aiMOOC Projekte


MOOCwiki · Deutsch
Nach dem Lernen ist vor dem Lernen
Entdecke direkt den nächsten Lernkurs. Weitere Inhalte erscheinen, wenn Du weiter nach unten scrollst.
Zur MOOCwiki-HauptseiteMediathek
Mediathek wird aus dem Wiki geladen ...
Keine passenden Inhalte gefunden. Bitte ändere Suche oder Filter.
NEWSLernweltNOAH fragen