Wie Maschinen kommunizieren: Modbus-Protokoll


Das Modbus-Protokoll ist das gĂ€ngigste Industrieprotokoll fĂŒr die M2M- Kommunikation. Es ist ein De-facto-Standard und wird von fast allen Herstellern von Industrieanlagen unterstĂŒtzt.

Aufgrund seiner Vielseitigkeit und Offenheit ermöglicht der Standard die Integration von GerĂ€ten verschiedener Hersteller. Modbus wird zum Sammeln von Messwerten von Sensoren, Steuern von Relais und Controllern, Überwachen usw. verwendet.

In dem Artikel werden wir die Implementierung des Modbus-Protokolls, Datenformate und Software fĂŒr die Arbeit mit dem Protokoll analysieren. Versuchen wir in der Praxis, Daten vom GerĂ€t zu lesen.

Geschichte von Modbus


Modbus wurde 1979 von Modicon (heute Schneider Electric) eingefĂŒhrt. Es war ein offener Standard fĂŒr die RS-232-Schnittstelle. SpĂ€ter erschienen Protokollimplementierungen fĂŒr RS-485- und Modbus-TCP-Schnittstellen. Das Protokoll wurde schnell populĂ€r und viele Hersteller begannen, es in ihre GerĂ€te zu implementieren.

SpĂ€ter wurden die Rechte an dem Protokoll auf die gemeinnĂŒtzige Organisation Modbus Organization ĂŒbertragen , die bis heute den Standard besitzt.

Der Modbus-Standard verwendet eine Terminologie, die von der Kontaktplanlogik abgeleitet ist . So werden beispielsweise einige Register als Spulen (englische Spule) bezeichnet.

Körperliche Ebene




  • RS-232/422/485 sind serielle Schnittstellen, die in der Industrie weit verbreitet sind. RS-422/485-Schnittstellen bieten eine Signalreichweite von bis zu 1200 Metern. Verwendete Modbus RTU / ASCII-Protokolle
  • TCP / IP-Netzwerke - Alle Ethernet-Schnittstellen können ein physischer DatenĂŒbertragungskanal sein. Verwenden des Modbus TCP-Protokolls

Logikebene



Unterschiede im Modbus-Protokoll

Modbus ASCII


Die Daten werden mit Zeichen aus der ASCII-Tabelle codiert und im Hexadezimalformat ĂŒbertragen. Der Anfang jedes Pakets wird durch einen Doppelpunkt und das Ende durch WagenrĂŒcklauf und Zeilenvorschub angezeigt. Dies ermöglicht die Verwendung des Protokolls auf Leitungen mit lĂ€ngeren Verzögerungen und auf GerĂ€ten mit weniger genauen Zeitgebern.

Modbus RTU


Im Modbus RTU-Protokoll werden Daten im BinĂ€rformat codiert, und ein Zeitintervall dient als Pakettrennzeichen. Dieses Protokoll ist kritisch fĂŒr Verzögerungen und kann beispielsweise auf Modemleitungen nicht funktionieren. Gleichzeitig ist der Overhead fĂŒr die DatenĂŒbertragung geringer als bei Modbus ASCII, da die NachrichtenlĂ€nge geringer ist.

Modbus TCP


Die Paketstruktur Ă€hnelt der von Modbus RTU, die Daten werden ebenfalls im BinĂ€rformat codiert und zur Übertragung ĂŒber IP-Netzwerke in ein regulĂ€res TCP-Paket gepackt. Die in Modbus RTU verwendete IntegritĂ€tsprĂŒfung wird nicht angewendet, da TCP bereits ĂŒber einen eigenen IntegritĂ€tskontrollmechanismus verfĂŒgt.

Paketformat



Paketformate fĂŒr verschiedene Modbus-Implementierungen

Alle Modbus-GerĂ€te kommunizieren nach dem Master-Slave-Modell. Anforderungen können nur vom Master-GerĂ€t initiiert werden, Slaves können nur auf Anforderungen antworten und die DatenĂŒbertragung nicht selbst starten. AbhĂ€ngig von der Protokollimplementierung sind die Paket-Header unterschiedlich. Hier sind die wichtigsten Komponenten des Pakets, die wichtig zu wissen sind:

ADU (Application Data Unit) - das gesamte Modbus-Paket mit allen Headern, PDUs, PrĂŒfsummen, Adressen und Token. Sie unterscheidet sich je nach Implementierung des Protokolls.

PDU (Protocol Data Unit) - der Hauptteil des Pakets, der fĂŒr alle Implementierungen des Protokolls gleich ist. EnthĂ€lt die Nutzlast selbst.

GerĂ€teadresse - Die Adresse des EmpfĂ€ngers, dh des Slave-GerĂ€ts. In einem Segment eines Modbus-Netzwerks können sich bis zu 247 GerĂ€te befinden. Nur Slaves haben unterschiedliche Adressen, der Master hat keine Adresse. Die Adresse "0" wird fĂŒr Broadcast-Anforderungen vom Master verwendet, wĂ€hrend Slaves nicht auf diese Broadcast-Pakete antworten können.

PrĂŒfsumme - PaketintegritĂ€tsalgorithmen. Modbus RTU und ASCII verwenden 2 Bytes PrĂŒfsumme. Modbus RTU verwendet den CRC16-Algorithmus, wĂ€hrend Modbus ASCII den einfacheren und weniger zuverlĂ€ssigen LRC8 verwendet. In Modbus TCP wird die PrĂŒfsumme nicht zur ADU hinzugefĂŒgt, da die IntegritĂ€t auf TCP-Ebene ĂŒberprĂŒft wird.

Wir werden keine zusĂ€tzlichen Header analysieren, die fĂŒr jede einzelne Implementierung des Protokolls spezifisch sind, da dies bei der Arbeit mit dem Protokoll auf Anwendungsebene nicht von Bedeutung ist.

Modbus-Register und -Funktionen


In vereinfachter Form besteht die Modbus-Anforderungsstruktur aus einem Funktionscode (Lesen / Schreiben) und Daten, die gelesen oder geschrieben werden mĂŒssen. Gleichzeitig unterscheiden sich Funktionscodes fĂŒr verschiedene Datentypen. Wir werden analysieren, was Register sind und welche Funktionen es gibt, mit ihnen zu arbeiten.


  • Diskrete EingĂ€nge - Diskrete EingĂ€nge des GerĂ€ts sind schreibgeschĂŒtzt. Bereich der Registeradressen: von 10001 bis 19999. Sie haben die Funktion „02“ - Lesen einer Gruppe von Registern
  • Spulen - diskrete AusgĂ€nge des GerĂ€ts oder interne Werte. VerfĂŒgbar zum Lesen und Schreiben. Der Bereich der Registeradressen reicht von 20001 bis 29999. Er hat folgende Funktionen: "01" - liest eine Gruppe von Registern, "05" - schreibt ein einzelnes Register, "15" - schreibt eine Gruppe von Registern
  • Eingangsregister - 16-Bit-GerĂ€teeingĂ€nge. Nur lesen. Bereich der Registeradressen: von 30001 bis 39999. Haben Sie eine Funktion: "04" - lesen Sie eine Gruppe von Registern
  • Halteregister - 16-Bit-GerĂ€teausgĂ€nge oder interne Werte. VerfĂŒgbar zum Lesen und Schreiben. Der Bereich der Registeradressen: von 40001 bis 49999. Haben

Trotz der Namen können die Ein- und AusgĂ€nge tatsĂ€chlich interne Variablen, SpeicherzĂ€hler, Flags oder Steuerauslöser sein. Es gibt auch andere Registerbereiche, aber in der ĂŒberwiegenden Mehrheit der GerĂ€te werden sie nicht verwendet, sodass wir vier Haupttypen von Registern betrachten werden. Verschiedene GerĂ€te können unterschiedliche Registerbereiche oder alle gleichzeitig verwenden.

Arbeitsbeispiele


Als Beispiel fĂŒr die Arbeit mit dem Modbus-TCP-Protokoll verwenden wir das einfachste in Ruby geschriebene Konsolendienstprogramm modbus-cli . Es erleichtert das Lesen und Schreiben von Daten in Modbus-Register.

Versuchen wir, den Status der ZĂ€hler der ĂŒbertragenen Pakete auf einem industriellen Switch Advantech EKI-5524SSI zu lesen. Zuerst mĂŒssen Sie die Adressen der Register ermitteln, in denen die erforderlichen Informationen gespeichert sind. Lesen Sie dazu die Dokumentation des GerĂ€ts. Registerbeschreibungen finden Sie im Abschnitt Modbus-Zuordnungstabelle:


Beschreibung der Registerwerte in der Dokumentation zum EKI-Switch

Es ist ersichtlich, dass der Wert der ĂŒbertragenen Pakete fĂŒr einen Port in vier Registern gespeichert ist, und fĂŒr den ersten Port sind dies die Register 38193 bis 38197. Es wird auch eine Beschreibung des Datenspeicherformats gegeben, aus dem folgt, dass die Ganzzahl der ĂŒbertragenen Pakete im hexadezimalen Format gespeichert ist und der Wert von 11223344 Paketen sein wird geschrieben als 0xAB4130, von rechts nach links.

Anfrage stellen:

$ modbus read 192.168.0.17 38193 4 38193 0x0000 38194 0x0000 38195 0x0000 38196 0x3459 

read ist ein Lesebefehl . Das Programm selbst versteht, welcher spezifische Lesebefehl abhÀngig von der Adresse des Registers verwendet werden muss. In unserem Fall wird der Befehl "04" zum Lesen von 16-Bit-Registern verwendet.

192.168.0.17 - IP-Adresse des GerÀts.

38193 - Die Startadresse des Registers.

4 - Versatz relativ zur Startadresse. Wir lesen vier Register fĂŒr Port 1 wie folgt aus dem Datenblatt.

Wir erhalten eine Antwort mit den Werten von vier Registern. Wir sehen, dass die Anzahl der Pakete gering ist: 0x3459, dh 13401, - der Switch wurde kĂŒrzlich eingeschaltet.

Nachteile des Modbus-Protokolls


Fairerweise ist es erwĂ€hnenswert, die MĂ€ngel des Protokolls zu erwĂ€hnen. Da es vor mehr als 40 Jahren entwickelt wurde, als die Prozessorleistung erheblich niedriger war und Protokolle ohne BerĂŒcksichtigung des Datenschutzes entwickelt wurden, hat es eine Reihe von Minuspunkten:

  • Das Protokoll bietet keine Authentifizierung und VerschlĂŒsselung der ĂŒbertragenen Daten. Daher mĂŒssen bei Verwendung von Modbus TCP zusĂ€tzliche VPN-Tunnel verwendet werden.
  • Der Slave kann keine DatenĂŒbertragung initiieren, daher muss der Master stĂ€ndig Slaves abfragen
  • Das Slave-GerĂ€t kann einen Verbindungsverlust mit dem Master nicht erkennen. Dieses Problem folgt direkt aus dem vorherigen.

Trotz aller MÀngel ist Modbus nach wie vor das am weitesten verbreitete Industrieprotokoll. Dank seiner Offenheit ist es einfach, GerÀte verschiedener Hersteller zu kombinieren. Geringe Ressourcenanforderungen ermöglichen die Integration des Protokolls in die GerÀte mit dem geringsten Stromverbrauch.

Modbus-fÀhige Hardware


Advantech bietet eine breite Palette an Industrieanlagen mit UnterstĂŒtzung des Modbus-Protokolls fĂŒr jede Aufgabe: Automatisierung, Steuerung, Datenerfassung und -ĂŒbertragung.

ADAM-6000 und WISE-4000 - Remote-E / A-Module



Mit den Modulen der Serien ADAM-6000 und WISE-4000 können Sie digitale und analoge Ein- / AusgĂ€nge mithilfe des Modbus TCP-Protokolls fernsteuern. Dient zur Steuerung von PeripheriegerĂ€ten und zur Datenerfassung im Slave-Modus. Sie können mit einer speicherprogrammierbaren Steuerung gekoppelt oder direkt mit einem SCADA-Server verbunden werden. ⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

EKI-1200 - Modbus-Gateways fĂŒr die Schnittstellenkonvertierung



Zum Konvertieren von Modbus RTU / ASCII-Protokollen in Modbus TCP werden Modbus-Gateways verwendet. Die GerĂ€te der EKI-1200- Serie verfĂŒgen ĂŒber bis zu vier serielle RS-232/422/485-Schnittstellen und zwei Ethernet-Ports. Mit ihnen können Sie GerĂ€te mit unterschiedlichen Protokollen in einem Netzwerk kombinieren. Schließen Sie beispielsweise ein Slave-GerĂ€t, das nur Modbus RTU ĂŒber die RS-485-Schnittstelle unterstĂŒtzt, an ein Modbus TCP-Netzwerksegment an.

APAX-5000, ADAM-3600, WISE-5000 - Automatisierungssteuerungen


Die Controller unterstĂŒtzen Modbus RTU-Funktionen als Slave / Master und Modbus TCP-Client / Server.



Anwendungsbeispiele


GewĂ€chshausĂŒberwachungssystem


Die Advantech-Überwachungslösung integriert die Software TPC-1070H, ADAM-6024, ADAM-6050, ADAM-6060 und WebAccess in einen Maschinenschrank neben Ackerland. Durch die Verbindung mit verschiedenen empfindlichen GerĂ€ten können die ADAM-6000-Module Echtzeit-Umgebungsdaten empfangen und die GerĂ€teumschaltung ĂŒberwachen, um sicherzustellen, dass sich das GewĂ€chshaus in der optimalen Umgebung fĂŒr das Pflanzenwachstum befindet. Dank der besonderen Funktion von Advantech, der grafischen Bedingungslogik (GCL), können Benutzer ihre eigenen Steuerlogikregeln definieren und diese Regeln in die ADAM-6000-Ethernet-E / A-Module laden. Anschließend fĂŒhren die Module automatisch logische Regeln wie eigenstĂ€ndige Module aus. die Steuerung. Eine weitere Funktion - Peer-to-Peer (P2P) verwendet das offenste und flexibelste Ethernet-Netzwerk, um nicht nur den Implementierungsprozess ohne Controller zu vereinfachen, sondern auch Hardwarekosten zu sparen.

Alle empfangenen Daten werden dann ĂŒber Ethernet an einen Computer mit einem TPC-1070H-Touchpanel ĂŒbertragen. Der TPC-1070H verfĂŒgt ĂŒber ein lĂŒfterloses KĂŒhlsystem und eine IP65-konforme Frontplatte und ist ein robustes und kompaktes Design, das fĂŒr eine sich Ă€ndernde Betriebsumgebung geeignet ist. Seine leistungsstarken Rechenfunktionen können große Datenmengen verarbeiten. FĂŒr die GerĂ€teverwaltung ermöglicht Advantech WebAccess Ingenieuren oder Managern, das Überwachungssystem ĂŒber ein Intranet oder das Internet mit einem Standard-Webbrowser von jedem GerĂ€t aus, einschließlich Tablets und Smartphones, anzuzeigen, zu ĂŒberwachen und zu konfigurieren.



Überwachung der Solarwarmwasserbereitung


Das IngenieurbĂŒro hĂ€tte in der Lage sein mĂŒssen, die Menge an Sonnenenergie, Temperatur und Wasserfluss in einem solarbetriebenen Wasserheizsystem fĂŒr einen olympischen Pool zu steuern, der von seinem neu entwickelten Solarpanel bereitgestellt wird. Sie sollten auch in der Lage sein, diese Werte und ihre Alarme direkt auf den LCD-Panels zu ĂŒberwachen und diese Werte zur spĂ€teren Bezugnahme zu speichern.

Advantech Adam Modules stellte dem Kunden eine Lösung zur VerfĂŒgung, die Datenerfassungsmodule verwendete, die ĂŒber RS485 und einen Zweidrahtbus verbunden waren, um Daten von allen Sensoren zu ĂŒbertragen. Diese Systemarchitektur bietet zwei Hauptvorteile: Erstens können Sie den Datenerfassungsmodulen jederzeit weitere Sensoren hinzufĂŒgen, und zweitens können Sie der Software ganz einfach zusĂ€tzliche Tags hinzufĂŒgen, um diese Werte auf einem PC zu ĂŒberwachen und aufzuzeichnen.

Source: https://habr.com/ru/post/de450234/


All Articles