Forum: Haus & Smart Home Logamatic 2107 Schnittstelle


von HausBauer (Gast)


Lesenswert?

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!

von Malte B. (hellraiser)


Lesenswert?

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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Malte B. (hellraiser)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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.

von Malte K. (kippis)


Lesenswert?

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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Rudi (Gast)


Lesenswert?

> 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.

von Malte K. (kippis)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

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 ;)

von Walter (Gast)


Lesenswert?

Was hast du denn für eine Anlage ?

von Malte K. (kippis)


Lesenswert?

@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

von Malte B. (hellraiser)


Lesenswert?

@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 :)

von Kempten (Gast)


Lesenswert?

Gibt es schon etwas neues ?

von Malte B. (hellraiser)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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.

von Malte K. (kippis)


Angehängte Dateien:

Lesenswert?

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

von Malte K. (kippis)


Angehängte Dateien:

Lesenswert?

zweite Datei

von Rudi (Gast)


Lesenswert?

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:

1
90 00 10 00                                                                                       
2
90 00 10 00                                                                                       
3
90 00 10 00                                                                                       
4
90 00 10 00                                                                                       
5
89 00 09 00                                                                                       
6
90 00 98                                                                                          
7
90 00 10 00                                                                                       
8
90 00 10 00                                                                                       
9
90 00 10                                                                                          
10
2009 8 5 7 : 13 : 58                                                                              
11
00 06 00 09 08 07 05 0D 3A 02 01 63 00                                                            
12
90 00 10 00                                                                                       
13
90 00 10 00                                                                                       
14
TEMP AUSSEN: 18.5                                                                                 
15
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      
16
TEMP WARMWASSER: 51.6  51.6                                                                       
17
08 00 34 00 34 02 04 02 04 21 00 00 03 00 01 5B 00 00 0B 87 00 06 00                              
18
90 00 10 00                                                                                       
19
08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 DA 00                                          
20
TEMP KESSEL: 31.1 1.7                                                                             
21
00                                                                                                
22
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      
23
90 00 10 00                                                                                       
24
90 00 10 00                                                                                       
25
90 00 10 00                                                                                       
26
90 00 10 00                                                                                       
27
90 00 10 00                                                                                       
28
89 00 09 00                                                                                       
29
90 00 10 00                                                                                       
30
90 00 10 00                                                                                       
31
90 00 10 00                                                                                       
32
89 00 09 00

von Rudi (Gast)


Lesenswert?

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.

von Malte B. (hellraiser)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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.

von Malte B. (hellraiser)


Lesenswert?

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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Super! Habe die identifizierten Pins mal gekennzeichnet.

Bild 1/3

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Bild 2/3

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Bild 3/3

von Malte B. (hellraiser)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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.

von Malte B. (hellraiser)


Lesenswert?

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.

von Malte K. (kippis)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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.

von Malte K. (kippis)


Angehängte Dateien:

Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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.

von IngoF (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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)

1
TEMP KESSEL: 31.1 1.7  | 27.2 1,2 (RC30=28°C)                                                                      
2
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      
3
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
4
5
TEMP AUSSEN: 18.5 | 1,3 (RC30=15°C)                                                                             
6
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      
7
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
8
9
TEMP WARMWASSER: 51.6  51.6 | 54,6  54,6  (RC30=55°C)                                                               
10
08 00 34 00 34 02 04 02 04 21 00 00 03 00 01 5B 00 00 0B 87 00 06 00                              
11
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

von Rudi (Gast)


Lesenswert?

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!

von Rudi (Gast)


Lesenswert?

> 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 ...

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

> 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.

von IngoF (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

Wie kann man hier eigentlich die letzte "zitieren"? Also alles das was 
grün ist....

von Rudi (Gast)


Lesenswert?

> 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.

von Rudi (Gast)


Lesenswert?

> 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.

von IngoF (Gast)


Lesenswert?

> 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

von Rudi (Gast)


Lesenswert?

> 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.

von Rudi (Gast)


Lesenswert?

> 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.

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

So, Platine ist gekommen. Ich stell mit vor die direkt ins Kabel zu 
bauen, sprich per Schrumpfschlauch zwischen den beiden Kabelenden zu 
integrieren.

von Mario (Gast)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

ich vermute mal dass es einen telegrammheader gibt, der die gesamtgrösse 
des telegramms definiert?

von Mario (Gast)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

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

1
01  +5V - Versorgungsspannung? An der stelle steht ein "+" auf der Platine
2
02  GND
3
03  5V gemessen, vielleicht ein binärer E/A?
4
04  5V gemessen, vielleicht ein binärer E/A?
5
05  0V gemessen, vielleicht ein binärer E/A?
6
06  0V gemessen, vielleicht ein binärer E/A?
7
07  NC / Nicht an der Platine angeschlossen, gemessen 50hz 0,4V AC (also nix)
8
08  0V gemessen, vielleicht ein binärer E/A?
9
09  0V gemessen, vielleicht ein binärer E/A?
10
10  0V gemessen, vielleicht ein binärer E/A?
11
11  0V gemessen, vielleicht ein binärer E/A?
12
12  0V gemessen, vielleicht ein binärer E/A?
13
13  0V gemessen, vielleicht ein binärer E/A?
14
14  0V gemessen, vielleicht ein binärer E/A?
15
15  TTL Signal Low-Aktiv, feste Pulsbreite, unregelmässiges Signal, könnte Frame start interrupt sein
16
16  TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus
17
17  TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus
18
18  TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus
19
19  5V gemessen, vielleicht ein binärer E/A?
20
20  5V gemessen, vielleicht ein binärer E/A?
21
21  0V gemessen, vielleicht ein binärer E/A?
22
22  TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus
23
23  Datenübertragung Differential zu pin 24
24
24  Datenübertragung Differential zu pin 23
25
25  50hz sinus der fast wie dreieck aussieht 0,16V AC gemessen, ab und zu störungen messbar
26
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

von IngoF (Gast)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

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
1
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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Rudi (Gast)


Lesenswert?

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.

von Rudi (Gast)


Lesenswert?

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.

von Martin (Gast)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

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

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

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

von Martin (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Rudi (Gast)


Lesenswert?

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)>

von Rudi (Gast)


Lesenswert?

Update:

<ADDR> <0x00 (STOPBIT 1)> <DATA (STOPBIT 1)> <0x00 (STOPBIT 0)>

<ADDR> <0x00 (STOPBIT 0)>

<ADDR> TIMEOUT

von Rudi (Gast)


Lesenswert?

Anbei noch ein paar Frames die ich aus den analogen Daten extrahiert 
habe.

1
08 00 45 00 00 00 00 00 00 00 00 00 00 00 18  
2
08 00 45 00 00 00 00 00 00 00 00 00 00 00 18                                              
3
08 00 60 00 90 90 68 88 10 28 C0 80 5F                                                    
4
08 00 60 00 90 90 68 88 30 68 C0 80 4B                                                    
5
08 00 60 00 90 90 68 88 70 68 C0 80 43                                                    
6
08 00 60 00 90 90 68 88 90 A8 C0 80 6F                                                    
7
08 00 60 00 90 90 68 88 B0 68 C0 80 5B                                                    
8
08 00 60 00 90 90 68 88 D0 A8 C0 80 67                                                    
9
08 00 60 00 90 90 68 88 F0 E8 C0 80 73                                                    
10
08 00 7C 00 20 40 24 00 23 00 00 38 74 7C 00 00 26 88 E8 BD                               
11
08 00 7C 00 20 40 24 00 23 00 00 38 74 7C 00 00 26 88 E8 BD                               
12
08 00 7C 00 20 40 24 00 23 00 00 38 74 7C 00 00 26 88 E8 BD                               
13
08 00 7C 00 20 40 24 00 23 00 00 38 74 7C 00 00 26 88 E8 BD                               
14
08 00 7C 00 20 40 24 00 23 00 00 38 74 7C 00 00 26 88 E8 BD                               
15
08 00 C5 00 70 80 80 A9                                                                   
16
08 00 C5 00 70 80 80 A9                                                                   
17
08 00 C5 00 70 80 80 A9                                                                   
18
08 00 C5 00 70 80 80 A9                                                                   
19
08 00 C5 00 70 80 80 A9                                                                   
20
08 00 C5 00 70 80 80 A9                                                                   
21
08 00 C5 00 70 80 80 A9                                                                   
22
08 10 58 00 E8 26 26 00 16                                                                
23
08 10 58 00 E8 26 26 00 16                                                                
24
08 10 58 00 E8 26 26 00 16                                                                
25
08 10 58 00 E8 26 26 00 16                                                                
26
08 10 58 00 E8 26 26 00 16                                                                
27
08 10 58 00 E8 26 26 00 16                                                                
28
08 10 58 00 E8 26 26 00 16                                                                
29
08 10 AC 00 88 88 0C                                                                      
30
08 10 AC 00 88 88 0C                                                                      
31
08 10 AC 00 88 88 0C                                                                      
32
08 10 AC 00 88 88 0C                                                                      
33
08 10 AC 00 88 88 0C                                                                      
34
08 11 28 00 C0 76                                                                         
35
08 11 28 00 C0 76                                                                         
36
08 11 28 00 C0 76                                                                         
37
08 11 28 00 C0 76                                                                         
38
08 11 88 00 D8 46                                                                         
39
08 11 88 0C 30 A8                                                                         
40
08 11 88 18 D8 4A                                                                         
41
08 11 88 24 18 94                                                                         
42
08 11 88 30 D8 5E                                                                         
43
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 
44
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 
45
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 
46
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 
47
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 
48
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 
49
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 
50
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 
51
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 
52
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 
53
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 
54
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 
55
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 
56
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 
57
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 
58
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 
59
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 
60
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 
61
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 
62
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 
63
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 
64
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 
65
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 
66
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 
67
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 
68
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 
69
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 
70
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 
71
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 
72
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 
73
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 
74
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 
75
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 
76
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 
77
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 
78
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 
79
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 
80
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 
81
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 
82
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                         
83
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                         
84
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                         
85
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                         
86
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                         
87
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                         
88
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                         
89
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                         
90
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                         
91
10 00 2C 00 2C 40 20 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 38                         
92
10 00 2C 00 2C 40 20 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 38                         
93
10 00 2C 00 2C 40 60 40 60 84 00 00 C0 00 80 26 AC 00 30 64 00 4D                         
94
10 00 2C 00 2C 40 60 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 0C                         
95
10 00 2C 00 2C 40 60 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 0C                         
96
10 00 2C 00 2C 40 A0 40 60 84 00 00 C0 00 80 26 AC 00 30 64 00 11                         
97
10 00 2C 00 2C 40 A0 40 60 84 00 00 C0 00 80 26 AC 00 30 64 00 11                         
98
10 00 2C 00 2C 40 A0 40 60 84 00 00 C0 00 80 26 AC 00 30 64 00 11                         
99
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50                         
100
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50                         
101
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50                         
102
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50                         
103
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50                         
104
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50                         
105
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
106
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
107
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
108
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
109
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
110
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
111
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
112
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
113
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
114
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
115
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
116
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
117
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
118
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
119
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
120
10 00 2C 00 2C 40 A0 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 50
121
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
122
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
123
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
124
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
125
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
126
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
127
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
128
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
129
10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B
130
10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B
131
10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B
132
10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B
133
10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B
134
10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B
135
10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B
136
10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B
137
10 08 28 00 98 27 98 AF
138
10 08 28 00 98 27 A8 9F
139
10 08 28 00 98 27 D8 EF
140
10 08 28 00 98 27 E8 DF
141
10 08 88 00 4C 62 80 F0 91 90 08 D0 8C 00 00 00 9E
142
10 08 88 0C 4C 62 80 F0 91 E0 50 08 E4 00 00 00 12
143
10 08 88 18 4C 62 80 F0 91 E0 D0 B8 E0 00 00 00 BC
144
10 08 88 24 4C 62 80 F0 91 E0 88 88 6C 00 00 00 AB
145
10 08 88 30 4C 62 80 F0 91 E0 30 78 80 00 00 00 C9

von Rudi (Gast)


Lesenswert?

Update:

<ADDR> <DATA (STOPBIT 1)> <0x00 (STOPBIT 0)>

<ADDR> <0x00 (STOPBIT 0)>

<ADDR> TIMEOUT

von Rudi (Gast)


Lesenswert?

@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 !

von Malte B. (hellraiser)


Lesenswert?

@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

von Martin (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

> 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.

von Rudi (Gast)


Lesenswert?

@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 
?

von Malte B. (hellraiser)


Lesenswert?

@ 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:
1
01  +5V - Versorgungsspannung? An der stelle steht ein "+" auf der Platine
2
02  GND
3
03  5V gemessen, vielleicht ein binärer E/A?
4
04  5V gemessen, vielleicht ein binärer E/A?
5
05  0V gemessen, vielleicht ein binärer E/A?
6
06  0V gemessen, vielleicht ein binärer E/A?
7
07  NC
8
08  0V gemessen, vielleicht ein binärer E/A?
9
09  Ausgang Heizkreis1 Pumpe (an=5V, aus=0V)
10
10  0V gemessen, vielleicht ein binärer E/A?
11
11  0V gemessen, vielleicht ein binärer E/A?
12
12  0V gemessen, vielleicht ein binärer E/A?
13
13  0V gemessen, vielleicht ein binärer E/A?
14
14  0V gemessen, vielleicht ein binärer E/A?
15
15  TTL Signal Low-Aktiv, feste Pulsbreite, unregelmässiges Signal, könnte Frame start interrupt sein
16
16  TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus
17
17  TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus
18
18  TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus
19
19  5V gemessen, vielleicht ein binärer E/A?
20
20  5V gemessen, vielleicht ein binärer E/A?
21
21  0V gemessen, vielleicht ein binärer E/A?
22
22  TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus
23
23  Datenübertragung Differential zu pin 24
24
24  Datenübertragung Differential zu pin 23
25
25  50hz sinus der fast wie dreieck aussieht 0,16V AC gemessen, ab und zu störungen messbar
26
26  NC

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

@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.

von Rudi (Gast)


Lesenswert?

@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.

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Martin (Gast)


Lesenswert?

Hallo,

@Malte: kannst du mal ein Bild von dem differentiellen Signal hier 
einstellen (Zur Not Bild vom OsziSchirm)?
Danke.

Martin

von Rudi (Gast)


Lesenswert?

@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.

von IngoF (Gast)


Lesenswert?

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.

von Rudi (Gast)


Lesenswert?

> 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 ...

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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.

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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).

von Rudi (Gast)


Lesenswert?

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");

von IngoF (Gast)


Lesenswert?

@Rudi:

Also bei mir kommt nachdem ich "12345" durch den Dateinamen ersetzt habe 
und das "Import Serial" gelöscht habe nur folgende Ausgabe:
1
out
2
11 timeout 2252
3
11 timeout 2252
4
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...

von Rudi (Gast)


Lesenswert?

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:
1
out                                                                                             
2
11 timeout 2252                                                                                 
3
11 timeout 2252                                                                                 
4
19 timeout 2201                                                                                 
5
10 00 2C 00 2C 40 20 40 A0 84 00 00 C0 00 80 26 AC 00 30 64 00 38                               
6
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       
7
19 timeout 2251                                                                                 
8
19 timeout 2251                                                                                 
9
19 timeout 2252                                                                                 
10
19 timeout 2251                                                                                 
11
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       
12
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                               
13
10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B                                           
14
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       
15
11 timeout 2252                                                                                 
16
19 timeout 2151                                                                                 
17
11 timeout 2254                                                                                 
18
19 timeout 2153                                                                                 
19
19 timeout 2201                                                                                 
20
18 timeout 2251                                                                                 
21
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                               
22
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       
23
11 timeout 2254                                                                                 
24
11 timeout 2254                                                                                 
25
08 00 C5 00 70 80 80 A9                                                                         
26
08 10 58 00 E8 26 26 00 16                                                                      
27
11 timeout 2252                                                                                 
28
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                               
29
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       
30
08 00 60 00 90 90 68 88 70 68 C0 80 43                                                          
31
19 timeout 2251                                                                                 
32
19 timeout 2251                                                                                 
33
19 timeout 2251                                                                                 
34
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                               
35
19 timeout 2220                                                                                 
36
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       
37
08 00 7C 00 20 40 24 00 23 00 00 38 74 7C 00 00 26 88 E8 BD                                     
38
08 10 AC 00 88 88 0C                                                                            
39
18 timeout 2201                                                                                 
40
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                               
41
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       
42
11 timeout 2252                                                                                 
43
19 timeout 2151                                                                                 
44
19 timeout 2154                                                                                 
45
19 timeout 2202                                                                                 
46
19 timeout 2202                                                                                 
47
18 timeout 2200                                                                                 
48
19 timeout 2251                                                                                 
49
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9                               
50
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       
51
19 timeout 2152
52
19 timeout 2251
53
18 timeout 2201
54
19 timeout 2253
55
19 timeout 2253
56
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
57
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9
58
10 00 E0 00 C0 80 00 00 00 00 00 00 00 00 00 00 00 5B
59
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
60
19 timeout 2152
61
08 00 45 00 00 00 00 00 00 00 00 00 00 00 18
62
11 timeout 2201
63
19 timeout 2201
64
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9
65
19 timeout 2273
66
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
67
18 timeout 2202
68
19 timeout 2154
69
19 timeout 2202
70
08 00 C5 00 70 80 80 A9
71
08 10 58 00 E8 26 26 00 16
72
08 11 28 00 C0 76
73
10 08 28 00 98 27 D8 EF
74
10 00 2C 00 2C 40 20 40 20 84 00 00 C0 00 80 26 AC 00 30 64 00 A9
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
76
19 timeout 2201
77
08 00 60 00 90 90 68 88 F0 E8 C0 80 73
78
19 timeout 2154
79
19 timeout 2203
80
18 timeout 2251

von Rudi (Gast)


Lesenswert?

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!

von Hans (Gast)


Lesenswert?

@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 ???

von IngoF (Gast)


Lesenswert?

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...

von Rudi (Gast)


Lesenswert?

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.

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Moin,

anbei die ersten Bilder ...

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Anbei eine Log-Datei. Ohne Clock etwas schwer zu dekodieren, aber die 
Daten sehen schonmal vielversprechend aus.

von Martin (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

> 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.

von Martin (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

> 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.

von Malte B. (hellraiser)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

@IngoF

Hast du schon die Vor- und Rücklauftemperatur für die Heizkreise 
ermitteln können ?

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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.

von IngoF (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

>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

von Rudi (Gast)


Lesenswert?

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

von Mario (Gast)


Lesenswert?

Hallo Rudi,

kannst Du die erkannten Werte zum Vergleich mal posten (siehe meine 
Nachricht vom 16.9.09)?

Danke,
Mario

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

1
                        # 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
2
                        # 08 10 14 00 1A 2C 8B E2 00                                                               
3
                        if ord(data[0]) == 0x08 and ord(data[1]) == 0x10 and ord(data[2]) == 0x14:                 
4
                                        t1 = (ord(data[4])<<16) | (ord(data[5])<<8) | ord(data[6])                 
5
                                        t1 = t1 / 60                                                               
6
                                        print "Betriebsstunden:",t1
Die Minuten müssen dann noch nach 60 umgerechnet werden ...
1
                        # 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
2
                        # 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
3
4
                        if ord(data[0]) == 0x08 and ord(data[2]) == 0x18:                                          
5
                                        t1 = ((ord(data[5])<<8)|ord(data[6]))/10.0                                 
6
                                        data_container.D_DB_TEMP_KESSEL = change_value( D_DB_TEMP_KESSEL , data_container.D_DB_TEMP_KESSEL, t1 )                                                                                                                                  
7
                                        t2 = ord(data[11])                                                                               
8
                                        data_container.D_DB_CIRC = change_value( D_DB_CIRC , data_container.D_DB_CIRC, t2 )              
9
                                        t3 = ord(data[21])/10.0                                                                          
10
                                        data_container.D_DB_BAR = change_value( D_DB_BAR , data_container.D_DB_BAR, t3 )                 
11
                                        t4 = ((ord(data[15])<<8)|ord(data[16]))/10.0                                                     
12
                                        data_container.D_DB_TEMP_U1 = change_value( D_DB_TEMP_U1 , data_container.D_DB_TEMP_U1, t4 )     
13
                                        t5 = ((ord(data[17])<<8)|ord(data[18]))/10.0                                                     
14
                                        data_container.D_DB_TEMP_U2 = change_value( D_DB_TEMP_U2 , data_container.D_DB_TEMP_U2, t5 )     
15
                                        # HK1 Vorlauf                                                                                    
16
                                        t6 = ord(data[4])*1.0                                                                            
17
                                        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.ä..
1
                        # 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                      
2
                        # 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                   
3
                        if ord(data[0]) == 0x08 and ord(data[2]) == 0x19:                                                                
4
                                t1 = ((ord(data[4])<<8)|ord(data[5]))/10.0                                                               
5
                                t2 = ((ord(data[6])<<8)|ord(data[7]))/10.0                                                               
6
                                # brenner starts                                                                                         
7
                                t3 = ((ord(data[15])<<8)|ord(data[16]))                                                                  
8
9
                                data_container.D_DB_TEMP_AUSSEN = change_value( D_DB_TEMP_AUSSEN , data_container.D_DB_TEMP_AUSSEN, t1 )
10
                                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).

von IngoF (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Malte Bayer (Gast)


Lesenswert?

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

von Mario (Gast)


Angehängte Dateien:

Lesenswert?

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

von Rudi (Gast)


Lesenswert?

@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.

von Rudi (Gast)


Lesenswert?

@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)

von Mario (Gast)


Lesenswert?

@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

von Rudi (Gast)


Lesenswert?

@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 ?

von Rudi (Gast)


Lesenswert?

@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.

von Rudi (Gast)


Lesenswert?

Nachtrag:

Der Mega8 erkennt die Frame-Errors.

von Rudi (Gast)


Lesenswert?

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.

von Mario (Gast)


Angehängte Dateien:

Lesenswert?

@ 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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

@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 ...

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Hier der geparste Bitstream. Der Zeilenumbruch kommt bei jeder 
Daten/Clockanomalie (Leveländerung auf den Daten ohne Clock).

von Rudi (Gast)


Lesenswert?

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 ...
1
A8 1C : A9 03 01 05 65 00 05 B6 
2
A8 0E : A9 65 00 05 05 2D 01 9B 
3
AA FF : AB 00 00 AC 00 
4
AD 00 00 00 00 00 00 
5
A8 1C : A9 03 01 05 65 00 05 B6 
6
A8 0E : A9 65 00 05 05 2D 01 9B 
7
AA FF : AB 00 00 AC 00 
8
AD 00 00 00 00 00 00 
9
A8 1C : A9 03 01 05 65 00 05 B6 
10
A8 0E : A9 65 00 05 05 2D 01 9B 
11
AA FF : AB 00 00 AC 00 
12
AD 00 00 00 00 00 00 
13
A8 1C : A9 03 01 05 65 00 05 B6 
14
A8 0E : A9 65 00 05 05 2D 01 9B 
15
AA FF : AB 00 00 AC 00 
16
AD 00 00 00 00 00 00 
17
A8 1C : A9 03 01 05 65 00 05 B6 
18
A8 0E : A9 65 00 05 05 2D 01 9B 
19
AA FF : AB 00 00 AC 00 
20
AD 00 00 00 00 00 00 
21
A8 1C : A9 03 01 05 65 00 05 B6 
22
A8 0E : A9 65 00 05 05 2D 01 9B 
23
AA FF : AB 00 00 AC 00 
24
AD 00 00 00 00 00 00 
25
A8 1C : A9 03 01 05 65 00 05 B6 
26
A8 0E : A9 65 00 05 05 2D 01 9B 
27
AA FF : AB 00 00 AC 00 
28
AD 00 00 00 00 00 00 
29
A8 1C : A9 03 01 05 65 00 05 B6 
30
A8 0E : A9 65 00 05 05 2D 01 9B 
31
AA FF : AB 00 00 AC 00 
32
AD 00 00 00 00 00 00 
33
A8 46 : A9 65 00 05 05 2D 01 9B 
34
A8 1C : A9 03 01 05 65 00 05 B6 
35
A8 0E : A9 65 00 05 05 2D 01 9B 
36
AA FF : AB 00 00 AC 00 
37
AD 00 00 00 00 00 00 
38
AA C7 : AB 78 0A 05 37 4B 00 0D 
39
AA CE : AB 28 0A 02 FF FF FF 1A 
40
A8 1C : A9 03 01 05 65 00 05 B6 
41
A8 0E : A9 65 00 05 05 2D 01 9B 
42
AA FF : AB 00 00 AC 00 
43
AD 00 00 00 00 00 00 
44
AC 0D : AD FF 00 65 65 65 65 7B 
45
A8 1C : A9 03 01 05 65 00 05 B6 
46
A8 0E : A9 65 00 05 05 2D 01 9B 
47
AA FF : AB 00 00 AC 00 
48
AD 00 00 00 00 00 00 
49
AA 65 : AB 32 00 31 00 34 00 9D 
50
AA 6C : AB 38 00 34 00 33 00 F3 
51
A8 1C : A9 03 01 05 65 00 05 B6 
52
A8 0E : A9 65 00 05 05 2D 01 9B 
53
AA FF : AB 00 00 AC 00 
54
AD 00 00 00 00 00 00 
55
AA AB : AB 29 68 B0 31 A7 05 B0 
56
AA B2 : AB 00 A7 C2 05 00 3F F3 
57
AA B9 : AB 7E 7E 7E 8C 8C 8C 7F 
58
AA C0 : AB A7 83 65 65 65 65 3C 
59
A8 1C : A9 03 01 05 65 00 05 B6 
60
A8 0E : A9 65 00 05 05 2D 01 9B 
61
AA FF : AB 00 00 AC 00 
62
AD 00 00 00 00 00 00 
63
AA DC : AB 34 07 00 00 09 1D 21 
64
AA E3 : AB 01 34 0B 19 00 0B F4 
65
AA EA : AB 25 0F 34 0E 1D 01 72 
66
AA F1 : AB 09 0B 16 34 13 16 25 
67
AA F8 : AB 01 11 22 35 00 00 1A 
68
A8 1C : A9 03 01 05 65 00 05 B6 
69
A8 0E : A9 65 00 05 05 2D 01 9B 
70
AA FF : AB 00 00 AC 00 
71
AD 00 00 00 00 00 00 
72
AA FF : AB 00 00 AC 00 
73
AD 00 00 00 00 00 00 
74
A8 1C : A9 03 01 05 65 00 05 B6 
75
A8 0E : A9 65 00 05 05 2D 01 9B 
76
AA FF : AB 00 00 AC 00 
77
AD 00 00 00 00 00 00 
78
AC 06 : AD 00 00 00 00 00 00 00 
79
A8 1C : A9 03 01 05 65 00 05 B6 
80
A8 0E : A9 65 00 05 05 2D 01 9B 
81
AA FF : AB 00 00 AC 00 
82
AD 00 00 00 00 00 00

Und hier mal auf eine Anfrage gefiltert:
1
AA 6C : AB 38 00 34 00 33 00 F3 
2
AA 6C : AB 38 00 34 00 33 00 F3 
3
AA 6C : AB 38 00 34 00 33 00 F3 
4
AA 6C : AB 38 00 34 00 33 00 F3 
5
AA 6C : AB 38 00 34 00 33 00 F3 
6
AA 6C : AB 38 00 34 00 33 00 F3 
7
AA 6C : AB 38 00 34 00 33 00 F3 
8
AA 6C : AB 38 00 34 00 33 00 F3 
9
AA 6C : AB 38 00 34 00 33 00 F3 
10
AA 6C : AB 38 00 34 00 33 00 F3 
11
AA 6C : AB 38 00 34 00 33 00 F3 
12
AA 6C : AB 38 00 34 00 33 00 F3 
13
AA 6C : AB 38 00 34 00 33 00 F3 
14
AA 6C : AB 38 00 34 00 33 00 F3 
15
AA 6C : AB 38 00 34 00 33 00 F3 
16
AA 6C : AB 38 00 34 00 33 00 F3 
17
AA 6C : AB 38 00 34 00 33 00 F3 
18
AA 6C : AB 38 00 34 00 33 00 F3 
19
AA 6C : AB 38 00 34 00 33 00 F3 
20
AA 6C : AB 34 00 38 00 33 00 CF 
21
AA 6C : AB 34 00 38 00 33 00 CF 
22
AA 6C : AB 34 00 38 00 33 00 CF 
23
AA 6C : AB 34 00 38 00 33 00 CF 
24
AA 6C : AB 34 00 38 00 33 00 CF 
25
AA 6C : AB 34 00 38 00 33 00 CF 
26
AA 6C : AB 34 00 38 00 33 00 CF 
27
AA 6C : AB 34 00 38 00 33 00 CF 
28
AA 6C : AB 34 00 38 00 33 00 CF 
29
AA 6C : AB 34 00 38 00 33 00 CF 
30
AA 6C : AB 34 00 38 00 33 00 CF 
31
AA 6C : AB 34 00 38 00 33 00 CF 
32
AA 6C : AB 34 00 38 00 33 00 CF 
33
AA 6C : AB 34 00 38 00 33 00 CF 
34
AA 6C : AB 34 00 38 00 33 00 CF 
35
AA 6C : AB 34 00 38 00 33 00 CF 
36
AA 6C : AB 34 00 38 00 33 00 CF 
37
AA 6C : AB 31 00 34 00 32 00 EA 
38
AA 6C : AB 31 00 34 00 32 00 EA 
39
AA 6C : AB 31 00 34 00 32 00 EA 
40
AA 6C : AB 31 00 34 00 32 00 EA 
41
AA 6C : AB 31 00 34 00 32 00 EA 
42
AA 6C : AB 31 00 34 00 32 00 EA 
43
AA 6C : AB 31 00 34 00 32 00 EA 
44
AA 6C : AB 31 00 34 00 32 00 EA 
45
AA 6C : AB 31 00 34 00 32 00 EA 
46
AA 6C : AB 31 00 34 00 32 00 EA 
47
AA 6C : AB 31 00 34 00 32 00 EA 
48
AA 6C : AB 31 00 34 00 32 00 EA 
49
AA 6C : AB 31 00 34 00 32 00 EA 
50
AA 6C : AB 31 00 34 00 32 00 EA 
51
AA 6C : AB 32 00 31 00 2B 00 74 
52
AA 6C : AB 32 00 31 00 2B 00 74 
53
AA 6C : AB 32 00 31 00 2B 00 74 
54
AA 6C : AB 32 00 31 00 2B 00 74 
55
AA 6C : AB 32 00 31 00 2B 00 74 
56
AA 6C : AB 32 00 31 00 2B 00 74 
57
AA 6C : AB 32 00 31 00 2B 00 74 
58
AA 6C : AB 32 00 31 00 2B 00 74 
59
AA 6C : AB 32 00 31 00 2B 00 74 
60
AA 6C : AB 32 00 31 00 2B 00 74 
61
AA 6C : AB 32 00 31 00 2B 00 74 
62
AA 6C : AB 32 00 31 00 2B 00 74 
63
AA 6C : AB 32 00 31 00 2B 00 74 
64
AA 6C : AB 32 00 31 00 2B 00 74 
65
AA 6C : AB 32 00 31 00 2B 00 74 
66
AA 6C : AB 32 00 31 00 2B 00 74 
67
AA 6C : AB 32 00 31 00 2B 00 74 
68
AA 6C : AB 32 00 31 00 2B 00 74 
69
AA 6C : AB 32 00 31 00 2B 00 74 
70
AA 6C : AB 32 00 31 00 2B 00 74 
71
AA 6C : AB 32 00 31 00 2B 00 74 
72
AA 6C : AB 32 00 31 00 2B 00 74 
73
AA 6C : AB 32 00 31 00 2B 00 74 
74
AA 6C : AB 32 00 31 00 2B 00 74 
75
AA 6C : AB 32 00 31 00 2B 00 74 
76
AA 6C : AB 32 00 31 00 2B 00 74 
77
AA 6C : AB 32 00 31 00 2B 00 74 
78
AA 6C : AB 32 00 31 00 2B 00 74 
79
AA 6C : AB 33 00 32 00 26 00 A9 
80
AA 6C : AB 33 00 32 00 26 00 A9 
81
AA 6C : AB 33 00 32 00 26 00 A9 
82
AA 6C : AB 33 00 32 00 26 00 A9 
83
AA 6C : AB 33 00 32 00 26 00 A9 
84
AA 6C : AB 33 00 32 00 26 00 A9 
85
AA 6C : AB 33 00 32 00 26 00 A9 
86
AA 6C : AB 33 00 32 00 26 00 A9 
87
AA 6C : AB 33 00 32 00 26 00 A9

von Rudi (Gast)


Lesenswert?

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

von Mario (Gast)


Angehängte Dateien:

Lesenswert?

@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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

> 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.

von Rudi (Gast)


Lesenswert?

@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 ?

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

@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.

von Mario (Gast)


Angehängte Dateien:

Lesenswert?

@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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

@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.

von Rudi (Gast)


Lesenswert?

@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):
1
A8 E7 :  A9 01 FF FF 00 FF FF A8                                                                              
2
A8 EE :  A9 01 21 00 84 21 21 61                                                                              
3
A8 F5 :  A9 20 84 41 21 40 84 50                                                                              
4
A8 FC :  A9 61 21 60 84                                                                                       
5
AA 00 :  AB 81 21 62                                                                                          
6
AA 03 :  AB 80 8A A1 27 A0 8D D0                                                                              
7
AA 0A :  AB C1 2A C0 84 C2 90 CD                                                                              
8
AA 11 :  AB C2 90 C2 90 C2 90 0B                                                                              
9
AA 18 :  AB C2 90 C2 90 C2 90 0B                                                                              
10
AA 1F :  AB C2 90 C2 90 C2 90 0B                                                                              
11
AA 26 :  AB C2 90 C2 90 C2 90 0B                                                                              
12
AA 2D :  AB C2 90 C2 90 C2 90 0B                                                                              
13
AA 34 :  AB C2 90 C2 90 C2 90 0B                                                                              
14
AA 3B :  AB C2 90 C2 90 C2 90 0B                                                                              
15
AA 42 :  AB C2 90 C2 90 C2 90 0B                                                                              
16
AA 49 :  AB C2 90 C2 90 C2 90 0B                                                                              
17
A8 1C :  A9 03 01 05 65 00 05 B6                                                                              
18
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 !?

...

von IngoF (Gast)


Lesenswert?

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

von Hennessy (Gast)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

@ 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.

von Rudi (Gast)


Lesenswert?

Hier noch ein HighRes-Bild vom ServiceKey:

http://www.buderus.de/sixcms/media.php/1821/3743_Logamatic_Servicekey.tif
http://www.buderus.de/Bilddatenbank/Regelsysteme/Logamatic_Fernwirksystem-2380747.html


@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**.

von Malte B. (hellraiser)


Lesenswert?

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).

von IngoF (Gast)


Lesenswert?

>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

von Rudi (Gast)


Lesenswert?

@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.

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

@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

von Rudi (Gast)


Lesenswert?

@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.

von Rudi (Gast)


Lesenswert?

@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 ;-)

von Malte B. (hellraiser)


Lesenswert?

@ Rudi:
1
 16  TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus
2
 22  TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus
3
 23  Datenübertragung Differential zu pin 24
4
 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

von Rudi (Gast)


Lesenswert?

@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.

von Rudi (Gast)


Lesenswert?

@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 ;-)

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Bild vergessen ...

von IngoF (Gast)


Lesenswert?

<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

von Rudi (Gast)


Lesenswert?

@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.

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

@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

von Mario (Gast)


Angehängte Dateien:

Lesenswert?

@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

von Rudi (Gast)


Lesenswert?

@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.

von Rudi (Gast)


Lesenswert?

@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.

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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:
1
DATA: 229.926741 A8 54 01010100 A9 :  3 1 5 101 1 5 166                                                                                                 
2
DATA: 229.929876 A8 5B 01011011 A9 :  12 3 1 101 101 101 7                                                                                              
3
DATA: 229.933089 A8 62 01100010 A9 :  101 101 101 101 101 101 43                                                                                        
4
DATA: 229.936233 A8 69 01101001 A9 :  40 10 10 17 101 101 150                                                                                           
5
DATA: 229.939441 A8 70 01110000 A9 :  101 101 101 0 0 5 130                                                                                             
6
DATA: 230.353317 A8 1C 00011100 A9 :  3 1 5 101 0 5 182                                                                                                 
7
DATA: 230.362004 A8 0E 00001110 A9 :  101 0 5 5 45 1 155                                                                                                
8
DATA: 230.365306 AA FF 11111111 AB :  0 0 172 0                                                                                                         
9
DATA: 232.107041 A8 1C 00011100 A9 :  3 1 5 101 0 5 182                                                                                                 
10
DATA: 232.110352 A8 0E 00001110 A9 :  101 0 5 5 45 1 155                                                                                                
11
DATA: 232.118099 AA FF 11111111 AB :  0 0 172 0                                                                                                         
12
DATA: 233.875018 A8 1C 00011100 A9 :  3 1 5 101 0 5 182                                                                                                 
13
DATA: 233.879603 A8 0E 00001110 A9 :  101 0 5 5 45 1 155                                                                                                
14
DATA: 233.887958 AA FF 11111111 AB :  0 0 172 0                                                                                                         
15
DATA: 235.129592 A8 77 01110111 A9 :  246 101 1 6 101 101 2                                                                                             
16
DATA: 235.594916 A8 1C 00011100 A9 :  3 1 5 101 0 5 182                                                                                                 
17
DATA: 235.615997 A8 0E 00001110 A9 :  101 0 5 5 45 1 155                                                                                                
18
DATA: 235.624123 AA FF 11111111 AB :  0 0 172 0                                                                                                         
19
DATA: 236.928246 AA 50 01010000 AB :  101 101 101 101 101 1 7                                                                                           
20
DATA: 236.930597 AA 57 01010111 AB :  101 251 40 43 60 101 140                                                                                          
21
DATA: 236.933801 AA 5E 01011110 AB :  2 101 101 1 101 2 11                                                                                              
22
DATA: 237.315292 A8 1C 00011100 A9 :  3 1 5 101 0 5 182                                                                                                 
23
DATA: 237.368396 A8 0E 00001110 A9 :  101 0 5 5 45 1 155

von Mario (Gast)


Lesenswert?

@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

von Hennessy (Gast)


Lesenswert?

@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

von Gerhard (Gast)


Lesenswert?

steh doch alles weiter oben

von Mario (Gast)


Lesenswert?

@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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

@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 ?

von IngoF (Gast)


Lesenswert?

>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.

von Niclas (Gast)


Lesenswert?

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 :)

von Rudi (Gast)


Lesenswert?

> 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 ;-)

von Mario (Gast)


Lesenswert?

@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

von IngoF (Gast)


Lesenswert?

>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

von Hennessy (Gast)


Lesenswert?

@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

von Rudi (Gast)


Lesenswert?

@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 
???

von Chris (Gast)


Lesenswert?

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

von Mario (Gast)


Lesenswert?

@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

von Rudi (Gast)


Lesenswert?

@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.

von Rudi (Gast)


Lesenswert?

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.

von Mario (Gast)


Lesenswert?

@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

von Rudi (Gast)


Lesenswert?

@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.

von Rudi (Gast)


Lesenswert?

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.

von StephanM (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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 ...

von Rudi (Gast)


Lesenswert?

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 ...

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

zur 2107:

Ich habe jetzt ein Bedienteil gesponsort bekommen ;-). Es beschwert sich 
über den fehlenden Temperaturfühler und Kessel ...

Update:
1
01  +5V
2
02  GND
3
03  5V gemessen, vielleicht ein binärer E/A?
4
04  Input (0V Displayeinheit aus/ 5V Displayeinheit an + Bustraffic)
5
05  0V gemessen, vielleicht ein binärer E/A?
6
06  0V gemessen, vielleicht ein binärer E/A?
7
07  NC
8
08  0V gemessen, vielleicht ein binärer E/A?
9
09  Ausgang Heizkreis1 Pumpe (an=5V, aus=0V)
10
10  Pumpe WW (0V aus / 5V an)
11
11  0V gemessen, vielleicht ein binärer E/A?
12
12  0V gemessen, vielleicht ein binärer E/A?
13
13  0V gemessen, vielleicht ein binärer E/A?
14
14  0V gemessen, vielleicht ein binärer E/A?
15
15  TTL Signal Low-Aktiv, feste Pulsbreite, unregelmässiges Signal, könnte Frame start interrupt sein
16
16  TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus
17
17  TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus
18
18  TTL Signal variable Pulsbreite, sieht nach einem Enable Signal aus
19
19  5V gemessen, vielleicht ein binärer E/A?
20
20  5V gemessen, vielleicht ein binärer E/A?
21
21  0V gemessen, vielleicht ein binärer E/A?
22
22  TTL Signal variable Pulsbreite, sieht nach Datenübertragung aus
23
23  Datenübertragung Differential zu pin 24
24
24  Datenübertragung Differential zu pin 23
25
25  Output / 50hz sinus der fast wie dreieck aussieht 0,16V AC gemessen, ab und zu störungen messbar
26
26  NC

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Der BUS ist übriegens ein I2C-Bus. Am EEProm liegen die gleichen Daten 
an. Ich habe mal das Datenblatt angehängt.

von Rudi (Gast)


Lesenswert?

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.

von Rudi (Gast)


Lesenswert?

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) ;-)
1
01  +5V
2
02  GND
3
03  5V gemessen, vielleicht ein binärer E/A?
4
04  Input (0V Displayeinheit aus/ 5V Displayeinheit an + Bustraffic)
5
05  OUTPUT ??? (0V)
6
06  OUTPUT ??? (0V)
7
07  NC
8
08  OUTPUT ??? (0V)
9
09  Ausgang Heizkreis1 Pumpe (an=5V, aus=0V)
10
10  Pumpe WW (0V aus / 5V an)
11
11  OUTPUT ??? (0V)
12
12  OUTPUT ??? (0V)
13
13  OUTPUT ??? (0V)
14
14  OUTPUT ??? (0V)
15
15  ALIVE (HIGH) kessel/ww TTL Signal Low-Aktiv, feste Pulsbreite
16
16  OUTPUT SIGNAL (unknown)
17
17  OUTPUT SIGNAL (unknown)
18
18  OUTPUT SIGNAL (unknown)
19
19  INPUT ??? (5V)
20
20  INPUT ??? (5V)
21
21  OUTPUT ??? (0V)
22
22  OUTPUT SIGNAL (unknown)
23
23  SDA
24
24  SCL
25
25  OUTPUT 50hz sinus der fast wie dreieck aussieht 0,16V AC gemessen, ab und zu störungen messbar
26
26  NC

von Rudi (Gast)


Lesenswert?

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 ...

von Rudi (Gast)


Lesenswert?

Update:
1
01  +5V
2
02  GND
3
03  5V gemessen, vielleicht ein binärer E/A?
4
04  INPUT (0V Displayeinheit aus/ 5V Displayeinheit an + Bustraffic)
5
05  OUTPUT Relais Brenner (an=5V, aus=0V)
6
06  OUTPUT ??? (0V)
7
07  NC
8
08  OUTPUT ??? (0V)
9
09  OUTPUT Relais HK1 Pumpe (an=5V, aus=0V)
10
10  OUTPUT Relais WW Pumpe (0V aus / 5V an)
11
11  OUTPUT Relais ZIRKPUMPE (0V aus / 5V an)
12
12  OUTPUT Relais MISCHER (0V zu / 5V auf)
13
13  OUTPUT ??? 0V => 5V after successfull Init
14
14  OUTPUT Relais HK2 Pumpe (0V aus / 5V an)
15
15  INPUT ALIVE/DATA (HIGH) kessel/ww ... 
16
16  OUTPUT SIGNAL (unknown) 4x HIGH/LOW 4*450ms 1x LOW 1*450ms
17
17  OUTPUT SIGNAL (unknown) (1sec HIGH/1sec LOW)
18
18  OUTPUT SIGNAL (unknown) (450ms HIGH/450ms LOW)
19
19  OUTPUT SIGNAL (unknown)
20
20  INPUT ??? (5V)
21
21  OUTPUT ??? (5V)
22
22  OUTPUT SIGNAL (unknown)
23
23  SDA
24
24  SCL
25
25  OUTPUT 50hz sinus der fast wie dreieck aussieht 0,16V AC gemessen, ab und zu störungen messbar
26
26  NC

von Martin (Gast)


Lesenswert?

Rudi sehr gut !

von Rudi (Gast)


Lesenswert?

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:
1
01  +5V
2
02  GND
3
03  5V gemessen, vielleicht ein binärer E/A?
4
04  INPUT (0V Displayeinheit aus/ 5V Displayeinheit an + Bustraffic)
5
05  OUTPUT Relais Brenner (an=5V, aus=0V)
6
06  OUTPUT ??? (0V)
7
07  NC
8
08  OUTPUT ??? (0V)
9
09  OUTPUT Relais HK1 Pumpe (an=5V, aus=0V)
10
10  OUTPUT Relais WW Pumpe (0V aus / 5V an)
11
11  OUTPUT Relais ZIRKPUMPE (0V aus / 5V an)
12
12  OUTPUT Relais MISCHER (0V zu / 5V auf)
13
13  OUTPUT ??? 0V => 5V after successfull Init
14
14  OUTPUT Relais HK2 Pumpe (0V aus / 5V an)
15
15  INPUT  ADC (Value => Signal High Time)
16
16  OUTPUT ADC ADDR 0
17
17  OUTPUT ADC ADDR 1
18
18  OUTPUT ADC ADDR 2
19
19  OUTPUT SIGNAL UART 1200 Baud (7n1) ???
20
20  INPUT ??? (5V)
21
21  OUTPUT ADC RESET ???
22
22  OUTPUT ADC SYNC
23
23  SDA
24
24  SCL
25
25  OUTPUT 50hz sinus der fast wie dreieck aussieht 0,16V AC gemessen, ab und zu störungen messbar
26
26  NC
27
28
ADC ADDR
29
--------
30
0x00 ... KESSEL
31
0x01 ... AUSSEN
32
0x02 ... WW
33
0x03 ... ???
34
0x04 ... ???
35
0x05 ... ???
36
0x06 ... VORLAUF
37
0x07 ... REF

von Rudi (Gast)


Lesenswert?

Identifizierung Temperatursensoren (2107) aus den Kurven im Serviceheft:

http://www.fuehlersysteme.de/resistance_characteristics_de.pdf

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 ;-).

von Rudi (Gast)


Lesenswert?

@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 ...

von Martin (Gast)


Lesenswert?

Hallo Rudi,

wie sind denn die NTC 10kOhm beschaltet? Gegen 5V? Was für Werte 
benötigst du? 8bit 14bit, 16bit?


Martin

von Rudi (Gast)


Lesenswert?

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.

von Rudi (Gast)


Lesenswert?

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.

von Rudi (Gast)


Lesenswert?

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.

von Mario (Gast)


Lesenswert?

@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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

@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 ...

von Matthias (Gast)


Lesenswert?

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

von gs (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

> 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.

von Matthias (Gast)


Lesenswert?

@ 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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

@Matthias

R_ESD, D_ESD und R_HYST habe ich nicht bestückt. Der Rest sollte benutzt 
werden.

von Rudi (Gast)


Lesenswert?

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 ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.