Hallo, ich habe ein Tasmota RS485 Modbus ESP-01+ WLan WiFi Bridge Modul der Firma ei-ot.de gekauft. Ziel ist es, via Modbus die Heizungsdaten (Easyfire 1) auszulesen. Leider komme ich hier nicht wirklich zum Ziel, ich brauche (Eure) Hilfe. Das Modul arbeitet, aber es scheint keine Daten zu senden. Auch ein Tausch der beiden A-B Kabel brachte keinen Erfolg. Das Register-Schema habe ich, Auszug anbei. Meine Frage ist, was muss ich konkret tun, damit Daten von der Heizung auf der Konsole angezeigt werden. Vielen Dank!
Hast Du A mit A und B mit B verbunden oder A mit B über Kreuz?
R. H. schrieb: > Das Modul arbeitet, aber es scheint keine Daten zu senden. Woran siehst du das? Hast du dir mit einem Oszi die Signale auf den Busleitungen angesehen? Sind die RS485-Schnittstellen isoliert? Falls "nein", hast du Ground verbunden?
Baud Rate? Parity? und so richtig eingestellt?
Ich habe kein Oszi. In der Tasmota Konsole empfange ich einen Request. Dieser enthält jedoch keine Daten. Modbus A-B-G alle angeschlossen und isoliert
S. M. schrieb: > Baud Rate? Parity? und so richtig eingestellt? 9600 und 19600 getestet. Macht leider keinen Unterschied.
Bist du dir sicher, dass die Registeradressen stimmen? Typisches Problem: Software startet bei 1 mit dem Zählen, Modbus intern aber mit 0. Dann hängt es immer davon ab, wer die Tabelle geschrieben hat. Hast du die richtige Unit-Adresse? Ich vermute einfach mal 1 bei einer Heizung. Welchen Function Code hast du verwendet? Holding Register lesen wird FC3 gemeint sein. Ich habe irgendeine Modbus-Tabelle zu einer KWB Easyfire gefunden, die 24576 als Adresse für Kessel AN/AUS angibt. Hast du ein Laptop und RS485 Adapter so dass du erst einmal die grundsätzliche ModbusRTU Kommunikation testen kannst? Wenn die Kommunikation Laptop <-> Heizung funktioniert, nutzt du den Laptop um die Heizung zu simulieren, also Laptop <-> ESP32. Dann kann man genauer beurteilen, wo es zu Unstimmigkeiten kommt.
:
Bearbeitet durch User
Daniel F. schrieb: > Typisches Problem: Software startet bei 1 mit dem Zählen, Modbus intern > aber mit 0. Und nicht nur das; es gibt eines komplett schwachsinnige Konvention, daß die Registerart (Coil, Holding Register etc.) als 10000er-Offset auf die Registernummer addiert wird. Coil 1 (Function Code 1, 5 und 10) Discrete Input 10001 (Function Code 2) Input Register 30001 (Function Code 4) Holding Register 40001 (Function Code 3, 5, 16, 22 und 23) Alle Werte bedeuten auf dem Bus aber den gleichen Wert, nämlich 0. Eine Erweiterung (aber nicht Verbesserung) des Schwachsinns ist die Gruppierung nicht in Zehntausendern, sondern in Hunderttausendern. Da die Registernummer als 16-Bit-Wert übertragen wird (d.h. nur den Wertebereich von 0 bis 65535 zulässt), ist auch das nicht hilfreich.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
