ModbusMaster
Eigenständige Windows-App, die die Protokolle Modbus RTU
, TCP
, UDP
, RTUoverTCP
, RTUoverUDP
, ASCIIoverRTU
, ASCIIoverTCP
und ASCIIoverUDP
unterstützt.
Ebenfalls enthalten sind die Mono-Versionen für Linux und Mac OS X. Dabei handelt es sich um VB Net-Versionen, also:
- Für Linux müssen Sie die Pakete
mono-complete
und mono-vbnc
installieren - Mac kann je nach OS X-Version unterschiedlich sein. Installieren Sie möglicherweise
mono
und mono-basic
-Pakete
Wenn eine Firewall aktiviert ist, werden Sie möglicherweise aufgefordert, dieser App die Kommunikation im Netzwerk zu erlauben:
- Normalerweise sollte es erlaubt sein, im privaten Netzwerk zu kommunizieren, da es sonst möglicherweise nicht ordnungsgemäß funktioniert
- Erlauben Sie keinen öffentlichen Zugang, es sei denn, Sie wissen, was Sie tun
- Denken Sie nach Abschluss des Tests daran, diese App aus der Liste der zulässigen Apps der Firewall zu entfernen
Die App ist so konzipiert, dass mehrere Instanzen der App gleichzeitig ausgeführt werden können, zum Beispiel:
- Verwenden Sie für jede Instanz dasselbe Protokoll, jedoch mit unterschiedlichen Portnummern, ähnlich wie:
- IP 127.0.0.1 TCP-Port 501 und IP 127.0.0.1 TCP-Port 502
- Verwenden Sie mithilfe anderer Tools eine Mischung verschiedener Protokolle (z. B. com0com für das RTU-Protokoll unter Windows).
Dies alles basiert auf modifizierten nModbus .NET 3.5-Bibliotheken, Copyright (c) 2006 Scott Alexander:
- Diese sind als Ressource für die Windows-Version enthalten, für die Mono-Version jedoch separat
Als schnelles Testtool gedacht:
- Kann mit seinem Gegenstück ModbusSlaveSimulation getestet werden (siehe Video weiter unten)
Eine einfache Alternative wäre stattdessen die AdvancedHMI-Software, da sie hochfunktional und kostenlos ist.
Screenshot
Funktionalität
- Lesen Sie die Kommentare im Formular und fahren Sie mit der Maus über die Beschriftungen, um Hinweise zu erhalten.
- Keine Offset-Adressierung (wobei xxxxx von 00000 bis 65534 reicht):
- Spulen = 0xxxxx
- Diskrete Eingänge = 1xxxxx
- Eingaberegister = 3xxxxx
- Halteregister = 4xxxxx
- Abgesehen von
Int16
, bei dem es sich nur um eine Registeradresse ohne Modifikator handelt, unterstützt diese App auch:-
U
, F
, L
, UL
und S
-Modifikatoren (die für UInt16
, Float32
, Int32
, UInt32
und String
verwendet werden)
- Eine Unterstützung für 64-Bit-Werte wurde hinzugefügt – Float64, vorzeichenbehaftete und vorzeichenlose Integer64:
- Verwenden Sie die Modifikatoren
FQ
, LQ
und UQ
(wobei Q
für Quad Word steht).
- Eine experimentelle Unterstützung für 128-Bit-Werte wurde hinzugefügt – vorzeichenbehaftete und vorzeichenlose Ganzzahl128:
- Verwenden Sie die Modifikatoren
LO
und UO
(wobei O
für Octa Word steht).
- Es unterstützt auch das Lesen/Schreiben von Bits/Zeichen:
- Wählen Sie entweder aufeinanderfolgende Bits/Zeichen innerhalb eines einzelnen Elements oder das genaue einzelne Bit/Zeichen aus jedem der mehreren Elemente aus
- Zum Schreiben ist entweder ein einzelner Wert oder die genaue Anzahl der durch Kommas getrennten Werte erforderlich, wenn
Points
> 1 ist
- Für RTU-basierte Protokolle auf einem einzelnen PC kann diese App Folgendes nutzen:
- Das Windows-Programm com0com zur Bereitstellung virtueller serieller Portpaare
- Zusätzliche TextBox ermöglicht die manuelle Eingabe des seriellen Ports, der für Linux vorgesehen ist, sodass auf virtuelle TTY0TTY-Portpaare wie
/dev/tnt0
<=> /dev/tnt1
zugegriffen werden kann- Dieses Kästchen wurde in der Mac Mono-Version entfernt
- Die Bibliothek unterstützt
Masked Bit Write
, Funktionscode 22 (0x16H oder FC22). - Die App enthält auch den integrierten Code für Slave-Geräte, die
FC22
nicht unterstützen:- Dies erfordert
read-modify-write
, der einige Zeit in Anspruch nehmen kann und Werte überschreiben könnte, die sich während der Ausführung geändert haben
WICHTIG: Seien Sie vorsichtig, wenn Sie versuchen, einen Wert in die SPS zu schreiben.
Verwendung
-> Für Windows
- Verwenden Sie entweder die ausführbaren Windows-Dateien aus dem
exe
-Ordner oder befolgen Sie die nachstehenden Anweisungen, um es selbst zu erstellen:- Laden Sie die Visual Studio Community Edition herunter und installieren Sie sie (idealerweise 2019).
- Laden Sie die ZIP-Datei dieses Projekts herunter und extrahieren Sie sie
- Öffnen Sie dies als vorhandenes Projekt in Visual Studio und führen Sie im Menü Folgendes aus:
- Build/Build-Lösung (oder drücken Sie Strg-Umschalt-B)
- Debuggen/Debuggen starten (oder F5 drücken), um die App auszuführen
- Suchen Sie die erstellte EXE-Datei im Ordner
/bin/Debug
und kopieren Sie sie in Ihren bevorzugten Ordner oder auf den Desktop
-> Für Mono
- Stellen Sie sicher, dass Mono auf Ihrem Computer installiert ist:
- Sowohl
mono-complete
als auch mono-vbnc
Pakete für Linux - Für Mac müssen Sie möglicherweise experimentieren und möglicherweise
mono
und mono-basic
-Pakete installieren
- Laden Sie die ZIP-Datei dieses Projekts herunter, extrahieren Sie sie und suchen Sie das Mono-Zip-Archiv im
Mono
-Ordner - Extrahieren Sie 4 Dateien und benennen Sie ggf. den neu erstellten Ordner und/oder die Exe-Datei in eine kürzere Datei um, um die Navigation im Terminal zu beschleunigen
- Öffnen Sie das Terminal, navigieren Sie zum Ordner und geben Sie Folgendes ein:
sudo mono ModbusMaster.exe
:- Auf einem Mac müssen Sie möglicherweise zum Superuser
su
-Konto wechseln
- Zum Testen von RTU-Protokollen können Sie unter
/dev/ptyp3
möglicherweise virtuelle tty0tty-Portpaare installieren und verwenden /dev/ttyp3
während auf Mac die späteren OS
Hinweis für Mac-Benutzer: Dies wurde auf einem alten iMac G5 PowerPC-Computer mit Mono v2.10.2 getestet. Es gab ein merkwürdiges Verhalten in dem Sinne, dass die App den Fokus verlor und dadurch die TCP-Kommunikation im Auto-Read-Modus störte. Es gibt ein Textfeld mit einem roten X, auf das Sie klicken können, um zu versuchen, den Fokus beizubehalten (wenn Sie danach etwas anderes tun, klicken Sie erneut darauf). Da ich es nicht anders testen kann, bleibt es Ihnen überlassen, zu experimentieren.
Video
Modbus.TCP.Communication.mp4
Lizenz
Lizenziert unter MIT-Lizenz – siehe Datei README.txt im Ordner „Resources“.
Marken
Alle in diesem Projekt direkt oder indirekt erwähnten Marken gehören ihren jeweiligen Eigentümern.
Nützliche Ressourcen
Das AdvancedHMI-Website-Forum, ein weiteres Open-Source-Projekt.