Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Hallo zusammen,
nun ist viel Zeit vergangen. Habt ihr es inzwischen geschafft mit dem X1 auf Modbus zu schreiben? Ich habe leider nur den Modbus TCP Client gefunden, ohne Möglichkeit zum Schreiben.
Modbus
Es ist möglich hier sowohl zu senden, als auch zu empfangen. Der Baustein basiert auf dem von Alram, jedoch führt der Baustein nur beim Beschreiben einer der Inputs (TX oder Trigger) den Read/Write Vorgang aus. https://knx-user-forum.de/forum/supp...95#post1711595
ich habe letztes Wochenende meine Stiebel Wärmepumpe mit ISG Web in Betrieb genommen und konnte dank des Logikbausteins alles implementieren.
Über die Möglichkeit die Verbrauchsdaten über Modbus zu beziehen konnte ich auch den COP berechnen.
Vielen Dank für das Modul! Funktioniert super.
Ein Screenshot der Logiken "Prozessdaten" und "Verbrauchsdaten" habe ich beigefügt, falls einer ähnliches vor hat.
soweit ich die doku interpretere:
mit FC04 und regsiteradresse 1 (ggf. auch 0 - bin mir nicht sicher, ob es in meinem Baustein 0 indiziert ist oder nicht) solltest die aussentemperatur bekommen. vmtl. bekommst du für 23,45°C den wert 2345 oder 234 aus dem register.
die anderen parameter (byte order etc.) musst du halt empirisch ermitteln
vG Alram
Ich habe noch nicht verstanden, was es mit der Modbus ID auf sich hat...?!
Modbus Adresse ist das aus meiner Tabelle, ggf. -1 - okay.
Ich erhalte auch Werte, zB grafik.png
Allderdings ist VL/RL 32/27 - die Zahl kann nicht passen.
Wie du aus der Zahl 20971842 dann 32,3 lesen kannst, ist mir noch unbekannt
ist "ganz einfach" - du musst nur wissen:
- ein Modbus register ist immer 16bit gross
- ein Word entspricht ebenfalls 16bit
wenn du via modbus nun das register 12 liest und gleichzeitig angibst 2 words (=32bit) zu lesen, bekommst du tatsächlich den inhalt von register 12 und 13 gleichzeitig zurückgeliefert. Das wird von meinem Baustein dann als eine 32bit Zahl ausgewertet (es ist in modbus durchaus üblich 32bit Zahlen in zwei hintereinanderliegenden registern zu speichern; es gibt in modbus keine 32bit breiten Register).
zu deinem beispiel: die zahl 20971842 lautet in binärsystem: 00000001010000000000000101000010
d. h.: register ...
...12 ist binär: 0000000101000010 (die unteren 16bit) und damit dezimal: 322 folglich sollten das wohl 32,2°C sein
...13 ist binär: 0000000101000000 (die oberen 16bit) und damit dezimal: 320 und damit vermutlich eine nicht dokumentierte temperatur von 32,0°C
(die beiden Register können jetzt auch vertauscht sein - je nach big- oder little endian codierung; für die Erklärung ist das aber egal; kannst gerne nachlesen: https://de.wikipedia.org/wiki/Byte-Reihenfolge)
Auf Adresse 1,2 und 3 bekomm ich aber dennoch zB 65482 ausgegeben, wie muss ich damit umgehen? Das sollte -5,4 sein, denke ich.
schaut so aus als ob du herausgefunden hast, den datentyp auf signed (=mit vorzeichen) umzustellen. das modbus protokoll gibt leider keine informationen darüber her, wie die 16bit zu interpretieren sind (signed int, unsigned int, float, oder ganz anders ...). daher muss das beim Baustein angegeben werden. Details kannst gerne auf wikipedia nachlesen: https://de.wikipedia.org/wiki/Integer_(Datentyp)
aber das wichtigste: es funktioniert (und schaut auch korrekt aus)
Hallo Zusammen, ich habe jetzt umfangreiche Logiken über den X1 erstellt. Alles läuft soweit gut. Ich habe jedoch folgendes Problem.
Meine Wärmepumpe habe ich über Modbus TCP IP angebunden, läuft stabil.
Meine PV Anlage liefert nur Modbus RTU. Demnach musste ich zunächst ein Interface RTU auf TCP IP setzten. Funktioniert auch. Aber. Von Zeit zu Zeit frieren die PV Daten, die Daten aktualisieren nicht mehr, ein. Wenn ich das Modbus Protokoll auslese kommen die Daten sauber an. Ein Neustart des X1 oder überspielen der letzten Programmierung über GPA löst das Problem dann wieder für eine Zeit.
Hatte jemand von euch bereits ein ähnliches Problem oder hat einen Ansatz wo ich nach dem Fehler suchen kann?
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar