SDM630 Modus Zähler
Hallo zusammen,
ich würde gerne mit meinem RevPi Compact über die eingebaute RS485 Schnittstelle einen Stromzähler auslesen. Der Stromzähler (SDM630 V2 Modus) habe ich mit A+(Zähler) an P(RevPi), B- an N und Ground an Ground angeschlossen. Im Display von dem Zähler wird mir angezeigt, das der ausgelesen wird, aber ich bekomme keine werte in NodeRed. Im PiCtory habe ich als Schnittstelle /dev/ttyRS485 ausgewählt und Baudrate auf 9600, wie es auch in dem Zähler eingestellt ist.
Bei den werten habe ich dann als Slave ID die 1, Read_input_registers, das Register 30001 mit einer länge von 2 Registern ausgewählt, wie es mir das Datenblatt von dem Zähler gesagt hat. Leider bekomme ich in NodeRed keine werte raus.
Habe ich hier irgendwas vergessen oder falsch gemacht?
Grüße
ich würde gerne mit meinem RevPi Compact über die eingebaute RS485 Schnittstelle einen Stromzähler auslesen. Der Stromzähler (SDM630 V2 Modus) habe ich mit A+(Zähler) an P(RevPi), B- an N und Ground an Ground angeschlossen. Im Display von dem Zähler wird mir angezeigt, das der ausgelesen wird, aber ich bekomme keine werte in NodeRed. Im PiCtory habe ich als Schnittstelle /dev/ttyRS485 ausgewählt und Baudrate auf 9600, wie es auch in dem Zähler eingestellt ist.
Bei den werten habe ich dann als Slave ID die 1, Read_input_registers, das Register 30001 mit einer länge von 2 Registern ausgewählt, wie es mir das Datenblatt von dem Zähler gesagt hat. Leider bekomme ich in NodeRed keine werte raus.
Habe ich hier irgendwas vergessen oder falsch gemacht?
Grüße
Hi fpfeifer, ich habe das mal nachvollzogen mit einem Testaufbau und einem RevPi Connect mit Modbus RTU Client (Master) und einem RevPi Connect Server (Slave).
Ich würde das in drei Teile aufteilen: 1) Dein System 2) Modbus 3) Prozessabbild 4) Node-RED
1) Dein System
Ist Dein System aktuell?
Führe die Schritte der Revolution Pi Checklist durch.
2) Modbus
Es ist korrekt, das "/dev/ttyRS485" Device zu konfigurieren. Deine Verkabelung ebenfalls. Die Verbindungsparameter sollten ja gemäß dem Handbuch deines Modbus Servers (Slave) passen.
Hast du Abschlusswiderstände angebracht wenn nicht kann es zu Störungen kommen.
Ich muss zugeben, ich habe keine verwendet hier und die Kommunikation funktioniert.
Führe die Schritte durch: 3) Prozessabbild
Die Frage ist, was steht in den Status Registern des Modbus Client (Master)?
Hier ein Bash-Code, der Dir dabei helfen kann das herauszufinden.
Falls Du die Register nicht umbenannt hast, sollte es funktionieren.
Falls dort Werte != 0 stehen, dann gibt es hier die Erklärung der Status Codes
https://revolutionpi.com/de/tutorials/m ... -verwenden
Hast Du weitere Actions definiert, dann erweitere einfach diese Abfrage entsprechend z.B. Modbus_Action_Status_2 und Action_Status_Reset_2 …
Du kannst auch versuchen, Deinen Modbus-RTU Server (Slave) erst einmal ohne RevPi und z.B. mit einem USB-RS485 Interface plus QModMaster Software abzufragen.
Wie im Video Tutorial 23 – Modbus RTU Slave
4) Node-RED
Ist Node-RED aktuell? Du kannst das mithilfe der Schritte sicherstellen
Node-RED Checklist
Verwendest Du die
node-red-contrib-revpi-nodes ?
Dann dann musst du noch für den Austausch den Node-RED RevPi Nodes Server aktivieren im WebStatus.
Ich würde das in drei Teile aufteilen: 1) Dein System 2) Modbus 3) Prozessabbild 4) Node-RED
1) Dein System
Ist Dein System aktuell?
Führe die Schritte der Revolution Pi Checklist durch.
2) Modbus
Es ist korrekt, das "/dev/ttyRS485" Device zu konfigurieren. Deine Verkabelung ebenfalls. Die Verbindungsparameter sollten ja gemäß dem Handbuch deines Modbus Servers (Slave) passen.
Hast du Abschlusswiderstände angebracht wenn nicht kann es zu Störungen kommen.
Ich muss zugeben, ich habe keine verwendet hier und die Kommunikation funktioniert.
Führe die Schritte durch: 3) Prozessabbild
Die Frage ist, was steht in den Status Registern des Modbus Client (Master)?
Hier ein Bash-Code, der Dir dabei helfen kann das herauszufinden.
Falls Du die Register nicht umbenannt hast, sollte es funktionieren.
Code: Select all
for REG in Modbus_Master_Status Modbus_Action_Status_1
do
printf '%30s : %s\n' $REG $( piTest -1 -q -r $REG )
done
for REG in Master_Status_Reset Action_Status_Reset_1
do
printf '%30s : %s\n' $REG "$( piTest -w $REG,1 )"
done
https://revolutionpi.com/de/tutorials/m ... -verwenden
Hast Du weitere Actions definiert, dann erweitere einfach diese Abfrage entsprechend z.B. Modbus_Action_Status_2 und Action_Status_Reset_2 …
Du kannst auch versuchen, Deinen Modbus-RTU Server (Slave) erst einmal ohne RevPi und z.B. mit einem USB-RS485 Interface plus QModMaster Software abzufragen.
Wie im Video Tutorial 23 – Modbus RTU Slave
4) Node-RED
Ist Node-RED aktuell? Du kannst das mithilfe der Schritte sicherstellen
Node-RED Checklist
Verwendest Du die
node-red-contrib-revpi-nodes ?
Dann dann musst du noch für den Austausch den Node-RED RevPi Nodes Server aktivieren im WebStatus.
Probiere ich nachher mal aus.
Muss ich zwangsweiße das neuste Image haben? Habe mal Sudo apt-get update / upgrade ausgeführt und dann rebootet.
Widerstände habe ich bis jetzt auch noch keine eingebaut, da ich nur 20cm Kabel zwischen RevPi und Zähler habe (Testaufbau) werde es aber auf jeden fall nachher mal mit versuchen.
Wofür genau sind die Modus_Action und die Status Funktion? Ich habe es in PiCtory als Inputword deklariert, wie in einem deiner RevPi Videos.
Ich habe es auch mal mit anderen Nodes in NodeRed probiert (Modus Master) der konnte aber auch nichts abfragen.
Werde da nachher nochmal was probieren und nochmal Status Meldung geben.
Aber bis hierhin schonmal danke für die Tipps.
Muss ich zwangsweiße das neuste Image haben? Habe mal Sudo apt-get update / upgrade ausgeführt und dann rebootet.
Widerstände habe ich bis jetzt auch noch keine eingebaut, da ich nur 20cm Kabel zwischen RevPi und Zähler habe (Testaufbau) werde es aber auf jeden fall nachher mal mit versuchen.
Wofür genau sind die Modus_Action und die Status Funktion? Ich habe es in PiCtory als Inputword deklariert, wie in einem deiner RevPi Videos.
Ich habe es auch mal mit anderen Nodes in NodeRed probiert (Modus Master) der konnte aber auch nichts abfragen.
Werde da nachher nochmal was probieren und nochmal Status Meldung geben.
Aber bis hierhin schonmal danke für die Tipps.
Habe es eben nochmal ausprobiert, Habe zwei Widerstände eingebaut, kein erfolg. Habe mal mit den Registern rum Probiert, kein erfolg. Komisch ist nur das mir das Smartester als anzeigt, das es auslesen wird. Nur ich bekomme mit einem Getter Node nur "0" raus. Auch mit den anderen Modbus Nodes bekomme ich nur 0 raus. Habe an dem gleichem Zähler einen Arduino laufen, der den ohne Probleme auslesen kann. Deshalb kann es normal nicht am Zähler liegen. Auch auf der Weboberfläche habe ich schonmal den Modbus Master deaktiviert und wieder aktiviert, aber auch nichts gebracht.
Langsam weiß ich auch nicht mehr weiter...
Langsam weiß ich auch nicht mehr weiter...
Hi, beim Modbus hast du verschiedene Möglichkeiten an die Sache heranzugehen.
Unglücklicherweise ist das Produkt na ja ziemlich offen und daher gibt es viele Möglichkeiten, zum Beispiel beim Thema Modbus irgendwo falsch abzubiegen.
Meine Empfehlung ist, dass du ohne Node-RED Modbus konfigurierst, und zwar via PiCtory.
Dann stehen dir die Daten im Prozessabbild zentral zur Verfügung.
Denn das ist quasi das Herz der Revolution Pi Familie - das Prozessabbild im Kernel Space.
Von dort aus kannst du entweder atomar schreiben oder von allen User Space Applikationen parallel lesen.
Zum Beispiel via Node-RED oder auch über "piTest -r Input_1".
Die Modbus Status Register fungieren als Meldestelle für Fehler.
Damit Fehler nicht überschrieben werden, bevor du diese gelesen hast,
musst du in die Reset Register einen Wert schreiben, damit diese wieder auf "0" gesetzt werden.
Unglücklicherweise ist das Produkt na ja ziemlich offen und daher gibt es viele Möglichkeiten, zum Beispiel beim Thema Modbus irgendwo falsch abzubiegen.
Meine Empfehlung ist, dass du ohne Node-RED Modbus konfigurierst, und zwar via PiCtory.
Dann stehen dir die Daten im Prozessabbild zentral zur Verfügung.
Denn das ist quasi das Herz der Revolution Pi Familie - das Prozessabbild im Kernel Space.
Von dort aus kannst du entweder atomar schreiben oder von allen User Space Applikationen parallel lesen.
Zum Beispiel via Node-RED oder auch über "piTest -r Input_1".
Die Modbus Status Register fungieren als Meldestelle für Fehler.
Damit Fehler nicht überschrieben werden, bevor du diese gelesen hast,
musst du in die Reset Register einen Wert schreiben, damit diese wieder auf "0" gesetzt werden.
Hi,
Habe es nochmal mit einem anderen Zähler versucht, keine Chance auch nur einen wert zu bekommen.
Ich habe es mal mit, ohne Widerstand versucht, mal die Unit-ID geändert, mal mit Paraty versucht, egal wie bekomme ich immer nur "0" raus. Die Register habe ich auch mal durchprobiert, mal INPUT_REGSITER, mal HOLDING_REGISTER.
Hat da noch irgendwer eine Idee??
Ich hänge mal ein paar Bilder an, vielleicht fällt da ja was auf.
https://elektrokreuels-my.sharepoint.co ... A?e=hwjjh6
Habe es nochmal mit einem anderen Zähler versucht, keine Chance auch nur einen wert zu bekommen.
Ich habe es mal mit, ohne Widerstand versucht, mal die Unit-ID geändert, mal mit Paraty versucht, egal wie bekomme ich immer nur "0" raus. Die Register habe ich auch mal durchprobiert, mal INPUT_REGSITER, mal HOLDING_REGISTER.
Hat da noch irgendwer eine Idee??
Ich hänge mal ein paar Bilder an, vielleicht fällt da ja was auf.
https://elektrokreuels-my.sharepoint.co ... A?e=hwjjh6
Habe eben auch nochmal den RevPi mit dem neusten Dullseye 64Bit beflasht und nochmal schritt für schritt probiert, aber kein erfolg.
Dann bin ich mal in den Raps-config gegangen und habe mal die Serielle Schnittstelle aktiviert, danach ist der RevPi jedes mal beim Starten abgestürzt / aufgehangen.
Gibt es noch irgendwas, was ich noch probieren kann?
Dann bin ich mal in den Raps-config gegangen und habe mal die Serielle Schnittstelle aktiviert, danach ist der RevPi jedes mal beim Starten abgestürzt / aufgehangen.
Gibt es noch irgendwas, was ich noch probieren kann?
Hallo, fpfeifer ich habe mir diese Anleitung angeschaut. Ab Seite 40 beginnt die Einstellung der RS485 Schnittstelle.
Einfach step-by-step die Werte der Schnittstelle vergleichen, dann sollte die Kommunikation funktionieren.
Baudrate, Datenbits, Stopbits, Parität, Adresse …
Im Bild kann ich sehen, dass Du die Adresse "10" eingetragen hast. Stimmt diese Adresse überein mit der Einstellung auf Seite 40?
Den Function Code Read Input Registers (0x04) ist meiner Meinung nach korrekt eingestellt.
Ein weiterer Weg besteht darin, die Werte der RS485 Schnittstelle auf dem Oszilloskop oder Logic Analyzer anzuschauen.
Alternativ zur Inbetriebnahme mit einem Revolution Pi kann ich Dir raten, deinen SDM630 mit einem USB-RS485 Interface plus die Software QModMaster abzufragen.
Dort gibt es auch diesen praktischen "Bus Monitor".
Einfach step-by-step die Werte der Schnittstelle vergleichen, dann sollte die Kommunikation funktionieren.
Baudrate, Datenbits, Stopbits, Parität, Adresse …
Im Bild kann ich sehen, dass Du die Adresse "10" eingetragen hast. Stimmt diese Adresse überein mit der Einstellung auf Seite 40?
Den Function Code Read Input Registers (0x04) ist meiner Meinung nach korrekt eingestellt.
Ein weiterer Weg besteht darin, die Werte der RS485 Schnittstelle auf dem Oszilloskop oder Logic Analyzer anzuschauen.
Alternativ zur Inbetriebnahme mit einem Revolution Pi kann ich Dir raten, deinen SDM630 mit einem USB-RS485 Interface plus die Software QModMaster abzufragen.
Dort gibt es auch diesen praktischen "Bus Monitor".