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:
@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:
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:
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:
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: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:
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:
<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:
@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:
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 aus der C/C++-Ecke. > 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 Mach das ! Du hast 12V/GND und das Signal. Das Signal liegt bei +- 2.5V auf den 12V (9600 Baud). Eingang dann vom uC mit 3.3V oder 5V. Wenn du daran arbeiten könntest wäre das super ! Das Hauptproblem bei Senden ist die CRC. Im schlimmsten Fall muss man den String 256 mal senden ...
Datum:
Hallo, will mich nochmal zu Wort melden bzgl. meiner Vorstellung mit dem Pollin-Board. Vorteil sind die geringen Hardwarekosten (ca. 20€ als Bausatz bzw. knapp 30€ für das Fertiggerät). Die Busanschaltung muss man dann natürlich noch selber basteln. Für das Board sind schon viele fertige Projekte im Netz zu finden, mit denen man ohne grossen Entwicklungsaufwand eine gute Software-System-Grundlage hat. Implementiert man darauf das EMS-Protokoll hat man mit geringen Kosten eine netzwerkfähige Schnittstelle zur Heizung (seriell könnte das Board auch). Implementiert man jetzt hier drauf das Modbus-Protokoll, kann man die Kiste neben Linux und Windows z.B. auch mit einem Wago-Ethernetcontroller (Wago System 750) auslesen. Prinzipiell könnte ich mir als Interface natürlich auch andere Hardware vorstellen, aber nach meiner Erfahrung ist es oft so, das wenn man noch viel neu entwickeln muss ein Projekt oft einschläft. Zweifelsohne wäre aber ein SD-Interface praktsch, wenn man keinen Server ständig am Laufen hat. Vielleicht sollte man im ersten Schritt aber mal alle Infos in einem Wiki o.ä. sammeln. Dann könnte man sich besser orientieren was es schon gibt. Ich habe zwar noch nie ein Wiki aufgesetzt aber ich könnte mir mal ansehen wie das geht. Denn auf die Dauer wird der Thread schon ziemlich unübersichtlich.
Datum:
@Werner Brösel, nöhh, hab keine Lust am hijacken. Macht ja im Endeffekt nur Arbeit. Für meine privaten Zwecke komme ich mit den Infos hier gut klar. Ich könnte also auch nur schnorren und mich an der Arbeit anderer bedienen, ohne was beizutragen..
Datum:
@Matthias > Ich könnte also auch nur schnorren und mich an der Arbeit anderer > bedienen, ohne was beizutragen.. Was hast Du dir vorgestellt ? Für eine Wiki kann ich mich nicht begeistern, man findet nichts wieder und es gibt irgendwie keine gescheite Übersicht der Artikel. Wenn wir einen zentralen Ort anlegen, dann für alle. Doku, Software und ein Forum/Mailinglist für Hilfe und Austausch, von der möglichen B.-Kontra abgesehen ;-) Evtl. können sich die stillen Mitleser dazu äußern ...
Datum:
@Rudi >Was hast Du dir vorgestellt ? Für eine Wiki kann ich mich nicht >begeistern, man findet nichts wieder und es gibt irgendwie keine >gescheite Übersicht der Artikel. Beim Suchen nach einer Schnittstellenbibliothek für Buderus bin ich auf ein Projekt für Viessmann-Geräte gestossen (http://openv.wikispaces.com) Etwas in der Art fände ich praktisch... Zumal ja jeder etwas andere Bedürfnisse/Infrastruktur hat und da könnte man übersichtlich die einzelnen Lösungen sortieren.
Datum:
@Matthias > Beim Suchen nach einer Schnittstellenbibliothek für Buderus bin ich auf > ein Projekt für Viessmann-Geräte gestossen (http://openv.wikispaces.com) > Etwas in der Art fände ich praktisch... Zumal ja jeder etwas andere > Bedürfnisse/Infrastruktur hat und da könnte man übersichtlich die > einzelnen Lösungen sortieren. Also eher ein CMS als ein Wiki. Die Sourcen und Programme sind bei denen nicht auf der gleichen Domain. Ich würde ein Projekt auf Sourceforge anlegen, Webseite, Sourceverwaltung, Mailingliste ... . Für die Webseite könnte ich mir (bitte nicht schlagen;-)) joomla vorstellen und dann über die Userverwaltung das Editieren erledigen. Am Ende sind es eh nur eine Hand voll Leute die aktiv etwas tun. Siehe hier ;-)
Datum:
>Ich würde ein Projekt auf Sourceforge anlegen, Webseite, >Sourceverwaltung, Mailingliste ... . Für die Webseite könnte ich mir >(bitte nicht schlagen;-)) joomla vorstellen und dann über die >Userverwaltung das Editieren erledigen. @Rudi Ok, wollen wir es mal angehen? Die Webseite ja keinen Schönheitspreis gewinnen, Hauptsache man strukturiert die vielen Infos mal. Vielleicht kannst Du initial die Seite anlegen, Du hast ja auch am meisten zu dem Projekt beigetragen. Damit keinn Hijacker-Verdacht aufkommt.... Habe mir gestern aus dem Thread mal die Protokoll-Infos zusammengesucht, die ich für die Anbindung brauche. Ich schreib jetzt das sowieso mal für mich zusammen. Post wenn ich fertig bin mal meine Zusammenfassung.
Datum:
Angehängte Dateien:Hatte mal eine XLS-Tabelle gemacht mit den damaligen Erkenntnissen. Vielleicht könnte man die so oder anders weiterführen. Gruß Ingo
Datum:
Angehängte Dateien:@Ingo: Vielen Dank für die Tabelle. Habe Sie mal mit den anderen Infos abgeglichen und ergänzt. Muss ich noch weiterbearbeiten, aber mal als Zwischenstand für alle. Gruss Matthias
Datum:
Angehängte Dateien:Was haltet ihr von diesem Aufbau für die Beschreibung (siehe Anhang) ? Ich habe die Seite mit Tex erstellt.
Datum:
@Rudi sieht sehr gut aus. Wie sehen denn die Dokumentation aus wenn einzelne Bits eine bestimmte Bedeutung haben? Allerdings müsste man dafür TEX installieren um es zu bearbeiten. Oder ist das ein Format dass man mit OpenOffice oder anderen Programmen öffnen könnte? Warum kein Dateiformat wofür man kein spezielles Programm für benötigt? Kann man die Datei denn auf der Webseite (Joomla) bearbeiten und automatisiert aus der Datenbank erstellen? Glaub mit Joomla kann man ja auch automatisiert PDF Dateien erstellen, oder? Gruß Ingo
Datum:
> sieht sehr gut aus. Wie sehen denn die Dokumentation aus wenn einzelne > Bits eine bestimmte Bedeutung haben? Das könnte man da problemlos einbauen, z.B etwas eingerückt. > Allerdings müsste man dafür TEX installieren um es zu bearbeiten. Oder > ist das ein Format dass man mit OpenOffice oder anderen Programmen > öffnen könnte? Das Tex-Quell-Format ist reiner Text ;-). Okay, die Syntax ist etwas anders. Du kannst den auch mit Edit öffnen, um aber ein formatiertes Dokument zu erstellen brauchst du Tex. In meinem Fall habe ich es in eine PDF-Datei gewandelt. Das gute daran, du kannst den "Quelltext" in GIT oder was auch immer verwalten und Änderungen verfolgen. > Warum kein Dateiformat wofür man kein spezielles Programm für benötigt? Ich finde PDF schon als normales Format, es ist allerdings nur der Output. > Kann man die Datei denn auf der Webseite (Joomla) bearbeiten und > automatisiert aus der Datenbank erstellen? Glaub mit Joomla kann man ja > auch automatisiert PDF Dateien erstellen, oder? Nein, das wäre mit viel Aufwand verbunden. Das mit dem Bild war auch nur ein Vorschlag wie man es machen könnte.
Datum:
Angehängte Dateien:Zur 2107: Ich habe die Adapterplatine jetzt fertig und werde die nächsten Tage mal berichten.
Datum:
Angehängte Dateien:Hallo! bin leider erst jetzt auf diesen Thread gestoßen. Ich habe ein KM271 bei mir in Betrieb, an einer Logamatic 2105 (wie 2107, nur ohne Solarmodul-Nachrüstmöglichkeit) mit Warmwasserbereitung. Ich habe auch die Software und mittels Serial-Logger das Protokoll zum Teil ermittelt. Eine Beschreibung findet Ihr im Anhang. Im Moment kenne ich nur den Log-Modus, kann also nur die laufenden Meldungen der Heizung interpretieren, aber keine Änderungen an der Konfiguration vornehmen. Dazu müsste ich mal wieder die Windows-Software von Buderus laufen lassen und mitprotokollieren. Das KM271 könnte ich bei Gelegenheit ausbauen und fotografieren damit man die Bauteile und Verbindungen bestimmen kann, aber das kann ich erst am Wochenende. Schreibt mal, ob das Protokoll der KM-271 hilft bei Eurem Ansatz. Himtronics
Datum:
@Joachim König Das sind doch mal ein paar Daten. Sind die evtl. auch dort beschrieben: Beitrag "Re: Logamatic 2107 Schnittstelle" Das KM271-Modul setzt die RS232 auf I2C um und vice versa. Das Display-Modul fragt eine I2C-Adresse ab, die evtl. ohne Solar oder KM271 nicht auf dem Bus vorhanden ist '(Beide benutzen wohl die gleiche Adresse). Ich konnte die Displayeinheit aber nicht zur Kommunikation überreden, bzw. habe dort auch nicht weiter geforscht, da die Daten auch direkt abgegriffen werden können, mit direktem Zugriff auf das EEProm (I2C). Viele Daten können eigentlich nur im EEProm gespeichert werden, den Aufbau der Daten zu finden ist mit einem KM271 mit Sicherheit viel einfacher ... Einige Bilder mit erkennbaren IC Bezeichnungen und Leiterbahnen wären super ! Einige Fragen habe ich noch: Was ist die Pumpenleistung ? Braucht man für die Steuerung ein extra Modul ? Was sind das für Werte: Brennereinschalttemperatur/Brennerausschalttemperatur ??? Welche Temperaturen werden dort gemessen ?
Datum:
@Rudi schrieb: > Was sind das für Werte: > Brennereinschalttemperatur/Brennerausschalttemperatur ??? Welche > Temperaturen werden dort gemessen ? das sind keine Messwerte sondern die Temperatur, bei der der Brenner ein- beziehungsweise ausschaltet. Die ist abhängig von der Aussentemperatur, dem Gebäudetyp etc, also wenn's draußen kalt ist, soll das Wasser im Kessel heißer sein als wenn's lau ist, insbesondere wenn kein Mischer vorhanden ist. So ähnlich jedenfalls.
Datum:
Angehängte Dateien:Hallo, habe es endlich geschafft Ein Java-Programm zum laufen zu bekommen. Es werden nur Telegramme mit Daten mitgeloggt. Man muss den PC mit dem Sklaven verbinden der das Break erkennt und einen Rahmen um die Daten setzt. Dannach noch die richtige Schnittstelle auswählen und 'Verbinden' drücken. Wenn Java installiert ist muss man nur das ZIP entpacken und emslog.jar oder emslog.bat mit doppelklick starten. Wenn man EMSlog schließt ohne vorher auf 'Verbinden' zu klicken muss man EMSlog mit dem TaskManager beenden. Es gibt noch unter bestimmten Bedingungen Lesefehler auftreten. Sonst kann das Programm noch garnichts. Jetzt kann ich endlich mit der Programmierung anfangen ;-) Für die Mitleser die keine Hardware zum Testen haben können sich ja das Screenschot ansehen. Gruß Ingo
Datum:
Angehängte Dateien:So, hier mal 2 Bilder des KM271. Als Chip ist ein Sipex SP232 ACT 9524 drauf, und ein paar Kondensatoren, Widerstände, eine Diode. Joachim
Datum:
Sehr schön. Also gibt es doch noch 2 Leitungen für eine UART auf dem Bus. Empfängst du, auch ohne den Logmodus zu aktivieren, Daten auf der UART ? Wird dort zufällig zyklisch etwas gesendet ?
Datum:
Rudi schrieb: > Sehr schön. Also gibt es doch noch 2 Leitungen für eine UART auf dem > Bus. > Empfängst du, auch ohne den Logmodus zu aktivieren, Daten auf der UART ? > Wird dort zufällig zyklisch etwas gesendet ? Nein, da ist Ruhe. Werde mir bei Gelegenheit mal das Protokoll ansehen für das Ändern der Konfiguration. Die Konfiguration die am Anfang nach dem Aktivieren des Protokoll-Modus gesendet wird, kann ich schon zum Teil interpretieren, z.B. die Zeiten für die Heizphasen.
Datum:
Hallo Rudi, kannst Du mir ein wenig über die Struktur Deiner mySQL-Datenbank geben? Wie hast Du die angelegt? Pro Telegramm eine Tabelle? Die unterschiedlichen Telegramme kommen ja zu unterschiedlichen Zeit und natürlich unterschiedlich oft. Belegen eigentlich nicht benutzte Werte Speicherplatz? Denke schon. Was für Datenformate hast Du verwendet. Hätte nie gedachte dass es soooooooo viele Datenformate geben kann. Bei der Datenbank soll ja nicht wirklich unütz Platz verschwendet werden. Gruß Ingo
Datum:
noch vergessen.... Wie groß ist denn Deine Datenbank mit Werten für einen Monat? Gruß Ingo
Datum:
Angehängte Dateien:@IngoF Ich speicher keine Datensätze von der Anlage in der Datenbank. Die Logdateien belaufen sich in etwa auf 10GB über gefühlte 3 Monate. In der Datenbank werden nur relevante Daten gespeichert. Temperaturen, Brenner, Gaszähler usw.. Ich habe bisher 2.5M Einträge vom Juli an. Der Durchschnitt ist im Laufe der Zeit durch Optimierung aber weniger geworden. Der Aufbau der Datenbank ist für eine Query nicht optimal, aber ich sehe erstmal nichts einfacheres. Es gibt eine Tabelle mit IDs der Sensoren und die Datentabelle. SOURCE-TABLE:
CREATE TABLE `SOURCE` ( `ID` int(11) NOT NULL auto_increment, `ADDR` char(200) NOT NULL, PRIMARY KEY (`ID`), KEY `ADDR` (`ADDR`) ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC |
Die ADDR ist bei mir der MAC angelehnt, z.B. 00:12:33:12:21:55:45:45 oder auch HE:IZ:00:00:00:00:00:01. Da ich mehrere Sensoren habe, und es auch mehr werden sollen, ist das erstmal für mich wichtig die Daten nach dem Absender zu unterscheiden. Die Datentabelle ist dann nicht sooo optimal, hält sich aber in Grenzen:
CREATE TABLE `DATA` ( `ID` int(10) unsigned NOT NULL auto_increment, `SOURCE` int(11) NOT NULL, `TYPE` int(10) unsigned NOT NULL, `DATA` char(200) NOT NULL, `TIME` datetime NOT NULL, PRIMARY KEY (`ID`), KEY `SOURCE_TYPE_TIME` (`SOURCE`,`TYPE`,`TIME`), KEY `SOURCE` (`SOURCE`), KEY `TYPE` (`TYPE`), KEY `TIME` (`TIME`) ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 PACK_KEYS=1 ROW_FORMAT=DYNAMIC |
Bei der Tabelle: SOURCE : Source-ID aus der Tabelle SOURCE TYPE: Typ der Daten, kann für jeden Sensor selbst festgelegt werden DATA: die Daten TIME: UTC Zeitstempel
Datum:
>Ich speicher keine Datensätze von der Anlage in der Datenbank. Die >Logdateien belaufen sich in etwa auf 10GB über gefühlte 3 Monate. > >In der Datenbank werden nur relevante Daten gespeichert. Temperaturen, >Brenner, Gaszähler usw.. Da hast Du mich falsch verstanden. Natürlich wollte ich auch keine unnützen Daten speichern. -------------------------------------------------------------------------- Mal angenommen jedes Telegramm hätte 22Byte. Das Telegramm 0815 kommt alle 10 Sekunden und hat 10 Temperaturen (0815=2 +10*2 pro Temperatur). Das Telegramm 4711 kommt jede Sekunde und hat eine Temperatur. (4711=2Byte +1*2Byte für Temperatur +18Byte noch unbekannt). Ich hatte jetzt gedacht: eine Tabelle für Telegramm 0815 mit 10 Spalte/Werten und 6 Einträgen pro Minute. Die zweite Tabelle für Telegramm 4711 mit einer Spalte/Wert und 60 Einträgen pro Minute. -------------------------------------------------------------------------- Also hätte man hinterher 2 Tabellen mit etwa 60Byte pro Minute. > `DATA` char(200) NOT NULL, Sorry, aber bin noch nicht soweit mit mySQL... Ich hoffe nicht dass für jeden Sensor mit 200 Zeichen gespeichert wird. Gruß Ingo
Datum:
> > `DATA` char(200) NOT NULL, > Sorry, aber bin noch nicht soweit mit mySQL... Ich hoffe nicht dass für > jeden Sensor mit 200 Zeichen gespeichert wird. Doch, aber dafür gibt es dann: PACK_KEYS=1 ROW_FORMAT=DYNAMIC ;-) Ich wollte erst ein float, aber evtl. kommen doch noch andere Daten. > Ich hatte jetzt gedacht: > eine Tabelle für Telegramm 0815 mit 10 Spalte/Werten und 6 Einträgen pro > Minute. > Die zweite Tabelle für Telegramm 4711 mit einer Spalte/Wert und 60 > Einträgen pro Minute. Wenn du keine Daten verlieren willst kannst du es so machen. Im Zweifelsfall einfach eine Tabelle anlegen und mit Pseudodaten füllen und schauen wie groß die Tabelle etwa wird. Das füllen der Tabelle ist nicht das Problem. Die Abfragen für die Grafik usw. sind bei vielen Daten sehr CPU lastig. Speicherplatz ist eigentlich kein Problem.
Datum:
@Joachim K. > Nein, da ist Ruhe. Werde mir bei Gelegenheit mal das Protokoll > ansehen für das Ändern der Konfiguration. Die Konfiguration > die am Anfang nach dem Aktivieren des Protokoll-Modus gesendet > wird, kann ich schon zum Teil interpretieren, z.B. die Zeiten für > die Heizphasen. Ich konnte es mehr oder weniger verifizieren. Ohne eingesteckte Platine lässt sich der Modus nicht aktivieren. Bei erkanntem/eingeschaltetem zweiten Heizkreis werden dort andere Daten gesendet und es wird nicht auf 0x02 oder 0x10 geantwortet.
Datum:
Moin allerseits, ich hänge mich hier mal mit dran, da ich schon ne Weile mitlese ... Wir haben eine GB142 mit ner RC35. Das Ganze Projekt klingt recht spannend, aber einiges habe ich noch nicht verstanden. Es sind 2 unterschiedliche Systeme, ja? Einmal die Logamatic2107 und einmal die RC30/35 Serie, wobei aber beide Systeme das gleiche Protokoll haben? Technische Möglichkeiten wie Oszi stehen mir leider nicht zur Verfügung, daher könnte ich höchstens versuchen bei der weiteren Entschlüsselung zu helfen!? Benötigt wird also der Klinkenstecker für die RC3x und dann eine kleine Platine zur Umsetzung. Bei mir läuft eh ein Homeserver 24/7 , auf dem die Daten dann verarbeitet werden könnten. SQL ist ebenfalls vorhanden. Das Signal kann man dann einfach über die RS232 Schnittstelle im PC verwerten oder wird noch weiteres benötigt wie z.B. ein µC zur Umsetzung des Datenstroms auf der Platine und dann erst die Kommunikation zum PC? Gruß Jens
Datum:
Unter Beitrag "eBus CRC Berechnung nachvollziehen" wird über den eBus diskutiert. Der EMS-Bus scheint dem eBus ja sehr ähnlich. Unter http://www.mikrocontroller.net/attachment/54958/eB... ist auf S.28 ein eBus Interface dargestellt. Würde das auch für den EMS-Bus gehen? (vielleicht nicht unbedingt 24V Versorgung) Was meint ihr dazu? Gruss Matthias
Datum:
@Jens H. > Es sind 2 unterschiedliche Systeme, ja? Ja. > Einmal die Logamatic2107 und einmal die RC30/35 Serie, wobei aber beide > Systeme das gleiche Protokoll haben? Nein. > Technische Möglichkeiten wie Oszi stehen mir leider nicht zur Verfügung, > daher könnte ich höchstens versuchen bei der weiteren Entschlüsselung zu > helfen!? Ja, die CRC ist bei der RC30/35 noch nicht ganz klar. > Benötigt wird also der Klinkenstecker für die RC3x und dann eine kleine > Platine zur Umsetzung. Ja. > Das Signal kann man dann einfach über die RS232 Schnittstelle im PC > verwerten oder wird noch weiteres benötigt wie z.B. ein µC zur Umsetzung > des Datenstroms auf der Platine und dann erst die Kommunikation zum PC? Ein uC vor dem PC ist besser, siehe oben die Posts.
Datum:
@Matthias: > Unter Beitrag "eBus CRC Berechnung nachvollziehen" wird über den eBus > diskutiert. Der EMS-Bus scheint dem eBus ja sehr ähnlich. > Unter > http://www.mikrocontroller.net/attachment/54958/eB... > ist auf S.28 ein eBus Interface dargestellt. Würde das auch für den > EMS-Bus gehen? (vielleicht nicht unbedingt 24V Versorgung) Was meint ihr > dazu? Könnte funktionieren. Musste man aber auf 12V auslegen. Evtl. sind die 9600 Baud zu schnell, muesste man mal aufbauen und messen.
Datum:
Hallo Rudi, danke für die Antworten! Ein µC davor ist besser, aber nicht zwingend notwendig oder wird auf jeden Fall benötigt? Oder hängt das von der verwendeten Software auf dem Rechner ab? Ich war mir sicher das mit dem µC gelesen zu haben, habe es aber vorhin nicht wiedergefunden und deswegen gefragt ;-) Die main.c von Mario hab ich gefunden, aber leider noch kein Schaltbild um eine Platine aufzusetzen. Wobei ihr ja scheinbar unterschiedliche Versionen einsetzt, da Mario mit nem Mega128 arbeitet und du nen Mega8 einsetzt. Magst du vielleicht das Layout preis geben? @Matthias: Falls die eBus Platine funktionieren sollte, wäre das natürlich auch noch ne Möglichkeit ;-) Sorry für die vielleicht blöde Frage, aber direkt von Buderus gibt es ja noch ein RS232 Gateway für die aktuellen Thermen, das ist aber nicht die Logamatic 2107 Schnittstelle oder doch? Gruß Jens
Datum:
@ Jens H. > danke für die Antworten! Ein µC davor ist besser, aber nicht zwingend > notwendig oder wird auf jeden Fall benötigt? Oder hängt das von der > verwendeten Software auf dem Rechner ab? Ein PC ist zu langsam bzw. hat kein Realtime. Also uC und fertig. > aber leider noch kein Schaltbild > um eine Platine aufzusetzen. Wobei ihr ja scheinbar unterschiedliche > Versionen einsetzt, da Mario mit nem Mega128 arbeitet und du nen Mega8 > einsetzt. > Magst du vielleicht das Layout preis geben? Ein Mega8 und dann VCC/GND RX/TX, also nichts kompliziertes was unbedingt ein Layout erfordert. Fertige Eval. Boards gibts ja wie Sand am Meer.
Datum:
Also ich habe auch den ATmega8. Habe mir ein Komplettkit mit USBprog fur etwa 69 Euro gekauft. Ist alles drin was man zur Programmierung für den Atmega8 braucht. Am Service-key gibt es zwei Kontakte die das Signal mit +-2,5Volt haben. Diese habe ich einfach ohne weitere Technik auf den RX-Eingang des Atmega8 gelegt. Der Quellcode für den ATmega8 wurde hier schon von Rudi gepostet. Den PC schließt man am TX-Ausgang des Atmega8 an. Bisher läuft es nur am Service-Key direkt. Wenn man die Platine am Bus anschließen will benötigt man auf jeden Falle ein Schaltung die ich mir auch noch zulegen werde. Ich habe es schon, mit Hilfe von Rudi geschafft ein Java-Programm zu schreiben dass die Daten mittloggt und in der MySQL-Datenbank abspeichert. Wenn die letzten Fehler weg sind werde ich hier gerne den Download-Link posten. Die Visualisierung kommt natürlich auch noch rein. Vermutlich mit GNUPlot oder direkt im Java-Programm. Gruß Ingo
Datum:
Hallo ihr zwei, vielen Dank für die Hinweise Da ich KEINEN Service-key habe, muss ich direkt an den Bus. Sehe ich das richtig, das Ingo mit Service-Key arbeitet und Rudi ohne oder auch mit? Denn Ingo schreibt ja ohne Service-Key benötigt man ne Schaltung dafür!? Daher auch meine Frage nach einer passenden Platine ... Denn wenn dafür noch ne Schaltung benötigt wird, dann könnte man die ganze Sache auch auf eine Platine basteln. Gruß Jens
Datum:
Also an der Service-Key-Buchse gibt es das Bus-Signal mit +-2,5 Volt. Ab Bus (also dort wo die RC30 oder RC35 dran hängt) kommen 12 +-2,5 Volt an und können nicht einfach ohne Schaltung an den ATmega8 angeschlossen werden. Habe nur zwei Brücken auf der Platine eingelegt, ein Adapterkabel ohne Elektronik gebastelt und es hat funktioniert. Habe die CRC-Berechnung noch mal mit dem Generator-Polynom berechnet. Hat laeider nicht funktioniert. Werde mal wenn ich Zeit habe einfach alle möglichen Berechnungen durchlaufen (Startwerte 0x00-0xff, XOR am Ende 0x00-0xff und Generatorpolynome 0x00-0xff) und dann sollte sich das Geheimnis irgendwie lüften lassen. Es ist jedenfalls kein simples XOR oder addierung über alle Werte. Standart CRC-8 funktioniert auch nicht. Aber für das simple mitloggen braucht man erst mal keine CRC. Aber irgendwann möchte ich ja auch mal die Schaltprogramme ändern. spätestens dann geht es nicht ohne CRC-Berechnung. Gruß Ingo
Datum:
Angehängte Dateien:Zur 2107: Anbei die ersten Daten der Platine. Der Anfang (rot) ist noch vom Versuchsaufbau mit einigen Störungen auf den langen Datenleitungen. Was sich die Leitungen eingefangen hatten, wenn der Brenner startet, ist schon nicht schlecht.
Datum:
@IngoF
> Habe die CRC-Berechnung noch mal mit dem Generator-Polynom berechnet.
Ich habe es auch schon mit Bruteforce versucht. Filter dir einfach mal
eine kurze Nachricht, die sich zyklisch ändert. Am besten das Datum.
Dort sieht man sehr schön wie sich die CRC ändert. Für ein paar dieser
Nachrichten kann die CRC berechnet werden, und für andere wieder nicht.
Sehr komisch die Berechnung.
Ich habe mir diese Nachrichten genommen (etwa 10) und habe dann per
Bruteforce das gemeinsame Polynome/Startwert/XOR-Endwert gesucht. Leider
ohne Erfolg (Fehler nicht ausgeschlossen).
Datum:
Bin auch gerade dabei. Habe zwei Nachrichten genommen und schreibe gerade eine BatchDatei.... Welchen Teil hast Du denn zur Berechnung eingeschlossen? vielleicht werden die ersten (adress)Bytes ja nicht mit einbezogen. Versuche mich gerade an diesen beiden: 10 88 14 00 03 6e 00 10 89 29 00 01 90 00 Berechne die Checksumme über alles inkl. der Prüfsumme (6e und 90) und ignoriere das break (00). Dann sollte beim richtigen Polynom oder Berechnung 00 als Prüfsumme herauskommen. Gruß Ingo
Datum:
> Welchen Teil hast Du denn zur Berechnung eingeschlossen? > vielleicht werden die ersten (adress)Bytes ja nicht mit einbezogen. Deswegen habe ich immer den gleichen Nachrichtentyp genommen. Da sollte es bei CRC8 keine Probleme geben, da der Startwert immer gleich ist. > Berechne die Checksumme über alles inkl. der Prüfsumme (6e und 90) und > ignoriere das break (00). Ja. > Dann sollte beim richtigen Polynom oder Berechnung 00 als Prüfsumme > herauskommen. Genau.
Datum:
@Jens H.: > Daher auch meine Frage nach einer passenden Platine ... Denn wenn dafür > noch ne Schaltung benötigt wird, dann könnte man die ganze Sache auch > auf eine Platine basteln. Ohne Service-Key benötigst du eine kleine Schaltung für den RX. Der MEGA8 wäre dafür geeignet, da man die Kommunikation zur Heizung über eine Software-UART realisieren muesste (Frame-Error). Der MEGA hat ja nur eine UART. ...
Datum:
Mario schrieb: > @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 @Rudi als Antwort schriebst du, der Mega8 hat nur einen Usart. An Rx den EMS-Bus und an Tx kommen die Daten raus ???? Dann kannst du aber doch nicht ZUM Bus schreiben ??? Verwirrung ??? Noch `ne Frage: Würdest du das Hex und die Configuration dafür rausrücken? Gruß Helmut
Datum:
@Helmut Also zur Zeit gibt es nur ein "Interface" zum loggen. Wenn man schreiben will benötigt man entweder einen zweiten UART oder einen zweiten ATMega8. Allerdings müsste man sich noch Gedanken über "Schaltung" machen die auch auf dem selben Bus senden <b>und</b> empfangen kann. Aber darüber kann man sich Gedanken machen wenn die CRC bekannt ist. Ohne die CRC-Berechnung nützt das "senden können" leider ganrichts wenn die Heizung die wegen Übertragungsfehler ignoriert. Und jedes Telegramm evtl. 256 mal zu senden ist auch keine Lösung. Habe gerade ein Batch Datei geschrieben die die CRC-Berechnung für fast alle Parameter die man angeben kann durchführt. Es sind 1048576 Berechnung für die mein PC vermutlich 26 Stunden brauchen wird. Dummerweise wird die LOG-Datei etwa 8MByte groß und muss dann noch nach den richtigen Werten durchsucht werden. Vielleicht hat ja jemand eine Idee oder kann ein auswertescript oder Programm schreiben. jede errechnete CRC steht als Dezimalzahl in einer Zeile mit einem Doppelpunkt als erstes Zeichen. Jeder Block besteht aus 4 Zeilen (4Telegramme). Die Datei muss nach vier gleichen aufeinanderfolgenden CRC-Prüfsummen durchsucht werden. Eventuell reicht schon ein durchsuchen nach vier aufeinander folgenden 0-CRC. Gruß Ingo
Datum:
Ups.. das war alles nicht für Helmut gedacht.... @Helmut. Der C-Quelltext wurde von Rudi ja schon gepostet. Kann aber auch gerne die HEX-Datei hier hochladen die ich daraus erzeugt habe, falls Rudi nicht schneller ist. Allerdings ist mein PC mit der HEX-Datei gerade mit CRC-Berechnungen beschäftigt und ich muss warten bis er damit fertig ist. Die Datei ist auf der anderen Partition :( @all wer eine Idee hat hier mal eine Kostprobe der CRC-Datei die gerade entsteht:
FE 06 00#------------------------ :154 :222 :24 :216 01# :89 :123 :24 :27 10# :192 :226 :126 :130 11# :3 :71 :126 :65 FF 06 00#------------------------ :154 :71 :216 01# :89 :123 :24 :27 10# :226 :126 :124 :130 11# :39 :71 :12 :65 |
Gruß Ingo
Datum:
@IngoF Ich habe hier: http://www.nightmare.com/~ryb/code/CrcMoose.py noch ein nettes Skript für die CRC-Berechnung gefunden.
Datum:
Danke für den hinweis... Aber meine CRC-Berechnung müsste bald fertig sein und das Script wird vermutlich auch nicht schneller als die JAVA-Version sein. Fragt sich nur wie ich das Ergebnis durchforsten soll... Gruß Ingo
Datum:
Habe für diese Telegramme die CRC berechnet: 108811241829 108811181B52 10881400036e 108929000190 Habe fast alle möglichen Kombinationen berechnen lassen: Polynom: 0x00 bis 0xff Startwert 0x00 bis 0xff Eingabe gespiegelt: true,false Ausgabe gespiegelt: true,false Ein abschließendes XOR habe ich nicht eingegeben weil die Berecnung sonst 280 tage gedauert hätte. Aber wenn man bei den Telegrammen nach gleicher Prüfsumme sucht erübrigt sich ja die Berechnung, oder? Nur das Durchsuchen der Ergebnisse ist nicht ganz sooo einfach. Habe schon mal versucht die vorkommenden Nullen mit Zeilennummer (findstring in DOS) in eine Textdatei zu exportieren. Die Ergebnisse habe ich in Excel geladen und durch Berechnung die vierer Blöcke zu finden (Wert Zeile)-(Wert-Zeile-3). Also sollte als ergebnis 3 für die vierer Blöcke herauskommen. Alle Zeilen mit falschen Ergebnis gelöscht. Dann den Abstand mit Exel errechnet. Dabei kam immer ein Abstand zwischen den Polynomen von 128 oder 256. Also gabe es wenn meine Überlegungen richtig waren nur bei 0x00 und 0x80 zu einem vierer Block mit CRC=0 Demanch wurde keine richtige CRC erkannt oder die CRC würde anschliend noch mal mit XOR verknüpft. Also müsste man nicht nach einem vierer Block 0 suchen sondern nach einem Block mit vier selben CRC. Keine Ahnung wie ich das anstellen könnte. mit Excel kann ich die Ergebnisse natürlich nicht einlesen weil max 64k Zeilen erlaubt sind. Gruß Ingo
Datum:
Schau dir mal die Betriebsstunden an, So schwer kann die CRC nicht sein ... Wenn sich nur 1 Byte ändert (bei den Betriebsstunden das letzte vor der CRC) funktioniert ein einfaches XOR aller Werte, um den gleichen Wert für alle Nachrichten zu erhalten. Wenn sich das vorletze Byte ändert, dann sieht es ein wenig anders aus, scheint dann ein etwas anderes XOR zu sein (bit shuffle etc.). Mal ein Beispiel: 08 10 14 00 1A 7C D8 11 : A3 08 10 14 00 1A 7C DA 13 : A3 08 10 14 00 1A 7C DC 15 : A3 08 10 14 00 1A 7C DE 17 : A3 08 10 14 00 1A 7C E0 29 : A3 08 10 14 00 1A 7C E2 2B : A3 08 10 14 00 1A 7C E4 2D : A3 08 10 14 00 1A 7C E6 2F : A3 08 10 14 00 1A 7C E8 21 : A3 08 10 14 00 1A 7C EA 23 : A3 08 10 14 00 1A 7C EC 25 : A3 08 10 14 00 1A 7C EE 27 : A3 08 10 14 00 1A 7C F0 39 : A3 08 10 14 00 1A 7C F2 3B : A3 08 10 14 00 1A 7C F4 3D : A3 08 10 14 00 1A 7C F6 3F : A3 08 10 14 00 1A 7C F8 31 : A3 08 10 14 00 1A 7C FA 33 : A3 08 10 14 00 1A 7C FC 35 : A3 08 10 14 00 1A 7C FE 37 : A3 08 10 14 00 1A 7D 00 CB : A0 08 10 14 00 1A 7D 02 C9 : A0 08 10 14 00 1A 7D 04 CF : A0 08 10 14 00 1A 7D 06 CD : A0 08 10 14 00 1A 7D 08 C3 : A0 08 10 14 00 1A 7D 0A C1 : A0 08 10 14 00 1A 7D 0C C7 : A0 08 10 14 00 1A 7D 0E C5 : A0 08 10 14 00 1A 7D 10 DB : A0 08 10 14 00 1A 7D 12 D9 : A0 08 10 14 00 1A 7D 14 DF : A0 08 10 14 00 1A 7D 16 DD : A0 08 10 14 00 1A 7D 18 D3 : A0 08 10 14 00 1A 7D 1A D1 : A0 08 10 14 00 1A 7D 1C D7 : A0 08 10 14 00 1A 7D 1E D5 : A0 08 10 14 00 1A 7D 20 EB : A0 08 10 14 00 1A 7D 22 E9 : A0 08 10 14 00 1A 7D 24 EF : A0 08 10 14 00 1A 7D 26 ED : A0 08 10 14 00 1A 7D 28 E3 : A0 08 10 14 00 1A 7D 2A E1 : A0 08 10 14 00 1A 7D 2C E7 : A0 08 10 14 00 1A 7D 2E E5 : A0
Datum:
Na dann bruach ich ja garnicht weitersuchen.... Dann kann es keine "richtige" CRC-Berechnung sein sondern irgendwelchen Berechnungen. Kann es vielleicht sein dass es doch keine Prüfsumme ist? Bei deinen Beispielen gibt es ja nur 2 Prüfsummen für 20 verschiedene Telegramme. Was macht denn dann eine Prüfsumme für einen Sinn wenn die Prüfsumme keine Sicherheit bietet? Bei anderen Telegrammen habe ich allerdings festgestellt dass sich die "Prüfsumme" schon ändert wenn sich nur ein einziges Bit geändert hat. 08 00 18 00 07 01 11 00 00 00 00 00 60 80 00 02 0D 01 1D 00 00 0C 30 48 00 CB FF 00 00 4B 00 08 00 18 00 07 01 10 00 00 00 00 00 60 80 00 02 0D 01 1D 00 00 0C 30 48 00 CB FF 00 00 94 00 Gruß Ingo
Datum:
Angehängte Dateien:Aus den Fotos habe ich mal den angehängten Schaltplan extrahiert. Die Werte für die Widerstände und Kondensatoren kann ich nicht erkennen. R2, 1003 (100k) konnte ich erkennen. Die Widerstände werden möglicherweise für die Modulerkennung benötigt. Ich habe versucht ohne die R/C-Beschaltung mit 2400,8N1 ein Byte 0x02 (STX) zu schicken, darauf erhalte ich keine Antwort (DEL, 0x10). Wird ein eingestecktes KM271 irgendwo im Display-Menue angezeigt?
Datum:
@IngoF > Kann es vielleicht sein dass es doch keine Prüfsumme ist? > Bei deinen Beispielen gibt es ja nur 2 Prüfsummen für 20 verschiedene > Telegramme. Was macht denn dann eine Prüfsumme für einen Sinn wenn die > Prüfsumme keine Sicherheit bietet? Nene, der letzte Wert ist die XOR über alle Daten+CRC ;-) Die CRC8 ist eine schwache Prüfsumme, aus diesem Grund ändert sich die auch relativ gleichmaessig mit den Daten. Je nachdem welches Bit sich in welchem Byte ändert, geht es in die CRC anders mit ein. Es ist auf alle Fälle ist die CRC kein einfaches XOR.
Datum:
> Wird ein eingestecktes KM271 irgendwo im Display-Menue angezeigt?
Im Installationsmenue erscheint unter KESSEL der Menuepunkt
ABGASTEMPERATURSCHWELLE, wenn das KM271 erkannt wurde.
Datum:
Rudi schrieb: > Nene, der letzte Wert ist die XOR über alle Daten+CRC ;-) Dann habe ich Dich falsch verstanden.. Ich dachte die A3 und A0 wäre die Prüfsumme... deswegen auch meine Verwunderung. 20 verschiedene Telegramme und jedesmal die Prüfsumme "A3". Was ist denn die A3? > Je nachdem welches Bit sich in welchem Byte ändert, geht es in die CRC > anders mit ein. Es ist auf alle Fälle ist die CRC kein einfaches XOR. Hatte es so verstanden dass eine CRC durch eine Polynomdivision errechnet wird. Wenn die anders errechnet wird ist es keine CRC sondern nur eine andere Art der Prüfsumme, oder habe ich das falsch verstanden. Hatte auch mal einige Prüfsummen für Telegramme mit XOR berechnet und habe keine Übereinstimmung gefunden. Habe wohl was falsches berechnet.... Werde das auch mal testen... Gruß Ingo
Datum:
Angehängte Dateien:@Rudi: Richtig, das R/C Netz R1/R2/C5 stimmte nicht. Gegenüber dem Foto ist im Schaltplan der Edgeconnector um 180° gedreht, damit er mit der Aufsicht auf die Steuerung von vorne übereinstimmt. Zur Orientierung noch ein Lageplan des Modul-Steckverbinders auf der Busplatine mit den Pinnummern.
Datum:
chipshuffler schrieb:
> Wird ein eingestecktes KM271 irgendwo im Display-Menue angezeigt?
Wenn man am Drehknopf dreht erscheint nach der Kesseltemperatur dann
die Abgastemperatur. Man muss also nicht ins Installationsmenue.
Kennt jemand eine günstige Bezugsquelle für einen geeigneten PTC
für die Abgastemperaturbestimmung?
Datum:
@Joachim K. Es gibt bei B. eine Liste mit den Werten und Bezeichnungen für die unterschiedlichen PTC, hatte ich mal gesucht, aber keinen Link mehr. Die Module werden über die Temperatursensoren identifiziert und nicht über Steuerleitungen ... ;-). Die Leitungen gehen an die Steuerplatine und dann die ADC-Werte über das Flachbandkabel an die Displayeinheit, die diese dann identifiziert. Alles sehr abenteuerlich ... @chipshuffler Schau dir die Sensorleitungen besser nochmal an. Das ist übrigens eine Schutzbeschaltung für die Eingange mit Pullup oder Down. Mach dir deine Heizung nicht kaputt ! Da hängt ein ADC dran. @Ingo F. > Was ist denn die A3? XOR über die Daten und CRC > Wenn die anders errechnet wird ist es keine CRC sondern > nur eine andere Art der Prüfsumme, oder habe ich das > falsch verstanden. Ich denke das ist schon eine CRC. Evtl. etwas abgeändert. Ich habe mich damit nicht wirklich tiefgründiger beschäftigt. Ich sehe aber in den Betriebsstunden einen guten Ansatz um diese zu finden.
Datum:
Rudi schrieb: > @Joachim K. > > Es gibt bei B. eine Liste mit den Werten und Bezeichnungen für die > unterschiedlichen PTC, hatte ich mal gesucht, aber keinen Link mehr. > > Die Module werden über die Temperatursensoren identifiziert und nicht > über Steuerleitungen ... ;-). Die Leitungen gehen an die Steuerplatine > und dann die ADC-Werte über das Flachbandkabel an die Displayeinheit, > die diese dann identifiziert. Alles sehr abenteuerlich ... An das KM271 kann man einen PTC zum Messen der Abgastemperatur anschließen (FG 1 und 2 in meinem Photo der Platine). Ich suche mal den Wert raus.
Datum:
Angehängte Dateien:@Joachim K.: Nach der Kennlinie müsste die 2107 mit ca. 10k als Ersatz für den Abgfasfühler-PTC erkennen. Ich habe ein Paar Widerstände aus deinem Foto erraten (siehe Schematic) und Testweise an die 2107 angeschlossen (ohne den FG-Fühler). Damit erkennt die 2107 das "Modul" noch nicht. Kannst du nochmal schauen, welche Werte die Widerstände (bzw. womit sie beschriftet sind)auf deiner Platine haben? Ich vermute aber, dass die Kommunikation über das KM271 auch laufen müsste, wenn kein Abgasfühler angeschlossen ist. Der zweite ADC Eingang (festverdrahtet mit Widerstand) auf dem K4 Board-Stecker ist dann wohl für den Solar-Fühler (FM244).
Datum:
Die Verbindung bei C6/C7/R3 ist nicht klar. Ist C6 mit C7 verbunden und C7 mit R3 ?
Datum:
Hallo, Zum EMS-Telegrammaufbau habe ich noch eine Kleinigkeit herausgefunden: das Erst Byte ist die Absenderadresse, das zweite Byte die Zieladresse. Wenn das Ziel auf dieses Telegramm antworten soll ist das Bit 7 gesetzt. 10 88 ...ist ein Telegramm von 10 (RC30/RC35) zu 08 (UBA3/MC10) mit der Aufforderung zu antworten. Die UBA3/MC10 antwortet dann mit dem Telegramm 08 10 ... Alle ein Byte Telegramme mit Bit 7 gesetzt ist ein normales Polling. 90 soll dann 10 aufordern zu antworten. Wenn die RC30 oder RC35 angeschlossen ist antwortet diese. Wenn es nichts besonderes gab antwortet dir RC30/35 nur mit der eigenen Adresse 10 Wenn Daten gesendet werden kommt als nächstes ein Byte für den Telegrammtyp gefolgt von den Daten und zum Schluss die Prüfsumme. Das Break ist immer der Abschluss vom Telegramm. Habe inzwischen auch ein eigenes Interface mit einem OP damit ich nicht immer zum Dachboden muss um was zu testen. Jetzt kann ich mich auch parallel zur RC30 dranhängen und mitloggen. Gruß Ingo
Datum:
Arrrggggghhhhhhhh... Und ich wundere mich wieso der Thread jetzt so riesig geworden ist. RE-ABO... aus irgend einem Grund habe ich keine Mails mehr bekommen. Sorry Leute, aber ohne die Mailbenachrichtigungen habe ich den Thread irgendwie vergessen. Habe eben mal alles neue seit Oktober überflogen und muss sagen: @Rudi: Godlike! wirklich godlike. Mehr fällt mir dazu gerade nicht ein :) Die Frage nach meinem zweiten Heizkreis (nein, habe nur einen an der logamatic aktiv) hat sich ja wohl erübrigt. Ich werde mir den Thread noch vor Weihnachten nochmal im detail anschauen muessen... Freue mich jetzt schon darauf. Ich überlege mir gerade ob ich die ganzen Informationen im Wiki strukturieren soll (mittlerweile unwichtig gewordenen "schrott" natürlich ausfiltern). Besteht da interesse, dann würde ich das schön strukturiert aufbauen und den Link posten? Gruss, Malte PS: hoffentlich bleibt die mailbenachrichtigung jetzt aktiv, hab momentan wieder viel zuviel aktives im Kopf ;)
Datum:
Hallo Malte, ist eine gute Idee... Vermutlich wird das dann aber nur ein Wiki über die 2107. Oder gibt es da auch einen Bereich für den EMS-Bus (RC30/35)? Gruß Ingo
Datum:
Ne, schon beide getrennt - ich versuche halt die infos so weit es geht auseinander zu halten :-) Ich habe mich aben mal hingesetzt und versucht, alles bisher verifizierte in das Wiki zu strukturieren. Dabei ist mir aufgefallen, dass in den letzten Wochen der Wunsch nach einer Doku/Projektplattform gekommen ist. An sich kann man sowas schon per SourceForge lösen... Für die Dokumentation würde ich schon ein Wiki vorschlagen. Es kommt nur darauf an wie durchdacht man das ganze strukturiert. Ich könnte so ein Setup machen, so dass wir dann alle darin editieren können (momentan ist es halt in meinem Scratchpad wiki drin). Für Sourcen würde ich vorschlagen das ganze per SVN zu machen. http://wiki.neo-soft.org/index.php/Heizungsschnittstelle http://wiki.neo-soft.org/index.php/Heizungsschnitt... http://wiki.neo-soft.org/index.php/Heizungsschnitt... Also ich biete mich gerne an, das einzurichten und zu hosten. @rudi: sehe ich das richtig dass diese aufsteckplatine sowas wie eine eierlegende Wollmilchsau werden soll? :) Auf jeden Fall vielen Dank für deinen Breakthrough bei der 2107!
Datum:
@all: Habe ich das jetzt richtig verstanden, dass der neue Erkenntnisstand (Logamatic 2107) wie folgt aussieht: 1) KM271 ist ausser dem FG Anschluss NICHTS anderes als ein TTL->RS232 Umsetzer? 2) Auf dem Sockel K4 liegen Spannungsversorgung (24 und 5V) sowie eine asynchrone serielle Schnittstelle (RX/TX) sowie der I2C Bus (SDA/SCL) auf? 3) Temperaturen werden nicht über I2C übermittelt sondern nur über die RS232 oder eben als gemultiplexter ADC Wert am Flachbandkabel? Ich frage mich nämlich gerade ob Rudis Aufbau nötig ist oder ob es für mich auch einfacher gehen könnte (in Form einer Steckkarte für K4). Muss zu meinem Leid sagen dass ich die Bestückung von miniaturbauteilen nicht hin bekomme ;-) Temperaturen brauche ich schon, werde deshalb wahrscheinlich nicht drum herum kommen, ebenfalls die Bedieneinheit anzuzapfen :-) Gruss, Malte
Datum:
@Malte Bayer > Ich frage mich nämlich gerade ob Rudis Aufbau nötig ist oder ob es für > mich auch einfacher gehen könnte (in Form einer Steckkarte für K4). Wenn der Schaltplan für das KM271 klar ist, dann reicht es aus. Die Daten kommen dann, nach der beschriebenen Methode, über die RS232. @chipshuffler Bist du schon weiter gekommen ?
Datum:
@Malte Bayer > Für die Dokumentation würde ich schon ein Wiki vorschlagen. Es kommt nur > darauf an wie durchdacht man das ganze strukturiert. Das sieht doch schon gut aus. Hauptsache das wird für einzelne Nachrichten nicht unübersichtlich. > sehe ich das richtig dass diese aufsteckplatine sowas wie eine > eierlegende Wollmilchsau werden soll? :) Nein ;-) Die Platine ist halt aus der Not und dem bisherigen Stand der Dinge entstanden. Die Wahl der Bauteile liegt an der Platinengröße (Preis) und den vorhandenen Bauteilen. Die Datenerfassung ist auch nur ein kleiner Teil. Dazu kommen noch diverse extra Temperatursensoren an den Wasserleitungen etc.. Ich kann nur jedem die Überprüfung der richtigen Einstellungen der Heizung empfehlen, besonders bei der 2107 gibt es schon einige Überraschungen und Optimierungsbedarf. Je nach Budget für den Einbau und Heizungsbauer können da schöne Geldverbrennanlagen entstehen.
Datum:
Ja das ist schon mein Ziel dass ich das ding optimiere. Ich habe die Heizung im Februar selbst mit eingebaut (parametrisierung nicht dem heizungsmensch ueberlassen). Komisch finde ich auch dass es nur 3 Gebäudetypen gibt - völliger Quatsch bei meiner Konfiguration, da passt keine der 3 Einstellungen. Das dumme im moment ist, dass ich mir zur zeit auf dauer im Heizraum den hintern abfriere... da hats nur noch 10°C wenns draussen am Gefrierpunkt ist. Das war letztes jahr mit 32° noch anders ;-) Ich versuche mal ob ich mit den bisherigen Infos an K4 weiter komme. den Abgasfühler brauche ich ja hoffentlich nicht. Wegen dem Wiki: Sowie es weitere Infos gibt mache ich daran weiter. Ein Datagram zu dokumentieren ist da auch kein riesen Act, da kann ich ein Template für machen. Gruss & gute nacht, Malte
Datum:
Angehängte Dateien:Nach gut einer Stunde bei 10°C im Keller gibts einige neue Ergebnisse: @Rudi: Ja, die Schaltung war nicht richtig. Die Verbindung R3,C6,C7 stimmte nicht. Inzwischen wird das "Modul" erkannt und ABGAS --- wird im Display angezeigt. Ich habe dazu einen 1k Dummy-Widerstand an FG Pin 1+2 angeschlossen. Ich habe dann zum Anschluss an den PC einen USB-TTL-RS232 Adapter von FTDI http://www.ftdichip.com/Documents/DataSheets/Modul... angeschlossen. Damit umgehe ich den Umweg über RS232 und COM-Port, da das Netbook nur noch USB und keine RS232-COM-Ports hat. Hier die Verdrahtung mit den Farben aus dem FTDI-Datenblatt und den Signalen aus dem angehängten Schaltplan: Orange an UARTTX Gelb an UARTRX Schwarz an 0V Grün/Braun verbunden (RTS/CTS) Beim Einschalten sendet die 2107 mit 2400Baud,8N1 ein STX (02) als Sendeaufforderug aus. Dann folgt ein Protokoll mit der Prozedur 3964R (ein betagtes S5/S7 SPS Kommunikationsprotokoll). Danke an Joachim K. für die Fotos und die Protokollbeschreibung. Angehängt ist mein Trace (der Anfang fehlt, ist aus dem Kopf rekonstruiert). Folgende Erkenntnisse gibt es: Ein Protokollfehler wird mit NAK beantwortet (das letzte Byte ist immer die Prüfsumme als XOR vom ersten bis zum letzten Byte). 04 00 07 01 81 A5 00 E3 10 03 D6 Es gibt kein Längenbyte in der Nachricht. Der Parser sucht nach 10 03 (DLE, ETX), nach folgt die Prüfsumme. Ein DLE (10) in den Daten wird beim Übertragen verdoppelt und geht in die Prüfsummenberechnung ein (muss beim Empfangen wieder entfernt werden). Der LogMode wird mit EE 00 00 10 03 FD eingeleitet. Danach kann mit 10 (DLE) jeweils der nächste Datensatz angefordert werden. Zuerst folgt der Inhalt des EEPROMs Page 0 und 1. Das EEPROM ist in Records mit 6 Bytes+Prüfsumme eingeteilt. Die EEPROM Prüfsumme wird nicht übertragen, dafür wird ja eine Nachrichtenprüfsumme über die Nachricht neu berechnet angehängt. Die Page 0 enthält die Modus-Parameter, die Page 1 die Absenk/Heizzeiten. Die mit Adresse 0xxx beginnenden Datensätze (EEPROM-Konfiguration) haben eine Länge von 10 Bytes+Prüfsumme. Die EEPROM-Records an Adresse 0000 und 0038, sowie Adresse 0007 und 003F sind (wahrscheinlich zur Verifikation) identisch und enthalten die Heizkreis 1 und Warmwasser-Betriebsart/Soll-Temperaturen. Ein 65 ("e" für empty) in den EEPROM-Daten kennzeichnet beim Lesen und Schreiben zu ignorierende Bytes. Nach Einigen Sekunden ohne Aktivität sendet die 2107 ein STX (02) als Sendeaufforderung. Nach den EEPROM-Konfigurationsdaten folgen die Ereignisse die an einer 16-Bit Adresse mit gesetztem Bit 15 (8xxx) erkennbar sind. Diese Datensätze haben eine Länge von 5 Bytes + Prüfsumme und folgen der Beschreibung von Joachim K. Die nächste Frage ist nun, ob die Schreibzugriffe im Direktmodus mit dem Führenden Byte 0xB0 (Parameter Setzen) oder 0xDD (Direktmodus) stattfinden und welche Adressen für die Schreibzugriffe verwendet werden können.
Datum:
Mit 0xDC kommst du wieder in den Normalmodus und mit 0xDD Direktmodus. Nach 60sec. ,ohne Nachrichten, schaltet die Anlage automatisch in den Normalmodus. Der Wert z.B. 0x80 XX ist die Adresse (Heizkreis 1) und ein Offset. Es wundert mich das bei Joachim K. der Offset bei anderen Adressen nicht bei 0 anfängt. Evtl. ein Schreibfehler !? Mit B0 sollten die Parameter verändert werden können. Es kann aber sein das die Adressen anders sind. Versuch mal den Befehl 0xA1 <ADRESSE> zum lesen der Schaltuhrparameter. Oder mit 0xA2 um die Monitordaten von <ADRESSE> zu holen. Immer im Direktmodus. Sehen die Nachrichten im Normalmodus anders aus ?
Datum:
Thx Chipshuffler. Wiki geupdated. Habe eben einen KM271 Nachbau als kleine Steckkarte geroutet. Muss nochmal gegenchecken ob ich mich nicht mit den Anschlüssen vertan habe, mache so selten doppelseitige Platinen ;) Werde das ganze dann am Wochenende mal aufbauen und testen, mal sehen, wenn alles klappt bin ich ab nächster woche dabei mit Protokolltests. Gruss, Malte
Datum:
Dann denk auch gleich an Serienwiderstände in den Datenleitungen. Die Anlage rotzt ganz schon rum. Ein geschirmtes Kabel, z.B. altes USB-Kabel ist auch von Vorteil.
Datum:
@Rudi: Hatte vor den XPORT den ich hier eh noch rumliegen habe direkt auf das Steckmodul drauf zu pflastern. Dann erspare ich mir auch gleich Frostbeulen durch zu langen Aufenthalt @ 10°C und kann bequem vom Sofa aus kommunizieren ;) Gleichzeitig habe ich noch alle Anschlüsse (ausser die 4 für FG) auf einer Pinleiste ausgeführt, falls man alternativ dann doch noch nen externen RS232 Wandler einbauen möchte. Die Bestückungsseite zeigt nach hinten wenn man vor der Steuerung steht. Das heisst man hat da noch massig platz, ein Sandwitch drauf zu packen (auf der anderen Seite ist ja K3 und K1 im Weg :) Was für ne Spannung hat die Zener überhaupt? Braucht es die überhaupt? Soweit mein Verständnis da geht, begrenzt diese doch die Spannung die ich extern an FG anlegen könnte. Da da aber entweder nichts oder ein Widerstand dran hängt ist die doch an sich sinnlos oder? Selbst ein 0 Ohm Widerstand sollte da nicht weh tun, oder habe ich mich da verguckt? @all: ich verifiziere das Layout noch, wenn alles passt schmeisse ich die Boarddaten und natürlich jegliche neuen Erkenntnisse ins Wiki.
Datum:
Ist Pin 3/4 eine Versorgungsleitung ? Sollten es nicht auch 100k an 4/8 und 3/7 und dann 1k an 8/7 auch tun ? Die Diode soll wohl eher den Eingang schützen. Wenn da ein paar Meter Kabel dran kleben, fängst du dir alles ein was da so in der Luft liegt. Die Kondensatoren sind wohl eher zum Glätten der Signale gedacht, evtl. ein RC-Filter gegen Netzbrummen (R1/C7) (Versorgungsspannung???, kann da mal jemand messen???) und bei R2/C5 das gleiche für den Eingang. Die Anzeige --- als Wert, bedeutet ein Wert ausserhalb der Spec.. Beim XPORT würde ich das Gehäuseground vom Netzwerk "erstmal" nicht mit dem Ground der Anlage verbinden (wenn es nicht schon intern mit Ground verbunden ist).
Datum:
Hallo, ich habe in Verbindung mit einem Buderus Service Key versucht meine Heizung (GB-125) abzufragen. Leider konnte ich an den Pins 2,3 der RS232 des Keys keine keinerlei Daten sehen können (via Oszi). Muss der Key via Steuerzeichen aktiviert werden oder was könnte ich sonst noch falsch machen ? Wer kann mir hierzu helfen ?
Datum:
Die mitgelogten Telegramme hier haben nichts mit dem Service-Key (Hardware) von Buderus zu tun. Im Servicekey ist irgendwelche Hardware drin die die Kommunikation mit der Heizung übernimmt. Hier geht es ja um die Schnittstelle an der der Service-Key angeschlossen wird. Soweit ich weiß sendet die Buderusoriginal-Software an den Servicekey ein STX (0x2). oder ein aderes Steuerzeichen damit der Servicekey antwortet. Habe keine Ahnung wie die Kommunikation mit dem Service-Key genau läuft. Gruß Ingo
Datum:
> Ist Pin 3/4 eine Versorgungsleitung ? Vermutung: 3 = AGND, 7,4,8 sind ADC-Inputs für Vorlauf HK2, Abgas und Solar. Als ich einen der Eingänge mal mit 5V bauaufschlagt habe, zeigte die 2107 danach VORLAUF --- und einen Heizkreis 02 im Display und meinte zeigte FEH FM241 (das Mischer-Modul) wäre nicht gefunden worden. Ich habe den Heizkreis 02 dann per Menue entfernt und die Fehlermeldung verschwand. Die Kondensatoren sind als Tiefpass-Filter drin. Die grossen Vorwiderstände 100k legen wohl nur die unbenutzten ADC-Eingänge (Vorlauf, Solar) auf definierte Pegel, vermutlich wird dadurch aus das KM271 vom FM244 Solarmodul im gleichen Steckplatz unterschieden. > Sollten es nicht auch 100k an 4/8 und 3/7 und dann 1k an 8/7 auch tun ? Für einen Nachbau als Dummy reicht das. Die Werte im Schaltplan sind aus dem Foto "erraten". @Joachim K. kannst du nochmal prüfen, wie die Beschriftung der 0805 Widerstände ist? Die Kondensatoren sollten unkritisch sein (10nf-1uF). Weglassen wie bei meinem Testaufbau geht auch). Ich habe ja keine Fühler angeschlossen. @Rudi: Es sieht so aus als wäre bei den Status-Nachrichten wirklich 80 für HK1 und 81 für HK2, 84 für Warmwasser, 88 für Brenner/Kessel und 89 für sonstiges Verwendet und das nächste Byte zählt einfach von 00..xx durch. Der Versuch mit dem Direkt-Modus steht noch aus, die 3964R Prozedur lernt gerade den Schreibzugriff...
Datum:
> @Rudi: Es sieht so aus als wäre bei den Status-Nachrichten wirklich 80 > für HK1 und 81 für HK2, 84 für Warmwasser, 88 für Brenner/Kessel und 89 > für sonstiges Verwendet und das nächste Byte zählt einfach von 00..xx > durch. Die 89 ist die Konfiguration.
Datum:
Inzwischen konnte ich auch Schreibzugriffe auf die 2107 zu machen. D.h. Ein- Ausschalten (Automatik, Tag, Nacht Manuell) sind getestet und funktionieren über die KM271 Schnittstelle. Die Telegramme entsprechen der Doku für die 4311/12, bis auf die ersten beiden Bytes (B0 und ECO-CAN Adresse). D.h. das Telegramm zum Verändern der Betriebsart/Solltemperaturen: (02) 07 00 65 65 NN TT MM 65 (10) (03) (CC) 07 = TYP Heizkreis 1 00 = OFFSET 0 für Heizkreisparameter 65 = Dont Care NN = Nach-Solltemperatur in 0.5C TT = Tag Solltemperatur in 0.5C MM = Betriebsart (00=Manuell Nacht, 01=Manuell Tag, 02=Automatik) CC = XOR-Prüfsumme In Klammern das 3964R Framing. Eine Umschaltung DD/DC Direktmodus/Normalmodus scheint nicht erforderlich zu sein. Zum Senden wird vorher 0x02 geschickt, die 2107 Antwortet mit 0x10. Dann folgt das Telegramm (s.o) mit DLE(0x10), ETX(0x03) und Prüfsumme am Ende. Bei fehlerfreiem Empfang antwortet die 2107 wieder mit DLE(0x10). Warmwasser Parameter ändern: (02) 0C 07 65 65 65 WW 65 65 10 03 CC 0C = TYP Warmwasser 07 = OFFSET 7 für Warmwasserparameter 65 = Dont care WW = Warmwasser Solltemperatur in 1.0C CC = XOR Prüfsumme Betriebsart Warmwasser ändern: (02) 0C 0E MM 65 65 65 65 65 10 03 CC MM = Betriebsart (00=Manuell Nacht, 01=Manuell Tag, 02=Automatik) Danach sendet die 2107 alle durch den Schreibzugriff veränderten Ereignisse. Ich sehe am Ende übrigens noch Ereignisse vom Typ 0x91 die in keiner 4311/12 Doku beschrieben sind: TYP 91 ADDR=0x9142 0 TYP 91 ADDR=0x9143 32 TYP 91 ADDR=0x9144 110 TYP 91 ADDR=0x9145 0 TYP 91 ADDR=0x9146 255 TYP 91 ADDR=0x9147 0 TYP 91 ADDR=0x9148 0 TYP 91 ADDR=0x9149 0 TYP 91 ADDR=0x914a 0 TYP 91 ADDR=0x914b 0 TYP 91 ADDR=0x914c 0 TYP 91 ADDR=0x914d 0
Datum:
Na das ist doch mal etwas. Evtl. ist die 91 auch ein Status der Displayeinheit ...
Datum:
Hat eigentlich irgendjemand einen Service-Key oder RS232-Gateway von Buderus den ich mir mal für ein paar Tage ausleihen könnte? Finanziell würde man sich bestimmt auch einig. Wäre ganz interessant um die Prüsumme herauszubekommen. Gruß Ingo
Datum:
@ Ingo F.
> Wäre ganz interessant um die Prüsumme herauszubekommen.
Wie das ? Über den Betriebsstundenzähler hast du doch alle Bits die sich
ändern ?!
Datum:
Hallo Rudi, man könnte z.B. den Betriebsstundenzähler jede Minute Abfragen. Bei mir wird häufig nur jede zweite Minute der Betriebstundenzähler angefragt. Manchmal ist sogar eine Pause von 15 Minuten. Man hätte mehrere Werte und könnte sich die Zählerstände so sortieren dass vielleicht nur ein Bit geändert wird und kann sehen wie sich das auf die Prüfsumme auswirkt. Vielleicht könnte man sich ein Telegramm über das man mit der PC-Software Daten sendet nehmen und beliebig verändern und sehen wie sich das auf die gesendete Prüfsumme auswirkt. Wenn sich der Service-Key ähnlich wie das RS232-Gateway oder Fernwirkmodem verhält brauch man beim Senden über den Service-Key keine Prüfsumme. Oder es ist vielleicht nur ein simples XOR wenn es doch eine Prüfsumme gibt. Sieht auch fast so aus als ob vielleicht jemand mit einem Notebook mit orignal-Software (oder vergleichbar) mal vorbeischaut. Der Service-Key, RS232-Gateway, Fernwirkmodem, ... ist wohl das Problem. Kann natürlich sein dass das alles auch nicht weiterhilft... Und natürlich gaaanz viel Neugier auf den Service-Key. Gruß Ingo
Datum:
Hi Leute, habe eben ersten Test gefahren: Modul nicht erkannt, keine weitere Temperatur (FG) im Display nach Neustart der Steuerung. Muss man da irgendwas einstellen oder sollte die Logamatic das Modul selbst erkennen? Sind die Werte der Widerstände und Kondensatoren ok? (siehe wiki) Ich habe jetzt auch nochmal uebers Platinenlayout geschaut ob ich pins verwechselt habe, kann aber nichts finden. Kann das vielleicht mal jemand verifizieren? http://wiki.neo-soft.org/index.php/Heizungsschnitt... http://wiki.neo-soft.org/index.php/Bild:KM271_Nachbau1.gif http://wiki.neo-soft.org/index.php/Bild:KM271_Nachbau2.gif http://wiki.neo-soft.org/index.php/Bild:Km271_schematic.gif Gruss, Malte
Datum:
Ah sorry, hatte ich uebersehen. Auch mit 1k geht nix. Also ich habe als Anzeige nur Kessel, WW, Aussen und Betriebsstunden. Wenn ich im HK1 die (nicht vorhandene) Fernbedienung aktiviere habe ich noch ne weitere Temperatur "Raum1" die mit --- angegeben ist (normal, is ja kein Signal da). Das wars dann auch schon. Falls ich nicht irgend einen Leichtsinnsfehler im Layout habe (den ich nicht finden kann) verstehe ich nicht wieso das Teil nicht als Modul erkannt wird. @Chipshuffler: Stimmt der Schaltplan mit deinem Selbstbau überein? Welche Werte hast du für R1 R2 und C5 verwendet? Hast du D1 weg gelassen oder wenn ja mit welchem Wert bestückt? Gruss, Malte
Datum:
Hallo, die KM271-Nachbauplatinen sehen ja schon ganz gut aus. Vielleicht kannst Du ja noch die beiden Abgriffe für RX/TX vom XPORT oder MAX232 neben die richtigen UART-Pinne setzten. Dann könnte man die richtige Schnittstelle jumpern und muss keine Kabel umstecken Gruß Ingo
Datum:
@hellraiser: Es sieht so aus, als wäre das Layout genau seitenverkehrt (Bottom/Top-Layer Pins vertauscht), d.h. Pin 1 und 2 vertauscht, Pin 3 und 4 vertauscht etc. Dadurch sind auch 0V und 5V vertauscht und der SP232 dürfte gelitten haben. Ich habe alle Kondensatoren und D1 weggelassen. Die Werte für R1 und R2 sind wie im Schaltplan bestückt. Ich habe dein PCB um 180° gedreht und mit dem Foto von himtronics verglichen. Nach Vergleich mit dem Schaltplan bin ich der Meinung, dass das Pinning im Schematic stimmt. Die Position der Pinnummern in dem Kasten unten bezieht sich auf die Position der Buchse auf der Busplatine.
Datum:
@IngoF: Ja, ist jetzt drin. Ich bin mir nur noch nicht sicher ob ich RX/TX vertauscht habe. Wird sich in der nächsten Woche zeigen :) @chipshuffler: Viel schlimmer. ich muss irgendwie beim layouten einen totalaussetzer gehabt haben. Ich schiebe es mal auf die vielen Telefonate mit den Kunden zwischendrin ;-) Spannungsversorgung war richtig rum. Die Pins für das Widerstandsgebrösel auch, nur habe ich mit der Verschaltung total gepennt (böser fehler drin, aber die logamatic lebt noch :) @all: Habe jetzt die rev C für das Selbstbaumodul soweit fertig, dass es korrekt erkannt wird. Ich versuche noch die Widerstände auf einen PT1000 abzustimmen, so dass die Abgastemperatur nachher auch halbwegs korrekt ist und nicht irgend einen Mist anzeigt der eh nicht stimmt. http://wiki.neo-soft.org/index.php/Heizungsschnitt... Alles was ich bisher habe ist im wiki aktualisiert. Aber bitte sparsam mit Kommentaren zu den Bildern, ich habs echt schwer mit diesem scheiss doppelseitigen Basismaterial mit weisser Schutzfolie. Ich hätte die dinger einfach in die tonne kloppen und mir noch nen stapel Bungard Material holen sollen :-P Ansonsten werde ich jetzt die Arbeit mal ruhen lassen. In diesem Sinn wünsche ich euch allen schöne Feiertage! Gruss, Malte
Datum:
Soweit ich das bisher beurteilen kann funktioniert das Einsteckmodul. bekomme Antwort von der Steuerung (Logmode aktiv, dann die events pollen). Mir ist da allerdings etwas aufgefallen: Heizkreis 2 habe ich im Setup auf "Kein" eingestellt, also abgeschaltet. Abgastemperatur mit 1K Widerstand bei 208°C. Soweit okay vorerst. Das komische ist aber dass sobald das Modul drin steckt die Kesseltemperatur manchmal springt. So passiert es, dass die temperatur normal im 1° Schritt unter irgendwas um 55° sinkt und dann der Brenner gestartet wird. kurz danach springt die temperaturanzeige für den kessel aber auf 67°C (für ein paar sekunden, dann zurück auf 54°C. Dieses Springen stoppt den brenner (halbwegs logisch). Dumm nur dass das immer wieder passiert und der brenner dann für 2-3 sec zündet, dann aber wieder abgeschaltet wird. Ich habs noch nicht raus was das sein könnte, kann das jemand bestätigen oder ist es nur bei mir so? Mir ist aufgefallen dass ich das springen manchmal erzwingen kann indem ich am modul "wackle". Schlachten Kontakt kann ich mir aber schlecht vorstellen, habe extra vorher die Kupferkontakte die in den Sockel gehen blank gereinigt. (vergolden kann ich leider nicht ;) Werde nächste woche nochmal weiter probieren. In dem Zustand lasse ich das Modul erstmal nicht eingebaut. Gruss, Malte
Datum:
Bei mir springt die Kesseltemperatur nicht, wenn das Modul eingesteckt ist. Ich vermute, dass ein Offset am AGND-Pin am Modulstecker die Messung der Kesseltemperatur beeinflusst.
Datum:
Okay, das muss ich nochmal genauer angucken. Mir ist eben aufgefallen (ja ich kanns nicht lassen) dass es nicht nur die kesseltemperatur ist. Alle Temperaturen stimmen mit aktivem Modul nicht, Alle Temperaturen werden niedriger ausgegeben als tatsächlich gemessen kurz bevor das modul eingesteckt wurde (Kessel, Speicher, Aussentemperatur). Habe jetzt auch mal nen 500 Ohm Widerstand als Abgassensor verwendet -> 218°C, also sollen 500 Ohm 10° Unterschied ausmachen? da stimmt echt was nicht bei mir. Ich versuche es erst nochmal mit nem steckbrett. Vielleicht habe ich ja auch Leiterbahnen auf der Platine ungünstig gelegt, rudi meinte ja "das ding rotzt rum"... Für Analogmessungen nicht gerade von Vorteil. Gruss, Malte
Datum:
Moin, trenne doch einzelne Leitungen (Paare) und schau an welcher es liegt !? Gibt es sonst noch Neuigkeiten ???
Datum:
Angehängte Dateien:Hallo, da Rudi nachfragt... Ich habe schon mal eine erste Testversion von meinem Java-Programm. Dazu muss Java 1.6 installiert sein. Das ZIP-File entpacken. MySQL muss installiert werden und der Ordner EMSlog aus dem ZIP in das Daten-Verzeichnis von MySQL kopiert werden und gestartet werden. Oder in der MySQL die SQL_Create.sql ausgeführt werden. Das SQL-Script erzeugt die Datenbank EMSlog und die Tabellen für die Telegramme 080018, 080019, 080034 und 10003e an. Das Java-Programm ausführen. Den COM-Port auswählen an dem der Wandler hängt und auf [Verbinden] klicken. Die Daten für MySQL angeben (IP-Adresse, User, Passwort) und auch auf [Verbinden] drückenDas eingetragene Defaultpassword ist password. Die Daten werden von dem Wandler der an der Schaltung hängt empfangen, angezeigt und in der MySQL geloggt. Gleichzeitig werden die Daten aus der MySQL-Datenbank ausgelesen und in der Grafik angezeigt. Bevor man das Programm schließt natürlich auf [Trennen] drücken. Im Moment müssen beide Verbindungen aufgebaut werden. Später sollen man mit dem Programm auch nur loggen oder nur die Daten auswerten können. Je nachdem was man will. Natürlich benötigt man noch den "Wandler" mit ATMega8 und den Komparator der programmiert sein muss. Leider kann ich mein HEX-File nicht wiederfinden. Notfalls eben den von Rudi geposteten C-Quelttext kompilieren und programmieren. Gruß Ingo
Datum:
Hallo, ich suche ein Interface für meine Heizung um die Daten in meiner Hausautomation zu visualsieren und bin über den Thread hier gestolpert - echt interessant ! Hat jemand eine Leerplatine oder einen Bausatz über ? Gruß Andreas
Datum:
Hat sich schon jemand mit der Sendeschaltung fuer die RC30 auseinder gesetzt ?
Datum:
Hallo Rudi habe mal einen kleinen Versuch gestartet. Irgendwo war hier ein link zu einem anderen Thread. Dort war eine Version mit einer ZenerDiode die mit Transistor auf den Bus geschaltet wurde um die Spannung herunter zu ziehen. Habe mal gemessen dass dort dann 160mA fliesen. An der Z-Diode fallen also 1,5 Watt ab. Hatte anders als dort angegeben eine 8,2-Z-Diode genommen statt der 7,5Z-Diode. Allerdings ist dann die Spannung noch höher als 10 Volt. Hatte nur gerechnet ohne mir die Kennlinie der Z-Diode anzusehen. Also war die Lösung mit 7,5-Volt Z-Diode und zwei normalen Dioden (Brückengelichrichter damit die Polung des Busses egal ist) plus Transisitor. Nach dem Senden ist allerdings erst mal längere Stille auf dem Bus. Was auch schon mal öfter bei langen Telegrammen der RC30 vorkommt. Habe mal das mit Deiner Schaltung getestet und noch einen freien Treiber vom MX232 genommen um den Transistor anzusteuern. Habe dazu die Sendeleitung vom PC die ja noch nicht benutzt wurde einfach auf den MAX232 geklemmt. Allerdings müsste ich meiner Software erst noch angewöhnen auf das Polling zu reagieren und das richtige Senden zu können. Gruß Ingo
Datum:
> Nach dem Senden ist allerdings erst mal längere Stille auf dem Bus. Was > auch schon mal öfter bei langen Telegrammen der RC30 vorkommt. Das könnte auch am fehlenden "Frameerror" liegen, da alle Teilnehmer auf das Ende warten und dann wohl in den Timeout rennen.
Datum:
Ach ja....... Wenn man aber noch einen Master nimmt bräuchte man den ja nur mit normalen Port-Pins verbinden. Der Slave könnte sich bemerkbar machen wenn ein Polling mit einer bestimmten Adresse kommt und der Master könnte dann einfach sein Telegramm abschicken. Dazu müsste man nicht unbedingt einen zweiten UART nehmen. Ein einfacher Port-Pin mit entsprechender Assembler-Programmierung könnte reichen. Oder gibt es einee Art Software-Uart denn man mit C verwenden könnte? Ideal wäre ja noch ein kleiner Buffer im Master der die Daten decodiert und zwischenspeichert und dann direkt über Ethernet in die SQL-Datenbank schreibt. Habe mir inzwischen ein gebrauchten Laptop gekauft. Der könnte dann automatisch zu einer bestimmten zeit hochfahren, MySQL starten und nach einer bestimmten Zeit wieder herunterfahren. Dann könnte mann den Jahresverbrauch noch stärker drosseln. Sind zwar nur 20Watt, aber selbst das sind schon immerhin 170kW/h. Mein normaler Mini-Tower braucht immerhin 100W. Der Laptop hat natürlich noch den Vorteil der Akkupufferung. Gruß Ingo
Datum:
>Das könnte auch am fehlenden "Frameerror" liegen,
Wäre möglich.. allerdings habe ich ein Zeichen und ein Break gesendet.
Dieses Break vom Terminal-Programm ist um einiges länger als das
EMS-Bus-Break. Man müsste also noch sehen ob man am PC diese Break-Länge
ändern kann. Aber wenn man einen Master einbaut könnte der automatisch
die richtige Länge erzeugen.
Gruß
Ingo
Datum:
@Ingo F. könntest du einen kleinen Schaltplan für den TX-Pfad posten ?
Datum:
Hallo Rudi, kann ich gerne machen. Allerdings nicht mehr heute. Irgendwann im laufe der Woche. Gruß Ingo
Datum:
Hallo, Habe eine 2107 mit km271. Ich hatte vor laengerer Zeit schon mal mit dem 3964R etwas experimentiert und ein paar Mittschnitte gemacht von der Windows Software (die leider durch crash abhanden gekommen ist). Leider bin ich aus Zeitgruenden nie dazu gekommen es weiter zu analysieren bzw zu implementieren. Hatte aber mit http://libnodave.sourceforge.net/ ein wenig gespielt bis mir die Software zum Vergleich fehlte. Hat hier schon jemand versucht das hier gelernte ueber die Libnodave laufen zu lassen? Ich hatte damals eine NSLU2 dafuer genommen, mit Debian und externer Platte, und USB serial. Ich denke das ist eine Gute Loesung zusammen mit der KM271 oder der ersatzplatine. Mich interessiert jetzt brennend ob jemand etwas auf linux lauffaehiges hat das z.b. auf einer NSLU2 laueft. Gruesse und Hut ab. Sean
Datum:
Moin, > Hat hier schon jemand versucht das hier gelernte ueber die Libnodave > laufen zu lassen? Ich nicht. Das einzige was mir auf der Seite bekannt vor kam war der "Basic data exchange". Evtl. kannst du ja mal kurz erklären wofür diese Lib. gut sein soll. > Mich interessiert jetzt brennend ob jemand etwas auf linux lauffaehiges > hat das z.b. auf einer NSLU2 laueft. Ja, auf Linux schon, aber bei den Datenmengen ist das schon Tierquälerei ;-). Ist aber auch nur eine Vermutzung, keiner weiss was du vor hast.
Datum:
Hi, Ich will mindestens den Zustand an/aus nacht/tag/auto erkennen und beinflussen koennen. Soweit moeglich wuerde ich dann gerne Aktuelle Werte Anzeigen lassen koennen (Aussentemperatur, vor/ruecklauf Differenz, etc). Danach ggf. Historische Daten und danach zb. die Zeiteinstellung korrigieren (winter Sommer etc und ggf. mit ntp angleichen). Danach wuerde das Modifizieren der programierten Schaltzeiten selber in betracht kommen. jedenfalls alles Schritt fuer Schritt und moeglichst einfach und wartbar. Fuer mich bedeutet das eine definierte Schnittstelle wie Z.b. das KM271 oder das Ersatzboard und dann Schnittstellen Treiber auf einem System das moeglichst direkt auch als Web interface dienen kann um das ganze autark laufen lassen zu koennen. Der NSLU2 ist da fuer mich interessant da Linux drauf laueft und es ggf. sogar direkt als Entwicklungsumgebung herhalten kann. Ein anderes Beispiel waehre zb. ein Plug computer. Gruesse Sean
Datum:
Du könntest die Daten in einer mysql Datenbank speichern oder z.B. die rrdtools benutzen. Beides hat seine Vor- und Nachteile.
Datum:
Hi, Darf ich kurz eine Frage an die Besitzer einer 2107 Regelung einwerfen ? Man kann ja die Versionsnummer abfragen, falls jemand hier eine Version größer 3.14 hat, bitte mal kurz melden. Vielen Dank !
Datum:
Angehängte Dateien:Rudi schrieb:
> könntest du einen kleinen Schaltplan für den TX-Pfad posten ?
hier mal der erste Versuch des Schaltplans meiner laufenden Platine. Der
Gleichrichter sorgt dafür das man den Bus beliebig anklemmen kann.
Ist natürlich noch nicht die entgültige Version.
Gruß
Ingo
Datum:
In den TX-Pfad sollte ich noch den zweiten Comperator einbauen damit der Transistor nicht direkt über die serielle Schnittstelle angesteuert wird, oder? Die Spannungswandler des MAX232 wird noch für die Versorgung der Comperatoren benutzt. Hatte leider keinen anderen Comperator/OP greifbar der ohne +-10V auskam. Kritik und Anregungen sind gerne willkommen. Gruß Ingo
Datum:
> hier mal der erste Versuch des Schaltplans meiner laufenden Platine. Der > Gleichrichter sorgt dafür das man den Bus beliebig anklemmen kann. Danke ! Auf welche Spannung ziehst du das Signal runter und welcher Strom fließt dann ?
Datum:
Hallo! Ich würde gerne mein Logamatic 2107 an die Haussteuerung (fhem) anschließen, aber leider bin ich kein Hardware- sondern ein Software- Bastler. Ich habe mich auch damit abgefunden, den KM271 zu kaufen, leider weiss ich nicht wo. Ich habe auch keine Angst von irgendwelchen nachbauten, und ob es via RS232 oder Ethernet, ist mir auch egal, aber soweit ich es sehe kann man keine fertigen Alternativen kaufen. Kann mir hier jemand weiterhelfen? Gruss, Rudi (der Zweite :)
Datum:
@Rudolf Koenig > Ich habe mich auch damit abgefunden, den KM271 zu kaufen, > leider weiss ich nicht wo. Frag einfach deinen Heizungsmenschen, wenn er mal wieder zur Wartung da ist, der besorgt dir das Modul. Die KM271-Alternative ist irgendwie eingeschlafen !?!?!?!?
Datum:
Ziehe im Moment auf 10Volt herunter. Ist ja vergleichbar mit der RC30. Ein Test mit normalen Wiederständen hat gezeigt dass dann 160 mA fließen wenn man die Spannung so weit herunterzieht. Deswegen auch die 1,3 Watt Z-Diode. Habe allerdings im Moment eine 8,5 Volt Z-Diode drin und nur eine Diode. Das dürfte dann ja der 7,5Volt Diode mit vorgeschalteten Gleichrichter entsprechen. Wäre vielleicht auch eine Idee den MAX232 wegzulassen und den X-Port dafür zu nehmen. Dann müsste ich aber noch einen OP/Comperator nehmen der mit 5 Volt auskommt. Hätte den Vorteil dass man überall aus dem Netzwerk drauf zugreifen könnte.. SOgar aus der Ferne wenn man will. Gruß Ingo
Datum:
Hi, ich suche eine KM271 Platine. Hat jemand eine über oder läßt jemand demnächst welche machen ? Gruß Andreas
Datum:
> Ziehe im Moment auf 10Volt herunter. Ist ja vergleichbar mit der RC30. > Ein Test mit normalen Wiederständen hat gezeigt dass dann 160 mA fließen > wenn man die Spannung so weit herunterzieht. Deswegen auch die 1,3 Watt > Z-Diode. Bist du sicher das 160mA okay sind ? Hört sich für mich, aus dem Bauch heraus, etwas viel an. Wenn man von Störungen ausgeht dann ist das sicherlich berechtigt. > Wäre vielleicht auch eine Idee den MAX232 wegzulassen und den X-Port > dafür zu nehmen. Dann müsste ich aber noch einen OP/Comperator nehmen > der mit 5 Volt auskommt. 3-5V wären ausreichend, dann kann man direkt einen uC seiner Wahl anschalten. Ich frage wegen der Schaltung mal einen anderen Hardwerker ( ich bin keiner ;-) ). > Hätte den Vorteil dass man überall aus dem Netzwerk drauf zugreifen > könnte.. SOgar aus der Ferne wenn man will. Jup.
Datum:
@Andreas > ich suche eine KM271 Platine. Hat jemand eine über oder läßt jemand > demnächst welche machen ? Es gibt hier keine Plagiate. Alles hausbacken ;-)
Datum:
@ rudi:
>Die KM271-Alternative ist irgendwie eingeschlafen !?!?!?!?
Naja. eingeschlafen noch nicht.
ich bin noch etwas gefrustet wegen dem offensichtlich bescheuerten
layout. Ich muss das nochmal neu machen, scheinbar hätte ich nicht die
gesamte fläche als gnd nehmen sollen bzw so wie es aussieht gibts da
einen getrennten agnd.
Jedenfalls ist das layout so nicht brauchbar (verfaelscht alle
gemessenen temperaturen im system um mehr als 10°C
Werde mich nochmal dran setzten sobald ich wieder mehr zeit habe!
Gruss, Malte
Datum:
@Rudi Rudi schrieb: >> ich suche eine KM271 Platine. Hat jemand eine über oder läßt jemand > >> demnächst welche machen ? > > > > Es gibt hier keine Plagiate. Alles hausbacken ;-) okay, ich nehme auch eine hausgebackene ;-) Vielleicht erbarmt sich ein Bäcker.
Datum:
Ich habe eine erste Version eines fhem Moduls fuer KM271 implementiert, vielen Dank nochmal an alle die das Protokoll dokumentiert haben. Die in dieser Liste erwaehnten Buderus Dokumente haben auch etwas geholfen, zusaetzlich gibt es noch den hier nicht erwaehnten 63011377.pdf Ich habe die Daten eine Weile protokolliert, siehe die Plots in dem Abschnitt http://www.koeniglich.de/fhem/commandref.html#KM271 Kann jemand mir erklaeren, was der Logamatic mit "Kesselintegral" meint? Laut Buderus Doku wird es in KK gemessen (was auch immer das wiederum ist). Weiterhin meldet mein KM271 nachdem ich es ins logmode setze nur noch die Aenderungen, aber keine Konfigurationsdaten bzw. Zeitprogramm, wie es in der Doku von himtronics steht. Btw. der wiki scheint seit ein paar Tagen ein Problem zu haben. Gruss, Rudi
Datum:
@Rudolf Koenig Ich seh da grad deine Vorlauftemperatur & Warmwasser. Kann es sein das die Pumpe deiner Heizung dein WW in den Vorlauf der Heizung drückt ? Ein Freund von mir hat das gleiche Problem. Es ist schön zu sehen wie lange die Temperatur hält wenn sich die Heizung in der Absenkung befindet. > Weiterhin meldet mein KM271 nachdem ich es ins logmode setze nur noch > die Aenderungen, aber keine Konfigurationsdaten bzw. Zeitprogramm, wie > es in der Doku von himtronics steht. Die RC3X sendet auch nur Datensätze die sich geändert haben.
Datum:
@Ingo F. > In den TX-Pfad sollte ich noch den zweiten Comperator einbauen damit der > Transistor nicht direkt über die serielle Schnittstelle angesteuert > wird, oder? Eine Stromsenke mit OP & FET wäre wohl besser (ich habe da mal einen anderen Hardwerker gefragt). Problem könnte evtl. der RX-Pfad sein, da es keine getrennten RX/TX-Leitungen gibt. Leider bin ich da nicht so bewandert...
Datum:
Rudi schrieb: > Eine Stromsenke mit OP & FET wäre wohl besser (ich habe da mal einen > anderen Hardwerker gefragt). Ich habe ja keinen festen Strom. Also kann ich keine Konstantstromsenke nehmen. Die Schaltungen die ich bis jetzt gefunden habe waren alles Konstantstromsenken. Ich muss mal nach einer Stromsenke suchen die von der Ausgangspannung abhängig ist.... Rudi schrieb: > Problem könnte evtl. der RX-Pfad sein, da > es keine getrennten RX/TX-Leitungen gibt. Die Sende- und Empfangsdaten sind doch nur auf einer Leitung. Man könnte höchstens die Schaltung so modifizieren dass der Empfangsteil abgeschaltet wird wenn die Daten gesendet werden. Aber denke das kann man doch auch in der Software des ATMega8 machen.. Rudi schrieb: > Leider bin ich da nicht so bewandert... Macht nichts... ich auch nicht ;-) Gruß Ingo
Datum:
@rudi (der erste :) Habe es glaube ich jetzt rausbekommen, ich verwende ja noch einen 3.3v spannungsregler für den xport. Wenn ich vcc vom regulator abtrenne stimmen alle temperaturen wieder. Allerdings ist das modul im moment dann sinnfrei, da keine kommunikation. Ich denke ich werfe den kram mit dem xport weg und mache ein reines rs232 modul, das kann sich dann jeder nachbauen der es braucht. A propos: ich habe firmware version 4.00, eben nachgeschaut. falls das irgendwann mal was zu bedeuten hat :) @all: wiki geht jetzt wieder und ist nebenbei auf den aktuellen Stand gebracht worden. Wer sich an der Doku beteiligen mag, der kann sich dort gerne registrieren und selbst mit daran arbeiten. Auf der Hauptseite http://wiki.neo-soft.org/index.php/Heizungsschnittstelle habe ich einen Hinweis "Aktualität der Inhalte: 2010 02 13". Dieser bezieht sich auf den Letzten aus diesem Thread entnommenen Informationsstand, diesen bitte nicht verändern, da ich sonst beim nachtragen von Informationen durcheinander komme.... Mal sehen, ich habe wieder in absehbarer Zeit mehr Luft für Basteleien, ich halte euch auf dem Laufenden, wenn ich Neuigkeiten habe. Auf Grund der kranken Temperaturen habe ich seit wochen keine Lust mich laenger in meiner Werkstatt aufzuhalten (nicht beheizt), weshalb ich zzt etwas "eingeschlafen" wirke. Aber Frühling ist ja bald in Sicht ;)
Datum:
> Ich seh da grad deine Vorlauftemperatur & Warmwasser. Kann es sein das > die Pumpe deiner Heizung dein WW in den Vorlauf der Heizung drückt ? Ich glaube das passiert ohne Mitwirkung der Pumpe. Wir haben teilweise sehr dicke Heizungsrohre und die Rueckstauklappe wurde wegen Laermbelaestigung entfernt. Im Sommer trenne ich die Heizung manuell. Finde ich faszinierend, dass Du sowas ablesen kannst :)
Datum:
@ IngoF > Die Sende- und Empfangsdaten sind doch nur auf einer Leitung. Man könnte > höchstens die Schaltung so modifizieren dass der Empfangsteil > abgeschaltet wird wenn die Daten gesendet werden. Aber denke das kann > man doch auch in der Software des ATMega8 machen.. Dann den Sender, da der Strom vom Pegel auf dem Bus abhängt. Bleibt noch die Frage was passiert wenn der Sender eingeschaltet wird und eine andere Einheit anfängt zu senden.
Datum:
Angehängte Dateien:> Ich glaube das passiert ohne Mitwirkung der Pumpe. Wir haben teilweise > sehr dicke Heizungsrohre und die Rueckstauklappe wurde wegen > Laermbelaestigung entfernt. Im Sommer trenne ich die Heizung manuell. > Finde ich faszinierend, dass Du sowas ablesen kannst :) Nein, ich habe da nicht drauf geachtet, mir kam es nur komisch vor das das WW so oft geladen wird. Der erwähnte Freund hat dann nochmal drüber gegrübelt. Was ist an einer Rückstauklappe so laut ??? Wäre mal interessant ob die überhaupt etwas bringt. Besser wäre natürlich ein Mischer und keine zwei Pumpen am gleichen Strang.
Datum:
Hallo Rudi, > Dann den Sender, da der Strom vom Pegel auf dem Bus abhängt. Bleibt noch > die Frage was passiert wenn der Sender eingeschaltet wird und eine > andere Einheit anfängt zu senden. das kann ja nicht passieren weil die Busteilnehmer nur auf das Polling antworten. Wenn jetzt natürlich der ATMega8 einfach drauf los sendet ohne auf sein Polling zu warten wird es natürlich Probleme geben. Schätze dass dann die fehlerhaften Telegramme ignoriert werden dank der ominösen Prüfsumme. Gruß Ingo
Datum:
IngoF schrieb: >> Dann den Sender habe das vermutlich falsch verstanden. Den Sender kann man ja schlecht abschalten wenn er senden soll... Dachte höchstens den Empfänger, damit die selbst gesendeten Daten nicht wieder empfangen werden. Aber das könnte man ja im Atmega8 besser machen. Einfach nach dem Senden die eigelesenen Daten irgnorieren. Kann man auch notfalls an der eigenene Adresse erkennen... Gruß Ingo
Datum:
@IngoF > habe das vermutlich falsch verstanden. Den Sender kann man ja schlecht > abschalten wenn er senden soll... Dachte höchstens den Empfänger, damit > die selbst gesendeten Daten nicht wieder empfangen werden. Den Empfänger kann man schon anlassen, dann sieht man direkt ob die Daten sauber gesendet wurden und es keine Buskollision gab.
Datum:
Hallo, welcher Händler bietet denn den verwendeten ADCMP370 an? Oder gibt es Vergleichstypen? Ich kann da nichts finden! Gruß Martin
Datum:
> welcher Händler bietet denn den verwendeten ADCMP370 an? Oder gibt es > Vergleichstypen? Ich kann da nichts finden! Den kannst du bei Analog sampeln oder bei digikey gibt es den auch. Andere Möglichkeit wäre ein Komparator der über seiner Versorgungsspannung Signale am Eingang verträgt. Eine andere ungetestet Methode wäre auch eine z-diode (etwa 11.5V) in Reihe und dann an einen Opto., evtl. noch mit Transistor zwischen. Das wäre dann die sichere low-cost Variante.
Datum:
Hallo zusammen, ich bin gerade über diese Diskussion gestolpert und fasziniert darüber was Ihr erreicht habt :-) Ich habe ein Buderus Heizung mit BC10 und RC35. Die Anlage ist nett hat aber ein Problem. Alle paar Wochen läuft sie in einen Fehler, gefühlt so ca. 10 Mal im Jahr. Das BC10 zeigt Fehlercode 6A (Handbuch: Brenner kann nicht gezündet werden) und der Warmwasserspeicher kühlt langsam aus. Man merkt das dann dadurch dass kein heisses Wasser mehr kommt... Ich würde gerne das Verhalten der Anlage über längere Zeit mitschreiben um zu schauen woran das wohl liegen könnte. Gibt der BC10 über die Service-Key-Schnittstelle auch Fehler aus? Dazu habe ich hier noch nix gesehen. Nach einem A6-Fehler kommt man über einen Reset (Taster an der BC10) wieder in den Normalzustand. Kann man den reset auch über die Service-Key-Schnittstelle auslösen? Viele Grüße, Bernd
Datum:
> Nach einem A6-Fehler kommt man über einen Reset (Taster an der BC10) > wieder in den Normalzustand. Kann man den reset auch über die > Service-Key-Schnittstelle auslösen? Wie wäre es den Heizungsfritzen an das Gerät zu zitieren ?
Datum:
Schon drei mal gemacht. Gibt immer eine Riesenbaustelle. Nutzt aber nix weil der Fehler nie auftritt wenn die da sind. Und die stellen nicht einen Monat einen Rechner hier hin um mitzuschreiben was die Kiste macht. Und ich werde deswegen den Brenner nicht rausreißen lassen. Deshalb: Nase voll und Selbsthilfe... Viele Grüße, Bernd
Datum:
Bei einem defekten Brenner oder defekter Flammenerkennung helfen dir die Daten auch nicht. Es gab bei B. eine Rückrufaktion für einige Brenner, evtl. gilt das auch für dich !? Die letzte Fehlermeldung ist in den Daten, wie auch im Monitormenü am Display. > Nach einem A6-Fehler kommt man über einen Reset (Taster an der BC10) > wieder in den Normalzustand. Kann man den reset auch über die > Service-Key-Schnittstelle auslösen? Evtl. über SSR Heizung aus/an ?
Datum:
Hat jetzt nicht mehr zu viel mit dem Thema zu tun... Ich glaube nicht dass der Brenner defekt ist. Der zündet problemlos einige 100 Mal (einige 1000 Mail?) im Jahr. Google sagt mir dass der 6A Fehler verschiedenste Ursachen haben kann, von Abgas in der Zuluft bis kein Gas. Vielleicht finde ich ja ein Muster in den Daten. Jedenfalls passiert das fast immer nachts, die morgentliche Dusche danach ist erfrischend. Viele Grüße, Bernd
Datum:
Kannst du die Heizung auch ohne Reset zum laufen bewegen ? Ich denke per Software könnte man evtl. den Fehlerspeicher löschen.
Datum:
Die Bedienungsanleitung sagt "Bei 6A Reset drücken". 6A kommt wenn die Elektronik es mehrmals hintereinander nicht geschafft hat den Brenner zu zünden. Die Kiste geht dann schlafen weil sie nicht weiss was sie machen soll, eine Heizung die nicht heizen kann hat eine Identitätskrise. Wenn ich dann einige Stunden später komme und Reset drücke dann springt der Brenner (bisher immer) problemlos an. Wie komme ich denn an den Fehlerspeicher? Über das RC35 Modul?
Datum:
Logamatic 2107/KM271 Nur als Info: hab an dem KM271 fhem Modul weitergebastelt: Ich kann (wie oben schon erwaehnt) bestaetigen: nach dem senden der "logmode" Aufforderung sendet der 2107 erst ca 60 Stueck 6-er Bloecke aus dem Adressbereich 0000 bis 01e0, dann die schon bekannten einnzelnen Bytes aus dem Bereich 8000-8940 und dann die vom chipshuffler erwaehnten "unbekannten" 914x und 03xx Daten. Ich habe durch drehen aller Knoepfe meiner Logamatic ca 20 Bytes aus dem ersten 60x6 Block entschluesselt. Weiterhin kann das fhem Modul die vom vom Chipshuffler beschriebenen Werte auch aendern. Siehe auch: http://cvs.berlios.de/cgi-bin/viewvc.cgi/fhem/fhem... Gruss, Rudi
Datum:
BerndV schrieb:
> Wie komme ich denn an den Fehlerspeicher? Über das RC35 Modul?
Über das Service-Menü. Bei meiner RC30 muss man drei Tasten gleichzeitig
drücken. Soweit ich weiß die ganz linke und die beiden rechten. Evtl.
mal in der Bedienungsanleitung nachsehen. Allerdings kann man dort nur
die Fehler sehen. Vielleicht kann man die dort auch herauslöschen.
Wenn das helfen sollte kann man bestimmt auch eine Softwarelösung dafür
finden. Ist allerdings nur ein herumbasteln an den Symptomen wenn es
klappen sollte.
Vermute allerdings dass Du wirklich den Reset-Schalter an der Anlage
drücken musst. Dann kann eine Softwarelösung wohl kaum helfen.
Allerdings gibt es (noch) das Problem dass die Prüfsumme vom Protokoll
her nicht bekannt ist. Notfalls müsste man die Software-Reset-Prozedur
der RC35 mitschneiden und von einer Elektronik mit oder ohne PC
automatisch schicken.
Man könnte die Daten am Bus mitloggen und eventuell die Fehlermeldung
darin finden. Was Dir vermutlich auch nichts helfen wird
Mit der Schaltung von Rudi oder mir könntest Du Die Daten aufzeichen und
Dir ansehen. Habe inzwischen meine Schaltung wieder ein wenig geändert.
Ist vermutlich unwahrscheinlich den Fehler zu finden. Aber vielleicht
hilft es ja trotzdem.
Wie gesagt sind alles nur Vermutungen....
Falls Du das mal versuchen möchtest und nicht mit dem lötkolben umgehen
kannst oder möchtest, kann ich dir die Schaltung zum selbstkostenpreis
zusammenbauen und mit Software zuschicken. Allerdings muss dann immer
ein PC rund um die Uhr laufen.
Gruß
Ingo
Datum:
Angehängte Dateien:Ich wollte mal meine Projekte zur Verfüging stellen. ETH_M32 (URadig) ist für das Pollin-AVR-Net-IO Board. Läuft bei mir aber mit einem Atmega644 statt Atmega32. Wenn man sich per Telnet drauf verbindet werden die empfangenen Telegramme über die Telnet-Verbindung weitergeben. 1-Byte-Telegramme werden aus Performancegründen nicht versendet und die Daten gehen nicht binär sondern als Hex-Text über die Leitung (Telegramm-Ende CR/LF). War für mich einfacher für das Debugging und die Auswertung als das binäre Protokoll wie von Rudi. DAC1 wird als Ausgang für die Empfangs-LED verwendet. EmsBusReceiver ist der Code von Rudi für Atmega8 (binäres Protokoll). Als Hardware verwende ich das Pollin-AVR-Evaluationsboard. Am Pollin-Board gehe ich mit der Empfängerplatine direkt auf den RS232 Stecker, deshalb habe ich an der Platine +/- Eingang getauscht damit mir der OP das Signal invertiert. Ein Problem habe ich noch mit der Auswertung der daten vom UBA3. Die Warmwassertemperatur geht manchmal für 1 Telegramm auf (immer) 25.7 Grad. Brennerstatus stimmt auch nicht. Die Daten für den Wasserdruck liegen bei mir auch auf anderen Stellen im Telegramm. Kann mir hier jemand nochmal seine komplette Auswertungsroutine posten? Mein Eindruck ist das die Daten in der Excel-Liste teilweise nicht stimmen. Gruss Matthias
Datum:
Beitrag "Re: Logamatic 2107 Schnittstelle" Der Druck ist an Stelle 21. Poste doch mal eins von deinen falschen Telegrammen. Evtl. sind es einfach nur Übertragungsfehler.
Datum:
Hallo Rudi Das Telegramm sieht bei mir so aus (letztes Byte ist Anzahl der Zeichen im Telegramm) Das Telegramm ist also immer nur 18 Byte gross. Der Druck ist an Stelle 13. 080018003C02640125800201010F48C8028E12 080018003C02640125800201010F48C802C712 080018003C02640125800201010F48C802EA12 080018003C02640125800201011048C8021412 080018003C02640125800201011048C8022112 080018003C02640125800201011048C8022D12 080018003C02640125800201011048C8022D12 080018003C02640125800201011048C8023712 080018003C02640125800201011048C8028212 080018003C02640125800201011048C8028F12 080018003C02640125800201011048C8029B12 080018003C02640125800201011048C802A412 080018003C02640125800201011048C802BD12 080018003C02640125800201011048C802BD12 080018003C02640125800201011048C802E512 080018003C02640125800202011048C8027712 080018003C0264012C800102000D4C1C027512 080018003C0264012D800102000E4C1C02F012 080018003C0264012D800102000F4C1C02E412 080018003C0264012D800200000D4C1C025F12 Bei der Aussentemp. konnte ich dagegen noch keine "Fehler" feststellen. 080019000002140000640802370002A006002313 08001900000B2C00001F0802120002BD06026413 08001900000C1F0000270802160002C106029013 08001900000C2300002E0802190002C406024113 08001900000C270000210802130002BE06024C13 08001900000C3700001E0802110002BC0602E213 0800190000895A00001E08022F00029C06012113 080019000089800000000802A20002C306001813 0800190000898000001E08022D00029A06012613 Die Daten vom WM10 und RC35 passen auch. Gruss Matthias
Datum:
Hallo Matthias, habe vorgestern die Auswertung der Satusbytes 10 und 11 vom Telegramm 080018 bei mir eingebaut. Ich musste hinterher die Bytes 11 und 10 tauschen. Vielleicht mal ausprobieren die Bytes zu tauschen. Habe nicht mehr nachgeschaut obe es jetzt von mir ein Programmierfehler war oder wirklich die Exeltabelle die Bytes 10 und 11 vertauscht hat. Ich meinte die Exel-Tabelle die die ganzen Telegramme auswertet werden und 5 Megabyte hat oder noch größer ist. Die Telegramme kann ich imm Moment nicht mit meinen vergleichen. Gruß Ingo
Datum:
Hallo Ingo, An einen Byte-Verdereher glaube ich nicht, da die Werte ja zur Anzeige im RC35 passen. Komisch ist das ich nur ein 18-Byte-Telegramm habe (ganz selten war's mal ein 17-Byte-Tele, das war dann wohl ein Übertragungsfehler). Vielleicht muss ich auch nochmal meine Empfängerplatine optimieren. Verwende einen LM393, die Signale nehme ich mittels Spannungsteiler vom Bus ab damit mein Eingang kleiner 5V ist (Vcc vom LM393). Allerdings würde mich halt wundern, das das Telegramm immer so schön reproduzierbar ist. Gruss Matthias
Datum:
Warum sind deine Nachrichten so kurz ?
08 00 18 00 31 01 E4 64 23 09 01 25 60 80 00 02 03 01 4F 00 A4 0E 2D 48 00 C8 00 02 00 DF 08 00 18 00 3C 02 64 01 2D 80 02 00 00 0D 4C 1C 02 5F 12 08 00 19 00 00 5C 01 DF 80 00 00 00 00 37 00 D1 1F 0C DB 88 00 00 00 0B 40 DD 00 C3 EA 14 08 00 19 00 00 02 14 00 00 64 08 02 37 00 02 A0 06 00 23 13 |
Datum:
Hallo Matthias, ich habe auch einen LM393 in meiner Schaltung. Klappt eigentlich problemlos. @Rudi, meinte nur die Bytes 10 und 11 der Rest wird wohl stimmen.. Aber wie gesagt, kann auch ein Programmierfehler von mir gewesen sein den ich dann glatt gezogen habe. Gruß Ingo
Datum:
@Rudi Mit der Telegrammlänge wunder ich mich auch. Was hast Du den für Komponenten-Versionen? Bei mir ist: RC35 1.08 UBA3 3.06 BCM Version 12 BCM Nummer 1072 BC10 2.03 WM10 2.0 Werde aber auch noch mal in meiner Netio-Software schauen ob ich da etwa irgendwas versemmel... @ Ingo Dneke auch das der LM393 gut funktioniert, da die Kommunikation reproduzierbar ist. Gruss Matthias
Datum:
@Matthias Ein anderes Protokoll in Abhängigkeit von der Versionsnummer kann ich mir nicht wirklich vorstellen. Kommt die Länge vom Pollin-AVR-Evaluationsboard oder berechnest du die neu ? Kannst du mal ein Log mehrerer Nachrichten posten (mit Space zwischen den Bytes bitte) ? Ich habe hier eine RC30.
Datum:
Hallo Rudi, die Länge berechne ich beim Empfang wenn der Frameerror kommt auf dem Atmega, das ist prinzipiell das Verfahren aus deinem Atmega-Code. Die Logdaten zeichne ich heute Abend mal auf. Das unterschiedliche Versionen ein unterschiedliches Protokoll fahren sollten käme mir auch seltsam vor (zumindest bei Heiztechnik). Allerdings finde ich schon komisch das bei mir auch der Heizungsdruck reproduzierbar auf anderen Adressen liegt. Gruss Matthias
Datum:
Angehängte Dateien:Hallo Rudi, anbei das Log (ca. 2h 18:15-20:30) mit Spaces. Bzgl. der Datenerfassung hab ich nochmal geschaut. Sollte eigentlich so stimmen. Der Netio erfasst direkt die Telegramme und sendet sie per telnet. Am Anfang hatte ich etwas Probleme mit der Performance, deshalb sende ich nicht mehr die 1-Byte Telegramme. Muss es aber nochmal mit dem Eval-board versuchen (deine Version - Ausgabe über Uart) und schauen, ob ich damit andere Daten bekomme. Gruss Matthias
Datum:
@Matthias Die Daten werden offensichtlich wirklich in einem anderen Format geschickt. Hast du die Hard-/Software kontrolliert ? Hier meine Versionen: UBA3/MC10 (Universeller Brennerautomat/Mastercontroller) - 8 - V3.02 BC10 (Basiscontroller) - 9 - V2.02 RC30 (Raumcontroller) - 16 - V2.08 Version 3 KIM (Kesselidentifikationsmodul) 1051
Datum:
Angehängte Dateien:Anbei die Versorgung und Datenschnittstelle einer RC30. Alles über 2 Kontakte.
Datum:
@Rudi Hallo Rudi, vielen Dank für dein Infos. Habe bei mir in meiner jetzigen Konfiguration alles geprüft, scheint OK zu sein. Ich werde jetzt nochmal die Telegramme direkt über die RS232 auslesen (deine Atmega8-Software). Allerdings fehlt mir gerade etwas die Zeit, deshalb kann es noch ein paar Tage dauern. Ich melde mich sobald ich es getestet habe. Gruss Matthias
Datum:
@IngoF Bist du mit deiner Sendefunktionalität weiter gekommen ? Ich habe es jetzt mit zwei Fets und einer Z-Diode aufgebaut. Senden funktioniert, nur wird die Nachricht offensichtlich nicht ordentlich empfangen. Entweder ich bekomme keine Antwort oder eine Falsche. Ich habe zum Testen die 10 88 ... Nachricht verwendet.
Datum:
Nein, noch nicht wirklich.. Habe mich an der Prüfsumme versucht und aber nur ein wenig weiter gekommen.. Mit praktischen Versuchen habe ich noch nichts versucht... Vielleicht sollte ich doch den Microcontroller zum senden nehmen, Dann muss ich aber erst noch mal Dein Programm in Assembler nachschrieben oder noch mal von vorne anfangen... Gruß Ingo
Datum:
Also es scheint schon mal ein "normales" XOR zu sein. Und nach der Berechnung wird die Prüfsumme ein Bit nach rechts rotiert. Aber bei Bytes mit gesetztem MSB werden die beiden mittleren Bits getauscht. Aber irgendwie Ist das noch nicht ganz OK so... Vielleicht hat ja noch jemand eine Idee... Gruß Ingo
Datum:
@IngoF Senden funktioniert nur mit gleichzeitigem RX. Es kann auch nicht mit einer vorhandenen Adresse gesendet werden. Sendet man z.B. einfach ein 0x10 Antwortet die vorhandene 0x10 mit 0x10. Kollisionen werden über das RX erkannt, da der Bus bei einem "high" released wird ein ein anderer Sender den Bus auf "low" halten würde. Das mit der CRC hört sich doch schonmal gut an. Bei mir sah es etwas anders aus. Die oberen 4 Bits gingen nur in die oberen Bits der CRC ein. Die unteren 4 Bits in die unteren 4 Bits der CRC. Ich habe aber nur einen Nachrichtentyp getestet. Mit einer vorhandenen Sendefunktion sollte es evtl. einfacher werden.
Datum:
Soweit ich herausgefunden habe müsste man auch erst auf sein Polling warten. Und kann dann erst senden. Also 0x90 0x00 ist das Polling für die RC30/35 die mit 0x10 0x00 antwortet, oder noch Daten hinterhersendet. Ich hatte bei drei verschiedenen Telegrammen die Bits getestet. Dann wurde immer rechts rotiert. Also ging auf die Prüfsumme Bit0 das Bit0 vom letzen Byte, Das Bit1 vom vorletzten Byte , das Bit2 vom drittletzen Byte ein. Soweit ich mitbekommen habe schien die Adresse nicht mit in die Berechnung gegangen zu sein. Immer nur die Daten nach den Quell und Zieladresse. Die Prüfsumme von den Betriebsstunden kann man relativ gut berechnen. einfach 0x60 XOR mit dem erten Byte, dannach dann das Zwischenergebnis rotieren und dann XOR dem aktuellen Byte.. Das klappt dann bei allen Telegrammen. Außnahme sind die Telegramme die an dem vorletzten Byte das MSB gesetzt haben. Wäre ja mal ganz interessant zu wissen ob in der RC30/35 dann ein neuer Bus-Teilnehmer auftaucht wenn man das Polling immer mit der Adresse beantwortet. Vielleicht kann man schon mal herausfinden welche Adressen für welche Module vorgesehen sind. Gruß Ingo
Datum:
@IngoF So ganz komme ich bei deiner Berechnung nicht mit. Mal ein Bsp.: CRC = 0xE9 08 10 14 00 1E 64 00 <E9> crc = 0x60 crc = crc ^ 0x08 crc = crc >> 1 usw. bis 0x00 Da komme ich auf 0x1A
Datum:
Angehängte Dateien:Genau so... hier mal meine Beispiel-Berechnung mit Excel. Wer kein Excel kann sich das Bildchen ansehen... bei den Telegrammen mit größer 0x7f habe ich als Startwert 0x00 genommen. Die Prüfsummen sind in der Fett gedruckt. Bei anderen Telegrammen hat es aber nicht geklappt.. Aber immerhin schon mal ein weiterer Schritt in die Richtige Richtung. Habe alle Telegramme mitgeloggt und dann die passenden Telegramme ausgesucht und zum Berechnen genommen.
Datum:
Aha, mhh. Ich habe jetzt folgendes probiert, mit allen Bytes gerechnet bis auf die CRC. crc = 0x60 crc = crc ^ data if crc & 0x80 => crc = crc ^ 0x09 usw. Der Stern hinter dem Byte bedeutet es wurde mit dem Byte gerechnet und ein # bedeutet ein xor 0x09 und ein ! bedeutet kein xor 0x09. Die finale CRC wird mit 0xff xort. Stimmt auch fuer eine Gruppe bis es wieder nicht stimmt ;-) Ich glaube die benutzen doch ne Tabelle oder es geht noch etwas anderes mit rein. Evtl. hilft es ja. FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! DE * # 39 00 39 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! E0 * # 07 00 07 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! E2 * # 05 00 05 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! E4 * # 03 00 03 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! E6 * # 01 00 01 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! E8 * # 0F 00 0F FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! EC * # 0B 00 0B FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! EE * # 09 00 09 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! F0 * # 17 00 17 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! F2 * # 15 00 15 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! F4 * # 13 00 13 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! F6 * # 11 00 11 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! F8 * # 1F 00 1F FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! FA * # 1D 00 1D FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! FC * # 1B 00 1B FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! FE * # 19 00 19 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 00 * ! E9 00 E9 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 02 * ! EB 00 EB FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 04 * ! ED 00 ED FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 06 * ! EF 00 EF FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 08 * ! E1 00 E1 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 0C * ! E5 00 E5 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 0E * ! E7 00 E7 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 10 * ! F9 00 F9 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 14 * ! FD 00 FD FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 16 * ! FF 00 FF FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 18 * ! F1 00 F1 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 1A * ! F3 00 F3 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 1C * ! F5 00 F5 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 1E * ! F7 00 F7 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 20 * ! C9 00 C9 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 22 * ! CB 00 CB FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 24 * ! CD 00 CD FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 26 * ! CF 00 CF FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 28 * ! C1 00 C1 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 2A * ! C3 00 C3 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 2C * ! C5 00 C5 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 2E * ! C7 00 C7 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 30 * ! D9 00 D9 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 32 * ! DB 00 DB FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 34 * ! DD 00 DD FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 36 * ! DF 00 DF FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 38 * ! D1 00 D1 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 3A * ! D3 00 D3 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 3C * ! D5 00 D5 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 3E * ! D7 00 D7 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 42 * ! AB 00 AB FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 44 * ! AD 00 AD FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 46 * ! AF 00 AF FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 48 * ! A1 00 A1 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 4A * ! A3 00 A3 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 4C * ! A5 00 A5 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 4E * ! A7 00 A7 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 50 * ! B9 00 B9 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 52 * ! BB 00 BB FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 54 * ! BD 00 BD FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 56 * ! BF 00 BF FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 58 * ! B1 00 B1 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 5A * ! B3 00 B3 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 5D * ! B4 00 B4 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 5F * ! B6 00 B6 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 61 * ! 88 00 88 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 63 * ! 8A 00 8A FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 65 * ! 8C 00 8C FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 67 * ! 8E 00 8E FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 69 * ! 80 00 80 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 6B * ! 82 00 82 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 6D * ! 84 00 84 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 6F * ! 86 00 86 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 71 * ! 98 00 98 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 73 * ! 9A 00 9A FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 75 * ! 9C 00 9C FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 77 * ! 9E 00 9E FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 79 * ! 90 00 90 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 7B * ! 92 00 92 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 7D * ! 94 00 94 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 7F * ! 96 00 96 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 81 * # 68 00 61 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 83 * # 6A 00 63 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 85 * # 6C 00 65 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 87 * # 6E 00 67 FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 89 * # 60 00 69
Datum:
Ja, habe ich ja gesagt... bei den Telegrammen mit 0x80 oder größer muss genau bei dem XOR wohl die beiden mittleren Bits getauscht werden. Oder man nimmt den STartwert 0x00, dann stimmt es auch wieder... ABer wie gesagt bei den anderen Telegrammtypen am Anfang der Excel-Datei stimmt es auch nicht.. Also wie gesagt.. Ich habe für etwa einen Monat die Telegramme mitgeloggt und dann immer zwei Telegrammpärchen ausgesucht wo nur ein einziges Bit geändert wurde. Da habe ich dann bei allen Telegrammen herausgefunden dass die Bytes immer bei jedem XOR verschoben sind. Auch bei anderen Telegrammtypen. Gruß Ingo
Datum:
Nein, das kann ich nicht bestätigen. Mal auf die letzten Bytes und den Betriebsstundenzähler bezogen, es ändert sich bei der 0x80er Grenze (durch das Polynome) und dann noch bei einem Wechsel vom vorletzten Byte. Für mich bedeutet das eine normale CRC (Tabellenbezogen). Die Tabelle wird wohl hausbacken sein, ansonsten wäre die CRC schon klar. Bei einem Polynome von 0x09 (xort wenn das MSB in der CRC gesetzt ist) bleibt die Differenz zwischen berechneter und vorhandener CRC immer gleich, bis zu einem Wechsel des vorletzten Bytes, da es nun als Index auf einen neuen Wert in der Tabelle verweist. Da sich die Bytes davor nicht ändern ist dieser Index erstmal gleich. Teste es einfach mal ;-)
Datum:
Angehängte Dateien:Anbei noch eine Ausgabe als Logdatei:
FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 5E * ! 6D * ! F0 DE 21 2E
Die letzten 4 Byte:
F0 DE 21 2E
**----------CRC-1 aus dem Datenstream
**-------CRC-2 berechnet mit dem finalen XOR 0xff
**----CRC-3 ohne Polynome (einfaches XOR aller Bytes ohne finales
XOR)
**-berechneter Wert aus CRC-1 XOR 0xFF XOR CRC-2 (*1)
(*1) wobei ich grad merke das XOR 0xff hätte ich mir auch sparen können
Für mich sieht das erstmal gut aus ...
Datum:
Angehängte Dateien:Also dass sich die Bits verschoben auf die Prüfsumme auswirken ist ganz sicher. Zumindest bei den getesteten Telegrammen. Allerdings ist es nicht so einfach passende Telegrammpärchen zu finden bei denen sich nur ein Bit ändert. Das vorletzte Tabellenblatt enthält Telegramme von Dir und Mir die wenig änderungen haben. Das letzte Tabellenblatt sind Telegramme von 0x10 0x00 0x9c bei dennen das auch zutrifft. die letzte Zeile in Rot ist nur ein XOR damit man sieht welches Bit sich ändert. Nach meiner Berechnung funktionieren bisher alle Telegramme von 0x10 0x00 0x14. Denke das ist schon mal ein kleiner Schritt in die richtige Richtung.. Nur dass man bei Telegrammen mit >0x7f einen anderen Startwert nehmen muss (>0x7f = 0x60 / <0x80 = 0x00) Das Telegramm ist eigentlich nicht sooo gut geeignet die Prüfsumme zu finden... Am besten wäre ein Telegramm bei der sich alle Werte ändern, und das so häufig vorkommt dass man genug Rohmaterial hat um zu sehen welches Bit sich wie auswirkt. Aber das gibt es ja nicht.. ABer vielleicht kann man ja durch die Sendefunktion und die Antwort durch irgendeinen Busteilnehmer so ein Telegramm finden..... Diese Verschiebung durch eine Stelle bei jedem Byte kann doch nicht durch ein Polynom kommen, oder? Kann es sein dass es doch irgendein Polynom ist, bei der dann nach jedem Byte das Zwischenergebnis rotiert wird? Aber dann würde ich doch nicht so eine "gute" CRC mit einem simplen XOR nachrechnen können. Also irgendeine Schweinerei außer das rotieren haben die noch eingebaut.
Datum:
Wie sieht denn Deine Schaltung mit den FETS und der Z-Diode aus? Würde mich mal interessieren :-) Gruß Ingo
Datum:
Der initiale Wert ist 0x00. Wenn bei der CRC das MSB gesetzt ist, dann wird mit 12 xort, vor dem shiften. Bei der letzten Berechnung bzw. beim letzten Byte muss vor dem XOR aufgehört werden. Damit stimmen dann ALLE CRCs ! Ingo, gute Arbeit !
Datum:
> Wie sieht denn Deine Schaltung mit den FETS und der Z-Diode aus? > Würde mich mal interessieren :-) Ein P-MOSFET (20K am Gate Pullup) schaltet einen N-MOSFET (500 Ohm am Gate Pulldown) der die Masse über die Z-Diode (10V) auf den Bus schaltet. Ich habe 3 500mW parallel geschaltet, hatte keine "große". Leider ist die steigende Flanke auf dem Bus etwas langsam (die fallende Flanke nicht), evtl. gibt es da noch Probleme.
Datum:
Also anstelle des Wertes, oder noch zusätzlich mit 0x12 XORen. Funktioniert es dann auch bei allen anderen Telegrammen, oder nur bei bei den Betriebstunden Telegrammen? Welcher Teil wird denn verknüpft? Alles, oder nur der Datenbereich? Kann die Flanken bei meiner Lösung leider nicht kontrollieren.. Habe leider keine Möglichkeiten mehr dazu... Gruß Ingo P.S. Hat ja auch eine Weile gedauert das rauszufinden.. nur mit den 0x80 Werten kam ich nicht so ganz weiter...
Datum:
Achso... das MSB bei der Prüfsumme.... Nicht beim Datenbyte... Na dann werde ich mal testen...
Datum:
Hier der Code:
poly = 12 crc1 = 0x00 for i in range(0,len(a)-1): crc1 = crc1 ^ int(a[i],16) crc2 = crc1 if crc1 & 0x80: crc1 ^= poly d = 0 if crc1 & 0x80: d = 1 crc1 = crc1 << 1 crc1 &= 0xfe crc1 |= d => crc2 |
Datum:
Ich habe mal versucht die 8 anzusprechen, aber leider nichts. Meine Nachricht: 33 88 14 00 03 6C Die Adresse kann natürlich auch falsch sein und Statusbits involvieren.
Datum:
> Funktioniert es dann auch bei allen anderen Telegrammen, oder nur bei > bei den Betriebstunden Telegrammen? Bei allen ;-)
Datum:
Vielleicht muss man sich ja auch erst anmelden oder die Teilnehmer nehmen nur eine bestimmte Adresse an. Jede Adresse steht ja für einen bestimmten Teilnehmer. Schätze mal die 08 ist der Master und schickt das Polling los. Also müsstest Du warten bis einmal das Telegramm 0xB3 0x00 auftaucht. Was soll dass den für ein Telegramm sein? also 33 ist der ABsender die 88 der Empfänger (0x08) mit MSB gesetzt damit es antwortet. Dann möchtest Du telegramm 0x14 (oder ist das nur ein Speicherbereich). Dannach müsste dann die Prüfsumme kommen und anschließend 0x00 mit Stopbit 0, oder also 0x33 0x88 0x14 "CRC" 0x00 Fang doch erst mal mit was einfacheren an... Versuch doch erst mal nur ein existierendes Polling zu beantwortet. Also eine Adresse die noch nicht in der RC30 als Busteilnehmer eingetragen ist. z.B die 0x21 oder 0x22 wenn die noch nicht vorhanden sind. Glaub das sollten irgendwelchen Mischer sein, oder? Also auf jedes 0xa1 0x00 mit 0x21 0x00 antworten. Also erst mal ganz ohne Prüfsumme.. Dannach müsste das Polling öfter kommen und vielleicht in der RC30 als Busteilnehmer auftauchen. Dann ist schon mal klar dass das senden funktioniert. Hoffe dass es schon reichen sollte um von der RC30 als Busteilnehmer erkannt zu werden. Nicht dass noch mehr als "anmeldung" erwartet wird. Oder vielleicht kommt dann aufeinmal eine Anfrage von irgendeinem Busteilnehmer... Gruß Ingo
Datum:
Ja, mal schaun. Ich stelle den Sklaven grad auf einen AVR644p um. Der hat wenigstens 2 Uarts. Einen Timer für den Timeout will ich auch noch programmieren und dann noch die UART-Break Geschichte in Software. Hoffe das funktioniert soweit. > Was soll dass den für ein Telegramm sein? also 33 ist der ABsender die > 88 der Empfänger (0x08) mit MSB gesetzt damit es antwortet. Dann > möchtest Du telegramm 0x14 (oder ist das nur ein Speicherbereich). Das ist die Abfrage für die Betriebsstunden. Break hatte ich bisher über einen Cortex gesendet, der kann das mehr oder weniger in Hardware. Den will ich aber für den Sklaven aber nicht benutzen. Der 644er läuft jetzt nebenher und hat die Sendefunktionalität. Ich kann dann also mit 2 Geräten den Bus loggen (der "alte" M8 und der 644). > Hoffe dass es schon reichen sollte um von der RC30 als Busteilnehmer > erkannt zu werden. Nicht dass noch mehr als "anmeldung" erwartet wird. > Oder vielleicht kommt dann aufeinmal eine Anfrage von irgendeinem > Busteilnehmer... Das sollte man ja beim einschalten der Anlage direkt sehen können. Hat das mit der CRC bei dir funktioniert ?
Datum:
Also. Ich warte auf ein 0x8F und antworte mit einem 0x0F 8F BRK 0F BRK FC TIMEOUT Danach kommt dann FC und ein Timeout, ist wohl sowas wie Busreset !? Das ist also erstmal falsch nehme ich an. Wenn ich kein Break sende dann bekomme ich ein Echo von der 0x0f und ein Timeout. 8F BRK 0F 0F TIMEOUT Wenn ich kein Break sende und 0x0f 0x00 sende bekomme ich: 8F BRK 0F 00 TIMEOUT Wenn ich kein Break sende und 0x0f 0x00 0xFF sende bekomme ich: 8F BRK 0F 00 FF FF TIMEOUT Also wieder ein Echo.
Datum:
Hallo Rudi, Laut dem Mitschnitt hier: Beitrag "Re: Logamatic 2107 Schnittstelle" müsste auf das Polling mit Adresse und 0x00 mit Stopbit 0 geantwortet werden. Als Antwort dürfte dann eigentlich garnichts kommen. Vielleicht gibt es die Adresse ja ganricht. Versuch doch mal die 0x21 oder 0x22 wenn die Mischer nicht eingebaut sind. Was ist das denn für ein Break? Wer sendet das denn? Also wenn das Terminalprogramm am PC ein Break sendet dann wird der Sendepin für 3 Sekunden auf 0 gesetzt. Das könnte für den Bus oder den Busmaster vielleicht zuviel sein. Keine Ahnung was der AVR-Uart für ein Break sendet. Auf dem Bus wurden ja nur 9 Bit (937,5µs) lang Null gesendet Vielleicht muss der UART vom Atmega8 (oder was auch immer) entsprechend konfiguriert werden. Werde das irgendwann mal im Atmega8 in Assembler programmieren. Dummerweise hatte die Festplatte den Wochenlangen Dauerbetrieb nicht verkraftet und muss mir eine andere besorgen... Kann das im Moment leider nicht selber testen. Gruß Ingo
Datum:
> Laut dem Mitschnitt hier: > Beitrag "Re: Logamatic 2107 Schnittstelle" > müsste auf das Polling mit Adresse und 0x00 mit Stopbit 0 geantwortet > werden. Ja, das habe ich versucht, aber ich bekomme auf der Leitung ein Echo. > Als Antwort dürfte dann eigentlich garnichts kommen. Hier nicht. > Vielleicht gibt es die Adresse ja ganricht. Versuch doch mal die 0x21 > oder 0x22 wenn die Mischer nicht eingebaut sind. Das habe ich versucht, gleiches Verhalten. > Was ist das denn für ein Break? Wer sendet das denn? Also wenn das > Terminalprogramm am PC ein Break sendet dann wird der Sendepin für 3 > Sekunden auf 0 gesetzt. Das könnte für den Bus oder den Busmaster > vielleicht zuviel sein. Ja, ist es. Das Break sollte in etwa 1 Frame (10Bit) lang sein, damit die UART ein negiertes Stop-Bit sieht. > Keine Ahnung was der AVR-Uart für ein Break > sendet. Auf dem Bus wurden ja nur 9 Bit (937,5µs) lang Null gesendet Ja, die 937.5uS habe ich hier in etwa auch. Beim Mega ist das etwas komplizierter, da muss TX abgeschaltet werden und dann gehts per GPIO weiter. > Vielleicht muss der UART vom Atmega8 (oder was auch immer) entsprechend > konfiguriert werden. Werde das irgendwann mal im Atmega8 in Assembler > programmieren. Dummerweise hatte die Festplatte den Wochenlangen > Dauerbetrieb nicht verkraftet und muss mir eine andere besorgen... Kann > das im Moment leider nicht selber testen. Schade, bisher habe ich hier noch keine Probleme. Anbei mal der Code in C. Ich habe intern einen Timer der mit etwa 100KHz läuft und die timer_set_wait Funktion wartet die angegebenen Ticks. Ich habe mit dem Oszi gemessen und es sieht ganz vernünftig aus. Bei der RX Funktion (nicht anbei) habe ich mir noch ein Flag für ein Bus-Free eingebaut, das wird nach einem Timeout oder Break gesetzt und beim Empfang eines neuen Bytes gelöscht. So vermeidet man Kollisionen auf dem Bus.
void uart0_send_data( uint8_t * data, uint8_t len, uint8_t flag )
{
while(len--)
{
/* wait two bit */
timer_set_wait(&timer02,20UL);
/* wait for empty data register */
while (!(UCSR0A&_BV(UDRE0))) __asm("nop");
/* send data */
UDR0 = *data++;
}
/* send break */
if ( flag & D_DATA_FLAG_BREAK )
{
/* wait for tx complete */
while (!(UCSR0A&_BV(TXC0))) __asm("nop");
/* clear flag */
UCSR0A|=_BV(TXC0);
/* wait one bit */
timer_set_wait(&timer02,10UL);
/* disable uart TX operation */
UCSR0B &= ~_BV(TXEN0);
/* set TX line low (gpio) */
PORTD &= ~(1<<1);
/* wait 11 bit */
timer_set_wait(&timer02,110UL);
/* set TX line high (gpio) */
PORTD |= (1<<1);
/* enable uart TX operation */
UCSR0B |= _BV(TXEN0);
}
}
|
Datum:
Rudi schrieb: > Ja, die 937.5uS habe ich hier in etwa auch. Denke mit "in etwa" meintest Du genau... Allerdings > /* wait 11 bit */ Müssten dann doch 9 Bit sein, oder? Waren doch 9600 8N1 wenn ich mich recht erinnere. Also das Startbit High dann 1 Bit warten und dann 9 Bit Low (8 Daten+1Stopbit. Keine Ahnung ob sich der Busmaster wegen so einer kleinigkeit anstellt. Vielleicht sendest Du Die Bytes ja auch zu schnell hintereinander? Soweit ich mich aber erinnere wurden von der RC30 auch die Bytes hintereinander losgeschickt. Dürfte dann eigentlich auch nicht sein. Liegt das Signal denn selbsterzeugte Break denn auch richtig an? Weiß jetzt ganricht mehr so genau ob jetzt 10V oder 15Volt auf dem Bus eine 1 oder 0 war. Normalerweise wird das Signal noch mal durch einen Treiber wie MAX232 invertiert.. Kann leider auch nur im Dunkeln herumstochern... Gruß Ingo
Datum:
Achso... Wir haben ja nur im laufenden Betrieb das Polling mitgeschnibbelt.. Vielleicht ist die einmalige Anmeldeprozedur ja ganz anders und läuft nur ganz kurz nach dem einschalten der Anlage ab. Vielleicht kommt bei der erstmaligen Anmeldung ja noch irgendwas wie eine Bestätigung als z.B. das 0xfc. Kannst Du das den mal mit dem Oszilloskop vergleichen ob das gesendet wird was Du auch senden möchtest.. Gruß Ingo
Datum:
> Wir haben ja nur im laufenden Betrieb das Polling mitgeschnibbelt.. > Vielleicht ist die einmalige Anmeldeprozedur ja ganz anders und läuft > nur ganz kurz nach dem einschalten der Anlage ab. Nein, da passiert nicht viel. Siehe unten, direkt die Einschaltsequenz. Das zweite FF z.B. 98 FF bedeutet Timeout, das habe ich jetzt eingebaut. > Vielleicht kommt bei der erstmaligen Anmeldung ja noch irgendwas wie > eine Bestätigung als z.B. das 0xfc. Nein. > Kannst Du das den mal mit dem Oszilloskop vergleichen ob das gesendet > wird was Du auch senden möchtest.. Das stimmt schon, ich logge mit unterschiedlichen CPUs den Bus und die sehen das gleiche. Ich denke da hilft nur ein Log vom ServiceKey. So wie ich das gesehen habe wandelt der das Protokoll von der 2107 UART auf diesen Bus. Evtl. haben wir es auch noch nicht richtig verstanden wer was sendet. Warum hat z.B. die 98 immer einen Timeout, die 88 z.B. auch, und die anderen Adressen werden immer mit BRK gesendet bzw. bestätigt. Das ist auch nicht klar.
89 00 09 88 04 05 01 AF 00 08 09 04 05 19 CB 00 09 88 04 0B 01 B3 00 08 09 04 0B 0C C2 00 09 88 15 00 01 E1 00 08 09 15 00 00 9C 00 09 08 16 00 FF 77 00 01 00 09 08 16 01 5A D0 00 01 00 09 08 16 03 00 8E 00 01 00 09 88 16 15 01 C7 00 08 09 16 15 5D 00 09 88 16 16 01 C1 00 08 09 16 16 5E 00 09 08 33 01 FF E1 00 01 00 09 08 33 09 00 0E 00 01 00 09 00 29 00 6B 5F 00 09 00 08 00 19 00 00 B7 00 D5 80 00 00 00 00 64 00 D3 D6 0D 0A AC 00 00 00 0B 6C 4C 00 C6 80 7A 00 8A 00 89 00 09 88 04 0E 01 B9 00 08 09 04 0E 62 00 09 00 8B 00 89 00 09 00 08 00 33 00 08 FF 32 FB 00 0F 00 01 46 00 FF B1 00 08 00 34 00 32 01 D6 01 D6 21 00 00 03 00 01 9E 60 00 0D 56 00 21 00 8C 00 89 00 09 00 8D 00 08 00 07 00 03 00 00 00 00 00 00 00 00 00 00 00 00 12 00 08 00 16 00 FF 5A 64 00 06 FA 0A 01 04 64 37 02 56 00 89 00 09 00 08 00 18 00 00 00 D6 00 00 00 00 24 60 80 00 01 D6 00 D6 00 00 0F 30 55 01 0E 00 00 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 8E 00 89 00 09 00 8F 00 89 00 09 00 89 00 09 00 89 00 09 00 90 00 98 FF 89 00 09 00 91 00 89 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 92 00 89 00 09 00 93 00 89 00 09 00 89 00 09 00 89 00 09 00 94 00 89 00 09 00 95 00 89 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 96 00 89 00 09 00 97 00 89 00 09 00 89 00 09 00 89 00 09 00 98 00 89 00 09 00 A0 00 89 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 89 00 09 00 |
Datum:
>> Ja, die 937.5uS habe ich hier in etwa auch. >Denke mit "in etwa" meintest Du genau... ;-) Es geht an die eine Millisekunde. >> /* wait 11 bit */ > Müssten dann doch 9 Bit sein, oder? Waren doch 9600 8N1 wenn ich mich > recht erinnere. Also das Startbit High dann 1 Bit warten und dann 9 Bit > Low (8 Daten+1Stopbit. Keine Ahnung ob sich der Busmaster wegen so einer > kleinigkeit anstellt. Vielleicht sendest Du Die Bytes ja auch zu schnell > hintereinander? Soweit ich mich aber erinnere wurden von der RC30 auch > die Bytes hintereinander losgeschickt. Dürfte dann eigentlich auch nicht > sein. Du musst den Bus für 10Bit auf Low ziehen, also START 8Bit STOP sind Low. Das elfte Bit ist für den Clockjitter ;-) > Liegt das Signal denn selbsterzeugte Break denn auch richtig an? Weiß > jetzt ganricht mehr so genau ob jetzt 10V oder 15Volt auf dem Bus eine 1 > oder 0 war. Normalerweise wird das Signal noch mal durch einen Treiber > wie MAX232 invertiert.. Das liegt an, ich logge ja gleichzeitig den Bus. Mein Problem ist eher dieses "mitsenden" vom Master.
Datum:
Rudi schrieb: > 98 00 Also es ist ja nicht so dass die 98 immer ein Timeout bekommt. Bisher habe ich auf meinem Bus noch nie ein Timeout sehen können. Aber ich habe auch nicht so stark danach gesucht.. Vielleicht gibt es ja trotz Polling irgendwelche Kollisonen. Die 98 FF würde ich jetzt einfach mal als Übertragungsfehler oder Kollision einordnen. Soweit ich mitbekommen habe werde bekannte Busteilnehmer häufiger abgefragt. Ein Polling für Adresse 88 habe ich z.B. noch nie gesehen. Vermutlich weil das der Busmaster ist und das Polling sendet. Warum soll er sich also selber anpollen. Danach werden fortlaufend die Adressen angepollt die noch nie geantwortet haben. Fing dann meistens mit 0x89 und dann kommen der Reihe nach 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, und 0x98. Dann war soweit ich mich erinnere erst mal eine Zeitlang Ruhe beim Polling von bisher unbeantworteten Pollings. Dann ging es nach einiger Zeit mit dem nächsten Polling-Block weiter Als 0xA0, 0xA1, ..... 0xA8, dann wieder Pause und der nächste Polling-Block war dran. Demnach hätte das Polling 0x98 dort noch garnichts zu suchen. Deshalb vermute ich wirklich einen Übertragungsfehler. Vielleicht haben die beiden Sender mitgehört und mitbekommen dass die Daten falsch übertragen wurden und haben dann die Übertragung beendet. Vielleicht gab es deswegen kein <break>. Vielleicht mal das im Auge behalten ob das Polling mit dem Timeout immer, wie hier vermutlich, zur falschen Zeit kommt. Glaub ich sollte mich mal schleunigst um eine Festplatte kümmern. Vielleicht hatte die ja auch schon eine Vorschädigung. Hatte die Festplatte gebraucht gekauft. Rudi schrieb: > Du musst den Bus für 10Bit auf Low ziehen, Ups, hatte doch glatt das Startbit vergessen... Vermutlich wird das eine Bit "zuviel" wohl keine Probleme machen... Gruß Ingo
Datum:
Ingo F. schrieb: > Ein Polling für Adresse 88 habe ich z.B. noch nie > gesehen. Meinte damit das 0x88 <break> Polling und nicht das mit einem Telegramm wie 0x10 0x88 .....
Datum:
> Demnach hätte das Polling 0x98 dort noch garnichts zu suchen. Deshalb > vermute ich wirklich einen Übertragungsfehler. Vielleicht haben die > beiden Sender mitgehört und mitbekommen dass die Daten falsch übertragen > wurden und haben dann die Übertragung beendet. Vielleicht gab es > deswegen kein <break>. So wie ich das sehe kommt nur bei diesen Adressen (18,88,98) ein Timeout. Anbei mal ein Log mit Zeitstempel.
1272717168.7 98 FF 1272717171.3 98 FF 1272717175.15 88 FF 1272717177.27 98 FF 1272717179.87 98 FF 1272717182.48 98 FF 1272717184.63 98 FF 1272717186.38 98 FF 1272717186.86 88 FF 1272717188.16 98 FF 1272717190.76 98 FF 1272717193.36 98 FF 1272717194.06 98 FF 1272717195.36 98 FF 1272717196.58 18 FF 1272717197.43 18 FF 1272717199.39 98 FF 1272717199.86 98 FF 1272717201.17 98 FF 1272717206.73 98 FF 1272717209.33 98 FF 1272717214.17 98 FF 1272717215.31 98 FF 1272717216.61 98 FF 1272717218.07 98 FF 1272717220.67 88 FF 1272717223.27 98 FF 1272717226.69 98 FF 1272717227.17 98 FF 1272717228.47 98 FF 1272717231.07 98 FF 1272717234.38 98 FF 1272717236.12 18 FF 1272717241.48 98 FF 1272717244.45 98 FF 1272717247.05 98 FF 1272717249.65 98 FF 1272717252.25 98 FF 1272717254.53 98 FF 1272717255.3 98 FF 1272717255.66 98 FF 1272717257.9 98 FF 1272717260.5 98 FF 1272717263.1 98 FF 1272717264.88 98 FF 1272717266.18 98 FF 1272717268.79 98 FF 1272717271.39 98 FF 1272717274.69 98 FF 1272717275.99 98 FF 1272717276.76 98 FF 1272717278.79 88 FF 1272717279.19 98 FF 1272717279.89 98 FF |
Datum:
Hallo Rudi, das habe ich ja nicht ausgeschlossen.. Ich habe nur gesagt dass genau die 98 FF aus dem Log vermutlich ein übertragungfehler ist. Vielleicht kommen ja gerade immer nur diese Adressen zustande bei Übertragungsfehlern. Vielleicht sollte ich auch mal auf meinem Bus genauer mitloggen. Bei Dir ist das ja ziemlich oft, oder? Sind das Sekunden? oder was ist das für eine Zeiteinheit? Gruß Ingo
Datum:
> Vielleicht sollte ich auch mal auf meinem Bus genauer mitloggen. > Bei Dir ist das ja ziemlich oft, oder? Sind das Sekunden? oder was ist > das für eine Zeiteinheit? Ja, sind Sekunden. Die Daten kommen kontinuierlich, aber nicht zyklisch.
Datum:
Angehängte Dateien:Anbei mal ein paar Oszi Screens von den Nachrichten und dann noch die Reaktion wenn ich auf einen Request antworte.
Datum:
Hallo Rudi, in Bild 4 und 5 scheint das wohl keine Störung zu sein. Das scheint wohl die RC30 zu sein (0x10). Die kleinen "Störungen" sehen genauso aus wie das nachfolgende Byte. Also ob die RC30 die Bytes erst zum Sendeteil überträgt und trotzdem den Weg auf den Bus finden. Und dann wird erst das Byte übertragen. Beim lesen dürfte das Problem vermutlich nicht auftreten. Die anderen Busteilnehmer scheinen ja nicht so eine Pause zu machen. In Bild 1 bist Du vermutlich in der Zeile verrutscht. Das sind 1,04 ms = 961,5 Hz also 10 Bit. die letzten beiden Bilder sind vermutlich Deine Antwort, oder? Sieht so aus als ob es da wirklich eine Kollision gibt. Kann das sein dass Du zu langsam geantwortet hast und das nächste Telegramm oder eine Fehlermeldung verschickt wird? Gruß Ingo
Datum:
> in Bild 4 und 5 scheint das wohl keine Störung zu sein. > Das scheint wohl die RC30 zu sein (0x10). Die kleinen "Störungen" sehen > genauso aus wie das nachfolgende Byte. Also ob die RC30 die Bytes erst > zum Sendeteil überträgt und trotzdem den Weg auf den Bus finden. Und > dann wird erst das Byte übertragen. Beim lesen dürfte das Problem > vermutlich nicht auftreten. Die anderen Busteilnehmer scheinen ja nicht > so eine Pause zu machen. Das sehe ich jetzt auch. Mhh, sehr merkwürdig. > In Bild 1 bist Du vermutlich in der Zeile verrutscht. Das sind 1,04 ms = > 961,5 Hz also 10 Bit. Das ist das Byte mit dem Low Stopbit (Break). > die letzten beiden Bilder sind vermutlich Deine Antwort, oder? Ja, genau. > Sieht so aus als ob es da wirklich eine Kollision gibt. Kann das sein dass > Du zu langsam geantwortet hast und das nächste Telegramm oder eine > Fehlermeldung verschickt wird? Nein, eigentlich nicht. Die ersten beiden Bytes sind der Request und kurz danach der Response mit "Fehler". Eigentlich wird ein normaler Response etwas später verschickt. Das habe ich auch probiert, aber ohne ersichtliche Besserung. Den einzigen Fehler den ich noch sehe ist das falsche Timing nach dem zweiten FET und der Diode in meiner Sendeschaltung. Beim abschalten (Low/High-Flanke auf dem Bus) floated der Drain-Ausgang und Diodeneingang. Bei dir wäre das zwischen Transistor und Diode. Da müsste man einen Pullup dran hängen der durch eine Diode + C die Strecke auf einen definierten Pegel zieht, wenn der FET abgeschaltet wird. Das C wird über den Bus geladen und sollte dann bei etwa 15V hängen. Denkst du das würde funktionieren ?
Datum:
Rudi schrieb: > ein, eigentlich nicht. Die ersten beiden Bytes sind der Request und > kurz danach der Response mit "Fehler". Achso, jetzt sehe ich das erst. Also das Polling dann eine kurze Pause, Deine Antwort, dann eine Pause Dein Break. Sieht so aus als ob kurz nach Deinem Break ein Break vom Busmaster kommt, oder?Deine Sendeschaltung zieht den Signalpegel ja etwas tiefer als in dem Polling vom Master. Das letzte Break scheint den selben Low-Pegel zu haben wie das Polling. Der Master wartet ja kaum und schießt sofort nach Deinem 0-Stopbit sofort los. Was Du jetzt mit dem Floaten meinst verstehe ich jetzt nicht so ganz Sieht doch ganz gut aus. Oder meinst Du dass das zweite Break dadurch entsteht? Gruß Ingo
Datum:
Die Low/High-Flanke kommt zu spät, braucht zu lange. D.h. die "High"-Bits sind etwas kürzer und die "Low"-Bits länger.
Datum:
Angehängte Dateien:Vergiss es ;-) Das Problem hatte ich im Testaufbau gesehen, auf dem Bus sieht es besser aus. Anbei noch 3 Bilder von meinem Response und die Variationen. Sieht mir irgendwie nach einem Timing-Problem aus. Ab und sieht es auch so aus wie es soll. Oben der Bus und unten der TX-Ausgang vom uC.
Datum:
Angehängte Dateien:Wenn man jetzt Bild 04 und 10 miteinander vergleicht würde mir jetzt Spontan einfallen das die RC30 nur mit 0,5Vss sendet und der Busmaster das Signal aufarbeitet und für alle anderen Busteilnehmer aufarbeitet. Bei beiden Signalen fällt mir auf dass die Daten doppelt vorhanden sind und das Low-Level bei dem Echo anders ist. Also nur durch ein floaten am FET kann ich mir sowas nicht vorstellen. Habe bei meiner RC 30 mal die Platine von beiden Seiten fotografiert und keinen Hinweis dafür gefunden dass dort irgeinde Schaltung zu finden ist wie in unserem Sendeteil. Dort wurde nur irgendwie ein CMOS-Logik-Baustein verwendet. Die Schaltung habe ich aber ignoriert weil ich die nicht so ganz verstanden habe und nicht sicher war dass ich die richtig entflechtet hatte. Mein Ergebnis hänge ich mal an. Aber warum sollte es dann eine Prüfsumme geben wenn der Busmaster sowieso alles widerholt. Dann könnte die RC30 doch einfach überprüfen ob das Echo korrekt ist. Aber das würden die anderen Busteilnehmer ja nicht mitbekommen wenn die RC30 feststellt dass das Echo falsch war. Und müsste sich dann melden dass das letzte Telgramm fehlerhaft wäre.. Keine Ahnung.... Ist das denn bei allen anderen Busteilnehmer auch so, und nur bei Telegrammen vom Busmaster ohne Echo? Gruß Ingo
Datum:
> Wenn man jetzt Bild 04 und 10 miteinander vergleicht würde mir jetzt > Spontan einfallen das die RC30 nur mit 0,5Vss sendet und der Busmaster > das Signal aufarbeitet und für alle anderen Busteilnehmer aufarbeitet. Das glaube ich nicht. Der Bus wird aufbereitet hört sich komisch an. Wir sind ja nicht an der RC30 sondern an der ???BCXX??? am Klinkenstecker. Die Schaltung wird dort sicherlich ganz anders sein als bei den internen Busteilnehmern. Ich werde die mal zerlegen und Bilder machen. > Bei beiden Signalen fällt mir auf dass die Daten doppelt vorhanden sind > und das Low-Level bei dem Echo anders ist. Die doppelten Signale kann ich auch nicht erklären. Das Low-Level liegt an der verwendeten Diode in der Sendeschaltung. > ... > CMOS-Logik-Baustein verwendet. Die Schaltung habe ich aber ignoriert > weil ich die nicht so ganz verstanden habe und nicht sicher war dass ich > die richtig entflechtet hatte. Mein Ergebnis hänge ich mal an. Ja, das ist ein Busteilnehmer und kein externes etwas mit einer 3m Antenne ;-) > Aber warum sollte es dann eine Prüfsumme geben wenn der Busmaster > sowieso alles widerholt. Dann könnte die RC30 doch einfach überprüfen ob > das Echo korrekt ist. Aber das würden die anderen Busteilnehmer ja nicht > mitbekommen wenn die RC30 feststellt dass das Echo falsch war. Und > müsste sich dann melden dass das letzte Telgramm fehlerhaft wäre.. Nein, die Prüfsumme ist für den Empfänger und ob der sich bei fehlerhafter Prüfsumme meldet ist eine andere Geschichte. Da kommt es drauf an ob er die Daten haben wollte/braucht oder ob es später auch okay ist (Timeout). > Ist das denn bei allen anderen Busteilnehmer auch so, und nur bei > Telegrammen vom Busmaster ohne Echo? Ich habe bei einem Teilnehmer noch einen ripple gesehen, ich denke da ist die Verdrahtung oder der Sendeteil etwas daneben. Ich werde da nochmal messen und Knipsen.
Datum:
Zu der Schaltung: Tx geht über ein (R)C-Filter an den Inverter (Treiber) und dann wird nur der Analoganteil ... Wohin gespeist ? Der muss doch wieder an den Bus ? Rx geht an den Treiber, Diode, R-Filter und dann Pullup damit es nach der Diode nicht floated, und dann den Doppelinverter und den RC-Filter, der ist bei der Übertragungsrate okay. Der RX und Tx-Pfad sollten noch direkt an den Bus gehen oder sehe ich das nicht ???
Datum:
Rudi schrieb: > Der RX und Tx-Pfad sollten noch direkt an den Bus gehen oder sehe ich > das nicht ??? Ja, aber ich habe nirgendwo etwas finden können wo es zum Bus geht. Habe mich aber auch nicht getraut das LCD-Display von der Platine zu nehmen. Habe das vor Tausend Jahren auch schon mal bei einer alten Uhr probiert und hatte dannach nur Kontaktschwierigkeiten. Rudi schrieb: > Die doppelten Signale kann ich auch nicht erklären. Das Low-Level liegt > an der verwendeten Diode in der Sendeschaltung. Ist schon klar. Aber bei Bild 4 kann man sehen dass der Signal-Low-Pegel vom Polling und dem Echo etwa gleich sind und Das Low-Level von Deinen gesendeten Daten etwas niedriger liegt. Halte es auch für unwahrscheinlich dass das Echo irgendwie von Deiner Schaltung erzeugt wird. Irgendeiner schickt das Echo. Keine Ahnung wie und warum. Und dass die RC30 die Signale vorher auf den Bus intern vor dem Senden irgendo herumschiebt und die dabei ungewollt auf den Bus kommen kann ich mir eigentlich auch nicht vorstellen. Man könnte ja mal zum Spass ausprobieren was passiert wenn man auch nur ein Signal mit 0,5Vss auf den Bus sendet. Wenn das bei der RC30 entsteht dürfte sich ja dann am Bus nichts ändern. Aber ehrlich gesagt kann ich mir auch nicht vorstellen dass nur mit einem so "schwachen" Signal gesendet wird. Rudi schrieb: > Wohin gespeist ? Der muss doch wieder an den Bus ? Ich habe nirgendwo einen Hinweis gefunden. Habe allerdings auch keine Ahnung wo der R17 hingeht. Der Pfeil nach oben soll keine Versorgungsspannung sein. Sind alles nur Vermutungen habe keine Ahnung was da so auf dem Bus abgeht .... Gruß Ingo
Datum:
Danke noch mal dafür dass Du den letzten Rest der CRC herausgefunden hast. Ich glaub ich wäre da nie hinter gekommen. Bei mir funktioniert die CRC-Prüfung jetzt auch einwandfrei. Die Festplatte war übrigens nicht das Problem. MySQL hat mit anwachsen der Datenmenge immer mehr Speicher benötigt , bis hinterher die Auslastung permanent bei 100% lag. Hatte das schon eher auf mein Java-Programm bezogen. Bei 40MByte Daten war ein Arbeiten nicht mehr möglich. Habe bei MySQL allerdings auch die InnoDB und nicht myISAM genommen. Angeblich sollte InnoDB ja für viele Schreibzugriffe und wenig Lesezugriffe ausgelegt sein. Wieso hats Du denn die MyISAM genommen? Deine Datenbank müste ja inzwischen ein vielfaches meiner Datenbank haben. Was für eine Prozessorlast verursacht denn Deine MySQL? Und was hast Du für einen Rechner, Bei mir ist es nur ein IBMT43 Pentium M 750 1,86 GHz und 1,5GB RAM und habe bei 40 MByte schon eine Auslastung von permanent 100%. Nach löschen der ganzen Daten war ich wieder bei 10% Auslastung und weniger
Datum:
Angehängte Dateien:> Deine Datenbank müste ja inzwischen ein vielfaches meiner Datenbank > haben. Was für eine Prozessorlast verursacht denn Deine MySQL? Und was > hast Du für einen Rechner, Ich habe einen AMD Athlon(tm) XP 1800+ und 500MB Ram. Die CPU-Last liegt bei etwa 25% im Durchschnitt. Es ist aber nur der Server der die Daten in die DB schreibt und die Bilder generiert (siehe Anhang). Ich speicher und generiere z.Z. für zwei Heizungen. Für die eine habe ich etwa 400MB Daten und 400MB Index (12Mill. Einträge) und für die andere etwa 300MB Daten und 300MB Index (9 Mil.Einträge) ;-) Ich will das ganze aber noch optimieren da die Abfrage und das Einfügen zu lange dauert. Wie Speicherst du die Daten, geparst, nur was du brauchst oder als blob ? Ich speicher jede Temperatur usw. einzeln als Wert mit Datum, Sender und Typ.
Datum:
Ich habe die CRC-Berechnung noch etwas vereinfacht:
for i in range(0,len(a)-1):
d = 0
if crc1 & 0x80:
crc1^=12
d = 1
crc1 = crc1 << 1
crc1 &= 0xfe
crc1 |= d
crc1 = crc1^int(a[i])
|
Datum:
Noch etwas zur Datenbank. Für diesen Fall der "Datensicherung" ist die myISAM einfach besser und schneller. Die Features der InnoDB braucht man dabei einfach nicht. Ich werde das Format soweit aufbrechen, das jeder Datentyp eine eigene Tabelle bekommt. Das sollte die Abfragen zum Teil recht gut beschleunigen und evtl. funktioniert das dann auch über Ajax in Realtime ... Hast du dir schon etwas für den "späteren" nicht Frickelaufbau überlegt ?
Datum:
Angehängte Dateien:Also bei Rudi schrieb: > Für diesen Fall der "Datensicherung" ist die > myISAM einfach besser und schneller. Habe ich auch festgestellt.. Satt permanent 100% und Absturz nach 2,5 Stunden habe ich jetzt nur noch durchschnittlich 80%. Das ändern der Datenbankengine ging mit nur zwei Mausklicks. Rudi schrieb: > Ich werde das Format soweit aufbrechen, das jeder Datentyp eine eigene > Tabelle bekommt. Vielleicht ist das Problem dass ich zur Zeit noch keine Datenreduzierung mache und alle Werte eines Telegramms abspeichere. Vielleicht sollte ich das auch so wie Du handhaben und nur Tabellen nach Datentyp oder nur eine einzige Tabelle mit allen Werten nehmen. Dadurch bräuchte ich viele doppelte Werte nicht speichern... Vielleicht hilfts. Bei Der CRC Berechung musste ich nur noch das XOR mit 0x0C einfügen. Schätze mal dass sie einer Deiner beiden Berechnungen sehr ähnlich ist. Habe meine Schwirigkeiten mit unbekannten Programmiersprachen ;-) Mit der korrekten Prüfsumme kann man auch schnell sehen wieviele Telegramme fehlerhaft sind. Bei mir an einem Tag teilweise bis zu 200. Das kann aber auch an der Prozessorauslastung liegen. Als Endgültige Version hätte ich schon gerne eine vernünftig geätzte Platine mit Gehäuse. Eventuell sogar genau für die freien Steckplätze in der Heizung. Vielleicht auch mit dem XPORT. Damit der "Server" nicht neben dem Wandler stehen muss. Vielleicht könnte man ja auch zusammen die Platine entwickeln wenn wir uns auf eine Hardware und Sendeschaltung einigen könnten. Gruß Ingo
Datum:
Achso... habe noch mal in Deiner WAV-Datei gesucht und soweit festgestellt dass alle Busteilnehmer außer der Master selber immer nach einem gesendeten Byte ein Byte Pause machen und manchmal das Telegramm nach noch längerer Pause (etwa 15ms) weiter fortzusetzen. Der Busmaster pustet seine Telegramme einfach ohne Wartezeiten raus. Entweder kann die Sendestufe das nicht anders machen oder der Busmaster oder irgendjemand anders sendet manchmal ein Echo. Gegen das Echo spricht nur dass die Störungen vorher kommen.
Datum:
> Habe ich auch festgestellt.. Satt permanent 100% und Absturz nach 2,5 > Stunden habe ich jetzt nur noch durchschnittlich 80%. Das ändern der > Datenbankengine ging mit nur zwei Mausklicks. Anbei meine Mysql Speicher-Konfiguration, evtl. bringt es noch etwas Besserung.
[mysqld] key_buffer = 32M max_allowed_packet = 2M table_cache = 64 sort_buffer_size = 10M net_buffer_length = 1024K read_buffer_size = 5M read_rnd_buffer_size = 10M myisam_sort_buffer_size = 8M [isamchk] key_buffer = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M [myisamchk] key_buffer = 40M sort_buffer_size = 40M read_buffer = 5M write_buffer = 5M |
Datum:
> Als Endgültige Version hätte ich schon gerne eine vernünftig geätzte > Platine mit Gehäuse. Ich auch ;-). Was hältst du von einem Hutschienengehäuse (eine Einheit) ? Da würden oben und unten etwa jeweils 5-6 Kontakte Platz haben. > Eventuell sogar genau für die freien Steckplätze in > der Heizung. Vielleicht auch mit dem XPORT. Damit der "Server" nicht > neben dem Wandler stehen muss. Vielleicht könnte man ja auch zusammen > die Platine entwickeln wenn wir uns auf eine Hardware und Sendeschaltung > einigen könnten. Wie breit ist der XPORT ? Dadurch das der nur eine Steckerleiste hat wird das etwas wackelig. Kann der POE ? Die Stromversorgung braucht man dann ja auch noch. Für die Platine dachte ich mir einen Mega der mir den EMS-Bus auf CAN umsetzt. Alles Mehrarbeit, aber ich will noch ein paar andere Sachen steuern und für einen Bus habe ich nichts besseres gefunden. Ich denke man könnte die Platine zweigleisig fahren. Einmal normales CAN Interface mit normalen Steckverbindern und dann einen Platz für den XPORT, geht der an die UART ? Das könnte funktionieren.
Datum:
Hallo Rudi, Hallo Ingo, wollte meine Stand sagen bzgl. der Telegramme UBA3. Mein NetIO hat beim Empfang der UBA3 Telegramme Zeichen verloren. Somit ist auch bei mir das Protokoll gleich. Die Checksummenberechnung habe ich auch gleich getestet -funktioniert echt Klasse. Gruss Matthias
Datum:
Hurra! habe doch tatsächlich den Fehler gefunden. Meine Logger läuft jetzt mit vielleicht 10% Prozessorleistung und der Systemtakt ist auf 40% reduziert.. Also statt 40Watt braucht das Notebook jetzt auch nur noch geschätze 15 Watt. Das Problem lag nicht an MySQL, sondern an meiner Programmversion hatte irgendwo eine Zeile von einem Test nicht rausgenommen. Es wurden also jeder decodierte und in MySQL abgespeicherter Wert nochmals ausgelesen, decodiert und außerhalb von MySQL mitgeloggt. Werde jetzt auch noch mal die Daten reduzieren und vermutlich auch alles in einer Tabelle nach Datentyp abspeichern um doppelte Werte nicht mitloggen zu müssen. Bei mir wurden bisher alle Werte die decodiert werden konnten pro Telegramm komplett in MySQL mitgeloggt. Rudi schrieb: > Ich auch ;-). Was hältst du von einem Hutschienengehäuse (eine Einheit) > ? Da würden oben und unten etwa jeweils 5-6 Kontakte Platz haben. Na eigentlich doch eine gute Idee.. hoffe Du meinst ein Geäuse mit etwa FI-Breite und nicht einer LS-Breite. Dann könnte man eine Busplatine machen mit Steckplätzen und den Kontaktklemmen und wenn es passt noch den ATMegaXY mit dem EMS-Bus-Teil. ALs Steckplatz senkrecht könnte man dann die Plantine mit dem XPORT machen und kann von oben die Ethernet-Buchse als Durchbruch ausführen. Oder eine CAN-Platine, oder ...... Vielleicht auch nur eine Platine die man mit XPORT oder MAX232 oder CAN-Controller bestückt werden kann. Der XPort ist eigentlich nicht viel größer als so RJ-45-Buchse mit Transceiver. Müsste eigentlich ziemlich stabil sein wenn man den auf der Platine auflötet. Habe noch nie einen gehabt. Der XPort wird eigentlich direkt an an die Pinn des Atmega gehangen und läuft mit 3,3 Volt. Soll aber 5Volt tolerant sein. Vielleicht gibt es ja auch eine 5Volt-Version. Mit welcher Spannung wolltest Du den die Platine versorgen? bei 3,3 Volt könnte man SD/MMC-Karten direkt ohne irgendwelche Pegelwandlung an den ATmega hängen, genauso wie den XPort. Rudi schrieb: > Mega der mir den EMS-Bus auf CAN > umsetzt. Alles Mehrarbeit, aber ... Habe auch noch ein paar Sachen für die ich einen eigenen Hausbus gebrauchen könnte. Bin da bisher auch bei CAN hängen geblieben. Aber bisher noch nicht weiterverfolgt.. Gruß Ingo
Datum:
> Na eigentlich doch eine gute Idee.. hoffe Du meinst ein Geäuse mit etwa > FI-Breite und nicht einer LS-Breite. Was ist LS ??? Die Platine würde in einer Einheit 86.5x14 sein. Hier mal ein Beispiel von einem Sklaven in 2 Einheiten: http://www.mikrocontroller.net/attachment/77294/ca... http://www.mikrocontroller.net/attachment/77294/ca... Die Bestückung ist in etwa 14mm Breit. Bei 2 Einheiten sind die Platinen 33mm Breit. Das wird/ist übrigens ein SSR mit CAN-Bus-Interface, z.Z. mit Mega8 und externem EEProm und SRAM. Ich werde wohl auf den 328 wechseln, der M8 hat mir etwas zu wenig Speicher. > Mit welcher Spannung wolltest Du den die Platine versorgen? bei 3,3 Volt > könnte man SD/MMC-Karten direkt ohne irgendwelche Pegelwandlung an den > ATmega hängen, genauso wie den XPort. Mit 3V3, für 5V bekommt man kaum noch billige Periphery-Ics. > Dann könnte man eine Busplatine machen mit Steckplätzen und den > Kontaktklemmen und wenn es passt noch den ATMegaXY mit dem EMS-Bus-Teil. > ALs Steckplatz senkrecht könnte man dann die Plantine mit dem XPORT > machen und kann von oben die Ethernet-Buchse als Durchbruch ausführen. > Oder eine CAN-Platine, oder ...... Die senkrechte Installation ist etwas heikel, ordentliche Steckverbinder mit Verschraubung nehmen schon fast die komplette Platine ein. Naja, mal schauen. Ich werde jedenfalls nicht direkt über Netz gehen, sondern über CAN an einen Master der dann die SD-Karte hat und Netzwerk unterstützt.
Datum:
Rudi schrieb: > Was ist LS ??? Leitungsschutzschalter (Sicherung) Aber ist wohl die Größe die Du meintest.. Rudi schrieb: > Mit 3V3, schön... Rudi schrieb: > SSR Ist das jetzt die LS-Rache ;-) Watt isn datt? Secondary Surveillance Radar (Sekundärradar) wird es wohl nicht sein.. Schätze mal SolidStateRelais? Klingt interessant... Rudi schrieb: > Naja, mal schauen. Ich werde jedenfalls nicht direkt über Netz gehen, > sondern über CAN an einen Master der dann die SD-Karte hat und Netzwerk > unterstützt. Also so eine SD-Karte als Option fände ich schon ganz gut. Muss mann ja nicht bestücken. Wenn mann noch einen Master mit ins Gehäuse stecken könnte ware das auch ganz gut. Also dann wäre eine Steckplatzversion schon ganz OK. Rudi schrieb: > Die senkrechte Installation ist etwas heikel, ordentliche Steckverbinder > mit Verschraubung nehmen schon fast die komplette Platine ein. Hat das Gehäuse denn keine Führungsnut oder ähnliches? Und wenn man so flexible Leiterplattenverbinder nehmen würde? Ist jau auch auf der SSR-Platine oder? Gruß Ingo
Datum:
> Ist das jetzt die LS-Rache ;-) Nein ;-) > Watt isn datt? Secondary Surveillance Radar (Sekundärradar) wird es wohl > nicht sein.. Schätze mal SolidStateRelais? Klingt interessant... Solid State Relais, ja. > Also so eine SD-Karte als Option fände ich schon ganz gut. Muss mann ja > nicht bestücken. Wenn mann noch einen Master mit ins Gehäuse stecken > könnte ware das auch ganz gut. Also dann wäre eine Steckplatzversion > schon ganz OK. Auf 86.5x14 ist nicht wirklich viel Platz. Ein SD-Karten-Slot mit Karte hat etwa 17x15mm, also nicht geeignet. Mehr Speicher/Flash ist eigentlich kein Problem, wenn es nicht grad Gigabyte sein müssen. > Hat das Gehäuse denn keine Führungsnut oder ähnliches? Und wenn man so > flexible Leiterplattenverbinder nehmen würde? Ist jau auch auf der > SSR-Platine oder? Der Verbinder ist für die Programmierung der CPU. Schau dir mal die Gehäuse für Hutschiene an, dort kann man mehrere Platinen unterbringen, z.B. die von axxatronic, die cnmb Serie.
Datum:
Angehängte Dateien:IngoF schrieb: > Der XPort ist eigentlich nicht viel größer als so RJ-45-Buchse mit > Transceiver. Müsste eigentlich ziemlich stabil sein wenn man den auf der > Platine auflötet. Habe noch nie einen gehabt. Ja, der XPORT sitzt bombenfest (hat zusätzlich zu den Pins auch noch 2 Lötfahnen an der Seite und 2 Kunststoffböbbel. Abmessungen wie eine standard RJ45 Buchse mit LEDs, nur die Länge ist anders: ca 35mm > Der XPort wird eigentlich direkt an an die Pinn des Atmega gehangen und > läuft mit 3,3 Volt. Soll aber 5Volt tolerant sein. Vielleicht gibt es ja > auch eine 5Volt-Version. Ja, so ist es: Versorgung 3.3V Datenleitungen 3.3V, 5V tolerant. Stromaufnahme ist im Datenblatt leider nicht aufgeführt, habe aber mal interessehalber gemessen: irgendwas zwischen 30 und 70 mA. variiert halt je nachdem ob er daten uebertraegt, wie die leds leuchten etc. Gruss, Malte
Datum:
Angehängte Dateien:Das XPort-Gehäuse ist 18.25mm breit, würde also nicht in das Hutschienengehäuse passen.
Datum:
Stimmt.. die Breite ist 18,25. Aber die Höhe ist inkl. Anschlüsse 16,75mm müsste also so gerade reinpassen inkl. Platine und Anschlüsse. Hängt natürlich von der Wandstärke ab ob man 16,75mm innen hat. Man kann ihn ja hochkant einbauen... Oder habe ich da noch irgendwas übersehen? Gruß Ingo
Datum:
> Man kann ihn ja hochkant einbauen... Oder habe ich da noch irgendwas > übersehen? Ja, das Hutschienengehäuse ist 14mm breit.
Datum:
Hi, ich hoffe das schweift jetzt nicht zu sehr vom Thema ab, hat aber schon etwas hiermit direkt zu tun: In der Zwischenzeit sind mir noch ein paar zusätzliche Ideen gekommen, so dass ich ausser des (noch ausstehenden) KM271 Nachbaus drei weitere Meßstellen haben werde: Wärmezähler+Wasserzähler Impulsmessung und mehrere SO-Hutschienenzähler für Energieverbrauch. Die Stellen (Heizung, Wasserzähler, Zählerschrank) sind ca 4-10m voneinander entfernt. Im Prinzip will ich ja immer noch per Ethernet an die Messdaten ran, will aber aus Kostengründen nicht an jede Einheit nen XPORT bauen. Was haltet ihr generell von der Idee, dass ich an die AVRs TTL->RS485 Interfaces hänge und alle mittels RS485 Bus vernetze? Am Server, der sowieso 24/7 läuft würde dann ein RS485->USB Wandler hängen. Gesamtlänge des Busses wären geschätzt etwa 100m. Hat da jemand bedenken? Habe bisher noch nichts mit RS485 gemacht, aber wenn ihr sagt das wäre kein Problem, würde ich es gerne so realisieren. Das KM271 Board wird es dann mit 2 Schnittstellen geben (RS232 / 485). Hatte nochmal einen Test mit dem XPORT direkt gemacht, aber jedes Mal wenn ich den im Logamatic slot betreibe spinnen mir die analogpegel rum. MAX232 macht hingegen keine Probleme. Scheint wohl an den höheren Strömen zu liegen?? Gruss, Malte
Datum:
Also habe diese Schnittstelle noch nie benutzt. Hab da mal was gefunden://www.itwissen.info/definition/lexikon/RS-485-RS-485. Gruß Ingo
Datum:
@Malte Bayer > Hat da jemand bedenken? Habe bisher noch nichts mit RS485 gemacht, aber > wenn ihr sagt das wäre kein Problem, würde ich es gerne so realisieren. Das funktioniert, der Programmieraufwand ist aber nicht ohne für ein funktionierendes Multisensor-System. Die RS485 ist zwar in Hardware leicht zu realisieren, dafür steckt der Aufwand in der Software. Man muss sich auch vorher überlegen ob man den Bus in Full- oder Half-Duplex baut, da davon direkt die Software betroffen ist. Ich wollte den Bus auch benutzen, aber der Softwareaufwand für OSI Layer2-Layer4 ist mir zu hoch bzw. muss man diese Layer in Software realisieren (http://de.wikipedia.org/wiki/OSI-Modell). > Das KM271 Board wird es dann mit 2 Schnittstellen geben (RS232 / 485). > Hatte nochmal einen Test mit dem XPORT direkt gemacht, aber jedes Mal > wenn ich den im Logamatic slot betreibe spinnen mir die analogpegel rum. > MAX232 macht hingegen keine Probleme. Scheint wohl an den höheren > Strömen zu liegen?? Wie sieht denn deine bisherige Schaltung aus ?
Datum:
Rudi schrieb: > Ich habe die CRC-Berechnung noch etwas vereinfacht: > for i in range(0,len(a)-1): > d = 0 > if crc1 & 0x80: > crc1^=12 > d = 1 > crc1 = crc1 << 1 > crc1 &= 0xfe > crc1 |= d > crc1 = crc1^int(a[i]) @Rudi dass wäre ja super, wenn die CRC-Berechnung damit geht. Ich habe Deine Lösung mal in Delphi übersetzt, komme aber nicht zu den richtigen Ergebnissen. Siehst Du den Fehler? Danke, Mario function Berechne_Checksumme(data: array of integer; TelLaenge:integer ): Integer; var crc1, crc2 : integer; i, d : Integer; begin crc1 := 0; for i:=0 to TelLaenge-4 do begin d := 0; if crc1 AND $80 = 1 then begin crc1 := crc1 XOR 12; d := 1; end; crc1 := crc1 SHL 1; //linksschieben crc1 := crc1 AND $fe; crc1 := crc1 OR d; crc1 := crc1 XOR ord(data[i]); end; result := crc1; end;
Datum:
Mario schrieb: > for i:=0 to TelLaenge-4 do Warum denn dass? Der Quelltext sieht eigentlich ganzgut (seoweit ich mich noch an Delphi erinnere) Aber warum Telegrammlänge -4 sind das die Rahmenbytes AA und 55? Dann müsste die Schleife doch von 2 bis -2 gehen.. Also bei mir hat es funtkioniert.. Schätzte mal mein JAVA-Quelltext hilft Dir auch nicht weiter ;-) Gruß Ingo
Datum:
@IngoF die Rahmenbytes sind entfernt, nur das Byte für die Telegrammlänge hängt noch an. Deshalb werden die letzten 3 Byte nicht in der CRC-Summe berechnet. Letztes Byte = Telegrammlänge Vorletztes Byte = CRC HighByte Vorvorletztes Byte = CRC LowByte Berechnet werden soll ja der CRC von empfangenen Telegrammen, dann wird mit dem Berechneten verglichen. Bei manchen Telegrammen stimmt die errechnete CRC ja auch z.B. data[0] := $08; data[1] := $10; data[2] := $14; data[3] := $00; data[4] := $0D; data[5] := $D2; data[6] := $F9; data[7] := $29; //Checksumme LowByte data[8] := $00; //Checksumme HighByte data[9] := $09; //Telegrammlänge TelZeiger := 10; Bei anderen kommt 0000 raus z.B. bei data[0] := $08; data[1] := $00; data[2] := $07; data[3] := $00; data[4] := $03; data[5] := $03; data[6] := $00; data[7] := $02; data[8] := $00; data[9] := $00; data[10] := $00; data[11] := $00; data[12] := $00; data[13] := $00; data[14] := $00; data[15] := $00; data[16] := $00; data[17] := $37; data[18] := $00; //Checksumme LowByte data[19] := $13; //Checksumme HighByte TelZeiger := 20; //Telegrammlänge Rudi schrieb doch, dass die Berechnung mit allen Telegrammen passen sollte. Irgendwelche Ideen? Meine Heizungsüberwachung läuft übrigens seit November 2009 als Delphi-Anwendung recht stabil. Die SQL-Datenbank hat schon 650.000 Einträge, dass sind ca. 51 MByte. Die Auswertung und Anzeige erfolgt im Browser per PHP. Nur mal so, als positives Feedback. bye, Mario
Datum:
> Bei manchen Telegrammen stimmt die errechnete CRC ja auch z.B. > data[0] := $08; > data[1] := $10; > data[2] := $14; > data[3] := $00; > data[4] := $0D; > data[5] := $D2; > data[6] := $F9; > data[7] := $29; //Checksumme LowByte > data[8] := $00; //Checksumme HighByte > data[9] := $09; //Telegrammlänge > TelZeiger := 10; Da ist auch die 0x00 am Ende. Das ist das serielle Break-Zeichen und geht nicht in die CRC-Berechnung mit ein, noch ist es Teil der CRC. Also die Daten: 0x08 0x10 0x14 0x00 0x0d 0xd2 0xf9 die CRC 0x29 Bei deinem zweiten Bsp. stimmt etwas nicht. Die 0x13 gehört da nicht hin. Bei diesem Bsp. sollte die CRC 0x37 sein, ich habe es jetzt nicht nachgerechnet.
Datum:
Mario schrieb: > if crc1 AND $80 = 1 then Ganz übersehen. Eigentlich kann die Bedingung nie wahr sein... Denke das sollte laufen: if crc1 AND $80 = $80 then
Datum:
IngoF schrieb: >> if crc1 AND $80 = 1 then > > Ganz übersehen. Eigentlich kann die Bedingung nie wahr sein... Denke das > sollte laufen: > > if crc1 AND $80 = $80 then Danke, danke, manchmal sieht man den Wald vor lauter Bäumen nicht. Das war die Lösung, der Rest hat gepasst. Hier nochmal meine Funktion mit der eingebauten Änderung, falls es jemand braucht: function Berechne_Checksumme(data: array of integer; TelLaenge:integer ): Integer; var crc1 : integer; i, d : Integer; begin crc1 := 0; for i:=0 to TelLaenge-4 do begin d := 0; if crc1 AND $80 = $80 then begin crc1 := crc1 XOR 12; d := 1; end; crc1 := crc1 SHL 1; //linksschieben crc1 := crc1 AND $fe; crc1 := crc1 OR d; crc1 := crc1 XOR ord(data[i]); end; result := crc1; end; Nochmals danke, Mario
Datum:
@Rudi: siehe http://wiki.neo-soft.org/index.php/Bild:Km271_schematic.gif An Pin 12 habe ich uebrigens keine -24V sondern auch ein GND. So sieht die Schaltung auf der Platine aus, funktioniert soweit ich das beurteilen kann. meine Pins 11+12 habe ich nicht verwendet, also ist der komplette ground der Platine an Pin 1 angeschlossen (viel massefläche, aber das scheint nicht das problem zu sein. IN vom 3.3Vreg hängt direkt an +5V, der Ausgang gegen Masse mit 2 Kondensatoren (100n kerko und 10uf elko), danach gehts gleich zum xport, dessen masse natuerlich auch mit K4/Pin1 verbunden ist. Wenn ich nun den spannungsregler für den xport einsetze und diesen somit mit dem rest vom KM271 verbinde, bekomme ich bei ALLEN temperaturen falsche Werte (oft mit 12° Abweichung). Zieht der Xport möglicherweise zuviel Strom von der 5v leitung? Gruss, Malte
Datum:
@Malte Bayer
Danke !
> Zieht der Xport möglicherweise zuviel Strom von der 5v leitung?
Das kann sein. Hast du mal den Strom gemessen ? Netzwerk sollte etwa
100mA ziehen, evtl. auch mehr. Bricht die Spannung zusammen oder kann
dein LDO evtl. zu wenig Strom liefern ?
Hast du das Problem mit den Temperaturen auch ohne Netzwerkkabel ?
Datum:
Reinhard schrieb: > Hallo, > ich habe in Verbindung mit einem Buderus Service Key versucht meine > Heizung (GB-125) abzufragen. Hallo falls Reinhard oder ein anderer Buderus-Service-Key Besitzer hier mitliest bitte mal melden. Würde mir den gerne mal für ein paar Tage ausleihen. DANKE Gruß Ingo
Datum:
Hi Rudi, Habe an einem anderen Projekt mal den Strom vom xport gemessen, der zieht an 5V (also vor dem 3.3v reg) ca 70-110mA je nach Laune (idle vs Datenübertragung). Ob die 5V Seite in der Logamatic zusammenbricht habe ich leider verpasst zu messen, am regler liegts aber nicht, der ist überdimensioniert die 1A Version. Die Temperaturprobleme kommen sobald ich den Spannungsregler einstöpsle und somit den xport mit dem Rest verbinde, egal ob Netzwerkkabel angeschlossen ist oder nicht. Hatte ich zuerst auch gedacht wegen Ethernet Shield = Xport Shield (der auch auf GND der Logamatic liegt) und habe deshalb mal das Ethernet abgestöpselt. bringt aber dieselben Fehler. Ich warte mit dem KM217 noch ein bisschen, da ich sowieso bald noch diverse SO-Zähler anbinden will. Irgendwie will ich das alles miteinander verBUSen und dann auf einen gemeinsamen xport gehen (der dann nicht auf dem km271 verbaut wird). Habe da sowieso meine Bedenken. der xport ist zwar extended temp. range, aber da wir im winter rohrleitungsbedingt den kessel hoch fahren wird es in der logamatic schon recht warm drin. Gruss, Malte
Datum:
Angehängte Dateien:Moin. ich habe jetzt mein erstes CAN-IO-Modul fertig. Die eigentliche Funktionalität wird über Steckmodule realisiert, die dann auf die Ports auf der rechten Seite geroutet werden. Auf dem Bild befindet sich ein I2C-Steckmodul um externe Temperatursensoren auszulesen. Für die RC30 kommt dann die entsprechende Funktionalität auf die Steckmodule. @IngoF Gibt es etwas neues bei der Sendefunktionalität ?
Datum:
Hallo Rudi, das sieht ja schon mal echt super aus.... Also habe auch mal inzwischen überhaupt nachgedacht was ich so machen möchte, und da wäre die Kommunikation über ein CAN-Modul echt klasse. Würde Dir sofort so einen Satz abkaufen wenn das Möglich wäre... Was ist das dort denn alles für Hardware drauf, Womit sind die Erweiterungsstifte belegt? Wie sind die 4 Stifte auf beiden Seiten belegt? die rechten 4 gehen vermutlich auf den Erweiterungsstecker. links gehen zumindest zwei für den CAN-Bus raus und die anderen beiden sind die Stromversorgung? Wie programmierst Du denn die Harware? ist der Stecker auf der anderen Seite oder wird das über die Erweiterungsstecker realisiert? Wie würdest Du denn die EMS-Telegramme über den CAN-Bus übertragen? Hast Du Dir da schon was überlegt? Also mit der Sendefunktion muss ich gestehen dass ich mich damit aus verschiedenen Gründen noch nicht mit beschäftigen konnte. Müsste also noch Dein C-Programm auf Assembler umschreiben damit ich dann einen Pin vom µC als Sendepin gebrauchen könnte.. (Also wäre die Information schon ganz schön wie Dein Modul belegt ist.. Müsste dass dann ja nicht nochmal neuerfinden...) Unter anderen ist auch alle paar Tage ein Heizungsfachmann da und tauscht wie wild alle Komponenten weil die Fehlermeldung 2L 266 von Buderus alles andere als präzise ist. Und mit den Log habe ich auch noch nicht viel bei dieser Störung anfangen können. Wäre ja auch zu einfach wenn Buderus irgendwelche Daten zur Fehleranalyse über den Bus jagen würde... Gruß Ingo
Datum:
> Würde Dir sofort so einen Satz abkaufen wenn das Möglich wäre... Ist noch alles Prototype, es gibt noch einige Fehler im Layout. Theoretisch aber kein Problem. > Was ist das dort denn alles für Hardware drauf Ein ATMEGA328P, 23K256 SRAM/SPI, AT24C512B EEProm/I2C, MCP2551 CAN-Bus-Treiber, MCP2515 CAN-Bus-Controller, DC/DC für etwa 8-30V am Eingang. Die Schaltung soll dann mit 3V3 laufen. > Womit sind die Erweiterungsstifte belegt? Wie sind die 4 Stifte auf > beiden Seiten belegt? die rechten 4 gehen vermutlich auf den > Erweiterungsstecker. Auf der rechten Seite ist eine 4x4 Matrix die über die Erweiterungsplatine belegt wird. > links gehen zumindest zwei für den CAN-Bus raus und die anderen beiden > sind die Stromversorgung? Ja, das ist die 4x Wago-Klemme die auch auf der rechten Seite passt wenn man nur 4 oder weniger Leitungen braucht. > Wie programmierst Du denn die Harware? Auf der Unterseite befindet sich noch eine FFC, der dann per Kabel auf einen Miniadapter geht und dann auf den 6-Pol AVR Programmieradapter. Im Betrieb geht dann das Update über CAN-Bus. Deswegen auch das externe EEProm. > ist der Stecker auf der anderen Seite oder wird das über die > Erweiterungsstecker realisiert? Der "kleine" Erweiterungsstecker links ist für das Frontpanel, also 4x IO, VCC und dann für Debug noch UART. > Wie würdest Du denn die EMS-Telegramme über den CAN-Bus übertragen? Hast > Du Dir da schon was überlegt? Nein, das kommt dann aber später. Ich fange erstmal mit externen Temperatursensoren an (I2C). Die Werte werde ich wohl alle einzeln verschicken, mit Timestamp. Der CAN-Bus kann ja nur maximal 8 Bytes Payload. > Also mit der Sendefunktion muss ich gestehen dass ich mich damit aus > verschiedenen Gründen noch nicht mit beschäftigen konnte. Müsste also > noch Dein C-Programm auf Assembler umschreiben damit ich dann einen Pin > vom µC als Sendepin gebrauchen könnte.. (Also wäre die Information schon > ganz schön wie Dein Modul belegt ist.. Müsste dass dann ja nicht nochmal > neuerfinden...) Ja, die Info kann ich nachreichen, ich denke ohne diesen ServiceKey wird das erstmal nichts mit senden. > Unter anderen ist auch alle paar Tage ein Heizungsfachmann da und > tauscht wie wild alle Komponenten weil die Fehlermeldung 2L 266 von > Buderus alles andere als präzise ist. Und mit den Log habe ich auch noch > nicht viel bei dieser Störung anfangen können. Wäre ja auch zu einfach > wenn Buderus irgendwelche Daten zur Fehleranalyse über den Bus jagen > würde... Aha, dann soll er mal den ServiceKey für einen Tag da lassen, wenn die den überhaupt haben.
Datum:
Hi Hier ist ein Artikel über die KM271 (Nachbau) http://wiki.neo-soft.org/index.php/Heizungsschnitt... Ich hoffe, das hilft etwas. Gruss
Datum:
Hallo Rudi, die Antwort der Mail kam nicht an weil der Host nicht erreichbar ist. Also meine Heizung läuft wieder.. es war die Pumpe. Mein AVR Studi lies sich nicht mehr starten, updaten, deinstalllieren oder reparieren. Hat einige Zeit gedauert bis ich mein AVR-Studio wieder am laufen hatte. Inzwischen habe ich erfolgreich Deinen C-Code ähnlich auf Assembler portiert. Meine LED blinkt nur noch wenn Nutzdaten fließen. Habe eine Automatische beatwortung der Pollings der Adress 0x21 eingebaut udn getestet. Nur dumm dass ich Meine Schaltung dabei geschossen habe.. Werde mir das noch mal ansehen müssen.. Ansonsten wäre ein Schaltplan Deiner Entwickling ganz interessant.. Gruß IngoF
Datum:
Hallo, > die Antwort der Mail kam nicht an weil der Host nicht erreichbar ist. Ja, eine alte E-Mail Adresse. Sollte wieder funktionieren. > Also meine Heizung läuft wieder.. es war die Pumpe. Aha, das hättest du am Druck sehen können ;-). Wenn beim Einschalten der Druck nicht etwas hoch geht, dann ist da etwas faul. Ich sehe eine Druckänderung auch beim Umschalten auf WW <=> HK. > Meine LED blinkt nur noch wenn Nutzdaten fließen. Habe eine Automatische > beatwortung der Pollings der Adress 0x21 eingebaut udn getestet. Nur > dumm dass ich Meine Schaltung dabei geschossen habe.. Werde mir das noch > mal ansehen müssen.. Evtl. ist auch nur die Diode zu warm geworden und abgeraucht. Ich habe da 3 parallel geschaltet um das Wäremeproblem zu lösen. > Ansonsten wäre ein Schaltplan Deiner Entwickling ganz interessant.. Mal schaun, da muss ich noch aufräumen (Baustelle).
Datum:
@Ingo F. Hast du die Möglichkeit auf dem internen Bus zu messen, also die Kommunikation zwischen den einzelnen Modulen und nicht am Klinkenstecker? Ich habe noch 2 Schaltungen vom EI-Bus gefunden: http://www.freebus.org/index.php/de/hardware-mainm... http://www.freebus.org/index.php/de/signale-mainmenu-28 Sieht in etwa so aus was wir brauchen.
Datum:
Denke die Shaltung ist doch schon ganz gut. Die Schaltung war nicht das Problem. Hatte mich nur beim umlöten im Kabel vergriffen und deswegen lief nichts mehr. Nur habe ich im Moment ein Problem mit Assembler. Mit AVRStudio und HAPSIM funktioniert die Simulation fehlerfrei. Aber auf der "echten" Platine wird seltsamerweise immer ein zusätzliches 0x00-Byte gesendet das eigentlich nie gesendet wird. Mit der älteren hex-Datei funktioniert alles und habe nur keinen Quelltext mehr. Bin gerade bei der Fehlersuche udn versuche die neue Version zurückzuentwickeln bis es wieder läuft. Gruß Ingo
Datum:
Hallo Rudi, Die Antwortfunktion habe ich jetzt getestet. Habe einfach alle Polling von 0xA1 <break> mit 0x21 <Break> beantwortet und konnte in der RC30 den Busteilnehmer "Mischer 33" im Display sehen können. Allerdings gefällt mir die Schaltung noch garnicht. Mein Transistor sperrt nicht richtig und zieht den Bus schon 1-2 Volt runter und der Transistor hat etwa 70°C und die Z-Diode 90°C wenn nciht gesendet wird. Irgendwie Schaltet der TRansistor schon teilweise bei 0,5 Volt durch. Habe auch eine Diode davor gesetzt um die Ansprechspannung zu reduzieren. Muss mir mal die Schaltung seperat aufbauen und durchtesten. Eigentlich müsste der Basiswiderstand richtig berechnet sein. aber irgendwie läuft da was schief. Wenn der Transistor durchgeschaltet hat wird Busspannung wie gewünscht auf 10 Volt heruntergezogen. Die Telegramme die ich sende werden über den Bus automatisch eingelesen. Kann dadurch erkennen dass größtenteils die Telegramme richtig durchgehen, aber ab und zu die Adresse verfälscht wird. Als ob irgendjemand dazwischen sendet. Deine Mail scheint immer noch nicht zu funktionieren... Gruß Ingo
Datum:
> Die Antwortfunktion habe ich jetzt getestet. Habe einfach alle Polling > von 0xA1 <break> mit 0x21 <Break> beantwortet und konnte in der RC30 den > Busteilnehmer "Mischer 33" im Display sehen können. Nicht schlecht! > Allerdings gefällt mir die Schaltung noch garnicht. Mein Transistor > sperrt nicht richtig und zieht den Bus schon 1-2 Volt runter und der > Transistor hat etwa 70°C und die Z-Diode 90°C wenn nciht gesendet wird. Die Temperaturprobleme hatte ich nur an der Diode (jetzt sind es 3). Ich bekomme demnächst eine 5W Diode die ich dort verbauen werde (die Schaltung mit den Mosfet). > Die Telegramme die ich sende werden über den Bus automatisch eingelesen. > Kann dadurch erkennen dass größtenteils die Telegramme richtig > durchgehen, aber ab und zu die Adresse verfälscht wird. Als ob > irgendjemand dazwischen sendet. Das habe ich auch gesehen, siehe Beitrag "Re: Logamatic 2107 Schnittstelle". Ich bin mir nicht sicher ob die Sendeschaltung so richtig ist, denn auf der RC3X Platine kann ich kein Bauteil finden das annähernd 1.5W verträgt. Der Bus vom Klinkenstecker (BC10) ist direkt mit dem internen Bus verbunden, also keine Schutzschaltung etc.. Die Schutzbeschaltung muss dann unbedingt mit in die externe Schaltung. > Deine Mail scheint immer noch nicht zu funktionieren... Doch, die funktioniert jetzt.
Datum:
Hallo Rudi, das Problem mit der Sendeschaltung habe ich gelöst. War nur so blöd dass ich Emitter und Collector vertauscht hatte. Ein Wunder dass die Sendeschaltung überhaupt lief. Die Z-Diode und Transistor werden jetzt wie erwartet garnicht mehr warm. Wenn ich jetzt immer permanent die das Polling der Adress 33(0x21) mit 0x21 <brk> beantwort erscheint auch die Adresse im RC30 Bus-Status. Die Adresse erscheint nach dem ersten Polling welches etwa alle 20-30 Sekunden widerholt wird. Sobald die erste Antwort kommt wird die 0x21 auch wie die anderen Busteilnehmer mehrmals gepollt. Die RC30 versucht dann widerholt ein Kommando ohne Polling-Bit an die 0x21 zu schicken und erwartet vermutlich dass irgendwann die 0x21 auch irgendwann mal ein Pieps sagt. Sonst kann ich mir nicht erklären warum der wie bekloppt immer das selbe Telegramm an die 0x21 schickt. Nur was mir nicht so ganz gefällt ist dass Byte UBA3/MC10 (0x08) oder von der BC10 (0x09) immer widerholt wird. Vermute mal ganz ohne Oskar kommt man da nicht weiter. Irgendwie muss sich ja die Signalform der RC30 und meiner Sendeschaltung unterscheiden. Jetzt wäre es mal ganz interessant von einem Service-Key-Besitzer zu wissen mit welcher Adresse sich der Service-Key anmeldet. hier jetzt mal ein kurzer Mitschnitt vom Bus:
{--} 16:20:32 15.07.10: A1
{--} 16:20:32 15.07.10: 21 21
{--} 16:20:32 15.07.10: 00
{--} 16:20:32 15.07.10: 89
{--} 16:20:32 15.07.10: 09
{--} 16:20:32 15.07.10: 8B
{--} 16:20:32 15.07.10: 89
{--} 16:20:32 15.07.10: 09
{--} 16:20:32 15.07.10: 8C
{--} 16:20:32 15.07.10: 89
{--} 16:20:32 15.07.10: 09
{--} 16:20:32 15.07.10: 90
{1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A
{1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A
{1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A
{--} 16:20:32 15.07.10: 10
{BA} 16:20:32 15.07.10: 08 00 18 00 5A 02 C1 64 64 0A 10 E5 60 80 00 02 0C 02 72 00 84 0F 3D 48 00 C9 FF 03 00 BA
{--} 16:20:32 15.07.10: A1
{--} 16:20:32 15.07.10: 21 21
{--} 16:20:32 15.07.10: 89
{--} 16:20:32 15.07.10: 09
{--} 16:20:32 15.07.10: 8D
{--} 16:20:32 15.07.10: 89
{--} 16:20:32 15.07.10: 09
{--} 16:20:32 15.07.10: 8E
{--} 16:20:32 15.07.10: 89
{--} 16:20:32 15.07.10: 09
{--} 16:20:32 15.07.10: 90
{1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A
{1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A
{1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A
{--} 16:20:32 15.07.10: 10
{2F} 16:20:32 15.07.10: 08 00 18 00 5A 02 C3 64 64 0A 10 E5 60 80 00 02 0C 02 73 00 82 0F 3D 48 00 C9 FF 03 00 2F
{--} 16:20:32 15.07.10: A1
{--} 16:20:32 15.07.10: 21 21
|
Das erste Byte in Klammern ist meine errechnete CRC und das letzte Byte ist dann die übertragene CRC. Beim Polling gibt es ja keine CRC. Gruß Ingo
Datum:
> Die RC30 versucht dann widerholt ein Kommando ohne Polling-Bit an die > 0x21 zu schicken und erwartet vermutlich dass irgendwann die 0x21 auch > irgendwann mal ein Pieps sagt. Sonst kann ich mir nicht erklären warum > der wie bekloppt immer das selbe Telegramm an die 0x21 schickt. > {1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A Ich geh mal davon aus, das die 0x10 den Befehl absetzt. Es gibt eine Nachricht die in etwa so aussieht. Dort ändert sich ab und zu nur ein Bit, frag mich jetzt nicht welche ... :-/ Von Mario kam weiter oben noch diese Nachricht: > 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 Hallo Mario, hast du noch ein paar Telegramme von Adresse 0x21 ??????? Mal schaun ;-)
Datum:
Angehängte Dateien:Anbei die Bilder der BC10. Vom Klinkenstecker gehen die Daten OHNE Schutz auf den Bus.
Datum:
Angehängte Dateien:Anbei noch das Datenblatt für die CPU von NEC 78F9116.
Datum:
Mathias K. schrieb: > Das habe ich auch gesehen, siehe > Beitrag "Re: Logamatic 2107 Schnittstelle". Hallo Rudi, das hatte ich ja damals auch an Deinen Oszillogrammen gesehen das dort manchmal ein Byte widerholt wurde. > Ich bin mir nicht sicher ob die Sendeschaltung so richtig ist, > denn auf der RC3X Platine kann ich kein Bauteil finden das > annähernd 1.5W verträgt. Sieht so aus als ob Buderus das egal ist. Die MC10 ist da etwas radikaler mit dem Bus. Der Transistor T1 hängt direkt am Bus und spielt "regelbarer Kurzschluß". Wenn T2 durch TX-Pin=0 sperrt liegt die Basis von T1 über 4,7 kOhm auf +5V. Wenn mann mal 1 Volt für UBE abzieht fließen hier 0,85mA in die Basis bei einem hfe von 200 bis 450 müssten dann etwa 170 bis 390mA durch den armen Kerl gejagt werden. Laut Datenblatt liegt Ptot bei 200mW. Wenn man jetzt mal den schlimmsten Fall annimmt liegen kurzzeitig 3,9W an dem T1. Da er aber wohl nur kurz angesteuert wird und längere Ruhepausen hat wird der wohl noch überleben ohne gleich zu "verdampfen". Also bevor ich meinen Collector/Emitter vertauscher bemerkt habe wurde kein einziges Byte widerholt. Es kam nur mal vor dass manchmal ein Byte nicht richtig gesendet wurde. Nach der Korrektur des Fehlers wurde permanent die 0x21 widerholt. Bei Deinen Oszillogrammen wurde teilweise was widerholt. Deswegen vermute ich dass man den Bus garnicht soooo stark belasten muss und auf 10 Volt herunterziehen muss. Werde das mal testen indem ich noch ein paar Dioden dazwischen hänge... Gruß Ingo
Datum:
Habe es noch mal getestet und scheint wirklich so zu sein. Habe noch zwei 1N4148 dazwischen geschaltet und es lief ganz ohne irgendwelche Echos. Bei meiner Version habe ich alse 4x1N4148 und eine 8,2Volt Z-Diode inkl. Transistor (im Moment BCP68). Wenn ich zwei 1N4148 weglasse kommen immer Echos. Gruß Ingo
Datum:
Also etwa 12V ? Versuch doch mal die 12V zu schalten und nicht GND !?
Datum:
Rudi schrieb: > Also etwa 12V ? Versuch doch mal die 12V zu schalten und nicht GND !? Habe noch nicht nachmessen können wieviel Volt es wirklich sind. Müssten aber geschätzte 12 Volt sein. Gegen 12 Volt kann ich nicht schalten weil ich nicht an der Service-Buchse hänge sondern parallel zur RC30 im Wohnzimmer. Vielleicht würde es ja auch mit drei Dioden laufen. Habe ich aber (noch) nicht getestet. Das wäre vielleicht eine Erklärung warum der T1 nicht abraucht weil nur gegen 12 Volt geschaltet wird... Allerdings soll die RC30 doch den Pegel auch auf 10 Volt herunterziehen? Oder war da noch irgendein Offset am Oskar eingestellt? Gruß Ingo
Datum:
> Das wäre vielleicht eine Erklärung warum der T1 nicht abraucht weil nur > gegen 12 Volt geschaltet wird... Allerdings soll die RC30 doch den Pegel > auch auf 10 Volt herunterziehen? Oder war da noch irgendein Offset am > Oskar eingestellt? Nein, da war kein Offset. Das Signal liegt bei 12V +-2.5V. Evtl. springt dein Komparator nicht mehr an und du siehst aus diesem Grund kein Echo bzw. dein eigenes Signal?
Datum:
Rudi schrieb: > bzw. dein eigenes Signal? Verdammt.. habe ich nicht dran gedacht.. Nur ohne Oskar werde ich das wohl nie feststellen können ob ich mein Telegramm nicht mehr sehe oder das Echo. Der komperator liegt ja rechnerisch genau in dem Bereich... Gruß Ingo
Datum:
Angehängte Dateien:Hallo, ich habe mal ein wenig mit meinem Master gespielt, der mir die Daten in quasi Realtime visualisieren soll. Anbei ein paar Bilder mit dem Flot-Renderer im Browser. Ganz nett das Teil, muss man ja mal sagen. Grüße.
Datum:
Hi Rudi, Jepp das flot taugt schon was, hab das in meinem Stromzaehler-Visualisierungs-Projekt drin. Habe das Hardwarelayout nochmal überarbeitet für den KM271 Clone. Also den analogpart schön zusammengepfercht, kurze Leiterbahnen und ohne grosse Massefläche. Dann den Xport mit Spannungsregler getrennt auf der anderen Seite. RX/TX sind ueber Jumper verbunden, zum Test habe ich die beiden Pins erstmal getrennt. Eben getestet und ich könnte kotzen. Zunächst waren die angezeigten Temperaturen mit am Ethernet angeschlossenen xport "nur" um -3°C verfälscht. "schön" dachte ich und bin ne weile neben dran gestanden. Nach etwa einer Minute der Supergau: * Kesseltemperatur von 58° auf 22° gefallen * Warmwasser von 49° auf 16° * Aussentemperatur von 22° auf 16° (die stimmt eh nicht immer, da das Sensorgehäuse manchmal "besonnt" wird So langsam habe ich das gefühl als ob die 80-120 mA vom xport zuviel für die logamatic sind. Spannungseinbruch mit/ohne xport ist nur ca 50 mV. An der Ethernet-Masseverbindung kann es nicht liegen (unshielded rj45 connector) Falls jemand noch eine Idee hat, her damit, ansonsten werde ich demnaechst viel Kaffee kochen und die verbindung zwischen xport und logamatic per optokoppler trennen und dem xport eine eigene spannungsversorgung verpassen. Gruss, Malte
Datum:
Hallo, > Jepp das flot taugt schon was, hab das in meinem > Stromzaehler-Visualisierungs-Projekt drin. Wie greifst du den Zähler ab ? Optisch ? Selbst gebaut ? Ich habe meinen CAN-Bus am Zähler vorbei gezogen, mir fehlt da eigentlich nur die richtige Optik. > Falls jemand noch eine Idee hat, her damit, ansonsten werde ich > demnaechst viel Kaffee kochen und die verbindung zwischen xport und > logamatic per optokoppler trennen und dem xport eine eigene > spannungsversorgung verpassen. Hast du das schon probiert ? Was passiert wenn du einen 42 Ohm / 1W Widerstand, anstatt des X-Ports als Verbraucher benutzt ? Optokoppler sind bei Heizungen immer eine gute Idee. In der KM271 benutze ich den ILD213T für 38400 Baud. Grüße.
Datum:
Hi, > Wie greifst du den Zähler ab ? Optisch ? Selbst gebaut ? Ich habe meinen > CAN-Bus am Zähler vorbei gezogen, mir fehlt da eigentlich nur die > richtige Optik. Ich habe hinter die Abrechnungszaehler diese Hutschienenzaehler mit SO Impulsausgang montiert. Also digitale Impulszählung. Rumgebastle mit Optokoppler zum Erfassen des "zählerrades" war mir zu blöd. vor allem weil ich mich auf die werte verlassen will die da gezaehlt werden ;) > Hast du das schon probiert ? Was passiert wenn du einen 42 Ohm / 1W > Widerstand, anstatt des X-Ports als Verbraucher benutzt ? nein, probiert hab ichs noch nicht. Ich wollte heute noch probieren was passiert wenn ich dem xport ne externe spannungsversorgung gebe und nur GND, RX/TX zur logamatic verbinde. Das mit dem Widerstand als Last probier ich dann gleich mit... wenns dann immer noch nicht haut trenne ich das ganze galvanisch. > Optokoppler sind bei Heizungen immer eine gute Idee. In der KM271 > benutze ich den ILD213T für 38400 Baud. hab hier noch cny75, ltv 845 und ilq1 rumfliegen. einer davon wird wohl für die 2400 baud taugen. Gruss, Malte
Datum:
Hallo, habe inzwischen ein paar Omis die Handtaschen geklaut und mir inzwischen ein DigitalOszilloskop gekauft und werde mal sehen wass denn so meine Sendeschaltung mit dem Bus uberhäupt veranstaltet. Malte Bayer schrieb: >> Wie greifst du den Zähler ab ? Optisch ? Selbst gebaut ? Ich habe meinen >> CAN-Bus am Zähler vorbei gezogen, mir fehlt da eigentlich nur die >> richtige Optik. > Ich habe hinter die Abrechnungszaehler diese Hutschienenzaehler mit SO > Impulsausgang montiert. Also digitale Impulszählung. @Rudi hatte irgendwie im Hinterkopf dass Du schon Deinen Stromzähler in deine Kurven integriert hattest. Aber das war wohl der Gaszähler. Wie hast Du die denn die Werte vom Gaszähler bekommen? Was selbstgebautes? Oder vom Gasversorger schon was eltronisches bekommen? Gibt es sowas denn in elektronisch? Also bei Die Idee mit dem Stromzähler hinter dem Abrechnungszähler gefällt mir schon ganz gut.... @Malte Die Umwandlung des SO-Impulsausgang in Zählerwerte hast Du dann bestimmt mit einer Eigenentwicklung realisiert, oder wie machst Du das? Hatte auch mal überlegt den Stromversorger zu wechseln und mir einen eletktronischen Stromzähler einbauen zu lassen. Allerdings hätten dann die Mehrkosten für den elektronischen Zähler die Ersparnise vom Wechsel wieder aufgefressen. Die Werte würde man dan über Google bekommen. Allerdings war mir nicht so wohl dabei Google meine Stromzählerwerte zu überlassen..... Gruß Ingo
Datum:
Hi Ingo, naja, das device von mir zaehlt einfach auf (momentan 8) kanaelen die impulse. ein daemon am server pollt diese zaehlerstaende alle 60 sek, beim pollen werden diese dann auf 0 zurueckgesetzt. Nachher in der Auswertung sehe ich so relativ genau über den tag (woche/monat/jahr/whatever) den verbrauch als kurve. Berechnung in "ca Watt" habe ich so realisiert: #define FLUX_RESOLUTION><------>800<---><------>// SO Counter resolution #define FLUX_LIVE_DELTA><------>60<----><------>// seconds interval for calculating the live value #define FLUX_LIVE_FACTOR<------>(1000UL * 3600UL / (FLUX_LIVE_DELTA) / (FLUX_RESOLUTION)) Berechnung des relativen Last (über zb 60 sekunden gemessen) wäre dann: P = 60_SEC_TICK_COUNT * FLUX_LIVE_FACTOR Um den Zählerwert auszurechnen braucht man lediglich alle gezaehlten ticks durch die Resolution teilen. Idr. haben die Zähler 800/1000/2000 Ticks pro KWh Gruss, Malte
Datum:
@Ingo > hatte irgendwie im Hinterkopf dass Du schon Deinen Stromzähler in deine > Kurven integriert hattest. Aber das war wohl der Gaszähler. > Wie hast Du die denn die Werte vom Gaszähler bekommen? Was > selbstgebautes? Oder vom Gasversorger schon was eltronisches bekommen? > Gibt es sowas denn in elektronisch? Selbst gebaut. Die haben einen Magneten im Gehäuse und ich messe den über einen Hal-Sensor, also auch wieder Impulse pro Umdrehung. @Malte Wieviel hast du denn in einen Stromzähler investiert ? Ich habe den bisher billigsten (30€) hier gefunden: http://www.energie-zaehler.com/epages/61422236.sf/... Im Vergleich zu einem Selbstbau, ich bräuchte 4, noch im Preisrahmen.
Datum:
Hallo da ich selber Entwickler bin und und solche auch unterstützen möchte, biete ich bei einer Bestellung der oben genannten Zähler, mit Angabe "Logamatic 2107 Schnittstelle" im Bestelltext einen Rabat von 10%. Ich hoffe das diese Information nicht gegen die Forum-Regeln verstößt. Grüße JoS0
Datum:
Johann Stark schrieb: > biete ich bei einer Bestellung der oben genannten Zähler, mit Angabe > "Logamatic 2107 Schnittstelle" im Bestelltext einen Rabat von 10%. Das Gilt vermutlich nicht für diesen den Drehstromzähler, oder? http://www.energie-zaehler.com/epages/61422236.sf/... Rudi schrieb: > Selbst gebaut. Die haben einen Magneten im Gehäuse und ich messe den > über einen Hal-Sensor, also auch wieder Impulse pro Umdrehung. Habe mich mal gerade Schlau gemacht und einen Reedkontakt genau für meinen Gaszähler gefunden: http://www.pipersberg.de/Gaszahler/RF1-Impulsnehmer.pdf Habe die gerade mal angemailt. Was soll ich da selber ein Reed-Relais reinbasteln wenn es schon was fertiges gibt. (Wenn der nicht zu teuer ist) Habe inzwischen etwas an meiner Sendeschaltung herumgebastelt und versucht mein Signal soweit wie möglich an dem Sendesignal der anderen Busteilnehmer anzupassen. Seltsamerweise werden aber immer die Bytes widerholt. Na vielleicht wird die Sendeschaltung doch erst noch mal vertagt. Gruß Ingo
Datum:
IngoF schrieb: > Das Gilt vermutlich nicht für diesen den Drehstromzähler, oder? > http://www.energie-zaehler.com/epages/61422236.sf/... Oder eben diese Version mit nur halben Stromverbrauch? Das Gilt vermutlich nicht für diesen den Drehstromzähler, oder? http://www.energie-zaehler.com/epages/61422236.sf/...
Datum:
Ups.. Copy & Paste Fehler.... Den meinte ich: http://www.energie-zaehler.com/epages/61422236.sf/...
Datum:
Hallo die Schell Count Zähler sind im Moment nicht lieferbar, aber die Saia Burgess Zähler sind baugleich, bis auf den Wechselstrom/32 A der 2000 Imp/kWh hat. Die anderen haben alle 1000 Imp./kwh. Aber grundsätzlich, wenn es um dieses Projekt geht bitte um Anfrage und ich sehe was ich tun kann. Wir sind mehr als nur ein Onlineshop. Der zuletzt gennante Zähler ist ein Wechselstromzähler! Grüße J0S0
Datum:
@IngoF > Habe mich mal gerade Schlau gemacht und einen Reedkontakt genau für > meinen Gaszähler gefunden: > http://www.pipersberg.de/Gaszahler/RF1-Impulsnehmer.pdf > Habe die gerade mal angemailt. Was soll ich da selber ein Reed-Relais > reinbasteln wenn es schon was fertiges gibt. (Wenn der nicht zu teuer > ist) Ich habe mir eine schmale Platine gebaut, mit einem digitalen HAL-Sensor und 2 passiven Bauteilen. Das geht relativ einfach, passt auch bei unterschiedlichen Zählern und läuft direkt mit 3V3. Mehr als 15€ würde ich für einen fertigen mit Gehäuse und OpenDrain-Ausgang nicht bezahlen. > Habe inzwischen etwas an meiner Sendeschaltung herumgebastelt und > versucht mein Signal soweit wie möglich an dem Sendesignal der anderen > Busteilnehmer anzupassen. Seltsamerweise werden aber immer die Bytes > widerholt. Na vielleicht wird die Sendeschaltung doch erst noch mal > vertagt. Das gleiche Problem habe ich hier auch ... Ich schreib grad einen Parser für die Nachrichten in C um die Werte auf dem CAN-Bus zu haben. Anbei noch ein paar Erkenntnisse zu den Nachrichten (Vervollständigung erwünscht):
08 00 34 00 32 01 db 01 dc 21 00 00 03 00 01 b3 d2 00 0e a7 00 11
W1 W2 W2 W3 W3 W4 ?? ?? ?? ?? W5 W5 W5 W6 W6 W6 ??
W1: WW soll (Tag/Nacht)
W2: WW Temperatur
W3: WW Temperatur
W4: Status
* bit
* 0 0: night, 1: day
* 1 ?
* 2 ?
* 3 heating
* 4 ?
* 5 1: normal operation ?
* 6 ?
* 7 ?
W5: WW Aufbereitungszeit
W6: unbekannter Zähler
|
Datum:
Hi Rudi, > Wieviel hast du denn in einen Stromzähler investiert ? Ich habe den > bisher billigsten (30€) hier gefunden: > http://www.energie-zaehler.com/epages/61422236.sf/... > > Im Vergleich zu einem Selbstbau, ich bräuchte 4, noch im Preisrahmen. Bei mir waren es 8x 17€. Allerdings wahrscheinlich nicht direkt mit dem von dir gefundenen Zähler vergleichbar: Meine verbauten Zähler sind 10A Typen, http://www.top-messtechnik.com/jtlshop/index.php?a=475 Das Angebot von Johann Stark für die 25A Version -10% finde ich auch interessant, wären dann +10€ für +15A ;) Die Adresse werde ich mir auf jeden Fall merken für die nächste grössere Bestellung (Rechnungszahlung und grössere Produktpalette in diesem Bereich) :) PS: um mal wieder komplett zum Thema zurück zu kommen: Das Netzteil der Logamatic scheine ich nicht zu überlasten. Habe mal mit einem Widerstand anstatt 3.3vreg+xport gespielt -> alles scheint korrekt. Entweder der Spannungsregler oder der xport ziehen mir die Masse hoch. Ich tippe wohl eher auf den Spannungsregler. Also, externes Netzteil ist der nächste Test... Gruss, Malte
Datum:
Angehängte Dateien:@Malte Bayer > PS: um mal wieder komplett zum Thema zurück zu kommen: > Das Netzteil der Logamatic scheine ich nicht zu überlasten. Habe mal mit > einem Widerstand anstatt 3.3vreg+xport gespielt -> alles scheint > korrekt. > Entweder der Spannungsregler oder der xport ziehen mir die Masse hoch. > Ich tippe wohl eher auf den Spannungsregler. Welchen Regler benutzt du ? Anbei die Analog-Schaltung die ich aus den Bildern sehe. Die KL1 Nummern stimmen nicht mit deinen überein. Mein S1 ist der linke Kontakt auf der Oberseite und S2 auf der Unterseite usw..
Datum:
@Malte Bayer Ich seh grad die ist identisch zu deiner Schaltung. Der analoge Teil ist also komplett unabhängig vom digitalen Teil. Du solltest die beiden Teile auch unabhängig in Betrieb nehmen können.
Datum:
Rudi schrieb: > Ich schreib grad einen Parser für die Nachrichten in C um die Werte auf > dem CAN-Bus zu haben. Wie willst Du denn die Werte im CAN Bus übertragen? Der Zeitstempel muss ja nicht mitgesendet werden. Reicht doch wenn man beim schreiben in die Datenbank die aktuelle Zeit nimmt. In meiner SQL-Datenbank habe ich nur zwei Tabellen einmal mit Tiny und SmallInt. Darin wird nur der Zeitstempel, der Wert und eine ID gespeichert. Die Umrechnung passiert im Moment noch in meinem Programm. Wollte mir eventuell noch eine Tabelle basteln in der ich dann zu jeder Werte-ID die Berechnung und weitere Informationen wie Bemerkungen u.s.w speichere. Man könnte doch einfach in einem Telegramm mehrere Werte übermitteln die sich geändert haben. Ungeänderte Werte werden natürlich nur gesendet wenn sie sich nach einer Virtelstunde immer noch nicht geändert haben sollten. Also Einfach im CAN-Telegramm als erstes die Werte-ID und dann den Wert. Vielleicht könnte man ja eine gemeinsame Werte-ID-Tabelle erstellen. Dann könnte man einfach in einer Tabelle die Werte sammeln und neue ergänzen wenn man neue Werte gefunden hat. Hier mal ein Beispiel der ersten Daten deines Beispieltelegrammes:
ID Quelle Ziel Telegrammtyp Start Bit Bytes Divisor Linie Bemerkung 01 08 00 34 4 0 1 1 1 SollTemperatur 02 08 00 34 5 0 2 10 1 Warmwasser Temperatur 03 08 00 34 7 0 2 10 1 Warmwasser Temperatur #2 04 08 00 34 9 1 1 0 2 Tag/Nachtbetrieb 05 08 00 34 9 4 1 0 2 Heizen 06 08 00 34 9 6 1 0 2 Betriebsart |
Oder was haltet Ihr davon? Denke das ist eine relativ einfache Darstellungsform. Gut ohne viel Aufwand zu dokumentieren, oder? Die Tabelle dürfte selbsterklärend sein und für so ziemlich aller Werte verwendbar sein. @Rudi? Also der Impulgeber für meine Gasuhr soll inkl. Versand 34 Euro kosten. Überlege ob ich mir den doch bestelle. Habe heute mal mit einem simplen Reed-Kontakt versucht irgendein ergebnis zu bekommen. Allerdings scheint das Magnetfeld dafür zu schwach zu sein? Was hast Du denn für einen Hall-Sensor genommen? Gibt ja massenhaft Type von 1€ bis 40€ mit verschiedenen Ausgängen.
Datum:
> Wie willst Du denn die Werte im CAN Bus übertragen? Der Zeitstempel muss > ja nicht mitgesendet werden. Reicht doch wenn man beim schreiben in die > Datenbank die aktuelle Zeit nimmt. Die ID wird im CAN-Header übertragen. Im Payload steht die Zeit und der eigentliche Wert. Die Zeit ist mir eigentlich sehr wichtig. Falls Buskollisionen auftreten kommen die Nachrichten nicht direkt an, sondern zeitversetzt. Für diesen Fall werden die zu sendenden Daten im externen SRAM gehalten und später gesendet. Für den Gaszähler (Impulsgeber) z.B. wichtig, für Temperaturen nicht unbedingt nötig. > Man könnte doch einfach in einem Telegramm mehrere Werte übermitteln die > sich geändert haben. Ungeänderte Werte werden natürlich nur gesendet > wenn sie sich nach einer Virtelstunde immer noch nicht geändert haben > sollten. Wenn du mehrere Werte überträgst, sendest du zwangsläufig auch Werte die sich nicht geändert haben. Du hast nur eine 24Bit ID und dann 8 Bytes Payload. Ich habe die ID etwas verkleinert und benutze die freien Bits als Kontrollbits. Dadurch kann ich die eigentlichen Daten, Befehle auf die Daten (Offset, Skalierung etc. für einen Temperatursensor mit einer bestimmten ID), einfache Befehle an eine CAN-Bus Modul verschicken und mir jede Nachricht optional bestätigen lassen (ACK). Ich kann über den Bus die einzelnen Module Parametrisieren und mit einer neuen Firmware bespielen und ich kann alle Sensoren an so einem Modul parametrisieren. > Also der Impulgeber für meine Gasuhr soll inkl. Versand 34 Euro kosten. > Überlege ob ich mir den doch bestelle. Habe heute mal mit einem simplen > Reed-Kontakt versucht irgendein ergebnis zu bekommen. Allerdings scheint > das Magnetfeld dafür zu schwach zu sein? Was hast Du denn für einen > Hall-Sensor genommen? Gibt ja massenhaft Type von 1€ bis 40€ mit > verschiedenen Ausgängen. 34€ ist doch schon was ;-). Ich benutze den AN48820a. Ich kann dir in etwa 2 Wochen meinen alten Sensor geben. Ich habe mir neue Platinen gebaut, aber noch nicht bestückt. > Oder was haltet Ihr davon? Denke das ist eine relativ einfache > Darstellungsform. Gut ohne viel Aufwand zu dokumentieren, oder? > Die Tabelle dürfte selbsterklärend sein und für so ziemlich aller Werte > verwendbar sein. Sieht doch gut aus. Was bedeutet Linie ? Divisor würde ich Skalierung nennen.
Datum:
Rudi schrieb: > Wenn du mehrere Werte überträgst, sendest du zwangsläufig auch Werte die > sich nicht geändert haben. Nicht wie ich das meinte. wenn mann z.B. 6Byte Payload hätte könnte man zwei zweiByte Werte (Temperatur z.B.) übertragen mit der dazugehörigen ID senden. Wenn sich zwei Werte geändert haben werden mehrere gesendet. Kann ja sein dass sich in einem Telegramm mehrere Werte geändert haben. Aber wenn Du ja bei den Zeitstempel mitsendest wird es schon knapp mit den 8 Byte Payload. Rudi schrieb: > Ich kann dir in > etwa 2 Wochen meinen alten Sensor geben. Ich habe mir neue Platinen > gebaut, aber noch nicht bestückt. musst mir dann mal sagen was Du dafür bekommst. Würde ich glatt zuschlagen. Rudi schrieb: > Sieht doch gut aus. Was bedeutet Linie ? Divisor würde ich Skalierung > nennen. Das ist die Verbindungsart zwischen den Punkten. Bei Temperaturen ändert sich ja die Temperatur mehr oder weniger gleichmaßig und ändert sich nicht Stufenförmig. Bei gesetzten Werten wie die aktuelle Leistung oder Binären Werten ändert sich der Zustand ja Sprungartig. Also wird dort erst mal die Linie mit dem alten Wert gezeichnet und dann eine Linie nach oben oder unten. Rudi schrieb: > Du hast nur eine 24Bit ID Nein, im Moment habe ich nur eine 8Bit-ID. (erste Spalte) Bisher gibt es ja nur knapp über 20 auswertbare Werte der Heizung. Könnte vielleicht auf die Dauer etwas zu klein sein wenn noch andere Sensoren/Aktoren dazukommen Gruß Ingo
Datum:
Hallo
Soory für die "Zwischenrufe", Stromzähler und so interessieren mich
auch.
Frage:
>Habe das Hardwarelayout nochmal überarbeitet für den KM271 Clone.
Ich hätte interesse für eine KM271 oder einen Clone.
Gibt es diesen irgendwo zu beziehen odern einen Plan ?
(Der einigermassen zu dem Ergebnis führt)
Frage: Hat das "interne" Protokoll etwas mit dem E-Bus zu tun ?
Gruss Karl
Datum:
Huhu... Das zusammengefasste Zeug dazu ist hier: http://wiki.neo-soft.org/index.php/Heizungsschnitt... Die Platine "Rev. C" funktioniert soweit, wenn man den kompletten Spannungsregler- und XPORT Teil nicht bestückt. RS232 funktioniert komischerweise. Schaltplan auf der Wikipage ist an sich auch okay (auf dem basiert das layout) Beziehen kann man das ding nicht (also von mir zumindest nicht)... Gruss, Malte
Datum:
Rudi schrieb: > Die Zeit ist mir eigentlich sehr wichtig. Falls > Buskollisionen auftreten kommen die Nachrichten nicht direkt an, sondern > zeitversetzt. Für diesen Fall werden die zu sendenden Daten im externen > SRAM gehalten und später gesendet. Für den Gaszähler (Impulsgeber) z.B. > wichtig, für Temperaturen nicht unbedingt nötig. Also sooo lange wird es keine Buskollisionen geben, es sei denn der Bus wird mit langeren Firmwareuploads vollgepumpt. Für den Gas-/Stromzähler wollte ich die "intelligenz" in den SO-Bus Controller hängen der über den CAN-Bus angebunden ist. Er soll die Impulse zählen die in einer Minute eingegangen sind und dann daraus die richtigen Werte Berechnen. Entweder aus den Impulsabständen und/oder der Impulsanzahl innerhalb einer Minute. Aber ich kann erst sagen wenn ich richtige Signale vom Gas/Stromzähler bekomme ob das so geht. Mein Gaszähler gibt nur alle 0,1m³ ein Impuls. Wenn ich allerdings die "Spiegelfläche" auf der letzten Nachkommastelle auswerte würde ich alle 0,01m³ ein Impuls bekommen. Wieviel Impulse hast Du denn pro m³ Gas? Gruß Ingo
Datum:
> musst mir dann mal sagen was Du dafür bekommst. Würde ich glatt > zuschlagen. Die Versandkosten von 2€. Würde es dann als Großbrief verschicken, dann muss ich nicht die Kabelage ablöten. > Für den Gas-/Stromzähler wollte ich die "intelligenz" in den SO-Bus > Controller hängen der über den CAN-Bus angebunden ist. Er soll die > Impulse zählen die in einer Minute eingegangen sind und dann daraus die > richtigen Werte Berechnen. Entweder aus den Impulsabständen und/oder der > Impulsanzahl innerhalb einer Minute. Ich speicher z.Z. die Impulse pro Minute. Der Zähler ist relativ gemütlich, auch im Winter, und wenn ich mich recht erinnere hatte ich kaum Werte über 10 gesehen. > Mein Gaszähler gibt nur alle 0,1m³ ein Impuls. Wenn ich allerdings die > "Spiegelfläche" auf der letzten Nachkommastelle auswerte würde ich alle > 0,01m³ ein Impuls bekommen. > > Wieviel Impulse hast Du denn pro m³ Gas? Ich habe an dem Gaszähler alle 0.01m³ einen Impuls. Die Auflösung der mechanischen Anzeige beträgt 0.001m³.
Datum:
@Rudi: So mache ich es auch, nur eben dass das ganze dann per Ethernet im Minutentakt gepollt wird. Bei den Stromzaehlern ist es auch nicht viel anders: Grundlast auf der Phase wo der ganze Serverkram bei mir draufhängt sind auch gemütliche 10-12 Impulse pro Minute (1k / KWh)... Habe gerade eine andere Baustelle, Stromverbrauchsermittlung zentral an der Einspeisung. Die muss ich allerdings optisch machen, da dort 3x 150A Shunts mit extra Messwandler verbaut sind. Zum glück habe ich am Messwandler 2 rote LEDs für Wirkleistung und Blindleistung, beide mit 333,33 Imp/KWh (was für ne krumme Zahl ;). Die Erfassung mittels Phototransistor/100k Widerstand funktioniert problemlos. Ein weiterer Zähler für PV Einspeisung hat 2 grüne LEDs, eine mit 1k Imp und eine mit 10k Imp. Hierbei habe ich noch mit dem Wellenlängenbereich des Phototransistors zu kämpfen. grün liegt halt arg an der Grenze ;) Laborversuch mit 600k Widerstand anstatt 100k hat schon brauchbare Ergebnisse geliefert, allerdings darf es dann so gut wie kein "Fremdlicht" geben :-> BTW: sollten wir diesen Thread hier mal mit einem Fortsetzungsthread beenden? für meine Begriffe ist hier mittlerweile ganz schön viel Lesestoff angesammelt... Achja. Ich habe im Wiki den Ansatz mit dem "ServiceKey" Interface nur zu anfangs versucht zu dokumentieren, irgendwann bin ich bei dem Thema geistig ausgestiegen, wäre nett wenn sich jemand daran vergnügen könnte :) Gruss, Malte
Datum:
@IngoF Bzgl. Impulsmessung von Gasuhr. Habe bei mir einen Actaris G4 RF1 verbaut. Ein normaler Reed-Kontakt tut. Allerdings keiner mit Gehäuse sondern ich musste das Glasrohr ganz hinten am Anschlag befestigen(bzw. hab vom Gehäuse den Deckel weg gemacht damit das Röhrchen direkt aufliegt). Es schaltet bei mir die vorletzte Ziffer wenn die 7 am Zählerfester sichtbar ist (die Mitte des Glasrörchens liegt bei mir also etwa zwischen der letzten und vorletzten Ziffer) Nur zur Info... Gruss Matthias
Datum:
Hallo Matthias, Matthias schrieb: > Habe bei mir einen Actaris G4 RF1 verbaut. Ich habe das selbe Modell. Bei mir steht allerdings Schlumberger drauf. Der Zähler von Pipersberg hat auch das Schlumberglogo. Auf dem Impulsnehmer den ich kaufen wollte steht allerdings auch Actaris daruf. Scheint also alles das selbe zu sein. Matthias schrieb: > Ein normaler Reed-Kontakt tut. Habe von Conrad den billigsten und kleinsten Reedkontakt genommen (503770). Der zieht bei 15-35 AW an. Vermutlich ist der dann zu unempfindlich oder ich habe nicht genau die Position genau erwischt. Hatte auf der letzen und vorletzten stelle eigentlich alle Positionen ausprobiert. Aber zwischen den Zahlen hatte ich es noch nicht versucht. Laut dem gelinkten Impulsnehmer-PDF kann man gut sehen dass man das beste Ergebnis hat wenn man ganz hinten in der unteren Ecke den Kontakt anbringt. Habe aber das selbe Problem wie Du. Eben dass der Magnet in der vorletzten Zahl eingebaut ist. Auf dem Anzeigefeld steht auch 0,1Imp/m³ Also wird man genauere Ergebnisse nur mit der optischen Abtastung der letzten Stelle bekommen. Der Impulsnehmer gibt es für drei verschiedene Ziffern der Gasuhr. Also fü 1m³, 0,1m³ und 0,01m³. Laut Pipersberg funktioniert aber nur der Impulsnehmer der auch auf dem Anzeigefeld angegeben ist. Hatte es einfacher gefunden in alle drei Nachkommastellen einen Magnet einzubauen und man könnte sich aussuchen welche Genauigkeit man benötigt. Meiner Meinung nach hätten die der letzten Stelle drei oder vier Magnete spendieren können dass mann alle 0,00333m³ oder 0,0025m³ einen Impuls bekommt. Matthias schrieb: > (bzw. > hab vom Gehäuse den Deckel weg gemacht damit das Röhrchen direkt > aufliegt) Na dann will ich mal hoffen dass Du nicht den Deckel vom Gaszähler gemeint hast ;o) Gruß Ingo
Datum:
Hallo Ingo das mit der Auflösung vom Zähler find ich auch doof, aber wenigstens ist überhaupt ein Magnet drin verbaut... Ich hab auch ewig probiert bis der Reed-Kontakt ansprach. Versuch mal die heizung zu stoppen wenn Ziffer 2 auf der 7 steht und teste dann. Mein Anfangsfehler war das ich die Mitte des Kontakts (überlappende Zungen) auf der 2. Ziffer positioniert habe, der Kontakt schaltet aber nur rechts oder links davon (hatte beste Empfindlichkeit bei mir mit externen Magneten getestet zwecks Einbauposition) Gruss Matthias
Datum:
Hallo Matthias, ich werde mit den Reed-Kontakten nicht mehr herumexperimentieren. Habe jetzt eine gut funktionierende Lösung gefunden ;o) Rudi schrieb: > 34€ ist doch schon was ;-). Ich benutze den AN48820a. Ich kann dir in > etwa 2 Wochen meinen alten Sensor geben. Das Problem bei den Reed-Kontakten ist ja das das Magnedfeld durch den Kontakt muss damit der Kontakt schaltet. Habe auch bei meinen starken Pinwandmagneten nur ab und zu Kontakt wenn der Reed-Kontakt den Magnet direkt berührt, Am besten hat es am Rand des Magneten geklappt. Bei dem Hall-Sensor kann ich auch 15mm Platz lassen und ich bekomme noch einen guten Impuls. Wenn dann werde ich noch mal mit einer Reflexlichtschranke auf die 6 in der letzten Ziffer versuchen. Matthias schrieb: > Ziffer 2 auf der 7 steht Bei mir ist es bei der 6, das wird aber daran liegen dass mein Sensor fast an der Vorderkante liegt und nichtr wie Dir an der Hinterkante.
Datum:
Matthias schrieb: > Ich hab auch ewig probiert bis der Reed-Kontakt ansprach. Was hast Du denn für einen Reedkontakt genommen? Was hat der denn für eine Ansprechschwelle? Bei Conrad habe ich noch einen gefunden der eine halb so große Ansprechschwelle hat (185026) und einen der sogar nur ein drittel davon braucht aber dann auch gleich über 8€ kostet (185067) Wenn Du den letzten mit 5-10AW hast erklärt sich auch warum Du ein Signal bekommst und ich nicht... meiner hat 15-35AW (503770)
Datum:
Hallo Ingo, die Daten von meinem Reed-Kontakt weiß ich nicht. Der war mal von Pollin und ziemlich billig, kann also eigentlich nichts extra Tolles gewesen sein. Gruss Matthias
Datum:
Angehängte Dateien:Hallo zusammen, dies ist mein erster Post in diesem Forum. Nachdem ich schon soviel hier gelernt habt, wird es Zeit mal was zurückzugeben... Mit den hier verfügbaren Infos habe ich eine KM271 mit folgenden Eigenschaften nachgebaut, die jetzt auch sehr stabil läuft. Eagle Schaltplan (mit lbr, die das KM271 Modul mit Platinenstecker als Bauteil definiert. Achtung, da fehlt noch das mechanische Sicherungsloch!) und SW für AVR644P und AVR Studio anbei. Der Schaltplan ist aktuell und funktioniert soweit klasse, das Board Layout muss noch angepasst werden (ich habe noch einiges am Prototypen hinterher "gepatched"). HW KM271 Schnittstelle hängt optogekoppelt an einem AVR644P zur Vorverarbeitung der Daten. Ziel war es, die Schnittstelle zur Heizung so wenig wie möglich zu beeinflussen, daher Opto-Kopplung und eigenes 3,3V Netzteil (gibt es für ein paar Euro in der Bucht) für den Digitalteil. Die Z-Doide am FG Fühlereingang ist nicht bestückt, sonst geht die Temperatur nicht unter 80°. Passenden NTC als FG Fühler gibt es bei Farnell, alle Spezialbauteile sind im Schaltplan mit Farnell Bestellnummern versehen, da gibt es auch Datenblätter... Digitalteil mit SD-Kartenanschluss (Speicherung der Daten als Backup, falls WLAN Verbindung ausfällt), FRAM (für non-volatile Daten, die man sehr oft schreiben muss, sehr schnell, keine Beschränkung der Schreibzyklen) und ConnectOne Nano WiReach WLAN Modul als Anbindung zum Netz. Alles über SPI verbunden (was für das Nano WiReach ein ganz schönes gefrickel ist...) SW Basierend auf FreeRTOS (ich weiss, es geht auch einfacher aber ich hatte den ganzen Setup schon von einem anderem Projekt). Von Interesse hier ist wohl insbesondere die Datei KM271Task.c, die den Treiber für das 3964 Protokoll enthält. Alle 10 Minuten werden die Temperaturdaten in eine Internet Datenbank gestellt (Langzeitspeicherung), Ereignisse werden im Minutentakt (falls nötig) in die Internetdatenbank gegeben. Die Auswertung erfolgt dann mit html/sql/php und Chart Tools auf Webseiten Basis (mach ich schon für andere Daten, siehe wetter.naehwerkstatt.de). Alle aktuellen Daten der Heizung sind im Webserver des Nano WiReach als Java-Script Variablen in Echtzeit verfügbar. Danke für eure ganzen Infos. Ohne die hätte ich meine Heizung (übrigens eine 2105, nicht 2107) nicht "anzapfen" können. Michael
Datum:
Hallo Michael,
das Layout schaut etwas strange aus aber wenns funktioniert ok. Du sagst
du musstest an der Platine selbst noch etwas "patchen" hast du das im
Layout jetzt schon berücksichtigt?
Ich denk ich werde mir so was ähnliches für meine Heizungssteuerung
bauen, nur ohne die komplette Intelligenz auf dem Board. Gibts die
Optokoppler nur bei Farnell?
Grüße
Thomas
Datum:
Hallo Thomas, stimmt, das Layout ist strange, ich habe einfach den Autorouter von Eagle benutzt und was da rauskommt ist nicht wirklich super. Zudem ist die Platine darauf ausgelegt bei mir in der Küche produzierbar zu sein, nicht um sie einem professionellen Leiterplattenhersteller zu liefern. Ist halt ein Bastel-Hobby Projekt, der Weg ist das Ziel... Wie gesagt, der Schaltplan ist aktuell und funktioniert so. Alle "Patches" sind da eingearbeitet, was dazu führt, das beim Board Verbindungen aufgelöst sind und einzelene Bauteile noch nicht plaziert sind. Ich hatte mir alles bei Farnell zusammengesucht, daher weiss ich nicht, ob es genau diesen Optokoppler auch woanders gibt. Dieser Typ hat den Vorteil, dass er 3,3V und 5V beherrscht. Da könnte man aber auch zwei unterschiedliche Typen für RX und TX einsetzen. Die SW ist natürlich auch nur ein Snapshot. Da geht es noch bei mir weiter. Allerdings funktinieren alle Blöcke schonmal sauber und das ist als Grundlage für andere besser als wenn das ein riesiges Sammelsurium wird. MfG Michael
Datum:
Ach und mir ist gerade noch etwas aufgefallen: Der Schmitt Trigger hat doch 5V Supply. Wenn du da die 5V auf der TX Leitung hast gefällt das dem Logamatic Controller sicher nicht oder täusch ich mich da jetzt? P.S: Vielleicht setz ich mich später mal hin und route das mal von Hand. ;)
Datum:
Hallo Thomas, nein, das sollte passen. Die Logamatic-Seite ist die 5V Seite. Der Digitalteil ist die 3,3V Seite. Der Schmitt-Trigger dient auf der Logamatic Seite hauptsächlich dazu, das TX von der Logamatic in Richtung Digital nur mit einem logischen Eingang zu belasten und ihm das Treiben der Optokoppler LED abzunehmen (was so 7mA ausmacht). MfG Michael
Datum:
@Michael M. Das WLAN-Modul ist ja mal nett. Ich sehe du benutzt den teuren FRAM von Ramtron. Ich bin davon ab und benutze jetzt die 23K256 von Microchip. Die sind um Längen billiger wenn 32K ausreichend sind.
Datum:
Hallo Rudi, danke für den Tipp! Werde ich mir mal anschauen! Ach, hier hab ich ein paar Bilder hinterlegt: http://wetter.naehwerkstatt.de/BilderHz/index.html Wie gesagt, schaut bloss nicht auf das Board, Küchenware mit händischer Durchkontaktierung. Mach ich aber schon seit Jahren so und reicht für meine Zwecke und Einzelstücke... MfG Michael
Datum:
Ein paar Echtzeitdaten meiner Heizung sind online: http://wetter.naehwerkstatt.de/html/heizung.html Die Datenbankauswertungen werden wohl noch einige Wochenenden brauchen ;-) Michael
Datum:
Hi Michael, das sieht ja schonmal top aus! Werde da etwas geringfuegig anpassen und eine ethernetvariante draus basteln... Vielen Dank für das Posting! Gruss, Malte
Datum:
Angehängte Dateien:Hallo, um die Funktion meiner Heizung zuvisualisieren versuche ich gerade die ServiceKey Schnittstelle nach zubauen. Bei der Menge an Informationen kein leichtes unterfangen ;-) Ich habe mir folgendes Atmega8 Entwicklungskit zugelegt, wie es Ingo F. wohl auch hat( http://www.olimex.com/dev/pdf/AVR/AVR-P28.pdf ). Bei diesem Board müssen noch die Pin's 2 & 3 vom Atmega mit dem MAX232 verbunden werden für die UART Funktion, was für den SK perfekt ist, da ja nur der TX Pfad über den D-Sub Stecker geht. RX wird ja an den 3,5 Klinkestecker des SK angeschlossen. Im Thread Buderus Bedieneinheit RC30 wird von folgender Pinbelegung gesprochen: >LINKS : GND >RECHTS: SIGNALOFFSET +12V, +-2.5V Signalpegel (etwa) >GND : +12V Wenn ich die Posts hier richtig verstanden habe, muss ich also "Rechts" und "GND" vom 3,5 Klinkestecker nehmen, um ein 2,5V Signalpegel für den RX Eingang vom Atmega8 zuhaben. Richtig? Kann man "Links" und "GND" zur Spannungsversorgung des Atmegas verwenden? Das Entwicklerkit hat am Pin 28 (PC5) eine LED, wenn ich mir die main.c von Rudi ansehe, liegt dort die LED auf dem PortC. Reicht es im Quelltext PORTB gegen PORTC und DDRB gegen DDRC auszutauschen? Muss ich sonst noch was im Quelltext anpassen (Taktfrequenz, etc.)? Oder beim Programmieren beachten (Bits die evtl. gesetzt werden müssen um den externen Quarz zuverwenden?). Vielen Dank schon mal für diesen Thread und die vielen Informationen! Gruß Kay
Datum:
Angehängte Dateien:Hallo Kay, hatte ursprünglich auch ganz ohne Controller dazwischen ein Adapterkabel gebaut das die +12V und das Signal vom Klinkenstecker benötigt. Hatte nur +12V auf Pin 5 (GND) gelegt und das Signal auf RX vom 9 poligen Stecker. Allerdings sollte man dann darauf Achten dass man nicht irgendwie eine Masseverbindung zwischen Heizung und der Schaltung bekommt. Ich würde Dir empfehlen den RX-Pfad über einen Komperator machen der bei +12V schaltet. Das hätte den Vorteil dass Man die Schaltung auch am Bus betreiben kann und nicht unbedingt neben der Heizung bleiben muss. Den Schaltplan mit Dimensionierung für den RX-Pfad hatte ich ja schon gepostet Also über die 12V kann ich keine Aussage über die Belastung machen. Denke aber dass es direkt auf die 12V der MC10/BC10 geht. Also wenn es aus irgendwelchen Gründen einen Kurzen geben sollte hat die MC10/BC10 auch schön zu leiden. Soweit ich weiss reicht es einfach nur den Die Bits in den Registern zu entsprechend zu setzen. Das tauschen müsste aber auch gehen... Wenn überhaupt musst du die richtige Taktfrequenz eingeben und die Baudrate wird automatisch korrigiert. Soweit ich weiß habe ich den externen Quartz genommen. Habe mal das Hex-File und die Fuses aus dem AVR-Studio angehangen. Im Moment ist es so Das an Port C5 die LED nur so lange leuchtet wie Nutzdaten empfangen werden. Beim Polling nicht. Port C4 toggelt immer wenn die Schaltung eine Polling für 0x21 (Mischer) empfängt. Wenn kein Mischer vorhanden ist etwa alle 20-30 Sekunden. Mit vorhandenem Mischer etwa jede Sekunde. Auf Port B1 wird immer eine Antwort auf das Polling für den Mischer gesendet... Also am besten nichts an PortB1 anschließen... Bei mir habe ich die Schaltung mit dem Komperator verwendet müsste aber eventuelle auch mit dem MAX232 gehen. Gruß Ingo
Datum:
Hallo Ingo, vielen Dank für deine Antwort und die Hex Datei. Ich muß leider gestehen, das ich noch einige Fragen habe, bevor ich den Lötkolben wieder anheize ;-) >Den Schaltplan mit Dimensionierung für den RX-Pfad hatte ich ja schon gepostet Ich habe leider nur die folgende Schaltung von dir gefunden (EMSlog.gif) mit RX & TX Pfad wobei ich den Eindruck hatte, das der TX Pfad noch in der Entwicklung ist ;-) Hast du schon Daten senden können? Ist die negative Spannung für den MAX232 notwendig? Bei meinem Olimex Board ist der MAX232 nur an die 5V angeschlossen. Da ich primär die Daten aufzeichnen möchte, hatte ich überlegt ob nicht auch ein Optokoppler aus reicht. Dafür wäre aber interressant wie stark man den Bus belasten kanm. 10-15 mA bräuchte man schon.... >Also über die 12V kann ich keine Aussage über die Belastung machen. >Denke aber dass es direkt auf die 12V der MC10/BC10 geht. Also wenn es >aus irgendwelchen Gründen einen Kurzen geben sollte hat die MC10/BC10 >auch schön zu leiden. Denke ein Kurzschluss sollte für den Bus kein Problem sein, da man den Klinkestecker am ServiceKey nicht ohne Kurzschluss einstecken kann ;-) Nur was der Bus dauerhaft verträgt ist noch offen. Wobei bei auf der Buderus HP zum orginal ServiceKey steht "Spannungsversorgung über angeschlosse- nes Regelgerät" -> Betriebsspannung 5-24 VDC (über Regelgerät) -> Leisungsaufnahme 5 VA Gruß Kay
Datum:
Kay F. schrieb: > Ich habe leider nur die folgende Schaltung von dir gefunden (EMSlog.gif) > mit RX & TX Pfad wobei ich den Eindruck hatte, das der TX Pfad noch in > der Entwicklung ist ;-) Hast du schon Daten senden können? Sicher habe ich schon mal auf das Polling auf 0x21 geantwortet und es wurde auch in der RC30 angezeigt dass ein Mischer vorhanden ist. Aber der TX-Pfad ist wirklich noch in Bearbeitung. Wird jetzt wohl ganz anders aussehen. Mehr hatte ich noch nicht versucht.. Wollte erst mal eine vernünftige Sendeschaltung haben. Kay F. schrieb: > Denke ein Kurzschluss sollte für den Bus kein Problem sein, da man den > Klinkestecker am ServiceKey nicht ohne Kurzschluss einstecken kann ;-) Doch zumindest keinen Kurzschluss zwischen GND und 12 Volt. Kay F. schrieb: > "Spannungsversorgung über > angeschlosse- nes Regelgerät" -> Betriebsspannung 5-24 VDC (über > Regelgerät) -> Leisungsaufnahme 5 VA ALso das habe ich noch nciht gelesen. Dann müsste man ja die 12 Volt auch mit 5VA belasten können. Mit den Gleichrichter müsstest Du den SPannungsteiler aus R1 und R2 noch mal anpassen. Bei der Schaltschwelle muss an R2 2,5Volt liegen. Gruß Ingo Habe das noch nicht ausprobiert da ich parallel zur RC30 hänge und da keine +12 Volt habe Kay F. schrieb: > Ist die negative Spannung für den MAX232 notwendig? Bei meinem Olimex > Board ist der MAX232 nur an die 5V angeschlossen. Also die positive und negative Spannung am Maxim ist der Ausgang vom Spannungswandler. Hatte da mal einen OP angeschlossen der mindestens 5 Volt Symetrische Speisung brauchte. War aber nur testweise und keine gute Idee. Der LM393 kommt aber mit 5V Single-Supply aus. Die Berechnung der Widerstände war aber auf den Bus bezogen ohne den Brückengleichrichter bezogen.
Datum:
Ups.. da sind wohl ein paar Abschnitte in meiner Antwort etwas durcheinander geraten.... Gruß Ingo
Datum:
@Mario, Ingo: Könntet ihr (bzw. einer von euch beiden ;-) ) eine Protokollbeschreibung für das EMS-Protokoll zur Verfügung stellen? Etwas Code in irgendeiner Programmiersprache würde mir auch völlig reichen. Bislang habe ich leider nur Rudis (nicht kompletten) Python-Code gefunden. Mario schrieb weiter oben schon mal, dass er die relevanten Daten alle schon decodiert hat. Vielen Dank schonmal, Danny
Datum:
Danny schrieb: > Könntet ihr (bzw. einer von euch beiden ;-) ) eine Protokollbeschreibung > für das EMS-Protokoll zur Verfügung stellen? Etwas Code in irgendeiner > Programmiersprache würde mir auch völlig reichen. Bislang habe ich > leider nur Rudis (nicht kompletten) Python-Code gefunden. Mario schrieb > weiter oben schon mal, dass er die relevanten Daten alle schon decodiert > hat. Inzwischen habe ich auch das Telegramm-XLS gefunden ;-) Sieht ja schon mal sehr gut aus, allerdings sind dann ja später noch ein paar Telegramme, z.B. von MM10 hinzugekommen...wenn also noch was aktuelleres existiert, wäre es schön, wenn das jemand posten könnte :) Danke, Danny
Datum:
Angehängte Dateien:Hallo, ich habe jetzt mal meinen Quelltext durchwühlt und alles in einer Tabelle dokumentiert. Am besten alles vorherigen Dateien vergessen. Wenn noch jemand Werte hat die nicht aufgeführt sind bitte hier posten oder zumailen. Werde dann die Datei aktualisieren. Die PDF sollte iegentlich selbsterklärend sein. Die ersten Spalte Index ist eigentlich für andere nicht soooo wichtig. Das ist in meinem Programm der Index in dem Auswahlfeld. Die zweite Spalte Wert ist die Eindeutige ID für die Kurve in meiner SQL-Datenbank. Wie man sieht noch nicht so ganz aktualisiert. Beim Divisor bedeutet eine 0 gleich keine Berechnung (Digitalwerte). Bit ist das Bit in dem Wert. 0 bedeutet kein Digitalwert. Gruß Ingo
Datum:
Hi, > ich habe jetzt mal meinen Quelltext durchwühlt und alles in einer > Tabelle dokumentiert. Am besten alles vorherigen Dateien vergessen. > > Wenn noch jemand Werte hat die nicht aufgeführt sind bitte hier posten > oder zumailen. Werde dann die Datei aktualisieren. Spitze, genau das, was ich gesucht habe - das nenne ich Service :) Ich werd dann mal die Reichelt-Bestellung für MAX232 usw. absetzen. Polling-Erkennung und Checksummen-Check soll dann in den Atmega8 mit rein, damit der sich nicht so langweilt ;-) Auswertung dann in 'nem Plug-Computer. Wenn ich fertig bin (kann noch ein Stück dauern ;-) ), poste ich Quellcode. Vielen Dank nochmal, Danny
Datum:
Danny Baumann schrieb: >> Wenn noch jemand Werte hat die nicht aufgeführt sind bitte hier posten >> oder zumailen. Werde dann die Datei aktualisieren. > > Spitze, genau das, was ich gesucht habe - das nenne ich Service :) Das ist natürlich noch nicht alles. Falls jemand noch andere Werte hat gerne zumailen und werde dass dann aktualisieren... Gruß Ingo
Datum:
IngoF schrieb: > Danny Baumann schrieb: >>> Wenn noch jemand Werte hat die nicht aufgeführt sind bitte hier posten >>> oder zumailen. Werde dann die Datei aktualisieren. >> >> Spitze, genau das, was ich gesucht habe - das nenne ich Service :) > > Das ist natürlich noch nicht alles. Falls jemand noch andere Werte hat > gerne zumailen und werde dass dann aktualisieren... Ich hab mal ein paar Fragen dazu ;-) - Deine Tabelle listet die Telegramme '10 00 3A' und '10 00 3D'. Hast du die bei dir schon mal gesehen oder wo kommt diese Information her? Ich sehe die nämlich bei meiner Heizung nicht, und ich habe hier im Thread auch keinen Verweis darauf gefunden...leider habe ich die gedämpfte Außentemperatur auch noch in keinem anderen Telegramm gefunden. - Byte 10 und 11 von '08 00 18' scheinen vertauscht zu sein Und noch als Info: Ich möchte wetten, dass die Bytes 9, 10, 11 und 15 in '10 00 3E' und '10 00 48' irgendwelche Solltemperaturen sind (HK1/Wasser/Kessel/HK2?) Im Tagbetrieb habe ich da die Werte 39/52/65/32 bzw. 26/33/40/27. Im Nachtbetrieb ist es 5/5/19/5 bzw. 5/5/7/5. Die Kombination 27/5 (d.h. 10 00 48, Byte 16) ist mit Sicherheit Soll HK2, weil das auch in '21 00 AB' vom Mischer kommt. Das ganze muss ich mal noch genauer prüfen. Danny
Datum:
Angehängte Dateien:Hallo Danny, Also die gedämpfte Außentemperatur habe ich igrendwann mal herausgefunden. Einige Telegramme kommen relativ selten und muss schon ziemlich lange warten. Das Telegramm ist in den Ergänzungen von Matthias zu meiner früheren Excel-Tabelle. [[Beitrag "Re: Logamatic 2107 Schnittstelle"]] Ist ziemlich weit oben aufgeführt. Er hatte allerdings das erste Byte nicht mitgeloggt. Ist ziemlich oben in der Tabelle. Dort ist auch das Telegramm 10 00 06 aufgeführt mit den der aktuellen Zeitinformation. Es gibt noch ein Byte was dort in diesem Telegramm nicht aufgeführt ist. Das Byte ist der Wochentag *0=Montag* bis *6=Sonntag* Teilweise hatte ich auch Werte die immer doppelt vorkamen und dann nur eine in meinem Quellcode verwendet. Kann sein dass bei einem anderen Heizungsausbau dort andere Werte angezeigt werden. Beim Flammenstrom ist das z.B. auch so es werden zweimal die selben Werte hintereinander im Telegramm gesendet. Vielleicht gibt es ja irgendwelche Heizungen die zwei Brenner haben und dann werden zwei verschiedene Werte angezeigt. Noch mal was zum generellen Telegrammaufbau: 1. Byte: Absenderadresse 2. Byte: Zieladresse 3. Byte: Telegrammart 4. bis (n-2). Byte: Daten (n-1). Byte: CRC Prüfsumme (n). Byte: Break (10 Bit lange "0") Die Quell und Zieladresse sind 7 Bit lang. Wenn bei der Zieladresse im Telegramm das Bit7 (8te Bit) gesetzt ist erwartet der Absender eine Antwort auf dieses Telegramm. Sonst gibt es nur noch das Pollingtelegramm. das nur aus einem Byte mit folgendem BREAK besteht. Dabei ist immer das Bit 8 gesetzt. Auf das Polling muss in bestimmter Zeit reagiert werden. Bei mir sendet die RC30 als erstes auf das Polling(0x90) erst mal seine Adresse (0x10) und sieht dann nach ob es gerade irgendwelche Daten zum senden hat und sendet dann das Break oder eben die Daten mit Prüfsumme und dann zum Abschluss das Break. Wer das Polling einmal bekommen hat kann so wie es aussieht soviel Telegramme schicken wie er will. Erst duch eine Antwort ohne Daten signalisiert er dass er nichts mehr zu senden hat. Wie anfangs vermutet wurde senden die Busteilnehmer nicht mit 15/10Volt auf den Bus. Sondern belasten den Bus nur mit etwa 40mA. Das macht eine Pegeländerung von 0,5 bis 1V. Jedes Empfangene Byte wird vom Busmaster wiederholt und es kann kontrolliert werden ob die Daten richtig verstanden wurden. Wenn man den Bus zu stark belastet (Einbruch auf knapp über 7 Volt (180mA??) sendet der Busmaster noch zusätzlich nach dem Break ein 0xFE. Vermute mal dass eine generelle Fehlermeldung ist. Vielleicht ist das auch eine Bestätigung dass die Prüfsumme vom Busmaster als fehlerhaft empfunden wurde. Ein Timeout das Rudi auf seinem Bus festgestellt hat konnte ich bisher kein einziges mal auf meinem Bus feststelle. Oder vielleicht meinte er das 0xFE Byte. Das bei mir bisher nur aufgetreten ist wenn ich den Bus gequält habe. Wäre mal abzuwarten bis ich mal testweise Telegramme mit fehlerhafter Prüfsumme auf den Bus gesendet habe. Werde Vermutlich eine Konstantstromquelle aus einem 08/15-Transistor und einem Emitterwiderstand von 82 oder 100 Ohm parallel zum Bus anklemmen. Das dürfte eine geschätze Belastung von 40-45 mA geben. Habe mal ein Screenshot von meinem DSO angehangen. Dort kann man gut das Sendesignal mit Echo erkennen. Die RC30 lässt sich bei diesm Telegramm 100ms Zeit bis es die Daten sendet. Das kann man ganz gut am ersten Bild sehen. Beide Bilder stammen aus dem selben Oszillogramm. Oben ist das ganze Signal blau hinterlegt. Der schwarze Bereich ist darunter vergrößert dargestellt. Gruß Ingo Edit: falls sich jemand fragt was die rote Linie ist.... Das ist die zweite Port-LED aus meiner letzten geposteten HEX-Datei für das Experimentierboard. Die LED fängt nach dem zweiten Byte an zu leuchten und erlischt zwei Bytes nach dem Break.
Datum:
Angehängte Dateien:Habe noch ein Sceenshot mit einem von der RC30 gesendeten Byte gefunden.... Wie man sieht ist die Pegeländerung zwischen High und Low nur 360mV. Bei meiner Sendeschaltung wurde das Signal aber erst mit etwa 35mA Last verstanden das war irgendwas zwischen 0,5 und 1,0V. Gruß Ingo
Datum:
@Ingo: > Sonst gibt es nur noch das Pollingtelegramm. das nur aus einem Byte mit > folgendem BREAK besteht. Dabei ist immer das Bit 8 gesetzt. Bei mir wird bei der 0x89 z.B. kein Break gesendet. Ich hatte damals extra mit dem Oszi. danach gesucht. Aus diesem Grund habe ich oft Pollingtelegramme wie 0x89 0x90 die natürlich so nicht stimmen und ein Timeout eingebaut.
Datum:
Ach stimmt... kann mich noch schwach dran erinnern... Hattest ja mal dieses Log mit den ganzen FF's. Allerdings habe ich bei mir noch kein einziges Polling/Telegramm gefunden dass ohne Break gesendet wurde. Also nehme ich mal an dass das nicht vorgesehen ist. Vielleicht ein Softwarefehler oder Übertragungsfehler. Oder ich habe einfach nicht gründlich gesucht.. Will das ja auch nicht ausschließen... Wie sieht denn Dein EMS-Bus aus? Bei mir liegt das Kabel alleine in einem Extra Rohr zum Wohnzimmer und ist ein ganz normales 08/15 ungeschirmtes etwa 0,7mm² Durchmesser. Bis auf meine mitlauschende Schaltung direkt an der RC30 habe ich nichts angeschlossen. Aber die 0x89 oder 0x90 werdem ja vom Busmaster geschickt und könnten dann ja nicht verschluckt werden, oder? Gruß Ingo
Datum:
> Wie sieht denn Dein EMS-Bus aus? Alles direkt in der Heizung bis auf den Logger (~50cm ungeschirmt an der Klinke). > Aber die > 0x89 oder 0x90 werdem ja vom Busmaster geschickt und könnten dann ja > nicht verschluckt werden, oder? Nach der 0x89 kommt einfach nichts. Es ist kein sporadischer Timeout sondern immer auf einer Adresse. Die BC10 (Addr. 0x09) scheint da nicht zu antworten. Evtl. weil sie schon angemeldet ist. Man kann hier nur Vermutungen anstellen.
Datum:
Hi, > Also die gedämpfte Außentemperatur habe ich igrendwann mal > herausgefunden. Einige Telegramme kommen relativ selten und muss schon > ziemlich lange warten. Hab sie inzwischen gefunden ;-) '0x10 0x00 0xa3 0x00 0x0d 0x11 0x01' Byte 5 ist die gedämpfte Außentemperatur Byte 6 + 7 sind mit Sicherheit irgendwelche Flags (beim Wechsel Tag->Nacht gehen die auf 0x00 0x00) Und noch ein paar mehr Infos: '0x10 0x00 0x3e 0x00 0x04 0x02 0x28 0x00 0xd4 0x00 0x00 0x27 0x34 0x41 0x00 0x00 0x00 0x11 0x22' Byte 7 ist die Raum-Solltemperatur (durch 2 dividieren) Byte 8 + 9 sind die Raum-Isttemperatur (durch 10 dividieren) Bytes 12 - 14 sind die Heizkurve für HK1 (Byte 12 = Solltemp. bei 10°C, Byte 13 dito für 0°C, Byte 14 dito für -10°C Byte 18 sind irgendwelche Flags, wahrscheinlich Pumpe HK1 Byte 19 ist die Solltemperatur Vorlauf HK1 '0x10 0x00 0x48 0x00 0x04 0x02 0x28 0x00 0xd4 0x00 0x00 0x1a 0x21 0x28 0x00 0x00 0x00 0x11 0x17' ist exakt das gleiche für HK2 Der einzige Wert, der mir jetzt noch fehlt, ist der Servicecode ;-) > Dort ist auch das Telegramm 10 00 06 aufgeführt mit den der aktuellen > Zeitinformation. Es gibt noch ein Byte was dort in diesem Telegramm > nicht aufgeführt ist. Das Byte ist der Wochentag *0=Montag* bis > *6=Sonntag* Ist das Byte 11? Sieht zumindest so aus... > Wie anfangs vermutet wurde senden die Busteilnehmer nicht mit > 15/10Volt auf den Bus. Sondern belasten den Bus nur mit etwa 40mA. Das > macht eine Pegeländerung von 0,5 bis 1V. Jedes Empfangene Byte wird vom > Busmaster wiederholt und es kann kontrolliert werden ob die Daten > richtig verstanden wurden. Sicher, dass das nur über die Belastung gemacht wird? Meinen EMS-auf-UART-Konverter (basierend auf deiner Schaltung) betreibe ich bus-powered, und der zieht um die 30mA. Das scheint den Bus aber nicht zu stören, d.h. die Busteilnehmer detektieren nicht den Spannungslevel, sondern Differenzen? Danny
Datum:
Danny Baumann schrieb: > Der einzige Wert, der mir jetzt noch fehlt, ist der Servicecode ;-) ... und der steht in '08 00 18' an Stelle 23 und 24 (z.B. 0x30 0x59 = '0Y').
Datum:
Danny Baumann schrieb: > Und noch ein paar mehr Infos: > '0x10 0x00 0x3e 0x00 0x04 0x02 0x28 0x00 0xd4 0x00 0x00 0x27 0x34 0x41 > 0x00 0x00 0x00 0x11 0x22' > Byte 7 ist die Raum-Solltemperatur (durch 2 dividieren) > Byte 8 + 9 sind die Raum-Isttemperatur (durch 10 dividieren) > Bytes 12 - 14 sind die Heizkurve für HK1 (Byte 12 = Solltemp. bei 10°C, > Byte 13 dito für 0°C, Byte 14 dito für -10°C > Byte 18 sind irgendwelche Flags, wahrscheinlich Pumpe HK1 > Byte 19 ist die Solltemperatur Vorlauf HK1 Ups.. die habe ich im Quelltext wohl übersehen... Die werden bei mir eigentlich auch mitgeloggt. Nur die -10/0/10°C Werte sind mir neu. Danny Baumann schrieb: > Ist das Byte 11? Sieht zumindest so aus... Wird wohl so sein. ist das einzige Byte was in der Ergänztung von Matthias nicht aufgeführt wurde bei dem Telegramm.... Danny Baumann schrieb: >> Also die gedämpfte Außentemperatur habe ich igrendwann mal >> herausgefunden. Einige Telegramme kommen relativ selten und muss schon >> ziemlich lange warten. > > Hab sie inzwischen gefunden ;-) Ups.. war mir auch sicher dass ich die dokumentiert hatte... Hatte das von Dir auch falsch verstanden. Danny Baumann schrieb: > Sicher, dass das nur über die Belastung gemacht wird? Keine Ahnung wie das in der RC30 gemacht wird. Aber wenn ich das Signal über eine 40mA Stromsenke erzeugt habe sah das Signal genauso wie aus dern RC30 aus, nur dass es etwas mehr Amplitude hat. Deine Schaltung belastet den Buss ja gleichmßig und bewirkt daher keine Spannungsschwankungen. Hast auch garantiert einen entsprechenden Bufferkondensator eingebaut, oder? Danny Baumann schrieb: > Das scheint den Bus aber nicht > zu stören, d.h. die Busteilnehmer detektieren nicht den Spannungslevel, > sondern Differenzen? das meinte ich ja damit.. vielleicht auch nur ungünstig von mir ausgedrückt. Duch diese Belastung habe ich die Spannungsschwankungen erreicht...
Datum:
Ingo F. schrieb: > Ups.. die habe ich im Quelltext wohl übersehen... Die werden bei mir > eigentlich auch mitgeloggt. Nur die -10/0/10°C Werte sind mir neu. Die -10/0/10 ist das, was RC30 bei mir zu den entsprechenden Werten anzeigt. Es sagt sowas wie 39 52 65 10 / 0 /-10 HK1 (das ganze im Servicemenü -> Heizkennlinie) > Deine Schaltung belastet den Buss ja gleichmßig und bewirkt daher keine > Spannungsschwankungen. Hast auch garantiert einen entsprechenden > Bufferkondensator eingebaut, oder? Ich hab 10µF eingebaut, ich bin mir aber nicht sicher, ob das "entsprechend" ist. Für 400mV Spannungshub für die Dauer von ein paar ms sollte es evtl. reichen ;-) Danny
Datum:
Na ich meinte ja damit es eine gleichmäßige Belastung ist und keine Spannungsschwankungen hervorruft... Für die Sendeschaltung soll ja gerade nicht den Strom aus dem Kondensator saugen.. Das wäre dann ja Sinnlos..
Datum:
IngoF schrieb: > Na ich meinte ja damit es eine gleichmäßige Belastung ist und keine > Spannungsschwankungen hervorruft... Für die Sendeschaltung soll ja > gerade nicht den Strom aus dem Kondensator saugen.. Das wäre dann ja > Sinnlos.. Ähm, ich habe bei mir keine Sendeschaltung verbaut...nur Atmega8 + MAX232 + OPV für den RX-Pfad. Stromversorgung via 78L05. Senden war mir dann doch zu heikel ;-)
Datum:
Danny Baumann schrieb: > Hab sie inzwischen gefunden ;-) > '0x10 0x00 0xa3 0x00 0x0d 0x11 0x01' Ups.. hatte ich dokumentiert.. Allerdings hatte ich einen Zahlendreher und habe 3A statt A3 geschrieben. So wie es aussieht sind wohl alle meine Byteangaben einen zu hoch.. Muss das noch mal nachsehen...
Datum:
Angehängte Dateien:Danny Baumann schrieb: > Senden war mir dann doch zu heikel ;-) Also bisher habe ich bis auf eine Simple Polling-Antwort auch noch nichts gesendet. Wusste ja nicht dass das Echo sein muss und kein Fehler ist. Werde mich da mal in der nächsten Zeit ein wenig dran versuchen wenn ich die neue Software mit CAN fertig habe. Habe mal meine Tabelle aktualisiert und angehangen. Hatte bei 0 angefangen zu zählen und die beiden Framing-Bytes die der Atmega einfügt auch mitgezählt. Dadur hatte ich überall einen zuviel. Das 3A Telegramm war das A3 Telegramm ;o) Das 11.Byte war also richtig mit dem Wochentag. Den Service-Code habe ich auch bei mir gefunden Gruß Ingo
Datum:
Die Versionen der Module wäre mal nicht schlecht. Evlt. sind wir genug und können die Nachrichten vergleichen ? Anbei nochmal meine Versionen. Es lohnt sich nur wenn die Versionen unterschiedlich sind: UBA3/MC10 (Universeller Brennerautomat/Mastercontroller) - 8 - V3.02 BC10 (Basiscontroller) - 9 - V2.02 RC30 (Raumcontroller) - 16 - V2.08 Version 3 KIM (Kesselidentifikationsmodul) 1051
Datum:
Ich habe UBA3/MC10 - 2.05 BC10 - 2.00 RC30 - 2.05 Version 9 / KIM-Nummer 1006 Rudis Anlage ist offensichtlich neuer als meine (Ende 2004) ;-)
Datum:
Ich habe UBA3/MC10 - 2.03 BC10 - 2.00 RC30 - 2.05 Version 12 / KIM-Nummer 1003 Danny Baumann schrieb: > Rudis Anlage ist offensichtlich neuer als meine (Ende 2004) ;-) Meine kommt ja dann fast aus der Steinzeit ;o)
Datum:
Hallo, ich lese aus Interesse etwas mit und da ich eine nun eine MC10, BC10 und RC35 erworben habe, um meine alte Steuerung zu ersetzen, bin ich sehr gespannt, wie sich das hier entwickelt. Mir ist noch nicht klar, welche Schnittstellenhardware geeignet ist aber ich verfolge den Thread weiter. Bisher habe ich nur einige Erfahrungen mit AVR-NET-IO und dem AVR Webmodul von Radig. Schön wäre es, wenn ich die Daten nicht nur lesen (was schon ein Fortschritt wäre), sondern auch senden könnte. Ich nutze die Software IP-Symcon zur Hausautomation. Tolle Arbeit Jungs. Danke
Datum:
Ihr könnt ja mal schauen ob die Werte stimmen. Index 4 in den Typ 0x02 Nachrichten ist wohl die Identifikation der Module. UBA3/MC10 (Universeller Brennerautomat/Mastercontroller) - 8 - V3.02
08 10 02 00 40 03 02 3d
VH VL
VH VL - Version
|
BC10 (Basiscontroller) - 9 - V2.02
09 10 02 00 44 02 02 6f
VH VL
VH VL - Version
|
RC30 (Raumcontroller) - 16 - V2.08
10 00 02 00 43 02 08 5d
VH VL
VH VL - Version
|
Version 3 KIM (Kesselidentifikationsmodul) 1051
08 10 04 00 04 1b 03 40 18 19 30 00 00 69 6b 0c 5d
KH KL VV
KH KL - KIM
VV - Version
|
Datum:
Angehängte Dateien:Hallo Leute, habe mir im Mai eine Buderus GB162-25 T40S zugelegt mit: UBA3.5 - 3.06 RC 35 - 1.11 KIM 1076 und möchte natürlich auch den EMS-Bus anzapfen - zum Lesen. Deshalb verfolge ich Euren Thread schon seit einigen Monaten, ist aber nicht einfacher für mich geworden :-*). Was das Bus-Interface betrifft, geht es mir ähnlich wie meinem Vorredner/Schreiber. Man/ich weiss eigentlich nie so genau, was der neueste Stand ist. Versteht das bitte nicht als Kritik! Ich denke nur, dass es hier eine Vielzahl von stillen Mitlesern gibt, denen es ähnlich geht. Und ich finde es schade, dass Eure tollen Erkenntnisse im "Nebel" des Threads unterzugehen drohen. Deshalb meine Bitte an Euch: Alle ein bis zwei Monate Eure neuesten Ergebnisse als Schaltplan, Code, etc. anhängen. Ja, ich weiss, es ist zusätzliche Arbeit, aber nach meinem Geschmack würde sich der Überblick über den Thread deutlich erhöhen. In der Hoffnung, keine Fehlbitte geäussert zu haben, bin ich auf die weiteren Erkenntnisse gespannt - und hoffe in nicht all zu ferner Zukunft mit meinen eigenen Ergebnissen weiteres Licht ins Dunkel des EMS-Bus zu bringen ;-). --- Eigentlich gehört es vom Thema nicht hierher, aber weiter oben war schon mal vom Auslesen des Gaszählerstandes die Rede. Deshalb hier mal meine eigenen Erfahrungen, vielleicht interessiert es jemanden. Habe hier einen Elster/Kromschröder Gaszähler BK4. Der hat in der letzten Zählerrolle (1 Ltr.) einen Magneten bei der Ziffer 9. Also kann man die 0,01 cbm (10 Ltr.) zuverlässig bestimen. Als Reedkontakt habe ich bei Frau R. einen MK 1471B um 2,55 Euronen bestellt. Der passt prima in ein 3cm-Stück Schutzhülle für DIL-ICs. Darum 3 Lagen Panzerband gewickelt und das Sandwich passt haargenau in die Zähleraussparung. Und weil sich das Sandwich echt easy Ein- und Ausstecken lässt, ist auch sichergestellt, dass bei einem Zählerwechsel nicht ein neuer Reedkontakt beschafft werden muss. Also kann der Gasmann ruhig 2 mal klingeln ;-). Das Zählen übernimmt bei mir ein DS2423, also ein 1-Wire Counter. In diesem Chip sind aber zwei 32-bit Zähler integriert, so dass noch ein Zähler frei war. Der zählt jetzt das Kondenswasser über einen Regenmesser. Habe ich auch bei Frau R. bestellt. Kostet ca. 25 Euronen und nennt sich WS 73003. - Und nein, ich bekomme keine Tandieme von R.! - Das Teil besteht aus dem eigentlichen Regensammler für den Garten und einer Auswertestation fürs Haus, verbunden per Funk. Die Auswertestation steht jetzt auf meinem Schreibtisch und zeigt mir Temperatur, Datum und Uhrzeit; für die Applikation habe ich sie nicht benötigt. Was zum Einsatz gekommen ist, ist der Regensammler. Jepp, die Dinger funktionieren mit einer Wippe ------|------ , das Wasser kommt gedrosselt von oben, wenn die linke oder rechte "Schaufel" voll ist, kippt die Wippe. Der Mengeninhalt der "Schippe" ist bekannt, ein in der Wippe befestigter Magnet steuert den Reedkontakt. Für einen Liter kippt die Wippe 210 mal. Das gibt eine relativ gute Genauigkeit, Meteorologen haben eben hohe Ansprüche. Also Batterien raus, damit die Kiste nicht funkt und auf der Platine direkt an den Reedkontakt, bzw. an zwei Leiterbahnen, die lötfreundlich in einem Pad enden. Diesen Reedkontakt habe ich mit dem zweiten Zähler verbunden, so dass ich jetzt synchron Gasverbrauch und Kondenswasseranfall zähle. Das hat den Vorteil, dass ich über diese beiden Parameter den Netto-Abgasverlust meiner Heizungsanlage bestimmen kann. Da gibt es einen schlauen Doktor an der Uni des Saarlandes, der hat in einer Patentschrift vorgerechnet, dass der Netto-Abgasverlust (qA) von Gas-Brennwertgeräten (GBWG) sich wie folgt bestimmen lässt: qA=( 1,6 * G – W )/( 1,6 * G ) * 13,5 [%] oder vereinfacht: qA = ( 1 – W /( 1,6 * G) ) * 13,5 [%] wobei: qA = Netto-Abgasverlust in % W = Kondenswasser in Liter G = Gas in cbm (m³) Wen die Herleitung interessiert 8-/, der wird hier fündig: http://www.uni-saarland.de/fak7/fze/KFA.htm Achso, die Auswertung der Zähler und weiterer 1-Wire Bauteile erfolgt in meinem FLI4L mit Opt-OW. O.k. - ist ein bisschen lang geworden, hoffe Ihr seid nicht ermüdet und forscht weiter ;-). Schönen Sonntag noch und Gruß Karl M.
Datum:
Hallo Rudi, konnte leider nur die KIM-Version in den Telegrammen finden. Da Du ja eine ganze Version bei Deiner RC30/35 weiter bist kann es durchaus sein dass die Telegramme anders abgefragt werden. Habe Dir mal meine ganzes Log angehangen. Irgendwo müssen die ja versteckt sein. Allerdings wohl nicht ganz so einfach im BCD Format wie in Deinen Telegrammen. Konnte sie jednfalls nicht finden. Gruß Ingo
Datum:
IngoF schrieb: > Habe Dir mal meine ganzes Log angehangen. Etwas unglücklich formuliert... Habe sie in der Mail an Dich angehangen. Müsste schon angekommen sein. Gruß Ingo
Datum:
Hallo, ich habe nur meine alte 3220 Steuerung ersetzt und reiche mal die Versionsdaten nach: RC 35 V1.06 MC 10 V2.07 BC 10 V2.03 SAFe V5.20 BIM V1 BIM Nummer 7000 Gruß Andy
Datum:
Rudi schrieb: > @Andreas F. > > Wie lauten die Busadressen von deiner Anlage ? Ich habe leider noch keinen Zugriff auf den Bus (siehe Beitrag "Re: Logamatic 2107 Schnittstelle" ), denn mir fehlt noch die passende Schnittstellenschaltung. Ich warte noch auf Euch. ;-) Ne andere Möglichkeit, diese anzuzeigen, kenne ich nicht. Gruß Andreas
Datum:
Andreas F. schrieb: > Ne andere Möglichkeit, diese anzuzeigen, kenne ich nicht. Ist auch im "Sondermenü" zu finden. Unter "Monitordaten" und dann "Bus-Status". Gruß Ingo
Datum:
IngoF schrieb: > Ist auch im "Sondermenü" zu finden. > Unter "Monitordaten" und dann "Bus-Status". gefunden unter Diagnose/Monitorwert/Busteilnehmer MC 10/SAFe Adr. 8 BC 10 Adr. 9 RC 35 Adr. 16 Gruß Andreas
Datum:
Hallo, hat dein SAFe keine Adresse oder ist das nur ein Sensor ?
Datum:
Rudi schrieb: > hat dein SAFe keine Adresse Hallo Rudi, wenn ich dass richtig verstanden habe ist dass das selbe wie UBA3. Keine Ahnung wodrin der Unterschied ist. Vielleicht auch nur der Vorgänger der UBA3 Gruß Ingo
Datum:
IngoF schrieb: > wenn ich dass richtig verstanden habe ist dass das selbe wie UBA3. Keine > Ahnung wodrin der Unterschied ist. > Vielleicht auch nur der Vorgänger der UBA3 Ich bin kein Heizungsbauer, aber das BRM 10 ist doch, wenn ich das richtig verstehe, kein richtiger SAFe. Es ist eine Schnittstelle, um ältere oder andere Brenner an einer EMS-Regelung zu betreiben und SAFe wohl nachzuahmen. Gibt es erst seit 2007. Alle Möglichkeiten hat man damit wohl nicht. Meine Angaben stehen genau so wie angegeben im Display. Gruß
Datum:
Hallo, Ich hab gemäß dem Thread und den beiden Schaltungsvorschlägen Rx und Tx am Modulsteckplatz für KM271 abgegriffen, UART auf 2400bd stehen, bekomme aber keine Antwort (auch kein STX) von der 2107. Nun die Frage: Muss man damit überhaupt die RS232 aktiviert wird noch Bauteile für den FG bestücken? Wenn ja welche? oder muss/kann das Modul in der Steuerung aktiviert werden. vielen Dank für eure Super Arbeit und viele Grüße jens
Datum:
ok, der 10k R zwischen 5 und 7 scheint zu reichen, nun ist Abgas einstellbar und das Modul wohl erkannt. Aber Daten bekomm ich trotzdem noch keine ... Hat jemand noch eine Idee? vg jens
Datum:
tx und rx vertauscht ... :-) schon immer mein Problem. Obwohl ich es an sich schon 10mal gecheckt hatte. nun werd ich mal weiter sehen was so an Daten kommt. vg und noch mal Danke für alle Infos im Forum und wiki jens
Datum:
Hallo, ich habe noch mal ein wenig am Bus herumgespielt und stumpf ein paar Pollings beantwortet und darauf gewartet was meine RC30 anzeigt. 0x08 = MC10 0x09 = BC10 0x10 = RC30/35 0x11 = Hydr. Weiche 0x12 = ZM EED 0x13 = Gerät (4x) 0x17 = RC20 Heizkreis 0x18... = RC20 (8x) 0x20... = Mischer (8x) 0x28... = Warmwasser (8x) 0x30... = Solar (8x) 0x38... = Gerät (40x) Laut meinem Pollingmitschnitt scheinen Adressen über 0x60 nicht gepollt zu werden. Ausnahmen scheinen 0x61 und 0x68 zu sein. Habe auch nicht alle Adressen überprüft und teilweise nur stichprobenartig meine Tabelle überprüft. Ist ja fast alles selbsterklären. Gerät ist wohl so eine Art Platzhalter für irgendwelche Module die der RC30 noch nicht bekannt waren. Oder Busteilnehmer wie Fernwirkmodem, ServiceKey, RS232-Gateway, .... Also wer sowas haben sollte bitte einfach mal nachsehen und mir irgendwie eine Info zukommen lassen. Bin von Natur aus neugierig ;o) Muss ja nicht im Forum sein... Aber was zum Teufel ist "ZM EED"??? ZM = ZentralModul oder ZusatzModul? Was soll denn EED sein? Hat jemand irgend eine Idee? Gruß Ingo
Datum:
Ingo F. schrieb: > Aber was zum Teufel ist "ZM EED"??? ZM = ZentralModul oder ZusatzModul? > Was soll denn EED sein? Hat jemand irgend eine Idee? Bei Buderus bedeutet ZM einfach Zusatzmodul. Aber EED !? Wie sieht deine jetzige Sendestufe mit dem Transistor aus ? Ich will mir demnächst eine neue Platine mit Opto. usw. bauen. Grüße.
Datum:
Rudi schrieb: > Bei Buderus bedeutet ZM einfach Zusatzmodul. Aber EED !? Servus Leute! EED ist ein "Externe Störungsanzeige (EED)"-Modul. Info z.B.: http://www.buderus.it/media/prodotti/1-murali/1_6-... HTH Karl M.
Datum:
Rudi schrieb: > Wie sieht deine jetzige Sendestufe mit dem Transistor aus ? Ich will mir > demnächst eine neue Platine mit Opto. usw. bauen. Also sie wird sehr wahrscheinlich einfach nur ein 82 oder 100 Ohm Emitterwiderstand für die Stromregelung haben und mit dem Basis am PIC/Atmega8 hängen. Dann sollte der Strom passen. Die Busadressen habe ich noch mit der "alten" Schaltung ermittelt. Bin dabei die Software noch mal neu zu schreiben. Wenn das fertig ist mach ich mit der Sendeschaltung weiter... Hinter soll es möglich sein per Jumper aus mehreren Seriellen Protokollen auszuwählen. 1) EMS (EMS-Bus) 2) 3964R 3) ASCII HEX-codiert 4) das bisherige Format mit AA 55 gerahmt 5) nur geänderte Werte 6) ..... mal sehen wieviel es wirklich werden. Die ersten beiden auf jeden Fall. 3964R verwendet ja Buderus für die Fernwirkmodems. Vielleicht ja auch für den ServiceKey und RS232-Gateway. Das mit dem AA 55 Rahmen fand ich nicht ganz sooo gut. rein theoretisch wäre es ja möglich dass die Werte AA 55 irgendwann mal in den Daten vorkommen. Bei 3964R kann das ja nicht passieren. Gruß Ingo
Datum:
Karl M. schrieb: > EED ist ein "Externe Störungsanzeige (EED)"-Modul. Danke... Also die Abkürzung von: Zusatzmodul External Error Detection :o) Hätten sich ja auch für eine Sprache entscheiden können... Na dann kann ich die Adresse ja schon mal vergessen. Der Gateway oder Service-Key muss dann wohl eines von den "Geräten" sein. Dann muss es ja ein ähnliche externe Fehleranzeige auch (irgendwann) für den EMS-Bus geben. Die ist vermutlich für das 4000er Bussystem?
Datum:
Ingo F. schrieb: > 3964R verwendet ja Buderus für die Fernwirkmodems. Vielleicht ja auch > für den ServiceKey und RS232-Gateway. Ja, zumindestens der Service-Key arbeitet damit. Ingo F. schrieb: > Das mit dem AA 55 Rahmen fand ich > nicht ganz sooo gut. rein theoretisch wäre es ja möglich dass die Werte > AA 55 irgendwann mal in den Daten vorkommen. ;-). Es ging mir damals eher darum, den Anfang und das Frameende zu markieren. Durch die Längenangabe würde es auch bei doppelten AA 55 funktionieren. Ich lese z.Z. die Daten über die UART mit einem 50MHz Cortex. Die CRC-Berechnung und das Parsen der Werte sind relativ CPU-Lastig. Die CPU muss auch noch andere Dinge erledigen (Loggen/SD-Karte, Netzwerk, CAN-Master). Ich werde hauptsächlich aus diesem und anderen Gründen einen 72MHz STM für die Parsergeschichte einsetzen. Der Platzbedarf auf der Platine ist durch die integrierte CAN-Hardware auch noch kleiner im Vergleich zu einem ATMEGA323P. Der STM kann dann den Stream parsen und bei Änderungen auf dem CAN-Bus brüllen. Grüße.
Datum:
Nachtrag: Evtl. hat ja jemand Lust und Laune und kann für die CRC Berechnung die Tabelle, für eine Tabellen basierte CRC, erstellen. Das sollte dann noch einiges an CPU-Zeit sparen, wenn genug Speicher vorhanden ist. Grüße.
Datum:
Rudi schrieb: > Evtl. hat ja jemand Lust und Laune und kann für die CRC Berechnung die > Tabelle, für eine Tabellen basierte CRC, erstellen. Hallo Rudi, Das wird leider nicht gehen. Die EMS-Prüfsumme ist ja kein wirkliches CRC mit Generatorpolynom. Es ist ja nur ein XOR mit verschiebung und ein paar Bits setzen wenn der bisherige Wert einen bestimmten Wert überschritten hat. Also nichts was man mit Tabelle machen könnte, oder? Bei der CRC mit Generatorpolynom wird die CRC ja immer Bitweise "errechnet". Durch die Tabelle erspart man sich dann acht Schritte und hat dann ein Byte was man XORen kann, oder? Die EMS-Prüfsumme ist ja schon auf Byte ebene und wird nicht für jedes Bit errechnet. Allerdings habe ich auch im Moment keine Ahnung wie die Tabelle bei einer CRC mit Generatorpolynom wirklich erstellt wird und angewendet wird. Habe nur mal am Rande davon irgendwas mitbekommen. Vielleicht geht es mit ein wenig Gehirnschmalz ja doch... Gruß Ingo
Datum:
Rudi schrieb: > Ich lese z.Z. die Daten über die UART mit einem 50MHz Cortex. Die > CRC-Berechnung und das Parsen der Werte sind relativ CPU-Lastig. Wie sieht denn das Parsen bei Dir aus? Machst Du wie bei Deiner MySQL einen "String" raus, der komprimiert wird? Ich hatte vor einfach wie bei meiner SQL einfach einen 16Bit-Wert daraus zu machen und eine ID mitzusenden. Je nach dem welches Frame ankommte wird nur ein entprechendes Unterprogramm ausgeführt. Die Werte werden im Buffer zwischengespeichert (z.B. ID*3+Bufferanfang). Bei änderungen wird der Wert übertragen. 2*8Bit +8Bit für einen primitiven Zeitstempel. Das klingt eigentlich so als ob dass parrallel mit dem Empfang mitlaufen könnte. Allerdings macht meine CPU nichts anderes als empfangen und weiterleiten und dann auch irgendwann mal die Werte auslesen.
Datum:
Ingo F. schrieb: > Wie sieht denn das Parsen bei Dir aus? Machst Du wie bei Deiner MySQL > einen "String" raus, der komprimiert wird? Schon lange nicht mehr. Ich habe in der DB die eigentlichen Werte als Float gespeichert und den Rest als Integer (ID/Timestamp). Das bringt etwas mehr Performance. Leider kann mysql noch keinen Timestamp mit Millisekunden, da gibt es aber ein Workaround, falls man diese Auflösung benötigt. Aus Performance-Gründen tendiere ich eher dazu, für jeden Sensorwert eine eigene Tabelle anzulegen. Ich habe es aber noch nicht getestet. > Ich hatte vor einfach wie bei meiner SQL einfach einen 16Bit-Wert daraus > zu machen und eine ID mitzusenden. Je nach dem welches Frame ankommte > wird nur ein entprechendes Unterprogramm ausgeführt. Ja, so in etwa mache ich es jetzt auch. Frame empfangen, CRC prüfen und je nach Absender an die entsprechende Unterfunktion übergeben. Dann parsen und ab hier wird jeder Wert als Sensor gesehen und entsprechend weiterverarbeitet. Also wenn ich von der Buderus zwei Temperaturen bekomme sind das nach dem Parsen einfach 2 Sensoren die die Temperatur messen. Das ist erstmal mein Ansatz für die Handhabung der einzelnen Daten. Ich versuche alles in ein Schema F zu bekommen, je nach Sensor verallgemeinern, damit ich später bei einer zusätzlichen Regelung weniger Probleme habe. Ich denke die CRC-Berechnung würde man schon in eine Tabelle bekommen. Es gibt ein Poly. und ein paar mal gedrehe mit Bitabhängigkeiten. Nichts anderes als bei einer "normalen" CRC denke ich. Grüße.
Datum:
hi alle zusammen,
erstmal an alle fettes danke, super arbeit habt ihr hier alle
geleistet!!!
zu meinem prob: habe die Schaltung exakt nachgemacht, kriege aber keine
daten von meiner logamatic 2107.
interface habe ich gemäss update von chipsuffler nachgebaut. habe schon
viele interfaces im OBD (Automotive) Bereich gelötet, bin nicht ganz
anfänger und finde auch keinen fehler in meiner arbeit.
habe rx/tx auf beiden seiten schon wild hin und her getauscht. nix....
versuche die ganze zeit immer nach einem versuch fhem zu starten, debug
modus laufen zu lassen (verbose und loglevel auf 5 und 6) und logmode zu
setzen. nix...
(in der fhem.cfg ist natürlich auch "define KM271 KM271 /dev/ttyS0"
eingetragen)
wie testet ihr manuell? sprich senden von 0x02? mit nem PERL
write("\x02") sehe ich aller höchstens mal ne 00 aufm ttyS0 aber nix
gescheites.... und schon gar nicht irgendne antwort.....
interface wird natürlich mit abgas erkannt (bei nem 1k widerstand an FG
ca 150°C) und im service menü kann ich ne abgastemperaturschwelle
einstellen.
bin bischen verzweifelt, ist ja echt keine kunst das interface
eigentlich.
wisst ihr was sein könnte? typischer fehler auf den ihr auch gestossen
seid?
Datum:
-die pegel an tx und rx nachmessen und dabei merken ob es wirklich richtig verbunden ist (war mein fehler) - mit einem seriell-usb Adapter und einem Terminal-programm erste Tuchfühlung nehmen. Ansonsten ist wohl eine genauere Beschreibung der gebauten Variante noitwendig, den thread kann wohl niemand mehr auseinander halten weil sich da verschiedene Stränge und Varianten durchmischen ... vg jens
Datum:
was für pegel soll ich da erhalten? reicht ein voltmeter? mit was für einem terminalprogram kann ich sicher die einstellung 2400 vornehmen und hex 0x02 senden? bzw. wie machst du das?
Datum:
Pegel messen (hier Logikpegel, keine RS232): - Verbindung auftrennen (also nichts anklemmen) - Am zu messenden Anschluß einen Widerstand ca. 4.7k gegen Masse legen. Ein Empfänger (Eingang) sollte dann gegen 0V zeigen, ein Ausgang knapp unter 5V Terminalprogramm: Realterm. Kann man alle Baudraten einstellen und auch senden. vg jens
Datum:
Angehängte Dateien:Hallo, anbei die CRC-Berechnung für den EMS-Bus mit und ohne Tabelle. Grüße.
Datum:
Gute morgen, sorry for my bad german... ich habe ein service key gekauft für EMS connection und habe eco soft Serial Communication gesehen mit advanced serial port monitor. Wass ich tun wolle: Eine wifi router mit linux oder PIC oder andern kleine Linux platform (Synology, Wdtv, ...) connectieren zum Service Key. Ich wollte warm wasser ein oder aus zu zetsen Ich wollte die HistorieDaten aus der Linux speichern. => Vorteil: Keine Ecosoft, keine Windows PC, aber lichte HW (kleine consumption). Glaubst du das die empfangen Hex Data einfach conertieren können? danke chris_be e.g. Start of comm: <20101106065709.928 TX> <STX> <20101106065711.922 TX> <STX> <20101106065712.004 RX> <DLE> <20101106065712.004 TX> <NUL><NUL><DLE><ETX><DC3> <20101106065712.041 RX> <DLE><STX> <20101106065712.089 TX> <DLE> <20101106065712.181 RX> <NUL><NUL><NUL><NUL>S<STX>1<DLE><ETX>s <20101106065712.181 TX> <DLE> <20101106065712.265 RX> <STX> <20101106065712.265 TX> <DLE> <20101106065712.360 RX> <NUL><NUL><SOH><NUL><NUL><NUL><ETX><NUL><SOH><ETX><DLE><ETX><DC3> <20101106065712.360 TX> <DLE> <20101106065712.390 RX> <STX> <20101106065712.390 TX> <DLE> <20101106065712.492 RX> <NUL><NUL><STX><NUL><BS><LF><FF><SO><DLE><DLE><DC2><DC4><SYN><CAN><SUB><FS><RS><DLE><ETX><SOH> <20101106065712.492 TX> <DLE> <20101106065714.506 TX> <STX> <20101106065714.588 RX> <DLE> <20101106065714.588 TX> <EOT><BS><BEL><DLE><ETX><CAN> <20101106065714.640 RX> <DLE><STX> <20101106065714.691 TX> <DLE> <20101106065714.795 RX> <EOT><BS><BEL><NUL><VT><SOH><SOH><STX><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><DLE><ETX><DC1> <20101106065714.795 TX> <DLE> <20101106065716.798 TX> <STX> <20101106065716.880 RX> <DLE> <20101106065716.880 TX> <EOT><BS><STX><DLE><ETX><GS> <20101106065716.940 RX> <DLE> <20101106065716.941 TX> <STX> <20101106065717.022 RX> <DLE> <20101106065717.022 TX> <EOT><HT><STX><DLE><ETX><FS> <20101106065717.089 RX> <DLE><STX> <20101106065717.089 TX> <DLE> <20101106065717.183 RX> <EOT><BS><STX><NUL>H<STX><EOT>K<STX><DC4><NUL><NUL><NUL><DLE><ETX><SO> <20101106065717.183 TX> <DLE> <20101106065717.240 RX> <STX> <20101106065717.240 TX> <DLE> <20101106065717.331 RX> <EOT><HT><STX><NUL>D<STX><NUL><DLE><ETX>Z <20101106065717.331 TX> <DLE> <20101106065719.329 TX> <STX> <20101106065719.411 RX> <DLE> <20101106065719.411 TX> <EOT><VT><STX><DLE><ETX><RS> <20101106065719.441 RX> <DLE> <20101106065719.441 TX> <STX> <20101106065719.523 RX> <DLE> <20101106065719.523 TX> <EOT><DLE><DLE><STX><DLE><ETX><NAK> <20101106065719.589 RX> <DLE><STX> <20101106065719.589 TX> <DLE> <20101106065719.682 RX> <EOT><DLE><DLE><STX><NUL>C<STX><BS><DLE><ETX>\ <20101106065719.682 TX> <DLE> etc...
Datum:
Hallo Chris, Das ist ja super. Genau das nach dem ich gesucht habe. Die Kommunikation läuft wie schon fast vermutet über das 3964R-Protokoll. Leider hilft die Aufzeichnung von Dir leider garnichts da Du im ASCII-Mode aufgezeichnet hast. Zeichne doch mal im HEX-Mode auf. Wäre sehr interessant wie das genau abläuft. Einfach mal so eine Minute Log dann hier am besten als Datei anhängen. Und Bitte schau doch mal in der RC30/35 nach mit welcher Adresse und Namen er sich am Bus anmeldet. Bin echt neugierig. Bei der RC30: Service-Menü >> MonitorDaten >> Bus-Status. Bei der RC35: Diagnose >> Monitorwert >> Busteilnehmer Hier sind schon mal alle Daten die wir bisher herausgefunden haben: Beitrag "Re: Logamatic 2107 Schnittstelle" Die meisten Daten sind schon bekannt. Wir haben aber alle einen selbstgebastelten Controller und keinen Service-Key. Deswegen haben wir ein anderes Datenformat. Müsste bei Dir am Service-Key aber sehr ähnlich sein.... Gruß Ingo P.S.: Die Daten in Deinem Log, die nach HEX-Daten aussehen ist das Datum mit Uhrzeit und Millisekunden. Die eigentlich Daten sind dazwischen versteckt und werden evtl nicht komplett angezeigt weil es im ASCII-Mode von dem Programm aufgezeichnet wurde. Gruß Ingo
Datum:
Habe mir mal die Mühe gemacht die Daten ohne den "Handshake" ins Hexformat zu übersetzen: 12.004 TX: 00 00 11 03 13 12.181 RX: 00 00 00 00 53 02 31 11 03s 12.360 RX: 00 00 01 00 00 00 03 00 01 03 11 03 13 12.492 RX: 00 00 02 00 08 0a 0c 0e 11 11 12 14 16 18 1a 1c 0e 11 03 01 14.588 TX: 04 08 07 11 03 18 14.795 RX: 04 08 07 00 0b 01 01 02 00 00 00 00 00 00 00 00 00 00 00 11 03 11 16.880 TX: 04 08 02 11 03 1d 17.022 TX: 04 09 02 11 03 1c 17.183 RX: 04 08 02 00 48 02 04 4b 02 14 00 00 00 11 03 0e 17.331 RX: 04 09 02 00 44 02 00 11 03 5a 19.411 TX: 04 0b 02 11 03 1e 19.523 TX: 04 11 11 02 11 03 15 19.682 RX: 04 11 11 02 00 43 02 08 11 03 5c Allerdings werden wohl viele Daten im ASCII-Modus nicht oder falsch angezeigt. z.B kommt das <DLE> in den Daten auch einzeln vor. Was nach dem 3964R-Protokoll nicht vorkommen darf. Stelle Dein Programm doch mal wie in dem Screenshot ein und dann im ASCII-Mode aufzeichnen.
Datum:
Angehängte Dateien:guten abend. bitte: bus info Und eine Serial sniffer mit monitoring. Ich kannst Binary aufzeichern auch oder andern teste tun. ciao
Datum:
Hallo Chris_be Danke für die Info... Der Service-Key versteckt sich also hinter der 0x0b ;o) Also zu den Daten.... Der Service-key sendet die Daten mit vorangestellter 0x04. dannach kommt die Adresse des EMS-Modul (0x10 für RC35) und dann der Telegrammtyp. Das hier aus Deinem Log ist das Telegramm 0x18 von der MC10: 04081900006101EE0225FFFFFF0000B9DA04786E02EA4803BAFF00AB590000100335 Mit der Tabelle kannst Du dann die Daten "decodieren". das 6.Byte ist die Außentemperatur 0x61 > 97 > 9,7°C Was die anderen Telegramme mit 0x39 und 0x00 sind kann ich jetzt auch nicht sagen. Würde mal vermuten dass die 0x00 Daten vom Service-Key selber sind. Ganz am Schluss sind noch Telegramme die mit 0x20 anfangen. Wird vermutlich nichts ganz so wichtiges sein. Die Telegramme mit der 0x39 am Ende kommen nicht vom Service-Key oder von der Software und sind nur ein Hinweis auf die Beschränkungen der TrialVersion. Vielleicht kannst Du ja noch mit hilfe der Buderus Software noch andere Daten herausfinden, was uns leider nicht möglich ist. Falls Du noch irgendwas herausfindest bitte dann noch mal posten oder mailen. Gruß Ingo
Datum:
Angehängte Dateien:Ist ja fast ein Kinderspiel mit OpenOffice die unützen Daten herauszulöschen ;o) Für alle die es interessiert hier mal die reinen Daten ohne Ballast...
Datum:
@Rudi Hier gibt es auch alle Versionsnummern die Du herausfinden wolltest :o) Ist alles Telegramm 0x02 und BIM die 0x04
RX: 00 00 00 00 S Service Key 2.49 53 02 31
RX: 04 21 02 00 E MM10 2.00 45 02 00
RX: 04 08 02 00 H MC10 2.04 48 02 04 4B 02 14 00 00 00
K SAFe 2.20 4B 02 14
RX: 04 08 04 00 5001 17 13 89 11 82 12 3C 64 33 05 64 5A 32
RX: 04 09 02 00 D BC10 2.00 44 02 00
RX: 04 10 02 00 C RC30 2.08 43 02 08
RX: 04 18 02 00 B RC20 1.04 42 01 04 00 00 00
|
Datum:
Nun ist ja echt Bewegung in der Sache. Ich habe mir auch mal spaßhalber einen original Service Key zugelegt. Nun ist der Stecker etwas klobig und ich benötige eine Verlängerung zu meinem Hausautomationsserver. ;-) Was ist sinnvoller? Den Bus direkt zu verlängern (also am Klinkenstecker oder die RS232 Schnittstelle, die ich wohl noch über RS232 zu USB konvertieren muss? Gruß
Datum:
Andreas F. schrieb: > Nun ist der Stecker etwas klobig und ich benötige eine Verlängerung zu > meinem Hausautomationsserver. ;-) Genau deswegen habe ich mich bisher geweigert den Service-Key zu kaufen ;o) Eigentlich ist es egal.Der EMS-Bus darf ja 50 Meter lang sein. Mit der seriellen Schnittstelle kommt kan bei 9600 laut Wikipedia bis zu 152Meter. Würde ich von dem Verkabelungsaufwand/-kosten abhängig machen. Das USB-Kabel zu verlängern halte ich nicht für eine gute Idee. Bei USB sind das ja mindestens 1,5MBit die über das Kabel gehen müssen. Bei 1 Meter würde vielleicht ein USB-Verlängerungskabel gehen. Halte ich aber trotzdem für keine gute Idee. Gruß Ingo
Datum:
IngoF schrieb: > Eigentlich ist es egal.Der EMS-Bus darf ja 50 Meter lang sein. Na dann ist die Entscheidung leicht. Danke Dir. Gruß
Datum:
Angehängte Dateien:Attachements: - Sending the config. - Get conf + Monitoring - Screenshot of Monitoring. enjoy!
Datum:
Hello Chris.
Hier eine kleine Anleitung um die Daten automatisisert zu bereinigen:
[code]
###########################
1) unnütze Daten löschen:
###########################
bei "Mehr Optionen" "Regulärer Ausdruck" anklicken.
Ohne "" kopieren und in OpenOffice einfügen und jedes mal "Ersetzen
alle" anklicken.
suchen nach: ersetze durch:
(search for:) (replace by:)
----------------------------- --------------
"[[]len=[:digit:]+\x005d"
"1003[01234567890ABCDEF]{2}"
"<[RTX]{2}>$"
"<[RTX]{2}>[:digit:]{2}$"
"<[RTX]{2}>[:digit:]{4}$"
"^$"
"[01234567890ABCDEF]{2}" "& "
"10 10 " "10 "
###########################
2) alles Markieren:
###########################
"bearbeiten" "alles auswählen STRG+A" auswählen
###########################
3) in Zwischenablage:
###########################
"bearbeiten" "kopieren Strg+C" auswählen
###########################
4) in Wordpad einfügen:
###########################
WordPad öffnen
[STRG]+[V]
[\code]
und im Anhang die bereinigte Version.
Am besten die TXT-Datei gleich mit OpenOffice öffnen und die
Markroaufzeichnung starten. Alles bis Punkt 3 ausführen,
Makroaufzeichnung beenden und Makro abspeichern.
Dann geht alles beim nächsten mal viel schneller.
Aber dann nicht mehr das Ausgabeformat umstellen.
Gruß
Ingo
Datum:
Angehängte Dateien:schon wieder Anhang vergessen.... @Chris poste doch mal Deine Programmeinstellungen vom "Advanced Serial Port Monitor" wie Du die Datei erstellt hast. Werde mich jetzt mal wieder um meine Hardware kümmern. Werde mir irgendwann mal ansehen was da in Deinem letzten Mittschnitt überhaupt drinsteht.... Gruß Ingo
Datum:
Angehängte Dateien:Wen es interessiert ein Schreenschot von meinen heutigen Daten:
Datum:
@IngoF Wo ist deine Fernbedienung an der Heizung angeschlossen ? Bekommt die Fernbedienung nur GND und die Datenleitung oder zusätzlich noch die 12V ? Zum "get config": Die Daten sehen mir an einigen Stellen nach einem einfachen EEProm-Dump aus. Jedes Modul hat ja ein EEProm am I2C. Jetzt könnte man eine UART-Simulation schreiben und schauen was da so alles in der Software passiert ;-) @chris_be Is there a way to get pictures from inside the key ? Anyway, thanks for the log data !
Datum:
Rudi schrieb: > Wo ist deine Fernbedienung an der Heizung angeschlossen ? Bekommt die > Fernbedienung nur GND und die Datenleitung oder zusätzlich noch die 12V > ? Also die RC30 und mein ATMega8 hängt im Wohnzimmer am Bus. Dann geht es an der Heizung vorbei ins Computerzimmer wo mein 18F2585 und hinter dem 4cm langen CAN BUS noch ein PIC. Der Bus hat keine 12 Volt also nur GND und 10/15Volt. Die 12 Volt gibt es nur an der Diagnosebuchse für den Service-key. Rudi schrieb: > Zum "get config": Die Daten sehen mir an einigen Stellen nach einem > einfachen EEProm-Dump aus. Jedes Modul hat ja ein EEProm am I2C. Also auf jeden Fall kommen einige Telegramme zerstückelt über den EMS-Bus. Der Service-Key klebt die zusammen und schickt die zum PC. Ansonsten sind die Telegramme alle gleich. Also am EMS-Bus sieht das Telegramm so aus: <Absender> <Empfänger> <Offset> <Daten ..... Daten> <"CRC"> <Break> Als Empfänger steht endweder 0x00 für alle, die "normale" Adresse (0x08=MC10) oder das Polling (0x88 für MC10) an dem Service-key zum PC (3964R): 0x04 <Absender> <Daten> <DLE(0x10)> <ETX(0x03)> <BCC(XOR)> Dabei werden alle 0x10 in den Daten gedoppelt damit sie von dem DLE unterschieden werden können. Vom Service-Key ein Telegramm mit den Schaltzeiten und anderen Daten: RX: 04 10 10 3F 00 01 21 00 84 21 21 ........ 10 03 <BCC> ^^^^^^ gedoppelt wegen 3964R sieht auf dem EMS-Bus dann so aus: 10 00 3F 00 ........ <CRC> 10 00 3F 1B ........ <CRC> 10 00 3F 36 ........ <CRC> ... ... ... Rudi schrieb: > Jetzt könnte man eine UART-Simulation schreiben und schauen was da so > alles in der Software passiert ;-) Also ich werde das auf jeden Fall mal in meine Hardware packen und evtl. mal testen ob es dann auch mit der Originalsoftware läuft... Vermute mal dass es dort keine Probleme gibt. Wie man sieht fragt die OriginalSoftware erst mal die Versionsnummern mit dem Telegrammtyp 02 ab. Dannach werden alle Telegramme vom Busteilnehmer abgefragt. Also scheint der Servicekey verschiedene Abfragemethoden zu haben. Spezielle Telegramme, oder alle Telegramme. 04 10 02 fragt also die Seriennummern ab (Telegramm 0x02) 04 10 fragt dann alle Telegramme ab (auch noch mal 0x02) Wie man ja sieht gibt es also dann noch einige Telegrammtypen die bei mir noch nie auf dem Bus aufgetaucht sind.. Beim Konfig senden sieht man sogar noch mehr Telegramme die Teilweise nur aus Nullen bestehen... Gruß Ingo
Datum:
Achso... Ob das Offset bei dem EMS-Beispiel jetzt stimmt kann ich nicht garantieren. Müsste noch mal auf dem BUS mitlesen. Meine aber mich an die 0x1B als erstes zu erinnern. Es gibt aber auch eine Möglichkeit nur einzelne Werte zu setzen. Die kommen eigentlich nur von der RC30 bei mir und gehen zur MC10 oder seltener zu der 0x09...
Datum:
IngoF schrieb: >> Jetzt könnte man eine UART-Simulation schreiben und schauen was da so >> alles in der Software passiert ;-) > > Also ich werde das auf jeden Fall mal in meine Hardware packen und evtl. > mal testen ob es dann auch mit der Originalsoftware läuft... Vermute mal > dass es dort keine Probleme gibt. Ja, ich hatte es damals über VirtualBox und über eine externe Loop versucht, aber da kannte ich das Format noch nicht. Jetzt sollte es, auch ohne Hardware, einfacher sein ... ;-)
Datum:
Verstehe nur Bahnhof :o) Wie oder was wolltest Du denn machen? Hast Du die Originalsoftware und möchtest dann den Service-Key simulieren? Dann an irgendwelchen Parametern herumdrehen und sehen was sich in der Original-Software ändert? In die andere Richtung experimentiern und irgendwelche Wert umzustellen um zu sehen was sich an der Heizung ändert ist bestimmt nicht so eine gute Idee.. Aber das könnte man auch direkt am EMS-Bus machen. Ich habe vor das direkt in meine Hardware zu programmieren dass sie sich auch wie ein Service-Key verhält. Oder eben irgend ein beliebiges anderes Protokoll. Nur muss ich dann doch wohl irgenwie externen Speicher für meinen Controller spendieren. Mit dem internen 1,5K RAM wirds dann eng. Und dann kann ich mir immer noch die Original-Software mal ansehen ;o)
Datum:
IngoF schrieb: > Wie oder was wolltest Du denn machen? > Hast Du die Originalsoftware und möchtest dann den Service-Key > simulieren? Dann an irgendwelchen Parametern herumdrehen und sehen was > sich in der Original-Software ändert? Ich hatte damals zwei serielle Schnittstellen verbunden und an einer Seriellen die Software und an der anderen ein Terminal bzw. ein kleines Skript um zu sehen was dort passiert. > In die andere Richtung experimentiern und irgendwelche Wert umzustellen > um zu sehen was sich an der Heizung ändert ist bestimmt nicht so eine > gute Idee.. Aber das könnte man auch direkt am EMS-Bus machen. Ja, dann aber nur im Sommer ;-) > Ich habe vor das direkt in meine Hardware zu programmieren dass sie sich > auch wie ein Service-Key verhält. Oder eben irgend ein beliebiges > anderes Protokoll. Nur muss ich dann doch wohl irgenwie externen > Speicher für meinen Controller spendieren. Mit dem internen 1,5K RAM > wirds dann eng. Es gibt 32K externes SPI-SRAM von Microchip. Ich werde einen STM32 zum parsen benutzen. 20K SRAM sollten reichen, ansonsten hat er noch etwas externes SRAM.
Datum:
IngoF schrieb: Nur muss ich dann doch wohl irgenwie externen > Speicher für meinen Controller spendieren. Mit dem internen 1,5K RAM > wirds dann eng. > > Und dann kann ich mir immer noch die Original-Software mal ansehen ;o) Ich habe eine PIC zum hause mit eine Ethernet connection. Es registriert data (Onewire, Serial, ...) und sended UDP packet zum Synology NAS. On synology brauche ich Netcat UDP port >file.txt so brauche ich keine speicher am PIC Wenn ich zeit habe wollte ich neue Serial data logs senden, diese abend.
Datum:
Acho, erst werden einmal alle Werte abgefragt z.B. 04 08 18 ..... und hinterher kommen die einzelwerte 20 04 08 18 ... <TX>20 04 <RX>20 04 08 18 02 D0 <RX>20 04 08 18 02 D5 <RX>20 04 08 18 05 09 <RX>20 04 08 18 1E 82 <RX>20 04 08 18 1F 74 <RX>20 04 10 06 04 0C <RX>20 04 10 06 05 3A <RX>20 04 08 34 02 E1 <RX>20 04 08 18 1E 80 <RX>20 04 08 18 1F 75 <RX>20 04 08 18 02 DA <RX>20 04 08 18 1E 82 <TX>20 04 interessant ist auch dass nur einzelne geänderte Werte übertragen werden. z. Beispiel an der Kesseltemperatur mit dem Offset 01 und 02. Auch dort wird nur ein Byte übertragen. also so bald sich ein Byte ändert wird nur das Byte übertragen und nicht beider Werte der Temperatur. Also hat die Software und der Servicekey irgendwo einen Buffer wo alle alten Werte zwischengespeichert werden. @Chris_be Die Software pollt also in einem bestimmten Abstand den Service-Key an (<TX>20 04 ). Kannst Du in dem original-Log noch erkennen in welchem Zeitabstand das passiert? Oder sieht das nur so aus als obe das regelmäßig passiert? Gruß Ingo
Datum:
Hi Ingo, beispiel von original Log: Zeit is ... 2 sek? Start: <20101109201120.688 RX> 02 <20101109201120.688 TX> 10 <20101109201120.778 RX> 2004081802D51003F0 <20101109201120.778 TX> 10 <20101109201120.812 RX> 02 <20101109201120.812 TX> 10 <20101109201120.902 RX> 20040818050910032B <20101109201120.902 TX> 10 <20101109201120.942 RX> 02 <20101109201120.942 TX> 10 <20101109201121.033 RX> 200408181E821003BB <20101109201121.033 TX> 10 <20101109201121.062 RX> 02 <20101109201121.062 TX> 10 <20101109201121.153 RX> 200408181F7410034C <20101109201121.157 TX> 10 <20101109201121.212 RX> 02 <20101109201121.212 TX> 10 <20101109201121.304 RX> 2004101006040C100339 <20101109201121.304 TX> 10 <20101109201121.387 RX> 02 <20101109201121.387 TX> 10 <20101109201121.478 RX> 2004101006053A10030E <20101109201121.488 TX> 10 <20101109201121.529 RX> 02 <20101109201121.529 TX> 10 <20101109201121.619 RX> 2004083402E11003E8 <20101109201121.619 TX> 10 <20101109201122.988 RX> 02 <20101109201123.021 TX> 10 <20101109201123.111 RX> 200408181E801003B9 .... Ende: <20101109202134.018 TX> 02 <20101109202134.215 RX> 10 <20101109202134.215 TX> 2004100337 <20101109202134.249 RX> 10 <20101109202136.299 TX> 02 <20101109202136.347 RX> 021002 <20101109202138.286 TX> 10 <20101109202138.375 RX> 2004081903F01003D5 <20101109202138.397 TX> 10 <20101109202138.435 RX> 02 <20101109202138.436 TX> 10 <20101109202138.532 RX> 2004081905F01003D3 <20101109202138.532 TX>
Datum:
Hallo Ingo, Ingo F. schrieb: > Also sie wird sehr wahrscheinlich einfach nur ein 82 oder 100 Ohm > Emitterwiderstand für die Stromregelung haben und mit dem Basis am > PIC/Atmega8 hängen. Dann sollte der Strom passen. Hast du schon einen konkreten Wert ? Welche Kapazitäten benutzt du um den Bus zu glätten (Stromversorgung hinter den Dioden). Grüße.
Datum:
Rudi schrieb: > Hast du schon einen konkreten Wert ? Nö, leider nicht. Muss noch fleissig programmieren und finde nicht wirklich oft Zeit dafür. Allerdings müssten beide funktionieren Im Moment hört mein Controller garnicht mehr auf zu senden und hängt in einer Endlosschleife die mir unerklärlich ist :o) Kann ja schlecht an der "Sendestufe" basteln wenn nichts zu senden ist. @Chris ich meinte den Abstand zwischen dem senden dieses Telegramme, das vermutlich immer in bestimmten abständen kommt: > <20101109202134.215 TX> > 2004100337 Gruß Ingo
Datum:
Hi, ich bin grad mal wieder mit dem Oszi an der Heizung um die Sendefunktion zu implementieren. So wie ich das sehe kommt die abzufragende Adresse mit bit 7 gesetzt und danach das Break. Wenn der Buspegel auf 1 ist, sendet die angefragte Station mit genau 1 Byte und wartet auf das "Busecho", wenn alles stimmt das nächste usw.. Am Ende der Übertragung schickt die Station ein Break. Ich benutze einen FET und 50 Ohm Serienwiderstand. Wenn die Anfrage nicht beantwortet werden kann, fliegt die Station aus der Liste und bei der nächsten erfolgreichen Anfrage ist sie wieder dabei. Grüße.
Datum:
Angehängte Dateien:Anbei ein Bild vom Bus Status bei Adresse 0x0b ;-)
Datum:
cool... wie hast Du dass denn hinbekommen? Welches Telegramm war das denn?
Datum:
IngoF schrieb: > cool... > > wie hast Du dass denn hinbekommen? Welches Telegramm war das denn? Ich warte auf das 0x8B BRK und antworte danach so schnell wie möglich mit 0x0B BRK. Nach jedem gesendeten Zeichen musst du den Bus auslesen, um das Echo (dein gesendetes Zeichen) zu verifizieren. Wenn der Bus auf Low liegt, kann man wohl nicht senden. Das Zurücklesen habe ich bisher nur durch ein Delay realisiert (etwas länger als ein Frame) und ich schau auch nicht ob ich zu spät sende (Kollision mit einer anderen Station), weswegen die Station ab und zu aus der Liste rausfliegt. Grüße.
Datum:
Rudi schrieb: > Ich warte auf das 0x8B BRK und antworte danach so schnell wie möglich > mit 0x0B BRK. Nach jedem gesendeten Zeichen musst du den Bus auslesen, > um das Echo (dein gesendetes Zeichen) zu verifizieren. Wenn der Bus auf > Low liegt, kann man wohl nicht senden. Ja, das war mir schon klar.... Wie hast Du denn das "COMPUTER" auf die RC-30 gezaubert? Bei mir steht bei unbekannten Adressen nur "GERÄT". Liegt dann wohl vermutlich an Deiner neueren Firmware der RC30 und nicht an einem Telegramm in der man den Namen des Busteilnehmers übergeben kann... Gruß Ingo
Datum:
Hallo, IngoF schrieb: > Wie hast Du denn das "COMPUTER" auf die RC-30 gezaubert? Bei mir steht > bei unbekannten Adressen nur "GERÄT". Liegt dann wohl vermutlich an > Deiner neueren Firmware der RC30 und nicht an einem Telegramm in der man > den Namen des Busteilnehmers übergeben kann... Kennt deine Firmware den Servicekey noch nicht ? Grüße.
Datum:
Nöö, bei allen "unbekannten" Adressen steht bei mir Gerät. Meine auch bei der 0x0b für den Service-Key.
Datum:
Hallo, ich klinke mich hier auch mal ein, da wir in den nächsten Wochen eine neue GB172 Heizung mit RC35 Steuerung bekommen. Ich denke, dass ist doch EMS-Bus, oder? Ich möchte gern einige Daten der Heizung dauerhaft mitloggen und da bin ich auf diesen Beitrag gestoßen. Was empfehlt Ihr mir, wo ich die Daten abgreife? An der Service-Schnittstelle oder am 2-adrigen Kabel zur RC35? Was brauche ich da an Pegelwandler? Wie ich das verstanden habe verwendet der EMS-Bus 9600 Baud? Sorry, ich bin Windows-Softwareentwickler, werde mir eine passende Windows-Software schreiben, aber von der Elektronik habe ich nicht so eine tiefgreifende Ahnung. Vielleicht kann mir auch jemand so einen Pegelwandler anbieten mit einer seriellen Schnittstelle, wo ich dann "nur noch" meine Software horchen lassen kann. Danke schonmal. Dirk
Datum:
Noch eine andere Frage: Was steckt in dem Original Service-Key? Ich würde den sonst nachbauen oder vielleicht hat den jemand gebraucht abzugeben. Die Software hat mein Heizi als Demo-Version, das würde mir erstmal reichen, bräuchte nur den Service-Key...
Datum:
Hallo, Dirk Janssen schrieb: > Was empfehlt Ihr mir, wo ich die Daten abgreife? An der > Service-Schnittstelle oder am 2-adrigen Kabel zur RC35? Ich habe zuerst mit der 3-Draht Lösung gearbeitet und benutze jetzt die 2-Draht Lösung, die funktioniert soweit. Mich stört aber noch die fehlende galvanische Trennung, weil ich die Heizung nicht mit der Hausinstallation verbinden will. Dirk Janssen schrieb: > Was brauche ich da an Pegelwandler? Wie ich das verstanden habe > verwendet der EMS-Bus 9600 Baud? Du brauchst einen Komparator. Ingo hat die Schaltung weiter oben schon gepostet. Dirk Janssen schrieb: > Noch eine andere Frage: Was steckt in dem Original Service-Key? Ich > würde den sonst nachbauen oder Siehe oben. > vielleicht hat den jemand gebraucht > abzugeben. Die Software hat mein Heizi als Demo-Version, das würde mir > erstmal reichen, bräuchte nur den Service-Key... Tja, wenn es den so "billig" geben würde, würde es diesen Thread nicht geben.
Datum:
Rudi schrieb: > Ich habe zuerst mit der 3-Draht Lösung gearbeitet und benutze jetzt die > 2-Draht Lösung, die funktioniert soweit. Warum hast du dich denn umentschieden? Gibt es da Vorteile? Habe meine "Servicekeylösung" nun am laufen und parse einige Daten mit einem Arduino-Clone (Jeenode) und funke die zu meinem Server. Kann man den Servicekey eigentlich "emulieren"? Wie schmeisst der denn die Daten an den Rechner raus? Steige langsam nicht mehr durch bei der Mischung hier ;-)
Datum:
Fred Granna schrieb: > Rudi schrieb: >> Ich habe zuerst mit der 3-Draht Lösung gearbeitet und benutze jetzt die >> 2-Draht Lösung, die funktioniert soweit. > > Warum hast du dich denn umentschieden? Gibt es da Vorteile? Ein Vorteil (und Grund für mich, die 2-Draht-Variante zu nehmen) ist auf alle Fälle, dass man den Bus irgendwo zwischen Brenner und RC30/35 abgreifen kann. Dadurch hat man keine komisch rumhängenden Kabel - im Keller mag das ja ok sein, bei mir steht die Heizung aber im HWR, da soll es schon ordentlich aussehen ;-)
Datum:
Hallo, Fred Granna schrieb: > Warum hast du dich denn umentschieden? Gibt es da Vorteile? Hauptsächlich wegen der offenen Klappe. Im Keller staubt die schön. Außerdem musste ich immer den Stecker ziehen, damit die Heizungsleute hinter die Abdeckung kommen. Ich suche jetzt eigentlich noch eine Isolationsmöglichkeit für die RX/TX-Leitung. Durch die 2-Draht Lösung gibt es nicht mehr viel Strom. Fred Granna schrieb: > Kann man den Servicekey eigentlich "emulieren"? Wie schmeisst der denn > die Daten an den Rechner raus? Steige langsam nicht mehr durch bei der > Mischung hier ;-) Schau dir die Posts von chris_be und IngoF an, dort steht einiges darüber.
Datum:
Rudi schrieb: > Hallo, > > Fred Granna schrieb: >> Warum hast du dich denn umentschieden? Gibt es da Vorteile? > > Hauptsächlich wegen der offenen Klappe. Im Keller staubt die schön. Ahso. Ich hab gleich einen abgewinkelten Stecker genommen. Klappe ist bei mir also zu :)
Datum:
Hi Fred, kannst Du bitte mal was zu deiner Jeenode-Lösung posten ? Fred Granna schrieb: > Habe meine "Servicekeylösung" nun am laufen und parse einige Daten mit > einem Arduino-Clone (Jeenode) und funke die zu meinem Server. Gruss Guenne
Datum:
Würde ja auch gerne was neues erzählen :o( ... dummerweise funktioniert mein Programm auf dem PIC im MPLAB-Debugger einwandfrei aber nicht im Betrieb. Und meinen Debugmode im PIC selber mit PicKit3 kann ich im MPlab nicht aktivieren. Falls irgendjemand irgendwann eine Idee haben könnte wie man in den Debugmode beim PIC18F258 kommt wäre ich für jeden Hinweis dankbar. Vielleicht verirrt sich ja mal ein PIC-Nutzer in diesen Thread ;o) Rudi schrieb: > Ich suche jetzt eigentlich noch eine Isolationsmöglichkeit für die > RX/TX-Leitung. Durch die 2-Draht Lösung gibt es nicht mehr viel Strom. @Rudi, meintest Du damit eine galvanische Trennung? Wäre das einfachste nicht jeweils ein Optokoppler für die RX und TX-Leitung direkt am Controller? Der Strom für die Sende/Empfangsschaltung sollte ja kein Problem sein... Gruß Ingo
Datum:
Hallo, ich habe keinen PIC aber schau mal dort, evtl. ist es das schon: Beitrag "Debugging mit PICKIT3?" IngoF schrieb: > meintest Du damit eine galvanische Trennung? Wäre das einfachste nicht > jeweils ein Optokoppler für die RX und TX-Leitung direkt am Controller? > Der Strom für die Sende/Empfangsschaltung sollte ja kein Problem sein... Ja, eine galvanische Trennung. Mit LDO und Optokoppler funktioniert es bei mir nicht mehr, der Bus spinnt dann rum (mit der 2-Draht Variante). Mit der 3-Draht Variante habe ich es nur mit einem Funktionsgenerator und externer VCC probiert. Offensichtlich reicht der Strom nicht aus.
Datum:
Hallo, mal etwas Semi-OT. Wurde bei euch in der Logomax schonmal der Lüfter für den Brenner getauscht ? Nach einer längeren Wartungsarbeit gabs nur 6L / 229 und keine Flamme. Der Lüfter ist auch etwas laut, meinte der freundliche Heizungsfachmann. Nach mehreren Versuchen der Heizungsanlage, von Flamme an auf Fehlermeldung, lief es dann irgendwann wieder wie geschmiert. Grüße.
Datum:
Angehängte Dateien:hi rudi, was hast du denn genau für ein gerät? logamax ist nur so eine art familienname für wandhängende heizgeräte. @ all bei der gelegenheit möchte ich mich auch gleich in sachen ems an bord melden. im gegensatz zu den meisten hier, habe ich nicht das ziel daten zu loggen, sondern meinen Brennwertkessel (gb142) durch die vorgabe eine brennerleistung anzusteuern. am ende soll eine außentemperaturgeführte rücklaufregelung dabei herauskommen. ich habe vor das telegramm des moduls em10 zu ermitteln um es dann mit einem avr zu emulieren. das em10 hat die fähigkeit ein ems-heizgerät temperatur- oder leistungsgeführt anzusteuern, wobei es selbst ein 0-10v signal als führungsgröße hat. an dieser stelle auf jeden fall schon mal einen herzlichen dank an die beiden ems-hauptakteure rudi und ingo. soweit wäre ich aus mangel an equipment und know-how nie gekommen. ich arbeite übrigens seit 18 jahren als servicetechniker des werkskundendienstes von buderus. achso ... ich habe mal das bus interface eines moduls mm10 aufgedröselt und zu 'papier' gebracht (siehe anhang). //niffko
Datum:
Niff Ko schrieb: > was hast du denn genau für ein gerät? logamax ist nur so eine art > familienname für wandhängende heizgeräte. Das ist die GB152. Niff Ko schrieb: > achso ... ich habe mal das bus interface eines moduls mm10 aufgedröselt > und zu 'papier' gebracht (siehe anhang). Das ist doch mal etwas. Hast du zufällig Angaben für den maximalen Strom für die einzelnen Komponenten am Bus ? Werden die 5V aus der VREF erzeugt ? Niff Ko schrieb: > am ende soll eine außentemperaturgeführte > rücklaufregelung dabei herauskommen. Du willst über die Temperaturdifferenz Vorlauf/Rücklauf (Wärmeabgabe) den Brenner steuern ? Ohne das Wissen der momentanten Zirkulation wird das nicht funktionieren, es sei denn du zapfst noch einen Wärmemengenzähler an. Wenn ich dich richtig verstanden habe ;-) Danke & Grüße.
Datum:
hi rudi, > Das ist die GB152. das gebläse gehört bei 6L/229 erst mal nicht zu den üblichen verdächtigen. abnormale geräusche kommen in der regel vom lager, hatte ich hin und wieder schon. fehler 6L bedeutet, dass das flammensignal (ionisation) vorhanden war aber dann zusammengebrochen ist. hier hätte man sich bei auftreten des fehlers mal den wert des flammenstromes im monitor anschauen können. evtl. schwächelt deine ionisationselektrode, die zeigen manchmal erst bei längerer auskühlung ihr wahres gesicht. >Hast du zufällig Angaben für den maximalen Strom >für die einzelnen Komponenten am Bus ? negativ. >Werden die 5V aus der VREF erzeugt ? nein. U_REF -> ~0,6V, die geht lediglich auf die komparatoren. 5V kommen vom netzteil des moduls. > Du willst über die Temperaturdifferenz Vorlauf/Rücklauf (Wärmeabgabe) > den Brenner steuern ? Ohne das Wissen der momentanten Zirkulation wird > das nicht funktionieren, es sei denn du zapfst noch einen > Wärmemengenzähler an. Wenn ich dich richtig verstanden habe ;-) du meinst, die abgegebene wärmemenge berechnen und dann eine entsprechende brennerleistung vorgeben? nein. anstatt wie üblich abhängig von der aussentemperatur die vorlauftemperatur auszuregeln, wird bei der rücklaufregelung - du ahnst es bereits - die rücklauftemperatur als führungsgröße benutzt. das hat ein paar vorteile, googel das mal. //niffko
Datum:
Angehängte Dateien:Niffko schrieb: > du meinst, die abgegebene wärmemenge berechnen und dann eine > entsprechende brennerleistung vorgeben? nein. anstatt wie üblich > abhängig von der aussentemperatur die vorlauftemperatur auszuregeln, > wird bei der rücklaufregelung - du ahnst es bereits - die > rücklauftemperatur als führungsgröße benutzt. das hat ein paar vorteile, Die Vorteile sind mir schon klar, aber schau dir mal das Bild im Anhang an. Die Rücklauftemperatur sinkt, da die Thermostate zu gemacht haben, es gibt so gut wie keine Zirkulation mehr. Der Vorlauf fährt brav seine Kurven, durch Mikrozirkulation etc.. Wenn du nun die Rücklauftemperatur als Führungsgröße nimmst, würde der Vorlauf ansteigen ohne nennenswerte Änderung der Führungsgröße (Rücklauftemperatur). Wie willst du das Problem ohne weitere Regelgrößen erschlagen ? Grüße.
Datum:
Gibts eigentlich noch mehr Informationen über die Telegramme des Servicekeys? Habe schon einiges raus (anhand der Listen und PDFs hier). Mir fehlt allerdings z.B. noch die RÜcklauftemperatur.
Datum:
IngoF schrieb: > Na dann hast Du nicht richtig gesucht: > Beitrag "Re: Logamatic 2107 Schnittstelle" > > Gruß > Ingo Hallo und Danke. Das hatte ich auch schon gefunden. Allerdings bekommen ich die Daten für Druck und Rücklauf nicht (nur werte von 128 oder 255 die sich nicht ändern). Die anderen Werte bekomme ich ordentlich raus. Bissl komisch
Datum:
Fred schrieb: > Hallo und Danke. Das hatte ich auch schon gefunden. Allerdings bekommen > ich die Daten für Druck und Rücklauf nicht (nur werte von 128 oder 255 > die sich nicht ändern). Die anderen Werte bekomme ich ordentlich raus. Werden die digitalen Werte an der Anlage richtig angezeigt ?
Datum:
Ja, alles ok. Brennerstatus, Flamme,Zündung, Pumpe HKx, Ventile, Flammenstrom, Kessel-Soll,Kessel-Ist, WW etc.pp. das geht soweit alles. Rudi schrieb: > Fred schrieb: >> Hallo und Danke. Das hatte ich auch schon gefunden. Allerdings bekommen >> ich die Daten für Druck und Rücklauf nicht (nur werte von 128 oder 255 >> die sich nicht ändern). Die anderen Werte bekomme ich ordentlich raus. > > Werden die digitalen Werte an der Anlage richtig angezeigt ?
Datum:
Fred schrieb: > Allerdings bekommen > ich die Daten für Druck und Rücklauf nicht (nur werte von 128 oder 255 > die sich nicht ändern). Die anderen Werte bekomme ich ordentlich raus. > Bissl komisch Hallo Fred, kann dann ja eigentlich nur mit dem Softwarestand Deiner Busteilnehmer zusammenhängen oder mit Deiner Anlage. Wie sieht dass denn bei Dir aus? Gruß Ingo
Datum:
Fred schrieb: > Ja, alles ok. Brennerstatus, Flamme,Zündung, Pumpe HKx, Ventile, > Flammenstrom, Kessel-Soll,Kessel-Ist, WW etc.pp. das geht soweit alles. Ich meinte die beiden Werte die du per ServiceKey nicht richtig siehst.
Datum:
@Ingo F. Wie sieht was bei mir aus? :-) Ist eine Logamax Plus GB172 mit BC10 und RC35. @rudi Was meinst du genau? Die Softwareversionen kann ich erst heute Abend abfragen.
Datum:
Fred schrieb: > @rudi > Was meinst du genau? Zeigt die Anlage den Druck und den Rücklauf richtig an ? Also die beiden Werte bei denen du nur 128 und 255 auf der seriellen Schnittstelle siehst.
Datum:
Rudi schrieb: > Fred schrieb: >> @rudi >> Was meinst du genau? > > Zeigt die Anlage den Druck und den Rücklauf richtig an ? Also die beiden > Werte bei denen du nur 128 und 255 auf der seriellen Schnittstelle > siehst. Ah, das meinst du. Zu finden ist das im Servicemenü der BC10? Muss ich nachher gleich mal schauen.
Datum:
Fred schrieb: > Allerdings bekommen > ich die Daten für Druck und Rücklauf nicht (nur werte von 128 oder 255 > die sich nicht ändern). ... das ist schon o.k. so - der gb172 hat weder rücklauf- noch drucksensor. Fred schrieb: > Ist eine Logamax Plus GB172 mit BC10 und RC35. der bc10 heißt beim 172er bc25 ;-) //niffko
Datum:
Rudi schrieb: > Die Vorteile sind mir schon klar, aber schau dir mal das Bild im Anhang > an. Die Rücklauftemperatur sinkt, da die Thermostate zu gemacht haben, > es gibt so gut wie keine Zirkulation mehr. Der Vorlauf fährt brav seine > Kurven, durch Mikrozirkulation etc.. hmm ... was meinst du mit mikrozirkulation? evtl. die zirkulation im gerät über einen bypass (überströmventil), wenn der heizkreis dicht gemacht hat? deine rücklauftemperatur dürfte sich normalerweise nicht wie von dir beschrieben verhalten. der rücklauffühler sitzt innerhalb des bypasskreises, die rücklauftemperatur müsste also bei geschlossenen thermostatventilen mit nur geringem delta der vorlauftemperatur folgen. Rudi schrieb: > Wie willst du das Problem ohne weitere Regelgrößen erschlagen ? das problem stellt sich bei mir nicht. ich habe die heizkreise meiner fußbodenheizung abgeglichen und die heizkennlinie entsprechend angepasst. so benötige ich keine zonenventile, die heizkreise sind also immer offen. //niffko
Datum:
Niffko _ schrieb: > hmm ... was meinst du mit mikrozirkulation? evtl. die zirkulation im > gerät über einen bypass (überströmventil), wenn der heizkreis dicht > gemacht hat? Das warme Wasser steigt nach oben und Zirkuliert oder ein Ventil ist nicht 100%ig zu etc.. Das meinte ich damit. Meine Temperatursensoren an den Rohren sehen ab und zu etwas zuviel bzw. sind nicht träge genug. > deine rücklauftemperatur dürfte sich normalerweise nicht > wie von dir beschrieben verhalten. der rücklauffühler sitzt innerhalb > des bypasskreises, die rücklauftemperatur müsste also bei geschlossenen > thermostatventilen mit nur geringem delta der vorlauftemperatur folgen. Das ist eine Rücklauftemperatur von 3 Heizkreisen, ob es einen Bypass gibt, kann ich nicht sagen. Wie es sich mit dem Hauptrücklauf verhält, wenn alle 3 Heizkreise dicht gemacht haben, weiss ich noch nicht. Ich werde das demnächst mal ausprobieren. Grüße.
Datum:
Rudi schrieb: > Das ist eine Rücklauftemperatur von 3 Heizkreisen ... ich war davon ausgegangen, dass es sich um einen ems-wert handelt. dann hätte es nur der kesselrücklauf sein können, da keine heizkreisrückläufe erfasst werden. ob an deinen heizkreisen überströmventile vorhanden sind, weiß ich natürlich nicht. deine gb152 jedenfalls ist mit einem internen überströmventil ausgestattet. ich habe nur einen ungemischten heizkreis, daher ist kesseltemperatur gleich heizkreistemperatur und ich kann den ems-wert des kesselrücklaufes als führungsgröße benutzen. //niffko
Datum:
Hallo, ich hab seit ein paar Monaten eine GB 162 und würde gern zur Optimierung der Anlage die Daten zumindest wochenweise mit einem alten Notebook aufzeichnen und mit der Buderus Software auswerten. Laut Buderus kostet der dazu erforderliche Service Key 214.-€. Wenn ich mir den Thread so durchlese scheinen es einige unter euch geschafft zu haben einen "ServiceKey" selbst zu basteln. Funktionieren diese Lösung tatsächlich so, dass die gleichen Monitorwerte wie mit dem original ServiceKey ausgelesen werden können ? Mit welchen Kosten ist so ein Eigenbau zu realisieren, sprich rechnet sich der Aufwand im Vergleich zu Originalteil ? Viele Grüße buddi
Datum:
Hallo, buddi schrieb: > Funktionieren diese Lösung tatsächlich so, dass die gleichen > Monitorwerte wie mit dem original ServiceKey ausgelesen werden können ? Nein, dort siehst du direkt den EMS-Bus. > Mit welchen Kosten ist so ein Eigenbau zu realisieren, sprich rechnet > sich der Aufwand im Vergleich zu Originalteil ? Ich denke nicht mehr als 10€ für die Bauteile.
Datum:
Hallo, > Funktionieren diese Lösung tatsächlich so, dass die gleichen > Monitorwerte wie mit dem original ServiceKey ausgelesen werden können ? Nein, dort siehst du direkt den EMS-Bus. ...ähm - wie muss ich mir das vorstellen, welche Daten bekomm ich da geliefert und werden die mit der Buderus-Software angezeigt ? > Mit welchen Kosten ist so ein Eigenbau zu realisieren, sprich rechnet > sich der Aufwand im Vergleich zu Originalteil ? Ich denke nicht mehr als 10€ für die Bauteile. ...bekomm ich das als normaler Bastler mit einer kleinen Anleitung hin ? Gruß buddi
Datum:
Hallo, buddi schrieb: > ...ähm - wie muss ich mir das vorstellen, welche Daten bekomm ich da Die Daten/Telegramme vom EMS-Bus (siehe weiter oben). Mit Service Key sieht es etwa so aus: EMS-Bus (EMS-Telegramme) -> ServiceKey (Service Key Protokoll) -> Buderus Software oder Terminal Mit dem Nachbau so: EMS-Bus (EMS-Telegramme) -> Nachbau (EMS-Telegramme) -> Terminal > geliefert und werden die mit der Buderus-Software angezeigt ? Nein, die versteht das Format nicht direkt, nur wenn die Daten aufbereitet werden, wie durch den ServiceKey. > ...bekomm ich das als normaler Bastler mit einer kleinen Anleitung hin ? Ich denke das sind alles Teile die du bei R. bestellen kannst. Es gibt hier im Thread mindestens 3 Schaltungen. Das EMS-Protokoll ist hier auch etliche male beschrieben worden, zumindestens alle wichtigen Teile zur Überwachung der aktuellen Werte und Einstellungen. Grüße.
Datum:
Nabend, ich habe jetzt das Senden an die Anlage hinbekommen :=) ServiceKey ist in der Geräteliste aufgeführt, also alles bingo :-D Jetzt versuche ich die ganze Sache mit der ECO-SOFT zu verbinden. Dazu schnüffel ich grad ein wenig am COM-Port des Rechners rum. Nun meine Fragen: 1. Ist es richtig das die Software als erstes ein 0x02 sendet? 2. Wenn ich auf dieses 0x02 mit 0x10 antworte bekomme ich 0x00 0x00 0x10 0x03 0x13; Was bedeuten diese Werte überhaupt? 3. Auf den obigen String antworte ich mit 0x10 0x02. Daraufhin bekomme ich 0x10 von der Software zurück. Da ich dann nichts mehr antworte, gibt mir die Software die Fehlermeldung "Keine ComKarte gefunden !!!" Woher weiss ich eigentlich das ein "Telegramm" von der Software komplett gesendet wurde? Kommt z.B. nach "0x00 0x00 0x10 0x03 0x13" ein UART-Break? Trennzeichen habe ich da nirgends :-/
Datum:
Das sollte die Prozedur 3964R sein. Habe mal meine Erkenntnisse aus den Logs von Chris_be hier gepostet: Beitrag "Re: Logamatic 2107 Schnittstelle" Beitrag "Re: Logamatic 2107 Schnittstelle" generell kommt ein 04 davor. Bei einzelnen geänderten Werten zusätzlich noch eine 20. Die Originalsoftware fragt erst alle Seriennummern der Busteilnehmer und anschließend alle Telegramme ab. Dannach könnte man mit den Monitorwerten, die ja änderungen der einzelnen Bytes im Telegramm sind, alle Änderungen verfolgen, Gruß Ingo
Datum:
Hm, das hatte ich schon gesehen. Derzeit sende ich allerdings nichts an den Bus sondern habe als Gegenstelle zur ECO-SOFT einen Atmega zur Analyse. Das erste was ich von der ECO-SOFT bekomme ist einfach nur 0x02. Mehr nicht, auch leider keine Trennzeichen. Wenn ich darauf nicht antworte kommen noch 2x "0x02" nacheinander und dann 0x15 (ist wohl der Abbruch). Das mit den nicht vorhandenen Telegrammstrennern stört mich ein wenig. Wenn ich das dann später auf den Bus schicke muss ich doch wissen wann ich ein BREAK setzen muss oder?!
Datum:
Das ist das Handshake vom 3964R-Protokoll. Es gibt dort kein Break. Das wird alles über das 3964R-Protokoll gemacht. Einfach mal googeln. Die eigentlichen Daten kommen dann erst. Erst mal fragt die Ecosoft alle Busteilnehmer nach den Serienummern und den Telegrammen ab. Und wenn auf die Abfrage keiner antwortet wird die Eco-Soft auch wohl keine Lust mehr haben weiter zu reden. Oder habe ich irgendwas falsch verstanden.? Gruß Ingo
Datum:
Ah! Okay, jetzt hats "klick" gemacht! 0x02 ist STX, 0x10 ist DLE, also die Antwort. Dann kann ich ja nun weitermachen :-D
Datum:
So, das war schonmal recht erfolgreich. - EMS-Verbindung Heizung <-> uC läuft - Verbindung PC(Ecosoft) <-(3964R)-> uC läuft Nun aber wieder ein paar Fragen g. Ich möchte ja nun beides zusammenbringen :) Wenn ich die Kommunikation in der Ecosoft starte sendet diese als erstes "0x00 0x00". Darauf Antworte ich dann mit "0x00 0x00 0x00 0x00 0x53 0x02 0x31". Nun hat die Ecosoft schomal meinen "ServiceKey" identifiziert. Laut dem Log hier aus dem Forum (serial_logamatic_0911_.txt) müsste ich dann noch folgendes an die Ecosoft schicken?! <RX>00 00 01 00 00 00 03 00 01 03 <RX>00 00 02 00 08 0A 0C 0E 10 12 14 16 18 1A 1C 1E Das Abfragen der werte beginnt offenbar ja erst danach: <TX>04 08 07 .. .. ......
Datum:
TX: 00 00 RX: 00 00 00 00 53 02 31 RX: 00 00 01 00 00 00 03 00 01 03 RX: 00 00 02 00 08 0A 0C 0E 12 14 16 18 1A 1C 1E TX: 04 08 07 RX: 04 08 07 00 0B 01 01 02 00 00 00 00 00 00 00 00 00 00 00 TX: 04 08 02 TX: 04 09 02 RX: 04 08 02 00 48 02 04 4B 02 14 00 00 00 RX: 04 09 02 00 44 02 00 Also ich vestehe dass so dass mit der "00 00" alle Telegrammtypen vom Gateway selber abgerufen werden. Fragt sich nur was passiert wenn man diese Telegramme weglässt. Vielleicht steht ja auch drin welche Busteilnehmer am Bus hängen. Oder muss man bei der EcoSoft vorher angeben welche Busteilnehmer in der Anlage sind? Irgend eine Bedeutung müssen die Werte ja haben. Notfalls einfach mal ausprobieren ob sich die Ecosoft dann anders verhält wenn man andere Werte oder keine Werte schickt. Wenn die "00 00 00" gekommen wäre würde sich die Ecosoft ja nur für die Seriennummer interessieren. Also müsstest Du demnach auch alle Telegramme schicken... Gruß Ingo
Datum:
Man KANN wohl vorher angeben welche Geräte verbaut sind. Man muss aber nicht. Was ich schonmal gefunden habe: 00 00 00 00 53 02 31 0x53 = ServiceKey, 0x52 = "EcoTool" 0x02 = DEC 2 = Version 2 0x31 = DEC 49 = Version.49 Ich sende da 0x53 0x00 0x63, da meint die EcoSoft dann ich habe einen Servicekey in der Version 0.99 :-) Ich probier da morgen mal weiter!
Datum:
Hallo an alle, ich habe es endlich geschafft meine Software für die Hardware so langsam in den Griff zu bekommen ;-) Ich möchte eine Platine für meine Hardware fertigen lassen. Darauf befindet sich ein PIC18F2585. Die Hardware soll dann über DIP-Schalter konfiguriert werden können. Je nach Hardwarebestückung und DIP-Schalterstellung gibt es verschieden Modes: 1) nur mitlesen und ausgeben der Telegramme über die serielle Schnittstelle. Ausgabe im Textmodus oder als RAW-Daten mit "0xaa 0x55 0xaa 0x55" anstelle des <Break> was auf dem EMS-Bus. Beim Textmodus wird ein CR&LF gesendet damit nur ein Telegramm in einer Zeile steht. 2) mitlesen und senden. Dazu würden dann zwei Platinen benötigt und die Kommunikation läuft über den CAN-Bus. Hat den Vorteil dass man dann später mehrere Module anschließen könnte. Z.B. ein eigenes Display für Fehleranzeige oder alles andere. Ich würde die Platine fertigen lassen. Es gibt auch eine möglichkeit die Platinen schon fertig bestücken zu lassen. Die Platinen gäb es dann zum Selbstkostenpreis+Versand Wer hätte interesse daran. Den Preis müsste ich noch erst in Erfahrung bringen. Dazu wäre ganz interessant welche Möglichkeiten Ihr habt und was Ihr für eine bestückte SMD-Platine ausgeben möchtet oder könntet. Will nichts verdienen... *) Firmwäre brennen *) Platine bestücken/löten (DIP) *) Platine bestücken/löten (SMD) Allerdings ist die Software für den CAN-Bus noch in der Entwicklung und würde die Platinen natürlich erst fertigen lassen wenn die Software fehlerfrei funktioniert. Die Preise für die Bestückung lohnt sich allerdings erst ab einer größeren Menge weil eine einzelne Platine sonst 200€ kosten würde und sinnlos wäre. Wer will kann ja mal dazu hier posten. Wenn es an die Bestellung geht gibt dann hier noch mal eine e-Mail oder URL. Kann allerdings nichts über den Zeitplan sagen. Ist eben nur ein Hobby von mir und habe nicht immer Zeit um daran zu arbieten. Gruß Ingo Die Emulation eines ServicKey wird erst mal nicht funktionieren aber vielleicht auch irgendwann mal damit funktionieren.
Datum:
Servus Ingo, ja, das klingt gut :-) An einer solchen, möglichst unbestückten Platine hätte ich Interesse. Da ich schon was älter bin und gerne zittere ;-), wäre mir persönlich eine dip Version lieber. Aber ich würde auch bei einem smd Board nicht nein sagen, abhängig vom Preis natürlich. Danke für Deine Mühe und Arbeit und einen guten Rutsch an alle EMS-Bus-Freaks ;-).
Datum:
Guten Morgen und frohes neues Jahr :) @ingo: Das hört sich interessant an! An der emulation eines Servicekeys arbeite ich ja grad. Das ganze läuft derzeit auf einem Arduino-Klon. Auf EMS-Seite nutze ich einen i2c-UART. Der kann per Registersetting astreine Breaks auf den Bus zaubern :-) Die Kommunikation über 3964R läuft super. Ich habe offenbar noch ein paar Probleme beim Senden auf den EMS-Bus. :-( Die Anmeldung an das System als ServiceKey (Warten auf 0x8B und dann Antwort mit 0x08) funktioniert. Probleme gibt es aber wenn es weitergeht. Die Buderus-Software versucht ja ersteinmal die angeschlossenen Bausteine zu identifizieren (per 0x04 <geräteid> 0x02). Bei den Abfragen bekomme ich aber nur Müll zurück. Worauf muss ich beim Senden achten? >Nach jedem gesendeten Zeichen musst du den Bus auslesen, >um das Echo (dein gesendetes Zeichen) zu verifizieren. Wenn der Bus auf >Low liegt, kann man wohl nicht senden. Ich muss also mit dem Senden warten bis der Bus frei ist. Wie erkenne ich das am besten in der Software? Warten bis ein Break auf dem Bus auftaucht (also ein Abschluss eines Telegramms auf dem Bus) und dann einfach lossenden? Zusatzfrage: Mein Sender läuft derzeit über einen OP der das TX-Signal vom UART invertiert und dann über einen Transitor der eine Z-Diode "durchschaltet". Ist das hier noch "state-of-the-art" oder gibt es besseres?
Datum:
Fred Granna schrieb: > Die Anmeldung an das System als ServiceKey (Warten auf 0x8B und dann > Antwort mit 0x08) funktioniert. Na das ist vermutlich ein Tippfehler. Antworten müsstest Du auf das Polling vom Servicekey 0x8b mit Der ServiceKey Adresse 0x0B und nicht 0x08 ;o) Fred Granna schrieb: > Probleme gibt es aber wenn es weitergeht. Die Buderus-Software versucht > ja ersteinmal die angeschlossenen Bausteine zu identifizieren (per 0x04 > <geräteid> 0x02). Bei den Abfragen bekomme ich aber nur Müll zurück. Wichtig wäre zu wissen was Du bekommst und was Du sendest. Vermute mal dass Du auf das Polling 0x8b mit 0x0b beantwortest und dann das Telegramm schickst. Das ist meiner Meinung nach falsch. Der Busmaster 0x08 sendet das Polling und übergibt somit die Kontrolle jeweils einem einzigen Slave mit der Adresse. Und wartet eine bestimmte Zeit. Wenn nichts kommt existiert der Busteilnehmer nicht und wird erst mal für eine Zeit nicht mehr abgefragt. Wenn der Busteilnehmer beim nächsten mal abgefragt bekommt er die Adresse des Slave zurück. Der Busmaster weiss jetzt dass der Busteilnehmer vorhanden ist und und fragt den Busteilnehmer jetzt viel öfter ab. Wenn der Slave Daten zum senden hat antwortet er wieder mit der eigenen Adresse. Dann sendet er die Zieladresse. Es gibt dann folgende drei Möglichkeiten für eine Zieladresse: 1) 0x00 ... Telegramm ist an alle gerichtet er will keine Antwort. 2) <Busadresse> (z.B. 0x08) ... Telegramm ist an einen einzigen Empfänger gerichtet und keine Antwort erwartet. 3) <Busadresse + 0x80) ... Telegramm ist an einen einzigen Empfänger gerichtet und eine Antwort wird erwartet. Danach wird dann die Telegrammadresse gesendet. Wenn der Slave jetzt Daten mitsendet folgen diese. Das erste Byte ist dann das Offset des Telegramms. und danach folgen die Daten mit der Prüfsumme. Wenn der Slave seine Kontrolle über den Bus abgibt weil alle Telegramme gesendet wurden sendet er anschließend noch ein <Break> Dann geht das Polling weiter bis zum anderen Busteilnehmer. Dieser kann dann antworten. Es kann auch sein dass der Busteilnehmer auch erst später antwortet und nicht sofort auf das nächste Polling mit der Antwort reagiert. Also in Deinem Fall würde ich erst mal folgendes Versuchen: RX: 0x8b <Break> TX: 0x0b <Break> . . . RX: 0x8b <Break> TX: 0x0b 0x88 0x02 0x00 <"CRC"> <Break> TX: 0x0b <Break> . . . Vermutlich kann man auch im ersten Durchgang sofort mit dem Telgramm antworten und muss nicht erst mal nur seine Anweseheit zeigen. Weiss leider nicht mehr ob der Busmaster sofort mit dem verstärkten Polling anfängt oder erst drei mal auf eine Antwort vom Busteilnehmer erwartet. Ist schon zu lange her... Wenn das nicht so will wie von mir erwartet würde ich auch mal mit Zieladresse ohne das gesetzte "Antwortbit" versuchen (0x08) Kann auch sein dass man das Offset (0x00) bei einer Abfrage nicht mitsenden muss oder darf. ALso TX: 0x0b 0x08 0x02 0x00 <"CRC"> <Break> TX: 0x0b 0x08 0x02 <"CRC"> <Break> Es kann auch sein dass man nicht wirklich noch zusätzlich mit einer leeren Antwort am Schluss die Übertragung beenden muss und nach einer bestimmten Zeit einfach der nächste Busteilnehmer angepollt wird. Aber wenn mann Pech hat muss man zusätzlich noch irgendwelche Daten übergeben. Habe gerade mal aus meinem Log ohne Polling die folgen Zeilen gefunden: 10 89 29 00 01 90 09 10 29 00 6B DF 10 08 35 00 01 01 00 10 88 14 00 03 6E 08 10 14 00 39 AA 1C EC Meine Vermutung ist aber eher dass z.B. beim ersten Telegramm die RC30 (0x10) die 0x09 auffordert im Telegramm 0x29 mit dem Offset 0x00 das Byte auf 0x01 zu setzen. Wird dann wohl ein Steuerparameter sein. Poste doch einfach mal Deine Versuche und die Antwort. Habe selber noch keine "echten" Sendeversuchen unternommen. Habe nur mal alle Adressen beantwortet um die Service-Key Adresse herauszufinden. Habe Dummerweise erst nach der RC30 angefangen zu suchen und die 0x0b also übersehen. Fred Granna schrieb: > Worauf muss ich beim Senden achten? > >>Nach jedem gesendeten Zeichen musst du den Bus auslesen, >>um das Echo (dein gesendetes Zeichen) zu verifizieren. Wenn der Bus auf >>Low liegt, kann man wohl nicht senden. > > Ich muss also mit dem Senden warten bis der Bus frei ist. Wie erkenne > ich das am besten in der Software? Warten bis ein Break auf dem Bus > auftaucht (also ein Abschluss eines Telegramms auf dem Bus) und dann > einfach lossenden? Ups ich glaube das habe ich schon mit meiner viel zu ausführlichen Antwort erschlagen ;o) Fred Granna schrieb: > Zusatzfrage: Mein Sender läuft derzeit über einen OP der das TX-Signal > vom UART invertiert und dann über einen Transitor der eine Z-Diode > "durchschaltet". Ist das hier noch "state-of-the-art" oder gibt es > besseres? Das war auch die Methode die ich das letzte mal beim scannen der Busadressen verwendet habe. Habe aber danach herausgefunden dass die RC30 und andere "Externe" Busteilnehmer nicht so "brutale" Sendeversuche unternehmen, sondern nur der Busmaster 0x08 und evtl die 0x09 die am "internen" Bus hängen. Beitrag "Re: Logamatic 2107 Schnittstelle" Beitrag "Re: Logamatic 2107 Schnittstelle" Es reicht also eine schaltbare Stromquelle mit ~40mA (wenn ich mich recht erinnere) dafür zu nehmen. Der nächste Versuch ist also bei mir eine Sendestufe bei der der TX-Pin auf die Basis vom NPN-TRansistor geht und einen Emistterwiderstand gegen Masse von 80-100 Ohm. Der Kollektor geht dann direkt mit an den EMS-Bus. Denke das dürfte schon ganz gut gehen. Rudi hat wohl schon sowas ähnliches mit einem FET aufgebaut.... steht irgendwo in diesem Thread ;o) Poste doch mal Deine Versuche und das Ergebnisse... Bin halt neugierig :o) Gruß Ingo
Datum:
Ui, danke für diese "Ausarbeitung" ;-) Das bedeutet ja, wenn ich das richtig verstehe, das der Busmaster durch das Polling eine Art "Sendefreigabe" weiterreicht. Also muss ich mit dem Senden so lange warten bis der Busmaster mir diese Freigabe per "0x8B <break>" erteilt. Das mit dem TX ohne Z-Diode werd ich auch mal ausprobieren. Sobald das Senden nicht mehr in einem Bus-Chaos endet werd ich berichten ;-)
Datum:
Fred Granna schrieb: > Das bedeutet ja, wenn ich das richtig verstehe, das der Busmaster durch > das Polling eine Art "Sendefreigabe" weiterreicht. So könnt man das auch formulieren. Mann kann auch in den Telegrammdaten eine längere Pause gesehen. Die RC30 bei mir legt auch mal nach einem Datenhäppchen eine 100ms Pause ein. Fred Granna schrieb: > Sobald das Senden nicht mehr in einem Bus-Chaos endet werd ich berichten > ;-) Ich bin gespannt.... Werde meine Senderversuche erst unternehmen wenn der Empfang und übertragung über CAN-Bus erst mal problemlos läuft. So weit scheint der Weg nicht mehr zu sein :o) Was ich ncoh vergessen habe. Das Telegramm was man sendet muss man zwischen den Bytes eine Pause von einem Byte machen damit der Busmaster dieses Byte wiederholen kann (auf 10 V heruntergezogen). Er spielt also so eine Art Repeater damit auch der in der letzte Reihe auch noch alles mitbekommt. Also genauso wie beim Polling auch. Vielleicht macht es ja Sinn später nach jedem gesendeten Byte die eigenen Daten zu vergleichen. Wenn man irgendwann mal die Schaltung über den EMS-Bus speisen möchte sollte man die Strombelastung gut Buffern damit nicht ausvershen Daten gesendet oder der Bus gestört wird. Gruß Ingo
Datum:
Hallo Leute, kurze Zwischenfrage zum Thema Sendestufe: Warum groß herum experimentieren, wenn eine original Buderus-Lösung bekannt ist? Beitrag "Re: Logamatic 2107 Schnittstelle" Wenn es etwas gibt, was gegen diese Variante spricht, würde mich das schon interessieren. Gesundes neues Jahr, //niffko
Datum:
Niffko _ schrieb: > Wenn es etwas gibt, was gegen diese Variante spricht, würde mich das > schon interessieren. Ups, Die Lösung habe ich komplett vergessen :-) Also ich hatte versucht die RC-30 Sendestufe zu entflechten. Ist mir allerdings nicht gelungen (Multilayer Platine) Bin dann zu der gerade geposteten Lösung gekommen. Allerdings ist diese Lösung auch so etwa der selbe Weg.... Bei der Buderus-Lösung sind vier 910 Ohm Wiederstände parallel und haben also einen Gesamtwiderstand von 227 Ohm. Der Bus wird also mit ~60mA belastet. Das wäre auf meine Schaltung übertragen also rechnerisch ein Emitterwiderstand von ~71 Ohm (68 Ohm). Den LM393 habe ich zufällig auch in meiner Schaltung und reinzufällig auch noch eine Hälfte frei. :o) Spricht also nichts dagegen diese zu übernehmen. Der OP soll wohl noch dafür sorgen dass man einen saubereren Pegel zur Ansteuerung hat. DANKE für den Hinweis :o) Die Buderus-Empfangsschaltung muss ich mir irgendwann noch mal genauer ansehen. Vermutlich wird die besser sein... Noch mal zu dem Senden auf dem EMS-Bus. Habe gerade noch mal im Log mit Polling einen kleinen Ausschnitt gesehen dass die RC30 bei mir erst das Telegramm sendet und dannach dann eine leere Antwort. (0x10 <Break>) Also beendet die RC30 Ihre Buskontrolle mit einem eigenen leeren Telegramm am Ende. Gruß Ingo
Datum:
Fred Granna schrieb: > Ich muss also mit dem Senden warten bis der Bus frei ist. Wie erkenne > ich das am besten in der Software? Warten bis ein Break auf dem Bus > auftaucht (also ein Abschluss eines Telegramms auf dem Bus) und dann > einfach lossenden? Wenn du ein Zeichen sendest wird dieses Zeichen vom Master wiederholt, danach kannst du das nächste Zeichen senden oder eben ein Break für die Busfreigabe von deiner Seite. Das sollte in etwa so aussehen: RX: 8B BRK TX: 08 RX: 08 TX: Zeichen RX: Zeichen .... TX: BRK RX: BRK Grüße.
Datum:
Rudi schrieb: > Wenn du ein Zeichen sendest wird dieses Zeichen vom Master wiederholt... Stimmt.. ist wohl in der Textflut untergegangen :) Ingo F. schrieb: > Das Telegramm was man sendet muss man zwischen den Bytes eine Pause...
Datum:
Rudi schrieb: > Wenn du ein Zeichen sendest wird dieses Zeichen vom Master wiederholt, > danach kannst du das nächste Zeichen senden oder eben ein Break für die > Busfreigabe von deiner Seite. ... ist Dir bekannt wie groß der Zeitraum zwischen einem Echo und dem nächsten gesendeten Byte sein darf, bevor das Ganze in's Timeout rennt? //Niffko
Datum:
Angehängte Dateien:Niffko _ schrieb: > ... ist Dir bekannt wie groß der Zeitraum zwischen einem Echo und dem > nächsten gesendeten Byte sein darf, bevor das Ganze in's Timeout rennt? Pausen von 100ms nach der ersten Antwort mit der eigenen Adresse sind kein Problem: Beitrag "Re: Logamatic 2107 Schnittstelle" (Bild1) Also Pausen von 190ms gibt es mehrere, 200ms habe ich noch keine gesehen. Bei mir jeweils bei der RC30 die solche Pausen einlegt.
Datum:
Ingo F. schrieb: > Pausen von 100ms nach der ersten Antwort mit der eigenen Adresse sind > kein Problem: ja, danke ... dann werde ich wohl auch einfach mit einem 1 Byte + x Delay senden, anstatt extra den Bus zu überwachen. //Niffko
Datum:
Gesundes neues Jahr erstmal ;-) Niffko _ schrieb: > ja, danke ... dann werde ich wohl auch einfach mit einem 1 Byte + x > Delay senden, anstatt extra den Bus zu überwachen. Besser wäre senden und auf RX warten mit einem Timeout. Wenn das empfangene Byte nicht identisch zum gesendeten Byte ist, musst du auf das nächste 0x8b BRK warten, ansonsten kann die Anlage in eine Störung gehen -> keine Heizung ;-). Ein Delay wäre dann nicht mehr notwendig und mit einem RX-Timeout wärst du auch gleich schneller beim Senden, da der Master in der Regel relativ schnell antwortet.
Datum:
Rudi schrieb: > Besser wäre senden und auf RX warten mit einem Timeout. Hmm ... da stehe ich jetzt etwas auf dem Schlauch. Also, ich sende ein Byte, der Master repeatet und bevor ich das nächste Byte sende, warte ich auf ... was? Könntest Du mich da noch mal erhellen? Rudi schrieb: > ... ansonsten kann die Anlage in eine Störung > gehen -> keine Heizung ;-). ... glaube ich nicht, das würde die CRC dann schon richten. //Niffko
Datum:
Niffko _ schrieb: > ja, danke ... dann werde ich wohl auch einfach mit einem 1 Byte + x So groß muss das Timeout ja nicht sein. Meistens kommt die Antwort ohne Pause oder unter einer Bitlänge. Zwei Bit reicht immer. Mann müsste einfach sofort das Byte einlesen und vergleichen. Das ist vermutlich einfacher als ein Delay. Bei einem Fehler sofort mit Break abbrechen und nochmal neu senden. Denke das dürfte kein Problem sein. Ab und zu senden die Busteilnehmer ja auch zwei Telegramme hintereinander. Meine RC30 habe ich schon mal im Log dabei erwischt wie sie ein Telegramm widerholt hat :o) Bei einem erneuten Fehler würde ich dann aufs zweite Polling warten. Rudi schrieb: > Besser wäre senden und auf RX warten mit einem Timeout. Na das ist eine gute Idee. Hätte erst mal keins eingebaut.
Datum:
Niffko _ schrieb: > Hmm ... da stehe ich jetzt etwas auf dem Schlauch. Also, ich sende ein > Byte, der Master repeatet und bevor ich das nächste Byte sende, warte > ich auf ... was? Könntest Du mich da noch mal erhellen? Ups die Antwort hatte ich noch nicht gesehen.. Sicherlich würde es reichen auf 12Bitlängen zu warten. Würde ich aber nur als Notlösung ansehen. Am besten auf die Widerholung warten. Wenn nach zwei Bitlängen keine Antwort kam unterwegs ist dann abbrechen und noch mal neu senden. vermutlich bekommt man aber nicht mit wenn der UART schon ein Bit empfangen hat. Als Timeout wurde ich dann 14 (vielleicht 15) Bitlängen nehmen falls die MC10 mal nichts wiederholen sollte.
Datum:
Niffko _ schrieb: > und bevor ich das nächste Byte sende, warte > ich auf ... was? Vielleicht noch genauer auf Deine Frage. Wenn der Master wiederholt dann einfach das nächste Byte senden. Rudi meinte das Timeout für den Fall das der Master nicht antwortet. Gruß Ingo
Datum:
IngoF schrieb: > Rudi meinte das Timeout für den Fall > das der Master nicht antwortet. Ah jetzt ja ... das war der entscheidende Hinweis, danke. Wobei es bei mir nicht so tragisch wäre, wenn ein Telegramm mal nicht ankommt, da ich sie für die Leistungssteuerung eh' periodisch versende. //Niffko
Datum:
Angehängte Dateien:Hallo Leute, nachfolgend mal meine Variante des RX-Zweiges als Anregung für eigene Lösungen. Die Grundidee ist, zur Signalgewinnung den internen Analog Comparator eines AVR's zu nutzen und diesen dann mit einer Soft-UART mit FIFO zu verheiraten. Letzteres stellt in sofern kein Problem dar, da es Soft-UART Lösungen gibt, die über Input Capture eines Timers getriggert werden und der Ausgang des Analog Comparators so konfiguriert werden kann, dass er besagten Input Capture auslöst. Die Vorteile liegen auf der Hand: der externe Comparator entfällt und man hat den Hard-UART für die Kommunikation mit dem PC frei. Da man zur Erzeugung eines Breaks eh' Hand anlegen muss, ist so ein Soft-UART diesbezüglich auch nicht gerade unpraktisch. Externe Beschaltung siehe Anhang. Empfehlenswerter Soft-UART mit FIFO: Beitrag "Software UART mit FIFO" //Niffko
Datum:
Niffko _ schrieb: >> ... ansonsten kann die Anlage in eine Störung >> gehen -> keine Heizung ;-). > ... glaube ich nicht, das würde die CRC dann schon richten. Jein, wenn du die anderen Teilnehmer zu oft störst, werden diese einfach abgemeldet und die Anlage geht auf Störung, wenn z.B. der Brenner verschwunden ist. Aus diesem Grund muss auch jedes z.B. 0x8B BRK beantwortet werden. Die genaue Anzahl der tolerierten Fehler kenne ich nicht, müsste man mal austesten. Niffko _ schrieb: > Da man zur > Erzeugung eines Breaks eh' Hand anlegen muss, ist so ein Soft-UART > diesbezüglich auch nicht gerade unpraktisch. Externe Beschaltung siehe > Anhang. Damit verbaust du dir eine Entkopplung von E-Heizungskreis und E-Hausnetz. Ich würde die Konvertierung von den "analogen" Signalen auf digitale Signale so einfach wie möglich halten, sprich über eine passive Schaltung. Ein weiterer Nachteil einer Soft-Uart ist die extreme CPU-Last, da jede Flanke/jedes Bit vergoldet wird. Grüße.
Datum:
Niffko _ schrieb: > nachfolgend mal meine Variante des RX-Zweiges als Anregung für eigene > Lösungen. Eigentlich auch eine gute Lösung. Allerdings ist mir ein externer Komperator doch irgendwie lieber. Und sooo viel kostet der auch nicht. Sieht gefährlich aus. Würde den Gleichrichter als Verpolschutz dringend wieder reinnehmen. Wenn der Bus verpolt angeschlossen wird gibt es zwei Probleme: 1) Der Komperator funktioniert nicht wie gewünscht. 2) Die BAT46 schließt den EMS-Bus kurz. Habe keine Ahnung was die BAT46 soll. Vermute mal dass sie die Schaltung vor Überspannungen vom EMS-Bus schützen soll.
Datum:
Angehängte Dateien:Ich habe mir jetzt nochmal einige unbekannte Werte vom EMS-Bus angesehen. Erkennt jemand den Zusammenhang von Nachricht: 08 00 19 Index 13 und der Brennerleistung 08 00 18 Index 8 ? Anbei ein Plot der beiden Werte.
Datum:
Hi Rudi, das sieht mir nach der Modulation der internen Gerätepumpe aus. Wird in Prozent angegeben, bezieht sich auf die Drehzahl und wird abhängig von der Brennerleistung variiert. Wenn ich mich richtig erinnere ist die minimale Pumpenmodulation bei deinem Gerät 55% - sollte also passen. //Niffko
Datum:
Rudi schrieb: > Jein, wenn du die anderen Teilnehmer zu oft störst, ok ... stattgegeben. > ... werden diese einfach abgemeldet und die Anlage geht auf Störung, Was wiederum nicht so tragisch wäre. Kommunikationsfehler generieren im EMS-System nur blockierende Störungen, keine verriegelnden. D.h. die Anlage geht nach Wiederherstellung der Kommunikation wieder in Betrieb. Hilft natürlich nicht wenn die Störungen im Minutentakt auftreten ... schon klar. > Aus diesem Grund muss auch jedes z.B. 0x8B BRK beantwortet werden. hmm ... 0x8B wird bei mir definitiv nicht beantwortet. > Damit verbaust du dir eine Entkopplung von E-Heizungskreis und > E-Hausnetz. Ich würde die Konvertierung von den "analogen" Signalen auf > digitale Signale so einfach wie möglich halten, sprich über eine passive > Schaltung. Wobei letzteres aufgrund der geringen Strombelastbarkeit ja offensichtlich nicht so einfach ist. Mal abgesehen davon, dass in meinem Fall eine Trennung nicht notwendig ist (Heizungsregelung), was spricht dagegen, den Sklaven in das Heizungsnetz zu integrieren und von ihm aus entkoppelt zu kommunizieren? > Ein weiterer Nachteil einer Soft-Uart ist die extreme CPU-Last, da jede > Flanke/jedes Bit vergoldet wird. Hast' ja prinzipiell recht, wird aber durch einen interrupt-beschickten FIFO schon deutlich entschärft. Außerdem läuft man dann nicht Gefahr, dass der AVR beim Empfangen und Weiterleiten der 9600baud Daten, an Langeweile stirbt. IngoF schrieb: > Sieht gefährlich aus. Würde den Gleichrichter als Verpolschutz dringend > wieder reinnehmen. Komm schon ... Du machst hier mit Mikrocontrollern rum und willst mir erzählen, dass du die Polarität von zwei Leitungen nicht vor dem Anschließen feststellen kannst. Wenn Buderus Brückengleichrichter einbaut, dann deshalb, weil die Verdrahtung von Heizungsbauern vorgenommen wird ... wenn Du weißt was ich meine. //Niffko
Datum:
Niffko _ schrieb: > hmm ... 0x8B wird bei mir definitiv nicht beantwortet. OK... dann aber eben dass Polling für das Modul dass Du emulieren möchtest. Wenn Du Das Polling nicht beantwortest wird diese Adresse viel seltener gepollt und musst länger auf das versenden der Nachrticht warten. Vielleicht ignoriert auch die MC10 Telegramme die von einem "unbekannten" Busteilnehmer kommen. Niffko _ schrieb: > ... dass du die Polarität von zwei Leitungen nicht vor dem > Anschließen feststellen kannst. Sicher bin ich dazu fahig. Macht aber die Sache einfacher mit Gleichrichter. Anstöpseln und fertig. Dann würde ich jedenfalls die Diode entfernen die den Bus kurzschließt wenn man verpolt.
Datum:
IngoF schrieb: > OK... dann aber eben dass Polling für das Modul dass Du emulieren > möchtest. Wenn Du Das Polling nicht beantwortest wird diese Adresse viel > seltener gepollt und musst länger auf das versenden der Nachrticht > warten. ja, weiß ich doch. Hatte bloß in Rudis Text das 0x8B im Kontext mit Brenner gelesen und dann hätte es bei mir auch als Antwort auftauchen müssen. > Dann würde ich jedenfalls die Diode entfernen die den Bus kurzschließt > wenn man verpolt. Nö, die bleibt drin ;-). Scheint als schnelle Clamp-Diode gegen negative Spikes gedacht zu sein. Ich denke hier muss der jeweilige Anwendungsfall betrachtet werden. Wenn das Interface ständig an- und abgestöpselt wird, kann man sicherlich über einen Brückengleichrichter reden. In meinem Fall wird einmal angeschlossen und gut is'. Deshalb hatte ich in meinem Post auch extra geschrieben: "als Anregung für eigene Lösungen". //Niffko
Datum:
Niffko _ schrieb: > das sieht mir nach der Modulation der internen Gerätepumpe aus. @Rudi Habe jetzt bei mir noch mal Telegramm und Monitorwert verglichen - es ist die Pumpenmodulation. Bin mir aber fast sicher, dass der Wert bei Dir (GB152) nicht im Monitor angezeigt wird. //Niffko
Datum:
Dieses "BusEcho" lässt mir ja irgendwie keine Ruhe. Warum existiert dieses Echo nur wenn man über die Servicekey-Schnittstelle etwas sendet? Ich habe dieses Echo noch nicht einmal bei anderen Stationen gesehen. Oder täuscht mich das? Ich habe folgende Komponenten: MC10 Master-Controller (0x08) (UBA3) (Also die "Backplane" des Systems und Busmaster) BC25 Basis-Controller (0x09) RC35 Raum-Controller (0x10) Wenn z.B. nun 0x10 an 0x09 irgendwelche Daten sendet dann sehe ich das genau ein einziges mal. Keine Wiederholungen vom MC10. In den Buderus Planungsunterlagen für EMS ist ein Busdiagram. Im Zentrum steht der MC10 als Master. Von dort sieht man einen EMS-Baum wo die ganzen Zusatzmodule wie RC35, RC25, EM10, MM10 etc angeschlossen sind. Und daneben, einen einzigen dedizierten EMS-Zweig wo nur das BC10/25 angeschlossen ist. Und an diesen Modulen hängt ja der ServiceKey. Meine Vermutung wäre nun das das BC10/25 als Repeater/Gateway zum Internen EMS-Bus auftritt und diese "Echos" nur auf die ServiceKey-Kommunikation zutrifft. Die Echos werden also möglicherweise nicht vom BusMaster generiert sondern vom BasisController BC10/25. Könnte das wer bestätigen? Habt ihr diese "Echos" auch von anderen Modulen?
Datum:
Fred Granna schrieb: > Wenn z.B. nun 0x10 an 0x09 irgendwelche Daten sendet dann sehe ich das > genau ein einziges mal. Keine Wiederholungen vom MC10. Die Daten die Du siehst sind die Wiederholungen. Wiederholt wird Byte für Byte. Die Telegramme die direkt von den Modulen kommen wirst Du nicht sehen können, da diese mit deutlich geringerer Amplitude senden. Fred Granna schrieb: > Meine Vermutung wäre nun das das BC10/25 als Repeater/Gateway zum > Internen EMS-Bus auftritt ... Ein klares Jain. Ich habe bereits die Interna von BC10, UBA und MC10 in Augenschein nehmen können - die dicken Transistoren hängen nur bei UBA und MC10 am Bus. Beim BC25 sieht die Sache aber anders aus, in ihm sind sozusagen BC10 und UBA vereint. //Niffko
Datum:
Niffko _ schrieb: > Habe jetzt bei mir noch mal Telegramm und Monitorwert verglichen - es > ist die Pumpenmodulation. Bin mir aber fast sicher, dass der Wert bei > Dir (GB152) nicht im Monitor angezeigt wird. Danke! Im Monitor wird der Wert nicht angezeigt. Fred Granna schrieb: > Und daneben, einen einzigen dedizierten EMS-Zweig wo nur das BC10/25 > angeschlossen ist. Richtig, der ServiceKey bekommt noch 12V VCC, also ein 3-Draht-Bus und kein 2-Draht-Bus. > Meine Vermutung wäre nun das das BC10/25 als Repeater/Gateway zum > Internen EMS-Bus auftritt und diese "Echos" nur auf die > ServiceKey-Kommunikation zutrifft. Die Echos werden also möglicherweise > nicht vom BusMaster generiert sondern vom BasisController BC10/25. Nein, wie ich weiter oben schon geschrieben hatte: Der Klinkenstecker hängt mit den 2 Leitungen (GND,DATA) direkt am internen EMS-Bus. Fred Granna schrieb: > Wenn z.B. nun 0x10 an 0x09 irgendwelche Daten sendet dann sehe ich das > genau ein einziges mal. Keine Wiederholungen vom MC10. Du siehst die Wiederholung. Als TX-Slave arbeitet das ganze als Stromschnittstelle und als RX-Slave Level-Sensitiv. Dreh mal dein Oszi. auf dann siehst du es.
Datum:
Niffko _ schrieb: >> Wenn z.B. nun 0x10 an 0x09 irgendwelche Daten sendet dann sehe ich das >> genau ein einziges mal. Keine Wiederholungen vom MC10. > Die Daten die Du siehst sind die Wiederholungen. Wiederholt wird Byte > für Byte. Die Telegramme die direkt von den Modulen kommen wirst Du > nicht sehen können, da diese mit deutlich geringerer Amplitude senden. Das würde ja bedeuten, das wenn ich zu heftig in den Bus schreie, die anderen Module alle Zeichen doppelt empfangen und daher nur Müll zurückkommt? Das würde evtl. erklären warum meine Antworten auf das Polling "0x8B" funktionieren, die Kommunikation mit anderen Modulen aber nicht.
Datum:
Fred Granna schrieb: > ... dass wenn ich zu heftig in den Bus schreie ... ich denke, dein 'Umgangston' würde sich, durch den Austausch der Z-Diode in Deiner Senderstufe gegen einen 220R Widerstand, erheblich verbessern ;-) //Niffko
Datum:
Niffko _ schrieb: > .....durch den Austausch der Z-Diode > in Deiner Senderstufe gegen einen 220R Widerstand..... Ja, das wird es garantiert ändern. Hoffe Ihr könnt mir noch mal verzeihen wenn ich schon wieder den Link bringe: Beitrag "Re: Logamatic 2107 Schnittstelle" Auf dem ersten Bild kann man gut das Polling von der MC10 an die RC30 sehen. Die MC10 brüllt rum und dann ein kleines flüstern von der RC30 das dann die RC30 noch mal in den letzten Winkel brüllt. Der Rest der Antwort kommt dannn von der RC30 nach etwa 100ms wenn sich die RC30 wieder gesammelt hat. Was dann genauso wie auch das Break widerholt wird. Wenn man eine zu kleine Z-Diode nimmt und die Spannung noch tiefer als die MC10 herunter zieht gibt es teilweise richtige Ausfälle am Bus Bei der nach dem Break noch ein 0xFE gesendet wird. Ob das jetzt eine Absichtliche Fehlermeldung oder eine Fehlfunktion kann ich nicht beurteilen. Gruß Ingo
Datum:
IngoF schrieb: > Hoffe Ihr könnt mir noch mal verzeihen wenn ich schon wieder den Link > bringe: Dann darf ich aber auch mal ;-) Beitrag "Re: Logamatic 2107 Schnittstelle"
Datum:
Okay, also vereinfacht gesagt: Keiner Spricht direkt sondern immer über den Chef. Jeder flüstert dem Chef was zu wenn er dran ist (Aufforderung kommt vom Chef) und der wiederholt das Laut so das es dann alle hören.
Datum:
Rudi schrieb: > Dann darf ich aber auch mal ;-) Tja, der Thread ist ja schon etwas länger... Da kann man noch viel ausgraben was inzwischen schon fast untergegangen ist. Fred Granna schrieb: > Könnte das wer bestätigen? Habt ihr diese "Echos" auch von anderen > Modulen? Wenn man nicht mit einem Oszilloskop auf dem Bus hängt ist es auch nicht soo leicht dies mit zu bekommen. Das Problem ist dass der größte Teil von der Adresse 0x08 kommt und die MC10 sich selber natürlich nciht widerholt. Wenn das jemand selber nachvollziehen möchte kann am besten am Oszilloskop die Triggerschwelle knapp über die Maximale Spannung stellen und triggert dann auf das Überschwingen. So jetzt werde ich mal lieber wieder an meiner Software spielen und versuchen mich hier zurück zu halten.
Datum:
Ich peil es nich. Kann mir kurz einer schildern was für z.B. senden muss um z.B. eine Versionsabfrage an ein Modul zu richten?
Datum:
Fred Granna schrieb: > Ich peil es nich. Kann mir kurz einer schildern was für z.B. senden muss > um z.B. eine Versionsabfrage an ein Modul zu richten? 0x0B 0x10 0x02 <CRC> Ansonsten schalte deine Anlage aus/ein und schau dir die ersten Nachrichten an.
Datum:
Rudi schrieb: > Ansonsten schalte deine Anlage aus/ein und schau dir die ersten > Nachrichten an. Hm, darauf hät ich auch kommen können facepalm bzgl. Sendepfad: Ich hab mir nun das hier zum Vorbild genommen: Beitrag "Re: Logamatic 2107 Schnittstelle" Ich invertiere mein UART-TX über nen OpAMP und denn auf einen Transistor der zieht den Bus über 220 Ohm auf Masse. Zwei Fragen dazu: - Wozu ist der 4K7 PUllup dort? - Ist der 1,5n Kondensator wichtig?
Datum:
Fred Granna schrieb: > Zwei Fragen dazu: > - Wozu ist der 4K7 PUllup dort? Damit der Transistor einen ordentlichen Pegel sieht, falls mal nichts passiert oder der OP nicht beschaltet ist (dauersenden). > - Ist der 1,5n Kondensator wichtig? Rechnen das mal durch (Tiefpass), siehe: http://de.wikipedia.org/wiki/RC-Glied
Datum:
Angehängte Dateien:Die Kurve für den Tiefpass sieht in etwa so aus. Ich denke die hohen Frequenzen der Anlage (CPU etc.) sollen sich nicht durch das ganze Haus verteilen ;-)
Datum:
Hm, ich glaub meine CRC-Berechnung haut nicht hin. Habe diese Funktione hier genommen: Beitrag "Re: Logamatic 2107 Schnittstelle" Und dann mal probiert: uint8_t tempbuffer[]={0x10,0x21,0xac,0x0,0x0,0x0,0x0}; uint8_t crc=buderus_ems_crc(tempbuffer,7); da bekomme ich als CRC: 0x0D Laut dem hier müsste es aber 0x1A sein oder? Beitrag "Re: Logamatic 2107 Schnittstelle"
Datum:
Fred Granna schrieb: > Hm, ich glaub meine CRC-Berechnung haut nicht hin. Und ich weiss das sie funktioniert ;-) Versuch mal Länge 8 und nicht 7. Die Berechnung geht von der Datenlänge mit CRC aus.
Datum:
Jo, hab ich auch zur sekunde festgestellt. Bekomme aber trotzdem keine Antworten... Befürchte das da mit dem Timing was nicht hinhaut. Denke mal mit meinem i2c-UART am EMS-Bus kann ich das ganze vergessen. Hat hier einer von euch spezis nen bissl C-Code zum durchforsten für mich? Ihr seit doch da bestimmt schon weiter als ich...
Datum:
Moin, hat eigentlich schon jemand eine richtige Abfrage auf den EMS-Bus gemacht? Ich meine jetzt nicht einfach ein Byte auf eine Pollinganfrage senden :)
Datum:
Mal ein paar Tests: Ich warte jeweils auf "0x8B <brk>". Nach meinen Telegrammen sende ich jeweils "0x08 <brk>" zum Abschluss Ich sende "0xB 0x8 0x2 0x3E <brk>" und bekomme "80 0B <brk>". Ich sende "0xB 0x8 0x2 0x00 0x3E <brk>" und bekomme "80 0B <brk>" Ich sende "0xB 0x8 0x2 0x3E <brk>" und bekomme "80 0B <brk>". Ich sende "0xB 0x8 0x0 <brk>" und bekomme "80 0B <brk>". Ich sende "0xB 0x8 <brk>" und bekomme "80 0B <brk>".
Datum:
Ich sende "0B 88 02 00 06 9A" Ich bekomme "08 0B 02 00 7B 04 05 00 00 00 FC 00" uff O.O Warum geht das? Was bedeutet die 0x06 vorm CRC?
Datum:
Fred Granna schrieb: > Warum geht das? Wie schon einmal gesagt, schalte deine Anlage aus/ein und schau dir die initialen Nachrichten an ......... > Was bedeutet die 0x06 vorm CRC? K.A., evtl ein Index. Was hängt denn bei dir an Adresse 0x08 und mit welcher Version ?
Datum:
Rudi schrieb: > Was hängt denn bei dir an Adresse 0x08 und mit welcher Version ? Das ist UBA4, Version 4.5. Die Version sieht man ja im Telegram.
Datum:
Fred Granna schrieb: > Ich sende "0B 88 02 00 06 9A" > Ich bekomme "08 0B 02 00 7B 04 05 00 00 00 FC 00" Gratuliere! Darf ich fragen, mit welchem Prozedere du sendest - ich meine im Speziellen die Pausen zwischen den Bytes? //Niffko
Datum:
Fred Granna schrieb: >> Was hängt denn bei dir an Adresse 0x08 und mit welcher Version ? > > Das ist UBA4, Version 4.5. Die Version sieht man ja im Telegram. Das sehe ich. Mich wundert nur die Länge der Antwort. Bei mir sieht es so aus wenn die 0x10 anfragt: 10 88 02 00 06 33 08 10 02 00 40 03 02 3d
Datum:
Niffko _ schrieb: > Darf ich fragen, mit welchem Prozedere du sendest - ich meine im > Speziellen die Pausen zwischen den Bytes? Nach jedem Byte hole ich mir die Antwort. Also ich sende nicht weiter bis ich das "echo" vom Master habe.
Datum:
Fred Granna schrieb: > Nach jedem Byte hole ich mir die Antwort. Also ich sende nicht weiter > bis ich das "echo" vom Master habe. Joa ... danke! Rudi schrieb: > Mich wundert nur die Länge der Antwort. Bei mir sieht es > so aus wenn die 0x10 anfragt: > > 10 88 02 00 06 33 > 08 10 02 00 40 03 02 3d Bei mir sieht's so aus (UBA3 V2.07): 10 88 02 00 09 3C 08 10 02 00 40 02 07 3A UBA3 und UBA4 haben technisch gesehen nicht mehr viel gemein, daher evtl. die unterschiedlichen Antworten. //Niffko
Datum:
Mich würde ja interessieren was der ServiceKey intern so alles anstellt. - Der Servicekey empfängt die Anfrage "04 08 02" -- Der Key sendet auf dem Bus "0B 88 02 00 06 <crc> <brk>" -- Der Key empfängt vom Bus "08 0B 02 00 7B 04 05 00 00 00 <crc> <brk>" - Der Key sendet zur Software "04 08 02 00 7B 04 05 00 00 00". Man bräuchte mal einen parallelen Log vom ServiceKey und vom EMS-Bus um mal zu sehen was da wie angestellt wird...
Datum:
Fred Granna schrieb: > Mich würde ja interessieren was der ServiceKey intern so alles anstellt. Also zumindest packt er auch mehrere Teiltelegramme zusammen oder splittet die. Das Telegramm 0x3f besteht beim Service-Key aus etwa 100 Byte. Auf dem EMS-Bus sind die gesplittet und haben nach dem Telegrammtyp das Offset. Die Logamatic fragt ja erst mal alle Telegramme der Busteilnehmer ab. Dannach kommen nur noch geänderte Werte mit einem 0x20 noch vor der 04. Mich würde auch mal ein paralleles Log interessieren. Nur bräuchte irgendjemand einen Service-Key und gleichzeitig eine Möglichkeit die Daten aufzuzeichenen. Für das Log würde es ja auch reichen wenn man dies mit einem Programm wie hTerm z.B. Hexadezimal evtl mit dem Zeitstempel mitloggt. Eigentlich muss mann nicht unbedingt eine großartige Empfangsschaltung haben. Es reicht aus Die Masse (Pin 5) von der Seriellen Schnittstell auf die 12 Volt von der Service-Key Buchse zu gehen und die Daten auf die Empfangsleitung der Schnittstelle (Pin 3). Oder umgekehrt. Am besten mit einem Laptop das keine Verbindung zum Stromnetz hat. Habe das damals auch gemacht und keine Probleme damit gehabt. Dadurch hat man dann einen Signalpegel von +-2,5Volt. Eigentlich benötigt man mindestens +-3 bis +-12Volt als Pegel. Hat bei mir aber einwandfrei funktioniert. Was dies 0x00 0x06 soll interesssiert mich auch. Eigentlich wäre das Offset 0 mit den Daten 0x06. Es gibt auch viele Telegramme von der RC30 (0x10, 0x11) die auch irgendwelche Daten an die MC10 senden. Vermute mal das sind irgendwelche Parameter/Stellwerte für die Heizungsregelung. Hatte bei mir gestern schon mal das simple beantworten der 0x8b mit 0xb programmiert und werde dann in der nächsten Zeit endlich auch mal "echte" Sendeversuche unternehmen können wenn ich dazu Zeit finde. Gruß Ingo
Datum:
IngoF schrieb: > Auf dem EMS-Bus sind die gesplittet und haben nach dem Telegrammtyp das > Offset. > > Die Logamatic fragt ja erst mal alle Telegramme der Busteilnehmer ab. > Dannach kommen nur noch geänderte Werte mit einem 0x20 noch vor der 04. Und das ist genau die Frage! Fragt der wirklich AKTIV in den Bus oder hat der Key intern "nur" einen Puffer in dem die Telegramme "<gerät> 0x00 <telegramtyp> ..." die so über den Bus schwirren eingelagert und dann daraus geholt werden? Ich glaube ohne "Doppellog" kommt man da wirklich nicht weiter. Ich habe vorhin mit dem Offset vor der CRC ein wenig gespielt; die Heizung hat dann plötzlich nen Fehler ausgegeben...
Datum:
Fred Granna schrieb: > Ich glaube ohne "Doppellog" kommt man da wirklich nicht weiter. Ich habe Das stimmt. Ohne Log geht garnichts. Würde aber vermuten dass der ServiceKey alles im Speicher vom anfang an mitpuffert und dann nur noch Änderungen überwacht und diese dann über die serielle Schnittstelle mitsendet. Vielleicht werden ja auch mal am Anfag alle Telegramme abgefragt ohne dass sich die Logasoft dies anfragt. Und wenn eine Anfrage auf ein spezielles Telegramm kommt aus dem Speicher sendet. Vielleicht hängt das auch vom Telegrammtyp ab wie er sich verhält.... Wollte ja eigentlich auch nur sagen dass ein Log auch jeder ziehen kann der eine zweite serielle Schnittstelle frei hat und sich nur ein Kabel RS232 auf Klinke basteln muss. (1x Service-Key und 1x Diagnose-Buchse) Vermute mal dass jemand der einen ServiceKey hat sich nicht noch extra irgend eine Schaltung zusammenlötet oder sogar irgendwas programmiert..
Datum:
Also wir haben jetzt bei einem Telegramm schon mehrere Möglichkeiten: UBA3 V3.2 --------- 10 88 02 00 06 33 08 10 02 00 40 03 02 3d UBA3 V2.7 --------- 10 88 02 00 09 3C 08 10 02 00 40 02 07 3A UBA4 V4.5 / keine Erweiterung ----------------------------- 0B 88 02 00 06 9A 08 0B 02 00 7B 04 05 00 00 00 FC UBAX V 2.4 / SAFE 2.20 / keine Erweiterung ------------------------------------------ TX: 04 08 02 RX: 04 08 02 00 48 02 04 4B 02 14 00 00 00 Die letzten 3 0x00 deuten auf eine fehlende Erweiterung hin !?
Datum:
Also mit dem Offset einfach so herumexperimentieren werde ich mich erst mal nicht trauen :-) Wer weiss denn schon was man da so alles verstellen kann... Für mich reicht erst mal wenn ich die Telegramme mitlogge und nur die Schaltzeiten verändern kann. Also dass mein Server dynamisch die Zeiten ändern kann. Z.B. wenn ich schon weiss dass der Arbeitstag länger dauern wird eine eMail an meinen Server schicken und der ändert die Heizzeiten. Vielleicht auch schnell mal für ein Jahr im vorraus meinen Urlaub eintrage und alles automatisch umgestellt wird :o) Und natürlich dass ich sehen kann was meine Heizung denn da so veranstaltet und sich irgendwie Energie einsparen lässt. Gruß Ingo
Datum:
Fred Granna schrieb: > Und das ist genau die Frage! Fragt der wirklich AKTIV in den Bus oder > hat der Key intern "nur" einen Puffer in dem die Telegramme "<gerät> > 0x00 <telegramtyp> ..." die so über den Bus schwirren eingelagert und > dann daraus geholt werden? Alle Module haben ein EEProm mit festen Daten und volatile Daten (Temperaturen etc.). Wie diese beiden Datentypen unterschieden werden ist nun die große Frage. Der ServiceKey wird sich wohl alle EEProm Daten von den Modulen holen und speichern. Die volatilen Daten bzw. die nicht volatilen Daten die geändert werden (z.B. durch die RC3X) bekommt er direkt vom Bus.
Datum:
Rudi schrieb: > Die letzten 3 0x00 deuten auf eine fehlende Erweiterung hin !? Das könnte ein Platz für eine weitere Versionsnummer (Erweiterung?) sein. Die MC10 übermittelt ja seine eigene Version und die SAFe-Version. Die Seriennummer scheinen ja immer aus drei Byte sein
RX: 04 08 02 00 H MC10 2.04 48 02 04 4B 02 14 00 00 00
K SAFe 2.20 4B 02 14
|
Datum:
Weiter Probiert mit "Offset"; sehr interessant: "0B 88 02 00 02 <crc> <brk>" => "08 0B 02 00 7B 04 05 93" "0B 88 02 00 03 <crc> <brk>" => "08 0B 02 00 7B 04 05 93" "0B 88 02 00 04 <crc> <brk>" => "08 0B 02 00 7B 04 05 00 3F" "0B 88 02 00 05 <crc> <brk>" => "08 0B 02 00 7B 04 05 00 00 7E" "0B 88 02 00 06 <crc> <brk>" => "08 0B 02 00 7B 04 05 00 00 00 FC" "0B 88 02 00 08 <crc> <brk>" => "08 0B 02 00 7B 04 05 00 00 00 00 00 DB" "0B 88 02 00 10 <crc> <brk>" => "08 0B 02 00 7B 04 05 00 00 00 00 00 00 03 44" Was würdet ihr sagen was dieser "Offset" wirklich ist? ;-)
Datum:
Rudi schrieb: > Die letzten 3 0x00 deuten auf eine fehlende Erweiterung hin !? Kann es vielleicht sein dass sich die MC10 je nach Absender anders verhält? Beides mal wenn die 0x00 0x00 0x00 auftaucht war die Adresse 0x0b im Spiel. bei der 0x10 sind die nciht aufgetaucht. Die untere UBA wird vermutlich auch eine UBA3 sein. Die Version liegt ja genau in dem Bereich von den anderen beiden UBA. Keine Ahnung ob da was dran ist..
Datum:
YEAH! "0B 88 18 0 255 <crc>" => "08 0B 18 00 3C 02 77 64 17 09 01 25 40 80 00 02 32 80 00 00 7A FF 2D 48 00 C8 00 02 00 B1 00 0D" :-D
Datum:
Fred Granna schrieb: > Was würdet ihr sagen was dieser "Offset" wirklich ist? ;-) Die maximale Antwortslänge ;-) 09 88 04 05 01 af 08 09 04 05 19 cb 10 88 04 00 0c 21 08 10 04 00 04 1b 03 40 18 19 30 00 00 69 6b 0c 5d
Datum:
Mensch so langsam wird das ja konkret. Ich lese so nebenbei mit. Habe schon ein schlechtes Gewissen, weil ich nen Servicekey besitze aber momentan keine Möglichkeit zum mitloggen habe. Mist.
Datum:
Und jetzt pass auf: "0B 88 18 03 01" => "08 0B 18 03 64 DA" Das ist auslesen eines Registers: 18 = Register 03 = Offset (Start) 01 = Anzahl der Zeichen die gelesen werden Also lese ich aus Register 18 das dritte Zeichen
Datum:
@Fred Granna Kannst du mal versuchen ob es sich bei dem dritten und vierten Byte um einen Offset in einen statischen Speicher handelt ? 10 88 15 00 05 <crc> 10 88 1c 00 0b <crc> Und dann mal bei der 0x15 schauen ob du die Antwort der 0x1c durch ändern der Längenangabe mit empfängst.
Datum:
Rudi schrieb: > 10 88 15 00 05 <crc> = 08 0B 15 00 00 3C 01 01 09 <FE> - 10 88 15 00 10 <crc> = 08 0B 15 00 00 3C 01 01 09 48 00 00 <86> > 10 88 1c 00 0b <crc> = 08 0B 1C 00 00 00 00 00 00 00 00 00 00 00 00 <97> Oder hab ich die Frage nicht richtig verstanden?
Datum:
Fred Granna schrieb: > Was würdet ihr sagen was dieser "Offset" wirklich ist? ;-) IngoF schrieb: > Also mit dem Offset einfach so herumexperimentieren werde ich mich erst > mal nicht trauen :-) Also bei der Seriennummer kann vermutlich nicht viel passieren... Fred Granna schrieb: > Was würdet ihr sagen was dieser "Offset" wirklich ist? ;-) Hey, bitte sagen falls ich hier herumtrolle.... Also das Offset habe ich von einigen Telegrammen wie z.B. das 0x39 das ich gerade mitgeloggt habe und die Daten hinter einander kopiert habe. Wenn mann z.B. beim ersten Telegramm nur die Datenbytes zählt kommt mann auf 26 = 0x1A. Das nächste Telegramm fängt mit 0x1B im "Offset" an. in der Zeile darunter mit dem RX: das Telegramm von Chris_be was ich aus seinen Logs zusammengestellt habe... Ich finde diese beiden Telegramme sehen doch sehr gleich aus.. Ist das nur Zufall?? Allerdings scheint es auch wohl teilweise andere Bedeutungen zu haben. Vielleicht ist das nach Sollwerten, Veränderlichen Daten oder Seriennummern anders. Bei dem Telegramm 0x10 und 0x11 sind das Telegramme von der RC30 an die MC10. vielleicht ist dass dann dort kein Offset und ist vielleicht ein Befehl. Was mich daran stört ist dass die Antwort unterschiedlich lang ausfällt. Dann noch das "Versionsnummernproblem" warum wird da bei einigen die 0x06 und bei anderen 0x09 an das "Offset" 0x00 gesendet??? Ist das ein Befehl, EIne Prüfsumme?? Was soll das? Dort scheint es kein Offset zu sein. Hoffe ich kann mit meinen "Spekulationen" helfen... Gruß Ingo
Datum:
Fred Granna schrieb: > Oder hab ich die Frage nicht richtig verstanden? Doch, alles okay. Das scheint so nicht zu funktionieren. Es wird wohl wie bei ECO-CAN über Typen gehen, also was du als Register bezeichnest und einen Offset, den es bei ECO-CAN auch gibt.
Datum:
Angehängte Dateien:IngoF schrieb: > Also das Offset habe ich von einigen Telegrammen wie z.B. das 0x39 das > ich gerade mitgeloggt habe und die Daten hinter einander kopiert habe...... Sorry, glatt das wichtigste vergessen.. Hier die dazugehörigen Daten als TXT-Datei:
Datum:
IngoF schrieb: > Hoffe ich kann mit meinen "Spekulationen" helfen... Es ist ja nicht so das wir die Daten nicht ändern können, es soll nur etwas komfortabler werden ;-). Am besten hält man sich erst einmal an die RC3X, so wie die die Daten ändert. Bisher hat sich leider noch niemand die Mühe gemacht das Protokoll für die Änderungen zu erfassen.
Datum:
@ingo
Ich habe eben mal eine Zeile aus deinem Log genommen:
{52} 19:49:38 06.01.11: 10 88 11 18 1B 52
{CF} 19:49:38 06.01.11: 08 10 11 18 00 00 00 00 00 00 00 00 00 00 00 00
CF
Habe dann gesendet "11 88 11 18 1B <crc>"
Resultat: "08 0B 11 18 00 00 00 00 00 00 00 00 00 00 00 00 3C"
Dann "11 88 11 18 1C <crc>"
Resultat "08 0B 11 18 00 00 00 00 00 00 00 00 00 00 00 00 3C"
Und "11 88 11 18 05 <crc>"
Resultat "08 0B 11 18 00 00 00 00 00 00 00 00 00 00 00 00 3C"
Und "11 88 11 00 1B <crc>"
Resultat "08 0B 11 00 00 00 00 00 00 00 00 00 00 00 00 00 48 00"
Datum:
@Fred Granna Hast du deine Anlage nicht programmiert (Heizzeiten) ?
Datum:
Fred Granna schrieb: > "0B 88 02 00 02 <crc> <brk>" => "08 0B 02 00 7B 04 05 93" > "0B 88 02 00 03 <crc> <brk>" => "08 0B 02 00 7B 04 05 93" > "0B 88 02 00 04 <crc> <brk>" => "08 0B 02 00 7B 04 05 00 3F" > Was würdet ihr sagen was dieser "Offset" wirklich ist? ;-) ALso das Offset meinte ich mit dem dritten Byte was bei Dir immer 0x00 ist. Aber das Byte dannach ist wohl die Antwortlänge. Allerdings scheint die MC10 das nach Belieben anzupassen. Die 0x02 ist der MC10 zu wenig gewesen und hat dann einfach 3 Datenbyte gesendet. Bei den Seriennummer Rudi schrieb: > UBA3 V3.2 > --------- > 10 88 02 00 06 33 > 08 10 02 00 40 03 02 3d > > UBA3 V2.7 > --------- > 10 88 02 00 09 3C > 08 10 02 00 40 02 07 3A Bei den Seriennummern wurden nur 3 Datenbyte gesendet obwohl einmal 6 und einmal 9 Datenbyte abgefragt wurden. Fred Granna schrieb: > 18 = Register > 03 = Offset (Start) > 01 = Anzahl der Zeichen die gelesen werden > > Also lese ich aus Register 18 das dritte Zeichen ALso da bin ich nicht mit zufrieden.. ich stimme für Telegramm 0x18 also die schnell veränderbaren Messwerte. Könnt Ihr denn mal vergelichen ob das mit dem Offset auch wirklich stimmt? Wenn ich richtig verstanden habe sind die Daten die dann gesendet identisch mit den Daten aus dem letzten Telegramm 0x00 ab dem Offset 0x03?? Gruß Ingo Fred Granna schrieb: > Ich habe eben mal eine Zeile aus deinem Log genommen: > {52} 19:49:38 06.01.11: 10 88 11 18 1B 52 > {CF} 19:49:38 06.01.11: 08 10 11 18 00 00 00 00 00 00 00 00 00 00 00 00 > CF > > Habe dann gesendet "11 88 11 18 1B <crc>" > Resultat: "08 0B 11 18 00 00 00 00 00 00 00 00 00 00 00 00 3C" OK. Leider ist ja nicht bekannt was das "Telegramm" 0x10 und 0x11 überhaupt für eine Bedeutung hat. Dass die Prüfsumme ja anders ist liegt an der unterschiedlichen Adresse. Oder habe ich Dich falsch verstanden? Habe hier mal die beiden Telegramm von Chris_be: RX: 04 08 10 00 34 55 02 09 89 0A 12 17 2A 00 BF 4B 34 55 02 09 89 0A 14 12 22 00 1E 4B 33 43 02 1A 86 05 10 1E 18 00 02 4B 36 4C 02 24 80 01 00 01 27 00 01 4B 36 59 01 FE 00 00 00 0F 00 00 01 4B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 RX: 04 08 11 00 37 41 02 26 8A 02 08 1A 25 00 01 4B 36 4C 02 05 87 0C 0A 14 22 00 01 4B 36 4C 02 05 87 0B 15 11 06 00 01 4B 36 4C 02 05 87 0B 15 07 1C 00 01 4B 36 4C 02 05 87 02 0D 0C 21 00 01 4B Wenn das ja mit dem Offset stimmt wunder mich nur warum dort bei mir alles 0x00 angezeigt wird und bei Crhis_be ganz andere Werte stehen... Muss dann eine andere Hardware sein oder vielleicht sind das irgendwelchen geloggten Werte von der MC10 die erst nach einer bestimmten Laufzeit in diesen "Speicherplätzen" abgelegt werden... Gruß Ingo
Datum:
Rudi schrieb: > Hast du deine Anlage nicht programmiert (Heizzeiten) ? Doch, aber nur HK1. Die restlichen (WW und Zirkulation) übernehmen diese Einstellung.
Datum:
Rudi schrieb: > Hast du deine Anlage nicht programmiert (Heizzeiten) ? Also die Heizzeiten sind doch die Telegramme 0x3f soweit ich das mal gesehen habe.. Oder sind das vielleicht die Temperaturen für die Schaltpunkte? Kann ja eigentlich auch nicht sein. es gibt doch nur zwei...
Datum:
Fred Granna schrieb: > Doch, aber nur HK1. Die restlichen (WW und Zirkulation) übernehmen diese > Einstellung. Also bei mir ist HK1 und die Zirkulation mit einem eigenen Programm versehen. Zirkulation nur morgens zwischen 5:00 und 6:00 soweit ich mich erinnere.
Datum:
IngoF schrieb: > Habe hier mal die beiden Telegramm von Chris_be: > RX: 04 08 10 00 34 55 02 09 89 0A 12 17 2A 00 BF 4B 34 55 02 09 89 0A 14 > 12 22 00 1E 4B 33 43 02 1A 86 05 10 1E 18 00 02 4B 36 4C 02 24 80 01 00 > 01 27 00 01 4B 36 59 01 FE 00 00 00 0F 00 00 01 4B 00 00 00 00 00 00 00 > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 00 00 So sieht das zerteilt aus: 04 08 10 00 34 55 02 09 89 0A 12 17 2A 00 BF 4B 34 55 02 09 89 0A 14 12 22 00 1E 4B 33 43 02 1A 86 05 10 1E 18 00 02 4B 36 4C 02 24 80 01 00 01 27 00 01 4B 36 59 01 FE 00 00 00 0F 00 00 01 4B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 und > RX: 04 08 11 00 37 41 02 26 8A 02 08 1A 25 00 01 4B 36 4C 02 05 87 0C 0A > 14 22 00 01 4B 36 4C 02 05 87 0B 15 11 06 00 01 4B 36 4C 02 05 87 0B 15 > 07 1C 00 01 4B 36 4C 02 05 87 02 0D 0C 21 00 01 4B 04 08 11 00 37 41 02 26 8A 02 08 1A 25 00 01 4B 36 4C 02 05 87 0C 0A 14 22 00 01 4B 36 4C 02 05 87 0B 15 11 06 00 01 4B 36 4C 02 05 87 0B 15 07 1C 00 01 4B 36 4C 02 05 87 02 0D 0C 21 00 01 4B Ich hab grad weiter oben was zu den Schaltzeiten geschrieben: Ich habe nur Zeiten für HK1 programmiert, die anderen Module übernehmen diese Zeit. Denke mal das wird bei dir genauso sein und daher sind die dann 0x00 ...
Datum:
Sorry, habe nicht verstanden was Du damit sagen wolltest... Hatte nur meine Einstellungen hier genannt falls hier irgendjemand eine Idee mit der Zuordnung der Daten zu den Schaltzeiten hat.. Hatte Rudi so verstanden dass die 0x00 dort stehen weil Du nur einen HK und sonst keine Zeiten programmiert hast. Wollte nur sagen dass ich für die Zirkulation ein eigenes Zeitprogramm erstellte habe und nicht von dem Heizkreis1 die Zeiten übernommen wurden. Also demnach müssten dann ja bei mir andere Daten auftauchen....
Datum:
IngoF schrieb: > Also demnach müssten dann ja bei mir andere Daten > auftauchen.... oder besser gesagt mehr Daten... weil ich ja noch zusätzlich ein Schaltprogramm für die Zirkulation eingestellt habe...
Datum:
Das Ding ist: Die Logs der Kommunikation zwischen ServiceKey und PC helfen nur bedingt. Beispiel: > <TX>04 08 07 (Sendet der PC zum Servicekey) Würde ich nun übersetzen nach "0x0B 0x88 0x07 0x00 0xFF" Das Ergebniss: "08 0B 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 FB" > <RX>04 08 07 00 0B 01 02 00 00 00 00 00 00 00 00 00 00 00 (Sendet der SK zum PC) Solche EInzelabfragen sind also wohl kein Problem. Aber es gibt auch solche Anfragen an den ServiceKey: > <TX>04 08 > <TX>04 09 Und da kommen dann 20 Verschiedene Telegramme von 0x08 und 0x09: <RX>04 08 07 00 0B 01 02 00 00 00 00 00 00 00 00 00 00 00 <RX>04 08 18 00 26 01 BF 64 64 19 01 17 01 01 E4 83 00 80 00 02 0F FF 2D 48 00 00 FF 00 00 00 E4 02 82 02 83 73 00 00 2C 00 00 <RX>04 08 19 00 00 59 01 98 02 61 FF FF FF 00 00 BA 78 04 7B 9E 02 EC F8 03 BD D8 00 AB F4 00 00 <RX>04 08 02 00 48 02 04 4B 02 14 00 00 00 usw usw usw.... _Masterfrage_: Wie veranlasse ich die Module ihre kompletten Daten auf einmal auszugeben?
Datum:
Fred Granna schrieb: > Wie veranlasse ich die Module ihre kompletten Daten auf > einmal auszugeben? Also ich hatte gehofft dass das Telegramm auch auf dem EMS-Bus anwendbar wären... Also: für alle Telegramme die vorhanden sind: 0b 08 <Break> für alle Daten zu dem Telegramm/Datentyp 0x18 0b 08 18 <Break> für die Daten von Telegramm 0x18 0b 08 18 1B <CRC> <Break> für die 10 Bytes ab Adresse 0x1b vom Telegramm 0x18 0b 08 18 1B 0A <CRC> <Break> Aber leider scheint das nicht so auf dem EMS-Bus funktionieren. Die Hoffnung war wohl zu blauäugig.. Eventuelle muss man alle Datentypen/Telegramm aufeinmal abfragen.. Da hilft nur ein Log am EMS-Bus wenn der Service-Key angeschlossen wird. @Andreas F. (Gast) könntest Du denn evtl. mal einen Log-Versuche starten wenn Du Zeit und die Möglichkeit hast? Also die beschriebene Version mit dem Kabel habe ich am Anfang auch gehabt und Du benötigst keine selbstgeschriebene Software oder irgendwelche andere Hardware außer das Kabel. Eventuell könnte ich Dir das Kabel zuschicken oder evtl. Eine kleine Testplatine mit Programm dafür erstellen und dir zuschicken. Mit der Hardware könnte etwas dauern. das Kabel könnte ich sofort losschicken. liegt hier bei mir auf dem Tisch. Es würde für den Anfang auch erst mal ein serieller Port auch schon reichen.. man könnte dann zumindest sehen ob der Service-Key beim Start ohne EcoSoft-Programm alle Telegramme abfragt und wie er das macht.. Oder wohnt zufällig jemand mit Hardware zum loggen in Deiner Nähe? Ich bin in der Nähe von Münster. hatte damals auch nur ein Kabel ohne Software genommen: Beitrag "Re: Logamatic 2107 Schnittstelle" Gruß Ingo
Datum:
IngoF schrieb: > Ich bin in der Nähe von Münster. Leider weit entfernt. Mein Nachbar fährt morgen nach Münster übers WE aber das hilft Dir auch nichts. Momentan habe ich keinen verfügbaren Laptop mit geeigneter Schnittstelle zur Verfügung und die anderen Rechner sind wenig portabel. Ich überlege mal am WE, wie ich vielleicht doch was tun kann. Könnte ich die Heizung transportieren, stünde mir ein ganzer Meßpark zur Verfügung. Aber im Winter wäre meine Frau nicht wirklich begeistert. Mhmmm
Datum:
IngoF schrieb: > Da hilft nur ein Log am EMS-Bus wenn der Service-Key angeschlossen wird. Komme gerade vom Training, sonst hätte ich schon früher Laut gegeben. Ich habe Service-Key, Logasoft und einen RX-Slave ... werde sobald ich Zeit habe die Key-Telegramme mal mitloggen. //Niffko
Datum:
Na dann bin ich ja raus und lese entspannt weiter mit. Danke.
Datum:
So, noch nebenbei eine allgemeinere Frage zum Senden: Mein derzeitiger Ablauf: 1. Ich warte auf "0x8B <brk>" 2.1 Nun sende ich meine Abfrage mit einem abschliessenden <brk> 2.2 Danach ein "leeres" Telegram "0x0B <brk>" als Abschluss. Mein Problem: Teilweise bekomme ich die erwartete Antwort. Teilweise aber auch nur "0x80 0x0B <brk>" Ist das überhaupt das richtige Vorgehen zum Senden?
Datum:
Fred Granna schrieb: > Ist das überhaupt das richtige Vorgehen zum Senden? Das siehst du doch selbst auf dem Bus. Woher hast du überhaupt diesen Ablauf mit Punkt 2.2 ?
Datum:
Rudi schrieb: > Das siehst du doch selbst auf dem Bus. Woher hast du überhaupt diesen > Ablauf mit Punkt 2.2 ? Den hab ich mir so zusammengereimt. Ich habs nun ohne das leere "Abschlusstelegram" gemacht. Geht auch, ist also nicht nötig. Ich glaube ich habe noch ein paar Timingprobleme...
Datum:
Angehängte Dateien:So ... habe mal den Key eingestöpselt und mir vom Interface nur schicken lassen, was 8B oder 0B auf den ersten beiden Bytes hat - das Ergebnis findet Ihr im Anhang. Das ist wie gesagt nur der blanke Key, ohne Verbindung zur Ecosoft - hierfür bräuchte ich einen zweiten Laptop ... mal sehen. Viel Spaß bei der Lektüre ... //Niffko
Datum:
Niffko _ schrieb: > So ... habe mal den Key eingestöpselt und mir vom Interface nur schicken > lassen, was 8B oder 0B auf den ersten beiden Bytes hat - das Ergebnis > findet Ihr im Anhang. Das ist ja schonmal nicht schlecht :) Kannst du da evtl. noch Zeitstempel mit einfügen? > Das ist wie gesagt nur der blanke Key, ohne Verbindung zur Ecosoft - > hierfür bräuchte ich einen zweiten Laptop ... mal sehen. Das ist so schonmal ganz gut. So sieht man das im SK wohl eine eigene Logik inkl. Zwischenspeicher drinhängt.
Datum:
Fred Granna schrieb: > Kannst du da evtl. noch Zeitstempel mit einfügen? Hatte ich versucht. Das Problem ist, Hterm setzt die Zeitstempel nicht immer am Anfang eines Telegrammes sondern immer spätestens nach 16 Bytes - so zerhackt es dann immer die längeren Telegramme. Man kann die überflüssigen Zeitstempel zwar über 'Suchen & Ersetzen' herausoperieren, es fehlen dann aber immer noch die Zeitstempel die nicht gesetzt wurden. Sollten Dich irgendwelche Zeiten im Speziellen interessieren, sag' Bescheid - ich schaue dann mal nach. //Niffko
Datum:
Gute morgen, ich habe eine andern PC nur Serial Comm, und habst von Conrad eine USB RS232 converter gekauft. Ich habe mit die Ecosoft und Service Key geprobierd, aber kann keine kommunikation starten. Ich habe die Spannungen gemessen und die sind OK, auch eine Scope gebraucht und kann sehen dass das Signal is nicht gleich wenn sendet bei RS232 port. (und dan keine antwort von ServiceKey...) Wo habst eine gleiche setup ? Ins driver kann ich latency, timeouts, ... parameters andern ... vielen danke
Datum:
Angehängte Dateien:Guten Morgen, vielleicht kann ich ja mit ein paar Detailbildern des Servicekey ein wenig aufklären. Viel Spaß weiterhin.
Datum:
Hallo, Andreas F. schrieb: > vielleicht kann ich ja mit ein paar Detailbildern des Servicekey ein > wenig aufklären. Danke für die Bilder. Eine Frage hätte ich da noch. Sind die beiden Optokoppler auf der Seite Heizung<->Schaltung oder PC<->Schaltung ? Grüße.
Datum:
Hallo, natürlich habe ich nun alles schön wieder zugeschraubt und alle Aufkleber wieder drauf. ;-( Wahrscheinlich hilft Dir das schon weiter. Auf Bild 1 ist der komplette Key dargestellt. Links oben ist der Mini-USB Stecker als Schnittstelle zum PC. Die kleine Platine links unten steckt über dem Controller M306... Unter der kleinen Platine erkennt man die dicken Leiterbahnen. Dort werden die verschiedenen Adapter(Klinkenstecker) aufgesteckt. Viel Spaß
Datum:
@Andreas F. Okay danke. Dort wird also nur der USB-Teil galvanisch getrennt und der Rest der Schaltung läuft über die ServiceKey Versorgung (12V). So etwas habe ich mir schon gedacht. @all Falls es jemanden interessiert, Junkers benutzt wohl einen vergleichbaren Bus in ihren Geräten mit dem Namen "HT-Bus". Hier der Link zu den Leidgenossen: Beitrag "Junkers HT-Bus Heatronic 3 Schnittstelle" Grüße.
Datum:
Angehängte Dateien:Hier mal meine aktuelle Sende/Empfangsschaltung.......
Datum:
IngoF schrieb: > Hier mal meine aktuelle Sende/Empfangsschaltung....... Der R6 hat da nichts zu suchen. Der hat sich irgendwann eingeschlichen...
Datum:
Hallo zusammen! Hab mir jetzt mal den Thread so durchgelesen. Ich habe eine Junkers ZSB 14 Therme im Keller mit der Heatronic 3 und würde auch gerne Daten mitloggen und eventuell die Therme steuern. Funktioniert die Schaltung damit oder ist es nur eine Vermutung? Was würde ich alles dazu brauchen oder "bietet" jemand eine fertige an? Bin zwar Elektriker aber mit Platinen/Elektronik hab ich so keine Erfahrung. Liebe Grüße, Christian.
Datum:
Also ich habe zumindest geplant so eine Platine als "Sammelbestellung" zu machen. Allerdings ist meine Hardware noch in der Entwicklung. Evtl. würde die auch mit der Heatronic laufen. Das einzige was die Platine macht ist die Telegramme in ein PC-Verständliches Format zu bringen (0xAA 0x55 am Anfang und Ende oder eben nach 3964R) Meine PC-Software würde nur funktionieren wenn auch das selbe "Protokoll" darauf läuft und die einzelnen Datenbytes die selbe Bedeutung haben. Eventuelle müsste man dann noch die PC-Software selber entwickeln. Aber erst mal abwarten wie die Telegramm/Daten denn dort eigentlich ausshen... Allerdings habe ich im Moment nicht gaanz so viel zeit an der Hard/Software zu arbeiten. Gruß Ingo
Datum:
Angehängte Dateien:Bin ab sofort auch unter den 'Sendenden'. Schaltung siehe Anhang. Basiert, wie weiter oben schon geschrieben, auf einem Soft-UART. Daher auch kein externer Inverter für die Ansteuerung des TX-Transistors, wird per SW erledigt. Habe festgestellt, dass es nicht nötig ist, zwischen dem Senden der Bytes, auf das Echo des Masters zu warten. Man kann die Zeichen einfach hintereinander abfeuern. Könnte das bitte nochmal jemand testen und bestätigen? @IngoF oder Rudi Wenn ihr etwas Zeit übrig habt, könntet ihr euch das ja auch mal mit dem Oszi anschauen. //Niffko
Datum:
Hallo, Niffko _ schrieb: > Habe festgestellt, dass es nicht nötig ist, zwischen dem Senden der > Bytes, auf das Echo des Masters zu warten. Man kann die Zeichen einfach > hintereinander abfeuern. Könnte das bitte nochmal jemand testen und > bestätigen? Wenn es funktioniert ist es doch okay. Bei der Byteweisen TX/RX-Methode werden Buskollisionen schneller erkannt und der Transfer kann direkt abgebrochen werden. Das Vorgehen halte ich für die bessere Wahl, da wir keine weiteren Informationen zu diesem Bus haben (Verhalten bei Buskollision, Timing etc.) und die Busbelegung bei Fehlern minimiert wird. Grüße.
Datum:
@Niffko Wenn du Anfragen sendest: Bekommst du immer sofort eine Antwort zurück?
Datum:
Hallo, hier noch bei paar Oszi.-Bilder vom Bus: Beitrag "Re: Logamatic 2107 Schnittstelle" Beitrag "Re: Junkers HT-Bus Heatronic 3 Schnittstelle" Beitrag "Re: Junkers HT-Bus Heatronic 3 Schnittstelle" Bis auf den Master senden die Slaves immer nur ein Byte und warten auf das Echo. Grüße.
Datum:
@Niffko Das ist der Vorteil eines Soft-Uart. Du kannst dadurch den invertierenden Komperator/OP einsparen. Beim internen UART würde Die Schaltung ja nicht so funktionieren... Was würdest Du denn gerne am Oszillopgramm überprüft wissen? Also das Echo kommt eigentlich immer sofort am Anschluss an jedes gesendete Byte. Wenn man das nicht überprüfen will ist das ja auch OK. Allerdings hat man dann keine Ahnung ob das Telegramm verstanden wurde und muss dann eben auf die entsprechende Reaktion warten. Eine Garantie dass es verstanden wurde gibt es ja sowieso nicht. @all Hat schon mal jemand irgendwann gesehen was am Bus passiert wenn man ein Telgramm mit der falschen CRC auf den Bus schiebt? Hatte ja gemerkt dass nach dem Break ein 0xFE gesendet wird wenn man selber mit einem Low-Pegel unter 10 Volt sendet. Vermute aber schon dass das nicht eine gewollte Reaktion ist und keine Fehlermeldung vom Busmaster. Meine Sendehardware ist soweit auch schon betriebsbereit und funktioniert soweit ganz gut. Die Software sollte auch schon zu fertig sein, aber habe im Moment nicht Zeit daran weiter zu basteln... Gruß Ingo
Datum:
Niffko _ schrieb: > Habe festgestellt, dass es nicht nötig ist, zwischen dem Senden der > Bytes, auf das Echo des Masters zu warten. Man kann die Zeichen einfach > hintereinander abfeuern. Könnte das bitte nochmal jemand testen und > bestätigen? Achso.. hatte das wohl falsch verstanden... Der Busmaster bekommt ja nicht mit ob Du die Bytes einliest/prüfst oder einfach das Echo ignorierst. Also wird das warten nicht nötig sein... Oder wolltest Du wissen WANN das Echo kommt? Das Echo kommt immer sofort ohne große Wartezeiten oder Pausen.
Datum:
Fred Granna schrieb im Beitrag #141831: > Wenn du Anfragen sendest: Bekommst du immer sofort eine Antwort zurück? Kann ich (noch) nicht sagen, ich habe keine Anfragen gesendet, sondern eher Mitteilungen. Rudi schrieb: > hier noch bei paar Oszi.-Bilder vom Bus: > > ... > > Bis auf den Master senden die Slaves immer nur ein Byte und warten auf > das Echo. Korrigiere mich bitte - aber auf den Beispielbildern mit Echos sind samt sonders nur Polling Antworten ('Ja, ich lebe noch!') zu sehen. Ein Daten-Telegramm eines Busteilnehmers ist nicht dabei, daher reicht mir das noch nicht als 'Beweis' ;-) //Niffko
Datum:
IngoF schrieb: > Das ist der Vorteil eines Soft-Uart. Du kannst dadurch den > invertierenden Komperator/OP einsparen. Beim internen UART würde Die > Schaltung ja nicht so funktionieren... jep ... Recht hast Du. Ist zwar etwas mehr Programmieraufwand, aber wenn ich dadurch Hardware einspare, ist das o.k. IngoF schrieb: > Der Busmaster bekommt ja nicht mit ob Du die Bytes einliest/prüfst ... Das nicht, aber er würde mit seinem Echo mein nächstes Byte plattbügeln, wenn er stur nach jedem empfangenen Zeichen ein Reply sendet. IngoF schrieb: > Oder wolltest Du wissen WANN das Echo kommt? Ich würde gerne wissen, wie das Oszillogramm aussieht, wenn man ein Daten-Telegramm 'am Stück' auf den Bus gibt. Theoretisch müsste dann darauf ja auch ein Echo 'am Stück' folgen. Das Echo kommt immer sofort > ohne große Wartezeiten oder Pausen. Eine kleine Pause gibt es lt. den Oszi-Bildern aber schon. Die würde auch ausreichen um zu erkennen ob noch ein Zeichen folgt, da auf das Stop-Bit(H) des gesendeten Bytes sofort das Start-Bit(L) das nächsten Bytes kommen würde. //Niffko
Datum:
Hallo zusammen ich bin erstmalig hier im Forum. Zuerst zu meiner Person: ich besitze eine Anlage mit folgenden Eigenschaften: GB 142 (Bj 2004) UBA3/MC10: Version 2.05 BC10: Version 2.00 RC30: Version 2.05 Nach Kauf im Jahr 2004 und grober Analyse des EMS-Bus-Protokolls hatte ich damals eine ansatzweise Betriebsdatenaufzeichnung mit 16bit uC aufgebaut. Allerdings konnte ich die Prüfsumme nicht herausfinden. Auch der Polling-Mechanismus war mir im Detail unklar geblieben (besitze kein Oszi). Deshalb hier an alle vielen Dank für die Arbeit, insbes. an Rudi (24.10.2010) und auch IngoF für die CRC-Berechnung. Mit dem Wissen ist es jetzt viel einfacher, Logging-Informationen zuverlässig auszuwerten. Allerdings sind meine Kenntnisse von damals (2004) schon fast wieder vergessen. Zur Frage der Schaltprogramme von IngoF (06.01.2011): IngoF schrieb: > Hatte nur meine Einstellungen hier genannt falls hier irgendjemand eine > Idee mit der Zuordnung der Daten zu den Schaltzeiten hat.. Nach Veränderung eines Schaltprogramms am RC30 sendet der RC30 offenbar einmalig vier Telegramme mit dem kompletten Inhalt des jeweils geänderten Schaltprogramms. Die entsprechenden Telegramme sind (bei meiner RC30): 10 00 3f für Heizkreis 1 10 00 38 für Warmwasser 10 00 39 für Zirkulation. Beispiel für ein geändertes Schaltprogramm am Heizkreis 1 (Log incl. CRC) Msg: 10 00 3f 00 01 1e 00 82 21 1f 20 82 41 1f 40 82 61 1f 60 82 81 1f 80 82 a1 20 a0 82 c1 20 c0 11 Msg: 10 00 3f 1b 82 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 b0 Msg: 10 00 3f 36 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 90 e7 23 Msg: 10 00 3f 51 90 e7 90 00 00 00 11 08 0a 0a 09 0a 01 01 00 01 01 00 97 Die vier Telegramme enthalten den Speicherbereich des Schaltprogramms (99 Bytes Nutzdaten): Byte 4: Startadresse des Speicherbereich-Blockes Byte 5-Ende (vor CRC): Nutzdaten (3 x 27 Bytes und 1 x 18 Bytes). Die Nutzdaten enthalten nach meiner Einschätzung: 42 * 2 Bytes mit Schaltzeiten und weitere 15 Bytes (Inhalt unklar). Ein Schaltpunkt enthält die beiden Bytes: 0xXY 0xZZ mit X = Tag (0=Mo, 2=Di, C=So, E=Schaltpunkt undefiniert), Y = Schalten (0=Aus, 1=Ein, 7=Schaltpunkt undefiniert), ZZ = Zeitpunkt (00=00:00, ... 8f=23:50, 90=undefiniert). Beispiel: 01 1e : Montag, Ein, 5:00 Vielleicht findet jemand noch die Bedeutung der restlichen Bytes heraus ?
Datum:
Niffko _ schrieb: > daher reicht mir > das noch nicht als 'Beweis' ;-) Na wenn Du Beweise brauchst.... ;o) Beitrag "Re: Logamatic 2107 Schnittstelle" Gut, man kann es nicht wirklich 100% erkennen. Aber als ich noch näher herangezoomt habe konnte man gut sehen dass nach jedem gesendeten Byte ein EchoByte vom Master kommt. Beide Bilder sind aus der selben Messung. Niffko _ schrieb: > Das nicht, aber er würde mit seinem Echo mein nächstes Byte plattbügeln, > wenn er stur nach jedem empfangenen Zeichen ein Reply sendet. habs mir doch fast gedacht dass Du es nicht so vertanden hast wie ich es gemeint hatte. Die RC30 wartet immer auf ein Echo bevor das nächste Byte kommt. Kann sein dass der Master erkennt wenn jemand ein ganzes Paket ohne Pause sendet und dann keine Echo sendet. Allerdings würde ich empfehlen es genau so zu machen wie die RC30. Also nach jedem Byte ein Byte Pause machen oder das Echo einlesen und zu vergleichen. Der einzige der ohne die 1-Byte-Pause zwischen den Sendebytes sendet ist der Busmaster. Habe allerdings auch mal ein Telegramm am OSzillioskop gesehen das in mehreren Bröckchen gesendet wurde. Kann das allerdings nicht mehr nachfollziehen. Wäre möglich dass auf dem EMS-Bus nur gesendet werden darf wenn ein Echo gesendet wurde. Kann ja sein dass der Busmaster kurz beschäftigt ist und dadurch dem Sender eine Pause aufzwingen kann. Vielleicht funktioniert ja auch das Dein "drauflospusten" und macht erst Probleme wenn irgendwelche Komponenten z.B. mit neuerer Firmware in der Heizung ausgetauscht werden. MartinQ schrieb: > ... insbes. an Rudi ... und auch IngoF für die CRC-Berechnung. ... Danke, sieht man nicht wirklich wieviel Zeit ich mit der Tabellenkalkulation verbracht habe um das erste Ergebnis zu bekommen. Aber der Entscheidende Hinweis kamm dann von Rudi, dass bei gesetzten Bit7 der CRC nochmal mit einem Wert (0x12?) geXORed wurde. Hätte ich vermutlich nie herausgefunden! Hab schon echt verzweifelt ;o) Wusste nur dass es mit den getesteten Telegrammen ohne >0x80 funktioniert hatte. Aber gut dass es das Internet und Mikrocontroller.net gibt.... MartinQ schrieb: > Vielleicht findet jemand noch die Bedeutung der restlichen Bytes heraus ? Das ist nur eine Frage der Zeit. Das ist ja einer der Hauptgründe warum ich an den EMS-Bus wollte.... Denke aber dass da noch jemand schneller sein wird als ich. Gruß Ingo
Datum:
00 11 08 0a 0a 09 0a 01 01 00 01 01 0 Stunden Party Funktion 17.08.2010 Urlaubstart Tag Urlaubstart Monat Urlaubstart Jahr 10.09.2010 Urlaubende Tag Urlaubende Monat Urlaubende Jahr 01.01.2010 Feiertagstart Tag Feiertagstart Monat Feiertagstart Jahr 01.01.2000 Feiertagende Tag Feiertagende Monat Feiertagende Jahr
Datum:
Hallo, Niffko _ schrieb: > Korrigiere mich bitte - aber auf den Beispielbildern mit Echos sind samt > sonders nur Polling Antworten ('Ja, ich lebe noch!') zu sehen. Ein > Daten-Telegramm eines Busteilnehmers ist nicht dabei, daher reicht mir > das noch nicht als 'Beweis' ;-) Könntest du einfach mal senden und dir die empfangenen Daten anzeigen lassen ? Wenn du deine gesendeten Daten nicht siehst, dann funktioniert es nicht, bzw. erkennt der Busmaster deine Daten nicht. Grüße.
Datum:
IngoF schrieb: > 01.01.2010 > Feiertagstart Tag > Feiertagstart Monat > Feiertagstart Jahr > > 01.01.2000 > Feiertagende Tag > Feiertagende Monat > Feiertagende Jahr musste eigentlich heissen: 10.01.2001 00.01.2001 Keine Ahnung warum dort 00 als Tag steht...
Datum:
IngoF schrieb: > Keine Ahnung warum dort 00 als Tag steht... Da gibt es mehrere Variationen ;-). Je nachdem wann der erste des Monats und der erste Monat anfängt, mit der Zeit das gleiche, steht da 0 oder 1. Bei den Wochentagen gibt es glaube ich auch nette Variationen, einmal fängt er Sonntags an, einmal Montags ....
Datum:
Ingo F. schrieb: > habs mir doch fast gedacht dass Du es nicht so vertanden hast wie ich es > gemeint hatte. ... Kann sein dass der Master erkennt wenn jemand ein > ganzes Paket ohne Pause sendet und dann keine Echo sendet. ... habe dich schon verstanden und der letzte Satz ist genau der Punkt. Es ist ja offensichtlich so, dass der Master nicht dogmatisch darauf besteht, nach jedem Zeichen ein Echo zu senden. Sonst hätte ich ja mein gesendetes Telegramm nicht auf dem Bus sehen können. Ingo F. schrieb: > Allerdings würde ich empfehlen es genau so zu machen wie die RC30. Naja ... aber ein gutes Pferd springt immer nur so hoch wie es muss ;o) Ingo F. schrieb: > Vielleicht funktioniert ja auch das Dein "drauflospusten" ... uhhh ... drauflospusten klingt irgendwie so negativ! **schmoll** Rudi schrieb: >Könntest du einfach mal senden und dir die empfangenen Daten anzeigen >lassen ? Hatte ich natürlich gemacht. Wie hätte ich auch sonst feststellen sollen, dass keine Pausen notwendig sind. Ursprünglich wollte ich austesten wie weit man es mit den Sendepausen treiben kann und habe die Zeit zwischen Polling-Antwort und Break immer weiter ausgedehnt. Als dann bei 255 Bitlängen immer noch niemand gemeckert hat und ich ohne Weiteres nicht mehr erhöhen konnte, war der nächste logische Schritt, es auch mal ganz ohne Pause zu versuchen. Meine Sendungen wurden immer ordnungsgemäß vom Master auf den Bus geschoben. //Niffko
Datum:
Niffko _ schrieb: > war der nächste logische Schritt, es > auch mal ganz ohne Pause zu versuchen. Meine Sendungen wurden immer > ordnungsgemäß vom Master auf den Bus geschoben. Na dann war dass wohl ein Missverständnis. Du hast vermutlich Pausen eingelegt zwischen dem Echo vom Busmaster und dem nächten Byte... Man muss garkeine Pausen machen. Also Byte senden. Master sendet ohne Pause das Echo. Sofort wenn das Echo empfangen wurde kann das nächste Byte gesendet werden. Niffko _ schrieb: > Naja ... aber ein gutes Pferd springt immer nur so hoch wie es muss ;o) Ist nur dumm wenn das Pferd nur gerade so hoch springen kann um gerade so über die Hürden zu kommen. Wenn jetzt aus irgendwelchen Gründen die Hürden 1mm höher werden hat Dein Pfer aber ein Problem und bleibt hängen. Oder Dein Pferdchen hat mal einen schlechten Tag oder ist mit dem falschen Fuß aufgestanden.... Wer weiss ;o) Niffko _ schrieb: > uhhh ... drauflospusten klingt irgendwie so negativ! **schmoll** Hatte es so verstanden dass Du nach dem ersten Byte sofort ohne auf das Echo zu warten das nächste hinterher schickst. Denke der Busmaster dürfte aber mehr Puste haben, und Dein nächstes Byte mit seinem Echo wegpusten.... Gruß Ingo
Datum:
Ganz vergessen.. Mit dem Alter schrumpft man ja auch ein wenig. Spätestens dann hat Dein "gerademalsodrüberhüpdpferdchen" Probleme :D
Datum:
IngoF schrieb: > Na dann war dass wohl ein Missverständnis. > Du hast vermutlich Pausen eingelegt zwischen dem Echo vom Busmaster und > dem nächten Byte... Oh mann, hier hat das geschriebene Wort wohl mal wieder so richtig seine Tücken. Ich versuch's jetzt nochmal: mit Pause Master sendet : 8X <brk> Ich sende : 0X P XX P XX P XX P XX P XX P <BRK> Ich empfange : 0X XX XX XX XX XX <BRK> ohne Pause Master sendet : 8X <brk> Ich sende : 0X XX XX XX XX XX <BRK> kontinuierlicher Stream, auf Stop-Bit folgt Start-Bit, keine Pausen Ich empfange : 0X XX XX XX XX XX <BRK> > Niffko _ schrieb: >> Naja ... aber ein gutes Pferd springt immer nur so hoch wie es muss ;o) > > Ist nur dumm wenn das Pferd nur gerade so hoch springen kann um gerade > so über die Hürden zu kommen. Ich schrieb: so hoch wie es muss, nicht wie es kann. > Wenn jetzt aus irgendwelchen Gründen die Hürden 1mm höher werden hat > Dein Pfer aber ein Problem und bleibt hängen. Ein gutes Pferd sieht das und springt dann ebend höher. > Oder Dein Pferdchen hat mal einen schlechten Tag oder ist mit dem > falschen Fuß aufgestanden... Wenn es schlechte Tage hat, ist es kein gutes Pferd. So ... jetzt ist aber gut ;o) IngoF schrieb: > Hatte es so verstanden dass Du nach dem ersten Byte sofort ohne auf das > Echo zu warten das nächste hinterher schickst. ja ... richtig ... geht doch. IngoF schrieb: > Denke der Busmasterdürfte aber mehr Puste haben, und Dein nächstes > Byte mit seinem Echo wegpusten.... Genau das ist der Punkt ... er pustet ebend nicht ... obwohl er könnte. //Niffko
Datum:
Hallo, Niffko _ schrieb: > IngoF schrieb: >> Denke der Busmasterdürfte aber mehr Puste haben, und Dein nächstes >> Byte mit seinem Echo wegpusten.... > Genau das ist der Punkt ... er pustet ebend nicht ... obwohl er könnte. Du kannst aber nicht wissen wann der Master senden will und das ist das Problem. Wenn der Bus auf Low gehalten wird darf nicht gleichzeitig gesendet werden. In den Scope Bildern von mir siehst du auch wie der Master gleichzeitig sendet, okay mein Sendepegel war etwas zu groß, aber das sollte erst einmal egal sein. Grüße.
Datum:
Nur mal eine Vermutung von mir: An anderer Stelle hat mal einer erwähnt, das der Empfänger des Masters auf die durch den Transistor und den 220 Ohm Widerstand erzeugten Stromschwankungen reagiert, anstatt auf die eher geringen Spannungsschwankungen. Der Strom ist bei 15V damit beim Senden um 68mA höher, bei 10V (Low) um 45mA höher als der Ruhestrom. Warum soll der Master also nicht auch unabhängig von seiner eigenen Sendeaktivität gleichzeitig in der Lage sein zu empfangen? Es reicht doch, wenn die Ansprechschwelle des Empfängers z.B. bei 30mA liegen würde! Damit könnte ich mir vorstellen das der Master brav nach jedem empfangenen Byte sofort das Spannungsecho sendet und parallel dazu auf seiner Stromschnittstelle das nächste Byte empfängt. Der Sendeschaltung ist es auch schitegal ob sie mit statisch 15V oder mit modulierten 10/15V beaufschlagt wird. BTW: Nachdem ich jetzt auch mal mitrede zu meiner Person: Buderus GB162 Windhager Logwin UVR1611 Den GB162 steuere ich über Leistungsmodulation (10V mit Original EM10, hallo Niffko :-) ) Bislang hab ich nur mitgelesen (und werd es wohl auch im wesentlichen auch in Zukunft tun) da ich momentan mich eher darauf konzentiere zu versuchen das LON-Protokoll zu entschlüsseln weil ich das was ihr hier macht mit dem Logwin machen möchte.... Am Ende sollen sowohl der Logwin als auch der GB162 mit entsprechenden Interfaces direkt via OpenCAN von der UVR1611 gesteuert/ausgelesen werden.
Datum:
rkoch schrieb: > Warum soll der Master also nicht auch unabhängig von seiner eigenen > Sendeaktivität gleichzeitig in der Lage sein zu empfangen? Es reicht > doch, wenn die Ansprechschwelle des Empfängers z.B. bei 30mA liegen > würde! Das wäre vielleicht die Erklärung warum es bei Niffko so funktioniert.
Datum:
IngoF schrieb: >> Warum soll der Master also nicht auch unabhängig von seiner eigenen >> Sendeaktivität gleichzeitig in der Lage sein zu empfangen? Es reicht >> doch, wenn die Ansprechschwelle des Empfängers z.B. bei 30mA liegen >> würde! > > Das wäre vielleicht die Erklärung warum es bei Niffko so funktioniert. Dann bräuchte der Master aber 2 Empfänger bzw. eine Umschaltung der beiden bei TX und RX, denn das LOW bekommt er nicht durch Luft und Liebe auf den Bus. Zusätzlich ist der Bus nicht Taktsynchron, ergo funktioniert das so nicht. Grüße.
Datum:
IngoF schrieb: > Hat schon mal jemand irgendwann gesehen was am Bus passiert wenn man ein > Telgramm mit der falschen CRC auf den Bus schiebt? Was Telegramme angeht, die für den Busmaster(08) bestimmt sind, kann ich hierzu Folgendes sagen. Grundsätzlich werden auch Telegramme mit falscher CRC auf den Bus 'ge-echot'. Beim Senden mit Unterbrechung ist das natürlich logisch und nicht zu verhindern. Aber auch wenn mann das Telegramm im Paket absetzt und der Busmaster vor dem Wiederholen die Möglichkeit zur Prüfung hätte, wird das fehlerhafte Telegramm auf den Bus gegeben. Ein fehlerhaftes Telegramm wird dann allerdings vom Master mit 0x04 <brk> quittiert, wogegen ein korrektes Telegramm ein 0x01 <brk> bekommt. Somit wäre das auch eine gute Möglichkeit eine abgesetzte Sendung zu verifizieren. //Niffko
Datum:
> Dann bräuchte der Master aber 2 Empfänger bzw. eine Umschaltung der > beiden bei TX und RX, denn das LOW bekommt er nicht durch Luft und Liebe > auf den Bus. Zusätzlich ist der Bus nicht Taktsynchron, ergo > funktioniert das so nicht. Wenn ich mich nicht irre wissen wir über die Sendeschaltung des Masters recht wenig. Da es möglich ist auf einer Busleitung eine spannungsgesteuerte und eine stromgesteuerte Übertragung mit annähernd 100%iger Kanaltrennung zu fahren könnte ich mir sehr wohl vorstellen das das funktioniert. So lange unser System nicht Multi-Master-Fähig ist (ist es das ?) bräuchte der Master genausowenig wie die Clients 2 Kanäle. Bei ihm wäre nur die Sende/Empfangsschaltung genau konplementär zu der der Clients... Da man der Sendeschaltung des Masters offenbar einiges an Strom zumuten kann würde ein zweiter Master mit Spannungssignalisierung IMHO nicht funktionieren. Insofern wäre Multi-Master IMHO nur möglich, wenn man den Master in zwei Funktionalitäten trennt: Bus-Master und Device Master, d.h. der Bus Master ist der einzige am Bus mit Spannungssender, Device Master senden und empfangen (solange sie nicht zugleich Bus-Master sind) wie Clients, aber machen das Polling für ihre Clients. Ob es so was wie Multi-Master gibt kann ich aus den bisherigen Beiträgen auf die Schnelle nicht herauslesen. I.d.R. kommen hier wohl nur entweder Logamatic oder BC10 als Master vor.... Falls es doch mehrere Master am Bus gibt müssen diese aber eigentlich nur im Moment des Einschaltens sich einig werden wer den Bus-Master macht - im simpelsten Fall einfach indem derjenige der beim Einschalten 0V auf dem Bus sieht seine Treiber aktiviert. Der Verlierer in dieser Selektion schaltet dann einfach sein RX/TX auf das Client-Interface. Ich weiß zwar absolut nicht ob das so läuft, aber vorstellbar wäre es - gibt es schließlich in anderen Systemen nicht viel anders. Die Master-Sendeschaltung stelle ich mir relativ primitiv vor: 2 Spannungsquellen (15V/10V), die 10V einfach über eine Diode (oder einen Transistor) auf den Bus geschaltet, die 15V immer über Transistor. Eventuell auch noch einfacher: 15V und Spannungsdrop von ~5V durch eine 5V-Leistungs-Z-Diode die mit einem Transistor überbrückt wird. Als Stromempfänger dann einfach ein Widerstand (ca. 6 Ohm), deshalb der Spannungsabfall von ca. 0,5 V bei ~70mA, der Ruhestromwert über Tiefpass auf Comparator, der Impulsstromwert direkt. Vieleicht fabiluiere ich hier nur ins Blaue hinein, aber technisch vorstellbar wäre so was.
Datum:
Kurze Zwischenfrage: Kann mir einer von euch ein wenig C-Code zur Verfügung stellen? Bekomme das mit dem Software-UART leider nicht richtig hin :-(
Datum:
Fred Granna schrieb: > Bekomme das mit dem Software-UART leider nicht > richtig hin :-( Denke da kann Dir wohl nur Niffko weiterhelfen. Hier noch mal der Link mit dem Soft-UART-Link von Niffko: Beitrag "Re: Logamatic 2107 Schnittstelle" Sonst verwenden hier ja wohl alle die hier gepostet haben einen Hardware UART. Was hast Du denn für ein Problem mit dem Soft-UART? Der i2c-UART ist Geschichte?? Niffko _ schrieb: > Grundsätzlich werden auch Telegramme mit > falscher CRC auf den Bus 'ge-echot'. Das hatte ich mir auch schon fast gedacht. Der Master kann die Prüfsumme ja erst vergleichen wenn das Telegramm zu ende ist und das letzte Break gesendet wurde. Niffko _ schrieb: > Ein fehlerhaftes Telegramm wird dann allerdings vom Master > mit 0x04 <brk> quittiert, wogegen ein korrektes Telegramm ein 0x01 <brk> > bekommt. Habe die Quittierung bisher noch nie gesehen. Kann aber sein dass die im Polling untergegangen ist. Kommt das sofort nach dem Telegramm, oder erst nach dem 0x0b <break> wenn Die "Kontrolle" zurück gegeben wird? Gruß Ingo
Datum:
IngoF schrieb: > Denke da kann Dir wohl nur Niffko weiterhelfen. Hier noch mal der Link > ... Hatte Niffko ne PM geschickt aber keine Antwort bekommen... > Sonst verwenden hier ja wohl alle die hier gepostet haben einen Hardware > UART. Nehme ich ungern, der Atmega328 von meinen Boards ja nur eine. > Was hast Du denn für ein Problem mit dem Soft-UART? Der i2c-UART ist > Geschichte?? Mit dem i2c-Uart hab ich leider Timingprobleme. Die Break-Erkennung ist zu langsam da ich den Chip nur über Polling ansprechen kann.
Datum:
@Fred Granna Hast Du Dir die App-Note AVR304 (http://atmel.com/dyn/resources/prod_documents/doc0941.pdf bzw. http://atmel.com/dyn/resources/prod_documents/avr304.zip) schon mal angeschaut? Ist doch eigentlich ganz gut dokumentiert und auch nicht wirklich kompliziert. Die einzige Änderung wäre doch anstatt des externen Interrupts den Comparator-IRQ zum Starten des Empfangs zu verwenden und dann natürlich anstatt des IO-Ports den Ausgang des Comparators zum Empfang zu verwenden.... und natürlich ggf. den IAR-Code an z.B. gcc (WinAVR) anzupassen.
Datum:
Fred Granna schrieb: > Hatte Niffko ne PM geschickt aber keine Antwort bekommen... öhmm, sorry ... war keine böse Absicht. Das Motherboard von meinem Dell ist mal wieder im Eimer und auf dem Laptop habe ich keinen Email-Krams drauf. Meinen AVR-Code möchte ich aber momentan keinem zumuten, der ist noch zu 'Baustelle'. Formuliere doch mal die Probleme die Du hast, dann kriegen wir das schon hin. Vielleicht hilft's ja auch dem Ein oder Anderen mit ähnlichen Problemen. Ich habe z.B. einen Gutteil Zeit investiert um herauszufinden, dass ich die Anzahl der Timertakte für eine Bitlänge von 417 auf 400 korrigieren muss (F_CPU 4MHz). Längere Telegramme wurden zum Schluss hin immer falsch eingelesen, da die Abtastung zeitlich aus dem Ruder lief. Wenn Du den Soft-UART von P.D. in alles Einzelheiten verstanden hast, solltest Du das eigentlich hinbekommen. Also ... lass mal hören, wo die Säge klemmt. //Niffko
Datum:
Niffko _ schrieb: > Ich habe z.B. einen Gutteil Zeit investiert um herauszufinden, dass ich > die Anzahl der Timertakte für eine Bitlänge von 417 auf 400 korrigieren > muss (F_CPU 4MHz). Längere Telegramme wurden zum Schluss hin immer > falsch eingelesen, da die Abtastung zeitlich aus dem Ruder lief. 417 wäre aber definitiv richtig... Kann es sein, das Du den Timer immer wieder neu aufsetzt anstatt ihn einfach im PWM Mode mit IRQ bei Overrun laufen zu lassen? Dann musst Du natürlich die Zeit die der AVR zum Setzen des Zählers braucht abziehen... Trotzdem gibt das u.U. immer noch genug Jitter um aus dem Ruder zu laufen, je nachdem ob Du noch andere IRQs aktiv hast.
Datum:
rkoch schrieb: > 417 wäre aber definitiv richtig... tja ... wem sagst Du das. Vielleicht geht mein Quarz ja 'etwas' nach. :D rkoch schrieb: > Kann es sein, das Du den Timer immer wieder neu aufsetzt anstatt > ihn einfach im PWM Mode mit IRQ bei Overrun laufen zu lassen? Negativ. Timer1 wird bei Programmstart einmal auf volle Bitzeit initialisiert und läuft danach permanent im CTC-Mode. Der TX-Algo läuft in der OutputCompareA ISR. RX wird über InputCapture gestartet (Startbit) und OutputCompareB einmalig so gesetzt, dass die Abtastung in der OutputCompareB ISR eine halbe Bitzeit später beginnt. Von daher dürften eigentlich keine Abweichungen entstehen. //Niffko
Datum:
IngoF schrieb: > Habe die Quittierung bisher noch nie gesehen. Kann aber sein dass die im > Polling untergegangen ist. Kommt das sofort nach dem Telegramm, oder > erst nach dem 0x0b <break> wenn Die "Kontrolle" zurück gegeben wird? Hallo Ingo, nachfolgend ein Paar Snippets zum Thema Quittierung. Quittierung 'standard':
91 00 11 08 1E 00 00 F9 9B 00 01 00 11 00 |
Quittierung 'mittendrin':
90 00 10 88 11 24 18 29 00 08 10 11 24 36 41 00 E3 8B 01 11 11 2C 00 00 00 04 00 10 88 11 30 0C 15 00 08 10 11 30 36 41 00 E3 8B 01 11 11 2C 00 00 00 4A 00 10 08 35 00 01 01 00 00 01 00 10 88 1C 00 17 5A 00 08 10 1C 00 00 00 00 00 00 00 00 00 00 00 00 62 00 10 00 |
Folgendes ist mir erst kürzlich aufgefallen. Es widerlegt meine These, dass nur Telegramme an den Master(08) quittiert werden und wirft die Frage auf, wer überhaupt quittiert - der Master oder der jeweilige Empfänger!? Ich wäre ja fast für Letzteres.
90 00 10 11 9D 00 64 B3 00 01 00 10 91 02 00 03 FE 00 11 10 02 00 47 01 01 30 00 10 00 02 00 56 01 06 01 00 10 00 |
//Niffko
Datum:
Niffko _ schrieb: > der Master oder der jeweilige > Empfänger!? Ich wäre ja fast für Letzteres. Na das wird sich ganz einfach feststellen lassen... Allerdings habe ich noch einen Bug in meiner Senderoutine. Irgendwie gibt es noch Probleme mit dem Vergleich der gesendeten Bytes. Wenn die Quittierung von der MC30 kommt wenn ich ein Telegramm an sie sende sollte man erst den Sendepegel der RC30 sehen und anschließend das Echo vom Busmaster. Wenn der Busmaster die Telegramme quittiert fehlt der. Wenn irgendjemand die Telegramme quittiert die man von anderen Busteilnehmern bekommt, dann kann es nur der Master sein. Bin auch für die Vermutung dass der Empfänger quittiert. Aber bisher natürlich nur eine Vermutung. Mir ist gerade aufgefallen dass nur Telegramme bestätigt werden in denen das Bit7 nicht gesetzt ist. Also nur Telegramme auf die sonst keine Antwort vom Empfänger kommt. Vermutlich auch ein Zeichen dafür dass der Empfänger bestätigt.... Gruß Ingo
Datum:
IngoF schrieb: > Na das wird sich ganz einfach feststellen lassen... ... sagt jemand, der ein DSO sein Eigen nennt - wer hat der kann ^^ //Niffko
Datum:
Angehängte Dateien:Hallo, habe noch mal meine alten LOG-Files durchsucht. Es sieht so aus als ob Das Telegramm 10 00 06 ..... immer bestätigt wird. Telegramme an die 21 wurden nicht bestätigt. An die 08 allerdings schon.. Also hat das nicht nur was mit dem Polling zu tun... Allerdings war das beim herausfinden der Adressen am EMS-Bus und die 0x21 bin ich gewesen (Hatte nutr Polling beantwortet) Einmal kam die 01 ohne dass das Polling an die 10 rausgegangen ist und dannach Antwortet die 10 (MC30) Oder ist das ein Check ob die die RC30 noch da ist? Macht ja auch wenig Sinn.. es gibt ja das Polling. Die "Quittierung" kommt sogar mal ganz spontan ohne irgendwelche Telegramme. Vielleicht wird es zusätzlich jede Minute die keine Telegramme versendet wurden auch auf den Bus gegeben. Allerdings hatte ich damals noch einen großen Buffer und die Zeiten ändern sich selten. Kann also im Moment nicht sagen wie lange die Pause sein kann.... Die Qutittierung 04 habe ich allerdings garnicht gefunden. Hier mal ein paar Ausschnitte die ich Beispielhaft aus meinen Log-File geschnibbelt habe:
Datum:
Niffko _ schrieb: > ... sagt jemand, der ein DSO sein Eigen nennt - wer hat der kann ^^ Genau das hatte ich auch damit gemeint.. Allerdings ärgert mich noch meine Senderoutine. Der Vergleich will nicht immer klappen... Also wenn ich soweit bin werde ich mal danach gezielt suchen... Bis dahin kann ich nur dannach in meinen Log-Files suchen und wild herumspekulieren ;o) Gruß Ingo
Datum:
IngoF schrieb: > Telegramme an die 21 wurden nicht bestätigt ... und die > 0x21 bin ich gewesen (Hatte nutr Polling beantwortet) ok ... das spricht dafür, dass der Empfänger quittiert. Denn als solcher wärst Du offensichtlich dafür verantwortlich gewesen, hast es aber nicht getan. IngoF schrieb: > Die Qutittierung 04 habe ich allerdings garnicht gefunden. ... hierfür wirst Du ein Telegramm mit einer falschen CRC schicken müssen. Wie es aussieht, ist der Bus, was Fehler angeht, ziemlich robust. //Niffko
Datum:
Niffko _ schrieb: > ok ... das spricht dafür, dass der Empfänger quittiert. Mich stört nur noch das ab und zu die 01 Grundlos mitten im Polling auftaucht.. Aber vermute mal das war irgend ein Fehler in meiner Software. Es trat immer vereinzelt auf und danach kam eine Antwort von der 10 (MC30) ohne Polling.. Hätte also eigentlich eine 90 sein müssen... Niffko _ schrieb: > Wie es aussieht, ist der Bus, was Fehler angeht, ziemlich > robust. Also in 137 MByte (60Stunden) kein einziges fehlerhaftes Telegramm ist doch auch schon mal was
Datum:
Hallo, ich sehe die 0x01 auch ;-). Die Bestätigung wird offensichtlich nur gesendet, wenn "Werte" gesetzt werden: => 10 08 1a 00 38 64 64 00 09 => 01 => 10 08 35 00 11 11 30 => 01 Wenn in der Bedienung ein paar Werte geändert werden, sollte die 0x01 auch zu sehen sein !? Grüße.
Datum:
Angehängte Dateien:Hallo an alle... im Moment tut sich ja nicht mehr viel in diesem Thread. Aber eigentlich ist ja inzwischen schon fast alles bekannt. Habe schon mal das 3964R-Protokoll "eingebaut". Falls jemand sowas ähnliches vorhat und das noch testen will kann ja mal mein kleines 3964R-Terminal Programm ausprobieren. Zu finden http://modelledit.rc-sim.de unter Downloads. Den Trace kann man nur sehen wenn das Programm über die Batchdatei oder über Console mit java -jar Terminal-3964R aufgerufen wird. der "löschen"-Knopf hat noch keine Funktion. Als Paramter kann man noch den seriellen Port übergeben. Sollte auch unter Linux oder auf dem MAC laufen. Habe es allerdings noch nciht getestet. Einfach "COM1" auf den entsprechenden Namen ändern. Java 1.6 ist Mindestvorraussetztung. Wer das Programm hilfreich findet kann ja eine Kleinigkeit an Unicef spenden. Installation: Entpacken und starten :-) Gruß IngoF
Datum:
Hallo, erstmal an alle Lob und Anerkennung, ich lese schon längere Zeit mit. Da es aber sehr viel ist, finde ich es gut wenn man eine Zusammenfassung vom heutigen Stand hätte. Ich selbst habe eine Buderus Heizungsanlage aus dem Jahr 2003: GB142-24 RC30 MM10 WM10 da ich den PIC 18F2550 / 18F4550 programmiere bin ich an ein Programm für diesen interessiert. Also die Schnittstelle zum EMS Bus. Ich möchte zuerst nur einmal die Störmeldungen abfragen falls das Gerät ausfällt. Später möchte ich evtl. der RC30 Temperatur-Sollwerte vorgeben. Ich denke das ist nach dem heutigen Stand möglich. IngoF schrieb: > Also ich habe zumindest geplant so eine Platine als "Sammelbestellung" > > zu machen. Allerdings ist meine Hardware noch in der Entwicklung. @IngoF an eine Sammelbestellung bin ich interessiert, soll es ein PIC sein? mich würde auch deine Firmware interessieren (für PIC). Welche Programmiersprache benutze Du? Macht es einen Sinn die Komperatoreingänge zu benutzen? Gruß pic18f
Datum:
F. F. schrieb: > da ich den PIC 18F2550 Ich habe den 18F258 bisher verwendet und nehme jetzt den 18F2580. Der 18F2550 hat keine eingebaute CAN-Schnittstelle. Mit den Komperatoreingängen habe ich mich nicht beschäftigt. Wenn man diese beutzen möchte kann man den eingebauten EUSART nicht nutzen und müsste auf einen Soft-UART zurückgreifen. Aber irgendwie sind mir persönlich externe Komperatoren lieber. Notfalls kann man die auch austauschen. Vermutlich werde ich aber auch noch einen SoftwareUART zusätzlich verwenden damit ein PIC zwischen EMS-Bus und PC läuft. Vielleicht wird es ja auch ein externer UART oder auch ein anderer PIC. Im Moment habe ich einen PIC der den EMS-Bus mit CAN verbindet. Der zweite verbindet dann den CAN mit dem PC. Ich bin Assembler Anhänger weil ich kein C kann und mir einbilde dass ich dann mehr Kontrolle über die Hardware habe. Werde später dann den Eagle-Schaltplan und die Firmware als Download anbieten und natürlich eine Art Sammelbestellung machen. Wird vermutlich SMD sein die selber bestückt werden muss. Wenn natürlich genug zusammenkommen würde eine fertig bestückte Platine sich auch rechnen. Das Sollwert vorgeben sollte wirklich kein Problem mehr sein... Die Prüfsumme, das Telegrammformat sind ja soweit eigentlich bekannt... Bin allerdings noch nicht mit meiner Empfangsschaltung zufrieden und werde demnächst mal die gepostete Buderus-Lösung ausprobieren. Vermutlich wird die besser als meine "Standartbeschaltung". Im Moment kämpfe ich noch mit den letzten Feinarbeiten an dem 3964R-Protokoll herum. Werde mich hier auf jedenfall noch mal zu Wort melden wenn eine Sammelbestellung in Sicht ist. Gruß IngoF
Datum:
Hallo, endlich jemand der einen PIC programmiert. Der 18F2580 hat gegenüber den 18F2550 zwei Nachteile. Es fehlt der USB-Bus sowie die Komperatoreneingänge, diese hat laut Datenblatt nur der große Bruder 18F4580. Falls man diesen nimmt, dann dürfte es mit der EUSART keine Probleme geben. Der Vorteil des 18F2580 ist, daß wenn 32Mhz Taktfrequenz genügen man keine Quarzbeschaltung benötigt, da man den internen Takt über der der PLL hochtreiben kann. Sowie der CAN-Bus. Habe ich es richtig verstanden, daß der CAN-Bus nur für die Verbindung der zwei PIC's genommen wird? Könnte da man nicht den I2C-Bus nehmen oder ist da die Reichweite zu klein. Welche Schnittstelle wird denn zum PC genommen? Eine RS232? Diese Schnittstelle haben die meisten neuen Rechner nicht mehr, hier wäre eine USB-Schnittstelle von Vorteil. Zum EMS-Bus wird wohl die Eusart-Schnittstelle mit dem 3964R Protokoll genommen, welches ich nicht kenne. Von SMD bin ich kein Freund, ich weiß nicht ob ich dies mit einem normalen Lötkolben löten kann. Außerdem, falls man mal was ändert, dann ist die Beschaltung doch sehr klein. Die PIC's habe ich immer mit einen Bootloader, welcher ich mit einen einfachen Brenner programmiert hatte, versehen. Die Firmware hatte ich dann mit den USB-Bus geladen hatte. Pitkit oder ähnliches besitze ich nicht. Assembler ist Ok, ich programmiere zwar mehr in C18 wegen der Übersichtlichkeit, aber schnelle Interruptprogramme habe ich meistens in Assembler geschrieben. Ich bin auf jeden Fall auf den Schaltplan sowie der Firmware interessiert und freue mich wenn eine Sammelbestellung in Sicht ist. Viele Grüße F. F.
Datum:
Hallo F.F. habe mal einen neuen Thread für dieses Thema gemacht: Beitrag "Buderus EMS-"Gateway" mit PIC18F / Sammelbestellung" Alles zu der Sammelbestellung, Schaltungs- und Softwareentwicklung gibt es dann dort. Hat ja schon lange nichts mehr mit der Buderus 2107 zu tun. Gruß IngoF
Datum:
Niffko _ schrieb: > achso ... ich habe mal das bus interface eines moduls mm10 aufgedröselt > und zu 'papier' gebracht (siehe anhang). Hallo Niffko, deine Schaltung ist so nicht richtig. An den Eingangskomparator muss an - die Uref. Die 1nF/100k/10k sollten da nicht sein, wofür sind die? Ich habe die Schaltung mal aufgebaut und mit einem Funktionsgenerator getestet und gemessen. Funktioniert ganz ordentlich mit der Änderung. Grüße.
Datum:
Rudi schrieb: > deine Schaltung ist so nicht richtig. Gut gebrüllt, Löwe. > An den Eingangskomparator muss an - die Uref. Da am (+) Eingang über den 47K Widerstand ebenfalls Uref. anliegt, hättest Du damit IMHO den gleichen Gleichspannungspegel an beiden Eingängen, hältst Du das bei einem Komparator für sinnvoll?! So wie ich das sehe, wird Uref. über einen Spannungsteiler (10K/100K) auf den (-) Eingang gelegt. Somit ist der "Ruhepegel" an (-) geringfügig unterhalb dem von (+) und der Komparator damit definiert auf High. Den 1nF Kondensator sehe ich als eine Art Störunterdrückung. Kurze (Stör)Impulse führen nicht zu einer "Fehlzündung" des Komparators, da die Pegel zunächst an beiden Eingängen abgesenkt werden und somit kein Delta entsteht. Ist der Low-Impuls aber länger als die Umladezeit des 1nf Kondensators, schaltet der Komparator. Soweit meine Theorie ... sollten hier Profis mitlesen, bitte ich ggf. um Berichtigung. Besagte Schaltung arbeitet übrigens in meinem Projekt 'Rücklaufgeführte Heizungsregelung' bereits über mehrere Monate sowohl im Rx- als auch im TX-Betrieb einwandfrei. // Niffko
Datum:
Niffko _ schrieb: > Rudi schrieb: >> deine Schaltung ist so nicht richtig. > > Gut gebrüllt, Löwe. Ja ;-). Die Signale sehen an +/- in etwa gleich aus, bei dem 1nF Kondensator etwas verzerrter. Ich kann mal Bilder mit dem Oszi machen, wie gesagt ich habe das mit einem Signalgenerator getestet (Offset 9.5V und dann ein 5V Signal) ohne ordentliches Signal am Ausgang. Es gab nur Spikes an den Flanken. Grüße.
Datum:
Angehängte Dateien:Anbei das Bild. Oben das Signal am 10uF und unten das Signal am 1nF. Wie man sieht kann der Komparator bei diesen Signalen nicht schalten. Niffko _ schrieb: > Da am (+) Eingang über den 47K Widerstand ebenfalls Uref. anliegt, > hättest Du damit IMHO den gleichen Gleichspannungspegel an beiden > Eingängen, hältst Du das bei einem Komparator für sinnvoll?! Der Widerstand arbeitet als Pullup für das Signal am Kondensator, siehe Bild, ansonsten würde der Kondensatorausgang bei DC-Signalen floaten. > So wie ich das sehe, wird Uref. über einen Spannungsteiler (10K/100K) > auf den (-) Eingang gelegt. Somit ist der "Ruhepegel" an (-) geringfügig > unterhalb dem von (+) und der Komparator damit definiert auf High. Auch hier wird das Signal hinter dem Kondensator über die beiden Widerstände konditioniert, siehe Bild, nur ist die Ladung bei diesem Kondensator relativ gering und das Signal fällt relativ schnell ab. > Den 1nF Kondensator sehe ich als eine Art Störunterdrückung. Kurze > (Stör)Impulse führen nicht zu einer "Fehlzündung" des Komparators, da > die Pegel zunächst an beiden Eingängen abgesenkt werden und somit kein > Delta entsteht. Ist der Low-Impuls aber länger als die Umladezeit des > 1nf Kondensators, schaltet der Komparator. Nein. Die Kondensatoren übertragen den AC-Anteil vom Signal. Sprich nur sich ändernde Signale. > Besagte Schaltung arbeitet übrigens in meinem Projekt 'Rücklaufgeführte > Heizungsregelung' bereits über mehrere Monate sowohl im Rx- als auch im > TX-Betrieb einwandfrei. Das ist seltsam. Kannst du die Signale mit einem Oszi. messen? Grüße.
Datum:
Angehängte Dateien:Hallo Rudi, vorab, die Signalhübe und Offsets unbekannterweise jetzt mal außen vor gelassen - warum schaltet der Komparator nicht spätestens bei Markierung II (siehe Anhang)? Zu diesem Zeitpunkt liegt das Signal an (+) noch auf Low und an (-) ist durch die geringe Kapazität des 1nF Kondensators bereits keine AC-Einkopplung mehr vorhanden. Die Spannung an (+) müsste sich also unterhalb der an (-) befinden, was ein Schalten des Komparators zur Folge hätte. > Niffko _ schrieb: >> ... über den 47K Widerstand ebenfalls Uref. anliegt... > > Der Widerstand arbeitet als Pullup ... Sozusagen. Und auf welche Spannung pullt er up ... auf Uref. > ... als Pullup für das Signal am Kondensator, siehe > Bild, ansonsten würde der Kondensatorausgang bei DC-Signalen floaten. Das ist nicht unrichtig, aus meiner Sicht ist der Hintergrund aber ein anderer. Wie Du richtig angemerkt hast, wird über die Kondensatoren nur der AC-Anteil des Signals eingekoppelt. Durch die Widerstände werden die Eingänge des Komparators auf ein gewisses DC-Niveau vorgespannt - über den Daumen, (+) auf 0,6V und (-) auf 0,55V. Der eingekoppelte AC-Anteil bewirkt dann das Auslösen des Komparators. Beim Anliegen eines Null-Bits gibt es bis zum Schalten des Komparators eine Totzeit (Bereich zwischen I und II), da das Signal zunächst auf beide Eingänge wirkt, die Spannung an (-) durch die schnellere Umladung des 1nF Kondensators aber relativ fix wieder auf 0,55V steigt (siehe Bild). >> So wie ich das sehe, wird Uref. über einen Spannungsteiler (10K/100K) >> auf den (-) Eingang gelegt. > > Auch hier wird das Signal hinter dem Kondensator über die beiden > Widerstände konditioniert, siehe Bild, nur ist die Ladung bei diesem > Kondensator relativ gering und das Signal fällt relativ schnell ab. Wie gesagt, m.E. keine Signalkonditionierung, sondern ein Vorspannen der Komparatoreingänge. >> Den 1nF Kondensator sehe ich als eine Art Störunterdrückung... > > Nein. Die Kondensatoren übertragen den AC-Anteil vom Signal. Sprich nur > sich ändernde Signale. Du hast mich nicht richtig verstanden. Das es hier um AC-Kopplung geht, sollte klar sein. Das Ding ist, dass der 10µ das Signal 1:1 durch reicht, der 1nF aber nur kurze Spikes auf den (-) Eingang koppelt. Daraus ergibt sich eine Art Schaltverzögerung, wodurch kurze Störimpulse dann keinen Schaltvorgang auslösen. >> Besagte Schaltung arbeitet übrigens ... einwandfrei. > > Das ist seltsam. Kannst du die Signale mit einem Oszi. messen? Aus Mangel an einem Funktionsgenerator, könnte ich das nur am Bus machen. Weiß nicht ob das viel Sinn macht. Ist auch alles ziemlich fummelig, da SMD. Mal sehen ... // Niffko Edit sagt: Zumindest ein Kollege aus dem Junkers-Thread scheint die Schaltung auch erfolgreich anzuwenden.
Datum:
Hallo, Niffko _ schrieb: > vorab, die Signalhübe und Offsets unbekannterweise jetzt mal außen vor > gelassen - warum schaltet der Komparator nicht spätestens bei Markierung > II (siehe Anhang)? Zu diesem Zeitpunkt liegt das Signal an (+) noch auf > Low und an (-) ist durch die geringe Kapazität des 1nF Kondensators > bereits keine AC-Einkopplung mehr vorhanden. Die Spannung an (+) müsste > sich also unterhalb der an (-) befinden, was ein Schalten des > Komparators zur Folge hätte. Ja, wenn der Komparator schnell genug ist sollte man am Ausgang Spikes sehen. Der schaltet den Ausgang auf High wenn das Signal (+) über oder auf Low wenn das Signal unter der Schwelle (-) liegt. Und hier schaltet der nicht weil das Signal nie unter der Schwelle liegt. >> Niffko _ schrieb: >>> ... über den 47K Widerstand ebenfalls Uref. anliegt... >> >> Der Widerstand arbeitet als Pullup ... > > Sozusagen. Und auf welche Spannung pullt er up ... auf Uref. Genau, wenn am Kondensator mal kein Signal anliegt bzw. nur ein High auf dem Bus anliegt, liegt das Signal über der Schwelle und am Ausgang vom Komparator liegt das Signal stabil auf High. Ansonsten würde sich der Kondensator mit der Zeit entladen und gegen 0V laufen, unter die Schwelle und am Ausgang wäre ein Low zu sehen. Das spricht eigentlich dafür, das der Kondensator nicht an das Eingangssignal geht sondern dort an Masse (Blockkondensator) und die beiden Widerstände als Widerstandsteiler arbeiten um die Uref etwas zu senken. Grüße.
Datum:
Wie ist denn die Spannungsauflösung (V/cm) auf Deinem Oszi-Bild und sind die Offsets real oder hast Du vertikal verschoben? // Niffko
Datum:
Niffko _ schrieb: > Wie ist denn die Spannungsauflösung (V/cm) auf Deinem Oszi-Bild und sind > die Offsets real oder hast Du vertikal verschoben? Der Auflösung lag bei 200mV, wenn ich mich recht erinnere. Die Offsets sind vertikal verschoben. Ich werde für den RX-Pfad wie bisher den ADCMP370 benutzen, der hat bis jetzt funktioniert und die Bauteile halten sich in Grenzen. Den TX-Pfad werde ich wie bei dir in der Schaltung aufbauen, aber ohne Komparator. Die Versorgung werde ich auf 3V3 legen, aus einem LDO und die Anbindung wird dann Isoliert (ISO7421D). Grüße.
Datum:
Hallo, Niffko _ schrieb: > Besagte Schaltung arbeitet übrigens in meinem Projekt 'Rücklaufgeführte > Heizungsregelung' bereits über mehrere Monate sowohl im Rx- als auch im > TX-Betrieb einwandfrei. könntest Du dein Projekt etwas näher beschreiben? Ich werde demnächst etwas ähnliches regeln. Leider ist die Heizung z.Z. nicht mehr operational, da in diesem Raum eine Bodensanierung anliegt. Ich will den Rücklauf über einen Speicher anheben, der von der Holzheizung geladen wird und evtl. später auch von Solar. Grüße.
Datum:
Hi Rudi, Rudi schrieb: > könntest Du dein Projekt etwas näher beschreiben? Ich habe die Heizkreisregelung komplett aus dem RC35 herausgenommen. Die Brenneransteuerung erfolgt im Grunde über zwei Kennlinien - Außentemperatur vs. Rücklaufsolltemperatur und Außentemperatur vs. Brennerleistung. Die Führungsgrößen Rücklauftemperatur und Außentemperatur werden vom Bus genommen, Brenneransteuerung erfolgt über außentemperaturabhängige Vorgabe der Brennerleistung. Für Logging- und Monitorzwecke wird über UART ein Telegramm mit relevanten EMS-Daten bereitgestellt, EMS-Kommunikation läuft über Soft-UART. Momentan bin ich dabei, mit C# eine GUI zu stricken, über die dann Monitoring, Logging(.csv) und Parametrierung des Reglers möglich ist. > Ich will den Rücklauf über einen Speicher anheben, der von der > Holzheizung geladen wird und evtl. später auch von Solar. Hmm ... eigentlich brauchst Du für so was nicht an den EMS-Bus. Macht man üblicherweise mit einem Differenztemperatur-Regler welcher Anlagenrücklauf und Puffertemperatur überwacht. Ist der Anlagenrücklauf kälter als der Puffer, wird er über ein Dreiwegeventil in den Puffer und das Pufferwasser zum Heizkesselrücklauf geführt. Sollte die Puffertemperatur noch nicht deckend sein, heizt der Heizkessel entsprechend seiner Kennlinie nach. //Niffko
Datum:
Hallo, Niffko _ schrieb: > Hmm ... eigentlich brauchst Du für so was nicht an den EMS-Bus. Macht > man üblicherweise mit einem Differenztemperatur-Regler welcher > Anlagenrücklauf und Puffertemperatur überwacht. Ist der Anlagenrücklauf > kälter als der Puffer, wird er über ein Dreiwegeventil in den Puffer und > das Pufferwasser zum Heizkesselrücklauf geführt. Sollte die > Puffertemperatur noch nicht deckend sein, heizt der Heizkessel > entsprechend seiner Kennlinie nach. Ja, klassische Zweipunktregelung die den Brenner zum oszillieren bringt und ich vermeiden wollte. Ich werde ein "richtiges" Mischerventil benutzen und versuchen den Brenner auf Sparflamme zu fahren und nicht volle Pulle umschalten. Wenn die Speichertemperatur größer als die Sollvorlauftemperatur ist, verbrät mir die Zweipunktregelung zu viel Energie. Grüße.
Datum:
Hallo :) Hat hier einer eigentlich mal einen längeren Mitschnitt was sich zwischen Servicekey und "Servicebuchse" so tut nachdem man das Teil eingesteckt hat?
Datum:
Hoch eine Frage bzgl. KM271-Schnittstelle: Habe mir grad mal die "Baupläne" für die Nachbauten angesehen. Wozu benötigt man den Analogpart? UART_RX, UART_TX, GND und +5V reichen doch für die Kommunikation oder?
Datum:
Fred Granna schrieb: > Hat hier einer eigentlich mal einen längeren Mitschnitt was sich > zwischen Servicekey und "Servicebuchse" so tut nachdem man das Teil > eingesteckt hat? Weiter oben sind doch welche. Das Problem ist eher die Kommunikation bzw. Umsetzung von PC<=>SERVICEKEY. Grüße.
Datum:
Fred Granna schrieb: > Habe mir grad mal die "Baupläne" für die Nachbauten angesehen. Wozu > benötigt man den Analogpart? UART_RX, UART_TX, GND und +5V reichen doch > für die Kommunikation oder? In der Schaltung wird angeblich(tm) der GND verschoben, also alle Temperaturen stimmen nicht mehr. Desweiteren hat die KM-Platine einen Anschluss für einen Abgassensor. Grüße.
Datum:
Rudi schrieb: > Weiter oben sind doch welche. Das Problem ist eher die Kommunikation > bzw. Umsetzung von PC<=>SERVICEKEY. > > > Grüße. Hm, bin ich blind? Da habe ich einen Log gefunden. Der ist aber nicht vollständig. PC<->SK ist doch "nur" 3964R. Frage ist eher: Wie setzt der SK da was um.
Datum:
Rudi schrieb: > In der Schaltung wird angeblich(tm) der GND verschoben, also alle > Temperaturen stimmen nicht mehr. Desweiteren hat die KM-Platine einen > Anschluss für einen Abgassensor. > > > Grüße. ALso könnte der Analogteil eigentlich wegfallen?
Datum:
Fred Granna schrieb: > ALso könnte der Analogteil eigentlich wegfallen? Die bist mit GND wohl schon direkt am analogen Teil und ohne den Sensor (dein analoger Teil) erkennt er die Platine/Erweiterung nicht. Grüße.
Datum:
Fred Granna schrieb: > Hm, bin ich blind? Da habe ich einen Log gefunden. Der ist aber nicht > vollständig. PC<->SK ist doch "nur" 3964R. Frage ist eher: Wie setzt der > SK da was um. Beitrag "Re: Logamatic 2107 Schnittstelle" und folgende etwas zerstreut. Grüße.
Datum:
Rudi schrieb: > Beitrag "Re: Logamatic 2107 Schnittstelle" und folgende etwas > zerstreut. > Das hatte ich gesehen. Das ist aber die Kommunikation PC<->SK in 3964R soweit ich das verstanden habe. WÜrde aber gerne mal sehen was der SK auf dem EMS-Bus treibt.
Datum:
Ansonsten hier: Beitrag "Re: Logamatic 2107 Schnittstelle" Dort ist ein Log vom Service-Key. Der Key arbeitet selbständig, sammelt die Daten und schickt sie auf Anfrage an den PC. Wie ist bei dir eigentlich der Stand?
Datum:
Rudi schrieb: > Wie ist bei dir eigentlich der Stand? Hatte nun über 6 Monate meine Bastellösung am laufen: Arduino mit externem UART über i2c. Schwenke grad um auf einen Arduino mit 4 eigenen UARTS. Habe dazu deine Code genommen. Das Lesen vom Bus läuft. Habe nur massive Probleme beim schreiben: Der Code fehlt mir komplett (und das Wissen dazu auch)...
Datum:
Der TX ist nicht weiter problematisch, da du das sehr schön im RX-Interrupt machen kannst. Kann die UART vom AVR ein Break senden? Mein Handling um auf dem Bus bekannt zu werden sieht in etwa so aus:
dr = rx_data;
/* sending */
if ( ems_flag & 1 )
{
if ( dr == 0x0b )
{
/* send uart break */
}
ems_flag &= ~1;
}
if ( ems_cnt == 0 )
ems_adr = dr;
if ( (ems_cnt == 1) && (dr!=0) && (ems_adr&0x80) )
{
ems_cnt = 0;
ems_adr = dr;
}
/* ignore frame error */
if ( !(sr & (UART_SR_FE)) )
{
ems_cnt++;
}
else
{
if ( ems_adr == 0x8b )
{
tx_data = 0x0b;
ems_flag |= 1;
}
}
|
Datum:
Hallo Leute, sorry wenn ich mich hier einmische, aber ich bin über Google in den wohl längsten Thread der Welt geraten :) Stichwörter: "Buderus Protokoll" Ich verstehe nicht so ganz, worum es hier geht, aber vielleicht bewegt ihr euch ja in der Nähe meines Problems. Ich habe hier einen Raumthermostat namens Sieger eS71, innen auf der Platine steht Buderus RC10/RC20. Das Ding ist aber nur halb bestückt, es hat nur eine simple Thermostatfunktion und sonst nichts, und es werden nur zwei der vier Anschlussdrähte benutzt. Auf einem Aufkleber steht "RC10 V1.04 OK". Mein Problem ist, dass ich meine Gasheizung gern ferngesteuert ein- und ausschalten möchte, während aber heißes Wasser immer zur Verfügung stehen soll. Eine Lösung habe ich schon: eine Zusatzelektronik simuliert Knopfdrehungen durch Schalter, die parallel zu den Knopfkontakten liegen. Damit kann ich die Temperatur auf 11° bzw. 30° stellen, was in der Praxis Aus- bzw. Einschalten bedeutet. Ist aber ziemlich aufwändig und nicht gerade elegant. Aus den Impulsen, die mein Oszilloskop an den beiden Steuerdrähten anzeigt, werde ich nicht schlau. Handelt es sich dabei um das Protokoll, das oben erwähnt ist? Ist vielleicht sogar das Know-How vorhanden, wie man die Information "Zimmer ist zu kalt/heiß" auf die Drähte gibt?
Datum:
Habt Ihr schon das Neueste gesehen? Buderus web KM200 Gruß Andreas
Datum:
Hallo Rudi, Matthias, Mario und IngoF, könnte jemand eine/mehrere µP-Schaltung mit Hex-File zur Decodierung zur Verfügung stellen? Möglichst gängige µProzessoren. Muß kein Layout da sein, mache ich und stelle es hier rein. Muß auch kein Quellcode dabei sein, wer es nicht freigeben will. Hauptsache alle kommen mal weiter mit dem EMS-Bus. Gruß Helmut
Datum:
Hallo Helmut, bei mir läuft das Ding wie Stand 1,5 Jahre und ich nehme es nur zum Loggen. Verwendet wird der Pollin NetIo (Atmega644), auf dem ich mich per Telnet von meiner Haussteuerung verbinde. Das Protokoll schicke ich ASCII-kodiert rüber und parse es auf der Steuerung. Empfangen wird mit der kleinen Schaltung ähnlich Rudi (aber mit LM393). Softwarebasis ist der Webserver von U. Radig mit der Empfangsroutine von Rudi und einigen Anpassungen. Problem am Hex ist, das die IP fest einprogrammiert ist. Den Code kann ich gerne posten. Ich krame den am Wochenende mal wieder aus. Das Modul läuft schön stabil, hatte in der ganzen Zeit vielleich 2..3 Hänger nach kurzen Netzspannungseinbrüchen. @all Interessieren würde mich, das EM10-Modul nachzubauen. Kennt da jemand ansatzweise das Protokoll? Weiß jemand, ob/wie man das Signal zur einmaligen WW-Aufheizung abschicken kann? Grüsse Matthias
Datum:
Danke Dir Matthias, ich habe gar kein Auto.... Ich oute mich mal, ich habe so eine Buderus-Steuerung nicht, auch kein E-Bus-Gerät, wofür der Adapter eigentlich gedacht war. Ich sah nur, dass es Ähnlichkeiten beim Bussystem gibt. Dann hat mich gestört, das es 890 Eintragungen gibt aber keine Lösung, die als brauchbar erkennbar ist. Das muß doch mal fertig werden. Es gibt soviele Anwender für den EMS-Bus. Wäre nett von Dir: Bitte poste Deine Hard und Software. Gruß Helmut
Datum:
Helmut schrieb: > Dann hat mich gestört, das es 890 Eintragungen gibt aber keine Lösung, > die als brauchbar erkennbar ist. Wie jetzt?
Datum:
Angehängte Dateien:Endlich ... es gibt jetzt ein Buderus EMS-Schnittstellenmodul mit USB-Anschluss. //Niffko
Datum:
Angehängte Dateien:... gibts aber leider nur einmal als Prototyp ;P Ich hatte ein defektes Solarmodul SM10 in die Hände bekommen, welches hier als Organspender diente. Als Defektursache war ein zerstörter Komparator der Eingangsbeschaltung relativ schnell ausfindig gemacht und ausgetauscht. Anschließend alles, außer Signalformung, Quarz, LED, Spannungsversorgung und 230V-Peripherie, von der Platine geräumt. Atmega8 und FT323RL wurden rücklinks auf der Platine befestigt und mit AWG#30 Kabel angeschlossen. Der 0.65mm Pitch des FT232 war hierbei - sagen wir mal - anspruchsvoll. Auf der Platine sind mehr Kabel als man eigentlich vermuten sollte, aber das meiste ist hier GND und VCC - hiervon gibts ja bei SMD-Ausführung immer reichlich Pins und an ein Brücken direkt am IC war nicht zu denken. Zum Schluss noch eine Mini-USB Buchse aufgelötet und fertig war meine Hardware für die kommende Heizsaison. //Niffko
Datum:
Tolle Sache, nur warum zeigst Du sowas? Bringt niemanden so richtig weiter. Einer von 816 Beiträgen mit Null Ergebniss. Oder glaubst Du dass regt jemanden an es auch so zu machen? Ich verstehe es nicht, wenn wenigstens ein Schaltplan dabei gewesen wäre... Oder ein Hex-File eines Prozessors für die Filterung von plausiblen Daten......
Datum:
Hallo Leute! Mein umgebautes Solarmodul läuft ab sofort 'buspowered'. Schaltung wie folgt:
120R _____
___ | |
Bus(+) ---|___|--o--|78L05|--o-----o---- VCC
| |_____| | | +
--- | --- ###
--- | --- ---
|100n | |100n | 22µ
| | | |
=== === === ===
GND GND GND GND
|
Versorgt wird ein Atmega8 incl. TX-LED. FT232 läuft von der Versorgung über USB und der LM393 hängt direkt am EMS-Bus. Bei permanent eingeschalteter LED fließen ca. 17mA. Busstörungen habe ich bisher keine erkennen können, das Gerät arbeitet wie gewohnt. Das bedeutet eigentlich, dass in Sachen Potentialtrennung auch Optokoppler möglich sein sollten. //Niffko
Datum:
hallo, habe letzte woche diesen thread per google gefunden und bin echt erstaunt über eure erkenntnisse zum ems-bus. besten dank dafür! daraufhin habe ich jetzt auch zwei tage bastelt und möchte auch meine ergebnisse nicht vorenthalten. ich habe hier noch einen rc20 controller rumliegen gehabt, an dem ich die rx und tx leitung eines sparkfun ftdi board angeschlossen habe, um auf den bus zuzugreifen. die tx-leitung des rc20 microcontrollers habe ich gekappt, um mit dem ftdi board auch schreiben zu können. das ftdi board ist per usb an einem linux pc angeschlossen. dort habe ich ein perl script gebaut, um das polling für die adresse 0xb (service key) zu beantwortet. für das break ziehe ich mit der dtr leitung per transistror den tx-pin für den nötige dauer auf gnd. der service key wird nun bus-monitor angezeigt und ein umschalten von nacht/tag/auto betrieb des rc30 funktioniert schon damit. falls jemand interesse an details hat, dann einfach melden. besten dank, picknicker
Datum:
Hallo Helmut, ich bin seit einer Woche Besitzer einer Logamatic 172 Anlage. Da ich ein neugierer Mensch bin, würde auch ich gern die Daten der Anlage via EMS-Bus mitloggen. Du scheinst so eine ähnliche Konfiguration am Start zu haben, wie ich Sie gerne hätte. Magst Du mir bitte Deine Schaltung und Deinen Kode für das Pollin NetIo (Atmega644) Board zur Verfügung stellen ? Ist es ein Problem, das meine Anlage mit einem Solarmodul ausgestattet ist ? Ich meine hierzu etwas gelesen zu haben. Viele Grüße Jörg > Hallo Helmut, > > bei mir läuft das Ding wie Stand 1,5 Jahre und ich nehme es nur zum > Loggen. > Verwendet wird der Pollin NetIo (Atmega644), auf dem ich mich per Telnet > von meiner Haussteuerung verbinde. Das Protokoll schicke ich > ASCII-kodiert rüber und parse es auf der Steuerung. Empfangen wird mit > der kleinen Schaltung ähnlich Rudi (aber mit LM393). > Softwarebasis ist der Webserver von U. Radig mit der Empfangsroutine von > Rudi und einigen Anpassungen. Problem am Hex ist, das die IP fest > einprogrammiert ist. Den Code kann ich gerne posten. Ich krame den am > Wochenende mal wieder aus. > Das Modul läuft schön stabil, hatte in der ganzen Zeit vielleich 2..3 > Hänger nach kurzen Netzspannungseinbrüchen.
Datum:
Ich würde auch gerne mitmachen. Hab auch ein Pollin AVR-Net-IO. Da finden sich bestimmt noch mehr Leute mit Interesse. Ich habe eine Buderus GB152-Therme und würde gerne mitloggen. Viele Grüße Norbert > Hallo Helmut, > ich bin seit einer Woche Besitzer einer Logamatic 172 Anlage. > Da ich ein neugierer Mensch bin, würde auch ich gern > die Daten der Anlage via EMS-Bus mitloggen. > Du scheinst so eine ähnliche Konfiguration am Start zu > haben, wie ich Sie gerne hätte. > Magst Du mir bitte Deine Schaltung und Deinen Kode > für das Pollin NetIo (Atmega644) Board zur Verfügung > stellen ? > > Ist es ein Problem, das meine Anlage mit einem Solarmodul > ausgestattet ist ? Ich meine hierzu etwas gelesen zu haben. > > Viele Grüße > Jörg > >> Hallo Helmut, >> >> bei mir läuft das Ding wie Stand 1,5 Jahre und ich nehme es nur zum >> Loggen. >> Verwendet wird der Pollin NetIo (Atmega644), auf dem ich mich per Telnet >> von meiner Haussteuerung verbinde. Das Protokoll schicke ich >> ASCII-kodiert rüber und parse es auf der Steuerung. Empfangen wird mit >> der kleinen Schaltung ähnlich Rudi (aber mit LM393). >> Softwarebasis ist der Webserver von U. Radig mit der Empfangsroutine von >> Rudi und einigen Anpassungen. Problem am Hex ist, das die IP fest >> einprogrammiert ist. Den Code kann ich gerne posten. Ich krame den am >> Wochenende mal wieder aus. >> Das Modul läuft schön stabil, hatte in der ganzen Zeit vielleich 2..3 >> Hänger nach kurzen Netzspannungseinbrüchen.
Datum:
Hallo, zunächst einmal: Respekt an alle, die hier mitgewirkt haben! Ich bin recht neu in Sachen Elektronik und deshalb mag folgende Frage auch bei einigen von euch zu Stirnrunzeln führen: Ich würde gerne den ServiceKey Ausgang nutzen um an den Bus zu kommen. Jedoch würde ich hier gerne per Optokoppler galvanisch trennen. Mein eigentliches Problem ist jetzt, dass an diesem Klinkenstecker nur 2x GND und einmal das Signal anliegen. Nur einmal angenommen, ich schalte direkt hinter den Bus einen Operationsverstärker als Impedanzwandler für das Signal(der spätere Aufbau ist anders aber das Beispiel hier reicht), woher kann ich dann die Versorgungsspannung für den Operationsverstärker beziehen? GND kann ich hier zwar anschließend, aber mir "fehlt" in meinem Gedankenkonstrukt dann entweder VCC(>12V), oder, wenn ich die GND vom Klinkenstecker als VCC für den Optopkoppler nehme, ein zweites GND(<12V) für an den Optokoppler. Wenn ich für dieses zweite GND die 0V meiner dahinterliegenden, galvanisch getrennten Schaltung verwenden würde, wäre diese Trennung ja wieder hinfällig? Müsste ich hier noch einmal separat sonst wo an der Heizung etwas abgreifen? Das wäre mehr als unschön. Desweiteren: Kann der Bus genug Strom liefern um meinen Optokoppler zu versorgen? So wie ich das Ganze bisher verstanden habe, scheint er ja belastbar genug zu sein. Ich hoffe man kann das halbwegs nachvollziehen was mein Problem ist.. Danke schonmal! :) Gruß Olaf
Datum:
OlafTezlaf schrieb: > Ich würde gerne den ServiceKey Ausgang nutzen um an den Bus zu kommen. > Jedoch würde ich hier gerne per Optokoppler galvanisch trennen. Mein > eigentliches Problem ist jetzt, dass an diesem Klinkenstecker nur 2x GND > und einmal das Signal anliegen. Hm? An meinem Klickenstecker hab ich 12V,SIGNAL und GND. Benutze die 12V auch um meine Schaltung inkl. dem Funksender für die Daten zu betreiben. Was für eine Anlage hast du denn?
Datum:
Fred Granna schrieb: > Hm? An meinem Klickenstecker hab ich 12V,SIGNAL und GND. Benutze die 12V > auch um meine Schaltung inkl. dem Funksender für die Daten zu betreiben. > Ohje, sagt jetzt nicht ich hab die Belegung des Klinkensteckers missverstanden. Ich habe mich auf http://wiki.neo-soft.org/index.php/Heizungsschnitt... bezogen. Dann hat das GND bei dem Eintrag unter "links" wohl nichts mit dem GND +12V zu tun? Hatte das ganze jetzt gar nicht nachgemessen. > Was für eine Anlage hast du denn? Mir ist die genaue Kennung leider entfallen, werde nachschauen sobald ich wieder in der Heimat bin. Aber falls ich diese Tabelle missverstanden habe hat es sich damit wohl gelöst :) Gruß Olaf
Datum:
OlafTezlaf schrieb: > Ohje, sagt jetzt nicht ich hab die Belegung des Klinkensteckers > missverstanden. Ich habe mich auf > http://wiki.neo-soft.org/index.php/Heizungsschnitt... > bezogen. Dann hat das GND bei dem Eintrag unter "links" wohl nichts mit > dem GND +12V zu tun? > Hatte das ganze jetzt gar nicht nachgemessen. Ah! Ja, in der Tabelle hast du auf der linken Seite die STECKERBELEGUNG des Klinkensteckers. Auf der rechten Seite dann eben das was anliegt.
Datum:
Matthias schrieb: > Den Code kann ich gerne posten. Servus Matthias, ...habe ich was übersehen ;-) Danke im Voraus! Gruß aus der Wetterau Karl M.
Datum:
Angehängte Dateien:Hallo zusammen, anbei mein Code für das NetIo. Basis ist der URadig-Webserver. In der usart.c ist die Empfangsroutine drin und in der telnet.c das versenden. Ist quick and dirty drin, könnte man natürlich viel schöner machen. Das Telegramm wird als ASCII im Hex-Format versendet, damit das Auswerten mittels Telnet schön einfach war. Aus den cpp-Dateien sollte ersichtlich sein, wie ich das auswerte. Ein kompletter Quelltext des Programms nutzt leider nicht viel, weil man dazu das Framework eines bestimmten Automatisierungssystems braucht. Mein Empfangsplatine ist der erste Entwurf von Rudi, allerdings mit LM393. Da musste ich dann mittels Spannungsteiler die Eingangssignale auf <5V bringen, da sie für die korrekte Funktion des LM393 kleiner als die Versorgungsspannung des IC's sein müssen. Data und 12V hatte ich getauscht, damit ich ein invertirtes Signal vom Komparator bekommen habe welches ich dann auf die RS232 des NetIO gegeben habe. Matthias
Datum:
Hallo Matthias, ... das war flott :) Na, dann wollen wir mal ein bisschen Basteln! Danke nochmal! Gruß Karl M.
Datum:
Angehängte Dateien:Weil wir gerade beim Posten von Code sind, hier mal noch meine Lösung. Die Empfangshardware entspricht weitestgehend der von Ingo geposteten EMSlog.gif (hab noch ein paar zusätzliche LEDs). Die Daten werden von einem auf einem Plug-Computer laufenden Daemon (C++ + Boost, siehe Anhang) übernommen und in eine MySQL-DB geschrieben. Die Telegramm-Auswertung in meinem Daemon sollte das Wissen dieses Threads komplett wiederspiegeln - wenn jemand noch etwas fehlendes sieht, bitte Bescheid sagen ;-)
Datum:
Danny Baumann schrieb: > Die Empfangshardware entspricht weitestgehend der von Ingo geposteten > EMSlog.gif (hab noch ein paar zusätzliche LEDs). Hallo Danny, liest sich sehr interessant, Dein Projekt. Gibt's denn zu der Verschaltung des ATmega 8 und der Eingangsstufe auch eine Schaltplanskizze? Noch ne Frage: "Den PlugPC hast Du als 'reinen EMS-PC' in Deinem HWR und fragst über LAN die Daten ab?" Vielen Dank für Deine Arbeit! Gruß aus der Wetterau Karl M.
Datum:
Hi, > liest sich sehr interessant, Dein Projekt. > > Gibt's denn zu der Verschaltung des ATmega 8 und der Eingangsstufe auch > eine Schaltplanskizze? Hab ich jetzt nicht sofort zur Hand, ich kann aber nochmal kramen. Meine Schaltung ist aber - wie gesagt - praktisch die selbe wie die EMSlog.gif hier im Thread. > Noch ne Frage: "Den PlugPC hast Du als 'reinen EMS-PC' in Deinem HWR und > fragst über LAN die Daten ab?" Nein. Der Plug-PC ist mein 'Home-Server', d.h. unter anderem auch File-, Print- und Musik-(Squeezebox-)Server. Den EMS-Daemon und die MySQL-DB frühstückt der nebenbei mit ab ;-) Der Apache, mit dem ich mit etwas gehacktem PHP die Daten anzeige, läuft da auch drauf. Der Plug-PC ist ja hardwaremäßig auch recht gut ausgestattet: http://de.wikipedia.org/wiki/SheevaPlug ... und das bei ~4W Stromverbrauch.
Datum:
Hallo, versuche schon einige Zeit die Induktivitäten L3/L4 auf zu finden. Es wurde ja schon mal vermutet dass es 4700µH sind. Allerdings sind die größten induktivitäten die ich finden konnte nur 1000µF. Jetzt habe ich irgendwo eine Induktivität gefunden die mit 472K in der Bezeichnung trägt und 47µ bei 1kHz hat. Hier noch mal der Link zum Bild: Beitrag "Re: Logamatic 2107 Schnittstelle" Was habt Ihr denn für die Spule L3/L4 genommen? Gruß Ingo
Datum:
Hallo Ingo, Du musst nach "4,7 mH" und nicht nach "4700 uH" suchen: http://www.segor.de/#Q=4,7mH-09P Festinduktivität 4,7mH +/-5% 130mA 11,5R RM5 http://www.segor.de/#Q=4,7mH-SD75 Festinduktivität 4,7mH +/-10% 70mA 48R RM5 oder bei Conrad Best.-Nr.: 535508 - 62 bzw 501596 - 62 http://www.conrad.de/ce/de/product/535508/DROSSEL-... http://www.conrad.de/ce/de/product/501596/HF-DROSS... Die 4,7mH-SD75 hatte ich zufällig noch daheim und auch eingebaut, wobei nach den Daten sollte man wohl die 4,7mH-09P bevorzugen (kleinerer Widerstand, höherer Strom). Beim Anschliessen eines 7805 nach dem Brückengleichrichter (ohne Kondensator am Eingang) und einem nachgeschalteten Class 1 BTM-222 Bluetooth Moduls hat mein Multimeter Spannungen bis 200 V hinter dem Brückengleichrichter angezeigt. Ich warte jetzt auf meinen Step-Down Converter aus Hongkong und hoffe, dass der keine solche Stromspitzen erzeugt. Senden habe ich noch nicht probiert und beim Empfangen spielen die Induktivitäten keine große Rolle. Michael
Datum:
Hallo, warum benutzt du nicht einfach Ferritbeads? Die sollten die Störungen auch ausreichend unterdrücken. Grüße.
Datum:
Hallo Danny,
> ich kann aber nochmal kramen
schon gekramt? Falls ich Deinen Quelltext im framer richtig
interpretiere, ist Deine Belegung anders als in der EMS-log.gif?
Beim compilieren des collectors hatte ich zunächst eine fehlende
"common.h". Da ich vermutete, dass es sich hierbei um die common.h aus
"mysql++" handelt, habe ich dorthin gelinkt. Jetzt ergibt ein "make all"
folgenden Fehlertext:
Message.cpp: In member function ‘virtual void StatsMessage::parse()’:
Message.cpp:481: error: ‘rx_stats_t’ was not declared in this scope
Message.cpp:481: error: expected ‘;’ before ‘stats’
Message.cpp:487: error: ‘stats’ was not declared in this scope
make: *** [Message.o] Fehler 1
Meine config hier:
VirtualBox-4.1.6 mit Debian-6.02, Kernel 2.6.32 mit installiertem
libboost, mysql, libmysql++ und build-essential.
Irgendeine Idee, was ich hier falsch mache?
Danke im Voraus und Grüße aus der Wetterau
Karl M.
Datum:
charlie schrieb: > Hallo Danny, > >> ich kann aber nochmal kramen > > schon gekramt? Nein, noch nicht. Ich versuche heute abend mal dran zu denken. > Falls ich Deinen Quelltext im framer richtig > interpretiere, ist Deine Belegung anders als in der EMS-log.gif? Das könnte sein ... evtl. hab ich die Belegung so angepasst, dass die Verdrahtung einfacher ist. > Beim compilieren des collectors hatte ich zunächst eine fehlende > "common.h". Da ich vermutete, dass es sich hierbei um die common.h aus > "mysql++" handelt, habe ich dorthin gelinkt. Jetzt ergibt ein "make all" > folgenden Fehlertext: > > Message.cpp: In member function ‘virtual void StatsMessage::parse()’: > Message.cpp:481: error: ‘rx_stats_t’ was not declared in this scope > Message.cpp:481: error: expected ‘;’ before ‘stats’ > Message.cpp:487: error: ‘stats’ was not declared in this scope > make: *** [Message.o] Fehler 1 common.h ist in framer/ - siehe collector/Makefile, Zeile 2. Danny
Datum:
Danny Baumann schrieb: > common.h ist in framer/ - siehe collector/Makefile, Zeile 2. jetzt wo Du es sagst :-*) - Läuft einwandfrei durch, tolle Arbeit! Über den Schaltplan würd' ich mich freuen :-) Vielen Dank für Deine Geduld! Gruß Karl M.
Datum:
Michael Dreher schrieb: > Du musst nach "4,7 mH" Habe ich natürlich auch. Aber alles was ich finde ging nur bis 1mH. Die Bauteile habe ich auch gefunden. Suche allerdings die SMD-Versionen. Die Suche bei Conrad ist sowieso absolut unbrauchbar. Man kann nicht nach einem Wert suchen, sondern nur alle SMD-Induktivitäten durchsuchen. Dummerweise steht dann überall in der Überschrift 1-1000µH. Bei anderen Herstellen habe ich auch keine SMD-Versionen gefunden. Oder die liefern nur an Gewerbliche Kunden und nicht an Endabnehmer. vielleicht nehme ich dann doch die Nicht-SMD-Induktivitäten. Rudi schrieb: > warum benutzt du nicht einfach Ferritbeads? Die sollten die Störungen > auch ausreichend unterdrücken. Muss gestehen dass ich von Entstörung nicht soviel Ahnung habe. Habe auch keine Messtechnik um dabei Unterschiede selber zu sehen. Wenn Buderus ja so eine Schaltung hat würde ich die schon gerne klauen ;o) Bei der RC 30 sind ja erst kleiner Induktivitäten und dann die großen. Dazwischen ist eine Durchkontaktierung und kann selbst beim durchleuchten eine Leiterbahn erkennen. Vermute mal dass dazwischen der Abriff für die Sende/Empfangsschaltung ist und hinter den Spulen nur der Abgriff für die Spannungs/Stromversorgung ist und die Induktivitäten den "Einschaltstrom" der Bufferkondensatoren vom 78L05 begrenzen sollen. Gruß Ingo
Datum:
Ingo F. schrieb: > Vermute mal dass dazwischen der Abriff für die Sende/Empfangsschaltung > ist und hinter den Spulen nur der Abgriff für die > Spannungs/Stromversorgung ist und die Induktivitäten den > "Einschaltstrom" der Bufferkondensatoren vom 78L05 begrenzen sollen. Okay, beim Einschaltstrom macht es natürlich Sinn. Kann das mal jemand für die originale Schaltung berechnen? :-). Was brauchst du denn genau (was hast du gefunden) in SMD? Grüße.
Datum:
Hi Ingo, als ich die Schaltung seinerzeit reverseingeneered habe, hatte ich Probleme die Induktivität zu identifizieren. Du hast ja auch schon gemerkt, dass es hierzu im Netz widersprüchlich Angaben gibt. Ich hatte mir die Teile aber von einem defekten Modul ausgelötet und deshalb war der Leidensdruck für eine Recherche bis zum Letzten nicht groß genug. Das habe ich jetzt nachgeholt und mein jetziger Wissensstand ist folgender: 472 -> 4700µH -> 4,7mH 472K -> 4700nH -> 4,7µH Die Induktivitäten dürften somit nur 4,7µH haben. Der mit einem Multimeter gemessen DC-Widerstand von 0.5 Ohm passt dann auch eher. So ... ich geh' dann mal, mir etwas Asche aufs Haupt streuen. //Niffko PS: An deine Theorie "Einschaltstrom, Kondensator, 78L05" glaube ich nicht so recht. Die Buderus Module haben alle ein separates Netzteil - sind also nicht buspowered - und haben trotzdem auch eine kleine und eine große Induktivität.
Datum:
Niffko _ schrieb: > Die Induktivitäten dürften somit nur 4,7µH haben. Der mit einem > Multimeter gemessen DC-Widerstand von 0.5 Ohm passt dann auch eher. Niffko _ schrieb: > Die Induktivitäten dürften somit nur 4,7µH haben. Na das beruhigt mich ja schon mal... Und deswegen kann ich seit einem Monat nicht schlafen :oD Niffko _ schrieb: > PS: An deine Theorie "Einschaltstrom, Kondensator, 78L05" glaube ich > nicht so recht. Die Buderus Module haben alle ein separates Netzteil - > sind also nicht buspowered - und haben trotzdem auch eine kleine und > eine große Induktivität. Habe leider keine Buderus Module. konnte nur von der RC30 ausgehen die ich an der Wand hängen hatte. War nur eine Vermutung warum es zwischen den Spulen einen Abgriff gibt.... Rudi schrieb: > Was brauchst du denn genau > (was hast du gefunden) in SMD? Hatte diese hier gefunden.... Allerdings steht nur in der Titelzeile 4,7mH. In der Beschreibung steht auch nur 4,7µH... Also habe ich dann doch keine gefunden... Gruß Ingo
Datum:
Angehängte Dateien:Hallo, Ingo F. schrieb: > Hatte diese hier gefunden.... Allerdings steht nur in der Titelzeile > 4,7mH. In der Beschreibung steht auch nur 4,7µH... > > Also habe ich dann doch keine gefunden... Wie sieht es mit der LB2012T4R7M => 0805, 4.7µH, 190mA, 0,10€ CB2012T4R7M => 0805, 4.7µH, 580mA, 0,15€ aus? Grüße.
Datum:
Hallo zusammen, hat schonmal jemand versucht einer Logamatic 4xxx Daten zu entlocken? Kennt jemand die Pinbelegung der 15-pol. HD-Sub-D-Buchse (sieht aus wie eine VGA-Buchse)? Kann ich davon ausgehen, dass das Protokoll ähnlich ist wie bei der RC30/35? Immerhin passt hier ja auch der Service Key über einen beiliegenden HD-Sub-D-Klinken-Adapter. Falls das so ist, will ich mir einen möglichst einfachen Pegelwandler bauen. Ich denke das müsste auch ohne Komparator gehen. Ich würde einfach einen PNP-Transistor nehmen, dessen Basis an die Datenleitung hängen, den Emitter über einen 1k Widerstand an 12V und den Collector über einen 3.3k Widerstand an Masse. Der Ausgang für die RS232 Schnittstelle wäre dann der Collector. Wenn auf der Datenleitung 12V+/-2V anliegen, sollten so am Ausgang ca. 5V oder 0V anliegen, was auch für die RS232 Schnittstelle in Empfangsrichtung ausreichen sollte. Evtl. muss man noch einen Inverter vorsehen, falls die Polarität nicht stimmt. Kann das wirklich so einfach gehen, oder mache ich einen Denkfehler? Gruß Sebastian
Datum:
Morus schrieb: > einer Logamatic 4xxx Daten zu entlocken ... > Kann ich davon ausgehen, dass das Protokoll ähnlich > ist wie bei der RC30/35? Eher nicht - anderes Protokoll. Schau mal hier: http://www.ip-symcon.de/forum/f23/buderus-logamati.... Da gibts einige Infos. //Niffko
Datum:
Niffko, danke für die Info. Was ich bisher verstanden habe ist, dass es zwei unterschiedliche Protokolle gibt: EMS und ECO-CAN. Intern spricht die Logamatic 4xxx wohl ECO-CAN, aber die Verbindung zur Fernbedienung BFU läuft über EMS. Möglicherweise gibt es eine Art eingebauten Umsetzer zw. EMS und ECO-CAN. Dann könnte u.U. auch der Service Key EMS sprechen. Ich habe eine BFU in Betrieb. Könnte ich über die Verbindung zur BFU an alle Daten kommen, oder ist zu erwarten, dass nur für den Heizkreis relevante Daten übertragen werden, dem die BFU zugeordnet ist? Gruß Sebastian
Datum:
Morus schrieb: > ... Logamatic 4xxx ... die Verbindung zur Fernbedienung > BFU läuft über EMS. Das ist sehr unwahrscheinlich, da es die 4000er schon gab, als an EMS noch nicht zu denken war. Die Schnittstelle ECO-CAN / EMS wird über Funktionsmodule realisiert, mit denen man, je nach verwendetem Modul, bis zu zwei oder bis zu 4 EMS-Kessel kaskadieren kann. Die kleinen Wandschaltkästen wie z.B. Logamatic 41XX, besitzen eine interne Schnittstellenkarte für eine Einzelkesselsteuerung, die übrigens auch mit Pre-EMS-Wandkesseln (UBA1.5) kommuniziert. //Niffko
Datum:
Niffko _ schrieb: > Das ist sehr unwahrscheinlich, da es die 4000er schon gab, als an EMS > noch nicht zu denken war. Ok, dann hab ich da was falsch verstanden. Physikalisch scheint das Protokoll zur BFU aber ähnlich zu EMS zu sein, d.h. 12V+-2V. Gruß Morus
Datum:
Ein Hallo an alle Experten, ich habe die ganzen Informationen aufmerksam durchgelesen und dabei sehr viel erfahren. Ich habe eine LogamaxPlus GB142 mit den Basiscontroller RC10 und der RC30 mit Außentemperatursteuerung. Habe jetzt eine Solaranlage mit Pufferspeicher einbauen lassen und möchte anstelle der RC30 eine UVR1611 Regelung verwenden. Was mir fehlt ist die PIN Belegung des 81 pin Konnektor in der GB142 Kann mir jemand schreiben wo ich die PIN Belegung herbekomme? Sollte ich hier im Forum nicht richtig sein, bitte ich um Nachsicht. Viele Grüße JoSt
Datum:
Moin, na was wird gesendet? Zeig doch mal. Grüße. Morus schrieb: > Niffko _ schrieb: >> Das ist sehr unwahrscheinlich, da es die 4000er schon gab, als an EMS >> noch nicht zu denken war. > > Ok, dann hab ich da was falsch verstanden. Physikalisch scheint das > Protokoll zur BFU aber ähnlich zu EMS zu sein, d.h. 12V+-2V. > > Gruß > Morus
Datum:
Jo Stetter schrieb: > ... anstelle der RC30 eine UVR1611 Regelung verwenden. > Was mir fehlt ist die PIN Belegung des 81 pin Konnektor in der GB142 ... Welche Anschlussmöglichkeiten gedenkst du denn am 81 pin Konnektor zu finden? Dass dort sämtliche Sensoren und die Niederspannungsperipherie - wie z.B. die Gasarmatur - angeschlossen und das Ganze somit sicherheitsrelevant ist, weißt du ja sicherlich schon!? Das Hauptproblem wird werden, den Brenner der GB142 mit der UVR modulierend zu betreiben. Hierfür ist ist zwingend erforderlich, dem Feuerungsautomaten (UBA3) per EMS-Bus einen entsprechenden Sollwert zu übermitteln. //Niffko
Datum:
Guten morgen, ich hab jetzt einiges aus diesem riesen Thread gelesen, bin aber noch nicht so richtig schlau. Welche Schaltung ist denn 'die Beste' für die Verbindung der Service-Key Schnittstelle mit einem Controller bzw. Pegelwandler auf RS232? Gruss Norbert
Datum:
Hallo Norbert. ich würde mal sagen diese hier: Beitrag "Re: Logamatic 2107 Schnittstelle" die ist aus einer Schaltung von Buderus und habe ich in meinem EMS-Gateway auch übernommen... Gruß IngoF
Datum:
Ingo F. schrieb: > Hallo Norbert. > > ich würde mal sagen diese hier: > Beitrag "Re: Logamatic 2107 Schnittstelle" > > die ist aus einer Schaltung von Buderus und habe ich in meinem > EMS-Gateway auch übernommen... Allerdings sind auch Rudi's Kommentare dazu zu beachten: Beitrag "Re: Logamatic 2107 Schnittstelle" Die Originalschaltung scheint bei mir nicht so gut zu funktionieren (Tastverhältnis zwischen Bus-Signal und Komparator-Ausgang verschiebt sich stark) - zeigt sich bei mir darin, dass ich viele CRC-Fehler sehe. Mit Rudi's Änderung sieht das Tastverhältnis deutlich besser aus, ich hab's allerdings noch nicht am Bus getestet.
Datum:
Danny Baumann schrieb: > (Tastverhältnis zwischen Bus-Signal und Komparator-Ausgang verschiebt > sich stark) - zeigt sich bei mir darin, dass ich viele CRC-Fehler sehe. Das Tastverhältnis sollte sich dahingehend ändern, dass der Low-Pegel etwas verspätet durchkommt - das unterdrückt Störsignale die deutlich unterhalb einer Bitlänge liegen. Zu Datenfehlern sollte das aber nicht führen. Ist evtl. mit deinen Kondensatoren (1nF/10µF) etwas nicht in Ordnung - für den 10µ einen ungepolten Typ verwendet? //Niffko
Datum:
> Danny Baumann schrieb: >> (Tastverhältnis zwischen Bus-Signal und Komparator-Ausgang verschiebt >> sich stark) - zeigt sich bei mir darin, dass ich viele CRC-Fehler sehe. > > Das Tastverhältnis sollte sich dahingehend ändern, dass der Low-Pegel > etwas verspätet durchkommt - das unterdrückt Störsignale die deutlich > unterhalb einer Bitlänge liegen. Zu Datenfehlern sollte das aber nicht > führen. Ist evtl. mit deinen Kondensatoren (1nF/10µF) etwas nicht in > Ordnung - für den 10µ einen ungepolten Typ verwendet? Ja, ist ein ungepolter Typ, und ja, das Tastverhältnis ändert sich dahingehend, dass bei einem 50%-Rechteck am Eingang High so um die 70% bekommt. Mit Rudi's Änderung sind's 60%. Ich hab das allerdings auch noch nicht zu Ende debuggt (hab die Platine erst gestern bekommen) und nur gesehen, was mir meine LEDs anzeigen. Wenn mein Code komplett fertig ist, sag ich nochmal Bescheid ;)
Datum:
War denn die Signalform mit der Originalschaltung o.k.? Rudi hatte ja seinerzeit die Änderung vorgenommen, weil er nur Spikes am Komparatorausgang hatte. //Niffko
Datum:
Niffko _ schrieb: > War denn die Signalform mit der Originalschaltung o.k.? Rudi hatte ja > seinerzeit die Änderung vorgenommen, weil er nur Spikes am > Komparatorausgang hatte. Ja, Signalform war sauberes Rechteck. Ich werd's jetzt mit der umgebauten Schaltung testen; sobald ich sehe, dass ich sinnvolle Werte einlese (die CRC-Fehler können schließlich auch in meinem Code entstehen), bau ich die Schaltung wieder zurück und probier nochmal.
Datum:
Danny Baumann schrieb: > Ich werd's jetzt mit der umgebauten Schaltung testen; sobald ich sehe, > dass ich sinnvolle Werte einlese (die CRC-Fehler können schließlich auch > in meinem Code entstehen), bau ich die Schaltung wieder zurück und > probier nochmal. Ok, ich hab's jetzt mal mit einer normalen (PC-)UART getestet - der Code ist einwandfrei. Das Signal am Komparator sieht auch exakt so aus, wie man es erwarten würde (Dauer für die 2 Pollbytes 2.1ms, erst ein Datenbyte, dann Low-Pegel). Da mein Board (Pollin NetIO) ohne EMS-Zusatzplatine (oder mit Zusatzplatine, aber ohne angeschlossenen EMS) einwandfrei funktioniert und sich sofort nach dem Anschließen komisch verhält (z.B. massive Paketverluste am Ethernet), liegt ein Masseproblem o.Ä. nahe. Meine Schaltung ist die von Niffko gepostete Buderus-Schaltung. +5V und GND kommen vom Pollin-Board, RX und TX gehen vom Komparator an die USART1 des Atmega644p. Hat einer von euch eine Idee, was da elektrisch schief laufen könnte? Wie habt ihr die Massetrennung gelöst? Ethernet-Masse und Gleichspannungsmasse habe ich auf dem NetIO schon mit 1nF getrennt (sind normalerweise zusammengeklemmt), hat aber leider nix gebracht. Danke, Danny
Datum:
Danny Baumann schrieb: > Meine Schaltung ist die von Niffko gepostete Buderus-Schaltung. +5V und > GND kommen vom Pollin-Board, RX und TX gehen vom Komparator an die > USART1 des Atmega644p. > Hat einer von euch eine Idee, was da elektrisch schief laufen könnte? > Wie habt ihr die Massetrennung gelöst? Ethernet-Masse und > Gleichspannungsmasse habe ich auf dem NetIO schon mit 1nF getrennt (sind > normalerweise zusammengeklemmt), hat aber leider nix gebracht. Tja, da gab es mit einer anderen Netzwerklösung und einer anderen Heizung auch schon Probleme, in diesem Thread. Der Mantel vom Netzwerk sollte mit einem C oder erstmal garnicht verbunden werden. Die restlichen Leitungen gehen "normal" an einen Übertrager, dann an den FEC und erst dann an den uC. Der Übertrager und FEC sollten den uC ausreichend vom Netz trennen. Wer weiß welche Macken das Board so hat, vom 644 und Netzwerk mal ganz abgesehen, wobei es auch nur die Schmerzgrenze vom Benutzer zeigt ;-). Grüße.
Datum:
Rudi schrieb: > Tja, da gab es mit einer anderen Netzwerklösung und einer anderen > Heizung auch schon Probleme, in diesem Thread. Der Mantel vom Netzwerk > sollte mit einem C oder erstmal garnicht verbunden werden. Die > restlichen Leitungen gehen "normal" an einen Übertrager, dann an den FEC > und erst dann an den uC. Der Übertrager und FEC sollten den uC > ausreichend vom Netz trennen. Die Ethernet-Schirmung ist ja, wie schon geschrieben, mit 1nF von der Masse getrennt. Ich habe allerdings in der Zwischenzeit festgestellt, dass meine Hypothese "Masseproblem" wirklich nur eine Hypothese war: Ein Softwarebug hat dafür gesorgt, dass der Frame Error nicht erkannt wurde, was einen weiteren Bug getriggert hat (Buffer Overrun), der das komische Verhalten verursacht hat ;) Ich hab jetzt noch ein paar CRC-Fehler drin, da muss ich aber erst mal schauen, ob das eventuell auch nur Softwareprobleme sind. Eine Frage noch zum Polling: Muss ich, wenn ich 0x0b als Antwort gesendet habe, vor dem Senden des Break auf ein Echo des gesendeten Bytes warten oder nicht? Die Aussagen im Thread sind da etwas widersprüchlich...im Moment warte ich nicht, sehe aber Adresse 11 nicht in der Busstatus-Ausgabe. > Wer weiß welche Macken das Board so hat, vom 644 und Netzwerk mal ganz > abgesehen, wobei es auch nur die Schmerzgrenze vom Benutzer zeigt ;-). Pfft :-P Ich weigere mich, das Senden von ein paar UART-Bytes in einen TCP-Socket mit einem ARM zu erschlagen ;-) Ethersex als AVR-Firmware ist wirklich empfehlenswert für solche Zwecke.
Datum:
Danny Baumann schrieb: > Muss ich, wenn ich 0x0b als Antwort > gesendet habe, vor dem Senden des Break auf ein Echo des gesendeten > Bytes warten oder nicht? Die Aussagen im Thread sind da etwas > widersprüchlich... Also generell funktioniert das senden von den anderen Busteilnehmern (außer die 0x08) immer gleich. Jedes Byte wird mit dem schwachen Signalpegel gesendet und dann vom Busmaster (0x08) generell wiederholt. Man musss also immer auf das Echo warten. Denke nicht dass man es auswerten/kontrollieren muss. Das erledigt ja die Prüfsumme der EMS-Telegramme. Soweit ich mich erinnere sendet der Empfänger auf direkt an ihn adressierte Telegramme auch noch eine positive oder negative Bestätigung. Danny Baumann schrieb: > im Moment warte ich nicht, sehe aber Adresse 11 nicht > in der Busstatus-Ausgabe. Denke das wird das Problem sein. Allerdings erscheint bei mir nicht sofort der "PC" mit der Adresse 11 im Display, sondern erst nach der dritten Antwort auf das Polling (etwa 1Minute) Bei erscheinen der 11 in der RC30 kommt dann das Polling auch mehrmals in der Sekunde für die 0xb (11). Gruß Ingo
Datum:
Ingo F. schrieb: > [Bus-Echo] Denke nicht dass man es auswerten/kontrollieren muss. Ich lege in meiner "Bitmanufaktur" (Soft-Uart) zwischen jedem gesendeten Zeichen - also auch vor dem Break - eine Pause von 30 Bitlängen (3 Byte) ein, funktioniert prächtig. //Niffko
Datum:
Ingo F. schrieb: > Denke das wird das Problem sein. > Allerdings erscheint bei mir nicht sofort der "PC" mit der Adresse 11 im > Display, sondern erst nach der dritten Antwort auf das Polling (etwa > 1Minute) > Bei erscheinen der 11 in der RC30 kommt dann das Polling auch mehrmals > in der Sekunde für die 0xb (11). Es sieht bei mir so aus, als ob der MC10 meine Antwort mitbekommen hat (Polling ist mindestens 1x pro Sekunde), die RC30 allerdings nicht. Ich werde mal das Echo abwarten und dann mal sehen. Ich gehe mal davon aus, dass ich während des Sendens mein eigenes Echo auch auf der RX-Leitung sehen werde, d.h. während TX muss ich RX abschalten, richtig? Der MC10 wiederholt auch das gesendete Break, d.h. das muss ich auch abwarten, richtig? Danke.
Datum:
Danny Baumann schrieb: > Es sieht bei mir so aus, als ob der MC10 meine Antwort mitbekommen hat > (Polling ist mindestens 1x pro Sekunde)... Ist das Polling denn vorher noch langsamer? 1x pro Sekunde ist eigentlich inaktives Polling, aktives Polling hat kürzere Intervalle. Das bezieht sich auf die EMS-Module. Könnte beim Service-Key anders sein - glaube ich aber nicht. > Ich gehe mal davon aus, dass ich während des Sendens mein eigenes Echo > auch auf der RX-Leitung sehen werde, d.h. während TX muss ich RX > abschalten, richtig? Wenn du die von mir gepostete Schaltung verwendest, dürfte dein eigenes TX den Komparator eigentlich nicht triggern. Wie das nach deiner Modifikation der Schaltung aussieht, weiß ich nicht. Sende doch einfach mal was und schau mit einem Oszi auf den Komparatorausgang. //Niffko
Datum:
Niffko _ schrieb: > Danny Baumann schrieb: >> Es sieht bei mir so aus, als ob der MC10 meine Antwort mitbekommen hat >> (Polling ist mindestens 1x pro Sekunde)... > > Ist das Polling denn vorher noch langsamer? 1x pro Sekunde ist > eigentlich inaktives Polling, aktives Polling hat kürzere Intervalle. > Das bezieht sich auf die EMS-Module. Könnte beim Service-Key anders sein > - glaube ich aber nicht. Ok, dann war das ein Missverständnis meinerseits und der MC10 hat's auch nicht mitbekommen. >> Ich gehe mal davon aus, dass ich während des Sendens mein eigenes Echo >> auch auf der RX-Leitung sehen werde, d.h. während TX muss ich RX >> abschalten, richtig? > > Wenn du die von mir gepostete Schaltung verwendest, dürfte dein eigenes > TX den Komparator eigentlich nicht triggern. Wie das nach deiner > Modifikation der Schaltung aussieht, weiß ich nicht. > Sende doch einfach mal was und schau mit einem Oszi auf den > Komparatorausgang. Ich hab die Schaltung - nachdem ich jetzt weiß, dass es nicht daran lag - wieder auf deine 'Original'-Variante zurückgebaut. Mit dem Oszi tue ich mich dahingehend schwer, dass ich keinen sinnvollen Punkt zum Triggern habe, weil auf dem Bus ja ständig was los ist. Mal sehen, vielleicht geht's ja jetzt, wo ich den Code zum Warten eingebaut habe, ja einfach - ansonsten melde ich mich nochmal ;-) Danke für's Feedback auf alle Fälle schonmal.
Datum:
Danny Baumann schrieb: > Muss ich, wenn ich 0x0b als Antwort > gesendet habe, vor dem Senden des Break auf ein Echo des gesendeten > Bytes warten oder nicht? Du musst warten, da es sonst zu Kollisionen kommt. Wenn der Bus vom Master getrieben wird (Echo), geht dein Sendestrom im rauschen unter. Grüße.
Datum:
Danny Baumann schrieb: > Mal sehen, vielleicht geht's ja jetzt, wo ich den Code zum Warten > eingebaut habe ... Bad News ... es geht auch ohne Pausen - zumindest bei mir. Habe mich erinnert, dass wir das Thema "warten oder nicht warten" schon mal hatten. Ich hatte damals die Nicht-Warten-Fraktion gebildet, aber dann doch mit Fortschreiten meines Projektes sicherheitshalber eine Pause eingebaut. Interessehalber habe ich jetzt mal in meinem Code die Pausen herausgenommen ... und es funktioniert weiterhin alles wie gehabt. Wie es aussieht, scheint die Stromschnittstelle des Masters unabhängig vom Buspegel zu funktionieren - eine mögliche Erklärung: Beitrag "Re: Logamatic 2107 Schnittstelle" Ich werde das mal eine Weile so bei mir laufen lassen. //Niffko
Datum:
Hallo Niffko, Niffko _ schrieb: > Ich werde das mal eine Weile so bei mir laufen lassen. Berichte dann mal von Deinen Ergebnissen... Beim Polling dürfte das vermutlich nicht so ein Problem sein. Weil man ja im Break sendet und dadurch das Sendesignal nicht unbedingt verfälscht wird. Aber Bei längeren Telegrammen dürfte das schon eher problematisch werden. Mag ja auch sein dass eine Weile lang läuft und dann irgendwann mal Probleme gibt und man dann nicht mehr dran denkt dass man die Pausen rausgenommen hat. Vielleicht ändert sich ja mal die Buslänge, es gibt eine neue Regelung, neue Software, neue Busteilnehmer, anderes Timing ... Die Temperatur oder Bauteilalterung/-toleranzen können ja auch irgendwann mal zuschlagen... Wenn es ja im Moment läuft muss es nicht heissen dass es immer läuft Drei Byte Bause wäre vielleicht auch etwas zu lang. Aber 1Byte und ein oder zwei Bits Aufschlag sollte schon reichen. Aber es dürfte ja kein Problem geben die Pause einzubauen. Oder ist Dein Controller so stark an der Auslastung dass da keine Zeit mehr für ist? Gruß Ingo
Datum:
Sooo, jetzt geht's auch bei mir :-) Ich habe - die Schaltung wieder auf Niffko's Variante umgebaut - Warten auf Echo eingebaut - ganz wichtig: das Erzeugen des Breaks gefixt ;-) Ich hatte das Break im UDRE-Interrupt getriggert, wodurch es im letzten gesendeten Byte unterging und nur einen sehr kurzen Spike erzeugt hat. Jetzt triggere ich es im TXC-Interrupt, was offensichtlich (und logischerweise) besser funktioniert. Wenn's jemand interessiert: Mein Ethersex-Fork mit EMS-Support ist hier: https://github.com/maniac103/ethersex Vielen Dank nochmal an Niffko, Rudi und Ingo F. für den Input.
Datum:
Hallo, kurze Frage: wo unterscheiden sich die Schaltungen von IngoF (http://www.mikrocontroller.net/attachment/97902/EMS.gif) und die von niffko (http://www.mikrocontroller.net/attachment/95287/EM...)? Würde mir gerne eine nachbauen und mit dem Code von Danny Baumann auf einem Pollin Net I/0 betreiben. Gruß Mirko
Datum:
Mirko Rüther schrieb: > kurze Frage: wo unterscheiden sich die Schaltungen von IngoF > (http://www.mikrocontroller.net/attachment/97902/EMS.gif) > > und die von niffko > (http://www.mikrocontroller.net/attachment/95287/EM...)? Ingo's Schaltung ist vom genauen Spannungspegel auf dem EMS abhängig, Niffko's Schaltung nicht. Von der µC-Seite sollten beide identisch sein. > Würde mir gerne eine nachbauen und mit dem Code von Danny Baumann auf > einem Pollin Net I/0 betreiben. Du musst allerdings beachten, dass du, um meinen Code 1:1 verwenden zu können, einen Atmega644p brauchst (wegen der 2. UART). Das Ganze lässt sich auch auf USART0 umbauen (von der Softwareseite sogar recht einfach), allerdings ist beim Pollin-Board ja der MAX232 im Weg...
Datum:
Danny Baumann schrieb: >> kurze Frage: wo unterscheiden sich die Schaltungen von IngoF >> (http://www.mikrocontroller.net/attachment/97902/EMS.gif) > Ingo's Schaltung ist vom genauen Spannungspegel auf dem EMS abhängig, > Niffko's Schaltung nicht. Von der µC-Seite sollten beide identisch sein. Also Meine Schaltung hatte ich selbst entwickelt. Niffko hat dann die Schaltung von Buderus herausbekommen. Bei meiner Schaltung habe ich auch feststellen müssen dass sie beim Senden das Empfangsignal beinflusst. Das hat sich aber nicht in Fehlern bemerkbar gemacht. Ich habe jetzt auf meinem EMS-Gateway auch die Niffko/Buderus-Schaltung genommen. Kann das auch nur empfehlen. Habe das Senden aber bisher noch nicht mit der neuen Schaltung testen können. Denke damit wird es aber nicht diese Probleme geben Gruß Ingo
Datum:
Hi, ich habe Niffko's Schaltung aufgebaut, mit Optokopplern galvanisch getrennt, dann auf 3,3V Pegel runter und auf einen FTDI UART USB Chip. Das funktioniert irgendwie nicht, auch nicht das Terminalprogramm einfach mitlaufen lassen, da kommt nichts raus und die Eco-Soft verbindet sich auch nicht. Habe ich bei der ganzen Sache noch irgendwas übersehen? Gruss Norbert
Datum:
Norbert Schnitzler schrieb: > Das funktioniert irgendwie nicht, auch nicht das Terminalprogramm > einfach mitlaufen lassen, da kommt nichts raus und die Eco-Soft > verbindet sich auch nicht. Liegt wohl irgendwie am Wetter. Für die ECO-Soft brauchst du einen Dongle. Grüße.
Datum:
Ist zwar etwas aus dem Zusammenhang gehört aber in diesen Thread: Die Schnitstelle der Logamatic 2107 mit der Fernbedienung BFU: http://wiki.neo-soft.org/index.php/Heizungsschnittstelle/BFU Herby
Datum:
Hallo Norbert, Die Schaltung ist eigentlich nur ein "Pegelwandler" mit USB-Anschluss. Wenn alles richtig aufgebaut ist sollten massenhaft Daten rauskommen wenn man ein Terminalprogramm anschließt. Fehlerquellen gibt es genug... Die schaltung selber kann nicht funktionieren... Die Optokoppler könnten die Probleme sein.... Der USB-Chip könnte natürlich auch irgendwelche Probleme haben. Den FTDI-Chip (FT245RL) kann man die Ausgänge mit der FTDI-Software programmieren dass die Ausgänge einen höhren Strom liefern um z.B. Optokoppler mit Strom zu versorgen.. Da hilft wohl nur einen Schaltungsteil nach dem anderen zu prüfen... Das die Eco-Soft nicht funktioniert ist kein Wunder. Erstens bekommst Du noch niemals auf dem Terminalprogramm Daten. Und zweitens benötigt die EcoSoft noch zusätzlich einen "Protokollkonverter" Weil die Daten zur EcoSoft anders übertragen werden. Desweiteren gibt es noch Probleme das auf dem Bus jedes Telegramm mit einem Break beendet wird. Der PC ist zu langsam um dieses Break auszuwerten. Dazu müsste er jedes Zeichen einzeln empfangen können und ist dazu einfach zu langsam. Dann gibt es noch das Problem dass Du zwar alle möglichen Daten auf dem PC mit dem Terminalprogramm empfangen kannst, aber das Break nur als normale "0" übertragen wirde. Der FT245RL hat keine Möglichkeit das Break zu senden oder zu empfangen. Denke der FT232 wird da das selbe Problem haben. Gruß Ingo
Datum:
Hallo, Herbert schrieb: > Ist zwar etwas aus dem Zusammenhang gehört aber in diesen Thread: > Die Schnitstelle der Logamatic 2107 mit der Fernbedienung BFU: > http://wiki.neo-soft.org/index.php/Heizungsschnittstelle/BFU danke für die Info. Ein paar Bilder wären nicht schlecht, falls du darauf einen Einfluss hast ;-). Grüße.
Datum:
Rudi schrieb: > Hallo, > > Herbert schrieb: >> Ist zwar etwas aus dem Zusammenhang gehört aber in diesen Thread: >> Die Schnitstelle der Logamatic 2107 mit der Fernbedienung BFU: >> http://wiki.neo-soft.org/index.php/Heizungsschnittstelle/BFU > > danke für die Info. Ein paar Bilder wären nicht schlecht, falls du > darauf einen Einfluss hast ;-). > > Grüße. Ich frag mal ganz blöd: Welche Bilder meinst Du ?
Datum:
Hallo Ingo, danke für die ausführliche Antwort, welches ist denn, deiner Meinung nach, die beste Möglichkeit auf die aktuellen Daten und evtl. auf Historiendaten per Heizung zuzugreifen. Dazu wurde hier zwar einiges geschrieben, aber leider ist es ja etwas unübersichtlich. Gruss Norbert
Datum:
Hallo Norbert, das Problem ist dass ein PC nicht jedes Zeichen einzeln annimmt. Die Bytes werden in einen Zwischenbuffer abgelegt und dann wenn der PC mal Zeit hat der Buffer geleert. Das Break löst einen Frame-Error aus. Der PC kann also nur sehen dass irgend ein Zeichen von den ganzen Zeichen das Break war. Kann aber nicht feststellen welches Zeichen es war. Es muss also ein Mikrocontroller sein der die Daten annimmt und die Daten zum PC schickt. Wenn noch geschrieben werden soll muss auch das Polling am Bus beantwortet werden. Keine Ahnung ob es mit einem Linux-PC klappen könnte. Aber vermutlich sind PCs generell dafür zu langsam. Gruß Ingo
Datum:
Hallo Ingo, meine Frage war in die Richtung gemünzt, ob hier einer der vielen Autoren eine 'einfache' Hardwarelösung genutzt hat, bei der der Code zugänglich ist, so dass man diese nur nachbauen muss und direkt ein funktionierendes System hat, ohne selber alles zu entwickeln. Ich würde mich zwar gerne tiefer in die Materie einarbeiten, aber mir geht es im Moment nur darum, möglichst schnell ans Ziel zu kommen und Zugriff auf die Daten zu bekommen. Gruss Norbert
Datum:
Norbert Schnitzler schrieb: > Autoren eine 'einfache' Hardwarelösung genutzt hat Na gut dann habe ich zumindest schon mal aufgeklärt ;o) Fragt sich nur wie "Einfach" Du meinst. Denke die Schaltung ohne Microcontroller nehmen wird wohl nicht aus den genannten Gründen gehen. Niffko hat ja den kompletten Schaltplan schon gepostet. Also mit µC nachbauen und dann sollte es laufen. Oder hast Du die Schaltung mit µC nachgebaut und ich hatte das nicht so ganz verstanden. Einfach mal Niffko fragen ob er seinen Quelltext oder das HEX-File rausrückt. Meinen Schaltplan hatte ich ja schon gepostet ( Beitrag "Re: Buderus EMS-"Gateway" mit PIC18F / Sammelbestellung" ) Aber der wird Dir dann wohl zu komplex sein. Könnte man aber bis auf den FTDI-Chip auf mit nicht-SMD Bauteilen nachbauen. Das HEX-File kannst Du natürlich gerne bekommen... Gruß Ingo
Datum:
Hallo Ingo, bis jetzt hatte ich nur die Sende-/Empfangsstufe nachgebaut, ich schau morgen mal auf der Arbeit, ob ich da einen passenden Pic finde, dann wäre es ja kurz und schmerzlos auszubauen. Platinen hast du keine mehr oder? Wie/In welchem Format schiebst du die Daten zur seriellen Schnittstelle raus? welches Display kann man Anschließen (4x20Zeichen)? Gruss Norbert
Datum:
Norbert Schnitzler schrieb: > ob ich da einen passenden Pic finde Also wenn dann muss es schon der 18F4580 oder 4480 sein falls Du mein Hex File benutzen möchtest. Der FT245RL muss natürlich auch genauso angeschlossen werden und die Analoge-Mode-Auswahl mit dem Dipschalter. Und natürlich Die Sende-/Empfangsstufe, die ja noch nicht so ganz funktioniert. Das Display ist im Moment noch absolut egal. Habe im Moment ein 4X20 angeschlossen. Aber im Moment wird es noch nicht benutzt. Sind nur ein paar Ausgaben zum testen für die Kommunikation mit dem USB-Chip. Ausgabe ist in zwei Versionen verfügbar: Hex: 0xAA 0x55 <EMS-Telegramm> 0x00 <Telegrammlänge> 0xAA 0x55 oder als Text das Telegramm in HEX mit Leerzeichen zum trennen und <CR&LF> am Telegrammende. Polling wird nicht übertragen. Soll aber zum debuggen bald möglich sein. Gruß Ingo
Datum:
Wenn's nicht unbedingt ein PIC sein muss, habe ich weiter oben schon mal einen Link zu meinem Code für den Atmega644p auch dem Pollin-Net-IO-Board gepostet...
Datum:
Nabend! Werde in Kürze mal den Code für eine Read-Only-Minimalversion posten - muss ihn noch ein wenig aufräumen und noch mal testen ;) Hardware siehe: Beitrag "Re: Logamatic 2107 Schnittstelle" //Niffko
Datum:
Guten morgen, Also ich habe einen Atmega 32 hier und PIC18F4620, würde dein Hex direkt auf diesen PIC passen oder kann man den in MPLAB schnell passend kompilieren, Ingo? Wenn nicht würde ich umkompilieren mit dem Atmel versuchen. Gruss Norbert
Datum:
Norbert Schnitzler schrieb: > Guten morgen, > > Also ich habe einen Atmega 32 hier und PIC18F4620, würde dein Hex direkt > auf diesen PIC passen oder kann man den in MPLAB schnell passend > kompilieren, Ingo? > Wenn nicht würde ich umkompilieren mit dem Atmel versuchen. > > Gruss > Norbert Hallo Norbert, also generell kann ich das nicht garantieren. Sieht aber ganz gut aus. Du musst allerdings alles so sbeschalten wie in meinem Schaltplan angegeben. Der CAN-Eingang (RB2) muss dann z.B. mit 10KOhm auf irgendeinen Pegel gelegt werden. Beim Mikrocontroller muss LVP in den Bits deaktiviert werden oder der Pin (RB5??) muss auch mit 10kohm auf Low gezogen werden (nicht getestet, bei mir deaktiviert) Wichtig ist die analoge beschaltung beim Einschalten und reset. Etwa 0V = AN1310 Bootloader >0V <0,2 Volt RAW-Daten mit 0xaa 0x55 >0,2V HEX als Text mit CR&LF Und es muss der FT245 sein. Der Ft232 funktioniert nicht mit meinem HEX-File (zweiter UART notwendig) Kann allerdings nicht versprechen das es noch funktioniert wenn ich den CAN-interupt bei späteren Versionen aktiviere. Vermutlich sollte das aber gehen. Das HEX-File kann ich aber vermutlich erst morgen posten. Gruß Ingo
Datum:
Angehängte Dateien:IngoF schrieb: > Das HEX-File kann ich aber vermutlich erst morgen posten. Hab es leider nicht schneller geschafft.. LED2 leuchtet wenn der PC über USB verbunden ist. LED1 leuchtet wenn der Buffer des FT245 voll ist und sollte also bei angeschlossenem PC nicht wirklich oft lange leuchten. Im Bereich bis 0x3ff ist der modifizierte AN1310-Bootloader Ab 0x400 ist da eigentliche Programm. Bisher ist nur das weiterleiten vom EMS-Bus zum PC möglich. Das Polling auf dem EMS-Bus wird nicht beantwortet. Gruß Ingo
Datum:
Angehängte Dateien:Nabend! Anhängend Schaltplan und Hex-File für einen EMS-Reader. Funktion: Das Bussignal wird über AC-Kopplung auf den internen Komparator eines ATtiny2313 gegeben. Das Komparatorsignal triggert einen interruptgesteuerten Soft-UART mit 100 Byte FIFO. Die Ausgabe läuft über den Hard-UART des Tiny. Schnittstellenperipherie dann je nach Gusto als FT232, MAX232, Optokoppler etc.. Optionen: -Ausgabe ASCII Hex + <CR+LF> -Ausgabe Raw ( Format: <AA><55><Frame-Länge><Frame-Data> ) -Ausgabe mit Polling -Ausgabe ohne Polling //Niffko
Datum:
argh ... LED1 ist falsch herum eingezeichnet ... sorry. //Niffko
Datum:
Mal eine Frage an die 'Sendenden': Reagiert die RC3x bei euch zuverlässig auf Anfragen? Ich versuche im Moment den Fehlerspeicher auszulesen und sende folgendes: 0x0b 0x90 0x12 0x00 0x0c <crc> (lese 1. Eintrag mit 12 Bytes) ... warte auf Antwort, die kommt in 100% der Fälle ... 0x0b 0x90 0x12 0x0c 0x0c <crc> (lese 2. Eintrag) ... die kommt eigentlich auch immer ... 0x0b 0x90 0x12 0x18 0x0c <crc> (lese 3. Eintrag) ... ab hier wird's unzuverlässig, oft bekomme ich da keine Antwort 0x0b 0x90 0x12 0x24 0x0c <crc> (lese 4. Eintrag) ... dito ... Seht ihr so was bei euch auch (hieße für mich: Retry einbauen) oder eher nicht (da müsste ich noch mal in meinen Ethersex-Code schauen)? Kann einer von euch mal versuchen, das zu reproduzieren? Danke.
Datum:
Hi Danny, eine Frage vorne weg: Lässt du zwischen den aufeinander folgenden Abfragen Pausen oder prüfst du ob der RC3X geliefert hat? Ich habe deine Abfrage mal in mein Anwendung hinein gehackt. Aus Aufwandsgründen allerdings nur mit Pausen zwischen den Einzelabfragen. Dein Problem konnte ich nachvollziehen. Kurz gesagt - es ist ein Zeitproblem. Es sieht so aus, als wenn der RC3X, 4 kurz aufeinander folgende Abfragen á 12 Byte nicht so schnell gebacken kriegt. Was 100% immer funktioniert hat waren 2 Abfragen á 24 Byte - die müsstest du dann halt noch auseinander pflücken. Andere Alternative: Jeden 12 Byte Block auf eine neue Polling-Anfrage verteilen. //Niffko
Datum:
> eine Frage vorne weg: Lässt du zwischen den aufeinander folgenden > Abfragen Pausen oder prüfst du ob der RC3X geliefert hat? Letzteres. Ich schicke jeweils eine Abfrage los und warte auf Antwort. Mein Ethersex-Code macht die TCP-Verbindung eh so lange dicht, bis er die Abfrage abgesetzt hat. > Ich habe deine Abfrage mal in mein Anwendung hinein gehackt. Aus > Aufwandsgründen allerdings nur mit Pausen zwischen den Einzelabfragen. > Dein Problem konnte ich nachvollziehen. Kurz gesagt - es ist ein > Zeitproblem. Es sieht so aus, als wenn der RC3X, 4 kurz aufeinander > folgende Abfragen á 12 Byte nicht so schnell gebacken kriegt. Was 100% > immer funktioniert hat waren 2 Abfragen á 24 Byte - die müsstest du dann > halt noch auseinander pflücken. Andere Alternative: Jeden 12 Byte Block > auf eine neue Polling-Anfrage verteilen. Das (1 Abfrage pro Polling) hatte ich halt schon getan. Final will ich auch nur 2 Abfragen abschicken (schon aus Performance-Gründen, da ja ordentlich Latenz reinkommt, da ich ja jedesmal erst mal auf's Polling warten muss), allerdings will ich das Problem erst mal verstehen - schließlich könnte es ja sein, dass meine Anfrage (aus welchen Gründen auch immer) verlorengegangen ist. Wenn das aber normal wäre, dass der RC3x (in meinem Fall: RC30) manchmal Aussetzer hat, müsste ich mir ja keine größeren Sorgen machen. Allerdings frag ich mich grad, ob es dann nicht besser wäre, alle Anfragen/Kommandos an 0x90/0x88 zu senden, damit man wenigstens eine Rückmeldung hat, ob die Anfrage angekommen ist. Der interne Puffer der RC3x scheint ohnehin klein zu sein, wenn ich '0x0b 0x90 0x12 0x00 0xff' sende, bekomme ich auch nur 25 oder 26 Byte Nutzdaten zurück.
Datum:
Danny Baumann schrieb: > Ich schicke jeweils eine Abfrage los und warte auf Antwort. Um bei ausbleibender Antwort eine Hängepartie zu vermeiden, müsstest du ja dann auch einen Timeout eingebaut haben - hast du? Nur mal so als Hausnummer - ich musste die Pause zwischen der Einzelabfrage(12 Byte, letzter Block) und dem abschließenden <0B> auf 200ms setzen um zuverlässig eine Antwort zu bekommen. Wobei (bei mir) aber auch schon ca. 20ms vergangen sind, bis der Master die Anfrage vollständig auf den Bus geechot hat. Danny Baumann schrieb: > ... schließlich könnte es ja sein, dass meine Anfrage (aus welchen Gründen > auch immer) verlorengegangen ist. Glaube ich nicht. Ich hatte beim Testen zum Senden und Empfangen jeweils separate Hardware und dürfte somit sicher alle Telegramme mitgeschnitten haben. Das Anfragetelegramm wurde immer korrekt wiedergegeben, es kam aber trotzdem sporadisch keine Antwort vom RC35. Danny Baumann schrieb: > ... alle Anfragen/Kommandos an 0x90/0x88 zu senden, > damit man wenigstens eine Rückmeldung hat, ob die Anfrage angekommen > ist. öhmm ... hier kann ich dir irgendwie nicht ganz folgen. //Niffko
Datum:
Niffko _ schrieb: > Danny Baumann schrieb: >> Ich schicke jeweils eine Abfrage los und warte auf Antwort. > > Um bei ausbleibender Antwort eine Hängepartie zu vermeiden, müsstest du > ja dann auch einen Timeout eingebaut haben - hast du? Nur mal so als Nein, noch nicht, kann ich aber einfach tun. > Hausnummer - ich musste die Pause zwischen der Einzelabfrage(12 Byte, > letzter Block) und dem abschließenden <0B> auf 200ms setzen um > zuverlässig eine Antwort zu bekommen. Wobei (bei mir) aber auch schon > ca. 20ms vergangen sind, bis der Master die Anfrage vollständig auf den > Bus geechot hat. Das heißt, du schließt jedes Senden mit einem leeren Telegramm ab? Ich hatte (hier im Thread) gelesen, dass dss nicht nötig sei. > > Danny Baumann schrieb: >> ... schließlich könnte es ja sein, dass meine Anfrage (aus welchen Gründen >> auch immer) verlorengegangen ist. > > Glaube ich nicht. Ich hatte beim Testen zum Senden und Empfangen jeweils > separate Hardware und dürfte somit sicher alle Telegramme mitgeschnitten > haben. Das Anfragetelegramm wurde immer korrekt wiedergegeben, es kam > aber trotzdem sporadisch keine Antwort vom RC35. > Ok, das beruhigt mich...das heißt also, dass das Verhalten, das ich sehe, 'normal' ist. > Danny Baumann schrieb: >> ... alle Anfragen/Kommandos an 0x90/0x88 zu senden, >> damit man wenigstens eine Rückmeldung hat, ob die Anfrage angekommen >> ist. > > öhmm ... hier kann ich dir irgendwie nicht ganz folgen. Wenn man auf die Empfänger-Adresse 0x80 drauf-odert (d.h. 0x08 -> 0x88 und 0x10 -> 0x90) gibt man ja an, dass man eine Antwort erwartet. Wenn man die bekommt, kann man sich sicher sein, dass das Kommando angekommen (und verstanden) ist. > > > > > //Niffko
Datum:
Nabend, ich habe mal ein frage zum EMS-collector. Habe die Quellen auf einem std. Debian 6 mit den boost & mysql libs übersetzt root@debian6:~/ems-collector/collector# make g++ -Wall -c -O2 -I/usr/include/mysql -I../framer -MM main.cpp SerialHandler.cpp Message.cpp Da tabase.cpp Options.cpp PidFile.cpp > .depend g++ -Wall -c -O2 -I/usr/include/mysql -I../framer main.cpp g++ -Wall -c -O2 -I/usr/include/mysql -I../framer SerialHandler.cpp g++ -Wall -c -O2 -I/usr/include/mysql -I../framer Message.cpp g++ -Wall -c -O2 -I/usr/include/mysql -I../framer Database.cpp g++ -Wall -c -O2 -I/usr/include/mysql -I../framer Options.cpp g++ -Wall -c -O2 -I/usr/include/mysql -I../framer PidFile.cpp g++ -lpthread -lboost_system -lboost_thread-mt -lboost_program_options -lmysqlpp -o collectord main.o SerialHandler.o Message.o Database.o Options.o PidFile.o Wenn ich das ganze starte bekomme ich auch keine Fehlermeldung und die DB ems_data wird auch schön angelegt. ./collectord -u root -p passwd -d all=/tmp/ems.log /dev/ttyUSB0 Die Datenbank füllt sich nur leider nicht. Im Logfile finden sich auch nur die Daten vom SERIAL(port). ... SERIAL: Got bytes 00 0x77 00 0x17 0xaa 0x55 SERIAL: Got bytes 0xaa 0x55 0x8 00 0x18 00 0x2b 0x1 0xb1 0x64 00 0x1 0x1 0x20 0x60 0x80 00 0x2 0x7 0x1 0xb1 00 00 0xf 0x30 0x59 00 0xcc 00 00 00 0x6f 00 0x1f 0xaa 0x55 SERIAL: Got bytes 0xaa 0x55 0x10 0x21 0xac 00 0x1d 0x64 0x3 0xa5 00 0x9 0xaa 0x55 ... Wie kann ich hier weiter debuggen woran könnte es scheitern? Zweite Frage wir kann ich eine Binary erstellen die alle Libs direkt enthält? Auf meinem Server läuft noch Debian Lenny und da will die boost lib nicht :-( Danke!
Datum:
Kay F. schrieb: > SERIAL: Got bytes 00 0x77 00 0x17 0xaa 0x55 > SERIAL: Got bytes 0xaa 0x55 0x8 00 0x18 00 0x2b 0x1 0xb1 0x64 00 0x1 0x1 > 0x20 0x60 0x80 00 0x2 0x7 0x1 0xb1 00 00 0xf 0x30 0x59 00 0xcc 00 00 00 > 0x6f 00 0x1f 0xaa 0x55 > SERIAL: Got bytes 0xaa 0x55 0x10 0x21 0xac 00 0x1d 0x64 0x3 0xa5 00 0x9 > 0xaa 0x55 Alles zwischen 0xaa 0x55 und <len> 0xaa 0x55 sind die Heizungsdaten. Die "<len>" bezieht sich auf die EMS-Daten, also sind es insgesamt LEN+5 Bytes. > > Wie kann ich hier weiter debuggen woran könnte es scheitern? > Zweite Frage wir kann ich eine Binary erstellen die alle Libs direkt > enthält? Auf meinem Server läuft noch Debian Lenny und da will die boost > lib nicht :-( Versuch mal den Schalter -static für den gcc/g++. Mit ldd <appl> kannst du sehen welche Lib noch dynamisch gelinkt ist. Grüße.
Datum:
Danny Baumann schrieb: > Das heißt, du schließt jedes Senden mit einem leeren Telegramm ab? Ja klar ... genau wie alle anderen Busteilnehmer auch. Damit signalisiert man dem Master: "habe fertig!". > Ich hatte (hier im Thread) gelesen, dass dss nicht nötig sei. Naja ... der Timeout wird's schon richten. Danny Baumann schrieb: > Allerdings frag ich mich grad, ob es dann > nicht besser wäre, alle Anfragen/Kommandos an 0x90/0x88 zu senden, Danny Baumann schrieb: > Wenn man auf die Empfänger-Adresse 0x80 drauf-odert (d.h. 0x08 -> 0x88 > und 0x10 -> 0x90) gibt man ja an, dass man eine Antwort erwartet. Ja, das ist klar. Ich weiß nur nicht, wo du hier eine Wahlmöglichkeit siehst. Wenn man von einem Teilnehmer Daten haben möchte, kommt die 0x80 mit drauf. Handelt es sich um eine Anweisung/Parametrierung, dann nicht. Im letzten Fall bekommt man übrigens auch Rückmeldung, nämlich 0x01 für "ok" und 0x04 für "Fehler". //Niffko
Datum:
Hi, > Die Datenbank füllt sich nur leider nicht. Im Logfile finden sich auch > nur die Daten vom SERIAL(port). > > ... > SERIAL: Got bytes 00 0x77 00 0x17 0xaa 0x55 > SERIAL: Got bytes 0xaa 0x55 0x8 00 0x18 00 0x2b 0x1 0xb1 0x64 00 0x1 0x1 > 0x20 0x60 0x80 00 0x2 0x7 0x1 0xb1 00 00 0xf 0x30 0x59 00 0xcc 00 00 00 > 0x6f 00 0x1f 0xaa 0x55 > SERIAL: Got bytes 0xaa 0x55 0x10 0x21 0xac 00 0x1d 0x64 0x3 0xa5 00 0x9 > 0xaa 0x55 > ... > > Wie kann ich hier weiter debuggen woran könnte es scheitern? Das Format sieht aber nicht nach meinem Atmega-Code aus. Es sieht aus wie 0xaa 0x55 <ems data> <ems checksum> 0xaa 0x55 Der Collector erwartet aber 0xaa 0x55 <frametype> <length> <ems data> <running xor checksum> Siehe das Unterverzeichnis framer/. Du kannst jetzt entweder deinen µC entsprechend umstellen (wenn's ein Atmega ist, hab ich den Code ja mitgeliefert) oder SerialHandler.cpp umbauen. Out-of-the-Box geht das so nicht.
Datum:
>> Das heißt, du schließt jedes Senden mit einem leeren Telegramm ab? > > Ja klar ... genau wie alle anderen Busteilnehmer auch. Damit > signalisiert man dem Master: "habe fertig!". > >> Ich hatte (hier im Thread) gelesen, dass dss nicht nötig sei. > > Naja ... der Timeout wird's schon richten. Ok, dann jetzt mal Butter bei die Fische, um das mal aufzulösen :) Wenn ich nix zu senden habe, passiert ja das hier: <0x8b><brk> <0x0b><brk> (letzteres kommt von mir) Wenn ich etwas zu sagen habe, muss also folgendes passieren? <0x8b><brk> <0x0b><data_1>...<data_n><brk> <0x0b><brk> Wenn dem so ist, bekomme ich dann auch ein Echo für das Break, d.h. kann ich auf ein empfangenes Byte 0x00 warten? >> Allerdings frag ich mich grad, ob es dann >> nicht besser wäre, alle Anfragen/Kommandos an 0x90/0x88 zu senden, > >> Wenn man auf die Empfänger-Adresse 0x80 drauf-odert (d.h. 0x08 -> 0x88 >> und 0x10 -> 0x90) gibt man ja an, dass man eine Antwort erwartet. > > Ja, das ist klar. Ich weiß nur nicht, wo du hier eine Wahlmöglichkeit > siehst. Wenn man von einem Teilnehmer Daten haben möchte, kommt die 0x80 > mit drauf. Handelt es sich um eine Anweisung/Parametrierung, dann nicht. > Im letzten Fall bekommt man übrigens auch Rückmeldung, nämlich 0x01 für > "ok" und 0x04 für "Fehler". Das ist interessant, genau diese Rückmeldung scheine ich nicht zu bekommen. Ich sende z.B. zum Ändern des Warmwasser-Modus (aus/an/auto) 0x0b 0x10 0x37 0x02 0x02 <crc> <brk> Ich sollte also eine Antwort bekommen, die so aussieht? 0x10 0x0b 0x1 <crc> <brk> Genau das scheint nicht zu passieren. Der Modus wird aber korrekt geändert, das sehe ich ja an der RC30. Wenn ich die 0x10 in der Anfrage durch 0x90 ersetze, bekomme ich eine Antwort, die sich allerdings scheinbar eher auf die gesetzten Daten bezieht, als dass sie 0x1/0x4 zurückliefern würde.
Datum:
Hallo, danke für die Antworten. Jetzt verstehe ich das Konstrukt ein wenig besser. Ich nutze das EMS-Gateway von Ingo (PIC), somit kann ich den Framer nicht verwenden. Wenn es okay ist, würde ich den Quelltext von Danny mißbrauchen und umbauen. Wenn ich das gerade auf die schnelle richtig gesehen habe, sind die Formate ja nicht so unterschiedlich: 0xaa 0x55 <ems data> <length> 0xaa 0x55 0xaa 0x55 <frametype> <length> <ems data> <running xor checksum> <frametype> ist immer 0 (FRAME_TYPE_DATA) da der PIC keine Statistik hat. Also muss ich nur die SerialHandler::readComplete(..) verstehen und anpassen..... Gruß Kay
Datum:
> danke für die Antworten. Jetzt verstehe ich das Konstrukt ein wenig > besser. Ich nutze das EMS-Gateway von Ingo (PIC), somit kann ich den > Framer nicht verwenden. Wenn es okay ist, würde ich den Quelltext von > Danny mißbrauchen und umbauen. Wenn ich das gerade auf die schnelle Das ist ok, ist ja Open Source - vergiss nur nicht, deine Änderungen wieder zur Verfügung zu stellen ;) > richtig gesehen habe, sind die Formate ja nicht so unterschiedlich: > > 0xaa 0x55 <ems data> <length> 0xaa 0x55 Ja, wobei Ingo die EMS-Prüfsumme über RS232 weiterreicht, was ich nicht tue (ich prüfe die im Atmel). Das Break scheint auch enthalten zu sein, d.h. das Format wäre 0xaa 0x55 <ems data> <ems checksum> <0x00=brk> <length between markers> 0xaa 0x55 > 0xaa 0x55 <frametype> <length> <ems data> <running xor checksum> > > <frametype> ist immer 0 (FRAME_TYPE_DATA) da der PIC keine Statistik > hat. Hmm? Frametype gibt's nur in meinem Format, was hat das mit dem PIC zu tun? > Also muss ich nur die SerialHandler::readComplete(..) verstehen und > anpassen..... Richtig, sollte aber nicht übermäßig schwierig sein :)
Datum:
Danny Baumann schrieb: > Ok, dann jetzt mal Butter bei die Fische ... Aber gerne ... Abfrage:
RX: <0x8b> <brk> TX: <0x0b> <0x88> <content> <crc> <brk> RX: <0x08> <0x0b> <content> <crc> <brk> TX: <0x0b> <brk> |
Anweisung:
RX: <0x8b> <brk> TX: <0x0b> <0x08> <content> <crc> <brk> RX: <0x01> <brk> TX: <0x0b> <brk> |
Ich schätze mal, die 0x01 versackt bei dir im Polling - oder? //Niffko
Datum:
>> Ok, dann jetzt mal Butter bei die Fische ... > > Aber gerne ... Danke :) > Abfrage: >
> RX: <0x8b> <brk> > TX: <0x0b> <0x88> <content> <crc> <brk> > RX: <0x08> <0x0b> <content> <crc> <brk> > TX: <0x0b> <brk> > |
Ok, verstehe. Das sollte sich ja recht leicht einbauen lassen. > Anweisung: >
> RX: <0x8b> <brk> > TX: <0x0b> <0x08> <content> <crc> <brk> > RX: <0x01> <brk> > TX: <0x0b> <brk> > |
> > > Ich schätze mal, die 0x01 versackt bei dir im Polling - oder? In der Tat. Alle Nachrichten mit nur 1 Byte sehe ich als Polling an. Sieht so aus, als ob ich 0x01 und 0x04 speziell behandeln muss. Vom Protokoll her sieht das aber echt bekloppt aus - wenn man eine Status-Antwort gibt, warum schickt man die dann nicht an den Absender der Anweisung? seufz Naja, jammern nützt nix, ändern können wir es eh nicht, also muss ich das wohl einbauen ;) Danke aber auf alle Fälle für die Infos. Weißt du, ob das Break vom MC10 'geechot' wird?
Datum:
Danny Baumann schrieb: > Weißt du, ob das Break vom MC10 'geechot' wird? Überleg' mal ... alle Telegramme die du auf dem Bus siehst, sind - mit Ausnahme derer vom Master selbst - alles Echos. Und alle haben ein Break ... also?! ;) //Niffko
Datum:
Niffko _ schrieb: > Danny Baumann schrieb: >> Weißt du, ob das Break vom MC10 'geechot' wird? > > Überleg' mal ... alle Telegramme die du auf dem Bus siehst, sind - mit > Ausnahme derer vom Master selbst - alles Echos. Und alle haben ein > Break ... also?! ;) Hast ja recht, da hätte man mit etwas nachdenken drauf kommen können :) Ich werd jetzt mal meinen Atmel-Code umbauen...
Datum:
Nabend ;) Ich habe jetzt noch mal den ganzen Thread durchgesehen, aber nix gefunden. Habt ihr mittlerweile herausgefunden wie sich die Außentemperatur im Minusbereich berechnen lässt? Gruß Jens
Datum:
> Ich habe jetzt noch mal den ganzen Thread durchgesehen, aber nix > gefunden. Habt ihr mittlerweile herausgefunden wie sich die > Außentemperatur im Minusbereich berechnen lässt? Ja klar ;) Direkt aus meinem Code (von hier: Beitrag "Re: Logamatic 2107 Schnittstelle" - Message.cpp):
/* treat values with highest bit set as negative
* e.g. size = 2, value = 0xfffe -> real value -2
*/
if (m_buffer[offset] & 0x80) {
value = value - (1 << (size * 8));
}
|
D.h.: gelesen 0xffdd -> Wert = 0xffdd - (1 << 16) = 0xffdd - 0x10000 = 65501 - 65536 = -35 Wenn ich mich recht entsinne, ist die Außentemperatur als 16-bit-Wert mit einer Nachkommastelle gespeichert, d.h. im Beispielfall wären das -3.5°C.
Datum:
Jens H. schrieb: > ... Außentemperatur im Minusbereich berechnen ... Das ist ein ganz normaler signed Integer16. Ich stopfe meine empfangenen Bytes z.B. alle per Byte-Pointer in die entsprechenden Variablen. Pseudocode:
uint8_t *pointer;
int16_t outtemp; // 1/10 °C
pointer = (uint8_t*)&outtemp;
*pointer++ = emsOuttempLow;
*pointer = emsOuttempHigh;
|
Und wie Danny schon richtig bemerkte, wird die reale Außentemperatur in 1/10°C ausgegeben. Bei der gedämpften AT sind es hingegen ganze °C in 8 Bit. // Niffko
Datum:
Ok, danke für den Hinweis zu den Minustemperaturen, aber was is denn die "normale" und was die "gedämpfte" Außentemp? Das geht scheinbar ein wenig unter .. zumindest in den Listen die ich hier im Thread gefunden habe. Auf diverse Codeschnipsle hatte ich jetzt nicht so geachtet, da ich vor habe das mit PHP zu lösen. Gruß Jens
Datum:
Jens H. schrieb: > Ok, danke für den Hinweis zu den Minustemperaturen, aber was is denn die > "normale" und was die "gedämpfte" Außentemp? Das geht scheinbar ein > wenig unter .. zumindest in den Listen die ich hier im Thread gefunden > habe. Die gedämpfte AT wird zur Regelung benutzt und durch mehrere Parameter berechnet (AT/Gebäudeart etc.). Grüße.
Datum:
Die gedämpfte AT vollzieht Änderungen der realen AT mit einer gewissen zeitlichen Verzögerung nach. Hiermit soll die thermische Trägheit des Baukörpers berücksichtigt werden. Die Intensität der Dämfung ist abhängig von der eingestellten Gebäudeart. Im Gegensatz zum RC30 ist die Dämpfung mit dem RC35 auch komplett abschaltbar. Wie Rudi schon schrieb, wird mit der gedämpften AT über die Heizkennlinie die Vorlaufsolltemperatur berechnet. Für die So/Wi-Umschaltung ist sie übrigens auch verantwortlich. //Niffko
Datum:
Angehängte Dateien:Hallo, ich habe irgendwie Probleme den Quellcode von Danny zuverstehen, was an meiner fehlenden Erfahrung im Bereich c++ liegen kann ;-) Ich habe versucht die SerialHandler::readComplete() Funktion anzupassen, was ich eigentlich als nicht so schwierig erachtet habe. Im Debug Mode erkennt man das die Funktion mit dem richtig erkannten Anfang & Ende aufgerufen wird: SERIAL: Got bytes 0xaa 0x55 0x8 00 0x34 00 0x32 0x1 0xfd 0x1 0xfd 0x21 00 0x5 0x3 00 00 0x8b 0xef 00 0x8 0xfc 00 0xe 00 0x17 0xaa 0x55 Die EMS Daten stehen ja in m_recvBuffer die ich jetzt von 2 bis (bytesTransferred -3) in DataMessage kopieren muss und gut ist. Irgenwie haut das aber nicht hin und ich bekomme segvaults und andere unschöne sachen :-( Ich habe die Funktion mal angehängt. Ist das mit den einfachen nullen so okay, oder was paßt nicht? Danke und Gruß Kay
Datum:
Hi, > ich habe irgendwie Probleme den Quellcode von Danny zuverstehen, was an > meiner fehlenden Erfahrung im Bereich c++ liegen kann ;-) > Ich habe versucht die SerialHandler::readComplete() Funktion anzupassen, > was ich eigentlich als nicht so schwierig erachtet habe. Im Debug Mode > erkennt man das die Funktion mit dem richtig erkannten Anfang & Ende > aufgerufen wird: > SERIAL: Got bytes 0xaa 0x55 0x8 00 0x34 00 0x32 0x1 0xfd 0x1 0xfd 0x21 > 00 0x5 0x3 00 00 0x8b 0xef 00 0x8 0xfc 00 0xe 00 0x17 0xaa 0x55 Das ist nicht 'richtig erkannt', dass ist Glück, dass mit 1x lesen genau ein Paket zurückkam. Es hätte auch sein können, dass 2 Pakete mit einem mal gelesen werden, oder dass ein Paket in 2 Teilen ankommt. Aus diesem Grund hatte ich ja die State Machine gebaut, die jedes Byte einzeln anschaut... > Die EMS Daten stehen ja in m_recvBuffer die ich jetzt von 2 bis > (bytesTransferred -3) in DataMessage kopieren muss und gut ist. > Irgenwie haut das aber nicht hin und ich bekomme segvaults und andere > unschöne sachen :-( > > Ich habe die Funktion mal angehängt. Ist das mit den einfachen nullen so > okay, oder was paßt nicht? Bei mir kommt <Start-Marker> <Länge> <Daten>, bei Ingo <Start-Marker> <Daten> <Länge> <End-Marker>. m_recvBuffer[2] ist bei dir also nicht die Länge, sondern das erste Nutzbyte. Du allokierst also 8 Byte in der Message und füllst dann 23 oder 24 Bytes rein ... nicht gut. Es hätte funktioniert (d.h. wäre nicht gecrasht), wenn die Nachricht vom Mischer gekommen wäre ;) Du musst also etwas umbauen (Nachricht in std::vector<uint8_t> in SerialHandler aufsammeln und komplett an Message übergeben, anstatt addByte und isFull zu benutzen); oder alternativ Ingo überzeugen, das Streaming-Format sinnvoll zu gestalten ;)
Datum:
Danny Baumann schrieb: > Du musst also etwas umbauen (Nachricht in std::vector<uint8_t> in > SerialHandler aufsammeln und komplett an Message übergeben, anstatt > addByte und isFull zu benutzen); oder alternativ Ingo überzeugen, das > Streaming-Format sinnvoll zu gestalten ;) Ich hatte das damals aus Speichermangel (bei Fehlern max. 256 Bytes), wegen der Geschwindigkeit und Raw-Daten so festgelegt (mega8). Das genaue EMS-Format war zu der Zeit noch etwas schleierhaft und es war einfacher den Puffer, Parser und die Fehlerauswertung auf dem PC zu schreiben als auf dem uC. Egal wie man es macht, man muss immer auf die kompletten Daten warten und dann die Länge + CRC checken, da das Pattern auch in den Daten vorhanden sein kann. Bei der "nicht so" eleganten Methode braucht der uC keinen Zwischenspeicher ;-). Grüße.
Datum:
>> Du musst also etwas umbauen (Nachricht in std::vector<uint8_t> in >> SerialHandler aufsammeln und komplett an Message übergeben, anstatt >> addByte und isFull zu benutzen); oder alternativ Ingo überzeugen, das >> Streaming-Format sinnvoll zu gestalten ;) > > Ich hatte das damals aus Speichermangel (bei Fehlern max. 256 Bytes), > wegen der Geschwindigkeit und Raw-Daten so festgelegt (mega8). Das > genaue EMS-Format war zu der Zeit noch etwas schleierhaft und es war > einfacher den Puffer, Parser und die Fehlerauswertung auf dem PC zu > schreiben als auf dem uC. Ist ja richtig, aber deswegen muss man das heute doch nicht mehr so machen :) > Egal wie man es macht, man muss immer auf die kompletten Daten warten > und dann die Länge + CRC checken, da das Pattern auch in den Daten > vorhanden sein kann. Bei der "nicht so" eleganten Methode braucht der uC > keinen Zwischenspeicher ;-). Korrekt. Nach allem, was wir inzwischen wissen, reicht aber ein Atmega8 für 2,15€ bei Reichelt für Zwischenspeicherung + EMS-Checksummen-Überprüfung dicke aus ;) Ich wollte ja auch nicht sagen, dass das alles komplett daneben ist, sondern nur, dass Ingo's (bzw. dein) Framing-Format nicht 1:1 zu meinem Daemon passt, weil ich das Format so gewählt habe, dass es leicht zu parsen ist. Mir ist natürlich klar, dass ihr jetzt nicht ohne Not das Format bei euch ändert, weil es - wenn man einmal eine lauffähige Lösung hat - im Prinzip sinnlose Arbeit ist...
Datum:
Das könnte so funktionieren:
unsigned char dataByte;
debug << "new DataMessage "<< std::setfill('0') << std::setw(2) << std::showbase << std::hex << (unsigned int) m_recvBuffer[i] << " ";
dataByte = m_recvBuffer[bytesTransferred-3];
m_message = new DataMessage(m_db, dataByte);
for (size_t i = 2; i < (bytesTransferred-5); i++) {
debug << std::setfill('0') << std::showbase << std::hex << std::setw(2) << (unsigned int) m_recvBuffer[i] << " ";
dataByte = m_recvBuffer[i];
m_message->addData(dataByte);
if (m_message->isFull()) {
debug << std::endl;
m_state = Checksum;
}
} // end only data
|
Datum:
Danny Baumann schrieb: > Mir ist natürlich klar, dass ihr jetzt nicht ohne Not das Format bei > euch ändert, weil es - wenn man einmal eine lauffähige Lösung hat - im > Prinzip sinnlose Arbeit ist... Hallo, hatte auch schon mal vorgehabt das Format etwas zu ändern. Wollte es eigentlich um zwei Byte kürzen die eigentlich Sinnlos sind. Das wären das letzte 0-Byte wo inzwischen klar ist dass es nicht zu den Daten gehört sondern nur ein Break ist. Und dann das Längenbyte am Ende. Werden bei mir eigentlich auch ignoriert. Die Telegramme haben ja eine Prüfsumme. Wenn die Prüfsumme nicht stimmt ist das Telegramm falsch oder unvollständig und nutzlos. Aber irgendwie macht es ja nicht wirklich Sinn noch mein PC-Programm zu ändern. Außerdem könnte es ja theoretisch passieren das die Zeichen AA 55 hintereinander in den Daten stecken und dann als Fehlerhaftes Trennzeichen verstanden werden. Dann macht es schon mehr Sinn die Daten Hexadezimal(text) mit CR/LF am Ende zu senden oder eben das 3964R-Protokoll. Aber habe bisher noch kein einziges mal diese AA 55 in den Daten gesehen. Außerdem habe ich noch genug andere baustellen. Schön dass sich hier mal wieder ewas mehr tut... Gruß Ingo
Datum:
Nabend, ich wollte erstmal versuchen einzelne Telegramme zuempfangen bevor ich die CRC & Länge auswerte. Aber daran scheitere ich gerade. Die Telegramme die ich bisher gesehen habe wurden immer sauber m_recvBuffer erkannt. Kann sein das es an Ingo's PIC SW liegt ;-) Werde mich da mal weiter reinfuchsen und versuchen C++ zulernen ;-) Ist nicht einfach sich in "fremden" Quelltext einzulesen wenn man die Sprache nicht kenn und alles erst googeln muss.. Da ich in Zukunft gerne auch einfache Sachen ändern wollen würde, fände ich es gut wenn wir uns auf ein (Sende-)Format einigen könnten... Wenn ich die Diskussion hier richtig verstanden habe, sind die Nachrichtenformat (länge, etc.) von der HW & SW abhängig. Macht es da Sinn das in den MC zupacken? Gruß Kay
Datum:
Hallo, guten Tag und zuerst mal vielen Dank für die viele Arbeit, die ihr in das Vorhaben steckt. Wäre es euch möglich, ein paar Forenbeiträge zu pinnen, und zwar die, in denen lauffähige Hardware und passende Software vorgestellt wird? Grund: Für den Quereinsteiger ist es schwierig, in diesem riesigen Thread (und den damit verlinkten) den Überblick zu bekommen. Wäre schön, wenn das realisiert werden könnte. heiner
Datum:
Nachtrag zu meinem obigen Beitrag: Ich benötige eine "einfache" Schaltung, um am Servicekey die Daten auslesen und eine Software, um diese auswerten zu können. Als Nichtelektroniker (der aber löten kann) mit geringer Programmiererfahrung (Delphi / Lazarus, Java) habe ich die passenden Beiträge nicht gefunden. Bei mir liegt noch ein USB 2 seriell-Adapter rum, den müßte ich doch eigentlich verwenden können, oder? (Einen Rechner mit RS232-Schnittstelle hab ich nicht mehr) Vielen Dank für eure Hilfe. heiner
Datum:
heiner2904 schrieb: > Bei mir liegt noch ein USB 2 seriell-Adapter rum, Hallo Heiner, sorry, das wird vermutlich nciht gehen. Auf dem EMS-Bus werden Telegramme mit BREAK beendet. Ein PC ist definitiv zu langsam um das Break Zeichengenau zu erkennen. Mein FTDI-USB-RS232-Wandler kann das Break über den USB-Bus nicht übermitteln. Vermutluch wird das Dein USB-Seriell-Wandler das auch nciht können. Also wird es ohne einen Mikrocontroller der das Break auswertet nicht gehen. Gruß Ingo
Datum:
Nabend, hat jemand schon die Daten der SM10 decodiert? src dest type 1 2 3 4 5 6 7 8 9 10111213141516 30 00 97 00000002011e01c50301f6ff00000800 30 00 97 00000001f43c01d80301f71400008e00 30 00 97 00000001680001d40101f74500008400 Byte 4 & 5 sind die Kollektor Temperatur Byte 6 die Solarpumpe in % Byte 7 & 8 Speichertemperatur unten Byte 10,11,12 Betriebszeit Solar Was mir noch fehlt ist die Speichertemperatur mitte (45 Grad in den oberen beiden Werten). In der Anzeige gibt es noch einen Solarenzugewinn.... Wie habt Ihr die Werte der anderen Module ermittelt bzw. heraus gefunden? Danke und Gruß Kay
Datum:
Kay F. schrieb: > Nabend, > > hat jemand schon die Daten der SM10 decodiert? > > src dest type 1 2 3 4 5 6 7 8 9 10111213141516 > 30 00 97 00000002011e01c50301f6ff00000800 > 30 00 97 00000001f43c01d80301f71400008e00 > 30 00 97 00000001680001d40101f74500008400 > > Byte 4 & 5 sind die Kollektor Temperatur > Byte 6 die Solarpumpe in % > Byte 7 & 8 Speichertemperatur unten > Byte 10,11,12 Betriebszeit Solar Byte 2 ist der Betriebszustand Byte 3 ist der Fehlercode Byte 9 ist der Betriebsstatus ... sagt zumindest das Buderus-Dokument, das ich hier habe. > Was mir noch fehlt ist die Speichertemperatur mitte (45 Grad in den > oberen beiden Werten). In der Anzeige gibt es noch einen > Solarenzugewinn.... Das Buderus-Dokument sagt dazu: Die Speicher 1 Mitte Temperatur erhalten Sie über die Standard-Warmwasserparameter. Diesen Temperaturwert erhalten Sie unter dem Offset 1 + 2 ... das wäre dann die Warmwasser-Isttemperatur aus den WW-Monitordaten. Solarer Zugewinn ist in dem Dokument nicht enthalten. > Wie habt Ihr die Werte der anderen Module ermittelt bzw. heraus > gefunden? Größtenteils kollaboratives Reverse Engineering ;) Ein paar Details hat das erwähnte Buderus-Dokument beigesteuert. Das habe ich von Buderus zugeschickt bekommen, als ich einfach mal per Mail angefragt hatte. Alles steht da aber auch nicht drin, nur Kram, der 'User servicable' ist.
Datum:
Was hast Du denn genau bei Buderus angefragt? Als Endkunde? Würde dann auch mal eine Anfrage starten um dich nicht ständig nerven zu müssen ;-) Gibt es in dem Dokument auch eine Auflistung des Byte 9 (Betriebsstatus)? Ich würde vermute das das 2. Bit für die Pumpe ist. Bei den ersten beiden Daten war die aktiv (30% bzw. 60%) beim letzen aus 00 %. Aber wofür sind die anderen Bits??? Es gibt auch noch eine andere Meldung wenn die Solar Pumpe aktiv ist. Der Inhalt war heute konstant der selbe. src dest type 1 2 3 4 5 6 30 08 35 00000000ce00
Datum:
Hallo, bin gerade fleissig dabei meiner PCSoftware und der PIC-Firmware das Senden beizubringen und habe gerade meine Heizung nicht dabei ;-) Generell ist der EMS-Telegrammaufbau ja folgender:
<Absender> <Empfänger> <Telegrammtyp> <Daten ..... Daten> <CRC> <Break> |
Wenn ich jetzt z.B. von der RC30 Zeit und Datum haben will sende ich:
<Absender> <Empfänger> <Telegrammtyp> <CRC> <Break> => 0x0B 0x90 0x06 0x3A <BRK> |
Als Antwort bekomme ich dann das komplette Telegramm. Wenn ich jetzt z.B. nur den zweiten Wert des Telegramms haben möchte sende ich:
<Absender> <Empfänger> <Telegrammtyp> <Offset> <Anzahl> <CRC> <Break> => 0x0B 0x90 0x06 0x02 0x01 0xED <BRK> |
Ist das OK so, oder habe ich da einen kleinen oder größeren Denkfehler? Hoffe die CRC ist auch richtig berechnet. Gruß Ingo
Datum:
Hi Niffko, ich habe deine Schaltung nachgebaut und in Betrieb genommen, aber leider kommt übers Terminal (9600 8N1) nichts, hast du Debugbefehle oder so etwas definiert, das man den Controller testen kann? Oder gibt es bestimmte Fuses die man noch setzen mußte? Gruss Norbert
Datum:
Hi Norbert, was macht denn die LED (die du natürlich entgegen dem Schaltplan richtig herum eingelötet hast)? Sie müsste bei jedem erkannten BREAK toggeln. //Niffko
Datum:
Hi, die Led macht nichts, du hast auch die 5V und GND vom Atmel vertauscht.
Datum:
Norbert Schnitzler schrieb: > 5V und GND vom Atmel vertauscht. WTF ... warum ist an dem AVR-Schaltsymbol GND denn oben!? Typischer Fall von selektiver Wahrnehmung meinerseits ... Norbert Schnitzler schrieb: > hast du Debugbefehle oder so etwas definiert nope ... aber sag' mir was du haben möchtest - schicke ich dir per Email. Norbert Schnitzler schrieb: > gibt es bestimmte Fuses die man noch setzen mußte? ... wenn das Umstellen auf externen Takt und das Abschalten des Clockdividers für dich bestimmte Fuses sind dann - ja. Richtiger Quarz? //Niffko
Datum:
Hi Niffko, abschalten des Clockdividers könnte ich vergessen haben. Muss ich am Montag mal prüfen. Gruss Norbert



























































































































