Ankündigung

Einklappen
Keine Ankündigung bisher.

Anbindung Modbus / Nibe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • eddso
    antwortet
    Das ist schon mal eine gute Arbeit. Ich hab was ähnliches erstellt. Bei mir hat aber das herausfinden des Protokollaufbaus lange gedauert. Die Zeit konnte ich mir sparren da du das scheinbar schon wusstest. Momentan ist die Zeit etwas knapp aber ich bin weiter dran an den Registern.

    Einen Kommentar schreiben:


  • ctr
    antwortet
    ich komme in den nächsten Wochen eh nicht dazu es mal aufzuräumen / aufzuhübschen also werde ich nachher einfach mal meinen letzten Stand irgendwo einchecken

    Ich muss dazu sagen, dass ich kein Programmierer bin, das ist alles copy und paste aus Beispielfunktionen bei rudimentären C-Verständniss.

    Derzeitiger Stand:
    Spricht die Nibe über libFTDI an (um später auch mit Parität Mark/Sapce arbeiten zu können)
    Integriert libeibclient um Nachrichten nativ auf den Bus zu setzen.

    Bis jetzt kann man dem Programm nur eine Startadresse mitgeben (GA) und dann werde einfach "dumm" alle gefundenen Register auf Startadresse + Register geschrieben (ohne Failcheck ob das evtl größer als 255 wird!!!!)

    Die Interpretation der Register wird dann hoffentlich eine gemeinsame Aufgabe jetzt wo ich nicht mehr alleine bin!

    Edit: Zu finden jetzt hier:
    https://github.com/ctr49/nibe-knx-gw

    Einen Kommentar schreiben:


  • eddso
    antwortet
    Ah! Danke! Guter hinweis, habe bis jetzt die Logger Komponente nicht benutzt. Mit deiner Beschreibung geht es dann auch: nach 0x00 0x14 (Logger Adresse) ein 0x06 (Bereit für Empfang) senden dann schauen ob Master mit 0x03 (Hab nix für dich) antwortet. Wenn nicht dann Daten vom Master empfangen. Die ersten 4 Bytes ist Header bestehend aus <Adresse> <0x00> <0x59> <Message länge> zB Message länge ist 0x11 d.H noch 17 Bytes lesen, und zuletzt noch ein Byte CRC lesen. Danach dem Master wider 0x06 senden worauf er mit 0x03 antwortet. Das wars. Bis hetzt habe ich immer mit Mark Parity gesendet und Master hat nicht rumgemurrt.

    Deine Trägheit beim bedienen liegt wahrscheinlich am fehlendem ACK nach der empfangener Message da der Master ja auf ein ACK wartet und mit kleinem Timeout weitergeht. Die Daten bleiben ohne ACK ja trotzdem auf dem Bus lesbar nur hakt das Display halt.

    Wie weit ist deine Interpretation der Daten fortgeschritten? Ich hab mal einen kleinen Dump vom Logger angehängt.
    Angehängte Dateien

    Einen Kommentar schreiben:


  • ctr
    antwortet
    Zitat von eddso Beitrag anzeigen
    Das irritiert mich, ich habe keine 0x00 0x14 auf dem Bus.
    Hast Du denn Im Wartungsmenü den Logger aktiviert?
    Achtung! Das gibt einen "Komm. Error" wenn *kein* angeschlossen ist, dass ein ACK sendet. Je nach sonstiger Konfiguration kann es sein, dass die Nibe dann nicht mehr heizt. Lässt sich aber alles abschalten, bei mir läuft sie jetzt seit 2 Monaten in KommError, ist dann halt nur etwas langsamer im Menü.

    Einen Kommentar schreiben:


  • eddso
    antwortet
    Zitat von ctr Beitrag anzeigen
    Ich sehe aber deutlich mehr als im Display angezeigt wird, dafür muss man halt nur immer brav ein ACK senden (nach einem gelesenen "0x00 0x14" ein "0x06" senden).
    Das irritiert mich, ich habe keine 0x00 0x14 auf dem Bus. In einem Posting davor hatte ich ein Screen meiner Daten. Die einzigen Adressen die ich bekomme sind 0x00 0xF1, 0x00 0xF5, 0x00 0xF9. Liegt es an unterschiedlichen Softwareversionen der NIBE? Wenn ich Parity ignoriere scheint das gelesene zu stimmen inklusive CRC.
    Das Protokoll sieht nach eine art MDB (Multi-drop Bus) aus oder nach MPCM (Multi-processor Communication Mode).

    Bei Parmark kriege ich die 0xFF 0x00 bei jedem Parity error (wie es sein soll) aber die Daten sind schrott. Wo Parity err sein sollte ist keiner und andersrum. Der empfangene String Brauchwasser hat mal Parity err dann nach x Wiederholungen nicht dann wider usw.

    Einen Kommentar schreiben:


  • ctr
    antwortet
    Zitat von eddso Beitrag anzeigen
    Da habe ich aber andere Informationen: Nibe Split gibt es von 8 bis 16kW hier der link:
    Luft/Wasser Wärmepumpen NIBE SPLIT 8 kW

    Alle haben die unter <Zubehör> (siehe Link von oben) die RE 10. Das Datenblatt des RE 10 sagt das auch. Das eingebaute Display der Split ist nichts anderes als ein RE 10. Andere Nibe Split kenne ich nicht. Oder hast du was anderes?
    Sorry hatte nicht mehr genau im Hinterkopf was RE10 ist, ich meinte das Modbus Modul (welches es für die meisten Geräte außer Split gibt).

    Einen Kommentar schreiben:


  • eddso
    antwortet
    Da habe ich aber andere Informationen: Nibe Split gibt es von 8 bis 16kW hier der link:
    Luft/Wasser Wärmepumpen NIBE SPLIT 8 kW

    Alle haben die unter <Zubehör> (siehe Link von oben) die RE 10. Das Datenblatt des RE 10 sagt das auch. Das eingebaute Display der Split ist nichts anderes als ein RE 10. Andere Nibe Split kenne ich nicht. Oder hast du was anderes?

    Einen Kommentar schreiben:


  • ctr
    antwortet
    Zitat von eddso Beitrag anzeigen
    Mit Raspi wird es auch gehen und nicht nur bei der SPLIT sondern auch bei F360P / F1135 / F1150 / F1235 / F1250 / ACVM 270 / VVM 300 / SMO 10, kurz gesagt an allen Heizungen wo man den RE 10 anschließen kann.
    An die Split kann aber eben *kein* RE10 anschließen, jedenfalls nicht laut Nibe Support.

    Zitat von eddso Beitrag anzeigen
    @crt: Wie weit bist du mit schreiben ? Ich lese jetzt immer mit 8M1 kann nicht 9N1 um zu sehen ob das Parity sich ändert. Nach meinen Daten zu urteilen bleibt Parity stabil auf 1 (Mark).
    Es funktioniert soweit, mir fehlen halt nur viele (fast alle) Register, weil die *ganz* anders als bei den anderen Nibe's sind (deswegen wahrscheinlich auch kein RE10 möglich). Ich sehe aber deutlich mehr als im Display angezeigt wird, dafür muss man halt nur immer brav ein ACK senden (nach einem gelesenen "0x00 0x14" ein "0x06" senden). Was ich noch nicht gemacht habe ist Register schreiben, spätestens dafür braucht man MARK/SPACE Parity, weil der Paritätswechsel quasi den Sendemodus erst aktiviert. Wenn Du auf *no* Parity stellst wird die gesendete Partität halt Client-seitig ignoriert, deswegen siehst Du keine Probleme.

    Einen Kommentar schreiben:


  • eddso
    antwortet
    Mit Raspi wird es auch gehen und nicht nur bei der SPLIT sondern auch bei F360P / F1135 / F1150 / F1235 / F1250 / ACVM 270 / VVM 300 / SMO 10, kurz gesagt an allen Heizungen wo man den RE 10 anschließen kann. Leider kann nur wirklich das ausgelesen werden was gerade im Display angezeigt wird. Damit mehr Daten gelesen werden können muss man auch Befehle senden. Und da bin ich noch nicht weiter.

    Unter Linux (Raspi) kann man das lesen kurz testen mit:
    Code:
    stty -F /dev/ttyUSB0 19200 cs8 parenb -parmrk clocal -crtscts -cstopb -ixon -ixoff
    cat < /dev/ttyUSB0
    In der Ausgabe (Anhang) erkennt man nach min 3 sek was im Display angezeigt wird.

    Über den Protokoll habe ich paar Tage gegrübelt. Folgend meine Interpretation der Daten:


    Blau: Scheint die Adresse einer Komponente zu sein. F9 ist dabei das Bedienpanel und 05 wohl das Masterboard. Weiter gibt es noch F1 Und F5 entsprechen den zwei weiteren Boards in der Heizung.
    Rot: Ist wohl ein Token der weitere anweisungen ankündigt.
    Hellblau: Scheint die Registeradresse zu sein. Beim Display sind das 4 Zeilen jeweils mit der Adresse 0x50-0x53 (P,Q,R,S)
    Grau: In den Antworten steht da immer die Slave Adresse drin.
    Grün: Ist die Länge der folgenden Nachricht.
    Violet: Ist die Nachricht selbst.
    Gelb: Ist eine CRC die mit XOR gebaut wird und zwar über alle Bytes angefangen mit der Registeradresse (Hellblau).
    Mit den 06 03 00 konnte ich noch nichts Anfangen, Frameanfang?

    Es sieht so aus als ob der Master die Slaves permanent abfragt, das Bedienpanel zB mit 06 03 00 F9. Diese nachricht Trifft man sehr oft an. Beim Drücken einer Taste kommt nach der Abfrage sofort eine Antwort mit 05 06 ....

    Meine Idee ist es einen RE10 zu simulieren. Dan kann ich die Heizung komplett bedienen/auslesen. Ich habe leider so ein Teil nicht um die Kommunikation mitzuloggen habe aber es im Menü mal Testweise aktiviert. Auf dem Bus sah ich Abfragen mit der Adresse FA. Logisch gesehen das zweite Display nach F9 ist FA.

    Freue mich über Ergänzungen oder Berichtigungen.

    @crt: Wie weit bist du mit schreiben ? Ich lese jetzt immer mit 8M1 kann nicht 9N1 um zu sehen ob das Parity sich ändert. Nach meinen Daten zu urteilen bleibt Parity stabil auf 1 (Mark).
    Angehängte Dateien

    Einen Kommentar schreiben:


  • ctr
    antwortet
    Wäre ich eher skeptisch, dort steht der RS485 wird "über eine API" verfügbar gemacht. Ob das dann auch funktioniert kann nicht nicht sagen.

    In meiner Implementation bin ich übrigens von termios auf libftdi umgestiegen (was dementsprechend auch nur mit FTDI chips funktioniert), da ich nur dort 9M1 setzen konnte (CMSPAR hat bei mir nicht funktioniert)

    Einen Kommentar schreiben:


  • HauCom
    antwortet
    Raspberry Pi

    Würde auch mit RaspiComm Modul gehen, oder?
    Da ich keinen PC in der Nähe habe, würde ich es lieber über Netzwerk loggen, etc..
    Habe auch die Nibe Split 12

    Einen Kommentar schreiben:


  • ctr
    antwortet
    Ich habe den hier im Einsatz:
    Modul USB 2.0 zu 2 x Seriell RS-232/422/485; EX-1333VIS, Art-Nr: 0198
    Ich dokumentiere die Tage nochmal meine Verkabelung, das musste ich gegenüber der Doku im Schweden-Forum noch einmal drehen...

    Einen Kommentar schreiben:


  • eddso
    antwortet
    Ja ich habe auch die SPLIT. Angeschlossen habe ich mich an den freien RJ45 auf dem Display Modul. 2 meter Netzwerkkabel aus der Heizung und RS458 Transciever am Ende. Habe bis jetzt 2 ausprobiert 232 zu 485 und USB zu 485. Beide stören den Bus so dass das Display einfriert, belasten den wohl zu stark oder haben Busabschlusswiderstände integriert. Bin dabei es einzugrenzen, viele variablen zum testen: kabellänge, abschluswiderstände, abgrifspunkt ändern, anderen Transciever.

    Einen Kommentar schreiben:


  • ctr
    antwortet
    Welche NIBE hast Du denn? Meine Forschungen sind ausschließlich für die Split gültig, für die anderen gelten andere Spielregeln.
    Bei mir zeigt er bei konfigurierten aber nicht verbundenen RS485 immer einen Komm-Error, aber man auch einstellen (Experten-Menü), dass er trotzdem normal weiter macht, "hakt" nur etwas wenn man durchs Menü geht...

    Einen Kommentar schreiben:


  • eddso
    antwortet
    Danke dir für deine Infos. Dein Source würde mich auch sehr interessieren. Momentan habe ich noch kleines Problem: beim lesen von dem Bus der Heizung resetet scheinbar die Steuerung, nach dem lesen steht im Display immer die Auswahl der Sprache. Scheinbar sende ich noch was ohne es zu wissen, oder es koppelt sich was ein.

    Einen Kommentar schreiben:

Lädt...
X