Articles

MODBUS RTU

Eine Einführung in die Modbus-RTU-Adressierung, Funktionscodes und den Überblick über Modbus-RTU-Netzwerke

Modbus RTU ist ein offenes serielles Protokoll, das von der ursprünglich von Modicon (jetzt Schneider Electric) entwickelten Master/Slave-Architektur abgeleitet wurde. Es ist ein weithin akzeptiertes Protokoll der seriellen Ebene aufgrund seiner Benutzerfreundlichkeit und Zuverlässigkeit. Modbus RTU ist in der Gebäudeleittechnik (GLT) und in der Industrieautomation (IAS) weit verbreitet.

Modbus RTU-Nachrichten sind eine einfache 16-Bit-Struktur mit einer CRC (Cyclic-Redundant Checksum). Die Einfachheit dieser Nachrichten soll die Zuverlässigkeit gewährleisten. Aufgrund dieser Einfachheit kann die grundlegende 16-Bit-Registerstruktur von Modbus RTU verwendet werden, um Fließkommazahlen, Tabellen, ASCII-Text, Warteschlangen und andere nicht zusammenhängende Daten einzubinden.

Dieses Protokoll verwendet in erster Linie eine serielle RS-232- oder RS-485-Schnittstelle für die Kommunikation und wird von fast jedem kommerziellen SCADA-, HMI-, OPC-Server- und Datenerfassungs-Softwareprogramm auf dem Markt unterstützt. Das macht es sehr einfach, Modbus-kompatible Geräte in neue oder bestehende Überwachungs- und Steuerungsanwendungen zu integrieren.

Ein wenig Modbus RTU-Geschichte

Man könnte das Modbus-Protokoll als den Großvater der industriellen Vernetzung bezeichnen. Es ist wirklich so alt wie die Berge und hat die Schnurrhaare, um es zu beweisen. Im heutigen Zeitalter von Internet-Konnektivität und Web-Services wirken die unverbundene Nachricht und die einfache Anfrage-Antwort-Kommunikationsstruktur von Modbus fast schon kurios. Fast so alt wie die erste speicherprogrammierbare Steuerung, die Modicon 084, die damals noch als PC für speicherprogrammierbare Steuerungen bezeichnet wurde.

Modbus RTU ist ein offener Standard, was bedeutet, dass Hersteller ihn in ihre Geräte einbauen können, ohne Lizenzgebühren zahlen zu müssen. Es ist das am weitesten verbreitete Kommunikationsprotokoll in der Industrieautomation und ist heute das am häufigsten verwendete Mittel zur Verbindung von industriellen elektronischen Geräten.

Modbus wird von vielen Herstellern in vielen Branchen eingesetzt. Modbus wird typischerweise verwendet, um Daten von Steuerungsinstrumenten an eine logische Steuerung oder ein System zur Archivierung von Daten zu übertragen. In der Gebäudeautomation werden z. B. Temperatur und Luftfeuchtigkeit oft an einen Computer zur Langzeitspeicherung übermittelt. Modbus wird oft verwendet, um einen Überwachungscomputer mit einer Remote Terminal Unit (RTU) in Überwachungs- und Datenerfassungssystemen (SCADA) zu verbinden.

Warum ist Modbus so beliebt?

Die Einfachheit ist der Grund, warum Modbus so weit verbreitet ist. Es hat auch nicht geschadet, dass Modbus von einem der damals größten SPS-Hersteller entwickelt wurde und damit offen und weit verbreitet ist. Modbus benötigt außerdem nur sehr wenig Platz im Prozessor oder im RAM. Während dies heute angesichts der leistungsfähigen Prozessoren und der uns zur Verfügung stehenden Technologie nicht mehr so wichtig ist, war es in den Anfangsjahren der industriellen Automatisierung sehr wichtig, als Prozessoren 8-Bit-Technologie verwendeten und Ressourcen wie RAM und ROM extrem teuer und knapp waren.

Die Nachrichtenprüfung ist ein weiterer Grund, warum Modbus so beliebt ist. CRC- und LRC-Prüfung bedeutet, dass Übertragungsfehler mit einer Genauigkeit von 99 % geprüft werden.

Modbus-Kommunikation

Das Modbus-RTU-Protokoll verwendet eine Master/Slave-Technik zur Kommunikation zwischen Geräten. Das bedeutet, dass jede Anwendung, die das Modbus-RTU-Protokoll verwendet, einen Modbus-Master und mindestens einen Modbus-Slave hat. Ein Modbus-Master ist typischerweise ein übergeordneter Computer, auf dem eine Software läuft, die mit einem oder mehreren Modbus-Slave-Geräten kommuniziert.

modbusrtu_diagram

Modbus ermöglicht die Master/Slave-Kommunikation zwischen Geräten, die über Busse oder Netzwerke verbunden sind. Im OSI-Modell ist Modbus auf Ebene 7 angesiedelt. Modbus ist als Anfrage/Antwort-Protokoll konzipiert und liefert Dienste, die durch Funktionscodes spezifiziert sind. Die Funktionscodes von Modbus sind Elemente der Anfrage/Antwort-PDUs (Protocol Data Unit) von Modbus.

Um die Modbus-Anwendungsdateneinheit aufzubauen, muss der Client eine Modbus-Transaktion initiieren. Sie ist die Funktion, die dem Server mitteilt, welche Art von Aktion ausgeführt werden soll. Das Format einer von einem Master initiierten Anfrage wird durch das Modbus-Anwendungsprotokoll festgelegt. Das Funktionscodefeld wird dann in ein Byte kodiert. Nur Codes im Bereich von 1 bis 255 werden als gültig angesehen, wobei 128-255 für Ausnahmeantworten reserviert sind. Wenn der Master eine Nachricht an den Slave sendet, ist es das Funktionscode-Feld, das den Server darüber informiert, welche Art von Aktion auszuführen ist.

Like what you’re reading?

Abonnieren Sie unsere E-Mail-Serie „Automation Education“, um wöchentlich das Wichtigste über die wichtigsten Industrieprotokolle zu erfahren!

Um mehrere Aktionen zu definieren, werden einige Funktionen mit Unterfunktionscodes versehen. Zum Beispiel kann der Master die EIN/AUS-Zustände einer Gruppe von diskreten Ausgängen oder Eingängen lesen. Er könnte auch die Dateninhalte einer Gruppe von MODBUS-Registern lesen/schreiben. Wenn der Master die Antwort des Slaves empfängt, wird das Funktionscodefeld vom Slave benutzt, um entweder eine fehlerfreie Antwort oder eine Ausnahmeantwort anzuzeigen. Der Slave antwortet auf die Anfrage des anfänglichen Funktionscodes im Falle einer normalen Antwort.

Modbus RTU Datendarstellung

Wie alles andere an Modbus, ist die Datendarstellung einfach. Tatsächlich werden Daten in Modbus einfacher dargestellt als in jedem anderen industriellen Protokoll, das Sie finden werden. Das Bit mit der geringsten Wichtigkeit wird zuerst gesendet und empfangen. Alle Geräte innerhalb des Netzwerks müssen jedes übertragene Byte auf diese Weise analog interpretieren.

Es gibt keine Methoden zur automatischen Erkennung von Baudraten. Slave(s) und Master, die am Bus angeschlossen sind, müssen die gleiche Baudrate verwenden. Der Modbus schreibt keine bestimmte Baudrate vor: Typische Baudraten sind 9600 oder 19200.

Ein übertragenes Byte ist codiert als: 8 Bit binärer Wert, hexadezimal 0 - 9 und A - F. Das niederwertigste Bit wird zuerst gesendet und empfangen
Ein übertragenes Byte ist kodiert als 8 Bit binärer Wert, hexadezimal 0 – 9 und A – F. Das niederwertigste Bit wird zuerst gesendet und empfangen.

Es gibt nur zwei Datentypen in Modbus: Coils und Register. Spulen sind einfach einzelne Bits. Die Bits können EIN (1) oder AUS (0) sein. Einige Spulen stellen Eingänge dar, d. h. sie enthalten den Status eines physischen diskreten Eingangs. Oder sie stellen Ausgänge dar, was bedeutet, dass sie den Zustand eines physikalischen diskreten Ausgangssignals enthalten. Register sind einfach 16-Bit-Registerdaten ohne Vorzeichen. Register können einen Wert von 0 bis 65535 (0 bis FFFF hexadezimal) haben. Es gibt keine Darstellung für negative Werte, keine Darstellung für Werte größer als 65535 und keine Darstellung für reale Daten wie 200.125.

Register werden in Input-Register und Holding-Register gruppiert. Wie Eingangsspulen melden Eingangsregister den Zustand eines externen Eingangs als einen Wert zwischen 0 und 65535. Der ursprüngliche Zweck eines Eingangsregisters war es, den Wert eines analogen Eingangs wiederzugeben. Es ist eine digitale Darstellung eines analogen Signals wie einer Spannung oder eines Stroms. Die meisten heutigen Modbus-Geräte sind keine E/A-Geräte, und Input-Register funktionieren einfach identisch zu Holding-Registern.

Holding-Register wurden ursprünglich als temporärer Programmspeicher für Geräte wie Modbus-Controller entwickelt. Heute fungieren Holding Register als Datenspeicher für Geräte.

Modbus-RTU-Pakete sind nur dazu gedacht, Daten zu senden; sie haben nicht die Fähigkeit, Parameter wie Punktnamen, Auflösung, Einheiten usw. zu senden. Wenn die Fähigkeit, solche Parameter zu senden, benötigt wird, sollte man BACnet, EtherNet/IP oder andere moderne Protokolle untersuchen.

Modbus RTU Adressanforderungen und Stationsidentifikation

Standard Modbus RTU Knotenadressen sind 1-255, wobei 0 für Broadcast-Nachrichten und nur zum Schreiben reserviert ist. Die Adresse 0 wird jedoch nur selten verwendet, da es keine Bestätigung gibt, dass die Nachricht am Slave-Knoten richtig empfangen wurde. Bei der physikalischen Schicht RS-232 hat dies keine große Auswirkung, da ohnehin nur ein Knoten implementiert werden kann. Bei RS-485 ist die Anzahl der Knoten auf 32 begrenzt, obwohl einige Treiber es Ihnen ermöglichen, die Anzahl zu erweitern.

Serielle Modbus-Slave-Geräte werden durch eine Stationsnummer identifiziert, die der allgemeinen Nachrichtenstruktur vorangestellt ist. Im Allgemeinen werden bis zu 32 Stationen unterstützt, da dies die Grenze ist, die von den meisten seriellen RS485-Treibern vorgegeben wird. Es gibt keine Softwarebegrenzung für die Anzahl der unterstützten Stationen. Gültige Slave-Adressen werden im Bereich von 1 bis 255 vergeben, wobei die Stationsnummer 0 für Broadcast-Nachrichten reserviert ist, also Nachrichten, die von allen Slaves verarbeitet werden.

Transportschichten

Es gibt mehrere Standardtransporte, die verwendet werden, um Modbus-Protokollnachrichten zu bewegen: RS232 und RS485. Sie können auch andere verwenden, aber diese sind die üblichen.

RS485 ist ein Nachfolger von RS232. Es funktioniert ähnlich, was die Synchronisationsbits betrifft, die die Übertragung von Bits von einer sendenden zu einer empfangenden Station synchronisieren. Es gibt jedoch zwei definierende Merkmale, die RS485 von RS232 unterscheiden. Das erste ist die Fähigkeit, mehrere Ziele anzusteuern. RS485-Sender können bis zu 32 Zielgeräte elektrisch ansteuern. Das macht RS485 zum bevorzugten Weg, um Modbus-Nachrichten seriell zu transportieren.

Das andere definierende Merkmal von RS485 ist die erhöhte Störsicherheit. RS485 verwendet nicht die elektrische Masse als Referenz für sein elektrisches Signal. Stattdessen verwendet RS485 ein Paar von Drähten und steuert ein Signal, indem ein Spannungspotential über das Paar gelegt wird. Dadurch wirken sich elektrische Umgebungsgeräusche auf beide Drähte gleichermaßen aus, und das Potenzial über den beiden Drähten wird nicht verändert.

Modbus RTU Datenkodierung

Ein Kodierungsmechanismus beschreibt, wie Bitmuster aus den Steuer- und Datenwerten gebildet werden, die in das Paket kodiert werden. Sowohl der Sender als auch der Empfänger müssen die gleiche Kodierung verwenden, um den Inhalt der Daten korrekt zu verstehen. Es gibt zwei Mechanismen zur Kodierung von Modbus-Nachrichten: ASCII und RTU.

RTU-Kodierung ist der weitaus häufigere Kodierungsmechanismus, der bei Modbus verwendet wird. RTU bedeutet einfach, dass die Werte als Standard-Big-Endian-Binär kodiert werden. Das bedeutet, dass bei 16-Bit-Werten das Most Significant Byte (MSB) vor dem Least Significant Byte (LSB) kodiert wird. Ein 8-Bit-Wert wie dezimal 41 (29 hex) wird einfach als 0010 1001 kodiert. Ein 16-Bit-Wert wie Dezimal 300 (12C hex) wird hingegen als 0000 0001 0010 1100 kodiert. Das MSB von 01 wird vor dem LSB von 2C kodiert und übertragen.

MODBUS RTU Speicherabbild

Modbus RTU
Daten Typ
Common
Name
Startadresse
Modbus Coils Bits, binäre Werte, Flags 00001
Digitale Eingänge Binäre Eingänge 10001
Analoge Eingänge Binäre Eingänge 30001
Modbus-Register Analoge Werte, Variablen 40001

Der Unterschied zwischen Modbus RTU und Modbus TCP

Der grundlegende Unterschied zwischen Modbus RTU und Modbus TCP (auch bekannt als Modbus IP, Modbus EtherNet und Modbus TCP/IP) besteht darin, dass Modbus TCP auf einer physikalischen Ethernet-Schicht läuft und Modbus RTU ein Protokoll auf serieller Ebene ist. Modbus TCP verwendet außerdem einen 6-Byte-Header, um Routing zu ermöglichen.

Ein Modbus-RTU-Master ist ein einzelner Master-Bus. Er sendet eine Nachricht an ein RTU-Slave-Gerät und erhält eine Antwort. Modbus RTU ist auf einen einzigen Master beschränkt. Es kann immer nur ein Satz von Signalen auf der RS485-Verbindung sein. Entweder sendet der einzelne RTU-Master oder eines der RTU-Client-Geräte.

Mit der Einführung von Modbus TCP wurde alles vereinfacht und einfacher. Mit Modbus TCP können Steuerungen die Bandbreite auf dem Ethernet viel effizienter nutzen, um der Master für Hunderte von Modbus-TCP-Geräten zu sein. Modbus TCP ermöglicht mehrere Clients. Wo RS485 eine elektrische Begrenzung von 32 Geräten hatte, ist Ethernet unbegrenzt. Der Arbeitsspeicher ist die einzige praktische Einschränkung. Mit Modbus TCP hat ein Netzwerkdesigner die Möglichkeit, mehrere Clients/Master zu verwenden, wenn er dies wünscht.

Bei Modbus TCP (Ethernet) muss ein teurer Switch eingesetzt werden. Bei Modbus RTU (seriell) können Sie einfach alle Geräte miteinander verketten. Geräte mit alten 8-Bit-Prozessoren und einem winzigen Stück Speicher können Modbus seriell problemlos ausführen, aber für Ethernet benötigen Sie eine teurere Plattform.

Wussten Sie schon?

Der Gründer von Real Time Automation, John S. Rinaldi, hat ein ganzes Buch über Modbus geschrieben? Schauen Sie sich The Everyman’s Guide to Modbus an, das jetzt bei Amazon erhältlich ist!

Für weitere Informationen über unsere Modbus RTU Produkte und Dienstleistungen rufen Sie uns unter 1-800-249-1612 an oder senden Sie uns eine E-Mail an [email protected].

Suchen Sie nach Modbus RTU für Ihr Projekt?

Siehe Modbus RTU Lösungen

Wollen Sie diese Seite im PDF-Format? Klicken Sie hier!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.