
Kleine Version, kostenlos!!
Modbus Poll-Bericht
Modbus Poll ist ein einfach zu bedienender Modbus-Hoster - Simulator, der für verschiedene Zwecke entwickelt wurde.
Dazu gehören:
- Modbus Slave-Gerätedesigner für schnelles und einfaches Testen von Protokollschnittstellen
- Automatisierungstechniker, die Modbus-Geräte oder Netzwerke vor Ort testen müssen
- Service-Ingenieure, die bestimmte Dienstdaten von Geräten lesen und / oder ändern möchten
- Modbus-Register in Slaves ändern
- Protokollierung von Daten von Modbus-Geräten
- Fehlerbehebung und Konformitätstests
Systemanforderungen für Modbus Poll
Hardwareanforderungen
Prozessor; Empfohlen 1 GHz oder schneller 1 GB RAM
5 MB freier Festplattenspeicherplatz
1024 x 768 Anzeigeauflösung Betriebssystemanforderungen
Unterstützt alle Windows-Versionen von Windows 7 bis Windows 11.
Modbus Poll Funktion
Verbindung
Modbus Poll verwendet die folgenden Methoden zum Lesen / Schreiben von Daten von einem Gerät:
- Modbus RTU oder ASCII in einem RS232 - oder RS485 - Netzwerk. (USB / RS232 / 485 - Adapter)
- TCP / IP-basierter Modbus. (Modbus RTU / ASCII in einem TCP-Paket)
- Modbus auf UDP / IP basiert. (Modbus RTU / ASCII in einem UDP-Paket eingeschlossen)
Unterstützte Modbus-Funktion
- 01 (0x01) Lesespule
- 02 (0x02) Diskreten Eingang lesen
- 03 (0x03) Haltregister lesen
- 04 (0x04) Eingangsregister lesen
- 05 (0x05) Schreiben in einer einzelnen Spule
- 06 (0x06) Schreiben in einem einzelnen Register
- 08 (0x08) Diagnose (nur serielle Leitung)
- 11 (0x0B) Zähler für Kommunikationsereignisse abrufen (nur serielle Leitung)
- 15 (0x0F) Schreiben in mehrere Spule
- 16 (0x10) Schreiben mehrerer Registers
- 17 (0x11) Berichtsserver-ID (nur serielle Zeile)
- 22 (0x16) Maske Schreiben Registers
- 23 (0x17) Lesen / Schreiben mehrerer Registers
- 43 / 14 (0x2B / 0x0E) Lesen der Geräte-Identifikation
Datensatz
- Datensatz in einer Textdatei
- Datensatz direkt in Excel
Anzeigeformat
Jede Zelle kann individuell formatiert werden.
| Chinesische Beschreibung | Englische Beschreibung |
|---|---|
| 16 - Bit-signiertes Register | Signed 16 - Bit-register |
| 16 - Bit-unsigniertes Register | Unsigned 16 - Bit-register |
| Hexadezimal | Hex |
| Binär | Binary |
| 32 - bit unsignierte Ganzzahzahl mit beliebiger Wort / Byte-Reihenfolge | 32 - bit unsignierte Ganzzahzahl mit beliebiger Wort / Byte-Reihenfolge |
| 32 - bit unsignierte Ganzzahzahl mit beliebiger Wort / Byte-Reihenfolge | 32 - bit unsignierte Ganzzahzahl mit beliebiger Wort / Byte-Reihenfolge |
| 64 - Bit-signierte Ganzzahl in beliebiger Wort - / Byte-Reihenfolge | 64 - bit-signierte Ganzzahl mit beliebiger Wort / Byte-Reihenfolge |
| 64 - Bit unsignierte Ganzzahl in beliebiger Wort - / Byte-Reihenfolge | 64 - bit unsigned integer with any word / byte order |
| 32 - bit float with any word / byte order | 32 - bit float with any word / byte order |
| 64 - bit double float with any word / byte order | Byte order |
Zusätzliche Funktionen
- für OLE / Automation mit Schnittstellen zu Excel, VBA, Python usw.
- Datenverkehr überwachen
- Drucken und Druckvorschau
- Schriftartauswahl
- Bedingte Farbe
- Skalierung
- Live-Diagramm
- Arbeitsbereich speichern / öffnen
- Adress-Scan
Modbus Poll Übersicht
Modbus Poll verwendet eine Multi-Window - Schnittstelle. Dadurch können mehrere Fenster geöffnet werden. Jeder hat gleichzeitig unterschiedliche Dateninhalte von verschiedenen Slave-Geräten.

Hilfe überall
Drücken Sie F1und erhalten kontextbezogene Hilfe für das Thema, das dem aktuell ausgewählten Element zugeordnet ist.
SHIFT + F1 Ein spezieller "Hilfe-Modus" wird aufgerufen, in dem der Cursor in einen Hilfe-Cursor verwandelt wird (Pfeil + Fragezeichen). Anschließend können Benutzer sichtbare Objekte in der Benutzeroberfläche auswählen, z. B. Menüelemente, Schaltflächen der Symbolleiste oder Fenster. Dadurch wird die Hilfe zu einem Thema geöffnet, das das ausgewählte Element beschreibt.
Benannte Zelle
Hier können Sie einen beliebigen Text eingeben, um die Zelle mit Werten anzugeben. Sie können auch Text aus einer Excel-Zelle kopieren / einfügen.
Wert Zelle
zeigt den Datenwert des Modbus-Registers an. Wenn Sie auf eine Wertzelle doppelklicken, wird ein Dialogfeld angezeigt, in dem ein neuer Wert auf das Slave-Gerät geschrieben wird. Wenn Sie eine Zahl in eine Wertzelle eingeben, wird ein Dialogfeld ebenfalls angezeigt. Sie können die Modbus-Funktion auswählen, die für das Schreiben von Werten verwendet wird.
Das Kontrollkästchen „Dialogfeld schließen, wenn die Antwort normal ist" wird verwendet, um das Dialogfeld automatisch zu schließen, wenn der Wert erfolgreich gesendet wird. Dies ist bequem, wenn Sie eine große Anzahl von Werten ändern möchten. Auf diese Weise können Sie schnell eine neue Zelle auswählen und dann erneut einen neuen Wert eingeben.

Schrift ändern
Um die Schrift zu ändern, haben Sie 2 Optionen
- Wählen Sie die Zelle aus, die Sie ändern möchten, und klicken Sie dann auf die rechte Maustaste.
- Wählen Sie die Zelle aus, die Sie ändern möchten, und wählen Sie dann Menu → Display → Font.

Bedingte Farbe
Bedingte Farben helfen Ihnen, Werte innerhalb eines bestimmten Bereichs visuell anzuzeigen. 3 Farben Auswahl
- Standardfarbe: Diese Farbe wird verwendet, wenn die Berechnung für keine der bedingten Farben true ist.
- Regel 1: Wenn der Ausdruck true ausgewertet wird, wird diese Farbwahl verwendet. Regel 1 hat Vorrang vor Regel 2
- Regel 2: Wenn der Ausdruck true ausgewertet wird, wird diese Farbauswahl verwendet.
7 Vergleichsoperatoren
| Chinesische Beschreibung | Englische Beschreibung |
|---|---|
| Nicht genutzt | not used |
| ist nicht verwendet | equal to |
| ist größer als | greater than |
| ist kleiner als | less than |
| ist größer als | greater than or equal to |
| ist kleiner als | less than or equal to |
| 与 | and |
Wenn der Datentyp ein Gleitkomma - oder 32 - Bit-Typ ist, können Sie den Operator "und" nicht verwenden. Wenn Sie "und" auswählen, wird der bedingte Wert als hexadeziimale Zahl eingegeben. Wenn ein beliebiges Bit in der Zelle und in den bedingten Werten 1 ist, ist das Ergebnis wahr.
Farbenbeispiele
Grün, wenn der Zellwert größer als 0, rot, wenn der Wert kleiner als 0.

Skalierung
Skalierung hilft Ihnen, den ursprünglichen Wert auf einen menschlich lesbaren Wert zu skalieren. Die Skalierung funktioniert nur für 16 / 32 - Bit-Ganzzahlen, die mit und ohne Zeichen sind.

(X1, Y1) und (X2, Y2)
Linien, die zwei Punkte (X1, Y1) und (X2, Y2) durchqueren

Liniengleichung

Genauigkeit
Anzahl der Stellen nach dem Dezimalpunkt.
使
Muss aktiviert sein, um Werte vom Modbus-Server / Slave-Standort zu skalieren. Bei anderen Umständen deaktivieren Sie das Skalieren automatisch und wählen Sie das 16 / 32 - Bit-Ganzzahl - Anzeigeformat.
Echtzeit-Diagramm
Dieses Diagramm kann in Echtzeit 12 Serien mit bis zu 100.000 Punkten pro Reihe zeichnen.
Adress-Scan
Scannt den Adressbereich, um eine Liste aller gültigen Adressen auf dem Gerät zu erhalten.
Ein neues Fenster öffnen
Um ein anderes Fenster zu öffnen, haben Sie 3 Optionen:
- Drücken Sie STRG + N
- Wählen Sie im Datei-Menü Neues
- 压
auf der Symbolleiste
Verbindungsdialog
Um das Verbindungsdialog zu öffnen, haben Sie 2 Optionen:
- Drücken Sie F3
- Wählen Sie Verbindungen aus dem Verbindungsmenü

Verbindungen(Verbindung)
Es gibt 5 verschiedene Verbindungstypen:
- Seriell:
Modbus auf serieller Leitung. RS232 oder RS485 Es kann ein USB-Serial - Wandler verwendet werden. - Modbus TCP / IP:
Wählen Sie TCP / IP, wenn Sie mit einem MODBUS-TCP / IP - Netzwerk kommunizieren wollen. In diesem Fall ist die Slave-ID die gleiche Geräte-ID, die in MODBUS TCP / IP verwendet wird.
Die Portnummer ist standardmäßig 502.
Wenn die Verbindung fehlschlägt, versuchen Sie, das Gerät in der Eingabeaufforderung zu ping. Wenn der Befehl ping fehlschlägt, schlägt auch die Modbus-Abfrage fehl. - Modbus UDP / IP:
Wenn Sie mit einem MODBUS-UDP / IP - Netzwerk kommunizieren möchten, wählen Sie UDP / IP. Dies ist das gleiche TCP / IP wie Modbus, aber stattdessen wird das UDP-Protokoll mit weniger Verbindungen verwendet. - Modbus RTU / ASCII über TCP / IP:
Dies ist eine RTU - oder ASCII-Nachricht, die über ein TCP / IP-Netzwerk anstatt über eine serielle Leitung gesendet wird. - Modbus RTU / ASCII über UDP / IP:
Dies ist eine RTU - oder ASCII-Nachricht, die über ein UDP / IP-Netzwerk anstelle einer seriellen Leitung gesendet wird.
Hinweis: Verbindungstyp 3 - 5 nicht www.modbus.organgegebenen Standardmodbus, wurden jedoch aus einfachen Gründen hinzugefügt.
Je nach Ihrer Auswahl werden einige weitere Einstellungen grau angezeigt.
Serielle Port-Einstellungen(Serial Settings)
Mit diesen Parametern können Sie die Seriellen Port-Einstellungen festlegen. Sie sind nur verfügbar, wenn der Verbindungstyp "serieller Port" ist.
Modus
Verwenden Sie diese Option zum Auswahlen vonRTUoderASCII Modell. Die RTU ist aus.
Response Timeout
Gibt an, wie lange eine Modbus-Poll auf eine Antwort des Slaves warten sollte, bevor sie aufgegeben wird. Der Standardwert beträgt 1000ms.
Minimale Verzögerung zwischen den Polls
Unabhängig von der Scanrate sorgt diese Einstellung dafür, dass die Verzögerung vor der Übertragung der nächsten Anforderung auf ein Minimum reduziert wird. Die Auflösung für diese Einstellung beträgt etwa 15 Millisekunden. Auf einigen Computern ist eine bessere Auflösung verfügbar, aber nicht auf allen.
Achtung:
1. Wenn Sie diesen Wert auf weniger als 20 Millisekunden festlegen, ist ein Intervall von 3,5 Zeichen zwischen der Antwort und der neuen Anfrage nicht garantiert. Dies liegt daran, dass der Windows-Planer alle 10 - 20 Millisekunden die Aufgaben wechselt.
2. Wenn Sie mehrere Slave-Stationen in einem seriellen RS485 - Netzwerk abfragen, sollten Sie diesen Wert nicht auf weniger als 20 Millisekunden festlegen. Dies ist, um ein Intervall von 3,5 Zeichen zu gewährleisten.
3. In TCP / IP-Netzwerken sind weniger als 20 Millisekunden in Ordnung.
4. Eine serielle Verbindung mit nur einem Slave-Gerät dauert weniger als 20 ms.
Benutzer Porter Rate
Wenn keine der standardmäßigen Baudraten funktionieren, geben Sie eine benutzerdefinierte Baudrate an.
Remote-Server
Die Remote-Server - Einstellungen sind nur verfügbar, wenn eine Ethernet-Verbindung verwendet wird.
IP-Adresse
Die IP - Ad resse des Ser vers . Der Standard wert ist local host127.0.0.1
Port
Die Serverportnummer. Der Standardwert 502
Verbindungszeitüberschreiten
wird für die maximale Zeit verwendet, um Verbindungen herzustellen. Standardwert 1000
Erweiterte Einstellungen
RTS-Schalter
RTS Toggle gibt an, dass die RTS-Zeile hoch ist, wenn die Bytes für die Übertragung verfügbar sind. Nachdem alle Puffer-Bytes gesendet wurden, wird die RTS-Zeile auf niedrig.
Wenn Sie einen 232 / 485 - Wandler ohne automatischen Richtungswechsel haben, können Sie ihn zum Richtungswechsel verwenden.
Hinweis:
Wenn möglich, sollten Sie die Verwendung von RTS-gesteuerten RS232 / RS485 - Wandlern vermeiden. Es ist schwierig, den genauen Zeitpunkt zu bestimmen, an dem der Sender nicht in Echtzeit ausgeschaltet wird Betriebssysteme wie Windows und Linux. Wenn Sie zu früh schließen, können Zeichen noch im Emissionregister von FIFO oder UART sitzen und diese Zeichen gehen verloren. Die Sklaven können diese Nachricht nicht erkennen. Auf der anderen Seite, wenn es zu spät geschlossen wird, dann ist die Nachricht des Slaves beschädigt und der Master-Server wird die Nachricht nicht erkennen können.
DSR-Format
DSR Gibt an, ob ein DSR-Signal (Data Set Ready) für die Ausgabeüberwachung überwacht wird. Wenn dieses Mitglied TRUE ist und die DSR ausgeschaltet ist, wird die Ausgabe ausgehalten, bis die DSR erneut gesendet wird.
CTS-Dienst
CTS gibt an, ob ein CTS-Signal (clear-to - send) für die Ausgangs-Datenverkehrsteuerung überwacht werden soll. Wenn Sie dieses Kontrollkästchen aktivieren und das CTS deaktivieren, wird die Ausgabe angehalten, bis das CTS erneut gesendet wird.
DTR-Unternehmen
DTR Gibt an, ob DTR aktiviert oder deaktiviert wird, wenn der Port geöffnet wird.
Echo löschen
Wenn Ihr Gerät oder der RS232 / RS485 - Adapter das gerade gesendete Zeichen wiederholt.
Lesen / Schreiben-Definitionen
Verwenden Sie diesen Befehl, um die Daten des aktiven Fensters zu definieren, die überwacht werden sollen.
Zum Öffnen des Dialogfelds „Definition lesen / schreiben" gibt es 3 Optionen:
- Drücken Sie F8
- Wählen Sie "Lese / Schreib-Definition"
- 压
im Menü "Einstellungen" in der Symbolleiste aus

von der Stations-ID
Bereich 1 bis 255. (Die Modbus-Spezifikation ist 247). Der Wert 0 kann auch verwendet werden, um direkt mit MODBUS / TCP oder MODBUS / UDP-Geräten zu kommunizieren.
Funktionscode
Sie können einen von 8 Funktionscodes wählen.
Lesefunktion
Die von der Lesefunktion zurückgegebenen Daten werden im Rasterfenster angezeigt.
- 01: Lese-Spule (0x)
- 02: Lese diskreter Eingang (1x)
- 03: Lesen Sie das Aufbewahrungsregister (4x)
- 04: Lesen Sie das Eingangsregister (3x)
Schreiben Sie eine Funktion
Schreiben Sie eine Funktion Schreiben Sie Daten, die im Rasterfenster angezeigt werden.
- 05: Schreiben einer einzelnen Spule (Schreib-Spule - Zustand)
- 06: Schreiben eines einzelnen Registers (Schreib-Halt - Register)
- 15: Schreiben mehrerer Spule (Schreib-Spule)
- 16: Schreiben mehrerer Registers (Schreib-Halt - Register)
Adresse
Adresse im Modbus-Protokoll ist verwirrend! Einige Protokolle spezifizieren die Verwendung von Protokoll - / Nachrichtenadressen, andere verwenden Geräteadressierung.
Protokoll / Nachricht Adresse
Einige Protokollspezifikationen verwenden eine Zählung von Protokoll - / Nachrichtenadressen von 0 bis 65535 sowie Funktionscodes. Dies wird auch in der neuen Modbus-Spezifikation verwendet. Dies ist eine Nachricht, die von der Adresse über das Netzwerk gesendet wird.
Modbus Poll verwendet die Zählung von Protokoll - / Nachrichtenadressen von 0 bis 65535.
Geräteadresse
Einige Protokolle spezifizieren die Verwendung von Geräteadressen / Registers. Die Zählung des Registers beginnt mit 1. Die erste Ziffer beschreibt die Funktion, die verwendet wird. Dies bedeutet, dass die Gerätadresse 40101 durch die Adresse 100 identifiziert wird.„4" steht für das Haltregister, 4x-Register zählen von 1 an. Daher ist der Verweis auf "4XXXX" implizit. Noch verwirrender ist: 4x steht für den Funktionscode 03, 3x steht für den Funktionscode 04!
5 Ziffern und 6 Ziffern
Das Adressformat 4x zählt von 40001 bis 49999. Die nächste Adresseist nicht50000. Früher waren 9999 Adressen ausreichend. In manchen Fällen reicht 9999 nicht aus. Fügen Sie dann eine Null hinzu. 40101 wird zu 400101 und so weiter. Dies wird als 6 - Bit-Adressierung oder erweiterte Adressierung bezeichnet.
Das ist nicht das Problem der Modbus Poll. 410001 wird zu 10.000. Die "4" wird weggeworfen, und der restliche 10001 wird um 1 reduziert, wenn wir mit 0 anstatt mit 1 beginnen.
Beispiel für Adresse
Diese Beispiele zeigen, wie Modbus Polls bei der Spezifikation verwendet werden können.
Lese-Halt - Register
Sie möchten 20 Register für die Gerätadresse 40011 alle 1000 Millisekunden von der Slave-ID2 lesen. Aus "4" wissen wir, dass dies die Funktion 03 ist "Lesen des Hold-Registers".
- Funktion von Station-ID = 2
- = "03 Lesen des Hold-Registers (4x) "
- Adresse = 10 (11 minus 1)
- Anzahl = 20
- Scan-Rate = 1000
Lesen diskreter Eingang
Sie möchten alle 500 Millisekunden 1000 Spulen von der Adresse 110201 aus der ID5 lesen. Aus "1" wissen wir, dass dies die Funktion 02 "Lesen diskreter Eingabe"
- von der Station-ID = 5 ist
- Funktion = „02 Lesen diskreter Eingang (1x)"
- Adresse = 10200 (10201 - 1)
- Quantität = 1000
- Scanrate = 500
Scanrate
Die Scanrate kann von 0 bis 3600000ms eingestellt werden. Beachten Sie, dass es sinnlos ist, die Scanrate auf niedriger als die Transaktionszeit einzustellen. Wenn Sie eine serielle Verbindung von 9600 Baute verwenden und 125 Registers anfordern, beträgt die Transaktionszeit ungefähr 8 + 2 + 250 + 2 = 262ms + das Intervall zwischen der Anfrage (> 3,5 Zeichenzeit) und der Antwort. In diesem Fall ist es sinnlos, die Scan-Rate auf 100ms einzustellen, da die Transaktionszeit mindestens 262 ms + die Verzögerung von Stationen (Lap) + die minimale Zeit zwischen den Polls beträgt. (Einstellungen im Verbindungsdialogfeld F3).
Lesen / Schreiben deaktivieren
Das Kontrollkästchen Lesen / Schreiben deaktivieren kann verwendet werden, um die Kommunikation in diesem Fenster vorübergehend zu aktivieren oder zu deaktivieren. Anschließend wird der Text (Disabled) sowie die Tx - und Error-Zähler angezeigt

Wenn "Lesen / Schreiben" deaktiviert ist, können Sie die Schaltfläche "Einmal lesen / schreiben" verwenden oder F6 drücken, um eine einzelne Anforderung auszuführen.

Schaltfläche "Einmal lesen / schreiben"
Deaktivieren
Bei Fehlern deaktivieren Sie das Lesen / Schreiben.
Name-Spalten verstecken
Alle Namen verstecken. Wenn Sie sie nicht verwenden, kann dies bequem mehr Platz freigeben.
Adresse in der Zelle
Wenn aktiviert, wird die Adresse auch in der Wertzelle angezeigt, z. B.: 2000 = 00000

PLC-Adresse (Basis1)
Diese Option zeigt die Adresse als Gerätadresse an.

Das Enron / Daniel Modell
Der Enron oder Enron / Daniels Modbus ist ein Standardmodbus mit einigen "Anbietererweiterungen". Die genaue Wirkung dieser Erweiterungen hängt vom Kontext ab, aber die meisten gängigen Modbus-Befehle funktionieren wie erwartet. Es gibt einige benutzerdefinierte, anbieterdefinierte Funktionen - aber nur wenige Benutzer erwarten oder verwenden sie. Der größte Einfluss bezieht sich auf die Art und Weise, wie 32 - Bit-Datenwerte gelesen werden und geschrieben werden.
Enron-Modbus definiert zwei spezielle 4x-Halt - Registerbereiche:
- 4x5001 bis 4x5999 wird als 32 - Bit-große Ganzzahl (4 Byte pro Register) angenommen.
- 4x7001 bis 4x7999 wird als 32 - Bit-Fließkomma - Wert (4 Byte pro Register) angenommen.
Die Verarbeitung von 32 - Bit-Werten in Modbus ist nicht nur für Enron-MB. Jedoch erfordert Enron-MB, dass jedes Register vier Bytes statt zwei Bytes zurückgibt, ein umstrittener Schritt, der in der Modbus-Spezifikation den Begriff "Register aufbewahrt" verwendet. Dies bedeutet, dass 4x5001 und 4x5002 im Enron-Modbus 8 Bytes oder zwei 32 - Bit-Ganzzahlen zurückgeben, während Standard-Modbus nur 4 Bytes oder eine 32 - Bit-Ganzzahlen zurückgibt, die als zwei 16 - Bit-Ganzzahlen betrachtet werden. Darüber hinaus gibt das Polling-Register 4x5010 in Enron-MB die zehnte 32 - Bit-Lange - Ganzzahl zurück, während der Standardmodbus die Hälfte der fünften 32 - Bit-Lange - Ganzzahl in diesem Bereich berücksichtigt.
行
Geben Sie die Anzahl der Zeilen im Raster an, das Sie bevorzugen.
Echtzeit-Diagramme
Mit diesem Befehl können Sie bis zu 12 Datenreihen in Echtzeit in einem Diagramm zeichnen.
Echtzeit-Diagramme sind schnell und können neue Linien zeichnen, wenn neue Daten erhalten werden.
Hinweis:
Alle Diagrammeinstellungen werden in der Arbeitsbereichsdatei gespeichert. Speichern / Öffnen des Arbeitsbereichs
Um das Dialogfeld "Echtzeit-Diagramm" zu öffnen, haben Sie 2 Optionen:
- Drücken Sie Alt + R
- Wählen Sie im Anzeigenmenü „Echtzeit-Diagramm"

Die X-Achse zeigt die Anzahl der Sekunden seit dem Diagrammstart an.
Wenn der Punkt am Ende des Diagramms erreicht, gibt es 3 Optionen:
- Endlich anhalten:Das Diagramm stoppt.
- Letzter Neustart:Die Karte beginnt neu.
- Weiter:Es dauert an, bis die maximale Punktzahl erreicht ist oder die Stopptaste gedrückt wird.
Einstellung
Standardmäßig sind alle 12 Serien an die linke Y-Achse verknüpft. Aktivieren Sie das Kontrollkästchen „Rechte Y-Achse" (wenn Sie die Sequenz mit der rechten Y-Achse verknüpfen möchten).
Geben Sie
- Farbe
- Rechts Y-Achse
- Titel an. Wenn der Titel leer ist, wird mit dem Namen im Lesenfenster initialisiert
- Ausgleich
Zeigt
- Dateiname
- Adresse
Der Offset kann zum Ausrichten von Datenpunkten auf derselben Y-Achse verwendet werden. Beispielsweise können Datenpunkte mit 0 oder 1 verschoben werden, sodass sie nicht überlappen werden.

Zoom-Funktion
Wenn Sie weitere Details anzeigen möchten, kann das Vergrößern des Diagramms nützlich sein. Die Skalierung wird durch die linke Maustaste gesteuert. Um einen bestimmten Teil des Diagramms zu skalieren, klicken Sie einfach auf die linke Maustaste auf das Diagramm (dies wird die linke obere Ecke des Skalierungsrechtecks sein) und ziehen Sie dann in die untere rechts Ecke. Es wird ein Rechteck entstehen. Sobald Sie die Maustaste loslassen, passt sich die Welle automatisch an die von Ihnen ausgewählte Region an.
Wenn Sie mit der linken Maustaste auf ein Diagramm klicken (z. B. Skalieren starten), aber wenn Sie sich in die obere linke Ecke bewegen, werden alle Änderungen, die Sie mit Skalieren und Schwanken durchgeführt haben, rückgängig gemacht (das Diagramm wird in dem Zustand sein, in dem Sie sich vor der Verwendung von Schwanken und Skalieren befanden).
Übersetzungsfunktion
Um ein Steuerelement zu verschieben, klicken Sie mit der rechten Maustaste auf eine Position auf dem Steuerelement und bewegen Sie die Maus. Der Punkt unter der Maus folgt der Mausbewegung.
Verknüpfen von Daten mit einer Diagrammreihe
Es sei denn, Sie verknüpfen die Modbus-Dateneinheit mit einer der 12 - Serien, kann das Diagramm nicht wissen, welche Daten verwendet werden sollen. Wählen Sie hierzu eine Wertzelle aus und wählen Sie dann "Verknüpfen mit einem Diagramm" aus dem Menü → Anzeige.

Exportieren von Serien
Speichert Seriendaten auf der Festplatte oder kopiert sie in die Zwischenablage. Fügen Sie die Daten direkt in Excel zur weiteren Verarbeitung ein.
Trotz der Verwendung von nicht-Komma - Feldtrennzeichen hat die Datei die Erweiterung. csv.
Trennzeichen:Wählen Sie ein Zeichen aus, das die Werte in der Textdatei trennt. Verwenden Sie Tab-Trennzeichen beim Kopieren / Einfügen in Excel. Darüber hinaus wurden einige zusätzliche Informationen bereitgestellt.
- Punkte
- Maximaler Punktwert
- Minimaler Punktwert
- Durchschnittliche Punktzahl

Adress-Scan
Scannen Sie den Adressbereich, um eine Liste aller gültigen Adressen auf Ihrem Gerät zu erhalten. Die Adressen werden einzeln gelesen, und das Lesergebnis wird in der Liste angezeigt.
Achtung:
Das Scannen aller 65.535 Adressen dauert einige Zeit, je nach Verbindungstyp, Servergerät usw.

Exportieren von Adress-Scan
Speichern von Adress-Scan - Daten auf der Festplatte oder kopieren Sie sie in die Zwischenablage. Fügen Sie die Daten direkt in Excel zur weiteren Verarbeitung ein.
Die Datei hat trotz der Verwendung von nicht-Komma - Feldtrennzeichen die Erweiterung. csv.
Trennzeichen:Wählen Sie ein Zeichen aus, das Werte in einer Textdatei trennt. Verwenden Sie Tab-Trennzeichen beim Kopieren / Einfügen in Excel.
Anzeigeformat
Markiert die Zelle, die formatiert werden soll. Wählen Sie im Anzeigemenü eines der 28 Anzeigestellungen aus.
native Modbus-Register
16 - Bit Modbus-Register können in vier verschiedenen Modi angezeigt werden
- Signature
- Unsigned
- ASCII - Hexadecimal
- ASCII - Hexadezimal
- Binär
32 - Bit-Signified Integer
Es vereint zwei 16 - Bit-Modbus - Register. Es kann in vier verschiedenen Wort / Byte-Reihenfolge angezeigt werden.
- Symbolische Ganzzahl Big-endian
- Symbolische Ganzzahl Little-endian
- Symbolische Ganzzahl Big-End Byte Exchange
- Symbolische Ganzzahl Little-endian Byte Exchange Beispiel Bytes Reihenfolge:AB-CD (Big-End)
Dezimal 123456789 oder Hexadezimal07 5B-CD15Überleitung in Modbus-Nachrichten
Reihenfolge bei der Anordnung:07 5B CD15
32 - Bit unsignierte Ganzzahl
Es vereint zwei 16 - Bit Modbus-Register. Es kann in vier verschiedenen Wort / Byte-Reihenfolge angezeigt werden.
- unsignierte Ganzzahl Big-endian
- unsignierte Ganzzahl Little-endian
- unsignierte Ganzzahl Big-End - Byte-Switch
- unsignierte Ganzzahl Little-endian - Byte-Switch Beispiel-Byte - Reihenfolge:AB CD (Big-End)
Dezimalzahl 123456789 oder Hexadezimalzahl07 5B CD15Reihenfolge, wenn sie in einer Modbus-Nachricht über die Linie
angeordnet werden:07 5B CD15
64 - Bit-signierte Ganzzahl
Es vereint vier 16 - Bit-Modbus - Register. Es kann in vier verschiedenen Wort / Byte-Reihenfolge angezeigt werden.
- Big-endian - Zahlen
- Little-endian
- Little-endian
- Little-endian]AB CD EF GH (Big-endian)
Dezimalzahlen - 1,234,567,890,123,456,789 oder HexadezimalzahlenEE DD EF0B82 16 7E EB
Reihenfolge, wie sie in Modbus-Nachrichten über das Netzwerk erscheinen:EE DD EF0B82 16 7E EB
64 - Bit unsignierte Ganzzahl
Es vereint vier 16 - Bit-Modbus - Register. Es kann in vier verschiedenen Wort / Byte-Reihenfolge angezeigt werden.
- unsignierte Ganzzahl Big-endian
- unsignierte Ganzzahl Little-endian
- unsignierte Ganzzahl Big-End - Byte-Switch
- unsignierte Ganzzahl Little-endian Byte-Switch Beispiel-Byte - Reihenfolge:AB CD EF GH (Big-endian)
Dezimalzahlen 1,234,567,890,123,456,789 oder Hexadezimal11 22 10F4 7D E9 81 15Sortung in Modbus-Nachrichten über Netzwerk
:11 22 10F4 7D E9 81 15
32 - Bit-Fließkomma - Zahl
Es kombiniert zwei 16 - Bit-Modbus - Register. Es kann in vier verschiedenen Wort / Byte-Reihenfolge angezeigt werden.
- Schwebpunkt Big-endian
- Fließpunkt Little-endian
- Float Little-endian
- Float Little-endian Bytes Exchange Beispiel Bytes Reihenfolge:AB CD (Big-End)
Fließkommazahlen 123456.00 oder Hexadezimal47F1 20 00Reihenfolge in Modbus-Nachrichten über die Linie
:47F1 20 00
64 - Bit Fließkomma-Zahl mit doppelter Präzision
Es kombiniert vier 16 - Bit-Modbus - Register. Es kann in vier verschiedenen Wort / Byte-Reihenfolge angezeigt werden.
- Doppelte große Enden
- Dual-Little - Endian
- Dual-Big - End-Byte - Austausch
- Dual-Little - Endian-Byte - Austausch Beispiel-Byte - Reihenfolge:AB CD EF GH (Big-End - Reihenfolge)
Fließkommazahlen 123456789.00 oder Hexadezimal41 9D6F 34 54 00 00 00Sortiert nach Linie
in einer Modbus-Nachricht:41 9D6F34 54 00 00 00
Arbeitsbereich speichern / öffnen
Wenn Sie viele verwandte Modbus-Fenster öffnen, können Sie bequem einen Schnapshot des aktuellen Layouts aller geöffneten und angeordneten Modbus-Fenster in einem Arbeitsbereich speichern.
Ein Arbeitsbereich (* mbw) ist eine Datei, die die Anzeigeinformationen und den Dateinamen aller geöffneten Fenster enthält. Nicht der tatsächliche Inhalt. Gehen Sie dazu zu "Datei → Arbeitsbereich speichern".
Die Einstellungen "Verbindung" und "Diagramm" werden in der Arbeitsbereichsdatei gespeichert.
Wenn Sie eine Arbeitsbereichsdatei öffnen, öffnet PollModbus alle Modbus-Fenster und zeigt sie in Ihrem gespeicherten Layout an.
Exportieren in csv
Exportieren Sie Namen und Werte in eine Wertdatei, die durch Komma, Semikolon oder Tabs getrennt ist. Wählen Sie im Datei-Dialogfeld
- Komma-getrennte Wertdatei (*.csv)
Temperatur, "19.7" - Komma-getrennte Wertdatei (*.csv)
Temperatur; "19.7" - Tab-Trennungswert-Datei (*. txt)
Temperatur 19.7
Je nach Ihrem System werden Kommas oder Punkte verwendet, um Dezimalzahlen zu trennen.
Exportieren in Modbus Slave
Exportieren Sie Namen, Werte und Formate in eine Modbus Slave-Datei. mbs
Öffnen von Dateien erfordert Modbus Slave Version 7.4.0 oder höher.
Prüfungszentrum
Dieses Testdialogfeld soll den Entwicklern von MODBUS-Slave - Geräten helfen, alle von ihnen selbst komponierten Zeichenfolgen zu verwenden.
Das Listenfeld zeigt übertragene und empfangene Daten an.
Sie können mehrere Testzeichenfolgen in das Dropdown-Liste - Feld einfügen. Nachdem Sie die Zeichenfolge eingegeben haben, drücken Sie die Schaltfläche „Zu Liste hinzufügen", und fügen Sie die Zeichenfolge der Liste hinzu.
Sendet die ausgewählte Zeichenfolge beim Drücken der Schaltfläche "Senden".
Öffnen Sie die Liste
Beibehält die Testzeichenfolge aus der Datei.
Speicherliste
Speichern Sie die Testzeichenfolge in der Datei.
Beseitigung
Löscht die Testliste.
zur Liste hinzufügen
Fügt die aktuelle Testzeichenfolge der Liste hinzu.
Add Check
Fügt CRC oder LRC am Ende der Eingabezeichenfolge hinzu.
Wenn Sie das Prüfungscenter verwenden, müssen Sie möglicherweise die Kommunikation aus anderen Fenstern deaktivieren. Aktivieren Sie das Kontrollkästchen Lesen / Schreiben deaktivieren im Dialogfeld Lesen / Schreiben-Definition. Setzen → Lesen / Schreiben Definitionen.
ASCII-Beispiel
Zeichenfolge im Kombofeld: 3A 30 31 30 33 30 30 30 30 30 30 30 30 41
Wenn ein LRC hinzugefügt wurde, wird der übertragenen Zeichenkette3A 30 31 30 33 30 30 30 30 41 46 32 0D 0A
Auch CR LF-Paare hinzugefügt.
TCP / IP Beispiel
Lest 10 reservierte Register. 00 00 00 00 00 00 06 01 03 00 00 0A
Die ersten sechs Bytes sind TCP / IP-Header.
Testcenter String-Datei
Mit einem Texteditor (z. B. Notepad oder einem ähnlichen Werkzeug) können Sie die Zeichenfolgen für den Test vorbereiten.
Die erste Zeile in der Datei muss die Zeichenfolge "TestCenter" sein. Auf diese Weise erkennt Modbus Poll das richtige Dateiformat. Drücken Sie "Liste öffnen", um die vorbereitete Textdatei zu öffnen.
Inhalt der Stringliste
3A 30 30 30 30 30 30 30
Kopieren.
Verwenden Sie die Schaltfläche Kopieren, um die ausgewählte Tx / Rx-Zeichenfolge in die Zwischentafel zu kopieren.
Die SHIFT - und STRG-Tasten können mit der Maus verwendet werden, um eine Zeichenfolge auszuwählen und auszuwählen, eine Gruppe von Zeichenfolgen auszuwählen und nicht benachbarte Zeichenfolgen auszuwählen.
Achtung:
hält dieses Fenster geöffnet, während andere Befehle ausgeführt werden.
Modbus-Datenaufzeichnung
Sie können die Daten in einer Textdatei oder direkt in Microsoft Excel aufzeichnen.
Textdatei
Wählen Sie im Einstellungsmenü „Log" aus oder verwenden Sie die Verknüpfungstaste: Alt + L
Jedes Modbus-Fenster wird in einer separaten Textdatei protokolliert.
Wenn Sie die Datenerfassung beenden möchten, wählen Sie den Befehl Abmeldung im Menü Einstellungen aus.

Logging Rate
Pro Lesen
Protokolliert alle Modbus-Anforderungen. Die Frequenz wird als Scanrate aufgezeichnet.
Wählen Sie
Geben Sie die Protokollrate (in Sekunden) an. Es hat nichts mit der Scan-Rate zu tun.
Achtung:
Wenn die Scannrate 10000 ms beträgt, ist es sinnlos, die Protokollrate von 1 Sekunde einzurichten, da die Daten nur protokolliert werden, wenn neue Daten bereit sind.
Trennzeichen
Als Trennzeichen können Sie eine der folgenden Optionen verwenden:
Feste Breite
gibt an, dass die Werte nach Spalten organisiert werden.
Spaß machen.
Werte, die durch Komma getrennt sind.
Tag
Durch Tab-Zeichen getrennt Wert.
Protokollieren nur bei Datenänderungen
Gibt an, dass eine neue Protokollzeile nur geschrieben wird, wenn Daten seit dem letzten Protokoll geändert wurden.
Log-Fehler
Gibt einen Fehler wie einen Timeout für die Aufzeichnung an.
Protokolldatum
Gibt an, dass das aktuelle Datum zur Protokollzeit hinzugefügt wird.
Verwenden Sie "T" als Trennzeichen
Geben Sie Zeit und Datum durch den in ISO 8601 angegebenen Buchstaben "T" getrennt.
Log millisekunden
Gibt an, dass der Protokollzeit Millisekunden hinzugefügt werden.
Log Adresse
Gibt an, dass die Modbus-Adresse dem Protokoll hinzugefügt wird.
Beginnen der Protokollierung bei Ok
Gibt an, dass die Protokollierung bei Ok-Taste gestartet wird. Andernfalls werden die Protokoll-Einstellungen nur beim Speichern der * mbp-Datei gespeichert.
Beginnen der Protokollierung beim Öffnen von *. mbp
Gibt an, dass die Protokollierung beim Öffnen von *. mbp-Dateien automatisch gestartet wird.
Sofortige Aktualisierung in Datei
Dadurch wird sichergestellt, dass die Protokollzeilen nicht im Dateisystem ausgewertet werden, sondern sofort physisch geschrieben werden.
Anfügen
Gibt an, dass das Protokoll an die ausgewählte Datei angehängt wird. Andernfalls wird ein neues Dokument erstellt.
Mitternacht Neue Protokolldatei
Schließt die aktuelle Protokolldatei und startet um Mitternacht eine neue. Der Zeitstempel wird zu Ihrem Dateinamen hinzugefügt.
Header-Datei - Informationen
- Einfügen von Überschrift:Informationen werden oben in die Protokolldatei eingefügt.
- Benennen der Zelle in der oberen Zeile:Einfügen des Namens.
- Definition der Abstimmung:Einfügen von ID, Funktionen usw.
- Name:Der Name des einfügten Protokolls.
Beispiel für eine Textdatei mit fester Breite:22: 28: 13 <40001>0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 <40001>0 0 0 0 0 0 0 <40001>1 0 0 0 <40001>13350 1 0 0 4 0 0 0 0
Sie können Daten in eine Excel-Tabelle importieren.
Microsoft Excel
Diese Funktion erfordert die Installation von Microsoft Excel Excel 2003 - Protokolle sind auf 65.535 Protokolle begrenzt, da dies die maximale Anzahl von Zeilen in einem Excel-Arbeitsblatt ist. Excel 2007 oder höher ist auf 1.048.576 Zeilen begrenzt. Jedes Modbus-Fenster wird in einem separaten Excel-Arbeitsblatt protokolliert.
Wählen Sie „Excel-Protokolle" aus dem Einstellungsmenü oder verwenden Sie die Verknüpfungstaste: Alt + X
Berühren Sie das Excel-Arbeitsblatt nicht während der Protokollierung, da dies die Protokollierung unterbrechen kann.

Lograte
- Jeder Inhalt lautet:Protokoll für alle Modbus-Anfragen. Die Frequenz wird als Scanrate aufgezeichnet.
- Auswahl:Geben Sie die Protokollrate in Sekunden an. Das Protokoll hat nichts mit der Scanrate zu tun.
Hinweis:Wenn die Scanrate 10000 ms beträgt, ist es sinnlos, die Protokollrate von 1 Sekunde einzurichten, da die Daten nur protokolliert werden, wenn neue Daten bereit sind. - Die folgende Zeit stopp:Geben Sie die Anzahl der Protokollzeilen fest. Bitte beachten Sie, dass Excel 2003 auf 65.536 Zeilen und Excel 2007 auf 1.048.576 Zeilen begrenzt ist.
Header-Dateiinformationen
- Einfügen von Überschrift:Informationen werden in die oberen 3 Zeilen des Excel-Arbeitsblattes eingefügt.
- Benennen der Zelle in der oberen Zeile:Fügen Sie den Namen in Zeile 3 ein.
- Definition der Abstimmung:Fügen Sie ID, Funktion usw. in Zeile 2 ein.
- Name:Fügen Sie den Namen des Protokolls in Zeile 1 ein.

Excel-Protokolle mit Headerinformationen.
Kommunikationsverkehr
Wählen Sie das Menü „Anzeige → Kommunikation", um den Datenverkehr auf einer seriellen Linie oder einem Ethernet-Kabel anzuzeigen. Verwenden Sie die Schaltfläche Stoppen, um die Aktualisierung vorübergehend zu stoppen, um zu überprüfen.
Verwenden Sie die Schaltfläche „Kopieren", um die ausgewählte Zeile in die Zwischenablage zu kopieren.

Achtung:
Dieses Fenster zeigt nur die Daten an, die von Modbus Poll gesendet und empfangen werden. Sie können es nicht als Daten-Sniffer verwenden.
Das Fenster wird geöffnet bleiben, während andere Befehle ausgeführt werden.
OLE / Automatisierung
Automatisierung (früher als OLE-Automatisierung bezeichnet) ermöglicht es einer Anwendung, Objekte zu manipulieren, die in einer anderen Anwendung implementiert sind.
Ein Automatisierungsclient ist eine Anwendung, die ein öffentliches Objekt, das einer anderen Anwendung gehört, manipulieren kann. Dies wird auch als Automatisierungsteuerung bezeichnet.
Ein Automatisierungsserver ist eine Anwendung, die programmierbare Objekte für andere Anwendungen öffnet.Modbus Poll Es handelt sich um einen automatisierten Server.
Das bedeutet, dass Sie jedes Programm verwenden können, das VBA (Visual Basic for Applications) unterstützt, wie Visual Basic, Excel usw., um Modbus-Daten nach Ihren spezifischen Anforderungen zu interpretieren und anzuzeigen.
Excel-Beispiel
Wenn Sie ein Makro erstellen möchten, sollten Sie die Registerkarte "Entwickler" anzeigen oder im Entwicklermodus ausführen.
Excel für 2007

- für Excel 2007 Klicken Sie auf die Schaltfläche Microsoft Office und klicken Sie dann auf Excel-Optionen.
- Klicken Sie auf "Popular" und aktivieren Sie das Kontrollkästchen "Entwickler anzeigen" im Leibband.
Beachten Sie, dass das Band Teil der Microsoft Fluent-Benutzeroberfläche ist.
Excel 2010, 2016
- Klicken Sie auf die Registerkarte Datei.
- Klicken Sie auf Optionen. Das Fenster "Excel-Optionen" wird geöffnet.
- Klicken Sie im linken Bereich auf „Anpassungsband".
- Wählen Sie im rechten Bereich unter "Hauptarbeiter" das Kontrollkästchen "Entwickler".
- Klicken Sie auf "OK". Die Registerkarte „Entwickler" sollte nun im Leibband (rechtsseitigste Registerkarte) angezeigt werden.
Excel Beispielcode
In diesem Beispiel werden zwei Fenster geöffnet. Ein Lesegister, ein anderes Lesegister.
Die Modbus-Umfrage ist versteckt, aber Sie können sie anzeigen, indem Sie die Zeile "ShowWindow" dekommentieren. Dadurch wird eines der Fenster angezeigt.
Ein Beispiel ist ebenfalls in der Installation von Modbus Poll enthalten.
Start → Alle Programme → Modbus Poll → Excel-Beispiel
Excel-VBA - Beispiel
Public doc1 As Object
Public doc2 As Object
Public app As Object
Dim res As Integer
Dim n As Integer
Private Sub StartModbusPoll_Click()
' 创建 Modbus Poll 应用程序对象和两个文档对象
Set app = CreateObject("Mbpoll.Application")
Set doc1 = CreateObject("Mbpoll.Document")
Set doc2 = CreateObject("Mbpoll.Document")
' 读取10个保持寄存器,每1000ms读取一次
res = doc1.ReadHoldingRegisters(1, 0, 10, 1000)
' 读取10个线圈状态,每1000ms读取一次
res = doc2.ReadCoils(1, 0, 10, 1000)
' 显示文档窗口(此行被注释,如需使用请取消注释)
' doc1.ShowWindow()
' 设置连接为 Modbus TCP/IP
app.Connection = 1
' 设置IP地址为本地主机
app.IPAddress = "127.0.0.1"
' 设置服务器端口为 502
app.ServerPort = 502
' 设置连接超时时间为 1000ms
app.ConnectTimeout = 1000
' 打开连接
res = app.OpenConnection()
End Sub
Private Sub Read_Click()
' 显示请求的结果
Cells(5, 7) = doc1.ReadResult() ' 显示保持寄存器的读取结果
Cells(6, 7) = doc2.ReadResult() ' 显示线圈状态的读取结果
' 循环读取并显示保持寄存器的值
For n = 0 To 9
Cells(5 + n, 2) = doc1.SRegisters(n)
Next n
' 循环读取并显示线圈的状态
For n = 0 To 9
Cells(18 + n, 2) = doc2.Coils(n)
Next n
End SubPython-Beispiel
Dieses Python-Beispiel öffnet ein Fenster und setzt alle möglichen Datenformate ein.
Python Beispiel
import win32com.client as win32
# 定义数据格式
SIGNED = 0
UNSIGNED = 1
HEX = 2
BINARY = 3
FLOAT_LE_BS = 4
FLOAT_BE = 5
DOUBLE_LE_BS = 6
DOUBLE_BE = 7
S32_LE_BS = 8
S32_BE = 9
FLOAT_LE = 10
FLOAT_BE_BS = 11
DOUBLE_LE = 12
DOUBLE_BE_BS = 13
S32_LE = 14
S32_BE_BS = 15
U32_BE = 17
U32_LE_BS = 18
U32_BE_BS = 19
U32_LE = 20
S64_BE = 21
S64_LE_BS = 22
S64_BE_BS = 23
S64_LE = 24
U64_BE = 25
U64_LE_BS = 26
U64_BE_BS = 27
U64_LE = 28
# 字节序定义
BE = 0
LE = 3
BE_BS = 2
LE_BS = 1
# 创建 Modbus Poll 应用实例
App = win32.Dispatch('Mbpoll.Application')
# 设置连接参数
App.Connection = 1 # 使用 Modbus TCP/IP
App.IPAddress = "127.0.0.1" # 本地地址
App.ServerPort = 502 # Modbus 端口
App.OpenConnection() # 打开连接
# 创建 Modbus 显示窗口实例
Win1 = win32.Dispatch("Mbpoll.Document")
# 从从站ID为1的设备读取100个保持寄存器,地址从0 (40001) 开始,每1000ms读取一次
Win1.ReadHoldingRegisters(1, 0, 100, 1000)
# 显示 Modbus 窗口
Win1.ShowWindow()
# 设置显示的行数
Win1.Rows(1)
# 禁用刷新以提高速度
Win1.EnableRefresh = False
# 设置不同的数据格式显示方式
Win1.SetFormat(0, SIGNED)
Win1.SetFormat(1, UNSIGNED)
Win1.SetFormat(2, HEX)
Win1.SetFormat(3, BINARY)
Win1.SetFormat(4, S32_BE)
Win1.SetFormat(6, S32_LE)
Win1.SetFormat(8, S32_BE_BS)
Win1.SetFormat(10, S32_LE_BS)
Win1.SetFormat(12, U32_BE)
Win1.SetFormat(14, U32_LE)
Win1.SetFormat(16, U32_BE_BS)
Win1.SetFormat(18, U32_LE_BS)
Win1.SetFormat(20, S64_BE)
Win1.SetFormat(24, S64_LE)
Win1.SetFormat(28, S64_BE_BS)
Win1.SetFormat(32, S64_LE_BS)
Win1.SetFormat(40, U64_BE)
Win1.SetFormat(44, U64_LE)
Win1.SetFormat(48, U64_BE_BS)
Win1.SetFormat(52, U64_LE_BS)
Win1.SetFormat(60, FLOAT_BE)
Win1.SetFormat(62, FLOAT_LE)
Win1.SetFormat(64, FLOAT_BE_BS)
Win1.SetFormat(66, FLOAT_LE_BS)
Win1.SetFormat(80, DOUBLE_BE)
Win1.SetFormat(84, DOUBLE_LE)
Win1.SetFormat(88, DOUBLE_BE_BS)
Win1.SetFormat(92, DOUBLE_LE_BS)
# 为不同格式的数据设置显示名称
Win1.SetName(0, "SIGNED")
Win1.SetName(1, "UNSIGNED")
Win1.SetName(2, "HEX")
Win1.SetName(3, "BINARY")
Win1.SetName(4, "S32_BE")
Win1.SetName(6, "S32_LE")
Win1.SetName(8, "S32_BE_BS")
Win1.SetName(10, "S32_LE_BS")
Win1.SetName(12, "U32_BE")
Win1.SetName(14, "U32_LE")
Win1.SetName(16, "U32_BE_BS")
Win1.SetName(18, "U32_LE_BS")
Win1.SetName(20, "S64_BE")
Win1.SetName(24, "S64_LE")
Win1.SetName(28, "S64_BE_BS")
Win1.SetName(32, "S64_LE_BS")
Win1.SetName(40, "U64_BE")
Win1.SetName(44, "U64_LE")
Win1.SetName(48, "U64_BE_BS")
Win1.SetName(52, "U64_LE_BS")
Win1.SetName(60, "FLOAT_BE")
Win1.SetName(62, "FLOAT_LE")
Win1.SetName(64, "FLOAT_BE_BS")
Win1.SetName(66, "FLOAT_LE_BS")
Win1.SetName(80, "DOUBLE_BE")
Win1.SetName(84, "DOUBLE_LE")
Win1.SetName(88, "DOUBLE_BE_BS")
Win1.SetName(92, "DOUBLE_LE_BS")
# 重新启用刷新
Win1.EnableRefresh = True
# 调整所有列的大小以适应内容
Win1.ResizeAllColumns()
# 调整窗口大小以适应内容
Win1.ResizeWindow()
# 保存配置到文件,指定文件路径
result = Win1.Save("C:\Users\UserName\Desktop\testfile.mbp")
# 打印保存结果
print(result)
# 打印第二个格式名称,作为示例
print(Win1.GetName(1))
# 等待用户按 Enter 键退出,避免窗口直接关闭
_ = input("Press ENTER to quit:")
Verbindungsfunktionen / Eigenschaften
Die folgenden Eigenschaften und Funktionen tun das gleiche wie Sie im Verbindungsdialog (F3) einrichten.
Verbindung
„Verbindung" Wählen Sie die gewünschte Verbindung aus. Sie können einen seriellen Port oder eine der Ethernet-Verbindungen wählen.
AttributVerbindungenGanzzahl
Wertbereich
0 = Serial port
1 = Modbus TCP / IP
2 = Modbus UDP / IP
3 = Modbus ASCII / RTU über TCP / IP
4 = Modbus ASCII / RTU über UDP / IP
Beispielsweise
Connection = 0
Baudrate
Nur für Verbindungen = 0
EigenschaftBaudrateund lang
300
600
1200
2400
4800
9600 (Standard)
14400
19200
38400
56000
57600
115200
128000
153600
230400
256000
460800
921600
Beispiel
BaudRate = 9600
Datenbit
nur für die Verbindung = 0
EigenschaftDataBitsals Ganzzahl
Wertebereich
7
8 (Standard)
Beispiel:
DataBits = 8
Check-Bit
nur für Attribute mit Verbindungen = 0
als GanzzahlParität验
Wertebereich
0 = Keine
1 = Gerade Zahl
2 = Gerade Zahl (Standard)
Beispiel:
Parity = 2
Stop-Bit
Nur für die Verbindung = 0
EigenschaftStopBitsals Integer-Wertbereich
1 (Standard)
2
Beispiel:
StopBits = 1
Serieller Port
Nur für Verbindungen = 0
EigenschaftSerialPortals Integer Wertbereich
1...255
Standardwert = 1
Beispiel:
SerialPort = 1
Modus
Nur für Verbindungen = 0
EigenschaftModusist Ganzzahl
Wertebereich
0 = RTU-Modus
1 = ASCII-Modus
Beispiel:
Mode = 1
Echo entfernen
Nur für Verbindungen = 0
Wenn Ihr Gerät oder der RS232 / RS485 - Wandler das soeben gesendete Zeichen wiederholt.
EigenschaftRemoveEchoals Integer
Wertebereich
0 (Standard)
1 (Echos löschen)
Beispiel:
RemoveEcho = 1
ResponseTimeout
ResponseTimeout Gibt die Dauer (in Millisekunden) an, wie lange die Modbus Poll auf eine Antwort des Slaves warten sollte, bevor sie aufgegeben wird.
Eigenschaften ResponseTimeoutals Ganzzahlbereich
50...100000
Standardwert = 1000
Beispiel:
ResponseTimeout = 1000
DelayBetweenPolls
EigenschaftDelayBetweenPolls als ganzes Wertvolumen
0...1000
Standardwert = 20
Beispiel:
DelayBetweenPolls = 20
Serverport
nur für Connection = 1... 4
EigenschaftServerPortas Long Wertbereich
0...65535
Standardwert = 502
Beispiel:
ServerPort = 502
15.3.12. ConnectTimeout
ConnectTimeout Gibt an, wie lange die Modbus-Poll auf eine erfolgreiche TCP / IP-Verbindung wartet.
nur für Connection = 1... 4
EigenschaftConnectTimeoutals Integer
Wertebereich
100... 30000 ms
Standardwert = 1000ms
Beispiel:
ConnectTimeout = 1000
IP-Version
nur für Connection = 1 4
EigenschaftIPVersionals Integer
Wertebereich
4 = IP-Version 4 (Standard)
6 = IP-Version 6
例
IPVersion = 4
Öffnen von Verbindungen
Öffnet die Verbindung, die mit der Verbindungseigenschaft ausgewählt wurde.
FunktionOpenConnection() ist Ganzzahl
Argument
Diese Funktion hat keine Argumente.
Rückgabewert
Für Fehler 3 - 5: Bitte überprüfen Sie, ob Sie den neuesten seriellen Port-Treiber haben.
| Fehler | Beschreibung |
|---|---|
| 0 | Erfolg |
| 1 | Serieller Port nicht verfügbar |
| 3 | Serieller Port. Die aktuellen Einstellungen können vom Port-Treiber nicht abgerufen werden. |
| 4 | Serieller Port. Der serielle Port-Treiber akzeptiert keine Port Einstellungen. |
| 5 | Serieller Port. Der serielle Port-Treiber akzeptiert keine Timeout-Einstellungen. |
| 12 | Die TCP / UDP Verbindung ist fehlgeschlagen. WSA gestartet |
| 13 | Die TCP / UDP-Verbindung ist fehlgeschlagen Verbindungsfehler |
| 14 | TCP / UDP-Verbindung ist fehlgeschlagen. Timeout |
| 15 | Die TCP / UDP Verbindung ist fehlgeschlagen. IOCTL |
| 17 | Die TCP / UDP-Verbindung ist fehlgeschlagen. Socket-Fehler |
| 21 | Die TCP / UDP-Verbindung ist fehlgeschlagen. Adressinformationen |
| 255 | Verbindungen geöffnet |
Excel-Beispiel Öffnen einer Modbus TCP / IP-Verbindung
Public app As Object
Dim res As Integer
' 创建一个指向 Modbus Poll 的对象
Set app = CreateObject("Mbpoll.Application")
' 选择 Modbus TCP/IP 协议
app.Connection = 1
' 设置 IP 协议版本为 IPv4
app.IPVersion = 4
' 设置目标设备的 IP 地址
app.IPAddress = "192.168.1.27"
' 设置服务器端口,默认为 502
app.ServerPort = 502
' 设置连接超时时间为 1000 毫秒
app.ConnectTimeout = 1000
' 设置响应超时时间为 1000 毫秒
app.ResponseTimeout = 1000
' 尝试打开连接,并将结果存储在变量 res 中
res = app.OpenConnection()Python-Beispiel: Einrichten einer seriellen Verbindung
import win32com.client as win32
# 创建 Modbus Poll 应用程序对象
App = win32.Dispatch('Mbpoll.Application')
# 设置为串行连接
App.Connection = 0
# 选择 COM 端口 3
App.SerialPort = 3
# 设置波特率为 9600
App.BaudRate = 9600
# 设置奇偶校验为无
App.Parity = 0
# 设置模式为 RTU
App.Mode = 0
# 设置响应超时时间为 1000ms
App.ResponseTimeout = 1000
# 设置两次请求之间的最小间隔时间为 20ms
App.DelayBetweenPolls = 20
# 打开连接
App.OpenConnection
# 创建一个 Modbus 显示窗口对象 Win1
Win1 = win32.Dispatch("Mbpoll.Document")
# 从从站ID为1的设备读取10个保持寄存器,地址从0 (40001) 开始,每1000ms读取一次
Win1.ReadHoldingRegisters(1, 0, 10, 1000)
# 显示 Modbus 窗口
Win1.ShowWindow()
# 设置显示的行数为10
Win1.Rows(0)
# 禁用刷新以提高速度
Win1.EnableRefresh = False
# 为寄存器设置名称
Win1.SetName(0, "Register 0")
# 重新启用刷新
Win1.EnableRefresh = True
# 调整所有列的大小以适应内容
Win1.ResizeAllColumns ()
# 调整窗口大小以适应内容
Win1.ResizeWindow()
# 等待用户按 Enter 键退出
_ = input("Press ENTER to quit:") Eng verbunden
FunktionCloseConnection() ist Ganzzahl
Argument
Diese Funktion hat keine Argumente.
Gibt den Wert
zurück, wenn er erfolgreich ist, ist Null. Wenn es fehlschlägt, ist der Wert nicht null.
ShowCommunicationTraffic
Zeigt das Kommunikations-Fenster an.
FunktionShowCommunicationTraffic()
Parameter
Diese Funktion hat keine Argumente.
Rückgabewert
Kein
CloseCommunicationTraffic
Wenn angezeigt, schließt das Kommunikationsverkehrsfenster.
Funktion CloseCommunicationTraffic()
Argument
Diese Funktion hat keine Argumente.
Rückgabewert
Keine
Lesefunktion
Die folgenden Funktionen verhalten sich wie Sie im Dialogfeld Lesen / Schreiben Definitionen (F8) festlegen. Die Lesfunktion ist mit dem Modbus Poll-Dokument verbunden. (Fenster mit Daten)
Beispiel:
' 首先需要创建一个 Modbus Poll 文档对象
Public doc As Object
' 创建 Modbus Poll 文档对象实例
Set doc = CreateObject("Mbpoll.Document")
' 从从站 ID 为 1 的设备读取 100 个线圈状态,地址从 0 开始,每 1000 毫秒读取一次
res = doc.ReadCoils(1, 0, 100, 1000) ' 读取 100 个线圈每 1000msHinweis: Sie müssen Read erstellen, bevor Sie die Eigenschaft verwenden können, um Daten zu erhalten.
Lesen Sie die Spiele ReadCoils
Modbus Funktionscode 01
FunktionReadCoils(SlaveID ist eine ganze Zahl, Adresse lang, Anzahl ganze Zahl, ScanRate lang) ist eine ganze Zahl
Parameter
SlaveID:von Adressen 1 bis 255
Adressen:Datenadresse (basierend auf 0)
Quantity:Anzahl der Daten. 1 bis 2000
Scan-Rate:0 bis 3600000msReturn value
True if success. False if not success
Lesen diskreter Eingabe ReadDiscreteInputs
Modbus-Funktioncode 02
Funktion Lesen diskreter Eingabe (von StationID As Integer, Adresse As Lang Integer, Quantität As Integer, Scan-Rate As Lang Integer) As Integer
Parameter
- Abonnenten-Station - ID: Abonnenten-Station - Adressen 1 bis 255
- Adresse: Datenadresse (Basis 0)
- Anzahl: Datenmenge. 1 bis 2000
- Scanrate: 0 bis 3600000ms
Rückgabewert
- Gibt erfolgreich True zurück. Fehlschlag gibt FALSE zurück.
Lese-Halt - Register ReadHoldingRegisters
Modbus Funktionscode 03
Funktion Lese-Halt - Register (Vom Station-ID als Ganzes, Adresse als Langes Ganzes, Quantität als Ganzes, Scan-Rate als Langes Ganzes) als Ganzes
Parameter
- Von Stations-ID: Von Stations-Adressen 1 bis 255
- Adresse: Datenadresse (Basis 0)
- Quantität: Datenmenge. 1 bis 125
- Scanrate: 0 bis 3600000ms
Rückgabewert
- Gibt erfolgreich True zurück. Fehlschlag gibt FALSE zurück.
Eingangsregister lesen ReadInputRegisters
Modbus-Funktionscode 04
Funktion Eingangsregister lesen (Standort-ID als Ganzes, Adresse als Langes Ganzes, Quantität als Ganzes, Scanrate als Langes Ganzes) As Ganzes
Parameter
- Standort-ID: Standort-Adressen 1 bis 255
- Adresse: Datenadresse (Basis 0)
- Quantität: Datenmenge. 1 bis 125
- Scan-Rate: 0 bis 3600000ms
Rückgabewert
- Erfolgreich True zurückgegeben. Fehlschlag gibt FALSE zurück.
Automatisierte Schreibfunktion
Die Schreibfunktion schreibt Werte, die in einem Array gespeichert sind, das mit Attributen gefüllt ist. Die folgenden Schreibfunktionen erstellen kein Datenfenster. Um ein Datenfenster zu erstellen, verwenden Sie die Win-Funktion, z. B. WriteMultipleRegistersWin
Schreiben Sie eine einzelne Spule WriteSingleCoil
Modbus-Funktionscode 05.
Schreibt die erste Spul des Schreibarrays.
Funktion Schreiben einer einzelnen Spule (von StationID als Ganzes, Adresse als Langes Ganzes) als Ganzes
Parameter
- Von-Stations - ID: Von-Stations - Adressen 0 bis 255
- Adresse: Datenadresse (Kardinal 0)
Gibt den Wert
- True zurück, wenn das Schreibarray bereit ist und die Daten gesendet wurden. Wenn das Array leer ist oder der Parameter falsch ist, gibt es Falsche zurück.
- Die Steuerungsanwendung ist verantwortlich für die Validierung von Schreibvorgängen, indem sie den geschriebenen Wert zurücklesen.
Schreibt ein einzelnes Register WriteSingleRegister
Modbus-Funktionscode 06.
Schreiben Sie das erste Register im Schreibarray.
Funktion Schreiben eines einzelnen Registers (von der StationID als Ganzes, der Adresse als langes Ganzes) als Ganzes
Parameter
- Standort-ID: Standort-Adressen 0 bis 255
- Adresse: Datenadresse (Basis 0)
Gibt den Wert
- zurück, wenn das Schreibarray bereit ist und die Daten gesendet wurden. Wenn das Array leer ist oder der Parameter falsch ist, gibt es Falsche zurück.
- Die Steuerungsanwendung ist für die Validierung von Schreibvorgängen verantwortlich, indem sie den geschriebenen Wert zurücklesen.
Schreiben Sie mehrere Spulen WriteMultipleCoils
Modbus-Funktion - Code15.
Schreibe die in einem Schreibarray gespeicherten Spulen.
Funktion Schreiben mehrerer Spulen (Stations-ID als Ganzes, Adresse als Langes Ganzes, Quantität als Ganzes) As Ganzes
Parameter
- Stations-ID: Stations-Adressen 0 bis 255
- Adresse: Datenadresse (Basis 0)
- Quantität: Datenmenge. 1 Bis 1968
Gibt den Wert
- True zurück, wenn das Schreibarray bereit ist und die Daten gesendet wurden. Wenn das Array leer ist oder der Parameter falsch ist, gibt es Falsche zurück.
- Die Steuerungsanwendung ist verantwortlich für die Validierung von Schreibvorgängen, indem sie den geschriebenen Wert zurücklesen.
Schreiben mehrerer Register WriteMultipleRegisters
Modbus-Funktionscode 16.
Schreiben in
Schreiben in das Register, das in einem Array gespeichert ist.
Funktion Schreibe mehrere Register (von Station-ID als Ganzes, Adresse als Langes Ganzes, Quantität als Ganzes) As Ganzes
Parameter
- Abonnenten-Station - ID: Abonnenten-Station - Adressen 0 bis 255
- Adresse: Datenadresse (Kardinal 0)
- Anzahl: Datenmenge. 1 bis 123
Gibt den Wert
- True zurück, wenn das Schreibarray bereit ist und die Daten gesendet wurden. Wenn das Array leer ist oder der Parameter falsch ist, gibt es Falsche zurück.
- Die Steuerungsanwendung ist verantwortlich für die Validierung von Schreibvorgängen, indem sie den geschriebenen Wert zurücklesen.
Python Beispiel
Ein Python-Beispiel zeigt, wie man ein Fenster erstellt, das 10 Register von der Adresse 0 (40001) liest und dann 5 Register schreibt.
import sys
import time
import win32com.client as win32
# 创建Modbus Poll应用程序实例
App = win32.Dispatch('Mbpoll.Application')
# 设置连接类型为TCP/IP
App.Connection = 1
App.IPAddress = "127.0.0.1" # 设置IP地址
App.ResponseTimeout = 1000 # 设置响应超时时间为1000毫秒
App.DelayBetweenPolls = 20 # 设置请求间最小间隔为20毫秒
App.ConnectTimeout = 500 # 设置连接超时时间为500毫秒
App.ServerPort = 502 # 设置服务器端口为502
result = App.OpenConnection # 尝试打开连接
if result != 0:
print("Connection failed. Error: ", result) # 连接失败时输出错误信息
sys.exit() # 退出程序
# 创建一个名为Win1的Modbus显示窗口
Win1 = win32.Dispatch("Mbpoll.Document")
# 从从站ID 1的地址0 (40001)开始,每1000ms读取10个保持寄存器
Win1.ReadHoldingRegisters(1, 0, 10, 1000)
# 显示Modbus窗口
Win1.ShowWindow()
# 显示10行
Win1.Rows(0)
# 调整窗口大小以适应网格
Win1.ResizeWindow()
time.sleep(1.0) # 等待读取完成
if Win1.ReadResult == 0: # 检查读取结果
print("Modbus register 0 (40001) = ", Win1.SRegisters(0))
else:
print("Read failed error: = ", Win1.ReadResult)
print ("Tx count = %d, Rx count = %d" % (Win1.GetTxCount, Win1.GetRxCount))
# 在Modbus Poll的内部数组中准备要写入的数据
Win1.SRegisters(0, 1) # 注意,这里的1不是Modbus地址,而是数组的索引
Win1.SRegisters(1, 10)
Win1.SRegisters(2, 100)
Win1.SRegisters(3, 1000)
Win1.SRegisters(4, 10000)
# 写入寄存器。这个函数不会在Modbus Poll中创建窗口
# 使用函数 <<WriteMultipleRegistersWin>> 来创建数据窗口
Win1.WriteMultipleRegisters(1, 0, 5)
_ = input("Wait for write Press ENTER:") # 等待写入,按回车继续
if Win1.WriteResult == 0: # 检查写入结果
print("Modbus write success")
else:
print("Write failed error: = ", Win1.WriteResult)
_ = input("Press ENTER to quit:") # 按回车退出15.6. Verschiedene Funktionen
Verschiedene Funktionen sind mit Modbus Poll-Dokumenten verbunden. (Daten-Fenster)
15.6.1. ShowWindow
Standardmäßig ist das Modbus-Dokumentenfenster ausgeblendet. Die ShowWindow-Funktion macht die Modbus Poll sichtbar und zeigt Dokumente an, die Dateninhalte enthalten.
Funktion ShowWindow() Parameter
Diese Funktion hat keine Parameter. Rückgabewert
Nein.
15.6.2. GetTx Count
Erhält die Anzahl der Anfragen.
FunktionGetTxCount() Solange Argument
Diese Funktion hat keine Argumente. Rückgabewert
Anzahl der Anfragen.
Erhalten Sie die Empfangszählung
Anzahl der Antworten zu erhalten.
Funktion Empfangszählung () As langes Ganzesystem
Argument
Diese Funktion hat keine Argumente.
Gibt den Wert
zurück, der die Anzahl der Antworten enthält.
Name abrufen
Abrufen des Namens des Wertes.
Funktion Abholen des Namens (Index As Ganzzahl) As Zeichenfolge
Parameter
Index: Index0 entspricht der ersten Modbus-Adresse.
gibt den Namen des Wertes
Name.
Einrichtung des Namens
Der Name des Wertes ändert. Funktionsname (Index As Ganztyp, Name As Zeichenfolge)
Parameter
Index: Der Index0 entspricht der ersten Modbus-Adresse.
Name: Der Name der Wertzelle.
Gibt Wert zurück
无
Formatieren aller
Formatieren aller Wertzellen mit dem ausgewählten Format.
Funktion Formatieren Alles (Format As Ganzes)
Parameter
Format: Format für die Wertzelle.
Rückgabewert
无
Format abrufen
Abrufen des Darstellungsformats des Modbus-Wertes.
Funktion Abrufformat (Index As Integer) As Integer
Parameter
Index: Index0 entspricht der ersten Modbus-Adresse.
Gibt den Wert zurück
| ID | Format | Deutsch |
|---|---|---|
| 0 | Signed | Symbolisiert |
| 1 | Unsigned | Unsigniert |
| 2 | Hex | Hexadezimal |
| 3 | Binary | Binär |
| 4 | Float little-endian byte swap | Float little-endian byte swap |
| 5 | Float big-endian | Schwimmbunkte am Ende |
| 6 | Double little-endian byte swap | Double-precise small-end byte swap |
| 7 | Double big-endian | Double-precise big-end |
| 8 | 32 - bit Signed little-endian byte swap | 32 - bit Signed small-endian byte swap |
| 9 | 32 - bit Signed big-endian | 32 Punkte haben ein großes Symbol. |
| 10 | Float little-endian | Float big-endian byte swap |
| 11 | Float Big-endian Byte Swap (Float Big-endian Byte Swap) | Float big-endian byte swap |
| 12 | Double little-endian | Double-precision small-end |
| 13 | Double big-endian byte swap | Doppelpräzision High-End Byte Austausch |
| 14 | 32-bit Signed Little-endian | 32 Punkte mit kleinen Symbolen. |
| 15 | 32-Bit Signed Big-endian Byte Swap | 32 - Bit mit Symbolen für großen Byte-Austausch |
| 17 | 32 - bit Unsigned big-endian | 32 - bit Unsigned little-endian |
| 18 | 32 - bit Unsigned little-endian Endian Byte Swap-Spiel | 32 - Bit-Unsignifizierter Kleintext-Byte - Austausch |
| 19 | 32-bit Unsigniert Big-endian Byte Swap | 32 - Bit-Unsignifizierter Big-End - Byte-Austausch |
| 20 | 32-bit Unsignierte Little-endian | 32 - bit Unsigned small-endian |
| 21 | 64 - bit Signed big-endian | 64 - bit Signed big-endian |
| 22 | 64 - bit Signed little -Endian Byte Swap-Spiel | 64 - Bit-Symbol mit kleinem Byte-Austausch |
| 23 | 64-Bit Signed Big-endian Byte Swap | 64 - Bit-Symbol mit großem Austausch |
| 24 | 64-bit Signed Little-endian | 64 - Bit mit kleinen Symbolen |
| 25 | 64 - bit Unsigned big-endian | 64 - bit Unsigned little-endian |
| 26 | Endian Byte Swap-Spiel | 64 - Bit Unsigned Little-End Byte Swap |
| 27 | 64 - Bit Unsigned Big-endian Byte Swap | 64 - Bit Unsigned Big-End Byte Swap |
| 28 | 64 - Bit Unsigned Little-endian | 64 - Bit Unsigned Little-End |
Hinweis:
Diese Einstellung dient nur zur Darstellung. Wenn Sie die Get / Set-Wert - Funktion verwenden, müssen Sie dennoch byteOrder verwenden, um die richtige Byte-Sequenz zu erhalten.
15.6.8. SetFormat
Ändern Sie das Anzeigeformat der Modbus-Werte. Bitte beachten Sie die oben angegebenen Formate.
FunktionSetFormat(Index ist eine ganze Zahl, Format ist eine ganze Zahl) Parameter
Index:Index 0 entspricht der ersten Modbus-Adresse.
Format:Format für die Wertzelle. Rückgabewert
Nein
15.6.9. ResizeWindow
Ändern Sie die Größe des geöffneten Fensters an das Raster.
Funktion ResizeWindow() Parameter
Diese Funktion hat keine Parameter. Rückgabewert
Kein
15.6.10. ResizeAllColumns
Ändert die Größe aller Spalten so, dass sie den Wert in der Zelle passen.
Funktion ResizeAllColumns() Parameter
Diese Funktion hat keine Parameter. Rückgabewert
Keine
15.6.11. Zeilen
Gibt die Anzahl der Zeilen in einem Raster an.
Funktion行(NumberRows) Parameter
Zahlenzeilen:Anzahl der Zeilen im Netz.
| Nr. | Beschreibung |
|---|---|
| 0 | 10 Zeilen (Standard) |
| 1 | 20 Zeilen |
| 2 | 50 Zeilen |
| 3 | 100 Zeilen |
| 4 | Passt an Quantität |
Rückgabewert
Kein
Leseergebnis
Verwenden Sie diese Eigenschaft, um zu überprüfen, ob die Kommunikation mit dem Lesevorgang erfolgreich hergestellt wurde.
Eigenschaft Lesergebnis Als Ganzzahl
Parameter
Diese Funktion hat keine Parameter.
Rückgabewert
| Error | Description |
|---|---|
| 0 | ErfolgSUCCESS |
| 1 | Timeout-FehlerTIMEOUT ERROR |
| 2 | CRC-FehlerCRC ERROR |
| 3 | Antwortfehler (die Antwort ist nicht die erwartete Slave-ID, Funktionscode oder Adresse)RESPONSE ERROR (The response was not the expected slave id, function or address) |
| 4 | SchreibfehlerWRITE ERROR |
| 5 | LesefehlerREAD ERROR |
| 6 | Port nicht geöffnetPORT NOT OPEN ERROR |
| 10 | Daten nicht initialisiertDATA UNINITIALIZED |
| 11 | Unzureichende Anzahl von Bytes empfangenINSUFFICIENT BYTES RECEIVED |
| 16 | Fehler bei der Anzahl von BytesBYTE COUNT ERROR |
| 19 | Fehler bei der Transaktions-IDTRANSACTION ID ERROR |
| 81h | Unzulässige FunktionILLEGAL FUNCTION |
| 82h | Unzulässige DatenadresseILLEGAL DATA ADDRESS |
| 83h | Ungültiger DatenwertILLEGAL DATA VALUE |
| 84h | Servergerät fehlschlägtSERVER DEVICE FAILURE |
| 85h | BestätigungACKNOWLEDGE |
| 86h | Servergerät beschäftigtSERVER DEVICE BUSY |
| 87h | NAK-NEGATIVE ACKNOWLEDGMENTNAK-NEGATIVE ACKNOWLEDGMENT |
| 8Ah | Der Gateway-Pfad ist nicht verfügbarGATEWAY PATH UNAVAILABLE |
| 8Bh | Das Gateway-Zielgerät reagiert nichtGATEWAY TARGET DEVICE FAILED TO RESPOND |
Schreibergebnis
Verwenden Sie diese Funktion, um zu überprüfen, ob ein Schreibvorgang erfolgreich ist.
Der Wert ist Daten nicht initialisiert, bevor das Ergebnis vom Slave abgerufen wird. Lesen Sie Ergebnisse für eine Liste der möglichen Werte.
Attribut
Schreibergebnis As Ganzer Typ
Gibt den Wert
Das Ergebnis wird als Ganzes zurückgegeben.
Bewahrung
Speichern des aktuellen Fensters. Funktion speichern (Pfadname als Zeichenfolge) As Boolean
Parameter
Pfadname: Der vollqualifizierte Pfad der Datei sollte gespeichert werden.
Rückgabewert
Boolean Boolean
Beispiel
# 首先需要一个Modbus Poll文档。
Public doc As Object
Set doc = CreateObject("Mbpoll.Document")
res = doc.ReadCoils(1, 0, 100, 1000) # 每1000毫秒读取100个线圈
res = doc.Save("C:\Users\UserName\Desktop\testfile.mbp") # 将文档保存到桌面的testfile.mbp文件Automatische Dateneigenschaften
Die folgenden Eigenschaften werden verwendet, um Werte in einer internen Schreib - / Lesegruppe in Modbus Poll zu setzen oder abzurufen. Der verwendete Index ist nicht die Modbus-Adresse. Unabhängig von der verwendeten Adresse wird der Index immer ab 0 gezählt. Die Dateneigenschaften sind mit dem Modbus Poll-Dokument zugeordnet. (Datenfenster)
Jede Dateneigenschaft hat zwei Versionen:
Eine ohne Suffix, wie z. B. SRegisters, wird verwendet, um Werte aus internen Schreib - / Lesegruppen zu setzen oder abzurufen.
Einer mit einem Win-Suffix, wie z. B. SRegistersWin, wird verwendet, um Werte direkt aus dem Datenfenster zu setzen oder abzurufen. Dies wird verwendet, wenn Sie ein Datenfenster für Schreibvorgänge verwenden (z.B. WriteMultipleRegistersWin).
Beispiel 1:
# 假设首先创建了doc。参见Excel示例。 # 在用于稍后写操作的数据数组中,向索引0写入1 doc.SRegisters(0) = 1 doc.SRegisters(1) = 10 doc.SRegisters(2) = 1234 # 将存储在Modbus Poll内部数组的3个寄存器 # 写入Modbus地址100(40101) # 不创建窗口 res = doc.WriteMultipleRegisters(1, 100, 3) # 上述示例不创建数据窗口,只是执行单次Modbus写操作。
Beispiel 2, Fließkomma-Werte:
Schreiben Sie drei Gleitkomma-Werte.
# 假设首先创建了doc。参见Excel示例。 doc.Floats(0) = 1.3 doc.Floats(2) = 10.5 doc.Floats(4) = 1234.12 # 将6个寄存器写入Modbus Poll res = doc.WriteMultipleRegisters(1, 0, 6) # 写入6个寄存器,因为浮点数值是32位宽。
Beispiel 3:
Erstellt ein Fenster, das alle 1000ms drei Register schreibt.
# 假设首先创建了doc。参见Excel示例。 # 创建一个窗口,该窗口每1000ms写入内容 res = doc.WriteMultipleRegistersWin(1, 100, 3, 1000) # 向数据窗口的第一个单元格写入1 doc.SRegistersWin(0) = 1 doc.SRegistersWin(1) = 10 doc.SRegistersWin(2) = 1234 # 现在每1000ms就将3个寄存器写入从站id 1地址100
In diesem Beispiel Code,doceine Instanz des Modbus Poll-Dokumentes, das verschiedene Modbus-Operationen wie das Schreiben von Registers ausführt. Das Beispiel zeigt, wie Sie ein internes Array direkt mit einer Eigenschaft ohneWin- Suffix manipulieren können und wie Sie einen Wert mit einem Datenfenster mit einer Eigenschaft mit demWin- Suffix manipulieren können.
Spule, CoilsWin
EigenschaftCoils(Index As Integer) As IntegerDescription
Sets a coil in the write array structure or return a coil from the read array.Syntax
Coils(Index) [= neu]
Kurze Integerregister, SRegistersWin
PropertySRegisters(Index As Integer) As IntegerDescription
Sets a register in the write array structure or return a register from the read array.Syntax
SRegisters(Index) [= neu]
Langes Integer-Register, URegistersWin
AttributURegisters(Index As Integer) As Long Beschreibung
Setzt ein Register in einer Schreibarray-Struktur oder gibt ein Register von einem Lesarray zurück. Syntax
URegisters(Index) [= neu]
32 - Bit-Integrat, Ints_32Win
AttributInts_32(Index As Integer) As Double Beschreibung
Legen Sie eine 32 - Bit-Ganzzahl in der Schreibarray-Struktur fest oder geben Sie eine Ganzzahl aus einem Lesetarray zurück. Syntax
Ints_32(Index) [= neu]
32 - Bit unsigniertes Ganzesystem, UInts_32Win
AttributUInts_32(index as integer) as double Beschreibung
Legen Sie eine 32 - Bit unsignierte Ganzzahl in der Schreibarray-Struktur fest oder geben Sie eine unsignierte Ganzzahl aus dem Lesetarray zurück. Syntax
UInts_32(Index) [= neuer Wert]
64 - Bit Integer, Ints_64Win
EigenschaftInts_64(Index As Integer) As Double Beschreibung
Setzt eine 64 - Bit-Ganzzahl in der Schreib-Array - Struktur oder gibt eine Ganzzahl aus einem Lesetarray zurück. Syntax
Ints_64(Index) [= neuer Wert]
64 - Bit unsigniertes Ganzesystem, UInts_64Win
AttributUInts_64(Index As Integer) As Double Beschreibung
Legen Sie eine 64 - Bit unsignierte Ganzzahl in der Schreibarray-Struktur fest oder geben Sie eine unsignierte Ganzzahl aus dem Lesearray zurück. Syntax
UInts_64(Index) [= neuer Wert]
Fließkommazahl, FloatsWin
Attributfloats(index als integer) als single Beschreibung
Legen Sie eine Fließkommazahl in einer Schreibarray-Struktur oder geben Sie eine Fließkommazahl aus einem Lesarray zurück. Syntax
FließkommaAnzahl (Index) [= neuer Wert]
Doppelgenauigkeit Fließkommazahl, DoubleWin
Attributdoubles(index as integer) als double Beschreibung
Legen Sie einen Doppelgenauigkeit Wert in der Schreibarray-Struktur fest oder geben Sie einen Doppelgenauigkeit Wert aus einem Lesearray zurück. Syntax
Doppel(Index) [= neu]
Byte-Sequenz
Eigenschaften ByteOrderAs Integer Beschreibung
legt die von den Attributen Ints_32, UInts_32, Ints_64, UInts_64, Floats und Doubles verwendeten Byte-Reihenfolge fest.
Win-Version nicht verwendenByteOrder。
| Nummer | Byte-Sequenz |
|---|---|
| 0 | Big-endian (Standard) Big-endian (Default) |
| 1 | Small-endian Byte-Swap Little-endian byte swap |
| 2 | Big-endian byte swap |
| 3 | Small-endian |
Ints_32 Beispiel:
Byte-Sequenz: Big-endian
Dezimalzahl 123456789 oder Hexadezimalzahl 07 5B CD15 Sortierung nach Linie
in einer Modbus-Nachricht: 5B CD15 Syntax
ByteOrder [= Neuer Wert]
15.8. Schreiben von Funktionen (Datenfenster erstellen)
Die folgenden Funktionen verhalten sich wie Sie im Dialogfeld Lesen / Schreiben Definitionen (F8) festgelegt haben.
Diese Funktionen erstellen ein Datenfenster und schreiben den Dateninhalt in dem Datenfenster basierend auf der Scanrate.
15.8.1. WriteSingleCoilwin
Modbus-Funktionscode 05.
FunktionWriteSingleCoilWin(SlaveID As Integer, Adresse As Long, ScanRate As Long) Als Integer Argument
SlaveID:von Adressen 1 bis 255
Adresse:Datenadresse (Kardinalität 0)
Scanrate:0 bis 3600000ms Rückgabewert
True, wenn erfolgreich. Wenn es nicht erfolgreich ist, ist es falsch
15.8.2. WriteSingleRegisterWin
Modbus Funktionscode 06.
Funktion WriteSingleRegisterWin(SlaveID As Integer, Adresse As Long, ScanRate As Long) Als Integer Argument
SlaveID:von Adressen 1 bis 255
Adresse:Datenadresse (Kardina 0)
Scanrate:0 bis 3600000msReturn value
True if success. False if not success
Python Beispiel, wie man ein Fenster öffnet und alle 1000 ms ein einzelnes Register schreibt
15.8.3. MultipleCoilsWin
Modbus-Funktioncode 15.
FunktionWriteMultipleCoilsWin(SlaveID ist ganzzahl, Adresse ist lang, Anzahl ist ganzzahl, ScanRate ist lang) ist ganzzahl Argument
SlaveID:von Adressen 1 bis 255
Adresse:Datenadresse (basiert auf 0)
Quantity:Datenmenge. 1 bis 1968
Scanrate:0 bis 3600000ms Rückgabewert
True, wenn erfolgreich. Wenn es nicht erfolgreich ist, ist es FALSE
15.8.4. WriteMultipleRegistersWin
Modbus-Funktionscode 16.
Funktion WriteMultipleRegistersWin(SlaveID ist eine ganze Zahl, Adresse ist lang, Anzahl ist eine ganze Zahl, ScanRate ist lang) ist ein ganzer Parameter
SlaveID:von Adressen 1 bis 255
Adresse:Datenadresse (Basis 0)
Anzahl:Datenmenge. 1 bis 123
Scan-Rate:0 bis 3600000ms Rückgabewert
True, wenn Erfolg. Wenn nicht erfolgreich, ist falsch
16. Ausnahme - und Fehlermeldungen
Modbus-Ausnahme - und Fehlermeldungen werden in der Zeile钕Okay.

16.1. Modbus Ausnahmecode
Eine Modbus-Ausnahme ist ein Fehler, der vom Gerät zurückgegeben wird.
| Gesetzbuch | Name | Bedeutung |
|---|---|---|
| 01 | Illegale Funktion | Der Funktionscode, der in der Abfrage empfangen wurde, ist nicht vom Server (oder von der Slave Station) erlaubt. Dies kann daran liegen, dass der Funktionscode nur für neuere Geräte verfügbar ist und nicht in der ausgewählten Einheit implementiert ist. Es kann auch anzeigen, dass der Server (oder der Slave-Server) sich in einem Fehlerzustand befindet, um solche Anfragen zu verarbeiten, zum Beispiel weil er nicht konfiguriert ist und aufgefordert wird, einen Registerwert zurückzugeben. |
| 02 | Ungültige Datenadresse | Die in der Abfrage empfangene Datenadresse ist nicht die zugelassenen Adressen des Servers. Genauer gesagt ist die Kombination von Referenznummern und Übertragungslänge ungültig. Bei einem Controller mit 100 Registern adressiert die PDU das erste Register mit 0 und das letzte Register mit 99. Wenn die gesendete Anforderung mit der Start-Register - Adresse 96 beginnt und die Anzahl der Register 4 beträgt, wird diese Anforderung erfolgreich in den Registern 96, 97, 98, 99 ausgeführt (zumindest in Bezug auf die Adresse). Wenn die Anforderung mit der Start-Register - Adresse 96 und der Anzahl der Register 5 gesendet wird, schlägt die Anforderung mit Ausnahmecode 0x02 "Ungültige Datenadresse" fehl, da sie versucht, auf den Registeren 96, 97, 98, 99 und 100 auszuführen und kein Register mit der Adresse 100 hat. |
| 03 | Unzulässiger Datenwert | Der Wert im Abfrage-Datenfeld ist kein zulässiger Wert für den Server (oder Slave). Dies bedeutet, dass der Rest der komplexen Anforderung falsch strukturiert ist, z. B. eine falsche implizite Länge. Insbesondere bedeutet dies nicht, dass ein in einem Register gespeichertes Datenelement mit einem Wert überschritten wird, der von der Anwendung erwartet wird, da das MODBUS-Protokoll die Bedeutung eines bestimmten Wertes für ein bestimmtes Register kennt. |
| 04 | Server-Gerätenausfall | Bei dem Versuch des Servers (oder des Sekundärgeräts) ist ein nicht wiederherstellbarer Fehler aufgetreten, die angeforderte Aktion auszuführen. |
| 05 | Anerkennung | wird speziell in Verbindung mit Programmierbefehlen verwendet. Der Server (oder ein Slave-Server) hat die Anforderung akzeptiert und verarbeitet sie, es dauert jedoch eine lange Zeit. Diese Antwort wird zurückgegeben, um Timeout-Fehler auf dem Client (oder Master) zu verhindern. Der Client (oder der Master-Client) kann dann eine "Polling-Process - Abschluss" - Meldung senden, um festzustellen, ob die Verarbeitung abgeschlossen ist. |
| 06 | Servergerät beschäftigt | Speziell in Verbindung mit Programmierbefehlen verwendet. Der Server (oder ein Slave-Server) verarbeitet einen langen Programmbefehl. Der Client (oder der Master-Server) sollte die Nachricht später erneut übertragen, wenn der Server (oder der Slave-Station) frei ist. |
| 0 Ampere | Gateway-Pfad nicht verfügbar | In Kombination mit einem Gateway wird angegeben, dass das Gateway keinen internen Kommunikationspfad vom Eingangs - zum Ausgangsschnitt für die Verarbeitung von Anfragen zuweisen kann. In der Regel gibt es eine fehlerhafte oder überlastete Gateway-Konfiguration an. |
| 0b | Das Zielgerät des Gateways kann nicht auf | In Kombination mit einem Gateway bedeutet dies, dass keine Antwort vom Zielgerät erhalten wurde. Normalerweise bedeutet das Gerät, dass es nicht im Netz ist. |
16.2. Modbus Poll Fehlermeldung
| Fehlermeldung | Bedeutung |
|---|---|
| Timeout-Fehler | Keine Antwort innerhalb der erwarteten Zeit erhalten.Überprüfen Sie Folgendes: Serielle Verbindungen Serielle Einstellungen, wie z. B. Baudrate, Parität, Datenbits, Stoppbits usw. Modbus-Modus, RTU oder ASCII Slave-ID - Antwortzeitüberschreiten TCP / IP-Verbindungs - Antwortzeitüberschreiten Überprüfen, ob Host und Port mit Slave-Station übereinstimmen |
| Antwortfehler | Die Antwort war nicht erwartet. Unterschiedliche Abhängige ID. |
| CRC-Fehler | Der CRC-Wert für die empfangene Antwort ist nicht korrekt. |
| Schreibfehler | Dies ist ein Fehler, der vom seriellen Treiber gemeldet wurde. Dies kann auftreten, wenn Sie einen USB / RS232 / 485 - Adapter verwenden und das USB-Kabel entziehen. Es gibt 4 Arten: BruchbedingungE / A-FehlerSeriellverbindungsfehlerAusgabepufferüberflutungSchreibfehler mit TCP / IP-Verbindungen werden normalerweise durch Verlust der Verbindung verursacht. |
| Lesefehler | Dies ist ein Fehler, der vom seriellen Treiber gemeldet wird. Es gibt 6 Arten: Bühnenfehler Zeichenpuffer Überschwemmung Paritätsfehler Eingabepuffer Überschwemmung I / A-Fehler Unterbrechung Bedingungen Lesfehler bei TCP / IP-Verbindungen werden normalerweise durch Verbindungsverlust verursacht. |
| Unzureichende Anzahl von Bytes empfangen | Die Antwort ist nicht der erwarteten Länge. |
| Fehler bei der Byteszählung | Die Byteszählung in der Antwort ist falsch. Im Vergleich zu den Erwartungen. |
| Transaktions-ID - Fehler | Es wird für die Transaktionspaarung verwendet, wobei der MODBUS-Server die angeforderte Transaktionsidentifikation in der Antwort kopiert. |
Kleine Version, kostenlos!!

求软件
非常好
*这软件可以*
这软件不错
666
教程挺详细的,我还需要软件,网络上还没看到这么详尽的教程!太棒了!
平台太好了
真滴太好用了
非常好
老六
很棒
平台太好了
需要需要
非常棒
嗯,好像可以
感谢感谢分享
太棒了
太棒了
1
教程很详细!太棒了!
兄弟
平台讚讚讚
11
123
3456
y456hg
谢谢楼主分享
测试用
网络上还没看到这么详尽的教程!太棒了!
太好了,非常好的资源
这个平台太好了.正是需要的。
这个平台太好了。