Effiziente Tools zum Debuggen Modbus-basierter Geräte und Netzwerke
Modbus ist ein Kommunikationsprotokoll, das üblicherweise in industriellen Automatisierungssystemen, Smart-Home-Systemen und automatisierten Netzwerken kleiner Objekte (Lagerhäuser, Gewächshäuser usw.) verwendet wird. Das Protokoll dient auch zum Anschließen von Geräten verschiedener Typen an einen Heimcomputer. Die Entwicklung von Projekten wie Arduino und Raspberry Pi hat das Interesse an Aufgaben im Zusammenhang mit Robotik und Automatisierung erheblich erhöht. All dies sichert die Popularität von Modbus bei Amateuren und Profis.
In diesem Artikel werden die wichtigsten Funktionen der vorhandenen Software- und Hardwarelösungen zum Testen und Debuggen von Geräten und Netzwerken basierend auf dem Modbus-Protokoll behandelt.
Wenn Sie mit der Architektur des Protokolls vertraut sind, können Sie direkt zur Beschreibung der Modbus-Software springen. Wenn nicht, finden Sie unten eine kurze Einführung in Modbus.
Inhaltsverzeichnis:
- Informationen zum Modbus-Protokoll
- Modbus-Geräte entwickeln und testen
- Debugging von Automatisierungssystemen auf Basis von Modbus-Geräten
- Herausforderungen bei der Modbus-Kommunikation
Informationen zum Modbus-Protokoll
Modbus ist ein gängiges Protokoll, das in Automatisierungssystemen auf mittlerer und unterer (Feld-) Ebene verwendet wird. Die mittlere Ebene ist die Ebene der Controller - Geräte, die Daten sammeln und den technologischen Prozess steuern. Die Feldebene ist die Interaktionsebene zwischen Sensoren und Steuerungen oder Sensoren und dem Server.
Die typische Struktur eines Automatisierungssystems, das Modbus als Basisprotokoll verwendet, ist unten dargestellt.
Die Standardumgebung für das Modbus-Protokoll ist RS485/422/232. Modbus RTU oder Modbus ASCII arbeiten darüber. In TCP/IP-Netzwerken ist das übergeordnete Protokoll jedoch das TCP-Transportprotokoll, und diese Variante wird als Modbus-TCP bezeichnet. In diesem Artikel werden wir über den Modbus RTU-Übertragungsmodus sprechen.
Das Modbus-Protokoll wird mithilfe einer Master-Slave-Beziehung implementiert. Das heißt, die Kommunikation wird immer von einem Gerät initiiert, dem Master, der eine Anfrage an einen Slave (Server) sendet und auf eine Antwort wartet. Es gibt immer einen Master im Netzwerk und 1 bis 247 Slaves.
Der Master interagiert mit Slave-Geräten im Request-Response-Format. Die Anforderung enthält eine Folge von Bytes, die als Frame bezeichnet wird und in der die Zeit zwischen Bytes in Abhängigkeit von der Datenübertragungsrate standardisiert und nicht länger als das Intervall ist, in dem 1,5 Bytes Daten übertragen werden können. Im RTU-Modus beginnen Nachrichten mit einem stillen Intervall von mindestens 3,5 Zeichen.
Eine Anforderungsnachricht wird im folgenden Format gesendet:
ID - Geräteadresse (1 Byte),
FN - Modbus-Funktion (1 Byte),
[args] - Funktionsargumente (N Byte, abhängig von der Funktion),
CRC - eine Prüfsumme CRC-16 (2 Byte).
Das Format einer Antwortnachricht:
Wie Sie sehen können, haben die Antwort- und Anforderungsrahmen ähnliche Konstruktionen, mit Ausnahme des Datenfelds, das je nach ausgeführter Funktion unterschiedliche Inhalte bereitstellt.
Falls die angeforderte Funktion vom Slave-Gerät nicht unterstützt wird oder die Argumente im Feld [args] der Anforderung für diesen Server falsch sind, wird im Feld FN der Antwort das High-Bit auf 1 gesetzt und das Feld Data enthält zusätzliche Informationen zu dem aufgetretenen Fehler.
Bestimmte Slave-Geräte können auch bestimmte Register mit zusätzlichen Informationen enthalten.
Die Registertypen, auf die in Modbus-Geräten verwiesen wird, umfassen Folgendes:
Feld | Zugriff | Größe | Beschreibung |
---|---|---|---|
Diskrete Eingänge | als Eingänge verwendet | ||
Spulenausgänge | verwendet, um diskret zu steuern | ||
Eingangsregister | wird für die Eingabe verwendet | ||
Betriebsregister | wird für eine Vielzahl von Dingen verwendet, einschließlich Eingaben, Ausgaben, Konfigurationsdaten usw. |
Die vollständige Beschreibung des Modbus RTU-Protokolls finden Sie in seiner Funktionsspezifikation.
Beim Einrichten eines Modbus-Netzwerks ist zu berücksichtigen, dass das Protokoll die Übertragung von Daten von mehreren Geräten ermöglicht, die von einem einzelnen Server oder Controller empfangen werden sollen, auf dem ein Modbus-Treiber installiert ist. Eine serielle App kann den Kommunikations-Port eines Servers (z.B. COM1) steuern, wenn sie Modbus-Daten von mehreren Sensoren empfängt.
Leider gibt es eine Einschränkung, da das gleichzeitige Öffnen des Empfangs-Ports in mehreren Anwendungen eine erhebliche Herausforderung darstellen kann.
Für dieses Dilemma gibt es eine Lösung. Virtual COM Port Driver von Electronic Team ermöglicht die Erstellung virtueller RS485-Ports und die Aufteilung von Modbus-Daten, sodass mehrere Ports gleichzeitig die Daten empfangen können.