ModbusSlaveSimulation
Eigenständige Windows-App, die die Protokolle Modbus RTU, TCP, UDP und ASCIIoverRTU für die Simulation 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 die Kommunikation im privaten Netzwerk erlaubt sein, 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 der 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 aus verschiedenen Protokollen (z. B. com0com für das RTU-Protokoll unter Windows).
Die App sollte Anfragen für jede gültige Modbus-Slave-ID bearbeiten.
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 ModbusMaster getestet werden (siehe Video weiter unten)
- Oder verwenden Sie stattdessen die AdvancedHMI-Software, da diese hochfunktional und kostenlos ist.
Screenshot
Funktionalität
- Alle Werte können vor dem Verbindungsaufbau eingestellt werden – Coils, Discrete Inputs, Input Registers, Holding Registers.
- Die Datenrasteransicht ist zunächst auf die Anzeige von 20 Zeilen mit Adressen eingestellt, kann jedoch im Dropdown-Menü
Row Count
geändert werden, um bei Bedarf mehr oder alle Zeilen anzuzeigen. - Doppelklicken Sie in der Datenrasteransicht, die Sie über das Dropdown-
I/O Address Range
ausgewählt haben, auf den Wert, um ihn zu ändern:- Boolesche Werte wechseln zwischen 0 und 1
- Uint16-Werte erfordern einen vorzeichenlosen Ganzzahlwert zwischen 0 und 65535
- Diskrete Eingänge und Eingangsregister ermöglichen
read-only
Zugriff auf die Master-Anwendung:- Als
Master
bezeichnetes MODBUS-Gerät kann NUR Anfragen zum Lesen dieser Werte senden - Diese Werte sollten vom Benutzer direkt im Simulator manipuliert werden, sonst ändern sie sich nicht
- Spulen und Halteregister ermöglichen
read/write
auf die Master-Anwendung:- Als
Master
bezeichnetes MODBUS-Gerät kann Anfragen zum Lesen dieser Werte sowie Anfragen zur Änderung dieser Werte senden - Diese Werte können bei Bedarf auch vom Benutzer direkt im Simulator manipuliert werden
- Für
RTU
und ASCIIoverRTU
-Protokolle kann dieser Simulator auf einem einzelnen PC die Hilfe von Folgendem nutzen:- com0com-Programm für Windows zur Bereitstellung virtueller serieller Portpaare
- tty0tty-Programm für Linux zur Bereitstellung virtueller serieller Portpaare
- Zusätzliche TextBox ermöglicht die manuelle Eingabe des seriellen Ports:
- Hauptsächlich für Linux gedacht, damit auf die virtuellen
tty0tty
-Portpaare wie /dev/tnt0
<=> /dev/tnt1
zugegriffen werden kann - Dieses Kästchen wurde in der Mac Mono-Version entfernt
- Die Bibliothek unterstützt auch Masked Bit Write, Funktionscode 22 (0x16H oder FC22).
Verwendung
-> Für Windows
- Verwenden Sie entweder ausführbare 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 Desktop
- Zum Testen von RTU-Protokollen verwenden Sie com0com, um virtuelle serielle Ports zu erstellen
-> 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, vielleicht
mono
und mono-basic
-Pakete
- Laden Sie die ZIP-Datei dieses Projekts herunter, extrahieren Sie sie und suchen Sie das Mono-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 (nur um die Navigation im Terminal zu beschleunigen).
- Öffnen Sie das Terminal, navigieren Sie zum Ordner und geben Sie Folgendes ein:
sudo mono ModbusSlaveSimulation.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-Ports 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 kontinuierliche TCP-Kommunikation 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 noch etwas 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 auch die 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.