In der modernen industriellen Kommunikation wird das Modbus-Protokoll aufgrund seiner Einfachheit und seiner umfangreichen Unterstützung in verschiedenen Automatisierungssystemen weit verbreitet. Dieses Protokoll unterstützt verschiedene Kommunikationsmethoden, wie z. B. serielle Kabine (RTU) und TCP / IP. Der folgende Artikel beschreibt ein Testprogramm für das Modbus-Protokoll mit der libmodbus-Bibliothek, das die Funktionalität der Bibliothek durch die Implementierung verschiedener Modbus-Funktionen überprüft.
Vollständiger Code:
Programmübersicht
Das Ziel dieses Testprogramms ist es, alle Hauptfunktionen zu überprüfen, die von der libmodbus-Bibliothek unterstützt werden, einschließlich Schreiben einer einzelnen Spule, Lesen von Spule-Status, Schreiben mehrerer Spule, Schreiben eines einzelnen Registers, Lesen von Registers, Schreiben mehrerer Registers und Lesen und Schreiben mehrerer Registers. Das Programm läuft in zwei Modi: TCP und RTU, die durch Befehlszeilenparameter ausgewählt werden.
Umgebungseinstellungen und Initialbedingungen Das Programm
initialisiert zunächst den Modbus-Kontext (ctx) basierend auf den Eingabeparametern (TCP oder RTU). Für den TCP-Modus verbindet er sich mit dem Port 1502 auf dem lokalen Host. Im RTU-Modus ist es so eingestellt, dass es über einen bestimmten seriellen Port (z. B./dev/ttyUSB0) mit einer 19200 - Baud-Rate kommuniziert.
Datenstrukturen und Initialisierung
Um den Test durchzuführen, zugewiesen und initialisiert das Programm zunächst mehrere Arrays, um die Bits und Registerwerte zu speichern, die im Test verwendet werden:
tab_rq_bits和tab_rp_bitsSpulen (Bit) Zustände für Anfragen und Antworten zu speichern.tab_rq_registers、tab_rp_registers和tab_rw_rq_registersRegisterwerte, die zum Speichern von Anfragen und Antworten verwendet werden.
Test-Zyklus
Das Programm führt Schleife-Tests über den definierten Adressbereich durch, wobei die Adresse jedes Mal um eine Zugabe erhöht wird, bis der Bereich vonADDRESS_START 到 ADDRESS_ENDüberschrieben ist. An jeder Adresse führt das Programm folgende Aktion durch:
- Schreibe eine einzelne Spule: Verifiziert, dass das Schreiben und Lesen einer einzelnen Spule erfolgreich durchgeführt wurde.
- Schreiben mehrerer Spulen: Überprüfen Sie, ob das Schreiben und Lesen mehrerer Spulen erfolgreich ist.
- Schreiben eines einzelnen Registers: Überprüfen Sie, ob das Schreiben und Lesen eines einzelnen Registers erfolgreich ist.
- Schreiben mehrerer Registers: Überprüfen Sie, ob das Schreiben und Lesen mehrerer Registers erfolgreich ist.
- Lese - und Schreiben mehrerer Registers gleichzeitig: Überprüft, ob es gelungen ist, mehrere Register gleichzeitig in einem Vorgang zu lesen und zu schreiben.
Ausnahmebehandlung
Nach jeder Modbus-Operation überprüft das Programm die zurückgegebenen Ergebnisse, um zu bestätigen, dass die Operation erfolgreich ist. Wenn der Vorgang fehlschlägt, gibt das Programm eine Fehlermeldung aus und erhöht den Failure-Zähler. Die Tests werden fortgesetzt, bis alle geplanten Tests abgeschlossen sind.
Ergebnis-Ausgabe
Nach Abschluss des Tests gibt das Programm die Testergebnisse aus, die die Gesamtzahl der erfolgreichen oder fehlgeschlagenen Operationen anzeigen. Dies wird durch einen Vergleich der Anforderungsdaten mit den Antwortendaten ermittelt, um die Vollständigkeit und Genauigkeit der Daten sicherzustellen.
Reinigen und Schließen
Nach Abschluss des Tests freigegeben das Programm alle zugewiesenen Ressourcen, schließt die Modbus-Verbindung und beendet sich.
Mit einem solchen Testprogramm können Entwickler die Leistung und Zuverlässigkeit der Modbus-Bibliothek unter verschiedenen Einstellungen überprüfen und ihren stabilen Betrieb in der Praxis gewährleisten. Dies hilft nicht nur den Entwicklern, einen tiefen Einblick in die Implementierung des Modbus-Protokolls zu gewinnen, sondern bietet auch ein leistungsstarkes Werkzeug, um potenzielle Probleme zu identifizieren.
Antwort veröffentlichen