RevPi Connect MODBUS konfigurieren
-
- Posts: 7
- Joined: 31 Jul 2019, 10:18
RevPi Connect MODBUS konfigurieren
Hallo zusammen,
ich habe einen RevPi Connect und das Relaisboard EX9065H von Expert um damit erstmal binäre Signale an den Outputs zu schalten.
Der 9065H ist MODBUS-fähig. Beide Geräte sind über die RS485-Schnittstelle verbunden.
Als virtuelles Gerät habe ich den ModbusRTUMaster_20180122 in Pictory gewählt.
Ich habe den device-path in Pictory auf dev/ttyRS485 gesetzt (ansonsten nach der Anleitung https://revolution.kunbus.de/tutorials/ ... enden-con/ vorgegangen)
Allerdings bin ich mir unsicher, was ich unter "Extended Data" in den RTUMaster eintragen muss. 1. Was hat hier speziell die Zahl unter "Quantity of Registers" zu bedeuten?
Ein Befehl könnte folgendermaßen aussehen: 01 05 0001 FF00 (Slave-Adresse, Funktion, Channel 1, high) wie hier in einem Datenblattauszug des 9065H zu sehen.
2. Was muss ich tun, dass er vom Connect aus gesendet wird (und der 9065H ihn versteht)?
ich habe einen RevPi Connect und das Relaisboard EX9065H von Expert um damit erstmal binäre Signale an den Outputs zu schalten.
Der 9065H ist MODBUS-fähig. Beide Geräte sind über die RS485-Schnittstelle verbunden.
Als virtuelles Gerät habe ich den ModbusRTUMaster_20180122 in Pictory gewählt.
Ich habe den device-path in Pictory auf dev/ttyRS485 gesetzt (ansonsten nach der Anleitung https://revolution.kunbus.de/tutorials/ ... enden-con/ vorgegangen)
Allerdings bin ich mir unsicher, was ich unter "Extended Data" in den RTUMaster eintragen muss. 1. Was hat hier speziell die Zahl unter "Quantity of Registers" zu bedeuten?
Ein Befehl könnte folgendermaßen aussehen: 01 05 0001 FF00 (Slave-Adresse, Funktion, Channel 1, high) wie hier in einem Datenblattauszug des 9065H zu sehen.
2. Was muss ich tun, dass er vom Connect aus gesendet wird (und der 9065H ihn versteht)?
Re: RevPi Connect MODBUS konfigurieren
Hallo,
vorab: Ich bin auch noch neu in der RevPi Welt
Quantity of Registers bezieht sich meines Wissens nach auf "wie viele Register (ab Adresse des 1. Registers) belegt die zu beschreibende oder lesende Funktion". Kann man bestimmt professioneler ausdrücken aber ich hoffe du weist was ich meine. Sprich: Deine erste Zeile unter extended Data würde alle Bits/Coils von Adresse 1 bis 1000 beschreiben (die Virtuellen Modbusmaster/slaves greifen nur auf das Prozesabbild zu soweit ich weis).
Ich würde an deiner Stelle erstmal anfangen nur einzelne Coils zu beschreiben, das geht dann ganz einfach mit piTest (einfach mal piTest im Terminal eingeben dann bekommst du eine Übersicht über die einzelnen Funktionen), also : erste Zeile deiner Extended Data function code ändern, Register Anzahl 1, dann Konfiguration Speichern und Driver neu starten. Anschließend einfach mal "piTest -w Output_Bit_1,1" sollte dann das erste Bit auf 1 setzten (ggf. Adresse zu dem Bit ändern das du tatsächlich umschalten willst).
Grüße
Luke
vorab: Ich bin auch noch neu in der RevPi Welt
Quantity of Registers bezieht sich meines Wissens nach auf "wie viele Register (ab Adresse des 1. Registers) belegt die zu beschreibende oder lesende Funktion". Kann man bestimmt professioneler ausdrücken aber ich hoffe du weist was ich meine. Sprich: Deine erste Zeile unter extended Data würde alle Bits/Coils von Adresse 1 bis 1000 beschreiben (die Virtuellen Modbusmaster/slaves greifen nur auf das Prozesabbild zu soweit ich weis).
Ich würde an deiner Stelle erstmal anfangen nur einzelne Coils zu beschreiben, das geht dann ganz einfach mit piTest (einfach mal piTest im Terminal eingeben dann bekommst du eine Übersicht über die einzelnen Funktionen), also : erste Zeile deiner Extended Data function code ändern, Register Anzahl 1, dann Konfiguration Speichern und Driver neu starten. Anschließend einfach mal "piTest -w Output_Bit_1,1" sollte dann das erste Bit auf 1 setzten (ggf. Adresse zu dem Bit ändern das du tatsächlich umschalten willst).
Grüße
Luke
Re: RevPi Connect MODBUS konfigurieren
Bin noch über dieses Thema im Forum gestolpert, hier findest du die Antowrten die du suchst glaube ich . (erste Antwort von Volker erklärt das Konzept vom Modbusmaster)
viewtopic.php?f=14&t=216
viewtopic.php?f=14&t=216
-
- Posts: 7
- Joined: 31 Jul 2019, 10:18
Re: RevPi Connect MODBUS konfigurieren
Vielen Dank für deine Hilfe Luke, tatsächlich hat mir das mit den Quantity of Registers weitergeholfen. Der Datenstrom wird somit länger bzw. verkürzt (mit dem Oszi gemessen).
Aktuell habe ich aber das Problem, dass wir nun den Datenstrom so einstellen, dass der EXPERT dann auch den richtigen Befehl mit den richtig gesetzten Bits bekommt.
Daran arbeite ich aber gerade noch selbständig mit Logi.CAD
Aktuell habe ich aber das Problem, dass wir nun den Datenstrom so einstellen, dass der EXPERT dann auch den richtigen Befehl mit den richtig gesetzten Bits bekommt.
Daran arbeite ich aber gerade noch selbständig mit Logi.CAD
Re: RevPi Connect MODBUS konfigurieren
Hallo Paul Unger, Danke für Deine positive Rückmeldung.
-
- Posts: 7
- Joined: 31 Jul 2019, 10:18
Re: RevPi Connect MODBUS konfigurieren
Der ModbusRTU-Master läuft und sendet die voreingestellten Signale über Pictory aus. So ist gerade in den Extended Data des ModbusRTU-Master eingestellt: Slave Adresse: 4, Function Code: WRITE_SINGLE_COIL, (Register Address, Quantity of Registers, Action Interval und Device Value haben meines Wissens nach keine Auswirkung auf das gesendete Datenpaket, werden hier aber trotzdem der Vollständigkeit halber aufgeführt) Register Adress: 4, Quantity of Registers: 16, Action Interval (ms): 50, Device_Value: Output_Bit_1.
Frage 1: die Funktion 'Quantity of Registers' hat aufgrund der Voreinstellung 'WRITE_SINGLE_COIL' keine Auswirkung auf die Länge des Datenstroms? Ist sie bei dieser Funktion überhaupt relevant?
Im folgenden Bild habe ich das gewünschte Datenpaket (grün) und das von RevPi gesendete Datenpaket (gelb) mit den oben genannten Voreinstellungen aufgenommen. Zu sehen ist, dass die ersten drei Werte passen: Slave-Adresse = 4, Function Code = 5 (WRITE_SINGLE_COIL), Register Adress = 4 (im Datenstrom = 3).
Die nächsten 2*8-Bit Felder sollten allerdings zum Output-Schalten auf FF00h (wie im grünen Datenstrom zu sehen) gesetzt werden.
Frage 2: wie setze ich diese letzten beiden 8-Bit Pakete vor dem CRC-Datenfeld auf FF00h (high)?
Frage 3: ist das überhaupt möglich mit der Voreinstellung 'Function Code: WRITE_SINGLE_COIL' oder kann damit wirklich nur 1 Bit gesetzt werden?
Frage 5: wie kann ich dies in LogiCAD 3 automatisieren? (Diese Frage stelle ich speziell auch im Logi.cals-Forum, allerdings weiss ja eventuell jemand von hier wie das funktioniert)
Vielen Dank für jegliche Information dazu.
Frage 1: die Funktion 'Quantity of Registers' hat aufgrund der Voreinstellung 'WRITE_SINGLE_COIL' keine Auswirkung auf die Länge des Datenstroms? Ist sie bei dieser Funktion überhaupt relevant?
Im folgenden Bild habe ich das gewünschte Datenpaket (grün) und das von RevPi gesendete Datenpaket (gelb) mit den oben genannten Voreinstellungen aufgenommen. Zu sehen ist, dass die ersten drei Werte passen: Slave-Adresse = 4, Function Code = 5 (WRITE_SINGLE_COIL), Register Adress = 4 (im Datenstrom = 3).
Die nächsten 2*8-Bit Felder sollten allerdings zum Output-Schalten auf FF00h (wie im grünen Datenstrom zu sehen) gesetzt werden.
Frage 2: wie setze ich diese letzten beiden 8-Bit Pakete vor dem CRC-Datenfeld auf FF00h (high)?
Frage 3: ist das überhaupt möglich mit der Voreinstellung 'Function Code: WRITE_SINGLE_COIL' oder kann damit wirklich nur 1 Bit gesetzt werden?
Frage 5: wie kann ich dies in LogiCAD 3 automatisieren? (Diese Frage stelle ich speziell auch im Logi.cals-Forum, allerdings weiss ja eventuell jemand von hier wie das funktioniert)
Vielen Dank für jegliche Information dazu.
Re: RevPi Connect MODBUS konfigurieren
Hallo Paul,
Antwort 1: Die Funktion 'Quantity of Registers' hat aufgrund der Voreinstellung 'WRITE_SINGLE_COIL“ keine Auswirkungen.
Antwort 2: Du musst die Variable Output_Bit_1 auf „1“ setzen zum Beispiel mit „piTest –w Output_Bit_1,1“.
Antwort 3: Ja, mit dem 'Function Code: WRITE_SINGLE_COIL' kannst du nur 1 Bit setzen.
Antwort 1: Die Funktion 'Quantity of Registers' hat aufgrund der Voreinstellung 'WRITE_SINGLE_COIL“ keine Auswirkungen.
Antwort 2: Du musst die Variable Output_Bit_1 auf „1“ setzen zum Beispiel mit „piTest –w Output_Bit_1,1“.
Antwort 3: Ja, mit dem 'Function Code: WRITE_SINGLE_COIL' kannst du nur 1 Bit setzen.
-
- Posts: 7
- Joined: 31 Jul 2019, 10:18
Re: RevPi Connect MODBUS konfigurieren
Hallo Eduard,
danke für die Infos. Damit konnte ich jetzt das Relaisboard testen.
Der Knackpunkt ist allerdings, wie ich die "Action IDs" in Pictory mit LogiCAD realisieren kann.
Gibt es so etwas wie eine Exportier-Funktion für die Action IDs, so wie für die Inputs/Outputs? Durch setzen der ein und derselben Variable in LogiCAD wie in Pictory bewirkt nichts. (z.B. Output_Bit_1 := 1)
Die Action IDs werden ja nach der eingegebenen Intervallzeit zyklisch ausgeführt. Somit müsste ja vor jedem Intervall der Wert der Variable (hier Output_Bit_1) abgefragt werden?
danke für die Infos. Damit konnte ich jetzt das Relaisboard testen.
Der Knackpunkt ist allerdings, wie ich die "Action IDs" in Pictory mit LogiCAD realisieren kann.
Gibt es so etwas wie eine Exportier-Funktion für die Action IDs, so wie für die Inputs/Outputs? Durch setzen der ein und derselben Variable in LogiCAD wie in Pictory bewirkt nichts. (z.B. Output_Bit_1 := 1)
Die Action IDs werden ja nach der eingegebenen Intervallzeit zyklisch ausgeführt. Somit müsste ja vor jedem Intervall der Wert der Variable (hier Output_Bit_1) abgefragt werden?
Re: RevPi Connect MODBUS konfigurieren
Um aus LogiCAD die Outputs des Prozessabbildes beschreiben zu können musst du den Export Hacken für die gewünschten Outputs setzen.
- Attachments
-
- piCtory.png (10.66 KiB) Viewed 12245 times