Probleme mit Node Red + Modbus .... wie kann ich die Fehler loggen und auswerten ??

Es gibt 16 Antworten in diesem Thema, welches 1.569 mal aufgerufen wurde. Der letzte Beitrag () ist von Troedler77.

  • Frohe Weihnachten


    Ich habe seit einem Firmwareupdate Probleme die Daten aus meinen Wechselrichtern und Batterien per Modbus weiterzuleiten in die TA Welt.

    Stabil läuft es seit diesem Update nicht mehr.


    Die Menge an Modbus Daten habe ich reduziert auf 5 Werte ... trotzdem timeout usw.


    Frage: Wie kann ich die Fehler loggen und auswerten ??









    Ich habe da nun alle Häkchen gemacht nur wo kann ich die geloggten Fehler auswerten ??


    Des weiteren habe ich eine Info gelesen, dass man ab 10 Werte den Modbus Flex Write nutzen soll ...

    Wie funktioniert das ? hat jemand ein Beispiel ?








    Vielen Dank und schöne Feiertage ... mfg Cord

  • Mehr Infos siehe hier :


  • Hier noch zusätzlicher Background:


    Sämtliche Daten von 3 Effekta Hybridwechselrichter + Pylontechbatterien,

    sowie einige Fritz Raumthermostate sollen per Modbus an die TA Komponenten weitergeleitet werden.


    Die Batterien sind per USB Kabel mit den Effekta Hybridwechselrichtern verbunden

    Solarassistant.io liest alle Werte ein, sprich von den Wechselrichtern und auch der Batterien.

    Diese werden auf der Solarassitantseite grafisch dargestellt und werden zusätzlich auch per MQTT Server zur Verfügung gestellt.

    Auf einem zweiten Raspberry Pi läuft Homeassistant mit Node Red.

    In Node Red werden die MQTT Daten abgerufen und per Modbus auf eine UVR 610 Modbus gesendet.


    Es lief stabil, aber seit einem Firmwareupdate gibt es massive Probleme.


    hier mal ein paar Infos welche Daten z.B. der Batterien zur Verfügung gestellt werden bzw. verändert werden können :






    Das sind weiß Gott mehr als 10 Modbuswerte die ich übertragen möchte ...

    Mit 30 Modbuswerten hat es stabil funktioniert ...momentan laufen nicht einmal 5 Modbuswerte stabil.

    Ich habe auch schon verschiedene Übertragungsgeschwindigkeiten ausprobiert ....


    Es ist sehr wahrscheinlich, dass es an einem Homeassistant update liegt ....



    Auf Dauer muss ich wohl das Modbus Write Modul tauschen gegen ein Modbus Flex Write Modul ... so stand es jedenfalls in der Hilfe




    Um den Fehler angehen zu können brauche ich mehr Info.

    Dazu soll ich die Modbusübertragung loggen und auslesen ...

    Davon habe ich aber keine Ahnung, da Anfänger !!!

    siehe Text rechts : get more about by logging




    hier noch ein Link zur Solarassistant Seite :


    SolarAssistant MQTT output (solar-assistant.io)


    Wie gesagt .... MQTT Seite läuft tadellos ... nur der Transfer per Modbus RTU an die UVR 610 Modbus klappt nicht sauber


    Bin für jede Hilfe dankbar ..

    Vielen Dank im Voraus und schöne Feiertage ...mfg Cord

  • Hallo Cord, Frohe Weihnachten,


    die ganzen Tests habe ich diesmal mit einem Node-Red Generator (flow) ausgeführt, damit man das mit Node-Red Kenntnissen besser nachvollziehen kann.

    Meine Test mit Modbus RTU an die UVR 610 Modbus liefen bisher sehr erfolgreich, ohne Fehlermeldungen und ohne Abbrüche vom UVR610 über viele Wochen fehlerfrei durch.

    Bin total begeistert über die Geschwindigkeit, Stabilität und Robustheit vom UVR610 RTU-Modbus.


    Ich habe immer im Sekundentakt 10 verschiedene Werte von einem Zufallsgenerator erzeugt gleichzeitig mit 10 einzelnen Schreibfunktionen (fc-6) auf den Modbus geschrieben

    und dann sofort wieder mit einer Multi-Register Abfrage-Lesefunktion (fc-3) ausgelesen.


    Das UVR610-Programm hat die Modbus-Eingänge eingelesen und sofort wieder über eine Analog-Funktion an die Modbus-Ausgänge und an die CanBus-Ausgänge weitergegeben.

    Ich bekam immer innerhalb einer Sekunde vom UVR610 RTU-Modbus die zehn Zufallszahlen-Werte fehlerfrei zurück, die ich gesendet hatte.


    Ich habe mit meinem Batterie-Oszi (galvanisch entkoppelt) den MODBUS direkt angeschaut und die Pegel der einzelnen

    Interfaces als auch von UVR610 anschauen und vergleichen können. Die Pegel waren alle ähnlich hoch, keine Ausreisser.

    Dann habe ich alle Geschwindigkeiten bis hoch auf 115200 Baud getestet. Kein Problem und keine Signalverzerrungen.

    Die 9600 Baud sind völlig ausreichend gewesen. Gleiches Ergebnis wie bei 115200 Baud.

    Es gibt noch keinen Grund die Baudrate wegen der Datenmengen zu erhöhen.


    Erst wenn ich unter einer Sekunde, im 0,5 oder 0,2 Sekundentakt gesendet habe, dann haben Werte in der Antwort gefehlt,

    aber bei allen Busgeschwindigkeiten auch bei 115200 Baud haben dann Werte in der Antwort gefehlt.

    Das hat also nichts mit der Busgeschwindigkeit zu tun.

    Egal, ich wollte nur mal sehen, wie schnell man den UVR610 RTU-Modbus fehlerfrei abfragen kann.


    Später habe ich eher mehr zufällig ähnliche Fehlermeldungen wie du geschrieben hast, auf dem RTU-Modbus produziert.


    Node-Red kann man in unterschiedlichen Konstellationen installieren:

    - native normal alleine als einziges smart-home-system

    - als container einer docker-installation

    - als subsystem von iobroker oder HomeAssistant

    - virtuelle Maschine oder container in einer proxmox-Umgebung

    usw.


    Bei meinen Tests habe ich mehrere verschiedene interfaces (mehrere USB-RS485, Raspi-Aufsteckmodul, ESP32-Steckmodul) verwendet

    auf dem gleichen RTU-Modbus an dem auch an einem Ende das UVR610-Gerät als Modbus-Slave hängt.


    Bei einem Test mit zwei verschieden Node-Red installationen und gleichem flow, hatte ich tatsächlich eine

    Kollision von zwei gleichen Sendern(master) die gepollt haben und sich dabei gestört haben produziert.


    Dabei kamen ähnliche Fehlermeldungen wie bei dir zustande.

    "Modbus Failure On State sending Get More About It By Logging"


    Nachdem ich den zweiten Sender (RTU-Server) wieder abgeschaltet hatte, war das Problem sofort beseitigt.


    Beim meinem Sender-Server, RTU-Server habe ich den Verbindungstyp RTU-Bufferd verwendet.


    Kannst mal überprüfen ob es bei dir in den flows mehr als einen aktiven RTU-Sender gibt?


    In den Server-Einstellungen wird immer eine Referenzanzahl angezeigt, wie oft das Objekt verwendet wird.

    Wenn man die Anzahl der Sender und Empfänger mit den Schreib und Lese-Objekten abgleicht, könnte man so

    auch ein mögliches Problem erkennen.


    Bei zb. Geräteadresse 1.

    Es darf anscheined immer nur ein RTU-Server(Master) pollen. Alle anderen müssen zuhören(Slave).


    Ein paar Screen-Shots von deinen Node-Red Einstellungen (alles was mit RTU zu tun hat) wären auch nicht schlecht.

    Bei Timing-Problemen kann man an einigen Stellschrauben drehen, aber dazu später mehr.


    Gruß

    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Jürgen


    Prima ...mit Dir habe ich ja einen Experten an meiner Seite


    Stand : 5 Effekta Daten konnten nicht weitergeleitet werden


    Also ich habe folgendes gemacht:



    Unit ID ist nun 2 damit es nicht mit der Adresse 1 kollidiert.


    Delay to activate input habe ich aktiviert und eine 5 eingetragen (2 oder 10 damit lief es nicht)








    Unit ID´s in Parallel Queue habe ich abgewählt






    damit lief dann die Übertragung der 5 Daten stabil ....


    Also alle Flows gelöscht und meine Sicherung zurückgeladen.

    Unit ID wieder auf 2 angepasst

    Delayzeit bei allen Effekta Daten aktiviert und auf 5 eingestellt...


    Ergebnis: alle Effekta Daten werden übertragen und es gibt in diesem Flow keine Fehlermeldungen





    Zu Fritz komme ich gleich ...da gibt es Probleme

  • Zuerst werden die Daten angezeigt und 4 Sekunden später wollen alle Modbus Write Bausteine aktiv werden und es gibt nur Fehlermeldungen


    Als Server habe ich nur einen einzigen der bei mir "Modbus RTU" heißt





    Die Übertragung der "Effekta" Daten läuft so lange stabil, bis die Fehler von "Fritz" auflaufen .... dann kommen bei "Effekta" die gleichen Fehlermeldungen.

    "Fritz" wird alle 30 Sek. aufgerufen ....


    hier die aktuellen Flows mit den Einstellungen

    Vielen lieben Dank schon einmal


    mfg Cord

  • Hallo Jürgen


    Ich habe mal folgenden Versuch unternommen :


    Flow "Effekta" deaktiviert


    Aufruf der "Fritz" Übertragungen halbiert.

    Wenn man es nun einzeln triggert, werden nur die Temperaturen der Gruppe übertragen.

    Aber die Fehlermeldungen der Modbus Übertragung kommen für alle !!!


    siehe Anhang:


    Gruppe 2 ist aktiviert worden ,,,, Temperaturen der Gruppe 2 werden angezeigt...

    4 Sek später kommen die Fehlermeldungen aller Modbusübertragungen


  • Guten Morgen


    nächstes Phänomen :


    Ich habe mal Flow "Effekta" deaktiviert und Flow "Fritz" geteilt und unbenutzte Funktionen ausgeklammert.

    Mir ist aufgefallen, dass der erste Teil von "Fritz" funktioniert ... der zweite Teil immer Fehlermeldungen produziert


    Dazu habe ich dann die Fritz funktionen auf 2 Flows aufgeteilt.

    Flow 2 funktioniert , Flow 1 produziert Fehlermeldungen

    Flow 2 deaktiviert, Flow 1 funktioniert dann immer noch nicht


    Flow 2 sind die niedrigeren Adressen 46 +

    Flow 1 sind die Adressen 58 +









    der Server und auch die Einstellungen sind gleich

    dabei spielt es keine Rolle ob ich die Übertragung verzögere oder eben nicht ...


    Jemand eine Idee ...woran es liegen könnte ???

  • nächster Versuch:


    Effekta Flow aktiviert und Fritz Flow 2 aktiviert und zyklische Abfrage auf 30 Sek ... funktioniert fehlerfrei


    Sorry ... so langsam gehen mir die Ideen aus, warum es bei Flow 1 Probleme gibt



  • Hallo


    Bin wieder ein Schritt weiter:


    Habe nun Node für Node kopiert bis wieder Fehlermeldungen kommen ...


    Und siehe da ... ab Adresse 64 gibt es Probleme .... 64,66, 68 usw ... die funktionieren alle nicht !!!

    Und dann kommen alle Fehlermeldungen ...sprich in meinem Fall ab Adresse 58.


    Habe es jetzt mal versuchsweise auf Adresse 44 gelegt und es funktioniert wieder .... :P




  • Hallo Cord,


    super, so wie es aussieht hast den Fehler gefunden.


    Ich bekomme jetzt auch einen Absturz vom UVR610 fertig.

    Hab einen Test gemacht mit dem Modbus-Eingang-11, dem ich z.B die Adresse 71 (grösser 64) zugeordnet habe.


    Mit Tapps kann man das ganze kompilieren, das Programm läuft auch im UVR610.

    Aber wenn ich über den Modbus einen Schreibbefehl mit Adresse 71 losschicke, dann macht das UVR610 sofort einen Reset und pfeift.

    Das kann ich beliebig oft wiederholen.


    Ein weiteres Problem ist, wenn ich eine Adresse von einem Modbus-Eingang in einem Schreibbefehl verwende,

    der in Tapps noch undefiniert (noch nicht verwendet wurde) dann gibts auch Probleme und eine Fehlermeldung:


    msg : error

    "Error: Modbus exception 2: Illegal data address (register not supported by device)"


    Bei meinen Experimenten hab ich immer den Modbus mit dem angeschlossenen Oszi überwacht.

    Im Fehlerfall ist dann die Ausgabe am Modbus-Interface (/dev/ttyUSB0) einfach weggeblieben, es war plötzlich kein Signal mehr da.

    Im Node-Red-Debug Monitor sind aber immer noch Modbus-Fehlermeldungen ausgegeben worden.


    Nach Korrektur des Fehlers war die Ausgabe am Modbus-Interface (/dev/ttyUSB0) immer noch weg.

    Erst nach Neustart von Node-Red kamen wieder Siganale auf dem Modbus.


    Bei meinen bisherigen UVR610 Programmen habe ich intuitiv immer automatisch eine Adresszuordnung zum Modbus-Eingang/Ausgang 1:1 gemacht.

    Mit 64 Ein- und Ausgängen hat man ja genügend Adressen. Wenn ich keine 1:1 Zuornung mache, dann muss ich zusätzlich auch noch eine Mapping-Liste pflegen.


    Im Handbuch steht: "Die Adresse des Moduls wird automatisch vergeben und abhängig von der Eingangsnummer und des Typs hinaufgezählt."


    Gruß

    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Jürgen


    Mir stellen sich folgende Fragen:


    a) warum hat es dann jemals funktioniert ? früher keine Fehlermeldungen ?


    b) warum kann ich bei TA Adressen bis 65535 eingeben, wenn es bei 64 schon Probleme gibt ? oder liegt es an Node Red ?


    mfg Cord

  • Hallo Cord,


    den Testfall mit dem Modbus-Eingang-11, dem ich z.B die Adresse 71 (grösser 64) zugeordnet habe,

    konnte ich auch mit einem python-script ausserhalb von Node-Red wiederholen.


    Gleich nach starten des python-scripts macht das UVR610 sofort einen Reset und pfeift.

    Das kann ich mit dem python-script beliebig oft wiederholen.

    Also das Modbus-Adressproblem in UVR610 hat also nichts mit Node-Red zu tun.



    Das kannst bestimmt auch mit jedem Modbus-Master-Simulator durchführen wenn einen solchen Testfall aufbaust.


    Wie schon gesagt, bei mir ist das bisher nicht aufgefallen, weil ich bei meinen UVR610 Programmen immer Adressen unterhalb 64 verwendet habe.


    Beim programmieren mit Tapps ist mir schon aufgefallen, dass automatisch das Adressfeld mit einem Wert gefüllt war.

    Den hatte ich aber so wie du auch überschrieben.


    Wahrscheinlich bleibt der Automatismus der Adressvergabe beim Arbeiten mit Tapps im Adressbereich innerhalb der Grenze bis 64.


    Gruß

    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Jürgen


    Vielen Dank für deine Unterstützung

    Ich werde mal TA anschreiben und die auf diese Problematik hinweisen ...


    mfg Cord

  • Hallo Cord,


    frohes neues Jahr, wie man bei uns sagt.



    Sind die Effekta Hybridwechselrichter über USB-RS232 an die Batterien angeschlossen?

    Das wäre dann BMS-auslesen. Kein CAN-Anschluss von Batterien zu den Effekta Hybridwechselrichtern?


    Über welches Daten-Protokoll kommen Daten von Effekta Hybridwechselrichtern zu Solarassistant? (MQTT, Modbus oder RS232?)


    Solarassistant liest von Effekta Hybridwechselrichtern und Batterien Daten ein. Hast dann zweimal USB-RS232 an den Batterien angeschlossen?

    Einmal USB-RS232 von Batterie zu den Effekta Hybridwechselrichtern und dann nochmal USB-RS232 von Batterie zu Solarassistant?


    Kannst vielleicht das Umfeld von den Effekta Hybridwechselrichtern etwas beleuchten, damit mir das ganze etwas klarer wird und ich den danzen Datenfluss verstehen kann? (Fotos oder sonstige Bilder von den Anschlussverbindungen Hybridwechselrichter und Batterien)


    Mich interessiern die Effekta Hybridwechselrichter und deren Konnektivitäten auf jedenfall, denn inzwischen gibt es einige Hybridwechselrichter,

    aber die Internas stehen nicht ganz vollständig in den Handbüchern.


    Gruß

    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Jürgen


    frohes neues Jahr und vor allem Gesundheit wünsche ich euch allen ...


    anbei wie gewünscht die Infos zu den Anschlüssen :



    logische Verbindungen damit es funktioniert :


    Die 3 Effekta Hybridwechselrichter sind als 3 Phasen Wechselrichterverbund über serielle Datenkabel miteinander gekoppelt.


    Die Pylontechbatterien sind untereinander gekoppelt.




    Der Raspberry Pi (auf dem Solarassistant.io läuft) hat 2 USB Kabel eingesteckt (siehe oben)

    Dieses USB0 FT 232R USB UART Kabel geht vom Raspberry Pi zum Konsolenanschluss der ersten Pylontechbatterie.

    Des weiteren geht ein USB 0 Kabel zum ersten Effekta Hybridwechselrichter.


    Wenn man so will, steckt der Raspberry genau dazwischen, liest Werte ein , steuert und regelt ...


    Im Programm des Raspberry PI werden die Daten dann dem MQTT Server zur Verfügung gestellt.

    Damit kann man einen Vollzugriff per Homeassistant oder eben auch per Node Red vornehmen.



    Ich habe auch mal 5 Sek lang alle Debuginfos von Solarassistant (Node Red) in eine Textdatei kopiert,

    damit man mal sieht, welche Daten in MQTT vorhanden sind.


    Auf Fotos kann man leider nichts erkennen, aber ich werde mal aus der jeweiligen Bedienungsanleitung etwas herausziehen.


    mfg Cord

  • TA hat sich soeben wie folgt gemeldet :


Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!