Startseite > Forum > Bedienterminals (Weintek) > Modbus-Codes, die für die Kommunikation über das Bedienfeld verwendet werden
- Dieses Thema hat 3 Antworten, 3 Teilnehmer und wurde zuletzt aktualisiert 4 Jahre, 9 Monate da Sergio Bertana.
-
AutorPost
-
Dezember 9, 2013 bei 8: 08 am #35459RobertoPartecipante
Ich verwende Ihr Weintek-Panel mit Ethernet-Anschluss, der in Modbus TCP / IP mit einer Panasonic-SPS verbunden ist, um einen Verbindungstest durchzuführen, für den ich ein Objekt eingefügt habe Numerische Einführung Dies bezieht sich auf das Register 399 der SPS. Ich habe den 3x-Code im Dropdown-Menü definiert, gefolgt von der Registeradresse, aber wenn ich mich mit dem in der Simulation befindlichen Programm auf dem PC mit der SPS verbinde, wird ein Kommunikationsfehler angezeigt.
Ich habe versucht, Modbus-TCP-Pakete mit Wireshark zu erfassen, und festgestellt, dass das Panel das Modbus-Abfragepaket mit dem Code 04 sendet, obwohl es im Dropdown-Menü dreimal definiert wurde. Die SPS verwaltet den Modbus 3-Befehl nicht. Wie kann ich ihn lösen?
Dezember 9, 2013 bei 8: 29 am #37917Sergio BertanaAdministrator des ForumsDie im Dropdown-Menü der Objekteinstellungen am Terminal angezeigten Codes (Bildschirmfoto) sind nur eine Konvention, sie entsprechen nicht den tatsächlichen Modbus-Codes, die im Kommunikationsprotokoll verwendet werden. Wie im Handbuch für SPS-Verbindungen angegeben, finden Sie hier eine Tabelle mit den Entsprechungen zwischen dem im Objekt definierten Code und dem relativen Modbus-Code.
(0x) Modbus-Codes: Lesen 0x01 Lesen Spule, Schreiben 0x05 schreiben Einzelspule
(0x_multi_coils) Modbus-Codes: 0x01 lesen Spule lesen, 0x0F schreiben Mehrere Spulen schreiben
(1x) Modbus-Codes: Lesen 0x02 Lesen der diskreten Eingabe, behandelt nicht Schreiben
(3x) Modbus-Codes: Read 0x04 Read input register, Schreibzugriff nicht
(4x) Modbus-Codes: Lesen 0x03 Lesen des Halteregisters, Schreiben von 0x10 Schreiben mehrerer Register
(5x) Modbus-Codes: Lesen 0x03 Lesen des Halteregisters, Schreiben von 0x10 Schreiben mehrerer Register
(6x) Modbus-Codes: Read 0x03 Read Holding Register, Schreiben 0x06 Write single register (Nur ein Register)
(3xbit) Entspricht dem 3x-Befehl
(4xbit) Entspricht dem 4x-BefehlJuli 19, 2019 bei 6: 05 #48595ManuelPartecipanteIch setze diese Diskussion fort, da ich versuche, mit einem MT8070iE mit einem Modbus-TCP / IP-Gerät zu kommunizieren. Ich muss den Befehl 0x05 verwenden, einzelne Spulen schreiben und auf die Adresse 10010 schreiben, um sie auf eine zu setzen. Wenn ich eine externe freie Software verwende, funktioniert dies, wenn ich das Bedienfeld verwende, das ich nicht verwenden kann, oder besser gesagt, ich verstehe den Befehl zur Verwendung als Bit-Schaltfläche nicht.
Theoretisch setze ich das Modbus-Nulladressen-Einstellbit mit einer Schaltfläche und verwende den 0x-Befehl.
PS: Ich habe mehrere Panels von dir gekauft und es geht mir gut.
Juli 19, 2019 bei 6: 12 #48598Sergio BertanaAdministrator des ForumsWenn Sie sich den vorherigen Beitrag ansehen, werden Sie feststellen, dass das Bedienfeld mit dem Befehl 0x automatisch den Modbus 01-Code zum Lesen des Bitwerts und den 05-Code zum Schreiben des Werts verwendet, sodass die Verwendung des 0x-Codes korrekt ist.
Aber in der Zwischenzeit würde ich Zweifel an der Verwendung von Zero-based Addressing aufkommen lassen, sicher, dass es nicht besser ist, Standard-Modbus-TCP zu verwenden? Versuchen Sie beides, denn wenn Ihr Gerät Modbus-kompatibel ist, müssen Sie Standard-Modbus-TCP verwenden.
Stellen Sie sicher, dass die zu verwendende Adresse 10010 ist. In vielen Anwendungsknoten (und in Modbus-Emulatoren) wird der Modbus-Code oben in die Adresse eingefügt, und 10010 gibt an, den Befehl Modbus 01 zum Lesen der Adresse 10 zu verwenden. Ich würde es also versuchen Befehl 0x mit Adresse 10 verwenden.
-
AutorPost
- Sie müssen angemeldet sein, um auf dieses Thema antworten zu können.