Modbus RTU
Modbus über einen seriellen Bus, mit der physischen Leitung als eigenem Objekt, das sich seine über Unit-IDs adressierten Geräte teilen.
Der Treiber Modbus RTU spricht mit Modbus-Geräten an einem seriellen Bus, RS-485 oder RS-232, erreicht über einen physischen COM-Anschluss, einen USB-Adapter oder einen virtuellen oder umgeleiteten Anschluss. Weil der Bus physisch geteilt wird, ist die Topologie Treiber → Leitung → Gerät → Tag: Die Leitung besitzt alles Elektrische (Anschluss, Baudrate, Format, Zeiten), und jedes Gerät an ihr besitzt nur seine Adresse als Einheit, sein zyklisches Lesen und seine Tags.
Serielle Leitung
| Feld | Bedeutung | Standard |
|---|---|---|
| Name | Sprechender Name des Busses. Jederzeit änderbar. | erforderlich |
| Serieller Anschluss | Der Anschluss des Betriebssystems, zum Beispiel COM3. Das Feld ist Freitext, physische, virtuelle und umgeleitete Anschlüsse funktionieren also alle, und der Pfeil daneben bietet die Anschlüsse an, die Windows gerade erkennt (mit Aktualisieren für einen im Betrieb gesteckten Adapter); die erkannte Liste ist eine Bequemlichkeit, nie eine Positivliste. |
COM1 |
| Baudrate | Bitrate, die sich jedes Gerät am Bus teilt. | 9600 |
| Serielles Format | Geschlossene Auswahl aus 8N1, 8N2, 8E1, 8E2, 8O1, 8O2: Die Ziffer sind die Datenbits, der Buchstabe die Parität (N keine, E gerade, O ungerade), die letzte Ziffer die Stoppbits. Andere Breiten, Mark- und Space-Parität sowie 1,5 Stoppbits werden nicht unterstützt. |
8E1 |
| Antwort-Zeitlimit (ms) | Längste Wartezeit auf die Antwort einer Einheit, 100 bis 60.000. Längere Zeitlimits kommen langsamen Anlagen entgegen, machen aber fehlende Einheiten und die Gerätesuche langsamer erkennbar. | 1000 |
| Minimales Transaktionsintervall (ms) | Taktung zur Verträglichkeit für die ganze Leitung, 0 bis 1000. Null lässt nur die automatische Ruhe des Protokolls; ein positiver Wert kann sie erhöhen, nie verringern. | 0 |
Das Protokoll selbst verlangt Ruhe zwischen den Rahmen, und die Leitung erzwingt sie immer: Bis einschließlich 19.200 Baud beträgt die automatische Ruhe 3,5 Zeichenzeiten, berechnet aus dem eingestellten Format; über 19.200 Baud sind es die festen 1,75 ms, die die Spezifikation empfiehlt. Die wirksame Ruhe ist die größere von dieser automatischen Untergrenze und dem eingestellten Intervall, nie ihre Summe, und der Bereich zeigt beide Werte. Das Intervall zu erhöhen verlangsamt bewusst jede Einheit an der Leitung; es ist eine Hilfe zur Verträglichkeit, keine Reparatur für Verdrahtung, Abschluss, Erdung oder Störungen.
Eine neue Leitung beginnt deaktiviert, damit ihre physischen Einstellungen zuerst eingerichtet werden können. Jeder physische Anschluss gehört zu höchstens einer Leitung, verglichen ohne Rücksicht auf Groß- und Kleinschreibung und auch dann, wenn Leitungen deaktiviert sind. Der Name und das Transaktionsintervall bleiben änderbar, während die Leitung läuft (eine Änderung der Zeiten wirkt, ohne den Anschluss zu schließen und wieder zu öffnen); Anschluss, Baudrate, Format und Antwort-Zeitlimit sind gesperrt, solange die Leitung aktiviert ist: Deaktivieren und speichern Sie sie zuerst. Eine Leitung zu deaktivieren hält die Kommunikation aller ihrer Geräte an, ohne deren einzelne Wahl unter Aktiviert zu ändern.
Die Leitung meldet den physischen Übertragungsweg getrennt von ihren Geräten: Aus, Leerlauf (kein aktiviertes Gerät), Verbindung wird aufgebaut, Verbunden oder Portfehler mit einer Diagnose. Eine leere Leitung zu löschen entfernt nur die Leitung; eine zu löschen, die Geräte enthält, verlangt eine ausdrückliche Bestätigung und löscht auch diese Geräte und ihre Tags.
Gerät
| Feld | Bedeutung | Standard |
|---|---|---|
| Serielle Leitung | Fest: Ein Gerät wird unter seiner Leitung angelegt und erbt das physische Tupel, das im Bereich nur gelesen wird. Legen Sie das Gerät unter der gewünschten Leitung an. | entfällt |
| Unit-ID | Die Modbus-Adresse des Geräts am Bus, 1 bis 247, eindeutig innerhalb der Leitung (deaktivierte Geräte eingeschlossen). | 1 |
| Abfrageintervall (ms) | Standardtakt des zyklischen Lesens für Tags, die ihn nicht selbst festlegen. | 1000 |
Die interne Adresse zur Laufzeit ist
modbus+rtu://<line-id>/<port>/<baud>/<format>/<timeout>/<unitId>/<interval>: Sie trägt
die feste Identität der Leitung und ihre vollständigen physischen Einstellungen, nie ihren
sprechenden Namen.
Verhalten der geteilten Leitung
Der Treiber öffnet eine serielle Sitzung je Leitung und reiht jede Anfrage jedes Geräts über einen einzigen Verteiler, Lesen und Schreiben überlappen sich am Bus also nie. Ein anstehender Schreibvorgang nimmt den nächsten freien Platz mit begrenztem Vorrang: Schreibvorgänge werden zügig bedient, aber dauerndes Schreiben kann das zyklische Lesen nicht aushungern. Die Zeitüberschreitungen jeder Einheit sind voneinander getrennt, mit zunehmender Wartezeit, ein stummes Gerät verlangsamt also nur sich selbst. Eine Modbus-Ausnahme mit gültiger CRC ist ein Fehler dieser einen Anfrage an diesem Tag, und die Leitung bleibt gesund. Nur ein physischer Ein-/Ausgabefehler (der Anschluss verschwindet, der Adapter wird gezogen) macht die geteilte Sitzung ungültig und startet ein abgestimmtes erneutes Öffnen für die ganze Leitung. Das zuletzt freigegebene Gerät schließt den Anschluss.
Adressierung der Tags
Die Adressierung der Tags ist dieselbe wie bei Modbus TCP: eine
Registerklasse (HoldingRegister, InputRegister, Coil, DiscreteInput,
standardmäßig aus Typ und Zugriff des Tags abgeleitet), eine ab 0 gezählte
Registernummer, eine automatische Anzahl (Boolean 1 Register, Int32 und Float 2,
String 4; das Feld wird nur bei Tags vom Typ String gezeichnet, weil jede andere Breite
fest ist) und die beiden unabhängigen Felder zur Byte-Reihenfolge, die beide standardmäßig
das Höchstwertige zuerst senden. Die unterstützten Werttypen sind dieselben vier, Boolean,
Int32, Float und String, und die Funktionscodes für Lesen und Schreiben sowie die vier
Anordnungen auf dem Bus stehen auf der Seite Modbus TCP und gelten
hier unverändert.
Gerätesuche
Die Gerätesuche tastet einen Bereich von Unit-IDs über eine vorhandene Leitung ab und wohnt im Bereich dieser Leitung:
| Feld | Bedeutung | Standard |
|---|---|---|
| Erste Unit-ID | Erste abzutastende Unit-ID, 1 bis 247. | 1 |
| Letzte Unit-ID | Letzte Unit-ID, aufsteigend ab der ersten. | 32 |
Der Suchlauf lädt die gespeicherten physischen Einstellungen der Leitung neu, öffnet den Anschluss einmal und tastet den Bereich nacheinander mit Read Basic Device Identification (Funktion 43/14) ab, wobei jede Abtastung mit der wirksamen Ruhe zwischen den Rahmen getaktet wird. Er probiert nie Kombinationen von Einstellungen und liest nie Register. Eine Modbus-Ausnahme mit gültiger CRC beweist, dass eine Einheit da ist, ohne ihre Identität zu behaupten; eine Zeitüberschreitung oder ein ungültiger Rahmen tun das nicht.
Eine Leitung, die in Betrieb ist, wird nie unterbrochen und nie automatisch umgeschaltet: Deaktivieren Sie sie vor dem Suchlauf und aktivieren Sie sie danach selbst wieder. Ein Abbruch schließt die serielle Sitzung und lässt bereits gezeigte Ergebnisse als vorübergehende Kandidaten stehen, bis Sie sie ausdrücklich hinzufügen. Eine bereits konfigurierte Unit-ID wird als solche gekennzeichnet und öffnet das vorhandene Gerät, statt ein Duplikat anzulegen; die Ergebnisse tragen keine Tags, Register werden nach Hinzufügen eingerichtet.
Gerätesuche und Konfiguration der Leitung teilen sich je physischem Anschluss eine Reservierung, die sofort scheitert, ein Suchlauf und eine Änderung der Einstellungen können sich also nicht um den Anschluss streiten: Dem Verlierer wird gesagt, welcher Vorgang ihn hält.
Grenzen, die man kennen sollte
- Die vier Werttypen sind der ganze Wortschatz des Codecs auf dem Bus; breite Ganzzahlen und Double werden nicht angeboten.
- Der Durchsatz ist eine Eigenschaft des Busses: Jedes Gerät an der Leitung teilt sich einen Strom von Anfragen, getaktet von der wirksamen Ruhe zwischen den Rahmen, viele Geräte oder ein erhöhtes Intervall verlängern also jeden Zyklus des Lesens.