Alle Lektionen anzeigen
Teil 1
Grundlagen
Teil 2
Modbus RTU
- Lektion 5RS485 erklärt: A, B, Common und Terminierung20 Min.
- Lektion 6Baudrate und Parität: warum 8E1 Standard ist16 Min.
- Lektion 7Das Modbus RTU Frame Byte für Byte, plus CRC18 Min.
- Lektion 8Mehrere Modbus Geräte an einem RS485-Bus16 Min.
- Lektion 9Ihr erstes Modbus Gerät mit mbpoll auslesen22 Min.
- Lektion 10Modbus RTU Fehlersuche: vom Symptom zur Ursache20 Min.
Teil 3
Modbus TCP
Teil 4
Fortgeschritten
- Lektion 16Sicher auf ein Modbus Gerät schreiben18 Min.
- Lektion 17Word Order und Float: gleiche Bytes, anderer Wert22 Min.
- Lektion 18Poll-Intervall und Buslast selbst berechnen18 Min.
- Lektion 19Modbus Sicherheit: das Protokoll hilft nicht16 Min.
- Lektion 20Modbus integrieren: SPS, Home Assistant, Cloud20 Min.
- Lektion 21Modbus Inbetriebnahme: Checkliste und Spickzettel18 Min.
Modbus lernen: warum das Protokoll bleibt
Modbus lernen beginnt hier. Sie sehen, wer fragt und wer antwortet, warum ein Protokoll von 1979 noch läuft und wie dieser Kurs aus 21 Lektionen aufgebaut ist.
Was diese Lektion behandelt
- Wer fragt und wer antwortet in Ihrer Anlage
- Warum Register 40001 bei zwei Herstellern etwas anderes bedeutet
- Die Begriffe für den Rest des Kurses: Client, Server, PDU, Register, Funktionscode
Modbus ist ein Frage-Antwort-Protokoll: Ein Gerät stellt eine Frage, ein anderes antwortet mit nackten Zahlen, und nirgends im Telegramm steht, was diese Zahlen bedeuten. Genau diese eine Eigenschaft erklärt beide Seiten von Modbus: das lange Überleben eines Protokolls von 1979 und die Tatsache, dass Sie manchmal Unsinn auslesen. Nach dieser Lektion zeigen Sie in einer Anlage, wer fragt und wer antwortet, und Sie wissen, was Sie selbst noch nachschlagen müssen.
Was passiert, wenn ein Gateway einen Zähler ausliest?
Mehr als das passiert nicht: eine kurze Frage hin, eine kurze Antwort zurück. Ein Gateway will drei Werte von einem Energiezähler auf Serveradresse 1, also enthält seine Frage vier Angaben:
| Was das Gateway angibt | Wert hier |
|---|---|
| Welches Gerät am Bus | Serveradresse 1 |
| Welcher Zugriff | FC03, Holding-Register lesen |
| Ab welcher Adresse | PDU-Adresse 107, im Datenblatt 40108 |
| Wie viele Register | 3 |
Der Zähler antwortet mit demselben Funktionscode, einem Byte Count und drei Zahlen aus 16 Bit. Das sind 8 Byte hin und 11 Byte zurück:
Frage: 01 03 00 6B 00 03 74 17
Antwort: 01 03 06 02 2B 00 00 00 64 05 7A
Diese Bytes müssen Sie jetzt noch nicht zerlegen, das übernimmt die Lektion zum Modbus-RTU-Telegramm und der CRC. Entscheidend ist, was zurückkommt: 555, 0 und 100, ohne Einheit, ohne Komma und ohne Namen. Erst die Registertabelle dieses Geräts macht etwas daraus:
| Register | Rohwert | Was die Registertabelle dieses Geräts sagt |
|---|---|---|
| PDU-Adresse 107 | 555 | Strom L1, Schritt 0,1 A, also 55,5 A |
| PDU-Adresse 108 | 0 | keine Störung aktiv |
| PDU-Adresse 109 | 100 | Leistungsfaktor, Schritt 0,01, also 1,00 |
Modbus ist ein Protokoll der Anwendungsschicht auf Ebene 7 des OSI-Modells, und dieser Austausch ist alles, was es tut. Wenn Sie statt eines Lernpfads ein Nachschlagewerk brauchen, beschreibt der Überblick zu Modbus als Protokoll und seinen Einsatzgebieten das Thema als Ganzes.
Warum ein Protokoll von 1979 noch überall läuft
Weil es klein genug ist, um überall hineinzupassen, und offen genug, um es nachzubauen. Modicon, heute Schneider Electric, brachte Modbus 1979 auf den Markt und übergab es im April 2004 an die Modbus Organization, einen Schritt, den die Organisation selbst als Bekenntnis zur Offenheit beschreibt. Die Spezifikation des Anwendungsprotokolls ist seitdem öffentlich, derzeit als Version V1.1b3 vom 26. April 2012.
Die Sparsamkeit steckt in den Zahlen. Eine Modbus-PDU ist nie länger als 253 Byte, ein Erbe der ersten seriellen Umsetzung, und die Leseanfrage von oben passt bei RS485 samt Fehlerprüfung in acht Byte. Ein Gerät, das nur so wenig verarbeiten muss, braucht weder einen starken Prozessor noch eine Aushandlung beim Verbindungsaufbau. Deshalb steckt Modbus heute in fast jedem Wechselrichter, Energiezähler und Wärmepumpenregler.
Wer fragt, wer antwortet, und wie Sie sie erkennen
Wer das Gespräch beginnt, ist der Client. Alles, was wartet, ist ein Server. In der Praxis ist der Client Ihr Gateway, eine SPS, ein SCADA-System, ein Energiemanagementsystem oder ein Home Assistant, der Modbus spricht. Die Server sind die Zähler, Wechselrichter, Sensoren, Frequenzumrichter und I/O-Module. Erkennen können Sie sie am Verhalten: Wer von sich aus zu sprechen beginnt, ist der Client, und davon gehört genau einer an einen Bus.
In Datenblättern und Konfigurationsmasken heißen dieselben beiden Rollen weiterhin Master und Slave. Die Spezifikation für die serielle Leitung verbindet beide Begriffspaare wörtlich: Auf einer seriellen Modbus-Leitung übernimmt der Master des Busses die Client-Rolle, und die Slaves handeln als Server. Die Modbus Organization hat die Begriffe am 9. Juli 2020 ersetzt, die Feldnamen in der Software aber nicht. Eine Maske mit Modbus master und slave ID meint also genau das, was dieser Kurs Client und Serveradresse nennt.
Was ein Register ist, und was nicht
Ein Register ist 16 Bit, und das ist die ganze Definition. Keine Einheit, kein Datentyp, keine Skalierung, kein Name. In der Antwort oben ist 555 einfach 555. Ob das 55,5 A, 555 W oder die Hälfte einer Seriennummer bedeutet, hat der Hersteller in einem Datenblatt festgelegt.
Der Standard beschreibt vier Datenblöcke, erlaubt bis zu 65536 Elemente je Block, legt fest, wie Sie sie adressieren und ob Sie sie schreiben dürfen, und hört dort auf. Er sagt ausdrücklich, dass die Zuordnung zwischen dem Modbus-Datenmodell und der Anwendung im Gerät vollständig herstellerspezifisch ist. Eine einzelne Registernummer darf also bei drei Herstellern drei Dinge bedeuten.
Deshalb gibt es kein Werkzeug, das von selbst erkennt, was hinter einer Adresse steckt, und deshalb ist die Registertabelle des Herstellers kein Papierkram, sondern die halbe Arbeit. Wie so eine Tabelle aufgebaut ist, zeigt die Erläuterung zu Modbus-Registern und ihren Adressbereichen, und die Lektion zum Lesen einer Registertabelle macht daraus Routine.
RTU und TCP: gleiche Frage, andere Hülle
Die Frage in der Mitte ist identisch, nur die Verpackung unterscheidet sich. Dieses Mittelstück ist die PDU (Protocol Data Unit): Funktionscode plus Daten, zusammen höchstens 253 Byte. Modbus RTU stellt ein Adressbyte davor und zwei CRC-Bytes dahinter und kommt so auf höchstens 256 Byte je Telegramm. Modbus TCP verpackt dieselbe PDU in einen MBAP-Header von 7 Byte und lässt die CRC ganz weg, weil Ethernet und TCP diese Prüfung bereits erledigen, und kommt auf höchstens 260 Byte, standardmäßig auf Port 502.
Dieselbe Leseanfrage sieht deshalb so aus: 01 03 00 6B 00 03 74 17 auf RS485, acht Byte, und 00 01 00 00 00 06 FF 03 00 6B 00 03 auf TCP, zwölf Byte. In beiden steckt dieselbe PDU 03 00 6B 00 03.
Das ist der ganze Unterschied auf Protokollebene. Kapitel 2 behandelt RTU, Kapitel 3 behandelt TCP, und der Vergleich wann Modbus RTU und wann Modbus TCP passt wägt beide gegeneinander ab.
Die zwölf Begriffe für den Rest des Kurses
Diese zwölf Wörter kommen in jeder weiteren Lektion vor, und sie stehen genau so in den Datenblättern.
| Begriff | Was es ist | Beispiel |
|---|---|---|
| Client | stellt die Frage und ergreift die Initiative | Gateway, SPS, Home Assistant |
| Server | antwortet auf seiner eigenen Adresse | Zähler, Wechselrichter, I/O-Modul |
| Coils | einzelne Bits, lesen und schreiben | ein Relaisausgang |
| Discrete Inputs | einzelne Bits, nur lesen | ein Störmeldekontakt |
| Input-Register | 16 Bit, nur lesen | ein Messwert |
| Holding-Register | 16 Bit, lesen und schreiben | ein Sollwert oder ein Messwert |
| PDU | Funktionscode plus Daten, höchstens 253 Byte | 03 00 6B 00 03 |
| ADU | die PDU plus die Hülle des Transports | 256 Byte bei RTU, 260 bei TCP |
| Serveradresse | das Adressbyte auf RS485, 1 bis 247, 0 ist Broadcast | das Feld slave ID |
| Unit-ID | dasselbe Byte bei Modbus TCP, 0xFF bei nativen TCP-Geräten | neben der IP-Adresse |
| Funktionscode | was Sie tun wollen | FC03 liest Holding-Register |
| Exception | die Antwort, die Nein sagt | 83 02, Adresse existiert nicht |
Zwei dieser zwölf führen in die Irre: Serveradresse und Unit-ID sehen austauschbar aus und sind es nicht, und die Datenblattnummer weicht um eins von der Adresse auf der Leitung ab. Genau darum geht es in der nächsten Lektion, zur Modbus-Adressierung von 40001 bis zur Adresse auf der Leitung.
So nutzen Sie diesen Kurs
Der Kurs umfasst 21 Lektionen in vier Kapiteln: Grundlagen, Modbus RTU, Modbus TCP und Fortgeschritten. Arbeiten Sie sie der Reihe nach durch, wenn Sie bei null anfangen, oder springen Sie direkt zu dem Thema, das gerade auf Ihrem Tisch liegt. Jede Lektion wiederholt in zwei Sätzen, was sie aus früheren Lektionen braucht, also ist keine Tür verschlossen. Zum Abschluss jeder Lektion stehen vier Fragen, mit denen Sie selbst prüfen, ob der Stoff sitzt.
Häufige Fehler
Einen Wert lesen, als wäre eine Einheit dabei gewesen. Sie lesen 555 aus einem Register und notieren 555 A. Das Telegramm enthielt eine Zahl aus 16 Bit und sonst nichts. Schrittweite, Komma und Einheit stehen im Datenblatt. Ein Wert, den Sie nicht auf eine Zeile im Datenblatt zurückführen können, ist also noch nicht gelesen.
Die Angabe "das Gerät kann Modbus" für vollständig halten. Modbus RTU und Modbus TCP sind zwei verschiedene physikalische Welten. Ein Gerät mit RS485-Klemmen bekommen Sie mit keinem Patchkabel ins Netzwerk, und ein Gerät mit reinem Ethernet-Anschluss hängen Sie nicht an eine bestehende Busleitung. Klären Sie zuerst, welches von beiden, und bestellen Sie erst danach.
Master und Slave für etwas anderes halten als Client und Server. Es sind dieselben Rollen mit älteren Namen, am 9. Juli 2020 von der Modbus Organization ersetzt. Konfigurationsmasken sagen weiterhin Modbus master und slave ID, und wer darin einen dritten Begriff sieht, setzt am Ende zwei Clients auf einen Bus.
Selbst ausprobieren
In dieser Lektion installieren Sie nichts. Die Übung ist die Bestandsaufnahme, die an Tag eins eines Projekts ansteht, und sie funktioniert auch am Schreibtisch.
- 1
Ein Gerät auswählen, mit dem Sie wirklich zu tun haben
Einen kWh-Zähler, einen Wechselrichter, eine Wärmepumpe oder eine Ladestation. Etwas, das Sie installiert haben oder installieren werden.
- 2
Die Modbus-Dokumentation beim Hersteller suchen
Suchen Sie eine Registertabelle, ein Modbus-Protokollhandbuch oder einen Kommunikationsanhang, nicht einen Forenbeitrag. Notieren Sie die Dokumentversion, denn Registertabellen ändern sich zwischen Firmware-Generationen.
- 3
Fünf Fragen schriftlich beantworten
Spricht das Gerät RTU oder TCP? Welche Adresse ist ab Werk eingestellt? Welche Baudrate ist ab Werk eingestellt? In welcher Zählweise stehen die Register, im 40001-Stil oder ab 0? Und steht irgendwo etwas zur Byte-Reihenfolge oder zur Word Order?
- 4
Diese Karte für Ihr Gerät ausfüllen
Übernehmen Sie die fünf Zeilen unten und vervollständigen Sie sie. Jede Lücke, die Sie nicht füllen können, ist eine Frage an den Lieferanten und keine Annahme für später.
- 5
Festhalten, wo Sie gesucht haben, wenn eine Frage offen bleibt
Notieren Sie die Seitenzahl oder den Suchbegriff. Das ist das eigentliche Ergebnis dieser Übung: Sie wissen jetzt genau, was Sie fragen müssen.
Gerät: ______________________ Firmware/Dokumentversion: __________
Transport: RTU über RS485 / Modbus TCP
Adresse: Serveradresse ____ oder Unit-ID ____
Zählweise: Datenblattnummern ab 1 (40001-Stil) / Adressen ab 0
Word Order: ______________________ (oder: nicht dokumentiert)
Ohne Gerät. Nehmen Sie die öffentliche Protokolldokumentation des Eastron SDM630 und beantworten Sie dieselben fünf Fragen. Zur Kontrolle: Dieses Gerät arbeitet mit Modbus RTU über RS485, der Adressbereich geht von 1 bis 247 mit Werkseinstellung 1, die Messwerte liegen in Input-Registern, die Sie mit FC04 lesen, und das Dokument nennt das höchstwertige Register zuerst.
Erwartetes Ergebnis: fünf Antworten auf Papier, und die Erkenntnis, dass ein Datenblatt diese fünf Fragen fast nie alle beantwortet.
Zusammenfassung
- Modbus ist ein Frage-Antwort-Protokoll auf OSI-Ebene 7: Der Client fragt, der Server antwortet auf seiner eigenen Adresse und meldet sich nie von selbst.
- Ein Register ist 16 Bit ohne Einheit und ohne Datentyp, die Bedeutung legt der Hersteller in der Registertabelle fest, nicht der Standard.
- Client und Server sind dieselben Rollen, die Datenblätter noch Master und Slave nennen; die Modbus Organization hat die Begriffe am 9. Juli 2020 ersetzt.
- Modbus RTU und Modbus TCP transportieren dieselbe PDU von höchstens 253 Byte und unterscheiden sich nur in der Hülle: 256 Byte mit Adressbyte und CRC, 260 Byte mit MBAP-Header von 7 Byte.
- Bevor Sie ein Gerät auslesen, wollen Sie fünf Dinge wissen: Transport, Adresse, Baudrate, Zählweise der Register und Word Order.
Überprüfen Sie sich selbst
Vier Fragen zu dieser Lektion. Zu jeder Antwort gibt es eine Erläuterung.
Frage 1 von 4
Selbst sehen, wie es funktioniert?
Das ModbusCloud Gateway liest die Geräte aus diesem Kurs aus, ohne dass Sie ein einziges Register programmieren.