Modbus Register Adressen?

Für Themen rund um die Konfigurationsoftware des Revolution Pi
Post Reply
User avatar
Ingo
Posts: 266
Joined: 10 Nov 2016, 21:56
Answers: 1
Location: Luth.Wittenberg

Modbus Register Adressen?

Post by Ingo »

HAllo Volker,

ich habe glaube ich gerade ein kleines Gedankliches Problem mit der Konfiguration des Modbus. Vieleicht kannst du mir da etwas unter die Arme greifen.
Folgendes Zenario.
Virtuelle Modbusgeräte auf dem RevPI (2 x Master, 1 x Slave)
Gegenseite ist ein PC (Server) mit Modbus Master und Slave.
Arduino mit Modbus Slave anbindung.

So nun habe ich in der Pictory den Slave konfiguriert. Ich habe da ja Inp.32 an der Zahl die bei Registeradresse 1 Anfangen, die Outputs fangen dann bei Registeradresse 33 an, ist das Richtig?
Der Slave empfängt vom Master die Register 0 - 9 auf den Input Register 1 - 10. Das funktioniert soweit ja. Aber wie schaut es bei der Abfrage Master zum Slave aus. Mit Welcher Registeradress muss ich dort weiterarbeiten um Register 33-35 vom Slave zu erfassen?
Muss ich am Master dann weiter mit Register 11 arbeiten? Weil so bekomme ich keine Daten ausgegeben.
User avatar
volker
Posts: 1046
Joined: 09 Nov 2016, 15:41
Answers: 1

Re: Modbus Register Adressen?

Post by volker »

Hallo Ingo,
beim Slave stimmen die Bezeichnungen mit fest reservierten Registern überein, da ja der Slave nicht wissen kann, welche register bei dem (den) Master(n) alle abgefragt werden. Das heißt der Slave stellt 32 Inputregister (1 bis 32) und 32 Outputregister (1 bis 32) bereit.
Modbus Master können diese Inputregister mit "read input register" und Adresse 1 bis 32 einlesen.
Modbus Master können diese Outputregister mit "write single register" oder "write multiple registers" und Adresse 1 bis 32 einlesen oder mit "read holding registers" und Adresse 1 bis 32 durchaus auch wieder einlesen.

ACHTUNG!!! Modbus Inputregister werden vom Master gelesen, also im Slave beschrieben! Daher sind das für den Slave in seinem Prozessabbild Ausgänge und deshalb heißen die Prozessvariablen auch per default "Output_xx". Umgedreht werden Modbus Outputregister vom Master beschrieben und sind daher beim Slave Werte, die ins Prozessabbild eingelesen werden (Name daher Input_xx").

Bei einer Standardkonfiguration würde also z.B. ein Master 10 Werte mit write multiple register in die Register 1 bis 10 schreiben. Am slave landen diese Werte in den Inputvariablen Input_1 bis Input_11, stehen also ab Adresse 11 mit 20 Byte im Prozessabbild. Wenn der Master 5 Werte vom Slave haben will, so muss der Slave diese in Output_1 bis Output_5 schreiben (also 10 byte ab Offset 75 im Prozessabbild). Dann würde der master mit einem "read input registers" von 5 Registern ab Register 1 die Modbus Slave Inputregister auslesen.
Unser RevPi Motto: Don't just claim it - make it!
User avatar
Ingo
Posts: 266
Joined: 10 Nov 2016, 21:56
Answers: 1
Location: Luth.Wittenberg

Re: Modbus Register Adressen?

Post by Ingo »

Danke Volker für die genaue erklärung, aber es ich hatte doch kein so grossen denkfehler. Das Problem liegt wieder einmal in der rsc Datei das diese die neue Konfiguration nicht mehr abspeichert.
Mir ist es nur auffgefallen das ich keine Werte über den Modbus geliefert bekomme als ich die neuen variablen dort eingefügt hatte. Als ich mir die Variablenliste ausgeben lassen wollte habe ich im browser nur ein neues Fenster angezeigt bekommen dessen Inhalt aber leer gewesen ist. In der Anzeige selber wo die Module drinne Stehen standen aber alle werte so wie ich sie eingetragen hatte. Ich habe die Konfig als Standartkonfig gespeichert und den treiber zurück gesetzt.
Dann habe ich versucht es als Projekt zu speichern. aber auch dies blieb ohne erfolg. Dateinamen konnte ich eingeben aber nicht speichern. Ok blieb ohne wirkung.
Also startete ich die Pictory neu aber das problem blieb. auch ein neustart des Rev Pi blieb ohne erfolg.
Ich kann im moment keine Änderungen machen da diese nicht übernommen werden.
User avatar
volker
Posts: 1046
Joined: 09 Nov 2016, 15:41
Answers: 1

Re: Modbus Register Adressen?

Post by volker »

na ja,
schade, dass Du dann in Deiner Frage alles anders beschrieben hast:
Die Ausgänge und Eingänge liegen eben nicht auf unterschiedlichen Modbus Registernummern, sondern haben identische Nummern (beide von 1 bis 32). Du bist in Deiner Frage davon ausgegangen, dass die Ausgänge ab Register 33 anfangen. Tun sie aber eben nicht. Außerdem stimmen in Deiner Frage die Richtungen nicht. Der Master schreibt in Modbus Outputregister (Prozessvariable "Input_1 bis Input_32") und liest Modbus Inputregister (Prozessvariablen "Output_1 bis Output_32")- nicht umgedreht, wie Du geschrieben hattest ("Der Slave empfängt vom Master die Register 0 - 9 auf den Input Register 1 - 10"). Wenn Du einen Function code "read input registers" ausführst, dann kommen die Daten immer aus den Modbus Slave Inputregistern. Diese liegen in der Standardkonfiguration ab der 33. Stelle im Prozessabbild (bei Standardkonfig mit Core und einem Modbus slave wäre das Offset 11 + 75 = 86).

Wegen Deiner Speicherprobleme habe ich keine Idee, was da mit Deinem System falsch läuft. Bei uns hier und bei vielen anderen usern läuft das ohne Probleme. Welchen Browser nimmst Du (Typ, Version)? Läuft der Browser auf einem Wiindows-PC? Läuft während der Konfiguration mit PiCtory auf demselben Netz Modbus TCP mit vielen Kommunikationspartnern und viel Traffic?
In letzter Konsequenz kannst Du dann auch die _config.rsc manuell abändern, wenn das auf Deinem System nicht sicher über den Browser läuft.
Unser RevPi Motto: Don't just claim it - make it!
User avatar
Ingo
Posts: 266
Joined: 10 Nov 2016, 21:56
Answers: 1
Location: Luth.Wittenberg

Re: Modbus Register Adressen?

Post by Ingo »

Danke dir Volker. ich hoffe ich habe es nun richtig verstanden. Modbus uist eben nicht ganz einfach zu verstehen wenn man es noch nicht weiter beneutzt hat.
Auch das mit dem Problem habe ich lösen können, der Cash vom Browser ist voll gewesen so das die Pictory die neuen Daten nicht speichern konnte. hatte den Cash und auch den res einmal gelöscht und schon ging es wieder.

nun Funktioniert es auch so wie es soll.
Post Reply