Datum:
Hallo Leute, kennt sich jemand mit der Belegung der Datenschnittstelle/Steckkartenschnittstelle bei der Logamatic 2107 aus (sieht aus wie ein kleiner ISA Steckplatz) ? Ich wollte an den Bus um ein paar Parameter (Temp. ...) auszuwerten. Hat sich schon jemand damit beschäftigt ??? Grüße & Danke!
Datum:
Hi! du meinst diese M292 Busplatine mit den 12poligen Stecksockeln drauf? Ich stehe vor gleichem Problem. Mir wurde, als wir die Heizungsanlage modernisiert haben, vorgeblaht, dass eine Anbindung der Buderus Steuerung an einen PC möglich sei. Später habe ich dann erst bemerkt, dass es dazu ein passendes Modul mit rs232 Schnittstelle (unbezahlbar für den Einsatzzweck wie ich finde) braucht. Dann hat man aber immer noch keine Software und Protokollbeschreibung. Per google habe ich auch schon einige Zeit mit suchen verbracht. Das einzig sinnvolle ergebnis war eine Person in anderem Forum, der einen Datenlogger python daemon geschrieben hat. Setzt aber eben wieder das RS232 Modul voraus. Bei diesem M292 handelt es sich um einen internen Kommuniationsbus zwischen Hauptsteuerung und den (optionalen) Modulen. Wenn man den direkt sinnvoll abgreifen könnte wäre das schon ne geile sache. Ich habe es mittlerweile aufgegeben, mich mit dem Thema zu beschäftigen, da Buderus auch nur ne Firma ist, die Kohle mit Zusatzartikeln machen will. Anfragen über den Heizungsmeister meines Vertrauens gingen ebenso ins leere. Wenn man wenigstens einen Ansatzpunkt hätte, um was für eine Art Bus es sich dabei handelt. Da ich aber weder einen 12Kanal Logic Analyzer habe, noch den richtigen Ansporn, da irgendwas dran zu fummeln lasse ich es lieber bleiben. Falls du (oder jemand anders) dennoch weitere Infos dazu hättet wäre mir das auch sehr recht! Gruss, Malte
Datum:
Angehängte Dateien:Hallo, ich hänge an der RC30 und hoffe das die Logamatic 2107 das gleiche Protokoll fährt. Ich werde das die nächsten Wochen mal bei einer Logamatic 2107 durchmessen ... Das Protokoll der RC30 (am ServiceKey) ist etwas schwer zu lesen, aber die meissten Werte, die ich haben will, werden schon geloggt (siehe Bild). Grüße.
Datum:
Hi Rudi, na das ist doch schonmal was. Nen ServiceKey scheint die 2107 nicht zu haben. Nur eben diesen internen Bus (sofern man keine Module eingesteckt hat, so wie wir ;) Dein Lila "Was?" Im Graph sieht mir ganz verdächtig nach dem Schaltzustand der Brennerfreigabe aus. Immer wenn deine Kesseltemperatur hochgeht, gibt es auch dort eine entsprechend lange Flanke. Ist das ein Analogwert? Komisch finde ich die verschiedenen Werte der Flanken - hast du einen modulierten Brenner? Das würde die unterschiedlichen Flankenhöhen erklären. Wenn du dich diesem Bus mal annehmen könntest wäre das super, ich habe hier die schematische Darstellung für die Inbetriebnahme (ein spartanischer Schaltplan ohne wichtige Details. Was ich aber sagen kann ist, dass nur die Pins 1-12 des 20poligen Busses verwendet werden (dieser ISA aehnliche stecker hat auch entsprechend nur 2x6 pins. Mehr geht aus dem Schaltbild auch nicht hervor. Gruss, Malte
Datum:
Hallo, ich gehe direkt von der Service-Key-Schnittstelle (über Klinkenstecker) an meine (Frickel)Schaltung, die das Signal auf einen MCU verträglichen Wert wandelt (3V3). Die MCU kann dann direkt über die UART 9600Baud die Daten empfangen. Das "Was?" sagt eigentlich nur das der Brenner eingeschaltet ist und welcher Kreis geheizt wird (Warmwasser/Heizung). Über einen weiteren Sensor zeichne ich den Gasverbrauch am Zähler auf und kann so direkt bestimmen wieviel Gas für Heizung und Warmwasser verbraucht wurde. Ich habe leider noch nicht die Stellen für den Vor-/Rücklauf der Heizung gefunden. Aber die sollten spätestens in der Heizperiode gefunden werden ... Grüße.
Datum:
Hi Rudi, ich habe an meiner RC30 keine Service-Key Schnittstelle gefunden. (vielleicht eine ältere Version) Aber an der BC10; ich habe eine Logamatic EMS statt einer Logamatic 2107. Dort habe ich mit meinem Oszi folgendes gemessen: L= GND R= Tx (aus Service-Key Sicht), mit Low Pegel=~11V und High Pegel=~16V GND= ~16V Ist dies bei Dir genauso? Ist dort wo normalerweise GND beim Klinkenstecker ist, vielleicht der Rx Eingang mit einem Pullup an 16V? Magst Du uns oder mir deine Schaltung und das bislang erforschte Protokoll mitteilen? Gruß Malte
Datum:
Angehängte Dateien:Hallo Malte, die Schnittstelle befindet sich hinter einer Platikabdeckung neben den Tasten (siehe Bild). Ist übrigens auch EMS. Belegung: Beitrag "Buderus Bedieneinheit RC30" Ich koppel den DC-Anteil über einen Kondensator aus: -+2.5V und dann per Spannungsteiler auf +-1.5 und dann per Opamp auf 0-3V Pegel. Ist nicht ideal denke ich, aber funktioniert erstmal. Hat jemand eine bessere Lösung ???? An einem Erfahrungsaustausch bin ich sehr interessiert ! Grüße.
Datum:
> Ist dort wo normalerweise GND beim Klinkenstecker ist, vielleicht der Rx > Eingang mit einem Pullup an 16V? Ich "glaube nicht". Die Teilnehmer senden alle auf dem Bus (TX==RX). Du kannst den Offset auf der Signalleitung für die Stromversorgung benutzen oder die 12V. Wieviel Strom die Leitungen können kann ich dir aber nicht sagen. Grüße.
Datum:
Ok, das sieht bei mir sehr ähnlich aus. Ich hatte es so verstanden, dass das Teil mit dem größeren Display RC30 heißt und das Teil links daneben mit den beiden Drehschaltern und der Servicekey Schnittstelle BC10 heißt. Eigentlich auch egal wie sie heißen. :-) Danke, das werde ich dann mal ausprobieren. Gruß Malte
Datum:
Leider habe ich nirgends nen ServiceKey oder ähnliches an meinem Teil (Zubehör zu kaufen ist mir es dann aber doch nicht wert). @Malte: Hallo Namensvetter ;)
Datum:
Was hast du denn für eine Anlage ?
Datum:
@Malte: Moin Namensvetter :-) und Du bist auch nur 11 Tage älter als ich. ;-) Ich glaube hier oben im Norden kommt unser Name häufiger als im Süden vor. Gruß Malte
Datum:
@Walter: Irgend so ne Buderus Gxx Gastherme mit Logamatic 2107 Steuerung. Allerdings diese Steuerung ohne jegliche Zusatzmodule, da das ganze eine Zentralheizung für mehrere Wohnungen (vermietet) darstellt und somit die pumpenansteuerung ueber buderus-kram zu teuer gewesen waere. Deshalb verwende ich den einen Heizkreis der 2107 nur als Freigabe für die bestehenden Raumtemperaturschalter der alten Anlage (in den Wohnungen). @Malte: ja, denke ich auch - aber ich wohne im Sueden - weiss auch nicht was meine Eltern sich dabei gedacht haben, einen "nordischen" Namen zu nehmen :)
Datum:
Gibt es schon etwas neues ?
Datum:
Naja, also von meiner Seite aus nicht, da ich keine Hardware habe um die 12 Pins zu analysieren. Ich vermute (!) mal dass der interne Bus in etwa so aussehen könnte: 12 Pins: V+ GND CLK unknown 8 Datenbits Das kann natürlich auch völlig anders aussehen. Zum beispiel könnte es auch ein serieller Bus sein und die anderen Pins dienen dazu, das jeweils gesteckte Modul zu identifizieren. Keine Ahnung. Solange ich keinen LogicAnalyzer in den händen halte heisst es für mich erstmal warten und hoffen dass jemand anders eine Erleuchtung bekommt :-( Wie gesagt, mit entsprechender Hardware die einen ServiceKey oder direkt das RS232 Modul bereitstellt gibt es ja schon lösungen. Leider sind diese Module beim Hersteller/Heizungsfachbetrieb nicht gerade günstig. Und mal ehrlich, 150-200€ will ich nicht ausgeben, nur um die Daten loggen zu können. Das muss weitaus günstiger machbar sein. Gruss, Malte
Datum:
Für den Service-Key habe ich jetzt eine mehr oder weniger 1-Chip Lösung, die ich mir demnächst auf eine Platine setzen werde. Grüße.
Datum:
Angehängte Dateien:Moin, ich habe mir nun eine kleine Platine gebastelt und zwei Textdateien mit dem Hyperterminal aufgenommen. Ich habe aber nen LM211 verwendet, der war noch vorhanden. @Rudi: Sieht das so erstmal richtig aus? Oder habe ich noch ein Hardware Fehler? Gruß Malte
Datum:
Angehängte Dateien:zweite Datei
Datum:
Kann du mal im Bus-Monitor schauen welche Module vorhanden sind ? Ansonsten sieht es schon mehr oder weniger nach den Daten aus. Bist du sicher das der LM211 ordentliche Flanken am Ausgang hat ? Ich messe die Zeit zwischen den einzelnen Zeichen um Anfang und Ende einer Nachricht zu ermitteln (ein paar 10ms). Bei mir sieht es z.B. so aus:
90 00 10 00 90 00 10 00 90 00 10 00 90 00 10 00 89 00 09 00 90 00 98 90 00 10 00 90 00 10 00 90 00 10 2009 8 5 7 : 13 : 58 00 06 00 09 08 07 05 0D 3A 02 01 63 00 90 00 10 00 90 00 10 00 TEMP AUSSEN: 18.5 08 00 19 00 00 B9 01 F3 80 00 00 00 00 00 00 B3 72 09 DD 84 00 00 00 08 82 84 00 A7 EB BB 00 TEMP WARMWASSER: 51.6 51.6 08 00 34 00 34 02 04 02 04 21 00 00 03 00 01 5B 00 00 0B 87 00 06 00 90 00 10 00 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 DA 00 TEMP KESSEL: 31.1 1.7 00 08 00 18 00 07 01 37 00 00 00 00 00 60 80 00 02 04 01 35 00 00 11 30 48 00 CB 00 00 00 7A 00 90 00 10 00 90 00 10 00 90 00 10 00 90 00 10 00 90 00 10 00 89 00 09 00 90 00 10 00 90 00 10 00 90 00 10 00 89 00 09 00 |
Datum:
Ich konnte heute an der Logamatic 2107 messen. Es liegen am Flachbandkabel zur Displayeinheit zwei Signale mit 5V Pegel an, die nach Daten aussehen. Das Signal wird mit etwa 50Khz geschickt. Demnächst wird das Flachbandkabel "richtig" angezapft und dann gibt es mehr. An den 3 freien 12poligen Steckverbindern sieht es eher schlecht aus. Dort liegt nur eins der Signale an. Die Steckverbinder scheinen auch nicht identisch verdrahtet zu sein. Grüße.
Datum:
Rudi: ich bin mir nicht sicher, ich vermute mal, dass das jeweilige modul welches man in die expansion slots stopfen kann, sich beim logamatic controller erst anmeldet, bevor da was an kommunikation passiert. Das macht das ganze Vorhaben meinerseits schon recht unmöglich. Am Display Daten abgreifen? Hm. ich bezweifle dass da was brauchbares rübergeht - im Zweifelsfall das was gerade angezeigt wird. Ich sollte mich wohl auch nochmal ein paar Stunden in den Heizraum begeben... Grüssle
Datum:
Hallo, über die Displayeinheit regelst du die Anlage und kannst alle Daten abgreifen. Es müssen alle Daten an diese Einheit geschickt werden (Temperatur etc.). Wenn du die Displayeinheite auf den Kopf drehst sind es die zweiten Pins (oben/unten) von rechts auf denen die Daten geschickt werden (am Flachbandkabel das von der Steuereinheit kommt). Kannst du evtl. mal ein Bild von der Platine machen ? Ich habe leider nur unscharfe mit meinem Handy machen können. Eins von der Displayeinheit und dann noch eins links von den freien Steckverbindern mit dem Steckverbinder für die Temperatursensoren. Dann kann ich das mal einzeichnen. Grüße.
Datum:
Hi Rudi, aber sicher doch. die bilder findest du hier: http://titan.neo-soft.org/temp/logamatic_2107/ Wollte die nicht hier anhängen (weil viel zu gross), kannst dir das passende selbst rausschnippeln :) Gruss, Malte
Datum:
Angehängte Dateien:Super! Habe die identifizierten Pins mal gekennzeichnet. Bild 1/3
Datum:
Angehängte Dateien:Bild 2/3
Datum:
Angehängte Dateien:Bild 3/3
Datum:
Super. Jetzt habe ich mir beim foto machen auch mal die displayeinheit angeguckt, da scheint ja die komplette Logik drauf zu sein. Von daher ist das flachbandkabel vielleicht doch der punkt den wir alle zusammen angreifen und vernichten sollten ;-) Dachte die Logik sitzt woanders und das waere nur ne dumme platine mit display und tasten. Schade dass ich im signal reverse-engineeren so wenig erfahrung habe. Wenn du da aber eine art interface dranbasteln koenntest, waere schon sehr viel geholfen! Gruss, Malte
Datum:
Es wird wohl darauf hinauslaufen das auf das Kabel ein weiterer Steckverbinder gepresst wird (wie bei den IDE Kabeln) um weitere Messungen durchzuführen. Was mir etwas Kopfschmerzen bereitet sind die 50KHz Signal. Das passt irgendwie nicht.
Datum:
Ja, weiterer Steckverbinder ist die einfachste Lösung. Was ist an 50 KHz verkehrt? Klar, die passen nicht zu 9600 baud, aber ich gehe mal nicht davon aus dass das signal unbedingt dem des ServiceKeys entsprechen muss. Oder meinst du, dass die nur einen internen Datenkanal im gesamten System haben und diesen als Abgriff auf den ServiceKey geben? Mich nervt das irgendwie gerade dass ich nur theoretisch mitdiskutieren kann - will auch endlich was produktives dazu beitragen.
Datum:
Hi, ich habe im Bus Monitor nachgeschaut. Ich habe anscheinend nur drei Module: UBA3 / MC10 8 BC10 9 RC30 16 Mit der Flankensteilheit bin ich mir nicht sicher, die muss ich noch mal überprüfen. Die Texte "TEMP AUSSEN: 18.5" werden aber nicht so direkt übertragen? Die hast Du interpretiert und eingefügt, oder? Was steht dann da, an der Stelle? Danke und Gruss, Malte
Datum:
Hallo, die 3 Module sind ok. Die Texte habe ich interpretiert, klar. 18.5°C wären im Hex-Dump dann "00 B9". Ich bin mir nicht 100%ig sicher, aber ich glaube am Ende kommt noch eine CRC. Die habe ich mir bisher aber noch nicht genau angesehen. Ich werde wohl nächste Woche die Platine malen und abschicken, falls du interesse hast, dann kann ich dir eine mitmachen. Ich benutze einen Komperator der im Bereich 3V-5V arbeitet, aber an den Eingängen bis zu 22V verträgt. Der Ausgang ist dann direkt im VCC-Level. Grüße.
Datum:
Angehängte Dateien:Hi, ich habe mit einem anderen Notebook Daten aufgezeichnet. Die Daten sehen nun schonmal ähnlicher aus. Was ist der Newline Character? FF? Was kostet denn so eine Platine? Hier sonst meine Email: hoelkynkoelkyn (aet) gmx (punkt) net Gruß Malte
Datum:
Hallo, dieses 0xff sehe ich bei mir nicht. Auf dem Oszi ist nach den Daten auch kein Start/Stop-Bit für ein 0xFF. Sieht eher wieder nach zu langsamen Flanken aus !? Hast du einen Warmwasserboiler mit dran ? Deine Anlage zeigt beim Druck nur 0xff an. (0x08 0x00 0x18 ... die Stelle 21). Die Platine wird nicht mehr als 10€ kosten, eher weniger. Ich melde mich per E-Mail wenn sie fertig ist. Grüße.
Datum:
Hallo, ich interessiere mich auch für den BUS. Habe gerade auch herausgefunden dass die Daten nur seriell übertragen werden. Bis Mein OSZI geknallt und geraucht hat. Würde mich für die Schaltung oder Platine auch interessieren. Natürlich möchte ich auch mithelfen die Daten zu dekodieren und die Software zu entwickeln... meine Mail: if38(at)arcor(punkt)de Ich hatte eigentlich vor mir irgendwas zu basteln um die RC30 zu ersetzen um z.B. am PC die Heizprogramme schnell zu ändern ohne die rumdreherrei an der RC30. Sehe jedenfalls nicht ein 240€uro für Service-Key und Kabel und nochmal 480Euro für die Software auszugeben. Gruß Ingo
Datum:
Hallo, ich habe mir auch gerade die Kommunikation auf dem EMS-Bus an der Service-Buchse mitgeschnitten Habe mal die decodierten Daten Telegramme bei mir gesucht und vermutlich gefunden. habe meine Telegramme sind die unteren. Nach dem Trennstrich stehen meine ermittelten ergebnisse. Die Außentemperatur scheint nicht ganz zu stimmen. Das Telegramm mit der "Temperatur Warmwasser" ist bei mir ein Zeichen kürzer. Das erste Byte scheint wohl jeweils die BUS-Adresse zu sein die man in der BC30 sehen kann. Wenn man an der RC30 z.B. die Temperatur verstellt tauchen Telegramme mit 0x10 auf (RC30 Adresse =16)
TEMP KESSEL: 31.1 1.7 | 27.2 1,2 (RC30=28°C) 08 00 18 00 07 01 37 00 00 00 00 00 60 80 00 02 04 01 35 00 00 11 30 48 00 CB 00 00 00 7A 00 08 00 18 00 07 01 10 00 00 00 00 00 60 00 00 02 22 01 17 00 00 0C 30 48 00 4B 7F 00 00 5F 00 TEMP AUSSEN: 18.5 | 1,3 (RC30=15°C) 08 00 19 00 00 B9 01 F3 80 00 00 00 00 00 00 B3 72 09 DD 84 00 00 00 08 82 84 00 A7 EB BB 00 08 00 19 00 00 11 01 13 00 00 00 00 00 00 00 64 6F 0A 41 2C 00 00 00 09 25 1C 00 4F 76 0C 00 TEMP WARMWASSER: 51.6 51.6 | 54,6 54,6 (RC30=55°C) 08 00 34 00 34 02 04 02 04 21 00 00 03 00 01 5B 00 00 0B 87 00 06 00 08 00 34 00 0A 02 22 02 22 00 00 01 03 7F 01 1C 10 00 14 79 44 00 |
Hier also meine Kabel: Habe die Infos zur Service-Buchse hierher: Beitrag "Buderus Bedieneinheit RC30" LINKS : GND RECHTS: SIGNALOFFSET +12V, +-2.5V Signalpegel (etwa) GND : +12V Da die Serielle Schnittstelle mit +-12V arbeitet und auch mit weniger auskommt habe ich mal versucht die +-2,5V aus dem Service-Stecker zu nehmen. Also GND (SubD9 Pin5) auf die +12V gelegt und auf RX (SubD Pin2) auf "rechts" gelegt. Das TerminalProgramm habe ich auf 9.600 7 Even 1 eingestellt. Kann es vielleicht sein dass der Dignosestecker bei GND auch wirklich GND(0V) hat und auf Rechts das Signal(+-2,5V) und auf Links -12Volt? Wenn nicht könnte es vielleicht Probleme geben wenn ein Rechner ans Stromnetz angeschlossen ist. Ich habe mein Notebook mit serieller Schnittstelle verwenden und über Batterie laufen lassen. Der mittlere Kontakt und die Spitze scheinen die beiden Kabel zu sein die zur RC30 gehen. @Rudi: Wie hast Du denn das Bild mit den Werten hinbekommen? Ist das ein Programm dass Du selber geschrieben hast? Könnte man da schon mal eine Testversion bekommen? Gruß Ingo
Datum:
Hallo, schön das es noch ein paar Leute gibt ! > Kann es vielleicht sein dass der Dignosestecker bei GND auch wirklich > GND(0V) hat und auf Rechts das Signal(+-2,5V) und auf Links -12Volt? Nein, GND ist GND und von da gemessen sind die Signale so wie sie offensichtlich sein sollen. Wenn du die 12V als GND Potential genutzt sind es dann +-2,5V. > Wie hast Du denn das Bild mit den Werten hinbekommen? Ist das ein > Programm dass Du selber geschrieben hast? Könnte man da schon mal eine > Testversion bekommen? Mit gnuplot, wie gesagt schreibe ich die Daten in eine Datenbank und werte sie dann aus. Anbei noch ein Teilweises Skript ür meine Werte die ich bisher Ermittelt habe (halt der Index!): if ord(data[0]) == 0x08 and ord(data[2]) == 0x18: t1 = ((ord(data[5])<<8)|ord(data[6]))/10.0 data_container.D_DB_TEMP_KESSEL = change_value( D_DB_TEMP_KESSEL , data_container.D_DB_TEMP_KESSEL, t1 ) t2 = ord(data[11]) data_container.D_DB_CIRC = change_value( D_DB_CIRC , data_container.D_DB_CIRC, t2 ) t3 = ord(data[21])/10.0 data_container.D_DB_BAR = change_value( D_DB_BAR , data_container.D_DB_BAR, t3 ) print "TEMP KESSEL:",t1,t3 if (ord(data[11]) & 0x04) == 0x04: print "BRENNER", if (ord(data[11]) & 0x80) == 0x80: print "ZIRK", if (ord(data[11]) & 0x40) == 0x40: print "HK/WW", if (ord(data[11]) & 0x20) == 0x20: print "HK Pumpe", print "%02X" % (ord(data[11]) & ~0xe0) if ord(data[0]) == 0x00 and ord(data[1]) == 0x3D: if ord(data[2]) == 0x02: t1 = ord(data[3])/2.0 data_container.D_DB_TEMP_RAUM_GEST = change_value( D_DB_TEMP_RAUM_GEST , data_container.D_DB_TEMP_RAUM_GEST, t1 ) print "TEMP RAUM GEST.:",t1 if ord(data[2]) == 0x07: if ord(data[3]) == 0x00: print "Einst. Nacht" if ord(data[3]) == 0x01: print "Einst. Tag" if ord(data[3]) == 0x02: print "Einst. Auto" if ord(data[0]) == 0x08 and ord(data[1]) == 0x33: if ord(data[2]) == 0x02: t1 = ord(data[3])/1.0 data_container.D_DB_TEMP_WASSER_GEST = change_value( D_DB_TEMP_WASSER_GEST , data_container.D_DB_TEMP_WASSER_GEST, t1 ) print "TEMP WASSER GEST.:",t1 if ord(data[0]) == 0x08 and ord(data[2]) == 0x19: t1 = ((ord(data[4])<<8)|ord(data[5]))/10.0 data_container.D_DB_TEMP_AUSSEN = change_value( D_DB_TEMP_AUSSEN , data_container.D_DB_TEMP_AUSSEN, t1 ) print "TEMP AUSSEN:",t1 if ord(data[0]) == 0x08 and ord(data[2]) == 0x34: t1 = ((ord(data[5])<<8)|ord(data[6]))/10.0 data_container.D_DB_TEMP_WASSER_WARM_1 = change_value( D_DB_TEMP_WASSER_WARM_1 , data_container.D_DB_TEMP_WASSER_WARM_1, t1 ) t2 = ((ord(data[7])<<8)|ord(data[8]))/10.0 data_container.D_DB_TEMP_WASSER_WARM_2 = change_value( D_DB_TEMP_WASSER_WARM_2 , data_container.D_DB_TEMP_WASSER_WARM_2, t2 ) print "TEMP WARMWASSER:",t1, print "",t2 if ord(data[1]) == 0x3e and ord(data[2]) == 0x00: t1 = ord(data[7])/10.0 data_container.D_DB_TEMP_RAUM = change_value( D_DB_TEMP_RAUM , data_container.D_DB_TEMP_RAUM, t1 ) print "TEMP RAUM:",t1 if ord(data[0]) == 0x00 and ord(data[1]) == 0x06: print 2000+ord(data[3]),ord(data[4]),ord(data[6]),ord(data[5]),":",ord(data[7] ),":",ord(data[8]) dump(data,len(data)) Have Fun!
Datum:
> Ich hatte eigentlich vor mir irgendwas zu basteln um die RC30 zu > ersetzen um z.B. am PC die Heizprogramme schnell zu ändern ohne die > rumdreherrei an der RC30. Sehe jedenfalls nicht ein 240€uro für >Service-Key und Kabel und nochmal 480Euro für die Software auszugeben. Ich sniffe nur um den optimalen Punkt für den Einsatz der Holzheizung zu ermitteln. Steuerbefehle senden ist mir zu heiss ...
Datum:
Angehängte Dateien:> Würde mich für die Schaltung oder Platine auch interessieren. Natürlich > möchte ich auch mithelfen die Daten zu dekodieren und die Software zu > entwickeln... Ich habe grad 2 (mini) Platinen im der Queue. Es ist aber keine Potentialtrennung vorgesehen. Der Kern der Schaltung ist ein ADCMP370. Anbei noch der Schaltplan.
Datum:
Also hat eine weile gedauert den Text zu formatieren und zu verstehen. Das ist ja schon ein paar wichtige Daten. Beim selber senden geht es mir auch mehr um die Heizungsprogramme mal eben und schnell am PC zu erstellen. Mehr will ciha cuh garnicht in die Regelung eingreifen. Mal sehen ob es irgendwann klappt. Im Moment denke ich an einen Datenlogger mit USB-Anschluss zum Loggen der Daten den man parallel zur RC30 anklemmen kann. Vermutlich würde ich es dann als CSV-Datei abspeichern. Dafür nehme ich wohl einen PIC und ein fertigen USB-PortAdapter für den USB-Stick. Vielleicht kann man ja beide Schaltungen zusammenschmeissen.. Habe vor auch einen Datenlogger für die Heizung in JAVA zu schreiben. Mit modelledit.rc-sim.de habe ich ja schon mal ein paar Erfahrungen sammeln können. Vielleicht hat ja jemand Lust am Programm mitzuarbeiten. Gru0ß Ingo
Datum:
Wie kann man hier eigentlich die letzte "zitieren"? Also alles das was grün ist....
Datum:
> Vielleicht kann man ja beide Schaltungen zusammenschmeissen.. Da habe ich kein Interesse dran. Ich werde einen Netzwerkkontroller benutzen (z.Z. sendet noch ein PC die Daten an den Server) und die Platine einfach an das Board anschliessen. > Vermutlich würde ich > es dann als CSV-Datei abspeichern. Das kann ich dir bei der Datenmenge nicht empfehlen. Es sei denn dir reichen die letzten Tage und der Rest wird gelöscht. Ich speicher alles in die MYsql Datenbank und visualisiere mit Gnuplot die letzten 3 Tage. Für Berechnungen ist eine einfache SQL-Anweisung, die dann über die letzten Monate/Jahre geht, das Optimum. > Habe vor auch einen Datenlogger für die Heizung in JAVA zu schreiben. > Mit modelledit.rc-sim.de habe ich ja schon mal ein paar Erfahrungen > sammeln können. Vielleicht hat ja jemand Lust am Programm mitzuarbeiten. Ich bin da eher für eine automatisierte Lösung, die mir dann per Webinterface die Daten liefert die ich brauche ;-) Grüße.
Datum:
> Wie kann man hier eigentlich die letzte "zitieren"? Also alles das was > grün ist.... Einfach per Hand ein "> " vor die Zeilen schreiben oder im Forum anmelden.
Datum:
> Ich bin da eher für eine automatisierte Lösung, die mir dann per > Webinterface die Daten liefert die ich brauche ;-) Das hört sich ja super an... Aber dann muss man ja immer einen PC laufen lassen, oder gibt es da auch andere Möglichkeiten? Gruß Ingo
Datum:
> Das hört sich ja super an... Aber dann muss man ja immer einen PC laufen > lassen, oder gibt es da auch andere Möglichkeiten? Ein PC bzw. ein kleiner Rechner muss laufen.
Datum:
> Also hat eine weile gedauert den Text zu formatieren und zu verstehen. > Das ist ja schon ein paar wichtige Daten. Es ist Python, sollte aber keine Probleme beim Lesen geben. Ist halt rapid prototyping und die Rechner-Performance ist dafür soweit okay. Grüße.
Datum:
Angehängte Dateien:So, Platine ist gekommen. Ich stell mit vor die direkt ins Kabel zu bauen, sprich per Schrumpfschlauch zwischen den beiden Kabelenden zu integrieren.
Datum:
Hallo, dank der hier stehenden Informationen bin ich mit der Auswertung der Daten ein Stück vorwärts gekommen. Vielen Dank dafür. Problematisch sehe ich noch die Auswertung der Telegrammlänge. Das Messen der Pause zwischen 2 Telegrammen funktioniert mit dem WindowsPC nur unzuverlässig. Gibt es eine andere Möglichkeit, den Beginn und das Ende eines Telegramms festzustellen? Ich kann keine Start- oder Ende-Bytes erkennen. Wie machen die das? Irgendwelche Ideen? bye, Mario
Datum:
ich vermute mal dass es einen telegrammheader gibt, der die gesamtgrösse des telegramms definiert?
Datum:
Hallo, das mit der Laengenangabe im Header muesste man doch aber sehen. Hier mal ein mitgeschnittenes Telegramm mit den bisher ermittelten bzw vermuteten Bedeutungen zur Diskussion: 08 00 18 00 2F 01 C3 64 00 01 01 20 60 80 00 02 14 01 C1 00 01 0D 30 59 00 CC 00 00 00 F7 00 Byte0: Absenderkennung Byte1: Byte2: Funktionstyp ? Byte3: Byte4: Kesseltemp.Sollwert Byte5+6: Kesseltemp. Istwert Byte7: vermutl.Betriebsart Byte8+9: vermutl.Abgastemperatur Byte10+11: Brennerstatus Byte12+13+14: unbekannt Byte15+16: Warmwassertemp. Byte17+18: Rücklauftemp. Byte19+20: unbekannt Byte21: Wasserdruck Byte22+23: unbekannt Byte24+25: Anlagentemp. Byte26: unbekannt, immer 00 Byte27: vermutl.Betriebsart Byte28: unbekannt, immer 00 Byte29: Checksum Byte30: unbekannt, immer 00 Für die Länge des Telegramms ist kein passender Wert vorhanden. Irgendwelche Ideen?, Mario
Datum:
Sind Byte1 und Byte3 immer 00? Was kommt denn für ein Datensalat vor und nach dem Telegramm, kann es vielleicht sein dass das Protokoll ein stop und Startcode im Telegrammstil verschickt? Ich kann mir schwer vorstellen, dass Start/Stop eines Telegramms nur über Zeitfenster gemacht wird wenn die telegramme unterschiedlich lang sind. Leider habe ich jetzt aber auch nicht wirklich ne weitere Idee, vielleicht könnte mal jemand nen BUS dump über ein paar minuten hier reinposten, so dass ich mich damit auch mal befassen kann (habe ja bisher noch nicht die möglichkeit, die logamatic direkt anzuzapfen hier...) Gruss, Malte
Datum:
Sodele. Ich werde aus dem geposteten Dump von Malte (ich werd schizophren) noch nicht ganz schlau. Ich habe mich aber gerade nochmal über das Kabel zur Bedieneinheit (direkt an der Logamatic 2107) hergemacht. Bewaffnet mit Oszilloskop bin ich jetzt mal soweit gekommen und stelle das mal zum Brainstorming: Es geht um das 26polige Flachbandkabel, dort habe ich einen dritten Stecker draufgecrimpt und mal fleissig gemessen. Pinangaben beziehen sich auf den roten draht als Pin #1. Gemessen habe ich immer gegen Pin2 als GND
01 +5V - Versorgungsspannung? An der stelle steht ein "+" auf der Platine 02 GND 03 5V gemessen, vielleicht ein binärer E/A? 04 5V gemessen, vielleicht ein binärer E/A? 05 0V gemessen, vielleicht ein binärer E/A? 06 0V gemessen, vielleicht ein binärer E/A? 07 NC / Nicht an der Platine angeschlossen, gemessen 50hz 0,4V AC (also nix) 08 0V gemessen, vielleicht ein binärer E/A? 09 0V gemessen, vielleicht ein binärer E/A? 10 0V gemessen, vielleicht ein binärer E/A? 11 0V gemessen, vielleicht ein binärer E/A? 12 0V gemessen, vielleicht ein binärer E/A? 13 0V gemessen, vielleicht ein binärer E/A? 14 0V gemessen, vielleicht ein binärer E/A? 15 TTL Signal Low-Aktiv, feste Pulsbreite, unregelmässiges Signal, könnte Frame start interrupt sein 16 TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus 17 TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus 18 TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus 19 5V gemessen, vielleicht ein binärer E/A? 20 5V gemessen, vielleicht ein binärer E/A? 21 0V gemessen, vielleicht ein binärer E/A? 22 TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus 23 Datenübertragung Differential zu pin 24 24 Datenübertragung Differential zu pin 23 25 50hz sinus der fast wie dreieck aussieht 0,16V AC gemessen, ab und zu störungen messbar 26 NC / Nicht an der Platine angeschlossen, identisches Signal wie bei Pin 25 |
Meiner Meinung nach sollte man mal Augenmerk auf die Pins 15-18 legen. Mir ist beim Vergleichen verschiedener Signale zueinander (2. Kanal am Oszilloskop) auffgefallen, dass Flanken unterschiedlicher Signale immer gleichzeitig auftreten. Ich gehe deshalb davon aus, dass die Datenübertragung asynchron funktioniert, ich habe nirgendwo ein clock signal gefunden (feste frequenz). Das einzige Signal mit fester Pulsbreite ist Pin15, kann aber kein Clock sein, ich vermute aber dass mit diesem Signal ein Frame start auf anderen Datenleitungen (würde zu Pin16 passen) darstellt. Leider bin ich halt immer noch nicht im Besitz eines Logikanalyzers. Mehr aussagen kann ich deshalb nicht machen :( Gruss, Malte
Datum:
Also so weit ich gesehen habe werden immer 2Byte verschickt. das erste Byte ist die BUS-Adresse und das zweite meistens 0x00 oft kommen auch telegramme mit Werten von 0x80 oder größer mit dem zweiten Wert 0x00 gesendet werden. Vermute mal dass es wohl Kollisionen von zwei Busteilnehmern sind. Also wenn man was senden möchte werden vermutlich erst mal die zwei Byte geschickt und gleichzeitig mitgelesen. Wenn Beide Werte gleich sind wird weitergesendet. Oft treten auch nur 2Byte Telegramme auf wie 0x09 0x00 und 0x10 0x00. Sieht wohl ao aus als ob dass dann vielleicht ein "Hallo ich lebe noch" ist. Prüfsummen oder Telgrammlängen konnte ich nicht finden. Das dritte Byte scheint (meistens) der Telegrammtyp zu sein. Also müsste man sich eine kleine Tabelle anfertigen aus der man mit den zweiten bis vierten Byte die Telegrammlänge ablesen kann. @Malte: würde fast vermuten dass Pin 23 und 24 auch so eine Art BUS ähnlich dem Service-Stecker darstellen, oder? Gruß Ingo
Datum:
Ja, das hatte Rudi schon "vermutet" - er meint aber es waeren 50KHz signal. Kann ich nichts zu sagen, da ich nur einen 2kanal echtzeit LA habe (oszilloskop ;) Aber mich hat es eben nicht in ruhe gelassen, habe mich gerade nochmal im Heizraum vergnügt und versucht die logikpins zuzuordnen. Es hat sich jetzt herausgestellt, dass
09 Ausgang Heizkreis1 Pumpe (an=5V, aus=0V) |
Also kann man getrost davon ausgehen, dass es auch TTL Ausgänge (und vielleicht auch Eingänge) gibt. Speicherladepumpe konnte ich noch nicht ermitteln. Muss mal die Temperatur hochregeln, damit der schaltet. "Brenner An" ist kein digitaler Ausgang! Der Befehl scheint per BUS übermittelt zu werden, also sucht nicht danach. Ich versuche mal demnaechst, ob ich die TTL Datenleitung mittels MAX232 abhören kann. Gute Nacht, Malte
Datum:
Angehängte Dateien:Timing Log ? Kein Problem ! (ist bzip2 komprimiert und reiner text) Aufbau: C2CTIME TIME CHAR C2CTIME: char to char time (gemessene Zeit zwischen den Zeichen) C2CTIME: 1318 90 # timeout neue msg (char 0) C2CTIME: 104 00 # (char 1) C2CTIME: 218 10 # (char 2) C2CTIME: 218 00 # (char 3) C2CTIME: 1941 89 # timeout, zeichen ist gehört zu neuer msg 90 00 10 00 # log output (4 zeichen) usw. Leider kann ich bisher nur über die Zeit ein Frame erkennen. Es ist bestimmt etwas anders und die Module senden mit unterschiedlichen Zeiten (siehe dieses Beispiel). Der Timeout liegt bei 350. Grüße.
Datum:
Mario wrote: > Problematisch sehe ich noch die Auswertung der Telegrammlänge. Das > Messen der Pause zwischen 2 Telegrammen funktioniert mit dem WindowsPC > nur unzuverlässig. Ich habe es direkt mit einem uC gemessen (50mhz cortex) und dann die Daten mit der Zeit über die Serielle an einen PC geschickt. Die Zeiten sind alle im sub-ms bereich, also nicht praxistauglich für einem PC. Ich hoffe ja noch das es sich um eine CRC in den Daten handelt. Ich gehe davon aus das die 2 bytes ein Modul ansprechen und dann dieses Modul in einer gewissen Zeit antwortet oder auch nicht. Evtl. liege ich da auch falsch. Grüße.
Datum:
Malte wrote: > Ich versuche mal demnaechst, ob ich die TTL Datenleitung mittels MAX232 > abhören kann. Ich werde parallel per uC über den ADC die Daten sampeln. Leider nur 1 Kanal, sollte aber auch etwas zu sehen und zu diskutieren geben. Ich habe evtl. am Fr. wieder einen "Termin" beim Kumpel der die Heizung sein eigen nennt ... Bei meinen vorherigen Tests mit dem Scope konnte ich leider keine Start und Stopbits erkennen. Grüße.
Datum:
Hallo, das Modul für die Logamatic 2107 ist ja das KM271 um eine serielle Schnittstelle zu erhalten. Vielleicht hat ja jemand so ein Modul und kann uns mal ein hochauflösendes Fotos schicken - vielleicht kann man dann erkennen welche Leitungen auf dem Bus benutzt werden und evtl sogar welche Hardware für die Pegelanpassung verwendet wird. Martin
Datum:
Also ich schaue mir mal Pin16 und 22 an. Da es sich dort um TTL Level handelt gehe ich fast schon davon aus, dass es sich um eine serielle kommunikation zwischen dem Bedienpanel und der Hauptplatine handelt. Wenn dem so ist hätten wir ja schon fast den jackpot. Pin23/24 sieht ja wirklich so aus wie du den ServiceKey beschrieben hast. Auch vom Bild auf dem skope her sieht es wie ein bus aus - ne weile ruhe und dann kurze bursts mit variabler pulsbreite. Aber mal zurück zum Protokoll: ich habe mir gerade mal die EBUS Spezifikation angeschaut, aber laut euren beiden BUS Logs hat das nicht viel damit zu tun: >ACK = 00h >NACK = FFh >SYN = AAh >QQ ZZ PB SB LEN DB1 DB2 DBn CRC (ACK) SYN @Malte Kippis: Deine beiden geposteten Logs sind schrott oder? Jedenfalls unterscheiden die sich gravierend von Rudi's Capture... Gruss, Malte
Datum:
Angehängte Dateien:Hallo, ich habe vor einiger Zeit die Busplatine mal durchgemessen. Hier meine Ergebnisse: K1 - Relayplatine und zur CPU K2 - FM241 - Mischer 1 1-15 2 1-8 3 1-19 4 1-12 5 + 6 1-9 7 1-6 8 1-3 9 1-18 10 1-2 11 - 12 1-13 K3 - FM242 - 2. Stufe (klein) 1 X 2 1-6 3 1-7 4 1-2 5 + 6 1-9 7 X 8 X 9 1-5 10 1-17 11 - 12 1-13 K4 - FM271 oder FM244 - Kommunikation oder Solar 1 1-13 (24V-) 3* 2 1-20 schwingt 3 1-16 4 1-14 5 1-12 2* 6 + 5V+ 7 1-9 (24V-)3* 8 1-10 siehe 20 schwingt 9 1-6 3* 10 1-4 11 1-2 3* 12 - - unten -? oben +? - = - + = 5V+ 1-9 = 24V+ 1-13= 24V- Kollektorfühler FSK unteren Speicherfühler FSS Martin
Datum:
Hallo, hiermit müsste sich ja feststellen lassen welche Pinne auf dem Flachbandkabel auch an den Steckplatz K4 gehen (siehe Malte Bayers Messungen) - ich sehe da im Moment 1-10 und 1-20 als Kanditaten. Leider hatte ich damals kein Scope zur Verfügung um genau zusehen wie das "Schwingen" aussieht. Evtl ist es ja ein einfacher RS485 auf RS232 Wandler. @Malte - vielleicht kannst du mal nachmessen welche Pinne des Flackbandkabels auf die Pinne 1-10 und 1-20 der Relay Platine gehen die auf die Bus Platine geht. Martin
Datum:
Hallo, >Aber mal zurück zum Protokoll: ich habe mir gerade mal die EBUS >Spezifikation angeschaut, aber laut euren beiden BUS Logs hat das nicht >viel damit zu tun: Die Ausgabe des Service-Keys den man bei Buderus kaufen kann ist auch komplett anders und ähnlich Deinem Geposteten LOG. Wenn man aber direkt an den Stecker geht und auf den BUS-hört kommen die geposteten Logs heraus. Der Service-Key (und wohl auch der RS232Gateway für den EMS-Bus) setzen dann die Befehle auf den BUS um. Ist also kein reiner Schnittstellenwandler. Vermutlich kommen auch deswegen die vielen 2Byte Telegramme > 0x80 am Anfang. Scheinen dann wohl Kollisionen zu sein. Am Service-Key wird man davon nichts mitbekommen. Gruß Ingo
Datum:
Angehängte Dateien:Ich habe den ServiceKey-Bus mal analog gemessen und eine wav-Datei erstellt. Die kann man sich sehr leicht mit audacity etc. anschauen. Evtl. kann nochmal jemand rüber schauen ob es wirklich mit uart 8n1 9600 ausgelesen werden kann oder ob es dort noch versteckte bits (ack/nack) gibt.
Datum:
Ich habe nochmal die Spec. vom Prozessor, bezüglich UART, gelesen und die Daten gesichtet. Der 8n1 9600 Mode ist okay. Das Nullbyte am Ende jeder Nachricht ist die Ende-Kennung bzw. ein UART Break Error. Es wird ein 0-Byte gesendet bei dem das Stopbit auf logisch 0 bleibt. Bei diesem Fehler wird vom Prozessor ein 0-Byte in den Bytestream eingefügt. Wird nach dem ersten Byte ein 0-Byte mit Stopbit 1 geschickt, folgen die Daten bis zum 0-Byte mit Stopbit 0. Die möglichen Transfermodis sehen also so aus: <ADDR> <0x00 (STOPBIT 1)> <DATA (STOPBIT 1)> <0x00 (STOPBIT 0)> <ADDR> <0x00 (STOPBIT 0)>
Datum:
Update: <ADDR> <0x00 (STOPBIT 1)> <DATA (STOPBIT 1)> <0x00 (STOPBIT 0)> <ADDR> <0x00 (STOPBIT 0)> <ADDR> TIMEOUT
Datum:
Anbei noch ein paar Frames die ich aus den analogen Daten extrahiert habe.
08 00 45 00 00 00 00 00 00 00 00 00 00 00 18 08 00 45 00 00 00 00 00 00 00 00 00 00 00 18 08 00 60 00 90 90 68 88 10 28 C0 80 5F 08 00 60 00 90 90 68 88 30 68 C0 80 4B 08 00 60 00 90 90 68 88 70 68 C0 80 43 08 00 60 00 90 90 68 88 90 A8 C0 80 6F 08 00 60 00 90 90 68 88 B0 68 C0 80 5B 08 00 60 00 90 90 68 88 D0 A8 C0 80 67 08 00 60 00 90 90 68 88 F0 E8 C0 80 73 08 00 7C 00 20 40 24 00 23 00 00 38 74 7C 00 00 26 88 E8 BD 08 00 7C 00 20 40 24 00 23 00 00 38 74 7C 00 00 26 88 E8 BD 08 00 7C 00 20 40 24 00 23 00 00 38 74 7C 00 00 26 88 E8 BD 08 00 7C 00 20 40 24 00 23 00 00 38 74 7C 00 00 26 88 E8 BD 08 00 7C 00 20 40 24 00 23 00 00 38 74 7C 00 00 26 88 E8 BD 08 00 C5 00 70 80 80 A9 08 00 C5 00 70 80 80 A9 08 00 C5 00 70 80 80 A9 08 00 C5 00 70 80 80 A9 08 00 C5 00 70 80 80 A9 08 00 C5 00 70 80 80 A9 08 00 C5 00 70 80 80 A9 08 10 58 00 E8 26 26 00 16 08 10 58 00 E8 26 26 00 16 08 10 58 00 E8 26 26 00 16 08 10 58 00 E8 26 26 00 16 08 10 58 00 E8 26 26 00 16 08 10 58 00 E8 26 26 00 16 08 10 58 00 E8 26 26 00 16 08 10 AC 00 88 88 0C 08 10 AC 00 88 88 0C 08 10 AC 00 88 88 0C 08 10 AC 00 88 88 0C 08 10 AC 00 88 88 0C 08 11 28 00 C0 76 08 11 28 00 C0 76 08 11 28 00 C0 76 08 11 28 00 C0 76 08 11 88 00 D8 46 08 11 88 0C 30 A8 08 11 88 18 D8 4A 08 11 88 24 18 94 08 11 88 30 D8 5E 10 00 18 00 E8 80 30 26 00 80 80 04 06 01 00 40 60 80 30 00 00 A8 0C 9A 00 33 00 00 00 28 10 00 18 00 E8 80 30 26 00 80 80 04 06 01 00 40 60 80 30 00 00 A8 0C 9A 00 33 00 00 00 28 10 00 18 00 E8 80 30 26 00 80 80 04 06 01 00 40 60 80 30 00 00 A8 0C 9A 00 33 00 00 00 28 10 00 18 00 E8 80 30 26 00 80 80 04 06 01 00 40 60 80 30 00 00 A8 0C 9A 00 33 00 00 00 28 10 00 18 00 E8 80 30 26 00 80 80 04 06 01 00 40 60 80 30 00 00 A8 0C 9A 00 33 00 00 00 28 10 00 18 00 E8 80 30 26 00 80 80 04 06 01 00 40 60 80 70 00 00 A8 0C 9A 00 33 00 00 00 3B 10 00 18 00 E8 80 30 26 00 80 80 04 06 01 00 40 A0 80 30 00 00 A8 0C 9A 00 33 00 00 00 69 10 00 18 00 E8 80 30 26 00 80 80 04 06 01 00 40 A0 80 30 00 00 A8 0C 9A 00 33 00 00 00 69 10 00 18 00 E8 80 30 26 00 80 80 04 06 01 00 40 A0 80 30 00 00 A8 0C 9A 00 33 00 00 00 69 10 00 18 00 E8 80 30 26 00 80 80 04 06 01 00 40 A0 80 30 00 00 A8 0C 9A 00 33 00 00 00 69 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 50 00 00 A8 0C 9A 00 33 00 00 00 75 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 50 00 00 A8 0C 9A 00 33 00 00 00 75 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 50 00 00 A8 0C 9A 00 33 00 00 00 75 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 50 00 00 A8 0C 9A 00 33 00 00 00 75 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 50 00 00 A8 0C 9A 00 33 00 00 00 75 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 A0 80 D0 00 00 A8 0C 9A 00 33 00 00 00 C2 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 30 00 00 A8 0C 9A 00 33 00 00 00 9D 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 30 00 00 A8 0C 9A 00 33 00 00 00 9D 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 30 00 00 A8 0C 9A 00 33 00 00 00 9D 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 30 00 00 A8 0C 9A 00 33 00 00 00 9D 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 D0 00 00 A8 0C 9A 00 33 00 00 00 39 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 D0 00 00 A8 0C 9A 00 33 00 00 00 39 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 D0 00 00 A8 0C 9A 00 33 00 00 00 39 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 D0 00 00 A8 0C 9A 00 33 00 00 00 39 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 D0 00 00 A8 0C 9A 00 33 00 00 00 39 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 D0 00 00 A8 0C 9A 00 33 00 00 00 39 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 D0 00 00 A8 0C 9A 00 33 00 00 00 39 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 D0 00 00 A8 0C 9A 00 33 00 00 00 39 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 D0 00 00 A8 0C 9A 00 33 00 00 00 39 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 D0 00 00 A8 0C 9A 00 33 00 00 00 39 10 00 18 00 E8 80 D0 26 00 80 80 04 06 01 00 40 A0 80 D0 00 00 A8 0C 9A 00 33 00 00 00 39 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 2C 00 2C 40 20 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 38 10 00 2C 00 2C 40 20 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 38 10 00 2C 00 2C 40 60 40 60 84 00 00 C0 00 80 26 AC 00 30 64 00 4D 10 00 2C 00 2C 40 60 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 0C 10 00 2C 00 2C 40 60 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 0C 10 00 2C 00 2C 40 A0 40 60 84 00 00 C0 00 80 26 AC 00 30 64 00 11 10 00 2C 00 2C 40 A0 40 60 84 00 00 C0 00 80 26 AC 00 30 64 00 11 10 00 2C 00 2C 40 A0 40 60 84 00 00 C0 00 80 26 AC 00 30 64 00 11 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50 10 00 98 00 00 5E 80 50 01 00 00 00 00 26 00 2D 94 90 67 BD 00 00 00 10 41 11 00 15 C0 00 10 00 98 00 00 5E 80 50 01 00 00 00 00 26 00 2D 94 90 67 BD 00 00 00 10 41 11 00 15 C0 00 10 00 98 00 00 5E 80 90 01 00 00 00 00 26 00 2D 94 90 67 BD 00 00 00 10 41 11 00 15 C0 3C 10 00 98 00 00 5E 80 90 01 00 00 00 00 26 00 2D 94 90 67 BD 00 00 00 10 41 11 00 15 C0 3C 10 00 98 00 00 5E 80 90 01 00 00 00 00 26 00 2D 94 90 67 BD 00 00 00 10 41 11 00 15 C0 3C 10 00 98 00 00 5E 80 90 01 00 00 00 00 26 00 2D 94 90 67 BD 00 00 00 10 41 11 00 15 C0 3C 10 00 98 00 00 5E 80 D0 01 00 00 00 00 26 00 2D 94 90 67 BD 00 00 00 10 41 11 00 15 C0 C7 10 00 98 00 00 DE 80 D0 01 00 00 00 00 26 00 2D 94 90 67 BD 00 00 00 10 41 11 00 15 C0 22 10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B 10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B 10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B 10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B 10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B 10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B 10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B 10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B 10 08 28 00 98 27 98 AF 10 08 28 00 98 27 A8 9F 10 08 28 00 98 27 D8 EF 10 08 28 00 98 27 E8 DF 10 08 88 00 4C 62 80 F0 91 90 08 D0 8C 00 00 00 9E 10 08 88 0C 4C 62 80 F0 91 E0 50 08 E4 00 00 00 12 10 08 88 18 4C 62 80 F0 91 E0 D0 B8 E0 00 00 00 BC 10 08 88 24 4C 62 80 F0 91 E0 88 88 6C 00 00 00 AB 10 08 88 30 4C 62 80 F0 91 E0 30 78 80 00 00 00 C9 |
Datum:
Update: <ADDR> <DATA (STOPBIT 1)> <0x00 (STOPBIT 0)> <ADDR> <0x00 (STOPBIT 0)> <ADDR> TIMEOUT
Datum:
@Malte Bayer Meinst du die mit deinen Pins 3 & 4 die Pinne die ich auf dem Bild gekennzeichnet habe ??? Beitrag "Re: Logamatic 2107 Schnittstelle" Dort kommen Daten, dauert aber eine kleine Ewigkeit. Das sind die 50KHz die ich gemessen habe !
Datum:
@Rudi, ja genau das Flachbandkabel meine ich. Du meinst aber Pins 23 und 24, der rote draht ist 1, nicht 26 ;) Auf dem Kabel gibt es noch TTL pegel Datenübertragung auf Pin 15 bis 18, die werde ich demnächst mal näher untersuchen, da ich momentan auch kein Material habe um das Differenzialsignal auszukoppeln. Ich bin sowieso ein TTL Mensch, bei 5V fühl ich mich wohl, kümmer du dich ruhig weiter um die anderen Signale, du hast da bestimmt viel mehr Ahnung von! :-) Im nachhinein bereue ich es glaube ich schon, dass ich so faul war und da ne Logamatic eingebaut habe - haette den Kessel ohne Steuerung bestellen sollen. Aber jetzt hat mich auch der Ehrgeiz gegriffen - das muss doch zu knacken sein. Auch wenn es total "unwirtschaftlich" ist, da Stunden an Zeit reinzuhauen, den Spass ist es mir wert, ausserdem lernt man ja nie aus, nich wahr? :-P Gruss & schoenes Wochenende, Malte
Datum:
Hallo Malte, vielleicht kannst du mal nachmessen welche Pinne des Flackbandkabels auf die Pinne 1-10 und 1-20 der Relay Platine gehen die auf die Bus Platine geht (siehe mein Bild oben). Danke. Martin
Datum:
> Aber jetzt hat mich auch der Ehrgeiz gegriffen - das muss doch zu > knacken sein. Auch wenn es total "unwirtschaftlich" ist, da Stunden an > Zeit reinzuhauen, den Spass ist es mir wert, ausserdem lernt man ja nie > aus, nich wahr? :-P Kommt drauf an was man mit den Daten anfängt. Mir geht es um die Kostenverteilung von Wasser und Heizung und dann per Holz die Heizkosten drücken. Da ich auch den Gaszähler angezapft habe, seh ich die Kosten mehr oder weniger direkt (der Gaszähler ist halt nur Mechanik). Ansonsten ist das schon etwas Arbeit die man dafür investieren muss. Wenn ich mir aber die Preise von diesem Zubehör anschaue dann hat es sich für mich bisher auf alle Fälle gelohnt. Geld und Lernfaktor.
Datum:
@Malte Bayer > die werde ich demnächst mal näher untersuchen, da ich momentan auch kein > Material habe um das Differenzialsignal auszukoppeln. Kannst du mal ein paar Infos zu dem Signal posten ? Welche Pegel zu GND ? Bei mir hat das Signal auf dem EMS-Bus einen Offset von 12V +-2.5V Signal. Hast du dort evtl. 12V und die Signalleitung mit dem 12V Offset ?
Datum:
@ Rudi: Pin 23 und 24 gegen GND im Ruhezustand +4,9V bei Datenübertragung fällt Spannung an beiden Pins zu unterschiedlichen Zeiten ab. Differenzspannung zwischen 23 und 24 bei Datenübertragung = +/- ca 3,8V Pulsabstand so wie ich das sehe ca 8 Mikrosekunden (bekomme ich nur mit der Hold on Trigger funktion halbwegs zu sehen). Also es ist doch nicht ganz das was du am Service key hast, gegen GND sind beide Leitungen entweder 4,9V oder irgendwas zwischen 0 und 1V. Wenn ich Pin23 als GND verwende und dann Pin24 messe bekomme ich Positive und negative Peaks, also bilden beide Leitungen zusammen eine AC Datenübertragung mit Pegel bei ca +/- 3,8V. @ Martin: Dein 1-10 und 1-20 ist exakt identisch mit Pin23 und Pin24 auf dem Flachbandkabel zwischen der Platine NM282 und dem Bedienpanel. (habe es mit dem Oszi verglichen, nicht mit durchgangsprüfer, so wahnsinnig bin ich dann doch nicht ;) @all: Die 2 TTL Signalübertragungen bringen mir bei allen Standardbaudraten über einen Max232 mit allen Kombinationen aus Stoppbits und parity nur müll an, scheinbar also keine asynchrone serielle Übertragung. (bin immer von 8bits ausgegangen). Update:
01 +5V - Versorgungsspannung? An der stelle steht ein "+" auf der Platine 02 GND 03 5V gemessen, vielleicht ein binärer E/A? 04 5V gemessen, vielleicht ein binärer E/A? 05 0V gemessen, vielleicht ein binärer E/A? 06 0V gemessen, vielleicht ein binärer E/A? 07 NC 08 0V gemessen, vielleicht ein binärer E/A? 09 Ausgang Heizkreis1 Pumpe (an=5V, aus=0V) 10 0V gemessen, vielleicht ein binärer E/A? 11 0V gemessen, vielleicht ein binärer E/A? 12 0V gemessen, vielleicht ein binärer E/A? 13 0V gemessen, vielleicht ein binärer E/A? 14 0V gemessen, vielleicht ein binärer E/A? 15 TTL Signal Low-Aktiv, feste Pulsbreite, unregelmässiges Signal, könnte Frame start interrupt sein 16 TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus 17 TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus 18 TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus 19 5V gemessen, vielleicht ein binärer E/A? 20 5V gemessen, vielleicht ein binärer E/A? 21 0V gemessen, vielleicht ein binärer E/A? 22 TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus 23 Datenübertragung Differential zu pin 24 24 Datenübertragung Differential zu pin 23 25 50hz sinus der fast wie dreieck aussieht 0,16V AC gemessen, ab und zu störungen messbar 26 NC |
Datum:
Hallo Rudi, >Ich habe den ServiceKey-Bus mal analog gemessen und eine wav-Datei >erstellt. Bei welcher Anlage/Steuerung hast Du die aufgezeichnet. >Anbei noch ein paar Frames die ich aus den analogen Daten extrahiert >habe. Na da warst Du aber Fleissig.... Oder hast Du da irgend ein Programm über die WAV-Datei laufen lassen die die Daten dekodiert hat? Denke da ist aber ein Fehler drin. Das LSB wird seriell als erstes übertragen. z.B. habe ich aus der Datei ein Telgrammanfang ermittelt der mit 08 00 18 00 97 01 0b 64... anfängt. Die Telegramme kann ich auch in meinem log auf dem COM-Port wiederfinden. Wenn ich dann LSB und MSB tausche komme ich auf ein Telegramm 10 00 18 00 E8 80 D0 26..... Habe dort auch dann beim letzten Byte eines Telegrammes das Stopbit 0 Seltsamerweise zeigt mein Programm auf der seriellen Schnittstelle keinen Fehler an obwohl das ja eigentlich ein Frameerror sein sollte. (HTerm 0.8.1) und würde auch gerne das über den Soundkarten Oszilloskop nachmessen. Aber irgendwie klappt das nicht. Hast Du noch irgend eine spezielle Schaltung gehabt um diese Datei aufzunehmen? Oder einfach nur mit der Soundkarte? Mein Laptop hat leider nur einen MIC-Eingang und kein Line-In Eingang. Dort konnte ich mit der Soundkarte kein vernünftiges Signal bekommen. nur kleine negative oder positive Hügelchen wenn das Signal von 0 auf 1 oder in die andere Richtung wechselt. Sollte man vielleicht vielleicht ein eigenen Thread für die 4000-Steuerung mit Service-Key aufmachen? Das hat ja eigentlich nichts mit der 2107 zu tun, oder? Gruß Ingo
Datum:
@IngoF > Bei welcher Anlage/Steuerung hast Du die aufgezeichnet. Bei der aus dem Bild: Beitrag "Re: Logamatic 2107 Schnittstelle" > Oder hast Du da irgend ein Programm über die WAV-Datei laufen lassen die > die Daten dekodiert hat? Ich konvertiere das Signal vom Bus auf 3V3-Pegel (siehe Schaltung) und bin dann mit einem ADC an das Signal gegangen. Ich habe mit 300K-Samples aufgezeichnet. Leider sind die Daten nicht wirklich analog, es wird nur auf 1V5 getriggert, ansonsten hätte ich die Daten nicht auf den PC bekommen. Die Rohdaten habe ich dann in eine wav gewandelt und mir mit audacity angeschaut. Der Parser ist über die Rohdaten gegangen und nicht über die wav-Datei. > Denke da ist aber ein Fehler drin. Das LSB wird seriell als erstes > übertragen. z.B. habe ich aus der Datei ein Telgrammanfang ermittelt der Das würde wohl auch meine glücklosen Versuche, die CRC zu berechnen, erklären. > Seltsamerweise zeigt mein Programm auf der seriellen Schnittstelle > keinen Fehler an obwohl das ja eigentlich ein Frameerror sein sollte. > (HTerm 0.8.1) und würde auch gerne das über den Soundkarten Oszilloskop > nachmessen. Aber irgendwie klappt das nicht. Ich habe mal andere Sachen mit dem Soundkarten Oszi gemessen, ging ganz gut wenn 48KHz ausreiched sind. Dieser Break-Fehler ist ja mehr oder weniger Hardwareabhängig. > Dort konnte ich mit der Soundkarte kein vernünftiges Signal bekommen. > nur kleine negative oder positive Hügelchen wenn das Signal von 0 auf 1 > oder in die andere Richtung wechselt. Das Signal kannst du so nicht messen, da es sich um ein DC-Signal handelt. Hinter dem Eingang kommt direkt ein Kondensator der nur den AC-Anteil an die Soundkarte weiterleitet. Ich habe mit einem cortex gemessen und dann über Netzwerk die Daten übertragen. Leider hat das Biest keine DMA und aus diesem Grund konnte ich keine echten Analog-Werte sampeln, da es die CPU nicht mehr geschafft hat die Daten zu übertragen. > Sollte man vielleicht vielleicht ein eigenen Thread für die > 4000-Steuerung mit Service-Key aufmachen? Das hat ja eigentlich nichts > mit der 2107 zu tun, oder? Warten wir erstmal ab was bei der 2107 am Bus anliegt.
Datum:
@Malte Bayer > Pin 23 und 24 gegen GND im Ruhezustand +4,9V bei Datenübertragung fällt > Spannung an beiden Pins zu unterschiedlichen Zeiten ab. > Differenzspannung zwischen 23 und 24 bei Datenübertragung = +/- ca 3,8V > Pulsabstand so wie ich das sehe ca 8 Mikrosekunden (bekomme ich nur mit > der Hold on Trigger funktion halbwegs zu sehen). Ich hatte damals diese beiden ganz gut messen können (zu GND). Wie schon gesagt habe ich dort die 50KHz Signal gemessen (20uS). Ich hoffe nächste Woche ist das Kabel bei der Heizung und dann kann ich das mal aufnehmen.
Datum:
Angehängte Dateien:Hallo Rudi, Also mit den Frameerror habe ich inzwischen nachvollziehen können. Dazu habe ich HTerm genommen und 9600 8N1 eingestellt. Am PC musste ich dann noch am FIFO-Interupt Trigger Level den Wert auf 1 stellen, damit nach jedem Byte ein Interrupt erzeugt wird. Wenn der Wert nicht verstellt wird gibt es nur Overflow-Errors. Die Roten Werte sind also dann nur noch die Frameerror. Wenn mehrere Werte hintereinander rot gekennzeichnet sind liegt dass daran dass die Werte zusammen mit einem 00-Byte mit Frameerror empfangen wurden. Also ist nicht alles Rote auch wirklich ein Frameerroe. Soweit ich sehen kann werden die Frameerrors nur erzeugt wenn Nach der Adresse keine Daten mehr kommen. man kann zwei 08-Telegramme sehen die hintereinander folgen. Hier kann man sehen (Statusleiste unten)dass dort ein Abstand von etwa 170ms kommt. >Leider sind die Daten nicht wirklich analog, es wird nur >auf 1V5 getriggert, ansonsten hätte ich die Daten nicht auf den PC >bekommen. Na das erklärt die super sauberen Flanken und absolut keine Störungen... Habe mich auch schon gewundert warum bei 100KHz-Samplingrate (laut Dateiinfo 100kHz/16Bit) dann nur die Übertragungsrate zwischen bei etwa 3600 Bit/s lag. Habe dann zum Spass mal zurückgerechnet und bin rechnerisch auf 278kHz gekommen. Hab sowas schon vermutet dass ein Kondensator der Übeltäter ist. Hatte dann vermutet dass der Line-In vielleicht nicht so einen Kondendator hat und es dann damit geklappt hätte. Gruß Ingo
Datum:
P.S.: noch vergessen: Die Zeit wird zwischen den beiden blau hervorgehobenen Bytes gemessen Am Anfang kommt nach allen zwei Bytes ein Frameerror nach einiger Zeit kommen nach auf einmal viel weniger Frameerrors. Vielleicht liegt das an Windows (Programmpriorität?) Wenn das also alles so stimmt wie es dort angezeigt wird kommen die 00 mit Frameerror direkt nach der Adresse wenn keine weiteren Daten gesendet werden. Alles was über >=0x80 ist könnte vielleicht eine Art Statusänderungen sein oder vielleicht Kollisionen. Aber in Deiner WAV-Datei sieht es eher so aus als ob das keine Kollisionen sind... Oder liege ich da falsch? Gruß Ingp
Datum:
Hallo, @Malte: kannst du mal ein Bild von dem differentiellen Signal hier einstellen (Zur Not Bild vom OsziSchirm)? Danke. Martin
Datum:
@IngoF > Soweit ich sehen kann werden die Frameerrors nur erzeugt wenn Nach der > Adresse keine Daten mehr kommen. Ja genau, siehe hier: Beitrag "Re: Logamatic 2107 Schnittstelle" Es gibt auch Adressen mit keiner 0. Das habe ich erstmal Timeout genannt, danach wird sehr lange (relativ) nichts auf dem Bus gesendet. > Na das erklärt die super sauberen Flanken und absolut keine Störungen... > Habe mich auch schon gewundert warum bei 100KHz-Samplingrate (laut > Dateiinfo 100kHz/16Bit) ;-) Beim Import habe ich zwar 300KHz angegeben, aber audacity hat es nach dem Import auf 100KHz gestellt. Scheint ein Bug zu sein. > Die Roten Werte sind also dann nur noch die Frameerror. Wenn mehrere > Werte hintereinander rot gekennzeichnet sind liegt dass daran dass die > Werte zusammen mit einem 00-Byte mit Frameerror empfangen wurden. Also > ist nicht alles Rote auch wirklich ein Frameerroe. Das liegt nur am FIFO. Habe ich im Datenblatt zum cortex auch gelesen. Es wird nur angeben das bei den Daten im FIFO ein Fehler aufgetreten ist, aber nicht bei welchem Byte. > Am Anfang kommt nach allen zwei Bytes ein Frameerror nach einiger Zeit > kommen nach auf einmal viel weniger Frameerrors. Vielleicht liegt das an > Windows (Programmpriorität?) Das kann ich dir nun nicht erklären, aber die Frameerrors sind definitiv auf dem Bus. Hast du schon Daten gesehen bei denen an zweiter Stelle keine 0 steht, wie bei meinen "falschen" Daten weiter oben (alle Bits gedreht) ? Die Adressen auf dem Bus zeigt dir die Anlage im Service Menu. Ich muss selbst nochmal schauen welche Adressen bei mir auf dem Bus liegen, es waren glaube ich 4 Geräte.
Datum:
Laut Servicemenü: 0x08 UBA3/MC10 0x09 BC10 0x10 RC30 Eigentlich habe ich bisher noch keine Daten gesehen bei der nach der Adresse keine 00 kommt. Allerdings habe ich auch kein Programm was mir die Arbeit abnimmt und die Daten oder telegramme decodiert. Vielleicht sollte ich mich mal ein daran machen... >Es gibt auch Adressen mit keiner 0. Das habe ich erstmal Timeout >genannt, danach wird sehr lange (relativ) nichts auf dem Bus gesendet. ja, die waren aber immer >=80 (Bit7 gesetzt) vielleicht ist das ja irgend ein Status von irgendwelchen Anlagenteilen.
Datum:
> Eigentlich habe ich bisher noch keine Daten gesehen bei der nach der > Adresse keine 00 kommt. Allerdings habe ich auch kein Programm was mir > die Arbeit abnimmt und die Daten oder telegramme decodiert. Wenn du auf deinem Rechner python installieren kannst, dann könnte ich dir ein paar Programmteile für die Kommunikation zukommen lassen. Da wir jetzt mehr oder weniger die Daten kennen, bräuchte man nicht unbedingt auf den Frame-Error achten. Wenn du dich für python entscheidest, dann brauchst du noch pyserial für die Kommunikation. Mit python ist es erstmal easy going ...
Datum:
Angehängte Dateien:Habe es inzwischen hinbekommen wie man sieht werden alle Telegramme mit einer 00 mit Stopbit 0 beendet. Der Bildschirmaufbau hat die Ergebnisse verfälscht. Wenn mann das Fenster so stark verkleinert dass nur noch die Schaltflächen [Clear received] und [Connect] werden die korrekten Werte angezeigt. nach jedem 08 00 kommt ein Zeilenumbruch. Jetzt kann man schon viel besser die Telegramme finden... Gruß Ingo
Datum:
Das sieht doch schon gut aus. Ich sehe da auch 10 00. Das würde die Theorie mit dem Status etwas über den Haufen werden. Ich behaupte einfach mal das der Bus ganz stumpf gepollt wird. Wenn ein Gerät etwas zu sagen hat dann antwortet es, ansonsten nicht.
Datum:
Angehängte Dateien:Also ich sehe hier Timeouts bei Adresse 0x11,0x18 und 0x19. Ich habe mal die ADC-Daten und den Parser angehängt. Der Parser is in python geschrieben. Dort werden die Bits ausgewertet und dann auf UART-Protokoll auf 8n1 gewandelt. Du kannst die Timeouts sehen, und den Rest der Daten. Daten mit nur einem Byte (<ADDR> <0x00>) werden nicht angezeigt. Die ADC-Daten sehen wie folgt aus. Ein Wert besteht aus 2 Bytes. Das erste Byte ist die Anzahl und das zweite Byte ist der Pegel (0/1).
Datum:
Im Script muss der Namen der Datei von 12345 auf data_adc.bin geändernt
werden ...
f = open("12345","r");
=>
f = open("data_adc.bin","r");
Datum:
@Rudi: Also bei mir kommt nachdem ich "12345" durch den Dateinamen ersetzt habe und das "Import Serial" gelöscht habe nur folgende Ausgabe:
out 11 timeout 2252 11 timeout 2252 19 timeout 2201 |
Wenn ich den Import nicht lösche wird rumgemeckert dass kein Modul Serial eristiert. Habe irgendwo pyserial gefunden und versucht zu installieren. meckert dann aber dass er win32file nicht findet..... Wusste nicht dass bei Windows XP schon automatisch Phyton mitgeliefert wird... Habe vorher eigentlich noch nie was von Phyton gehört...
Datum:
Evtl. hat ein Programm python installiert. Mit Windows wird es meines Wissens nicht mitgeliefert. Das Modul serial ist nur für die serielle Kommunikation gedacht. Ich habe es hier mit python 2.5 und 2.6 getestet und es funktioniert. Die Ausgabe sieht wie folgt aus:
out 11 timeout 2252 11 timeout 2252 19 timeout 2201 10 00 2C 00 2C 40 20 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 38 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 19 timeout 2251 19 timeout 2251 19 timeout 2252 19 timeout 2251 10 00 98 00 00 5E 80 90 01 00 00 00 00 26 00 2D 94 90 67 BD 00 00 00 10 41 11 00 15 C0 3C 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 11 timeout 2252 19 timeout 2151 11 timeout 2254 19 timeout 2153 19 timeout 2201 18 timeout 2251 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 11 timeout 2254 11 timeout 2254 08 00 C5 00 70 80 80 A9 08 10 58 00 E8 26 26 00 16 11 timeout 2252 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 08 00 60 00 90 90 68 88 70 68 C0 80 43 19 timeout 2251 19 timeout 2251 19 timeout 2251 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 19 timeout 2220 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 50 00 00 A8 0C 9A 00 33 00 00 00 75 08 00 7C 00 20 40 24 00 23 00 00 38 74 7C 00 00 26 88 E8 BD 08 10 AC 00 88 88 0C 18 timeout 2201 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 50 00 00 A8 0C 9A 00 33 00 00 00 75 11 timeout 2252 19 timeout 2151 19 timeout 2154 19 timeout 2202 19 timeout 2202 18 timeout 2200 19 timeout 2251 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 50 00 00 A8 0C 9A 00 33 00 00 00 75 19 timeout 2152 19 timeout 2251 18 timeout 2201 19 timeout 2253 19 timeout 2253 10 00 98 00 00 5E 80 90 01 00 00 00 00 26 00 2D 94 90 67 BD 00 00 00 10 41 11 00 15 C0 3C 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 50 00 00 A8 0C 9A 00 33 00 00 00 75 19 timeout 2152 08 00 45 00 00 00 00 00 00 00 00 00 00 00 18 11 timeout 2201 19 timeout 2201 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 19 timeout 2273 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 D0 00 00 A8 0C 9A 00 33 00 00 00 53 18 timeout 2202 19 timeout 2154 19 timeout 2202 08 00 C5 00 70 80 80 A9 08 10 58 00 E8 26 26 00 16 08 11 28 00 C0 76 10 08 28 00 98 27 D8 EF 10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9 10 00 18 00 E8 80 50 26 00 80 80 04 06 01 00 40 20 80 50 00 00 A8 0C 9A 00 33 00 00 00 75 19 timeout 2201 08 00 60 00 90 90 68 88 F0 E8 C0 80 73 19 timeout 2154 19 timeout 2203 18 timeout 2251 |
Datum:
Info zur Logomatic 2107 und Post Beitrag "Re: Logamatic 2107 Schnittstelle" Sockel K4 PIN 3,4,5,6 Gehen zum KM 271 RS232 Interface. Siehe hier: Beitrag "Re: Buderus Ecomatic 4000" Hier nochmal ein Aufruf: ------------------------ Falls jemand im Besitz der KM 271 Platine ist, würden wir uns sehr über hochauflösende Bilder von beiden Seiten freuen (Aufkleber bitte vorher entfernen) ! Danke!
Datum:
@IngoF Könnten die Daten evlt. als 9n1 geschickt werden ? Ich habe mir das Timing jetzt nicht angeschaut (ob das Stopbit dann noch passt), aber dann bräuchte man nicht über diesen Frame-Error Fehler gehen, sondern könnte direkt in den 9 Bit das Ende erkennen ???
Datum:
Nein, Das war ja auch mein erster Gedanke. Aber es werden 10Bit übertragen. (1 Startbit + 8Datenbit + 1 Stopbit). Und es gibt keine Möglichkeit wie 1 Startbit + 8 Datenbit + 1 Parity Mark + 0 Stopbit. Das Parity-Bit wird außerdem genauso ausgewertet wie der Frameerror. Es gibt auch nur 5-8 Bit Datenübertagung, 9 Bit ist nicht möglich. Werde mich mal an ein JAVA-Testprogramm machen...
Datum:
Zur 2107 Die Leitungen: 23 Datenübertragung Differential zu pin 24 24 Datenübertragung Differential zu pin 23 sind gegen GND jeweils eine Datenleitung und eine Clockleitung. Ich konnte heute Messungen aufnehmen und Oszi-Bilder machen. Diese beiden Signale tauchen auch auf K4 (für das RS232-Interface) auf. Die CLK ist etwa 44KHz und es werden (auf den ersten Blick) 9 oder 10 Bits verschickt.
Datum:
Angehängte Dateien:Moin, anbei die ersten Bilder ...
Datum:
Angehängte Dateien:Anbei eine Log-Datei. Ohne Clock etwas schwer zu dekodieren, aber die Daten sehen schonmal vielversprechend aus.
Datum:
Hallo Rudi, seeeeeehr gut! Sehe ich das richtig? Gültige Daten bei fallender Flanke? Wie hast du das .wav File aufgenommen? Evtl. Spanungsteiler vor eine Soundkarte und dann linke Kanal Takt und rechter Kanal Daten. Oder einen Mikrocontroller der bei fallender Flanke guckt was an DatenPin anliegt und dann eine 0 oder 1 seriell rausschreibt. Das ganze dann eine Zeitlang aufzeichnen. Meistens "sieht" man dann die logischen Blöcke schon in Hyperterminal oder einem anderen Terminalprogramm. Kommen denn ständig Daten oder ist da auch eine "längere" Pause zwischen Blöcken? Martin
Datum:
> Wie hast du das .wav File aufgenommen? Evtl. Spanungsteiler vor eine > Soundkarte und dann linke Kanal Takt und rechter Kanal Daten. Die Soundkarte ist zu langsam und kann nur analoge Daten aufnehmen. Die Schaltung siehe oben und dann per ADC augenommen, der ADC ist aber zu langsam wie man bei einigen Daten sieht. > Oder einen Mikrocontroller der bei fallender Flanke guckt was an > DatenPin anliegt und dann eine 0 oder 1 seriell rausschreibt. Das ganze > dann eine Zeitlang aufzeichnen. Meistens "sieht" man dann die logischen > Blöcke schon in Hyperterminal oder einem anderen Terminalprogramm. So will ich es nochmal versuchen, bei einer Bitrate von 44KHz sollten die Daten problemlos über eine 115KBaud serielle mit FIFO gehen. Dann ist die CLK wenigstens direkt mit bei. Zwischen den "Blöcken" ist eine längere Pause und wie man in der wav-Datei sieht, kommen die Daten kontinuierlich.
Datum:
Hallo Rudi, ich befürchte nur, da es sich um eine synchrone Übertragung handelt, sich der Dateineingang noch auf einem anderen Pin befindet als der Ausgang. Aber sicherlich auf einem der wieder nur auf K4 anliegt.... Martin
Datum:
> ich befürchte nur, da es sich um eine synchrone Übertragung handelt, > sich der Dateineingang noch auf einem anderen Pin befindet als der > Ausgang. > Aber sicherlich auf einem der wieder nur auf K4 anliegt.... Wenn es sich um einen Bus handelt, dann ist IN==OUT. Evtl. gibt es noch ein BUS-Select o.ä.. Wenn der Input nicht an alle Teilnehmer geleitet wird, dann könnte man den auch gleich weglassen.
Datum:
Hi! Ja, sieht echt verdammt nach einer synchronen Übertragung aus. Ich versuche in den nächsten Wochen mal, so ein RS232 Modul beim Heizungstechniker meines Vertrauens für ein paar Tage auszuleihen. Vielleicht reicht auch ein Blick auf ne andere Buderus Steuerung bei nem Kumpel (der hat ein RS232 Modul drin, ist keine Logamatic, aber vielleicht identisches Modul - man weiss ja nie). Melde mich wieder, wenn ich erkenntnisse habe! Gruss, Malte
Datum:
@IngoF Hast du schon die Vor- und Rücklauftemperatur für die Heizkreise ermitteln können ?
Datum:
Hallo, Nein, habe bisher noch nichts herausfinden können.. Hatte leider nicht allzuviel Zeit. Habe ein Programm in Java geschrieben um die Daten mitzuloggen. Allerdings scheint das Programm bisher zu lahm zu sein. Die Erfolgsrate bei der Erkennung des Break-Interrupt liegt noch bei 30% Aber habe noch eine Idee wie ich das vielleicht ändern könnte... Gruß Ingo
Datum:
Hi, ich habe nochmal geschaut, da die Heizung langsam wieder anspringt. Die Vorlauftemperatur habe ich gefunden, auch den Betriebsstundenzähler und einige andere Temperaturen. Ich werde mal alle gefunden Nachrichten sammeln und dann mit dem Serviceheft (Anzeige Servicemenue) verlgleichen und hier posten. Ich bin grad am überlegen ob ich den Levelkonverter direkt mit einer CPU, die wenigstens 2 UARTs hat, verheirate und dann an meinen Netzwerkkontroller gehe. Ich wollte eigentlich nicht 100% CPU-Last für die Break-Erkennung investieren. Ich hätte einen mega644p der 2 UARTs hat und den Schweinkram erledigen kann ;-) Was hast du dir gedacht ? Grüße.
Datum:
Also hab es noch mal ausprobiert. Die Break-Interupt Auswertung mit Java ist unmöglich. Ist eben einfach viiiiieeeeeel zu langsam dafür. Selbst wenn ich GUI weglasse und nur die Anzahl der Bytes vor dem letzten Break ausgebe haut das nicht hin. Hatte auch schon den Gedanken. Allerdings hatte ich da an einen PIC gedacht. Aber das macht wohl hier keiner. Ich würde evtl. noch niemals einen UART für die Auswertung nehmen, nur zum senden zum PC (mit mehr Dampf als die 9600Bit/s.) Als Option würde sich der STI101 anbieten (USB-Stick Interface mit RS232/I2C) wenn man keinen Server hat oder haben möchte. Ich würde aus den 12V +- 2,5V die Speisung notfalls mit einen 7805 herstellen. An dem BUS-Abgriff würde ich vorschlagen einen simplen Spannungsteiler zu nehmen und dann mit einem CMOS-Schmitt-Trigger das Signal auf den Controller zur Auswertung geben. OP würde auch gehen. Vielleicht noch eine galvanische Trennung mit Optokoppler oder ähnlichem an der RS232 zum PC. Vielleicht könnte ich mich auch mit einem AVR anfreunden. Allerdings dann mit Assembler weil ich kein C programmieren kann und es schneller ist. Allerdings bräuchte ich dann die komplette Entwicklungsumgebung inkl. Controller. Als Simulator müsste auch AVR-Studio gehen, oder gibt es was besseres dafür? Gruß Ingo
Datum:
>und dann an meinen Netzwerkkontroller gehe.
habe ich glatt überlesen? Wie hast Du Dir dass denn vorgestellt? Wäre
natürlich super eine Verbindung über Netzwerk z.B. auf eine Festplatte
zu loggen. Aber vermutlich hast Du Dir noch eine Software auf dem Server
vorgestellt die dass übernimmt, oder?
Dann wäre man wieder beim "Server-Problem" wollte eigentlich keinen
Rechner nur für die Heizung mitlaufen lassen.
Gruß
Ingo
Datum:
Hi, schau dir mal den ADCMP370 an. Als Empfänger ist der soweit okay (läuft hier bereits). Zwecks Abgriff der 12V als Stromversorgung: ich habe keinen Plan was man dort abzapfen kann, aus diesem Grund möchte ich in diese Richtung auch nicht weiterdenken. Vor dem ADCMP370 ein Opto wäre okay, wenn es überhaupt möglicht ist, wäre aber auch mein Wunsch. Damit das nicht eine eierlgende Wollmichsau wird würde ich folgendes vorschlagen: HEIZUNG <-> MODUL OPTO <-> MODUL WANDLER <-> MODUL SKLAVE <-> MODUL KNECHT <-> MODUL AUSWERTUNG Module: OPTO : galvanische Trennung WANDLER : level shifter SKLAVE : Erkennung der Nachrichten (anhand des Breaks und Aufbereitung der Daten) KNECHT : Empfang der Daten vom Sklaven und redundanz Check bzw. Empfang von anderen (nicht CPU lastigen) Sensordaten AUSWERTUNG: wie immer man das auch machen möchte Ich habe das Modul: WANDLER (ADCMP370) , KNECHT cortex (geht noch über die Zeit, siehe andere Postings) / Laptop (Empfang der Daten vom KNECHT und Weiterleitung per WLAN an Modul AUSWERTUNG) und AUSWERTUNG (SERVER) Web-Interface/Datenbank OPTO und WANDLER sind wohl erstmal Notlösungen oder nicht vorhanden. Für den SKLAVEN kann ich mir eine einfache CPU vorstellen (PIC,AVR nur einfach mit einer UART-BREAK-Erkennung und einer Schnittstelle zur Anbindung an den KNECHT (UART/SPI/usw. (I2C ist zu CPU-lastig)). Das Modul SKLAVE hat nur die Aufgabe der Break-Erkennung und der Weiterleitung. Der KNECHT wird bei mir ein M3 mit Netzwerk und SD-Karte sein. Der sendet die Daten an meinen Server, der die Daten auswertet/visualisiert. Wenn der Server nicht erreichbar ist werden die Daten auf SD-Karte gespeichert und später verschickt. So sieht mein Plan aus. Meine für die Zukunft vorhandenen Module: OPTO --- nicht vorhanden WANDLER (ADCMP370) --- läuft SKLAVE (evtl. avr644p) --- in Gebrauch, für Aufgabe diese ungetestet KNECHT (cortex LM3S8938) --- Prototyp läuft, für diese Aufgabe ungetestet AUSWERTUNG (server) --- läuft
Datum:
Hallo Rudi, kannst Du die erkannten Werte zum Vergleich mal posten (siehe meine Nachricht vom 16.9.09)? Danke, Mario
Datum:
Angehängte Dateien:
# 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
# 08 10 14 00 1A 2C 8B E2 00
if ord(data[0]) == 0x08 and ord(data[1]) == 0x10 and ord(data[2]) == 0x14:
t1 = (ord(data[4])<<16) | (ord(data[5])<<8) | ord(data[6])
t1 = t1 / 60
print "Betriebsstunden:",t1
|
Die Minuten müssen dann noch nach 60 umgerechnet werden ...
# 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
# 08 00 18 00 22 01 31 64 00 01 01 20 60 80 00 01 D8 01 32 00 00 15 30 59 00 CC 00 00 00 77
if ord(data[0]) == 0x08 and ord(data[2]) == 0x18:
t1 = ((ord(data[5])<<8)|ord(data[6]))/10.0
data_container.D_DB_TEMP_KESSEL = change_value( D_DB_TEMP_KESSEL , data_container.D_DB_TEMP_KESSEL, t1 )
t2 = ord(data[11])
data_container.D_DB_CIRC = change_value( D_DB_CIRC , data_container.D_DB_CIRC, t2 )
t3 = ord(data[21])/10.0
data_container.D_DB_BAR = change_value( D_DB_BAR , data_container.D_DB_BAR, t3 )
t4 = ((ord(data[15])<<8)|ord(data[16]))/10.0
data_container.D_DB_TEMP_U1 = change_value( D_DB_TEMP_U1 , data_container.D_DB_TEMP_U1, t4 )
t5 = ((ord(data[17])<<8)|ord(data[18]))/10.0
data_container.D_DB_TEMP_U2 = change_value( D_DB_TEMP_U2 , data_container.D_DB_TEMP_U2, t5 )
# HK1 Vorlauf
t6 = ord(data[4])*1.0
data_container.D_DB_TEMP_HK1_VL = change_value( D_DB_TEMP_HK1_VL , data_container.D_DB_TEMP_HK1_VL, t6 )
|
Dort sind 3 neue Temperaturen, 2 unbekannte, sind offensichtlich Mittelwerter o.s.ä..
# 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
# 08 00 19 00 00 7D 01 31 80 00 00 00 00 64 00 B4 9A 09 E9 CE 00 00 00 08 82 A0 00 A8 43 16 00
if ord(data[0]) == 0x08 and ord(data[2]) == 0x19:
t1 = ((ord(data[4])<<8)|ord(data[5]))/10.0
t2 = ((ord(data[6])<<8)|ord(data[7]))/10.0
# brenner starts
t3 = ((ord(data[15])<<8)|ord(data[16]))
data_container.D_DB_TEMP_AUSSEN = change_value( D_DB_TEMP_AUSSEN , data_container.D_DB_TEMP_AUSSEN, t1 )
data_container.D_DB_TEMP_U3 = change_value( D_DB_TEMP_U3 , data_container.D_DB_TEMP_U3, t2 )
|
Hier die Brennerstarts (evtl. 3 bytes) und eine neue Temp. Die unbekannten Temperaturen sind wohl alles Mittelwerte. Z.Z. geht es langsam los mit der Heizung (siehe Bild).
Datum:
Hallo Rudi, Habe mich mal ein wenig über die Komponenten informiert. Hört sich ja alles sehr gut an. Vielleicht sollte man noch einen kleineren "sklaven" nehmen... Der avr644p hat, wenn ich da richtig liege, 40 Pins. da müsste doch ein ATtiny2313 oder ähnliches reichen, oder? Kann mann den Cortex M3 auch über den USBprog programmieren, oder wie programmierst Du den. Hast Du bis jetzt eine selbstentwickelte Schaltung oder eine eingekaufte? Also wenn ich was helfen kann, dann bin ich dabei... Gruß Ingo
Datum:
Würde den Sklaven inkl. Wandler am liebsten auf eine eigene Platine packen oder zumindest einen Steckplatz dafür vorsehen. Dann kann man evtl hinterher noch die Platine gegen eine Sende/Empfangsplatine austauschen falls es irgendwann mal oweit sein könnte. Ein Steckplatz für ein einfache 2 oder 4 zeiliges LCD-Display mit Controller könnte man auch einplanen. Da würden doch bestimmt ein paar Pins für freibleiben. Außerdem könnte man dann noch ein paar Platinen mehr machen und vür andere Funktionen gebrauchen. Hätte bestimmt ein paar Anschlussprojekte... Womit hast Du denn die Platinen geroutet? Die Auswertung würde ich dann aber vermutlich hinterher noch in dem Cortex reinpacken. Man könnte Werte dann abspeichern oder senden wenn sie sich geändert haben. würde vermutlich das Datenvolumen doch ein wenig reduzieren. Aber darum kann man sich noch gedanken machen wenn erst mal alles läuft. Gruß Ingo
Datum:
Leider noch nichts neues wegen dem KM271. War eben nochmal dran und habe mir mal die freien Anschlüsse angesehen. Da gibts noch 2 Klemmen "BF" wo man das "BFU" anschliessen kann. Benutzer Fernbedienung oder sowas. An den Klemmen liegt nur eine Versorgungsspannung an, es wird nichts gesendet. Scheinbar ist dann die BFU an dem Anschluss "master". Also auch uninteressant wenn man das Gerät nicht zur Hand hat. Habe eben auch nochmal verzweifelt nach Bildern von der KM271 gesucht, aber die Produktbilder die man findet sind so klein, dass man nichts erkennen kann. Scheint wohl absicht zu sein. Ich versuche doch mal, leihweise an so ein Modul zu kommen. Gruss, Malte
Datum:
Angehängte Dateien:Hallo Rudi, ich habe Deine und meine Infos zum Aufbau der Datentelegramme mal als Diskussionsgrundlage in einer Excel-Tabelle dargestellt. Je Tabellenblatt ist ein Telegramm im Aufbau mit den bekannten, vermuteten und unbekannten Werten aufgeschlüsselt. Es sind jeweils die Werte mehrer Tage eingetragen. Deshalb ist die Tabelle auch ziemlich groß geworden (7,7 MB als ZIP). Ich freue mich auf rege Diskussion. Mario
Datum:
@IngoF > Würde den Sklaven inkl. Wandler am liebsten auf eine eigene Platine > packen oder zumindest einen Steckplatz dafür vorsehen. Dann kann man > evtl hinterher noch die Platine gegen eine Sende/Empfangsplatine > austauschen falls es irgendwann mal oweit sein könnte. Ja, das habe ich mir auch überlegt, bin aber durch die Datenübertragung der 2107 erstmal von ab. Der Opto-Kram bräuchte den ADCMP370, einen LDO (5V) und dann den Optokoppler, dann hat man das sauber getrennt und hat hinter dem Opto. direkt das richtige Level für die Auswertung. Optokoppler für analoge Signale sind mir zu teuer, auch aus diesem Grund der LDO/LinearRegler. Eine Schaltung mit OPs vor dem Opto. wäre auch möglich, aber da werden, meiner Meinung nach, mehr Bauteile benötigt. Für die 2107 bräuchte man nur den Opto., aber dann zwei mal, die Signale haben schon 5V Level. Auf dem EMS-Bus haben wir nur 9600Baud, die per Hardware empfangen werden können, auf dem Bus der 2107 muß alles erstmal per Software empfangen werden und das bei einer relativ hohen Frequenz. Schon wegen der Software würde ich bei beiden Lösungen eine CPU benutzen wollen. Ich könnte eine Tüte Mega8 bekommen, dann stauben die nicht ein und laufen mal ;-). Ob die UART die Break-Erkennung hat kann ich jetzt nicht sagen, müsste ich mal im Datenblatt schauen. Für die Kommunikation wäre I2C nicht schlecht, dann könnte man weitere externe Module direkt an den Bus klemmen und gut. Multi-Master ist nicht weiter wild. > Ein Steckplatz > für ein einfache 2 oder 4 zeiliges LCD-Display mit Controller könnte man > auch einplanen. Da würden doch bestimmt ein paar Pins für freibleiben. > Außerdem könnte man dann noch ein paar Platinen mehr machen und vür > andere Funktionen gebrauchen. Hätte bestimmt ein paar > Anschlussprojekte... Ja, das leidige Steckverbinderproblem ... ;-) > Womit hast Du denn die Platinen geroutet? Eagle. > Die Auswertung würde ich dann aber vermutlich hinterher noch in dem > Cortex reinpacken. Man könnte Werte dann abspeichern oder senden wenn > sie sich geändert haben. würde vermutlich das Datenvolumen doch ein > wenig reduzieren. Aber darum kann man sich noch gedanken machen wenn > erst mal alles läuft. Auf alle Fälle, anders mache ich es auch nicht. 100x die gleiche Temperatur mit einem anderen Zeitstempel wird nicht wirklich benötigt. Wo und wie die Auswertung läuft ist erstmal nebensächlich.
Datum:
@Mario Nicht schlecht, obwohl es Excel ist ;-) Hier ein paar Änderungen: MSG 08 00 18 25 : Fehlercode 07 : maximal Leistung (in %) (muss aber nicht sein) 08 : aktuelle Leistung (in %) 20 : evtl. auch 19 ist der Flammenstrom in uA (den Wert durch 10 teilen)
Datum:
@Rudi Danke, habe Deine Änderungen gleich übernommen. War nachvollziehbar. Zum Auswerten und Suchen nehme ich gern Excel. Das Programm selbst ist dann in Delphi (immer noch das Übersichtlichste). Mir fehlen noch die Temperaturen der Heizkreise (habe 2) und der Mischer. Hast Du eine Idee, wo ich suchen könnte? bye, Mario
Datum:
@Mario Ich schau eigentlich auch nur ins Service-Menu auf die Werte und versuche diese durch die Heizung zu verändern und dann im Datenstream zu finden. Ich rechne den dezimalen Wert in Hex um (X*1 und X*10 also 2 Werte) und dann suche ich den Wert im Stream. Dann wieder ändern usw.. Wie sieht eigentlich dein Hardwareaufbau aus ?
Datum:
@IngoF hab es wohl übersehen ... > Kann mann den Cortex M3 auch über den USBprog programmieren, oder wie > programmierst Du den. Hast Du bis jetzt eine selbstentwickelte Schaltung > oder eine eingekaufte? Wenn UBSprog einen ARM programmieren kann (JTAG) dann sollte es funktionieren. Ich benutze zum Programmieren einen Luminary clon (mit ftdi2232d/usb) und Flachbandkabel (siehe Beitrag "Re: Zeigt her Eure Kunstwerke !"). Die fetten Steckverbinder für das JTAG gehen mir ganz schön auf ... Ich habe das Board selbst erstellt. Die Preise bei Luminary sind zwar okay, keine Frage, aber von den Bauteilkosten + Platine (nicht die Arbeitsstunden) ist man selbst noch billiger und hat was man haben möchte. Das Board kann man auf eine Trägerplatte schrauben die sich z.B. in einem Gehäuse befindet. Ansonsten ist an dem Board nichts besonderes. Alle programmierbaren Pinne sind über die Steckverbinder zugänglich und mehr oder weniger sortiert. Beim Verpolschutz ist noch ein Bock drin, aber für diesen Zweck ist es erstmal nicht problematisch.
Datum:
Nachtrag: Der Mega8 erkennt die Frame-Errors.
Datum:
Die Frameerkennung per Mega8 funktioniert. Habe den mit seiner einen UART zwischen den Levelshifter und dem Cortex angeschlossen. Leider gibt es noch die Bustimeouts, die ich noch nicht auswerte.
Datum:
Angehängte Dateien:@ Rudi meine Hardware ist simpel. Entspricht dem Referenzlayout des eBus-Moduls mit angepassten Widerständen. Daran hängt der Serielle meines Servers. Die Erkennung der Timeouts zwischen den Telegrammen funktioniert ganz gut. Nur die kompletten Telegramme werden weiter verwendet. Die Variante mit einem Atmega ist natürlich das Beste. Habe hier noch ein WebCat-Board mit einem ATmega128 liegen, habe mich aber mangels C-Kenntnissen nicht daran versucht. Habe mich Heute den ganzen Tag mit SQL und gnuplot beschäftigt. Die Daten werden jetzt schön in einer MySQL-Datenbank gespeichert und über gnuplot angezeigt. Wie hast Du die Kurven in gnuplot geglättet? Bei mir sind noch Stufen zu sehen. Ich bin ja richtig erschrocken, wie oft meine Heizung den Brenner anschmeisst. Ich denke, die moduliert die Leistung, um die Brennerdauer zu verlängern und die Starts zu minimieren. Jetzt habe ich 6 Starts/h gezählt. Ist das normal? bye, Mario
Datum:
Angehängte Dateien:@Mario > ein WebCat-Board mit einem ATmega128 liegen, habe mich aber mangels > C-Kenntnissen nicht daran versucht. Der 128 sollte auch funktionieren. Wenn ich nächste Woche mal den Timeout ausmessen kann poste ich mal den kompletten simplen Source. Mein Oszi steht noch an der 2107 :-/ > Wie hast Du die Kurven in gnuplot geglättet? Bei mir sind noch Stufen zu > sehen. Bei dir sieht das nicht schlecht aus. Mein Kurven sind nicht geglättet. Kannst du mal dein Script posten ? Die Zusammenfassung am unteren Bildrand finde ich gut. Der Brenner geht nicht mit voller Leistung an, siehe die Werte weiter oben, und aus diesem Grund kann der auch mal öffters angehen. Die Solltemperatur, nach der internen Temperaturkurve, ist übrigens der HK1_VL-Wert und in den Daten auch so kantig. Das ist kein gemessener Wert sondern der ermittelte von der Heizung. Anbei noch mein Script für gnuplot, es wird direkt in ein Bild gewandelt und dann auf dem Server ins www-Verz. verschoben ...
Datum:
Angehängte Dateien:Nun die Daten für die 2107 mit Clock. Ich habe immer auf Level von CLK oder DATA getriggert. log_20091004.bin - Binärdaten - pro byte: bit0 CLK und bit1 DATA log_20091004.wav - die importierten Daten (alle Bytes verdoppelt) als WAV Viel Spass.
Datum:
Angehängte Dateien:Hier der geparste Bitstream. Der Zeilenumbruch kommt bei jeder Daten/Clockanomalie (Leveländerung auf den Daten ohne Clock).
Datum:
So sehen die Daten in etwa aus. 2 Byte anfrage und dann Anwort mit den Daten. Das letzte Byte scheint wieder diese ominöse CRC zu sein. Die Anfrage an 0xAC ist noch falsch geparst, evtl. stimmen die Daten absolut nicht ...
A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 A8 46 : A9 65 00 05 05 2D 01 9B A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 AA C7 : AB 78 0A 05 37 4B 00 0D AA CE : AB 28 0A 02 FF FF FF 1A A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 AC 0D : AD FF 00 65 65 65 65 7B A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 AA 65 : AB 32 00 31 00 34 00 9D AA 6C : AB 38 00 34 00 33 00 F3 A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 AA AB : AB 29 68 B0 31 A7 05 B0 AA B2 : AB 00 A7 C2 05 00 3F F3 AA B9 : AB 7E 7E 7E 8C 8C 8C 7F AA C0 : AB A7 83 65 65 65 65 3C A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 AA DC : AB 34 07 00 00 09 1D 21 AA E3 : AB 01 34 0B 19 00 0B F4 AA EA : AB 25 0F 34 0E 1D 01 72 AA F1 : AB 09 0B 16 34 13 16 25 AA F8 : AB 01 11 22 35 00 00 1A A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 AC 06 : AD 00 00 00 00 00 00 00 A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B AA FF : AB 00 00 AC 00 AD 00 00 00 00 00 00 |
Und hier mal auf eine Anfrage gefiltert:
AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 38 00 34 00 33 00 F3 AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 34 00 38 00 33 00 CF AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 31 00 34 00 32 00 EA AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 32 00 31 00 2B 00 74 AA 6C : AB 33 00 32 00 26 00 A9 AA 6C : AB 33 00 32 00 26 00 A9 AA 6C : AB 33 00 32 00 26 00 A9 AA 6C : AB 33 00 32 00 26 00 A9 AA 6C : AB 33 00 32 00 26 00 A9 AA 6C : AB 33 00 32 00 26 00 A9 AA 6C : AB 33 00 32 00 26 00 A9 AA 6C : AB 33 00 32 00 26 00 A9 AA 6C : AB 33 00 32 00 26 00 A9 |
Datum:
EMS: 10 00 A5 CC VV ... CC: 01 für Sprache, 0C Uhrkorrektur, 06 Gebäudeart VV: z.B. 00 deutsch, 01 NL 10 08 16 08 VV 14 VV Pumpennachlaufzeit
Datum:
Angehängte Dateien:@Rudi mit dem Quellcode für dem Atmega128, das wäre prima. Das Script für gnuplot habe ich beigefügt. Dieses ist aber noch nicht perfekt. Ich suche noch nach einer Möglichkeit, wie ich den Zeitraum, welcher ausgewertet werden soll, ändern kann. Bis jetzt lasse ich jedesmal die Scriptdatei mit Start- und Enddatum neu erzeugen. bye, Mario
Datum:
Angehängte Dateien:Moin, danke. > Ich suche noch nach einer Möglichkeit, wie ich den Zeitraum, welcher > ausgewertet werden soll, ändern kann. Bis jetzt lasse ich jedesmal die > Scriptdatei mit Start- und Enddatum neu erzeugen. Kommt drauf an wie. Dynamisch wird das etwas zäh und könnte dann evtl. über ajax laufen. Statisch kann ich dir die rrdtools empfehlen, dort gibt es aber nur eine eingeschränkte grafische Möglichkeit. Anbei mal der Gaszähler über rrdtools. Die Datenbank für die rrdtools erstelle ich übrigens jede Stunde neu, da ich noch keine Lust auf eine Timestamporgie hatte und rrdtool kein mysql unterstützt. Kann man aber auch eleganter lösen.
Datum:
Angehängte Dateien:> Die Variante mit einem Atmega ist natürlich das Beste. Habe hier noch > ein WebCat-Board mit einem ATmega128 liegen, habe mich aber mangels > C-Kenntnissen nicht daran versucht. Absolut keine ? Kompilieren und brennen geht aber ? > mit dem Quellcode für dem Atmega128, das wäre prima. siehe Anhang Kompiliert für den 128 (habe selbst keinen), sollte also laufen.
Datum:
@Mario Hier eine kleine Optimierung für das Skript und deine Datenbank. Du kannst die Werte aus der 08 00 18 (10/11) in einen 16 Bit-Wert konvertieren und dann bei Gnuplot einfach die Bits abfragen: decode_status(t,w) = ( (int(t)&int(w)) == 0) ? 0 : 1 plot "data_14.txt" using 1:(decode_status($2,64)) with boxes notitle Kann Gnuplot eigentlich auch mit Hexwerten etwas anfangen ? Ich habe bisher nicht dazu gefunden ?
Datum:
Angehängte Dateien:@Mario Ich habe deine Aufteilung in Gnuplot übernommen und denke das Bit 7 (0x40) vom Brennerstatus nicht richtig sein kann. Ich sehe da Aktivität ab 0 Uhr beim Brenner und der Pumpe im Warmwasserkreislauf ohne Gasverbrauch (die Heizung sollte um die Uhrzeit nicht an sein/Temperaturabsenkung). Kannst du das bestätigen ? Meine Bit-Masken sehen wie folgt aus (die 3 Diagramme unten): Zeile1: 8+4+1 Zeile2: 64 Zeile3: 32 Ich habe direkt 2 extra Temperatursensoren an den Vor-/Rücklauf der Holzheizung gehängt ;-) Der Testaufbau funktioniert soweit richtig gut.
Datum:
Angehängte Dateien:@Rudi erstmal vielen Dank für den Quellcode. Beim ersten Anschauen habe ich aber nicht viel verstanden. Ich bin scheinbar C-inkompatibel ;-) Ein erster Kompilierungsversuch mit GNU AVR-GCC (Bestandteil des EtherNut-Paketes/ Nut/Os) ist gescheitert. Ich werde es mir nochmal genauer anschauen müssen. In dem Paket Nut/Os gibt es einen Beispiel-Code, welcher eine RS232 auf Netzwerk ( per Telnet) umsetzt. Vielleicht könnte man darauf aufbauen? Dann wären die Daten gleich im Netzwerk und man braucht keine weitere serielle Schnittstelle. Ich habe den Quellcode mal angehangen. Zu deiner Vermutung Brennerstatus: das ist nach meiner Ansicht das Bit 2 (04H) aus dem Byte 11 des 08-00-18-Telegramms. Im Absenkbetrieb bleibt dieses bei mir auf "0". Das Bit 6 (40H) muss die Warmwasserbereitung sein. Ist immer auf "1", wenn Warmwasser bereitet wird. Nächtliche Aktivität habe ich auch alle paar Tage, da gegen 01:00 Uhr die thermische Desinfektion läuft. Dann geht die Warmwassertemperatur bis auf 75 Grad hoch. bye, Mario
Datum:
Angehängte Dateien:@Mario > Das Bit 6 (40H) muss die Warmwasserbereitung sein. Ist immer auf "1", > wenn Warmwasser bereitet wird. Nächtliche Aktivität habe ich auch alle > paar Tage, da gegen 01:00 Uhr die thermische Desinfektion läuft. Dann > geht die Warmwassertemperatur bis auf 75 Grad hoch. Die Desinfektion habe ich abgeschaltet, das bringt evtl. etwas, wenn das Wasser ein paar Wochen im Kessel steht. Wie im Bild zu sehen, ist das Flag eingeschaltet, aber es passiert nichts (kein Gas, keine Temperaturänderung). Muss ich mir die Tage nochmal genauer anschauen. > erstmal vielen Dank für den Quellcode. Beim ersten Anschauen habe ich > aber nicht viel verstanden. Ich bin scheinbar C-inkompatibel ;-) > Ein erster Kompilierungsversuch mit GNU AVR-GCC (Bestandteil des > EtherNut-Paketes/ Nut/Os) ist gescheitert. Ich werde es mir nochmal > genauer anschauen müssen. Ja, wenn du mir deine eingestellte CPU Geschwindigkeit sagst, dann kann ich das hier durchleiern. Ein Port mit LED wäre auch nicht schlecht. > In dem Paket Nut/Os gibt es einen Beispiel-Code, welcher eine RS232 auf > Netzwerk ( per Telnet) umsetzt. Vielleicht könnte man darauf aufbauen? > Dann wären die Daten gleich im Netzwerk und man braucht keine weitere > serielle Schnittstelle. Ich habe den Quellcode mal angehangen. Gleich ist gut ;-) Da braucht es mindestens einen Netzwerkkontroller. Ehrlich gesagt bin ich von Nut/OS nicht so begeistert.
Datum:
@Malte Bayer Bist du schon weiter gekommen ? Ich hänge noch über den Daten der 2107 und komm nicht weiter. Die Daten sehen etwa so aus (in chronologischer Reihenfolge):
A8 E7 : A9 01 FF FF 00 FF FF A8 A8 EE : A9 01 21 00 84 21 21 61 A8 F5 : A9 20 84 41 21 40 84 50 A8 FC : A9 61 21 60 84 AA 00 : AB 81 21 62 AA 03 : AB 80 8A A1 27 A0 8D D0 AA 0A : AB C1 2A C0 84 C2 90 CD AA 11 : AB C2 90 C2 90 C2 90 0B AA 18 : AB C2 90 C2 90 C2 90 0B AA 1F : AB C2 90 C2 90 C2 90 0B AA 26 : AB C2 90 C2 90 C2 90 0B AA 2D : AB C2 90 C2 90 C2 90 0B AA 34 : AB C2 90 C2 90 C2 90 0B AA 3B : AB C2 90 C2 90 C2 90 0B AA 42 : AB C2 90 C2 90 C2 90 0B AA 49 : AB C2 90 C2 90 C2 90 0B A8 1C : A9 03 01 05 65 00 05 B6 A8 0E : A9 65 00 05 05 2D 01 9B |
Nun könnte man ja meinen das es sich beim zweiten Byte um eine Adresse handelt. Wenn ja, dann ändern sich die Daten nach einer gewissen Zeit nicht mehr im Speicher. Es wird gesendet, aber so gut wie keine Änderungen. Falls noch jemand eine Idee hat !? ...
Datum:
Hallo, würde gerne bei der Decodierung mithelfen. Mit Java kann ich am PC die Daten nicht auseinanderhalten. Brauchbare Hardware habe ich auch nicht mehr. Die Brennersoftware bekomme ich nicht mehr zum laufen, und die Software die mit meinem Brenner funktioniert unterstützt meine PICs nicht. Muss also eigentlich wieder bei Null anfangen. Also Brenner kaufen und versuchen ob ich mit C klarkomme. Mit Assembler habe ich eigentlich weniger Probleme. Würde gerne mit Eagle eine Platine entwickeln mit der man dann evtl zusammen an der Software arbeiten könnte. Am liebsten würde ich den "Sklaven" austauschbar machen damit man evtl. nachträglich andere Bus-Systeme oder eben auch die Sendefunktion ünterstützen könnte. Die Idee mit der SD-Karte und Netzwerkanbindung ist schon mal genial. Dann kann die Platine fleissig Daten sammeln und man muss nicht immer einen PC laufen haben um die Daten zu loggen. Würde gerne auch einen Port für ein 4x20 LCD-Display einplanen damit die Platine entweder Daten anzeigen könnte oder eben auch noch für andere Projekte verwendbar ist. Vielleicht auch ein Tastaturport. Muss ja nicht alles am Anfang genutzt oder unterstützt werden. Dazu müssten wir uns für einen bestimmten "Sklaven", die andere Hardware und die Verbindung zwischen Cortex und dem Sklaven entscheiden. Würde die Platine mit Eagle entwerfen. @Rudi, kannst du mir einen Plan von deinem Cortex und dem ATmega zukommen lassen. @all wer hätte Interesse an so einer Platine? meine Mail: if38(at)arcor(punkt)de Gruß Ingo
Datum:
Hallo Ingo, > Die Brennersoftware bekomme ich nicht mehr zum laufen, und die Software > die mit meinem Brenner funktioniert unterstützt meine PICs nicht. Muss > also eigentlich wieder bei Null anfangen. Also Brenner kaufen und > versuchen ob ich mit C klarkomme. Mit Assembler habe ich eigentlich > weniger Probleme. Diese Probleme mit PIC, Brenner und Software hatte ich auch. Und weisst Du, was ich gemacht habe? Dieses Tutorial angeschaut: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial Dann ein Experimentierboard mit einem Atmega gekauft, welches Plug&Play am PC anschliessbar ist und es hat auf Anhieb funktioniert. Echt Klasse. Und nie wieder Assembler: Heute und morgen weiss jeder, wie er was in Assembler programmiert hat, aber übermorgen? Und dann noch Änderungen machen? C ist wirklich nicht schwierig und wahrlich keine Hexerei, da es Libraries und Demosourcen à gogo auf dem Internet gibt. Gruss Christian
Datum:
@ Rudi:
>Bist du schon weiter gekommen ? Ich hänge noch über den Daten der 2107 und komm
nicht weiter.
Nein, ist zum verrückt werden. Kumpel hat irgendeine uralt-asbach
buderus steuerung an der öltherme. Der vermeintliche D-9 Stecker hat
sich als D-15 herausgestellt, also wohl keine echte RS232.
Und an ein "leihweise" Modul komme ich nicht ran. knappe Antwort "kaufen
ja, leihen nein" ;-(
Habe inzwischen auch nochmal die restlichen Pins, die auch nur annähernd
nach TTL Signal aussehen, versucht mittels max232 zu untersuchen.
Aber egal welche baudrate startstop paritykonfiguration - es kommt
immer nur müll und frame errors ohne ende an.
Datum:
Hier noch ein HighRes-Bild vom ServiceKey: http://www.buderus.de/sixcms/media.php/1821/3743_L... http://www.buderus.de/Bilddatenbank/Regelsysteme/L... @Malte Bayer Lohnt sich eine Aufnahme mit dem ADC an den TTL Pins ? Ändern sich die Daten ? Ich habe die bisher nicht beachtet, da es auf dem Scope immer gleich aussieht. An einem habe ich eine Low-High-Low-Flanke mit etwas 27KHz gemessen, ist also nicht so fürchterlich schnell. Irgendwie müssen die Daten (Temperaturen etc.) an dieses Display **g**.
Datum:
Kann ich dir nicht sagen ob sich das lohnt - interessant zu analysieren wärs aber schon. Bin mir allerdings ziemlich sicher dass diese Pins die Datenübertragung vom/zum display sind. Wie gesagt, habe kein Speicheroszi - habe nur mit dem timing und dem Trigger rumgespielt - ob da immer der gleiche Dreck übertragen wird weiss ich nicht, schliesse ich aber aus (wäre ja unlogisch).
Datum:
>Dann ein Experimentierboard mit einem Atmega gekauft, welches Plug&Play >am PC anschliessbar ist und es hat auf Anhieb funktioniert. Echt Klasse. Wenn ich für mich selber eine Schaltung entwickele würde ich mir vermutlich einen neuen Microchip ICD2-clon kaufen und hätte auch keine Probleme mehr. Warum sollte ich wenn ich mich schon mit der Programmierung und den PICs vertraut gemacht habe aufeinmal einen neuen Controller nehmen, Neue Entwicklungsumgebung und mich in eine andere Programmiersprache einarbeiten? Die alten selbstgeschriebenen "Bibliotheken" kann man dann nicht mehr verwenden. >Und nie wieder Assembler: Heute und morgen weiss jeder, wie er was in >Assembler programmiert hat, aber übermorgen? Assembler hat auch Vorteile. Ist viel schneller als C-Code. Man weiß genau was der Controller macht und kann Programmspeicher sparen. Ob man jetzt in C, Assembler oder einer anderen Sprache screibt ist egal. Man hat in jeder Sprache probleme wenn man nach einer Pause alte Programme weiterentwickeln will und nichts im Quelltext dokumentiert hat. Wenn vernünftig dokumentiert wird ist das kein Problem. Ich hatte mir vorgestellt dass ich erstmal die Platine route und für alle interessierten fertigen lasse. Dazu brauch ich allerdings Informationen ob es beim Cortex und ATmega128 bleibt. Wichtig ist auch zu wissen wie die bisherige Software des ATmega128 aussieht. Wäre ja blöd wenn ich die bisher von der Software benutzten Anschlüsse für was anderes verplane und man mit der Software wieder von vorne anfangen kann. Wenn wir uns über die Hardware einig werden könnte ich loslegen. @Rudi welches Cortex-Board hast Du denn verwendet? Vielleicht kann ich dann ja irgendwie an den Schaltplan kommen. Gruß Ingo
Datum:
@IngoF > welches Cortex-Board hast Du denn verwendet? Vielleicht kann ich > dann ja irgendwie an den Schaltplan kommen. Ich benutze den LM3S8938. Für den 8962 gibt es ein Eval-Board und den Schaltplan, kannst du bei Luminary runterladen. Hast du schon über ein fertiges ARM9 Board nachgedacht ? Ich kenne jetzt nicht die Preise, aber sollte im Vergleich zum Aufwand und den Kosten billiger werden. Auf dem würde dann wohl auch die Grafikerstellung direkt laufen. Ich würde erstmal überlegen was man wofür braucht. Wenn du nur einen kleinen Netzwerkkontroller benutzt, kannst du nicht ohne zweiten Rechner die Grafiken erstellen. Braucht man das oder nicht. Wie sollen die Daten gespeichert und ausgewertet werden und wieviel Daten werden es ? usw. usf. Mir reicht ein Cortex, da ich die Daten nur weiterleite und ein paar Sensoren mit dem auswerte. Was brauchst du ? Beim Sklaven kann ich erstmal nichts sagen, ein MEGA8 mit rund 11MHz funktioniert am ServiceKey, ob der für die 2107 ausreicht weiss hier niemand.
Datum:
Also ich hatte daran gedacht dass ich ein Board erstellen würde was für alle Möglichkeiten funktionieren würde. Also Der Cortex mit Netztwerk und SD-Karte ist doch ideal. Die Daten sollten dann auf SD zwischen gespeichert werden und wenn ich meinen PC hochfahre werden Die Daten dann zum PC übertragen. Die Kommunikationsplatine mit dem Slave-Prozessor würde ich über einen Stecker miteinander verbinden. Dann ist es möglich die Platine für andere Bussysteme auszustauschen. Oder man kann hinterher doch eine zweiweg-Kommunikationsmodul einstecken. Da vermutlich noch genug Ein-/Ausgabepins frei sind würden die für ein LCD-Display heralten und vielleicht ein paar Taster. Die würden erst mal vernachlsääsigt und/oder nicht bestückt werden. Das Board könnte man auch noch für andere Entwicklungen verwenden. Denke ich hätte schon ein paar Ideen Ideal wäre es dann wenn mehrere sich hinterher eine Platine aufbauen wollen... Die Software könnte man zusammen entwickeln. (Software für PC, Slave und Master). So wie es aussieht ist ein großteil der Software ja schon geschrieben. (Visualisierung auf dem PC und Sammeln der Daten). Wäre doch am besten wenn man gemeinsam an einem Strang zieht und nicht mehrere Leute parallel das selbe Entwickeln/Programieren. Denke doch dass man auf einen Nenner bei der Software und Hardware kommen könnte, oder. Gruß Ingo
Datum:
@Malte Bayer: Wir bräuchten dann also noch Messungen an folgenden Pins mit Augenmerk auf die TTL Signale !? Ich würde die TTL-Signale einzeln analog messen und dann komplett als Set ohne Zeitinformationen. Die anderen würde ich dann als zwei Sets messen (max 8bit), wenn denn da was anliegt. Ein Pin hatte noch 12V oder mehr, muss ich dann nochmal messen. 09 Ausgang Heizkreis1 Pumpe (an=5V, aus=0V) 03 5V gemessen, vielleicht ein binärer E/A? 04 5V gemessen, vielleicht ein binärer E/A? 05 0V gemessen, vielleicht ein binärer E/A? 06 0V gemessen, vielleicht ein binärer E/A? 08 0V gemessen, vielleicht ein binärer E/A? 10 0V gemessen, vielleicht ein binärer E/A? 11 0V gemessen, vielleicht ein binärer E/A? 12 0V gemessen, vielleicht ein binärer E/A? 13 0V gemessen, vielleicht ein binärer E/A? 14 0V gemessen, vielleicht ein binärer E/A? 19 5V gemessen, vielleicht ein binärer E/A? 20 5V gemessen, vielleicht ein binärer E/A? 21 0V gemessen, vielleicht ein binärer E/A? 15 TTL Signal Low-Aktiv, feste Pulsbreite, unregelmässiges Signal, könnte Frame start interrupt sein 16 TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus 17 TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus 18 TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus 22 TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus
Datum:
@IngoF Ich habe das Board mit dem Cortex schon als Prototyp aufgebaut. Durch die Messungen an der 2107 konnte ich es auch schon mehr oder weniger testen. Mir ging es darum: so wenig wie möglich, so klein wie möglich und leicht adaptierbar. Also nur die CPU, Netzwerkbuchse, LDO, SD-Card, 2 LED, 2 Taster (einer Reset), Quarz (3 Stück). Das JTAG+UART ist über Flachbandkabel zugänglich und geht an einen JTAG-Luminary-Clone + UART. Alle nicht belegten Pins + JTAG + UART gehen mehr oder weniger sortiert an die Steckverbinder um die CPU. Damit kann ich (konnte ich bisher) alles anschliessen, von zu vielen speziellen Steckverbindern halte ich nicht viel, es sei denn das Board soll nur einem Zweck dienen. Bauteile sind fast alle 0402, das hat mir das Routing der Versorgung etwas erleichtert.
Datum:
@IngoF Nachtrag: Schau dir mal bei watterott das LM3S8962 Board an. Mit JTAG kommst du damit unter 100€, billiger wird ein Kleinserienselbstbau leider auch nicht :-/. Die Luminary-Boards haben alle JTAG onbaord und dann noch mehr (z.B. Display) und sind nicht unbedingt viel teurer. Ich will dich aber nicht davon abhalten ein Board selbst zu bauen ;-)
Datum:
@ Rudi:
16 TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus 22 TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus 23 Datenübertragung Differential zu pin 24 24 Datenübertragung Differential zu pin 23 |
Diese 4 Pins jeweils gegen GND scheinen interessant zu sein. Die anderen "TTL" dingens sind eher uninteressant, jetzt weiss ich auch was du meintest mit "ändert sich da was" ;) Die anderen Pins scheinen wirklich nur "1bit-EA" zu sein, also zeigen nur einen status an. Die ändern sich auch so gut wie gar nicht. Interessant wären 16+22 gleichzeitig recorden und 23+24 gleichzeitig. Zeitinformationen unwichtig, aber wichtig waere jeweils die beiden Pins nebeneinander sehen zu koennen (stereo wav?). Gruss, Malte
Datum:
@Malte: Die 23/24 habe ich nun schon lang und breit gemessen, da ist zwar ein Datenstream, der ändert sich mit der Zeit aber so gut wie nicht. Siehe meine diversen Posts weiter oben (auch mit wav usw.). Mit dem ADC geht leider nur ein Pin, aber mit der anderen Methode ohne Zeitinformation gleich 8 Signale.
Datum:
@Malte Bayer: Bei dir ist PIN 10 die Pumpe für WW. Hast du zufällig 2 HK ? Für den zweiten HK müsste es auch noch einen Pin geben. Die Flamme ist offensichtlich nicht auf dem Kabel. Ich habe alle 7 TTL-Pins mit 900KHz Auflösung aufgezeichnet, also 7 Signale mit Zeitinformation ! Die Datenaufbereitung könnte etwas dauern, es ist ein großer Datenhaufen angefallen ;-)
Datum:
Angehängte Dateien:Okay, ging schneller als gedacht. Die wesentlichen Leitungen sind 23/24. Die anderen Leitungen senden zyklisch die gleichen Sequenzen. Mein vermutetes Format aus den Daten ohne Clock stimmt nicht. Mit Clock sieht es schon ganz anders aus. Ich habe kurz mal drüber geschaut und es der Anfang der Frames sieht wohl so aus: 1. 9 Clocks und ein ACK oder NACK auf der Datenleitung ohne Clock 2. 9 Clocks und ein ACK oder NACK auf der Datenleitung ohne Clock 3. 8 Clocks mit "Daten" ... usw. Malte Bayer schaust du mal über die Daten ? Samplerate ist 900000Hz. Die Dateien sind jeweils 56MB groß und du kannst diese direkt in Audacity importieren.
Datum:
Angehängte Dateien:Bild vergessen ...
Datum:
<Mit JTAG kommst du damit unter 100€, billiger wird <ein Kleinserienselbstbau leider auch nicht :-/. Naja, dabei bleibt es ja nicht... Dann müsste ich ja noch eine Experimentierboard mit einem ATmega128 kaufen. Und dann muss man auch noch alles irgendwie verdrahten. Und irgendwann müsste man sowieso eine vernünftige Platine mit allen Komponenten darauf entwickeln. Also müsste man die Prozessoren noch mal kaufen. Auslöten ist ja grober Unfug. Einfach die drei Platinen zusammenklatschen und in ein Gehäuse stopfen ist ja auch nicht das beste. Platzsparend wäre das nicht wirklich. Also warum nicht gleich eine richtige Platine entwickeln und auf die beiden Experimentierplatinen verzichten. Einen Port für ein LCD-Diaplay ist ja kein Problem. notfalls einfach einen 8-Bit Steckverbinder um einige Signale erweitern (Kontrast, und zusätzliche Signale. wer den nicht haben will bestückt die Platine eben mit der 8-Bit-Standartwanne. Die LCD-Displays hat ja vermutlich sowieso jeder herumfleigen. Entweder aus alten Faxen, Telefonen, Druckern oder sonstwo her. Warum also nicht Deine Miniversion entwickeln mit einer leicht abgeänderten Portwanne? Den Schaltplan bei Luminary für dieses Board habe ich noch nicht gefunden. Hast Du evtl einen Link? Gruß Ingo
Datum:
@IngoF > Dann müsste ich ja noch eine Experimentierboard mit einem ATmega128 > kaufen. Und dann muss man auch noch alles irgendwie verdrahten. Und > irgendwann müsste man sowieso eine vernünftige Platine mit allen > Komponenten darauf entwickeln. Also müsste man die Prozessoren noch mal > kaufen. Auslöten ist ja grober Unfug. Glaub mir, es ist kein Unfug. Ein Platine mit alles Komponenten ist zu teuer und nie richtig für etwas anderes verwendbar. Das ist aber nur wahr, wenn man die Arbeit (die Stunden die man dort rein gesteckt hat) nicht auch für andere Projekte verwenden kann. Das ist bei einer Eier legenden Wollmilchsau nur bedingt möglich, alles viel zu speziell. > Einfach die drei Platinen zusammenklatschen und in ein Gehäuse stopfen > ist ja auch nicht das beste. Platzsparend wäre das nicht wirklich. Für den Heizungskeller oder wo auch immer die Heizung steht ist das kein Problem. Auf dem Tisch ist das "one in all" Board lästig. Ich will z.B. mehrere Temperatursensoren (werden wohl etwas mehr als 8) über Mini-USB (I2C) adaptieren, wenn ich die Steckverbinder alle auf dem Board platziere freut sich nur der Leiterplattenhersteller ... das mit den Modulen ist okay, es ist zwar noch nichts da, aber das ist meiner Meinung nach die richtige Richtung. > Also warum nicht gleich eine richtige Platine entwickeln und auf die > beiden Experimentierplatinen verzichten. Sagen wir mal eher Module und dann ist das Konzept wieder okay. > Einen Port für ein LCD-Diaplay ist ja kein Problem. notfalls einfach > einen 8-Bit Steckverbinder um einige Signale erweitern (Kontrast, und > zusätzliche Signale. wer den nicht haben will bestückt die Platine eben > mit der 8-Bit-Standartwanne. Die LCD-Displays hat ja vermutlich sowieso > jeder herumfleigen. Entweder aus alten Faxen, Telefonen, Druckern oder > sonstwo her. Ja, die Adaption von externen Komponenten macht eh jeder wie er Lust und Laune hat. > Warum also nicht Deine Miniversion entwickeln mit einer leicht > abgeänderten Portwanne? Ich mag die nicht. Die Kelchstifte sind so viel einfacher zu verdrahten ;-). Ich war aber auch mal deiner Meinung. > Den Schaltplan bei Luminary für dieses Board habe ich noch nicht > gefunden. Hast Du evtl einen Link? Kein Problem: Kits -> Evaluation Kits -> LM3S8962 Ethernet+CAN Evaluation Kits -> dann z.B.: EKC-LM3S8962 Evaluation Kit for CodeSourcery's G++ -> Stellaris LM3S8962 Evaluation Board User's Manual Sollte auch ohne Anmeldung funktionieren.
Datum:
Angehängte Dateien:@Malte Bayer: Anbei nochmal alle Dateien mit gleicher Auflösung: data_0.bin - Pin 22 data_1.bin - Pin 18 data_2.bin - Pin 17 data_3.bin - Pin 16 data_4.bin - Pin 15 data_5.bin - Pin 24 data_6.bin - Pin 23
Datum:
Angehängte Dateien:@Rudi heute habe ich Deinen C-Quellcode auf den Atmega128 angepasst und übersetzt. Als C-Unwissender hatte ich mich ja schon geoutet ;-). Mir fehlt noch das Verständnis, an welchem Port das TTL-Signal des EMS-Bus angeschlossen wird. In Deinem Code sehe ich immer nur, dass auf dem gleichen USART gelesen und geschrieben wird. Das kann ja aber nicht sein. Bitte hilf mir auf die Sprünge. Danke, Mario
Datum:
@Mario Das ist okay so. An RX der UART hängst du den EMS-Bus und beim TX kommen die aufbereiteten Daten raus. Da ich es mit einem MEGA8 probiert habe, der hat nur eine UART, habe ich das so gemacht ;-) Baudrate bleibt, aber es werden mehr Daten durch den Header und die Längenangabe. Wenn du noch genügend freien Speicher hast, kannst du den Puffer etwas vergrößern.
Datum:
@Mario Kannst du mal deinen avr-gcc Befehlszeile posten ? Du kannst dort direkt den Include-Pfad angeben und musst nicht die #include-Pfade in C anpassen.
Datum:
Angehängte Dateien:Anbei mal ein geparster Stream von der 2107 (Pin 23/24). Das zweite Byte habe ich extra noch als binär angegeben. Die zweite Zahl ist die Zeit in Sekunden. Beispiel:
DATA: 229.926741 A8 54 01010100 A9 : 3 1 5 101 1 5 166 DATA: 229.929876 A8 5B 01011011 A9 : 12 3 1 101 101 101 7 DATA: 229.933089 A8 62 01100010 A9 : 101 101 101 101 101 101 43 DATA: 229.936233 A8 69 01101001 A9 : 40 10 10 17 101 101 150 DATA: 229.939441 A8 70 01110000 A9 : 101 101 101 0 0 5 130 DATA: 230.353317 A8 1C 00011100 A9 : 3 1 5 101 0 5 182 DATA: 230.362004 A8 0E 00001110 A9 : 101 0 5 5 45 1 155 DATA: 230.365306 AA FF 11111111 AB : 0 0 172 0 DATA: 232.107041 A8 1C 00011100 A9 : 3 1 5 101 0 5 182 DATA: 232.110352 A8 0E 00001110 A9 : 101 0 5 5 45 1 155 DATA: 232.118099 AA FF 11111111 AB : 0 0 172 0 DATA: 233.875018 A8 1C 00011100 A9 : 3 1 5 101 0 5 182 DATA: 233.879603 A8 0E 00001110 A9 : 101 0 5 5 45 1 155 DATA: 233.887958 AA FF 11111111 AB : 0 0 172 0 DATA: 235.129592 A8 77 01110111 A9 : 246 101 1 6 101 101 2 DATA: 235.594916 A8 1C 00011100 A9 : 3 1 5 101 0 5 182 DATA: 235.615997 A8 0E 00001110 A9 : 101 0 5 5 45 1 155 DATA: 235.624123 AA FF 11111111 AB : 0 0 172 0 DATA: 236.928246 AA 50 01010000 AB : 101 101 101 101 101 1 7 DATA: 236.930597 AA 57 01010111 AB : 101 251 40 43 60 101 140 DATA: 236.933801 AA 5E 01011110 AB : 2 101 101 1 101 2 11 DATA: 237.315292 A8 1C 00011100 A9 : 3 1 5 101 0 5 182 DATA: 237.368396 A8 0E 00001110 A9 : 101 0 5 5 45 1 155 |
Datum:
@Rudi Nach einem langen Wochenende (regnerisch und kalt) läuft der Atmega128 mit Deinem Programm am EMS-Bus der Heizung (RC35). Nochmal Danke für die Hilfe. Jetzt lassen sich die Daten viel leichter auswerten. Dem werde ich mich mal die nächste Zeit widmen. Mario
Datum:
@Mario Da ich auch eine RC35 habe und irgendwie in diesem ganzen langen Thread den Überblick verloren habe, wollte ich fragen, was denn Du mit Deinem Atmega128 alles machen kannst oder ist das immer noch die Versuchsphase, die Daten zu entziffern? Gruss Christian
Datum:
steh doch alles weiter oben
Datum:
@Hennessy Der Atmega liest die Daten auf dem EMS-Bus, erkennt das Ende eines Telegramms und sendet das Telegramm mit Start- und Endzeichen sowie Längenangabe an den PC (Dank der super Hilfe durch Rudi). Die Telegrammaufzeichnung nur mit dem PC hat sich als zu langsam herausgestellt. Ein zwischengeschalteter Microprozessor ist absolut notwendig, da sonst das Telegrammende (ein fehlerhaftes Null-Byte) nicht ausgewertet werden kann. Im Rechner werden die Daten ausgewertet, angezeigt und in eine SQL-Datenbank geschrieben. Damit ist dann eine Langzeitanzeige als Diagramm möglich. Natürlich alles noch Testphase, aber ein Großteil geht schon. Zur Zeit werden gelesen: Kesseltemp Soll und Ist Anlagentemp Rücklauftemp Wamwassertemp Soll und Ist Außentemp Raumtemp (nur wenn RC35 im Wohnraum hängt, sonst Null) Anlagendatum/Zeit Zahl Brennerstarts Betriebstunden Laufzeit in Tagen Stunden WW-Bereitung Anzahl WW-Bereitung Fehler-/Statuscode Betriebsart Status von Brenner, Zündung, Flamme, Heizkreispumpe, Zirkulationspumpe, Dreiwegeventil Flammenstrom Wasserdruck im Heizkreis aktuelle Leistung Maximalleistung Leider fehlt mir momentan die Zeit, um richtig vorwärts zu kommen, aber der Winter naht ;-) bye, Mario
Datum:
Angehängte Dateien:@Mario
> Raumtemp (nur wenn RC35 im Wohnraum hängt, sonst Null)
Das kann ich nicht bestätigen. Hier: RC35 am Brenner mit Raumtemperatur.
Mal eine andere Frage. Sieht die Vorlaufkurve der Heizung bei dir z.Z.
auch so merkwürdig aus ?
Datum:
>Das kann ich nicht bestätigen. Hier: RC35 am Brenner mit Raumtemperatur. Muss aber eigentlich so sein. Habe zwar "nur" die RC30. Aber der Temperatursensor ist in der RC30 eingebaut. Wenn also die RC30 oder RC35 angeklemmt ist dürfte keine Temperatur gesendet werden. Also muss es dann irgendeine andere Temperatur sein die Du auswertest. Vielleicht eine errechnete Temperatur die von der Gebäudeart abhängt? Gruß Ingo @Mario / Rudi welches Format haben denn die Daten die vom ATmega128 gesendet werden? Dann könnte ich vielleicht noch mal ein Versuch mit meinen vorhanden PIC machen und die Daten im selben Format senden. Dann könnte ich vielleicht Euer Script laufen lassen und beim decodieren mithelfen. Ob ich mir dann auch irgendwelche Hardware baue oder sogar den RS232-Gateway von Buderus nehme habe ich noch nicht entschieden.
Datum:
Hi, habe hier zu Hause auch eine Buderus Heizung mit RC30 und BC10. Habe mir den Thread jetzt ein paar Mal durchgelesen, blicke aber nicht so richtig durch :) Also: Grundsätzlich geht es hier im Thread um 2 verschiedene Protokolle/Systeme, einmal den EMS-Bus, der u.A. an der Klinkenbuchse des BC10 anliegt und zum anderen geht es um das Protokoll der Logamatic 2107, soweit richtig? :) Das Protokoll der 2107 ist also nicht identisch mit dem EMS-Bus (also dem was an der Klinkenbuchse ankommt). Gibt es nun irgendwie eine Protokollbeschreibung vom EMS-Bus? Mir ist das noch nicht ganz klar :/ Auf der Klinkenbuchse ist also einmal +12V, GND und das Signal. Auf der Signalleitung können alle angeschlossenen Teilnehmer senden und empfangen (RX=TX , so stand es weiter oben) und man kann mit einem UART auf 9600Baud begrenzt (mit Fehlern?) alles was auf dem EMS-Bus gesendet wird mitlesen? Bitte korrigiert mich wenn ich irgendwo falsch liege :)
Datum:
> Muss aber eigentlich so sein. Habe zwar "nur" die RC30. Aber der > Temperatursensor ist in der RC30 eingebaut. Wenn also die RC30 oder RC35 > angeklemmt ist dürfte keine Temperatur gesendet werden. Angeklemmt ist die doch immer. > Also muss es dann irgendeine andere Temperatur sein die Du auswertest. > Vielleicht eine errechnete Temperatur die von der Gebäudeart abhängt? Die Temperatur wird mir als Raumtemperatur im Menü angezeigt, ich bin mir also 100%ig sicher ;-) > welches Format haben denn die Daten die vom ATmega128 gesendet werden? 0xAA 0x55 <DATA> <LEN> 0xAA 0x55 DATA die Daten vom EMS Bus LEN das Längenbyte (Anzahl der DATA-Bytes) Eine CRC-16 wäre auch nicht schlecht, auf der UART sind ja immer zyklische Fehler vorhanden. > Ob ich mir dann auch irgendwelche Hardware baue oder sogar den > RS232-Gateway von Buderus nehme habe ich noch nicht entschieden. An das Gateway konnte man doch diese 1000km Kabel antütern oder ? Ich glaube das Gateway bekommt man für etwa 250€. Ganz schöner Preis, für ne Serielle ;-)
Datum:
@Niclas richtig beschrieben, hier geht es parallel um zwei verschiedene Sachen, den EMS-Bus (bei mir und Rudi) und die 2107. Ich bastel nur am EMS-Bus. Eine Protokollbeschreibung gibt es noch nicht. Ich hatte mal eine Excelliste gepostet (weiter oben im Thread). Diese enthält aber noch Fehler, da die Telegramme nur mit dem PC aufgezeichnet waren. Im Moment ergänze ich die Liste gerade, da jetzt alle Telegramme richtig ankommen. Alles Erkannte basiert nur auf Diagnose und Raten. Beschreibung gibt Buderus (jetzt Bosch) nicht raus. Korrigierte Liste kommt die nächsten Tage. @Rudi Ich hab doch noch keine Vorlauffühler wie Du. Aber gerade habe ich zwei interessante Daten im Telegramm 11 00 9C Byte4+5 und 21 00 AB Byte 5+6 gefunden. Das dürften die VL-Temp. von Heizkreis 1 und 2 sein. Muss ich erst in die SQL-Datenbank implementieren. bye, Mario
Datum:
>Angeklemmt ist die doch immer. Vielleicht war es ja auch ein Misverständnis. Hatte den Satz "Raumtemp (nur wenn RC35 im Wohnraum hängt, sonst Null)" so verstanden dass die RC35 in der Zeit garnicht angeklemmt ist. >0xAA 0x55 <DATA> <LEN> 0xAA 0x55 Hatte mir auch schon Gedanken gemacht wie ich die Telegramme übertragen wollte. Ich hätte die dann Als Hex codiert übertragen und nach jedem Telegramm ein Enter geschickt. Dann hätte ich mit 115,2 KBit übertragen (Also 1 Byte senden wärend der Abtast-Pause zwischen zwei Bits die Empfangen werden. So ist das natürlich auch eine gute Idee. CRC16 ist ja nicht ganz so einfach zu berechnen. Um vieles Einfacher wäre ein einfaches XOR der Bytes als Prüfsumme anzuhängen. >...für etwa 250€. Ganz schöner Preis... Genau deswegen überdenke ich das ja schon seit 2003. Damit wäre es ja nicht getan Die Software kommt ja auch noch dazu. Für Heizungsfachbetriebe könnte sich sowas ja lohnen. Aber für Privatanwender ist das ja fast sinnlos. Würde natürlich gerne die Heizprogramme am PC einstellen. Die Dreherei an der RC30 ist ja viel zu Umständlich. Dazu müsste man aber herausbekommen wie die Prüfsumme berechnet wird. Ein einfaches XOR oder CRC8 scheint es nicht zu sein. Habe schon mal mit verschiedenen Anfangs und Endwerten und Bitfolge herumgerechnet, habe aber nichts herausfinden können. Vielleicht haben die ja auch eine eigenes Polynom dafür genommen? Vielleicht werd ich da ja noch irgendwann mal was herausbekommen. Oder irgend eine Idee zur Prüfsumme? Oder ist das vielleicht doch keine? Gruß Ingo
Datum:
@Mario Vielen Dank für Deine Zusammenfassung, jetzt ist mir einiges klarer. Genau das, was ich suche, deshalb werde ich mich auch mal dahinter klemmen. Bin schonmal gespannt auf die korrigierte Liste. Gruss Christian
Datum:
@Mario > Ich hab doch noch keine Vorlauffühler wie Du. > Aber gerade habe ich zwei interessante Daten im Telegramm 11 00 9C > Byte4+5 und 21 00 AB Byte 5+6 gefunden. Das dürften die VL-Temp. von > Heizkreis 1 und 2 sein. Muss ich erst in die SQL-Datenbank > implementieren. Die sehe ich hier nicht. Sind das evtl. Lesefehler ??? Adresse 11 und 21 ???
Datum:
Hallo Leute, ich habe den Thread jetzt mehrfach gelesen, und blicke vielleicht deswegen nicht mehr durch. Pin 23/24 an der Logamatic 2107 zwischen Controllerplatine und Hauptplatine sind zu verwenden? Welche Pegelanpassung? Welches Protokoll? Hat schon jemand eine Liste mit Telegrammen? Würde da auch gerne einsteigen. mfg Chris
Datum:
@Rudi das sind keine Lesefehler. Sowas gibt es bei mir nicht mehr ;-) 11 ist der Absender WM10 (Pumpe Heizkreis 1) Beispiel: 11 08 1E 00 00 D1 B3 00 Byte 4+5: Vorlauf HK1 IST Byte 6 : scheint auch eine Temperatur zu sein, für Rücklauf aber zu niedrig 21 ist der Absender MM10 (Pumpe und Mischer Heizkreis 2) Beispiel: 21 00 AB 00 05 00 CD 00 9C 01 10 F9 00 Byte 4 : Vorlauf HK2 SOLL Byte 5+6: Vorlauf HK2 IST Byte 8 : Mischersteuerung Hast Du die Anzeige Außentemperatur schon für Minusgrade korrigiert? Das Highbyte wird dann FF. Ich kann das System noch nicht erkennen. Rückwärtsrechnen von FFFF passt auch nicht. Hast Du eine Idee? bye, Mario
Datum:
@Mario > das sind keine Lesefehler. Sowas gibt es bei mir nicht mehr ;-) Du hattest ja 2 Heizkreise ... Lesefehler gibt es noch, wenn der Bustimeout aufschlägt wird am Anfang einer Nachricht ein falsches Byte gelesen. B3 ist die CRC: 11 08 1E 00 00 D1 B3 00 ^^ Byte 0 mit Frameerror ^^----CRC > Hast Du die Anzeige Außentemperatur schon für Minusgrade korrigiert? Nein, ich muss noch warten ;-) > Das Highbyte wird dann FF. Ich kann das System noch nicht erkennen. > Rückwärtsrechnen von FFFF passt auch nicht. Hast Du eine Idee? Hast du ein Beispiel ? Wir haben hier noch keine Temperaturen unter 0°C.
Datum:
Ich sehe hier noch:
10 08 1A 00 27 64 64 00 F1 00
10 88 14 00 03 6E 00
10 08 35 00 11 11 30 00
10 00 A3 00 0A 01 01 85 00
10 00 A2 00 00 00 00 00 00 00 00 00 00 00 18 00
08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 DA 00
^^ ändert sich ab und zu auf 0
Die ich nicht zuordnen kann.
Datum:
@Rudi,
leider habe ich für die Minusgrade kein Beispiel mehr. Auch bei mir sind
es jetzt 10 Grad plus.
Nachvollziehen konnte ich, dass -0,1 °C als FFFFH dargestellt wird.
-0,2 °C könnte FFFEH sein, ich hatte allerdings den Eindruck, dass die
negative Temp. eine andere Auflösung hat (event. 0,05 °/Digit).
Werde ich lt.Wetterbericht Ende nächster Woche testen können. Ich wohne
in einer kalten Gegend ;-)
Hier mal eine Liste aller Telegramme, die es bei mir gibt:
Absender = UBA3 (Brenner)
08 00 07 keine Änderungen
08 00 18 Kesseltemp Soll/Ist, Leistung WWTemp,
Ruecklauftemp, Fehlercode, Betriebsart, Druck
08 00 19 Außentemp, Brennerstarts, Betriebststundenzaehler
08 00 34 WWTemp Soll/Ist, Zähler WW-Bereitung, Status 3-Wegeventil
08 00 1C keine Änderungen
08 10 10 Lebenszeichen?
08 10 11 Lebenszeichen?
08 10 14 irgendwelcher Zähler
Absender = BC10
09 10 keine Änderungen
Absender = RC35
10 00 06 Datum/Zeit, Betriebszeit
10 00 48 unklar
10 00 3E Raumtemp.
10 00 A2 keine Änderungen
10 00 A3 3 Temperaturen (unklar)
10 08 35 unklar
10 08 1A unklar
10 11 9D unklar
10 21 AC unklar
10 88 10 Lebenszeichen?
10 88 11 Lebenszeichen?
10 88 14 keine Änderungen
10 89 29 keine Änderungen
Absender = WM10 (Pumpe HK1)
11 00 9C Vorlauftemp HK1
11 08 1E Vorlauftemp HK1
Absender = MM10 (Pumpe/Mischer HK2)
21 00 AB Vorlauftemp Soll/Ist HK1, Mischersteuerung
Wie immer als Diskussionsgrundlage.
bye,
Mario
Datum:
@Mario > Nachvollziehen konnte ich, dass -0,1 °C als FFFFH dargestellt wird. > -0,2 °C könnte FFFEH sein, ich hatte allerdings den Eindruck, dass die > negative Temp. eine andere Auflösung hat (event. 0,05 °/Digit). Die Änderung der Auflösung wäre eigentlich untypisch. Das Problem wird sich in den nächsten Wochen aber von selbst erledigen ;-) Jedes Modul hat noch eine Versionsnummer, ich vermute das die in den Nachrichten ohne Änderung verschickt werden. Es könnte sich aber auch um Werte von "fehlenden" Sensoren handeln. Ich werde in den nächsten Tagen meine alten Logdateien parsen und eine Liste der Nachrichten erstellen. In 3 Monaten sind etwa 10GB an Rohdaten aufgelaufen die langsam mal wech können.
Datum:
zur 2107: Bei den Nachrichten handelt es sich offenbar um eine Art "ECO-CAN" Bus von B.. Die Datenlänge spricht dafür, die Speicheradressen sind aber noch etwas unklar. Jeder Teilnehmer auf dem Bus hat eine Adresse und einen Speicherbereich der ausgelesen oder beschrieben werden kann. Initial sollte der komplette Speicher übertragen werden (ich habe leider noch keine Einschaltsequenz der Anlage) und danach nur Speicherbereiche in denen Änderungen stattgefunden haben. Da die Adressierung des Speichers noch unklar ist, sehen die Nachrichten immer gleich aus, welches Bit MSB und LSB ist, ist leider auch noch unklar ... die dezimale 65 in den Daten ist wohl ein Lückenfüller für nicht vorhandene Werte bzw. Werte die nicht beschrieben werden sollen/können.
Datum:
Hallo, ich lese hier sehr interessiert mit, da ich ebenfalls die 2107 anzapfen möchte. Vieleicht könnte uns folgende Unterlagen weiterhelfen: http://zeroflag.web.elte.hu/buderus1.pdf http://zeroflag.web.elte.hu/buderus2.pdf
Datum:
Ich habe die Beschreibung für die 4000er. Dort sehen die
ECO-CAN-Adressen etwas anders aus. Die Daten aus den Dokumenten werden
offensichtlich durch die Adapter-Karte auf den Bus umgesetzt. Auf dem
Bus sieht es so aus:
<ADDR> <FLAG?> <ADDR+1> <D1> <D2> <D3> <D4> <D5> <D6> <CRC?>
Ich dachte erst an I2C, aber das Protokoll passt nicht 100%ig.
Im "FLAG" könnte der Offset und ein paar unbekannte Bits kodiert sein.
Es ist jedenfalls kein 8 Bit Offset.
Mal ein Beispiel. Das Flag ist mit 0x07 (#1) und 0xF8 (#2) maskiert und
die Adressen sind 2 Bits nach rechts verschoben. Die Daten sehen jetzt
schon etwas anders aus und der mögliche Offset passt auch zu den Daten:
#1 #2
DATA: 020.342196 55 02 78 01111010 55 : 28 05 65 65 65 09 93
DATA: 049.014864 55 02 B0 10110010 55 : 00 A7 C2 05 00 3F F3
DATA: 050.752797 55 02 E8 11101010 55 : 1D 0B 34 0B 19 00 0A
DATA: 083.720304 55 02 78 01111010 55 : 28 05 65 65 65 09 93
DATA: 088.861636 55 02 B0 10110010 55 : 00 A7 C2 05 00 3F F3
DATA: 090.602838 55 02 E8 11101010 55 : 1D 0B 34 0B 19 00 0A
DATA: 123.567026 55 02 78 01111010 55 : 28 05 65 65 65 09 93
DATA: 135.510151 55 02 B0 10110010 55 : 00 A7 C2 05 00 3F F3
DATA: 137.248078 55 02 E8 11101010 55 : 1D 0B 34 0B 19 00 0A
DATA: 170.215767 55 02 78 01111010 55 : 28 05 65 65 65 09 93
DATA: 206.820734 55 02 B0 10110010 55 : 00 A7 C2 05 00 3F F3
DATA: 208.558722 55 02 E8 11101010 55 : 1D 0B 34 0B 19 00 0A
DATA: 241.526318 55 02 78 01111010 55 : 28 05 65 65 65 09 93
DATA: 256.653552 55 02 78 01111010 55 : 28 05 65 65 65 09 93
Datum:
Angehängte Dateien:Zur 2107: Soooooo, ich konnte die Angaben in den Dokumenten von B., bezüglich dem ersten kompletten Datenaustausch, heute verifizieren. Nach dem Einschalten wird ein Datenwulst auf dem Bus verschickt und danach geht es eher ruhig zu (siehe Anhang). Nebenbei habe ich die Anlage "virtuell" verkabelt und habe jetzt den unbekannten "realtime"-Log vom Bus jederzeit zur Verfügung. Falls jemand Interesse an den Daten hat bitte melden, ich weiss das ein Busmitschnitt und das Parsen der Daten "noch" etwas kompliziert ist ...
Datum:
Nachtrag: Auf dem Bild ist der rechte Bereich von LOG1 und LOG2 nicht identisch. Beim zweiten Mitschnitt kam kurz nach dem Einschalten eine Anforderung für die Warmwasserbereitung, ein möglicher Grund dafür ...
Datum:
Angehängte Dateien:zur 2107: Ich habe jetzt ein Bedienteil gesponsort bekommen ;-). Es beschwert sich über den fehlenden Temperaturfühler und Kessel ... Update:
01 +5V 02 GND 03 5V gemessen, vielleicht ein binärer E/A? 04 Input (0V Displayeinheit aus/ 5V Displayeinheit an + Bustraffic) 05 0V gemessen, vielleicht ein binärer E/A? 06 0V gemessen, vielleicht ein binärer E/A? 07 NC 08 0V gemessen, vielleicht ein binärer E/A? 09 Ausgang Heizkreis1 Pumpe (an=5V, aus=0V) 10 Pumpe WW (0V aus / 5V an) 11 0V gemessen, vielleicht ein binärer E/A? 12 0V gemessen, vielleicht ein binärer E/A? 13 0V gemessen, vielleicht ein binärer E/A? 14 0V gemessen, vielleicht ein binärer E/A? 15 TTL Signal Low-Aktiv, feste Pulsbreite, unregelmässiges Signal, könnte Frame start interrupt sein 16 TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus 17 TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus 18 TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus 19 5V gemessen, vielleicht ein binärer E/A? 20 5V gemessen, vielleicht ein binärer E/A? 21 0V gemessen, vielleicht ein binärer E/A? 22 TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus 23 Datenübertragung Differential zu pin 24 24 Datenübertragung Differential zu pin 23 25 Output / 50hz sinus der fast wie dreieck aussieht 0,16V AC gemessen, ab und zu störungen messbar 26 NC |
Datum:
zur 2107:
Das letzte Byte einer Nachricht ist die CRC. Ich konnte ein paar Daten
erkennen:
A8 07 : A9 65 11 20 3C 00 22 1A
A8 3F : A9 65 11 20 3C 00 22 1A
**
**--------- 0 Nacht, 1 Tag, 2 Auto
**-------------Temp Nacht eingestellt (0.5
Auflösung)
**----------------Temp Tag eingestellt (0.5 Auflösung)
AA 57 : AB 65 FB 28 20 3C 65 D4
**
**
**
**----------------Temp WW eingestellt
Datum:
Angehängte Dateien:Der BUS ist übriegens ein I2C-Bus. Am EEProm liegen die gleichen Daten an. Ich habe mal das Datenblatt angehängt.
Datum:
Ich habe den Speicher ausgelesen: PAGE0 0xff PAGE1 0xff PAGE2 0xff PAGE3 0xff PAGE4 DATEN PAGE5 DATEN PAGE6 DATEN ein paar Byte, der Rest 0xFF PAGE7 0xff Andere Teilnehmer (die CPU) befindet sich wohl nicht auf dem Bus.
Datum:
Hier nochmal die Pins. Ohne Pin15 (High) wird der Kessel/WW als fehlend angezeigt. Jetzt sehe ich schonmal die alten Werte vom WW/Kessel usw. (auf dem Tisch) ;-)
01 +5V 02 GND 03 5V gemessen, vielleicht ein binärer E/A? 04 Input (0V Displayeinheit aus/ 5V Displayeinheit an + Bustraffic) 05 OUTPUT ??? (0V) 06 OUTPUT ??? (0V) 07 NC 08 OUTPUT ??? (0V) 09 Ausgang Heizkreis1 Pumpe (an=5V, aus=0V) 10 Pumpe WW (0V aus / 5V an) 11 OUTPUT ??? (0V) 12 OUTPUT ??? (0V) 13 OUTPUT ??? (0V) 14 OUTPUT ??? (0V) 15 ALIVE (HIGH) kessel/ww TTL Signal Low-Aktiv, feste Pulsbreite 16 OUTPUT SIGNAL (unknown) 17 OUTPUT SIGNAL (unknown) 18 OUTPUT SIGNAL (unknown) 19 INPUT ??? (5V) 20 INPUT ??? (5V) 21 OUTPUT ??? (0V) 22 OUTPUT SIGNAL (unknown) 23 SDA 24 SCL 25 OUTPUT 50hz sinus der fast wie dreieck aussieht 0,16V AC gemessen, ab und zu störungen messbar 26 NC |
Datum:
Nachtrag: Die Temperaturen werden offensichtlich über über Pin 15 übertragen. Wenn ich dort direkt SCL oder SDA anschliesse gibt es Temperaturänderungen im Display die im EEProm hinterlegt werden. Es geht jetzt eingentlich nur um die richtigen Adressen im EEProm und dann wars das eigentlich ...
Datum:
Update:
01 +5V 02 GND 03 5V gemessen, vielleicht ein binärer E/A? 04 INPUT (0V Displayeinheit aus/ 5V Displayeinheit an + Bustraffic) 05 OUTPUT Relais Brenner (an=5V, aus=0V) 06 OUTPUT ??? (0V) 07 NC 08 OUTPUT ??? (0V) 09 OUTPUT Relais HK1 Pumpe (an=5V, aus=0V) 10 OUTPUT Relais WW Pumpe (0V aus / 5V an) 11 OUTPUT Relais ZIRKPUMPE (0V aus / 5V an) 12 OUTPUT Relais MISCHER (0V zu / 5V auf) 13 OUTPUT ??? 0V => 5V after successfull Init 14 OUTPUT Relais HK2 Pumpe (0V aus / 5V an) 15 INPUT ALIVE/DATA (HIGH) kessel/ww ... 16 OUTPUT SIGNAL (unknown) 4x HIGH/LOW 4*450ms 1x LOW 1*450ms 17 OUTPUT SIGNAL (unknown) (1sec HIGH/1sec LOW) 18 OUTPUT SIGNAL (unknown) (450ms HIGH/450ms LOW) 19 OUTPUT SIGNAL (unknown) 20 INPUT ??? (5V) 21 OUTPUT ??? (5V) 22 OUTPUT SIGNAL (unknown) 23 SDA 24 SCL 25 OUTPUT 50hz sinus der fast wie dreieck aussieht 0,16V AC gemessen, ab und zu störungen messbar 26 NC |
Datum:
Rudi sehr gut !
Datum:
So, zu den Temperaturen bei der 2107. Leider werden nur die programmierbaren Temperaturen im EEProm gespeichert. Die eigentlichen Temperaturen werden über einen extra Bus übertragen. Es gibt 8 mögliche Temperaturen (ADC-Werte), wobei eine/r die Referenz ist. Ich konnte hier schon die Temperaturen per Hardwaresimulation durchfahren, aber die Referenz ist noch etwas undurchsichtig, geht aber in die Berechnung der Temperaturen mit ein. In der Serviceanleitung sind die Kurven und entpsrechenden Werte der Widerstände abgebildet. Hat jemand zufällig Widerstandskurven zur Temperatur in digitaler Form die denen aus der Serviceanleitung entsprechen ???? Hier das Update der Pins:
01 +5V 02 GND 03 5V gemessen, vielleicht ein binärer E/A? 04 INPUT (0V Displayeinheit aus/ 5V Displayeinheit an + Bustraffic) 05 OUTPUT Relais Brenner (an=5V, aus=0V) 06 OUTPUT ??? (0V) 07 NC 08 OUTPUT ??? (0V) 09 OUTPUT Relais HK1 Pumpe (an=5V, aus=0V) 10 OUTPUT Relais WW Pumpe (0V aus / 5V an) 11 OUTPUT Relais ZIRKPUMPE (0V aus / 5V an) 12 OUTPUT Relais MISCHER (0V zu / 5V auf) 13 OUTPUT ??? 0V => 5V after successfull Init 14 OUTPUT Relais HK2 Pumpe (0V aus / 5V an) 15 INPUT ADC (Value => Signal High Time) 16 OUTPUT ADC ADDR 0 17 OUTPUT ADC ADDR 1 18 OUTPUT ADC ADDR 2 19 OUTPUT SIGNAL UART 1200 Baud (7n1) ??? 20 INPUT ??? (5V) 21 OUTPUT ADC RESET ??? 22 OUTPUT ADC SYNC 23 SDA 24 SCL 25 OUTPUT 50hz sinus der fast wie dreieck aussieht 0,16V AC gemessen, ab und zu störungen messbar 26 NC ADC ADDR -------- 0x00 ... KESSEL 0x01 ... AUSSEN 0x02 ... WW 0x03 ... ??? 0x04 ... ??? 0x05 ... ??? 0x06 ... VORLAUF 0x07 ... REF |
Datum:
Identifizierung Temperatursensoren (2107) aus den Kurven im Serviceheft: http://www.fuehlersysteme.de/resistance_characteri... Außentemperatur: NTC 10Kohm Kesselwasser : NTC 10Kohm Raumtemp : NTC 10Kohm Abgas : ??? Kollektor : ??? Falls jemand digitale Quellen für die Temperaturkurven des NTC 10Kohm kennt, immer her damit ;-).
Datum:
@Mario Hast du schon negative Temperaturen gemessen ? Hier ist die Temperatur in den letzten Tagen leider nicht unter 0°C gegangen :-/. Kältespray habe ich auch nicht zur Hand ...
Datum:
Hallo Rudi, wie sind denn die NTC 10kOhm beschaltet? Gegen 5V? Was für Werte benötigst du? 8bit 14bit, 16bit? Martin
Datum:
Die Beschaltung kenne ich nicht. Ich bekomme nur einen Wert in Form von einem Zeitintervall, der dann in Zusammenhang mit dem Referenzwert die Temperatur darstellt. Da die Temperatur/Werte-Paare stark nicht linear sind, ich habe zum Testen eine Kurve aufgenommen (ohne Referenzwert), bräuchte ich eine mehr oder minder gute Kurve vom NTC, um den Zusammenhang von diesem Refernzwert zu ermitteln. 16Bit für einen Test ist wohl mehr als genug.
Datum:
Die Temperaturen habe ich jetzt per Messung bestimmt, wie der Referenzwert in die Messung eingeht ist jetzt auch klar. Ich bau einen Adapter für den Bus auf RS232/TTL mit Opto und einem AVR644er als Sklaven. Die Platine kann an das Kabel angezapft oder per zweitem Kabel direkt eingeschliffen werden. Folgende Daten werden erkannt bzw. können dann geändert werden: EEProm per I2C (wie die Steckkarte, Werte sind noch nicht bekannt), alle Temperaturen und der Status der Relais und die bisher unbekannten Pins. Die Daten können dann per RS232 gelesen oder geschrieben werden (wenn bekannt), die Software dann als OS. Die Platine wird etwa 6x6cm groß. Evtl. auch einen Tick größer. Falls Interesse besteht, würde ich mehrere Platinen fertigen lassen.
Datum:
Update zur Platine: Die Platine wird jetzt erstmal nur eine Möglichkeit zur Adaption bieten. Das Flachbandkabel muss von der Displayeinheit gelöst werden und die Platine wird direkt auf den Stecker von der Displayeinheit gesteckt, das Kabel dann direkt auf die Platine. Der 644er wird erstmal mit den internen 8MHz laufen, ein externes Quarz wird vorgesehen (falls es Probleme mit der UART geben sollte). Dann noch ein 32KHz Quarz für den Timer. Reset-Taster, 3 LED, Programmieradapter (6 Pol) und eine Klemmleiste für die UART über den OPTO (RX,TX,VCC,GND). Die gefundenen Inputs können durch Widerstände vom Bustreiber getrennt und direkt als Inputs genutzt werden (wenn nötig). Der 644er ist dann auch am Ende der möglichen Verdrahtung.
Datum:
@rudi Außensensor an EMS: zum Glück waren nur ganz kurz Minusgrade (ich warte nicht wirklich darauf). Hat aber gereicht, um zu sehen, dass die negativen Temperaturen von 0xFFFF rückwärts gerechnet werden 0xFFFF entspricht -0,1 Grad, 0xFFFE -0,2 Grad usw. Ich schlage mich gerade mit der Bereitstellung der Daten im Webserver herum, damit mein Internet Tablet (Nokia N770) die Daten aktuell anzeigt. Das Nokia soll mein Hausdisplay werden (gab es günstig bei Ebay). Es macht aber noch Probleme bei AJAX bzw. Javascript. Aber der Winter ist ja noch lang. Tschau, Mario
Datum:
Angehängte Dateien:@Mario > herum, damit mein Internet Tablet (Nokia N770) die Daten aktuell > anzeigt. Auch eine Idee ;-) Zur 2107: Die ersten Daten sind heute eingeflogen ;-) Anbei eine Grafik von den Temperaturen und den Relais direkt vom Bus ...
Datum:
Ich suche schon lange nach einer Möglichkeit die Istdaten meiner GB162 in meiner Linux-Haussteuerung auszuwerten. Nach dem Lesen des Threads bin ich total begeistert :-) Ich plane, den EMS-Bus mit einem Net-Io (Ethernet-AVR von Pollin) mitzulesen. Die aktuellen Daten würde ich dann per Modbus über Ethernet der Linuxsteuerung zur Verfügung stellen. Falls Interesse besteht würde ich den Sourcecode natürlich auch gern weitergeben. Eine Frage hätte ich zum Interface (Pegelwandler), gibt es da zum Schaltplan (oben im Thread) auch eine Bestückungsliste mit richtiger Dimensionierung der Bauelemente bzw. einen aktualisierten Schaltplan? Grüsse Matthias
Datum:
Hallo Matthias, so etwas in der Art wollte ich auch aufbauen. Hatte aber bisher noch keine Zeit hierfür. Wenn Du bereit wärst den Quellcode weiterzugeben, wäre es toll. Viele Grüße Gerhard
Datum:
> Eine Frage hätte ich zum Interface (Pegelwandler), gibt es da zum > Schaltplan (oben im Thread) auch eine Bestückungsliste mit richtiger > Dimensionierung der Bauelemente bzw. einen aktualisierten Schaltplan? Nein, der IC wird als reiner Komparator benutzt, der Rest ist Hysterese und Überspannungsschutz.
Datum:
@ Gerhard: Das mit der Zeit ist auch immer mein Problem... Prinzipiell habe ich schon früher mal die WebServer-Software von Ulrich Radig genommen, Sachen, die ich nicht brauche entfernt und eine ModBus-Schnittstelle (Code für uCLinux stammte auch aus dem Web) eingebaut. Fehlt also nur noch das EMS-Interface, aber da gibt's im Thread ja auch schon ein Beispiel für den Atmel. Da also der verwendete Code auf der Arbeit anderer basiert geb' ich das fertige Projekt natürlich auch gern weiter. @Rudi >Nein, der IC wird als reiner Komparator benutzt, der Rest ist Hysterese >und Überspannungsschutz. Hättest Du ein Problem damit mir die Stückliste deines Aufbaus zukommen zu lassen? Ich kenne mich nämlich eher in Software fit und für die Hardware müsste ich mich erst noch tiefer mit der Materie befassen, da ich meine Heizung ja nicht schrotten will..... Falls Du das nicht über das Forum machen willst. meine eMail ist matthias punkt bartsch at gmx punkt net. Viele Grüsse Matthias
Datum:
Angehängte Dateien:@Matthias R_ESD, D_ESD und R_HYST habe ich nicht bestückt. Der Rest sollte benutzt werden.
Datum:
Nachtrag: Der Bus ist dann nach wie vor ungeschützt. Ein Komparator mit Opto wäre ideal, ich habe zwar die Bauteile, bin aber noch nicht zu einem Testaufbau gekommen ...
Datum:
Hallo Rudi, ganz vielen Dank für den Schaltplan. Da kann ich mich ja sobald als möglich an's Basteln machen. Einen Optokoppler werde ich mir wahrscheinlich aber noch gönnen... Grüsse und nochmals vielen Dank Matthias @all Oben im Thread ist ja das Protokoll auf dem EMS-Bus beschrieben, soweit ich gesehen habe als Phyton Programm. Ich will den Phyton-Code in eine C-Library portieren. Oder hat das schon jemand gemacht und ich hab es nur überlesen?
Datum:
@Matthias EMS: ich denke, eine Library gibt es noch nicht. Rudi hat seine Auswertung in Phyton, ich in Delphi erstellt. Da ich jetzt alle interessanten Werte aus der Heizung habe, tut es das für mich erstmal;-) Zum Thema Optokoppler: ganz so kritisch würde ich das nicht sehen. Der EMS-Bus ist ja zur Vernetzung der Heizungskomponenten im ganzen Haus gebaut und dürfte daher ziemlich resistent gegen äußere Einflüsse sein. Im Zweifelsfall bricht halt die Kommunikation zusammen und geht nach Störungsbeseitigung wieder. Der Bus muss schließlich heizungsbauerkompatibel sein ;-) Die Entscheidung muss natürlich jeder selbst treffen. No Risk, No Fun. bye, Mario
Datum:
Hallo an Alle Habe mich inzwischen von meinem PIC verabschiedet und habe mir ein ATmega8 Entwicklungskit mit USB-Prog enscheiden mit dem man auch andere Microcontroller programmieren kann. Habe den C-Quelltext von Rudi übernehmen können und fast ohne Änderungen übernehmen können. Auch wenn ich nicht wirklich verstehe was der Quelletext eigentlich wirklich macht ;-) Auf der Platine ist ein Max RS232-Chip den ich einfach über ein Kabel an den Service-Key angeschlossen habe. Funktioniert erst mal fürs erste. Nur gibt es noch Probleme mit dem Java-programm die ich nicht wirklich in den Griff bekomme. Irgendwie bekomme ich sämtliche Daten nur nach dem ich den COM-Port schließe. vorher scheine ich keine Daten zu bekommen. Würde ja auch gerne mit Python mithelfen. Allerdings habe ich echt keinen Bock mich jetzt Tage/Nächtelang erst mal in Phyton, MySQL oder andere Datenbank und GNU-Plot zu beschäftigen. @All fände es auch gut wenn nicht jeder sein eigenes Süppchen kocht. Mein Versuch das zu ändern ist ja wohl fehlgeschlagen... Jetzt hätten wir Rudi mit Phyton, Mario mit Delphi, ich mit Java und jetzt kommt noch C dazu... ;-) @Rudi würdest Du mir/uns vielleicht Dein Script zur Verfügung stellen? Dazu müsste ich auch wissen welche Datenbank dazu installieren müsste. Das GNUPlot-Script wäre vielleicht auch interessant. @Matthias Wäre auch an einer gemeinsamen Hardware interessiert und auch an dem Quelltext. Leider habe ich kaum den Quelltext fur den ATMega verstanden und wäre vermutlich keine große Hilfe bei der Software. Würde auch noch mal für das AVR-Board von Pollin geld ausgeben. Auch wenn ich für dieses Projekt am Ende mehr Geld ausgegeben habe als für die Original Hardware von Buderus. Allerdings wäre es schön wenn man nicht unbedingt auf Linux angewiesen wäre und auch mit Windows auf dem PC lassen könnte. Wäre natürlich noch besser wenn man eine SD-Karte hätte die die Daten solange zwischenspeichert bis man den PC hochfährt und nicht unbedingt einen Server mitlaufen lassen muss. Das hätte den Vorteil dass man die Daten auch weiterhin aufzeichnen kann wenn man aus irgendwelchen Gründen der Server mal neugestartet wird. *Könnte gerne bei der Decodierung mithelfen, auch wenn es schon so aussieht ob schon alle Telegramme komplett entschlüsselt sind. *Könnte auch gerne Adapterplatinen entwickeln auf der dann der "Telegrammumwandler" sitzt und eine SD-KKarte platz findet. Mir wäre dann aber auch wichtig dass auf der Platine eine Sendefunktion untergebracht werden kann. Nachdem das loggen funktioniert will ich auf jeden fall auch vom PC, Server, Controllerplatine oder was auch immer Die Heizungsprogramme ändern kann. Vielleicht sogar automatisiert für Feiertage und Urlaubstage für das ganze Jahr im Vorraus. Aber bis dahin ist es wohl noch ein längerer Weg.... Gruß Ingo
Datum:
@IngoF > fände es auch gut wenn nicht jeder sein eigenes Süppchen kocht. Mein > Versuch das zu ändern ist ja wohl fehlgeschlagen... Jein, bisher verwenden wir mysql und gnuplot (in ajax gibt es ja auch schon etwas) für die Visualisierung. Wie die Daten in die Datenbank gelangen ist bisher das "Süppchen". Ich kann meinen suboptimalen Aufbau kurz beschreiben: Heizung -(EMS)-> Mega8 -(RS232)-> CORTEX -(RS232/USB)-> Laptop -> Parser (python) -> Binary-Log/Sqlite-DB -(Network upload)-> Server -> Mysql -> Gnuplot -> Web So sieht es bei mir aus ;-) > würdest Du mir/uns vielleicht Dein Script zur Verfügung stellen? Dazu > müsste ich auch wissen welche Datenbank dazu installieren müsste. Das > GNUPlot-Script wäre vielleicht auch interessant. Das Skript kann bisher nicht alle Daten parsen. Ich kann die beiden mal posten. Die Konvertierung nach Sqlite will ich da nicht drin haben, da das mit einem kleinen Netz-Controller nicht funktioniert. Ich bin leider bei mir, wegen der 2107, nicht viel weiter gekommen. > Allerdings wäre es schön wenn man nicht unbedingt auf Linux angewiesen > wäre und auch mit Windows auf dem PC lassen könnte. Wäre natürlich noch > besser wenn man eine SD-Karte hätte die die Daten solange Ja, ich werde demnächst den Kram auch auf einem Windos PC installieren. Ab dem Netzwerkkontroller soll das dann identisch zu meiner Installation (etwas verbessert) laufen, aber eben auf Windos. Die Adaption zur Heizung ist komplett anders (leider). Die Tools für die Visualisierung sind für mehrere Platformen verfügbar. Wir bräuchten einen kleinen Webserver der die Daten empfangen/quittieren kann und in die Datenbank schreibt und/oder ein kleines Programm welches die Daten abholt. Ich würde schon wegen der Platformunabhängigkeit und der Wartung kein C benutzen wollen, ich komme übrigens


























