Forum: Haus & Smart Home Logamatic 2107 Schnittstelle


von Rudi (Gast)


Lesenswert?

> in Bild 4 und 5 scheint das wohl keine Störung zu sein.
> Das scheint wohl die RC30 zu sein (0x10). Die kleinen "Störungen" sehen
> genauso aus wie das nachfolgende Byte. Also ob die RC30 die Bytes erst
> zum Sendeteil überträgt und trotzdem den Weg auf den Bus finden. Und
> dann wird erst das Byte übertragen. Beim lesen dürfte das Problem
> vermutlich nicht auftreten. Die anderen Busteilnehmer scheinen ja nicht
> so eine Pause zu machen.

Das sehe ich jetzt auch. Mhh, sehr merkwürdig.

> In Bild 1 bist Du vermutlich in der Zeile verrutscht. Das sind 1,04 ms =
> 961,5 Hz also 10 Bit.

Das ist das Byte mit dem Low Stopbit (Break).

> die letzten beiden Bilder sind vermutlich Deine Antwort, oder?

Ja, genau.

> Sieht so aus als ob es da wirklich eine Kollision gibt. Kann das sein dass > Du 
zu langsam geantwortet hast und das nächste Telegramm oder eine
> Fehlermeldung verschickt wird?

Nein, eigentlich nicht. Die ersten beiden Bytes sind der Request und 
kurz danach der Response mit "Fehler". Eigentlich wird ein normaler 
Response etwas später verschickt. Das habe ich auch probiert, aber ohne 
ersichtliche Besserung.
Den einzigen Fehler den ich noch sehe ist das falsche Timing nach dem 
zweiten FET und der Diode in meiner Sendeschaltung. Beim abschalten 
(Low/High-Flanke auf dem Bus) floated der Drain-Ausgang und 
Diodeneingang. Bei dir wäre das zwischen Transistor und Diode. Da müsste 
man einen Pullup dran hängen der durch eine Diode + C die Strecke auf 
einen definierten Pegel zieht, wenn der FET abgeschaltet wird.
Das C wird über den Bus geladen und sollte dann bei etwa 15V hängen.

Denkst du das würde funktionieren ?

von IngoF (Gast)


Lesenswert?

Rudi schrieb:
> ein, eigentlich nicht. Die ersten beiden Bytes sind der Request und
> kurz danach der Response mit "Fehler".

Achso, jetzt sehe ich das erst. Also das Polling dann eine kurze Pause, 
Deine Antwort, dann eine Pause Dein Break.

Sieht so aus als ob kurz nach Deinem Break ein Break vom Busmaster 
kommt, oder?Deine Sendeschaltung zieht den Signalpegel ja etwas tiefer 
als in dem Polling vom Master. Das letzte Break scheint den selben 
Low-Pegel zu haben wie das Polling. Der Master wartet ja kaum und 
schießt sofort nach Deinem 0-Stopbit sofort los.

Was Du jetzt mit dem Floaten meinst verstehe ich jetzt nicht so ganz 
Sieht doch ganz gut aus. Oder meinst Du dass das zweite Break dadurch 
entsteht?

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

Die Low/High-Flanke kommt zu spät, braucht zu lange. D.h. die 
"High"-Bits sind etwas kürzer und die "Low"-Bits länger.

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Vergiss es ;-) Das Problem hatte ich im Testaufbau gesehen, auf dem Bus 
sieht es besser aus.

Anbei noch 3 Bilder von meinem Response und die Variationen. Sieht mir 
irgendwie nach einem Timing-Problem aus. Ab und sieht es auch so aus wie 
es soll.

Oben der Bus und unten der TX-Ausgang vom uC.

von Ingo F. (ingof)


Angehängte Dateien:

Lesenswert?

Wenn man jetzt Bild 04 und 10 miteinander vergleicht würde mir jetzt 
Spontan einfallen das die RC30 nur mit 0,5Vss sendet und der Busmaster 
das Signal aufarbeitet und für alle anderen Busteilnehmer aufarbeitet.

Bei beiden Signalen fällt mir auf dass die Daten doppelt vorhanden sind 
und das Low-Level bei dem Echo anders ist.

Also nur durch ein floaten am FET kann ich mir sowas nicht vorstellen. 
Habe bei meiner RC 30 mal die Platine von beiden Seiten fotografiert und 
keinen Hinweis dafür gefunden dass dort irgeinde Schaltung zu finden ist 
wie in unserem Sendeteil. Dort wurde nur irgendwie ein 
CMOS-Logik-Baustein verwendet. Die Schaltung habe ich aber ignoriert 
weil ich die nicht so ganz verstanden habe und nicht sicher war dass ich 
die richtig entflechtet hatte. Mein Ergebnis hänge ich mal an.

Aber warum sollte es dann eine Prüfsumme geben wenn der Busmaster 
sowieso alles widerholt. Dann könnte die RC30 doch einfach überprüfen ob 
das Echo korrekt ist. Aber das würden die anderen Busteilnehmer ja nicht 
mitbekommen wenn die RC30 feststellt dass das Echo falsch war. Und 
müsste sich dann melden dass das letzte Telgramm fehlerhaft wäre..

Keine Ahnung....

Ist das denn bei allen anderen Busteilnehmer auch so, und nur bei 
Telegrammen vom Busmaster ohne Echo?

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

> Wenn man jetzt Bild 04 und 10 miteinander vergleicht würde mir jetzt
> Spontan einfallen das die RC30 nur mit 0,5Vss sendet und der Busmaster
> das Signal aufarbeitet und für alle anderen Busteilnehmer aufarbeitet.

Das glaube ich nicht. Der Bus wird aufbereitet hört sich komisch an. Wir 
sind ja nicht an der RC30 sondern an der ???BCXX??? am Klinkenstecker. 
Die Schaltung wird dort sicherlich ganz anders sein als bei den internen 
Busteilnehmern. Ich werde die mal zerlegen und Bilder machen.

> Bei beiden Signalen fällt mir auf dass die Daten doppelt vorhanden sind
> und das Low-Level bei dem Echo anders ist.

Die doppelten Signale kann ich auch nicht erklären. Das Low-Level liegt 
an der verwendeten Diode in der Sendeschaltung.

> ...
> CMOS-Logik-Baustein verwendet. Die Schaltung habe ich aber ignoriert
> weil ich die nicht so ganz verstanden habe und nicht sicher war dass ich
> die richtig entflechtet hatte. Mein Ergebnis hänge ich mal an.

Ja, das ist ein Busteilnehmer und kein externes etwas mit einer 3m 
Antenne ;-)


> Aber warum sollte es dann eine Prüfsumme geben wenn der Busmaster
> sowieso alles widerholt. Dann könnte die RC30 doch einfach überprüfen ob
> das Echo korrekt ist. Aber das würden die anderen Busteilnehmer ja nicht
> mitbekommen wenn die RC30 feststellt dass das Echo falsch war. Und
> müsste sich dann melden dass das letzte Telgramm fehlerhaft wäre..

Nein, die Prüfsumme ist für den Empfänger und ob der sich bei 
fehlerhafter Prüfsumme meldet ist eine andere Geschichte. Da kommt es 
drauf an ob er die Daten haben wollte/braucht oder ob es später auch 
okay ist (Timeout).

> Ist das denn bei allen anderen Busteilnehmer auch so, und nur bei
> Telegrammen vom Busmaster ohne Echo?

Ich habe bei einem Teilnehmer noch einen ripple gesehen, ich denke da 
ist die Verdrahtung oder der Sendeteil etwas daneben. Ich werde da 
nochmal messen und Knipsen.

von Rudi (Gast)


Lesenswert?

Zu der Schaltung:

Tx geht über ein (R)C-Filter an den Inverter (Treiber) und dann wird nur 
der Analoganteil ... Wohin gespeist ? Der muss doch wieder an den Bus ?

Rx geht an den Treiber, Diode, R-Filter und dann Pullup damit es nach 
der Diode nicht floated, und dann den Doppelinverter und den RC-Filter, 
der ist bei der Übertragungsrate okay.

Der RX und Tx-Pfad sollten noch direkt an den Bus gehen oder sehe ich 
das nicht ???

von IngoF (Gast)


Lesenswert?

Rudi schrieb:
> Der RX und Tx-Pfad sollten noch direkt an den Bus gehen oder sehe ich
> das nicht ???

Ja, aber ich habe nirgendwo etwas finden können wo es zum Bus geht. Habe 
mich aber auch nicht getraut das LCD-Display von der Platine zu nehmen. 
Habe das vor Tausend Jahren auch schon mal bei einer alten Uhr probiert 
und hatte dannach nur Kontaktschwierigkeiten.

Rudi schrieb:
> Die doppelten Signale kann ich auch nicht erklären. Das Low-Level liegt
> an der verwendeten Diode in der Sendeschaltung.

Ist schon klar. Aber bei Bild 4 kann man sehen dass der Signal-Low-Pegel 
vom Polling und dem Echo etwa gleich sind und Das Low-Level von Deinen 
gesendeten Daten etwas niedriger liegt. Halte es auch für 
unwahrscheinlich dass das Echo irgendwie von Deiner Schaltung erzeugt 
wird. Irgendeiner schickt das Echo. Keine Ahnung wie und warum.
Und dass die RC30 die Signale vorher auf den Bus intern vor dem Senden 
irgendo herumschiebt und die dabei ungewollt auf den Bus kommen kann ich 
mir eigentlich auch nicht vorstellen.

Man könnte ja mal zum Spass ausprobieren was passiert wenn man auch nur 
ein Signal mit 0,5Vss auf den Bus sendet. Wenn das bei der RC30 entsteht 
dürfte sich ja dann am Bus nichts ändern. Aber ehrlich gesagt kann ich 
mir auch nicht vorstellen dass nur mit einem so "schwachen" Signal 
gesendet wird.

Rudi schrieb:
> Wohin gespeist ? Der muss doch wieder an den Bus ?
Ich habe nirgendwo einen Hinweis gefunden. Habe allerdings auch keine 
Ahnung wo der R17 hingeht. Der Pfeil nach oben soll keine 
Versorgungsspannung sein.

Sind alles nur Vermutungen habe keine Ahnung was da so auf dem Bus 
abgeht ....

Gruß
Ingo

von IngoF (Gast)


Lesenswert?

Danke noch mal dafür dass Du den letzten Rest der CRC herausgefunden 
hast. Ich glaub ich wäre da nie hinter gekommen. Bei mir funktioniert 
die CRC-Prüfung jetzt auch einwandfrei.

Die Festplatte war übrigens nicht das Problem. MySQL hat mit anwachsen 
der Datenmenge immer mehr Speicher benötigt , bis hinterher die 
Auslastung permanent bei 100% lag. Hatte das schon eher auf mein 
Java-Programm bezogen.

Bei 40MByte Daten war ein Arbeiten nicht mehr möglich. Habe bei MySQL 
allerdings auch die InnoDB und nicht myISAM genommen. Angeblich sollte 
InnoDB ja für viele Schreibzugriffe und wenig Lesezugriffe ausgelegt 
sein.

Wieso hats Du denn die MyISAM genommen?

Deine Datenbank müste ja inzwischen ein vielfaches meiner Datenbank 
haben. Was für eine Prozessorlast verursacht denn Deine MySQL? Und was 
hast Du für einen Rechner,

Bei mir ist es nur ein IBMT43  Pentium M 750 1,86 GHz und 1,5GB RAM und 
habe bei 40 MByte schon eine Auslastung von permanent 100%. Nach löschen 
der ganzen Daten war ich wieder bei 10% Auslastung und weniger

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

> Deine Datenbank müste ja inzwischen ein vielfaches meiner Datenbank
> haben. Was für eine Prozessorlast verursacht denn Deine MySQL? Und was
> hast Du für einen Rechner,

Ich habe einen AMD Athlon(tm) XP 1800+ und 500MB Ram. Die CPU-Last liegt 
bei etwa 25% im Durchschnitt. Es ist aber nur der Server der die Daten 
in die DB schreibt und die Bilder generiert (siehe Anhang).

Ich speicher und generiere z.Z. für zwei Heizungen.

Für die eine habe ich etwa 400MB Daten und 400MB Index (12Mill. 
Einträge) und für die andere etwa 300MB Daten und 300MB Index (9 
Mil.Einträge) ;-) Ich will das ganze aber noch optimieren da die Abfrage 
und das Einfügen zu lange dauert.

Wie Speicherst du die Daten, geparst, nur was du brauchst oder als blob 
?

Ich speicher jede Temperatur usw. einzeln als Wert mit Datum, Sender und 
Typ.

von Rudi (Gast)


Lesenswert?

Ich habe die CRC-Berechnung noch etwas vereinfacht:
1
    for i in range(0,len(a)-1):
2
        d = 0
3
        if crc1 & 0x80: 
4
            crc1^=12
5
            d = 1
6
        crc1 = crc1 << 1
7
        crc1 &= 0xfe
8
        crc1 |= d
9
        crc1 = crc1^int(a[i])

von Rudi (Gast)


Lesenswert?

Noch etwas zur Datenbank. Für diesen Fall der "Datensicherung" ist die 
myISAM einfach besser und schneller. Die Features der InnoDB braucht man 
dabei einfach nicht.

Ich werde das Format soweit aufbrechen, das jeder Datentyp eine eigene 
Tabelle bekommt. Das sollte die Abfragen zum Teil recht gut 
beschleunigen und evtl. funktioniert das dann auch über Ajax in Realtime 
...

Hast du dir schon etwas für den "späteren" nicht Frickelaufbau überlegt 
?

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

Also bei

Rudi schrieb:
> Für diesen Fall der "Datensicherung" ist die
> myISAM einfach besser und schneller.
Habe ich auch festgestellt.. Satt permanent 100% und Absturz nach 2,5 
Stunden habe ich jetzt nur noch durchschnittlich 80%. Das ändern der 
Datenbankengine ging mit nur zwei Mausklicks.

Rudi schrieb:
> Ich werde das Format soweit aufbrechen, das jeder Datentyp eine eigene
> Tabelle bekommt.
Vielleicht ist das Problem dass ich zur Zeit noch keine Datenreduzierung 
mache und alle Werte eines Telegramms abspeichere. Vielleicht sollte ich 
das auch so wie Du handhaben und nur Tabellen nach Datentyp oder nur 
eine einzige Tabelle mit allen Werten nehmen. Dadurch bräuchte ich viele 
doppelte Werte nicht speichern... Vielleicht hilfts.

Bei Der CRC Berechung musste ich nur noch das XOR mit 0x0C einfügen. 
Schätze mal dass sie einer Deiner beiden Berechnungen sehr ähnlich ist. 
Habe meine Schwirigkeiten mit unbekannten Programmiersprachen ;-)
Mit der korrekten Prüfsumme kann man auch schnell sehen wieviele 
Telegramme fehlerhaft sind. Bei mir an einem Tag teilweise bis zu 200. 
Das kann aber auch an der Prozessorauslastung liegen.

Als Endgültige Version hätte ich schon gerne eine vernünftig geätzte 
Platine mit Gehäuse. Eventuell sogar genau für die freien Steckplätze in 
der Heizung. Vielleicht auch mit dem XPORT. Damit der "Server" nicht 
neben dem Wandler stehen muss. Vielleicht könnte man ja auch zusammen 
die Platine entwickeln wenn wir uns auf eine Hardware und Sendeschaltung 
einigen könnten.

Gruß
Ingo

von IngoF (Gast)


Lesenswert?

Achso... habe noch mal in Deiner WAV-Datei gesucht und soweit 
festgestellt dass alle Busteilnehmer außer der Master selber immer nach 
einem gesendeten Byte ein Byte Pause machen und manchmal das Telegramm 
nach noch längerer Pause (etwa 15ms) weiter fortzusetzen.

Der Busmaster pustet seine Telegramme einfach ohne Wartezeiten raus.

Entweder kann die Sendestufe das nicht anders machen oder der Busmaster 
oder irgendjemand anders sendet manchmal ein Echo. Gegen das Echo 
spricht nur dass die Störungen vorher kommen.

von Rudi (Gast)


Lesenswert?

> Habe ich auch festgestellt.. Satt permanent 100% und Absturz nach 2,5
> Stunden habe ich jetzt nur noch durchschnittlich 80%. Das ändern der
> Datenbankengine ging mit nur zwei Mausklicks.

Anbei meine Mysql Speicher-Konfiguration, evtl. bringt es noch etwas 
Besserung.
1
[mysqld]
2
key_buffer                              = 32M
3
max_allowed_packet                      = 2M
4
table_cache                             = 64
5
sort_buffer_size                        = 10M
6
net_buffer_length                       = 1024K
7
read_buffer_size                        = 5M
8
read_rnd_buffer_size                    = 10M
9
myisam_sort_buffer_size                 = 8M
10
11
[isamchk]
12
key_buffer                                      = 20M
13
sort_buffer_size                        = 20M
14
read_buffer                             = 2M
15
write_buffer                            = 2M
16
17
[myisamchk]
18
key_buffer                              = 40M
19
sort_buffer_size                        = 40M
20
read_buffer                             = 5M
21
write_buffer                            = 5M

von Rudi (Gast)


Lesenswert?

> Als Endgültige Version hätte ich schon gerne eine vernünftig geätzte
> Platine mit Gehäuse.

Ich auch ;-). Was hältst du von einem Hutschienengehäuse (eine Einheit) 
? Da würden oben und unten etwa jeweils 5-6 Kontakte Platz haben.

> Eventuell sogar genau für die freien Steckplätze in
> der Heizung. Vielleicht auch mit dem XPORT. Damit der "Server" nicht
> neben dem Wandler stehen muss. Vielleicht könnte man ja auch zusammen
> die Platine entwickeln wenn wir uns auf eine Hardware und Sendeschaltung
> einigen könnten.

Wie breit ist der XPORT ? Dadurch das der nur eine Steckerleiste hat 
wird das etwas wackelig. Kann der POE ? Die Stromversorgung braucht man 
dann ja auch noch.

Für die Platine dachte ich mir einen Mega der mir den EMS-Bus auf CAN 
umsetzt. Alles Mehrarbeit, aber ich will noch ein paar andere Sachen 
steuern und für einen Bus habe ich nichts besseres gefunden. Ich denke 
man könnte die Platine zweigleisig fahren. Einmal normales CAN Interface 
mit normalen Steckverbindern und dann einen Platz für den XPORT, geht 
der an die UART ? Das könnte funktionieren.

von Matthias (Gast)


Lesenswert?

Hallo Rudi, Hallo Ingo,

wollte meine Stand sagen bzgl. der Telegramme UBA3. Mein NetIO hat beim 
Empfang der UBA3 Telegramme Zeichen verloren. Somit ist auch bei mir das 
Protokoll gleich. Die Checksummenberechnung habe ich auch gleich 
getestet -funktioniert echt Klasse.

Gruss Matthias

von IngoF (Gast)


Lesenswert?

Hurra!

habe doch tatsächlich den Fehler gefunden. Meine Logger läuft jetzt mit 
vielleicht 10% Prozessorleistung und der Systemtakt ist auf 40% 
reduziert.. Also statt 40Watt braucht das Notebook jetzt auch nur noch 
geschätze 15 Watt.

Das Problem lag nicht an MySQL, sondern an meiner Programmversion hatte 
irgendwo eine Zeile von einem Test nicht rausgenommen.
Es wurden also jeder decodierte und in MySQL abgespeicherter Wert 
nochmals ausgelesen, decodiert und außerhalb von MySQL mitgeloggt.

Werde jetzt auch noch mal die Daten reduzieren und vermutlich auch alles 
in einer Tabelle nach Datentyp abspeichern um doppelte Werte nicht 
mitloggen zu müssen. Bei mir wurden bisher alle Werte die decodiert 
werden konnten pro Telegramm komplett in MySQL mitgeloggt.

Rudi schrieb:
> Ich auch ;-). Was hältst du von einem Hutschienengehäuse (eine Einheit)
> ? Da würden oben und unten etwa jeweils 5-6 Kontakte Platz haben.
Na eigentlich doch eine gute Idee.. hoffe Du meinst ein Geäuse mit etwa 
FI-Breite und nicht einer LS-Breite.

Dann könnte man eine Busplatine machen mit Steckplätzen und den 
Kontaktklemmen und wenn es passt noch den ATMegaXY mit dem EMS-Bus-Teil. 
ALs Steckplatz senkrecht könnte man dann die Plantine mit dem XPORT 
machen und kann von oben die Ethernet-Buchse als Durchbruch ausführen. 
Oder eine CAN-Platine, oder ......

Vielleicht auch nur eine Platine die man mit XPORT oder MAX232 oder 
CAN-Controller bestückt werden kann.

Der XPort ist eigentlich nicht viel größer als so RJ-45-Buchse mit 
Transceiver. Müsste eigentlich ziemlich stabil sein wenn man den auf der 
Platine auflötet. Habe noch nie einen gehabt.

Der XPort wird eigentlich direkt an an die Pinn des Atmega gehangen und 
läuft mit 3,3 Volt. Soll aber 5Volt tolerant sein. Vielleicht gibt es ja 
auch eine 5Volt-Version.

Mit welcher Spannung wolltest Du den die Platine versorgen? bei 3,3 Volt 
könnte man SD/MMC-Karten direkt ohne irgendwelche Pegelwandlung an den 
ATmega hängen, genauso wie den XPort.

Rudi schrieb:
> Mega der mir den EMS-Bus auf CAN
> umsetzt. Alles Mehrarbeit, aber ...
Habe auch noch ein paar Sachen für die ich einen eigenen Hausbus 
gebrauchen könnte. Bin da bisher auch bei CAN hängen geblieben. Aber 
bisher noch nicht weiterverfolgt..

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

> Na eigentlich doch eine gute Idee.. hoffe Du meinst ein Geäuse mit etwa
> FI-Breite und nicht einer LS-Breite.

Was ist LS ???

Die Platine würde in einer Einheit 86.5x14 sein. Hier mal ein Beispiel 
von einem Sklaven in 2 Einheiten:

http://www.mikrocontroller.net/attachment/77294/can_ssr_b.png
http://www.mikrocontroller.net/attachment/77294/can_ssr_t.png

Die Bestückung ist in etwa 14mm Breit. Bei 2 Einheiten sind die Platinen 
33mm Breit. Das wird/ist übrigens ein SSR mit CAN-Bus-Interface, z.Z. 
mit Mega8 und externem EEProm und SRAM. Ich werde wohl auf den 328 
wechseln, der M8 hat mir etwas zu wenig Speicher.

> Mit welcher Spannung wolltest Du den die Platine versorgen? bei 3,3 Volt
> könnte man SD/MMC-Karten direkt ohne irgendwelche Pegelwandlung an den
> ATmega hängen, genauso wie den XPort.

Mit 3V3, für 5V bekommt man kaum noch billige Periphery-Ics.

> Dann könnte man eine Busplatine machen mit Steckplätzen und den
> Kontaktklemmen und wenn es passt noch den ATMegaXY mit dem EMS-Bus-Teil.
> ALs Steckplatz senkrecht könnte man dann die Plantine mit dem XPORT
> machen und kann von oben die Ethernet-Buchse als Durchbruch ausführen.
> Oder eine CAN-Platine, oder ......

Die senkrechte Installation ist etwas heikel, ordentliche Steckverbinder 
mit Verschraubung nehmen schon fast die komplette Platine ein.

Naja, mal schauen. Ich werde jedenfalls nicht direkt über Netz gehen, 
sondern über CAN an einen Master der dann die SD-Karte hat und Netzwerk 
unterstützt.

von Ingo F. (ingof)


Lesenswert?

Rudi schrieb:
> Was ist LS ???
Leitungsschutzschalter (Sicherung) Aber ist wohl die Größe die Du 
meintest..

Rudi schrieb:
> Mit 3V3,
schön...

Rudi schrieb:
> SSR
Ist das jetzt die LS-Rache ;-)
Watt isn datt? Secondary Surveillance Radar (Sekundärradar) wird es wohl 
nicht sein.. Schätze mal SolidStateRelais? Klingt interessant...

Rudi schrieb:
> Naja, mal schauen. Ich werde jedenfalls nicht direkt über Netz gehen,
> sondern über CAN an einen Master der dann die SD-Karte hat und Netzwerk
> unterstützt.
Also so eine SD-Karte als Option fände ich schon ganz gut. Muss mann ja 
nicht bestücken. Wenn mann noch einen Master mit ins Gehäuse stecken 
könnte ware das auch ganz gut. Also dann wäre eine Steckplatzversion 
schon ganz OK.

Rudi schrieb:
> Die senkrechte Installation ist etwas heikel, ordentliche Steckverbinder
> mit Verschraubung nehmen schon fast die komplette Platine ein.
Hat das Gehäuse denn keine Führungsnut oder ähnliches? Und wenn man so 
flexible Leiterplattenverbinder nehmen würde? Ist jau auch auf der 
SSR-Platine oder?

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

> Ist das jetzt die LS-Rache ;-)

Nein ;-)

> Watt isn datt? Secondary Surveillance Radar (Sekundärradar) wird es wohl
> nicht sein.. Schätze mal SolidStateRelais? Klingt interessant...

Solid State Relais, ja.

> Also so eine SD-Karte als Option fände ich schon ganz gut. Muss mann ja
> nicht bestücken. Wenn mann noch einen Master mit ins Gehäuse stecken
> könnte ware das auch ganz gut. Also dann wäre eine Steckplatzversion
> schon ganz OK.

Auf 86.5x14 ist nicht wirklich viel Platz. Ein SD-Karten-Slot mit Karte 
hat etwa 17x15mm, also nicht geeignet. Mehr Speicher/Flash ist 
eigentlich kein Problem, wenn es nicht grad Gigabyte sein müssen.

> Hat das Gehäuse denn keine Führungsnut oder ähnliches? Und wenn man so
> flexible Leiterplattenverbinder nehmen würde? Ist jau auch auf der
> SSR-Platine oder?

Der Verbinder ist für die Programmierung der CPU.

Schau dir mal die Gehäuse für Hutschiene an, dort kann man mehrere 
Platinen unterbringen, z.B. die von axxatronic, die cnmb Serie.

von Malte B. (hellraiser)


Angehängte Dateien:

Lesenswert?

IngoF schrieb:

> Der XPort ist eigentlich nicht viel größer als so RJ-45-Buchse mit
> Transceiver. Müsste eigentlich ziemlich stabil sein wenn man den auf der
> Platine auflötet. Habe noch nie einen gehabt.
Ja, der XPORT sitzt bombenfest (hat zusätzlich zu den Pins auch noch 2 
Lötfahnen an der Seite und 2 Kunststoffböbbel.
Abmessungen wie eine standard RJ45 Buchse mit LEDs, nur die Länge ist 
anders: ca 35mm

> Der XPort wird eigentlich direkt an an die Pinn des Atmega gehangen und
> läuft mit 3,3 Volt. Soll aber 5Volt tolerant sein. Vielleicht gibt es ja
> auch eine 5Volt-Version.
Ja, so ist es:
Versorgung 3.3V
Datenleitungen 3.3V, 5V tolerant.

Stromaufnahme ist im Datenblatt leider nicht aufgeführt, habe aber mal 
interessehalber gemessen: irgendwas zwischen 30 und 70 mA.
variiert halt je nachdem ob er daten uebertraegt, wie die leds leuchten 
etc.


Gruss, Malte

von Problem (Gast)


Angehängte Dateien:

Lesenswert?

Das XPort-Gehäuse ist 18.25mm breit, würde also nicht in das 
Hutschienengehäuse passen.

von IngoF (Gast)


Lesenswert?

Stimmt.. die Breite ist 18,25. Aber die Höhe ist inkl. Anschlüsse 
16,75mm müsste also so gerade reinpassen inkl. Platine und Anschlüsse. 
Hängt natürlich von der Wandstärke ab ob man 16,75mm innen hat.

Man kann ihn ja hochkant einbauen... Oder habe ich da noch irgendwas 
übersehen?

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

> Man kann ihn ja hochkant einbauen... Oder habe ich da noch irgendwas
> übersehen?

Ja, das Hutschienengehäuse ist 14mm breit.

von Malte B. (hellraiser)


Lesenswert?

Hi,

ich hoffe das schweift jetzt nicht zu sehr vom Thema ab, hat aber schon 
etwas hiermit direkt zu tun:

In der Zwischenzeit sind mir noch ein paar zusätzliche Ideen gekommen, 
so dass ich ausser des (noch ausstehenden) KM271 Nachbaus drei weitere 
Meßstellen haben werde: Wärmezähler+Wasserzähler Impulsmessung und 
mehrere SO-Hutschienenzähler für Energieverbrauch.

Die Stellen (Heizung, Wasserzähler, Zählerschrank) sind ca 4-10m 
voneinander entfernt.
Im Prinzip will ich ja immer noch per Ethernet an die Messdaten ran, 
will aber aus Kostengründen nicht an jede Einheit nen XPORT bauen.

Was haltet ihr generell von der Idee, dass ich an die AVRs TTL->RS485 
Interfaces hänge und alle mittels RS485 Bus vernetze?
Am Server, der sowieso 24/7 läuft würde dann ein RS485->USB Wandler 
hängen.
Gesamtlänge des Busses wären geschätzt etwa 100m.

Hat da jemand bedenken? Habe bisher noch nichts mit RS485 gemacht, aber 
wenn ihr sagt das wäre kein Problem, würde ich es gerne so realisieren.

Das KM271 Board wird es dann mit 2 Schnittstellen geben (RS232 / 485).
Hatte nochmal einen Test mit dem XPORT direkt gemacht, aber jedes Mal 
wenn ich den im Logamatic slot betreibe spinnen mir die analogpegel rum. 
MAX232 macht hingegen keine Probleme. Scheint wohl an den höheren 
Strömen zu liegen??

Gruss, Malte

von IngoF (Gast)


Lesenswert?

Also habe diese Schnittstelle noch nie benutzt. Hab da mal was 
gefunden://www.itwissen.info/definition/lexikon/RS-485-RS-485.

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

@Malte Bayer

> Hat da jemand bedenken? Habe bisher noch nichts mit RS485 gemacht, aber
> wenn ihr sagt das wäre kein Problem, würde ich es gerne so realisieren.

Das funktioniert, der Programmieraufwand ist aber nicht ohne für ein 
funktionierendes Multisensor-System. Die RS485 ist zwar in Hardware 
leicht zu realisieren, dafür steckt der Aufwand in der Software. Man 
muss sich auch vorher überlegen ob man den Bus in Full- oder Half-Duplex 
baut, da davon direkt die Software betroffen ist. Ich wollte den Bus 
auch benutzen, aber der Softwareaufwand für OSI Layer2-Layer4 ist mir zu 
hoch bzw. muss man diese Layer in Software realisieren 
(http://de.wikipedia.org/wiki/OSI-Modell).

> Das KM271 Board wird es dann mit 2 Schnittstellen geben (RS232 / 485).
> Hatte nochmal einen Test mit dem XPORT direkt gemacht, aber jedes Mal
> wenn ich den im Logamatic slot betreibe spinnen mir die analogpegel rum.
> MAX232 macht hingegen keine Probleme. Scheint wohl an den höheren
> Strömen zu liegen??

Wie sieht denn deine bisherige Schaltung aus ?

von Mario (Gast)


Lesenswert?

Rudi schrieb:
> Ich habe die CRC-Berechnung noch etwas vereinfacht:
>     for i in range(0,len(a)-1):
>         d = 0
>         if crc1 & 0x80:
>             crc1^=12
>             d = 1
>         crc1 = crc1 << 1
>         crc1 &= 0xfe
>         crc1 |= d
>         crc1 = crc1^int(a[i])

@Rudi
dass wäre ja super, wenn die CRC-Berechnung damit geht.
Ich habe Deine Lösung mal in Delphi übersetzt, komme aber nicht zu den 
richtigen Ergebnissen. Siehst Du den Fehler?

Danke,
Mario

function Berechne_Checksumme(data: array of integer; TelLaenge:integer 
): Integer;
var
  crc1, crc2 : integer;
  i, d : Integer;

begin
    crc1 := 0;
    for i:=0 to TelLaenge-4 do
    begin
        d := 0;
        if crc1 AND $80 = 1 then
        begin
            crc1 := crc1 XOR 12;
            d := 1;
        end;
        crc1 := crc1 SHL 1; //linksschieben
        crc1 := crc1 AND $fe;
        crc1 := crc1 OR d;
        crc1 := crc1 XOR ord(data[i]);
    end;
    result := crc1;

end;

von IngoF (Gast)


Lesenswert?

Mario schrieb:
> for i:=0 to TelLaenge-4 do

Warum denn dass? Der Quelltext sieht eigentlich ganzgut (seoweit ich 
mich noch an Delphi erinnere) Aber warum Telegrammlänge -4 sind das die 
Rahmenbytes AA und 55? Dann müsste die Schleife doch von 2 bis -2 
gehen..

Also bei mir hat es funtkioniert.. Schätzte mal mein JAVA-Quelltext 
hilft Dir auch nicht weiter ;-)

Gruß
Ingo

von Mario (Gast)


Lesenswert?

@IngoF

die Rahmenbytes sind entfernt, nur das Byte für die Telegrammlänge hängt 
noch an. Deshalb werden die letzten 3 Byte nicht in der CRC-Summe 
berechnet.

Letztes Byte = Telegrammlänge
Vorletztes Byte = CRC HighByte
Vorvorletztes Byte = CRC LowByte

Berechnet werden soll ja der CRC von empfangenen Telegrammen, dann wird 
mit dem Berechneten verglichen.
Bei manchen Telegrammen stimmt die errechnete CRC ja auch z.B.
 data[0] := $08;
 data[1] := $10;
 data[2] := $14;
 data[3] := $00;
 data[4] := $0D;
 data[5] := $D2;
 data[6] := $F9;
 data[7] := $29;  //Checksumme LowByte
 data[8] := $00;  //Checksumme HighByte
 data[9] := $09;  //Telegrammlänge
 TelZeiger := 10;

Bei anderen kommt 0000 raus z.B. bei
  data[0]  := $08;
  data[1]  := $00;
  data[2]  := $07;
  data[3]  := $00;
  data[4]  := $03;
  data[5]  := $03;
  data[6]  := $00;
  data[7]  := $02;
  data[8]  := $00;
  data[9]  := $00;
  data[10] := $00;
  data[11] := $00;
  data[12] := $00;
  data[13] := $00;
  data[14] := $00;
  data[15] := $00;
  data[16] := $00;
  data[17] := $37;
  data[18] := $00;  //Checksumme LowByte
  data[19] := $13;  //Checksumme HighByte
  TelZeiger := 20;  //Telegrammlänge

Rudi schrieb doch, dass die Berechnung mit allen Telegrammen passen 
sollte.
Irgendwelche Ideen?

Meine Heizungsüberwachung läuft übrigens seit November 2009 als 
Delphi-Anwendung recht stabil. Die SQL-Datenbank hat schon 650.000 
Einträge, dass sind ca. 51 MByte. Die Auswertung und Anzeige erfolgt im 
Browser per PHP.
Nur mal so, als positives Feedback.

bye,
Mario

von Rudi (Gast)


Lesenswert?

> Bei manchen Telegrammen stimmt die errechnete CRC ja auch z.B.
>  data[0] := $08;
>  data[1] := $10;
>  data[2] := $14;
>  data[3] := $00;
>  data[4] := $0D;
>  data[5] := $D2;
>  data[6] := $F9;
>  data[7] := $29;  //Checksumme LowByte
>  data[8] := $00;  //Checksumme HighByte
>  data[9] := $09;  //Telegrammlänge
>  TelZeiger := 10;

Da ist auch die 0x00 am Ende. Das ist das serielle Break-Zeichen und 
geht nicht in die CRC-Berechnung mit ein, noch ist es Teil der CRC.

Also die Daten:

0x08 0x10 0x14 0x00 0x0d 0xd2 0xf9

die CRC

0x29


Bei deinem zweiten Bsp. stimmt etwas nicht. Die 0x13 gehört da nicht 
hin. Bei diesem Bsp. sollte die CRC 0x37 sein, ich habe es jetzt nicht 
nachgerechnet.

von IngoF (Gast)


Lesenswert?

Mario schrieb:
> if crc1 AND $80 = 1 then

Ganz übersehen. Eigentlich kann die Bedingung nie wahr sein... Denke das 
sollte laufen:

if crc1 AND $80 = $80 then

von Mario (Gast)


Lesenswert?

IngoF schrieb:
>> if crc1 AND $80 = 1 then
>
> Ganz übersehen. Eigentlich kann die Bedingung nie wahr sein... Denke das
> sollte laufen:
>
> if crc1 AND $80 = $80 then


Danke, danke,
manchmal sieht man den Wald vor lauter Bäumen nicht.
Das war die Lösung, der Rest hat gepasst.

Hier nochmal meine Funktion mit der eingebauten Änderung, falls es 
jemand braucht:

function Berechne_Checksumme(data: array of integer; TelLaenge:integer 
): Integer;
var
  crc1 : integer;
  i, d : Integer;

begin
    crc1 := 0;
    for i:=0 to TelLaenge-4 do
    begin
        d := 0;
        if crc1 AND $80 = $80 then
        begin
            crc1 := crc1 XOR 12;
            d := 1;
        end;
        crc1 := crc1 SHL 1; //linksschieben
        crc1 := crc1 AND $fe;
        crc1 := crc1 OR d;
        crc1 := crc1 XOR ord(data[i]);
    end;
    result := crc1;
end;

Nochmals danke,
Mario

von Malte B. (hellraiser)


Lesenswert?

@Rudi:
siehe http://wiki.neo-soft.org/index.php/Bild:Km271_schematic.gif
An Pin 12 habe ich uebrigens keine -24V sondern auch ein GND.

So sieht die Schaltung auf der Platine aus, funktioniert soweit ich das 
beurteilen kann.

meine Pins 11+12 habe ich nicht verwendet, also ist der komplette ground 
der Platine an Pin 1 angeschlossen (viel massefläche, aber das scheint 
nicht das problem zu sein.

IN vom 3.3Vreg hängt direkt an +5V, der Ausgang gegen Masse mit 2 
Kondensatoren (100n kerko und 10uf elko), danach gehts gleich zum xport, 
dessen masse natuerlich auch mit K4/Pin1 verbunden ist.

Wenn ich nun den spannungsregler für den xport einsetze und diesen somit 
mit dem rest vom KM271 verbinde, bekomme ich bei ALLEN temperaturen 
falsche Werte (oft mit 12° Abweichung).

Zieht der Xport möglicherweise zuviel Strom von der 5v leitung?

Gruss, Malte

von Rudi (Gast)


Lesenswert?

@Malte Bayer

Danke !


> Zieht der Xport möglicherweise zuviel Strom von der 5v leitung?

Das kann sein. Hast du mal den Strom gemessen ? Netzwerk sollte etwa 
100mA ziehen, evtl. auch mehr. Bricht die Spannung zusammen oder kann 
dein LDO evtl. zu wenig Strom liefern ?

Hast du das Problem mit den Temperaturen auch ohne Netzwerkkabel ?

von IngoF (Gast)


Lesenswert?

Reinhard schrieb:
> Hallo,
> ich habe in Verbindung mit einem Buderus Service Key versucht meine
> Heizung (GB-125) abzufragen.

Hallo falls Reinhard oder ein anderer Buderus-Service-Key Besitzer hier 
mitliest bitte mal melden. Würde mir den gerne mal für ein paar Tage 
ausleihen.

DANKE

Gruß
Ingo

von Malte B. (hellraiser)


Lesenswert?

Hi Rudi,

Habe an einem anderen Projekt mal den Strom vom xport gemessen, der 
zieht an 5V (also vor dem 3.3v reg) ca 70-110mA je nach Laune (idle vs 
Datenübertragung).

Ob die 5V Seite in der Logamatic zusammenbricht habe ich leider verpasst 
zu messen, am regler liegts aber nicht, der ist überdimensioniert die 1A 
Version.

Die Temperaturprobleme kommen sobald ich den Spannungsregler einstöpsle 
und somit den xport mit dem Rest verbinde, egal ob Netzwerkkabel 
angeschlossen ist oder nicht.
Hatte ich zuerst auch gedacht wegen Ethernet Shield = Xport Shield (der 
auch auf GND der Logamatic liegt) und habe deshalb mal das Ethernet 
abgestöpselt. bringt aber dieselben Fehler.

Ich warte mit dem KM217 noch ein bisschen, da ich sowieso bald noch 
diverse SO-Zähler anbinden will. Irgendwie will ich das alles 
miteinander verBUSen und dann auf einen gemeinsamen xport gehen (der 
dann nicht auf dem km271 verbaut wird).

Habe da sowieso meine Bedenken. der xport ist zwar extended temp. range, 
aber da wir im winter rohrleitungsbedingt den kessel hoch fahren wird es 
in der logamatic schon recht warm drin.

Gruss, Malte

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Moin.


ich habe jetzt mein erstes CAN-IO-Modul fertig. Die eigentliche 
Funktionalität wird über Steckmodule realisiert, die dann auf die Ports 
auf der rechten Seite geroutet werden. Auf dem Bild befindet sich ein 
I2C-Steckmodul um externe Temperatursensoren auszulesen.

Für die RC30 kommt dann die entsprechende Funktionalität auf die 
Steckmodule.


@IngoF

Gibt es etwas neues bei der Sendefunktionalität ?

von IngoF (Gast)


Lesenswert?

Hallo Rudi, das sieht ja schon mal echt super aus.... Also habe auch mal 
inzwischen überhaupt nachgedacht was ich so machen möchte, und da wäre 
die Kommunikation über ein CAN-Modul echt klasse.

Würde Dir sofort so einen Satz abkaufen wenn das Möglich wäre...

Was ist das dort denn alles für Hardware drauf, Womit sind die 
Erweiterungsstifte belegt? Wie sind die 4 Stifte auf beiden Seiten 
belegt? die rechten 4 gehen vermutlich auf den Erweiterungsstecker. 
links gehen zumindest zwei für den CAN-Bus raus und die anderen beiden 
sind die Stromversorgung? Wie programmierst Du denn die Harware? ist der 
Stecker auf der anderen Seite oder wird das über die Erweiterungsstecker 
realisiert?

Wie würdest Du denn die EMS-Telegramme über den CAN-Bus übertragen? Hast 
Du Dir da schon was überlegt?

Also mit der Sendefunktion muss ich gestehen dass ich mich damit aus 
verschiedenen Gründen noch nicht mit beschäftigen konnte. Müsste also 
noch Dein C-Programm auf Assembler umschreiben damit ich dann einen Pin 
vom µC als Sendepin gebrauchen könnte.. (Also wäre die Information schon 
ganz schön wie Dein Modul belegt ist.. Müsste dass dann ja nicht nochmal 
neuerfinden...)

Unter anderen ist auch alle paar Tage ein Heizungsfachmann da und 
tauscht wie wild alle Komponenten weil die Fehlermeldung 2L 266 von 
Buderus alles andere als präzise ist. Und mit den Log habe ich auch noch 
nicht viel bei dieser Störung anfangen können. Wäre ja auch zu einfach 
wenn Buderus irgendwelche Daten zur Fehleranalyse über den Bus jagen 
würde...

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

> Würde Dir sofort so einen Satz abkaufen wenn das Möglich wäre...

Ist noch alles Prototype, es gibt noch einige Fehler im Layout. 
Theoretisch aber kein Problem.

> Was ist das dort denn alles für Hardware drauf

Ein ATMEGA328P, 23K256 SRAM/SPI, AT24C512B EEProm/I2C, MCP2551 
CAN-Bus-Treiber, MCP2515 CAN-Bus-Controller, DC/DC für etwa 8-30V am 
Eingang.
Die Schaltung soll dann mit 3V3 laufen.

> Womit sind die Erweiterungsstifte belegt? Wie sind die 4 Stifte auf
> beiden Seiten belegt? die rechten 4 gehen vermutlich auf den
> Erweiterungsstecker.

Auf der rechten Seite ist eine 4x4 Matrix die über die 
Erweiterungsplatine belegt wird.

> links gehen zumindest zwei für den CAN-Bus raus und die anderen beiden
> sind die Stromversorgung?

Ja, das ist die 4x Wago-Klemme die auch auf der rechten Seite passt wenn 
man nur 4 oder weniger Leitungen braucht.

> Wie programmierst Du denn die Harware?

Auf der Unterseite befindet sich noch eine FFC, der dann per Kabel auf 
einen Miniadapter geht und dann auf den 6-Pol AVR Programmieradapter. Im 
Betrieb geht dann das Update über CAN-Bus. Deswegen auch das externe 
EEProm.

> ist der Stecker auf der anderen Seite oder wird das über die
> Erweiterungsstecker realisiert?

Der "kleine" Erweiterungsstecker links ist für das Frontpanel, also 4x 
IO, VCC und dann für Debug noch UART.

> Wie würdest Du denn die EMS-Telegramme über den CAN-Bus übertragen? Hast
> Du Dir da schon was überlegt?

Nein, das kommt dann aber später. Ich fange erstmal mit externen 
Temperatursensoren an (I2C). Die Werte werde ich wohl alle einzeln 
verschicken, mit Timestamp. Der CAN-Bus kann ja nur maximal 8 Bytes 
Payload.


> Also mit der Sendefunktion muss ich gestehen dass ich mich damit aus
> verschiedenen Gründen noch nicht mit beschäftigen konnte. Müsste also
> noch Dein C-Programm auf Assembler umschreiben damit ich dann einen Pin
> vom µC als Sendepin gebrauchen könnte.. (Also wäre die Information schon
> ganz schön wie Dein Modul belegt ist.. Müsste dass dann ja nicht nochmal
> neuerfinden...)

Ja, die Info kann ich nachreichen, ich denke ohne diesen ServiceKey wird 
das erstmal nichts mit senden.

> Unter anderen ist auch alle paar Tage ein Heizungsfachmann da und
> tauscht wie wild alle Komponenten weil die Fehlermeldung 2L 266 von
> Buderus alles andere als präzise ist. Und mit den Log habe ich auch noch
> nicht viel bei dieser Störung anfangen können. Wäre ja auch zu einfach
> wenn Buderus irgendwelche Daten zur Fehleranalyse über den Bus jagen
> würde...

Aha, dann soll er mal den ServiceKey für einen Tag da lassen, wenn die 
den überhaupt haben.

von gravieren (Gast)


Lesenswert?

Hi

Hier ist ein Artikel über die KM271  (Nachbau)


http://wiki.neo-soft.org/index.php/Heizungsschnittstelle/Logamatic2107/K4






Ich hoffe, das hilft etwas.


Gruss

von Ingo F. (ingof)


Lesenswert?

Hallo Rudi,

die Antwort der Mail kam nicht an weil der Host nicht erreichbar ist.

Also meine Heizung läuft wieder.. es war die Pumpe.

Mein AVR Studi lies sich nicht mehr starten, updaten, deinstalllieren 
oder reparieren. Hat einige Zeit gedauert bis ich mein AVR-Studio wieder 
am laufen hatte. Inzwischen habe ich erfolgreich Deinen C-Code ähnlich 
auf Assembler portiert.
Meine LED blinkt nur noch wenn Nutzdaten fließen. Habe eine Automatische 
beatwortung der Pollings der Adress 0x21 eingebaut udn getestet. Nur 
dumm dass ich Meine Schaltung dabei geschossen habe.. Werde mir das noch 
mal ansehen müssen..

Ansonsten wäre ein Schaltplan Deiner Entwickling ganz interessant..

Gruß
IngoF

von Rudi (Gast)


Lesenswert?

Hallo,

> die Antwort der Mail kam nicht an weil der Host nicht erreichbar ist.

Ja, eine alte E-Mail Adresse. Sollte wieder funktionieren.


> Also meine Heizung läuft wieder.. es war die Pumpe.

Aha, das hättest du am Druck sehen können ;-). Wenn beim Einschalten der 
Druck nicht etwas hoch geht, dann ist da etwas faul. Ich sehe eine 
Druckänderung auch beim Umschalten auf WW <=> HK.

> Meine LED blinkt nur noch wenn Nutzdaten fließen. Habe eine Automatische
> beatwortung der Pollings der Adress 0x21 eingebaut udn getestet. Nur
> dumm dass ich Meine Schaltung dabei geschossen habe.. Werde mir das noch
> mal ansehen müssen..

Evtl. ist auch nur die Diode zu warm geworden und abgeraucht. Ich habe 
da 3 parallel geschaltet um das Wäremeproblem zu lösen.

> Ansonsten wäre ein Schaltplan Deiner Entwickling ganz interessant..

Mal schaun, da muss ich noch aufräumen (Baustelle).

von Rudi (Gast)


Lesenswert?

@Ingo F.


Hast du die Möglichkeit auf dem internen Bus zu messen, also die 
Kommunikation zwischen den einzelnen Modulen und nicht am 
Klinkenstecker?

Ich habe noch 2 Schaltungen vom EI-Bus gefunden:

http://www.freebus.org/index.php/de/hardware-mainmenu-36/grundschaltung-mainmenu-26
http://www.freebus.org/index.php/de/signale-mainmenu-28

Sieht in etwa so aus was wir brauchen.

von ingoF (Gast)


Lesenswert?

Denke die Shaltung ist doch schon ganz gut. Die Schaltung war nicht das 
Problem. Hatte mich nur beim umlöten im Kabel vergriffen und deswegen 
lief nichts mehr.

Nur habe ich im Moment ein Problem mit Assembler. Mit AVRStudio und 
HAPSIM funktioniert die Simulation fehlerfrei. Aber auf der "echten" 
Platine wird seltsamerweise immer ein zusätzliches 0x00-Byte gesendet 
das eigentlich nie gesendet wird. Mit der älteren hex-Datei funktioniert 
alles und habe nur keinen Quelltext mehr. Bin gerade bei der Fehlersuche 
udn versuche die neue Version zurückzuentwickeln bis es wieder läuft.

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

@IngoF

Zum Schaltplan.

R16 geht an R3 und dann an Pin6 von IC3 (LM339 comparator).

von IngoF (Gast)


Lesenswert?

Hallo Rudi,

Die Antwortfunktion habe ich jetzt getestet. Habe einfach alle Polling 
von 0xA1 <break> mit 0x21 <Break> beantwortet und konnte in der RC30 den 
Busteilnehmer "Mischer 33" im Display sehen können.
Allerdings gefällt mir die Schaltung noch garnicht. Mein Transistor 
sperrt nicht richtig und zieht den Bus schon 1-2 Volt runter und der 
Transistor hat etwa 70°C und die Z-Diode 90°C wenn nciht gesendet wird. 
Irgendwie Schaltet der TRansistor schon teilweise bei 0,5 Volt durch. 
Habe auch eine Diode davor gesetzt um die Ansprechspannung zu 
reduzieren. Muss mir mal die Schaltung seperat aufbauen und durchtesten. 
Eigentlich müsste der Basiswiderstand richtig berechnet sein. aber 
irgendwie läuft da was schief.

Wenn der Transistor durchgeschaltet hat wird Busspannung wie gewünscht 
auf 10 Volt heruntergezogen.

Die Telegramme die ich sende werden über den Bus automatisch eingelesen. 
Kann dadurch erkennen dass größtenteils die Telegramme richtig 
durchgehen, aber ab und zu die Adresse verfälscht wird. Als ob 
irgendjemand dazwischen sendet.

Deine Mail scheint immer noch nicht zu funktionieren...

Gruß
Ingo

von Mathias K. (mathk)


Lesenswert?

> Die Antwortfunktion habe ich jetzt getestet. Habe einfach alle Polling
> von 0xA1 <break> mit 0x21 <Break> beantwortet und konnte in der RC30 den
> Busteilnehmer "Mischer 33" im Display sehen können.

Nicht schlecht!

> Allerdings gefällt mir die Schaltung noch garnicht. Mein Transistor
> sperrt nicht richtig und zieht den Bus schon 1-2 Volt runter und der
> Transistor hat etwa 70°C und die Z-Diode 90°C wenn nciht gesendet wird.

Die Temperaturprobleme hatte ich nur an der Diode (jetzt sind es 3). Ich 
bekomme demnächst eine 5W Diode die ich dort verbauen werde (die 
Schaltung mit den Mosfet).

> Die Telegramme die ich sende werden über den Bus automatisch eingelesen.
> Kann dadurch erkennen dass größtenteils die Telegramme richtig
> durchgehen, aber ab und zu die Adresse verfälscht wird. Als ob
> irgendjemand dazwischen sendet.

Das habe ich auch gesehen, siehe 
Beitrag "Re: Logamatic 2107 Schnittstelle". Ich bin mir nicht 
sicher ob die Sendeschaltung so richtig ist, denn auf der RC3X Platine 
kann ich kein Bauteil finden das annähernd 1.5W verträgt.


Der Bus vom Klinkenstecker (BC10) ist direkt mit dem internen Bus 
verbunden, also keine Schutzschaltung etc.. Die Schutzbeschaltung muss 
dann unbedingt mit in die externe Schaltung.

> Deine Mail scheint immer noch nicht zu funktionieren...

Doch, die funktioniert jetzt.

von IngoF (Gast)


Lesenswert?

Hallo Rudi,

das Problem mit der Sendeschaltung habe ich gelöst. War nur so blöd dass 
ich Emitter und Collector vertauscht hatte. Ein Wunder dass die 
Sendeschaltung überhaupt lief.
Die Z-Diode und Transistor werden jetzt wie erwartet garnicht mehr warm.

Wenn ich jetzt immer permanent die das Polling der Adress 33(0x21) mit 
0x21 <brk> beantwort erscheint auch die Adresse im RC30 Bus-Status.
Die Adresse erscheint nach dem ersten Polling welches etwa alle 20-30 
Sekunden widerholt wird. Sobald die erste Antwort kommt wird die 0x21 
auch wie die anderen Busteilnehmer mehrmals gepollt.

Die RC30 versucht dann widerholt ein Kommando ohne Polling-Bit an die 
0x21 zu schicken und erwartet vermutlich dass irgendwann die 0x21 auch 
irgendwann mal ein Pieps sagt. Sonst kann ich mir nicht erklären warum 
der wie bekloppt immer das selbe Telegramm an die 0x21 schickt.

Nur was mir nicht so ganz gefällt ist dass Byte UBA3/MC10 (0x08) oder 
von der BC10 (0x09) immer widerholt wird.

Vermute mal ganz ohne Oskar kommt man da nicht weiter. Irgendwie muss 
sich ja die Signalform der RC30 und meiner Sendeschaltung unterscheiden.

Jetzt wäre es mal ganz interessant von einem Service-Key-Besitzer zu 
wissen mit welcher Adresse sich der Service-Key anmeldet.

hier jetzt mal ein kurzer Mitschnitt vom Bus:
1
{--} 16:20:32 15.07.10: A1
2
{--} 16:20:32 15.07.10: 21 21
3
{--} 16:20:32 15.07.10: 00
4
{--} 16:20:32 15.07.10: 89
5
{--} 16:20:32 15.07.10: 09
6
{--} 16:20:32 15.07.10: 8B
7
{--} 16:20:32 15.07.10: 89
8
{--} 16:20:32 15.07.10: 09
9
{--} 16:20:32 15.07.10: 8C
10
{--} 16:20:32 15.07.10: 89
11
{--} 16:20:32 15.07.10: 09
12
{--} 16:20:32 15.07.10: 90
13
{1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A
14
{1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A
15
{1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A
16
{--} 16:20:32 15.07.10: 10
17
{BA} 16:20:32 15.07.10: 08 00 18 00 5A 02 C1 64 64 0A 10 E5 60 80 00 02 0C 02 72 00 84 0F 3D 48 00 C9 FF 03 00 BA
18
{--} 16:20:32 15.07.10: A1
19
{--} 16:20:32 15.07.10: 21 21
20
{--} 16:20:32 15.07.10: 89
21
{--} 16:20:32 15.07.10: 09
22
{--} 16:20:32 15.07.10: 8D
23
{--} 16:20:32 15.07.10: 89
24
{--} 16:20:32 15.07.10: 09
25
{--} 16:20:32 15.07.10: 8E
26
{--} 16:20:32 15.07.10: 89
27
{--} 16:20:32 15.07.10: 09
28
{--} 16:20:32 15.07.10: 90
29
{1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A
30
{1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A
31
{1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A
32
{--} 16:20:32 15.07.10: 10
33
{2F} 16:20:32 15.07.10: 08 00 18 00 5A 02 C3 64 64 0A 10 E5 60 80 00 02 0C 02 73 00 82 0F 3D 48 00 C9 FF 03 00 2F
34
{--} 16:20:32 15.07.10: A1
35
{--} 16:20:32 15.07.10: 21 21

Das erste Byte in Klammern ist meine errechnete CRC und das letzte Byte 
ist dann die übertragene CRC. Beim Polling gibt es ja keine CRC.

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

> Die RC30 versucht dann widerholt ein Kommando ohne Polling-Bit an die
> 0x21 zu schicken und erwartet vermutlich dass irgendwann die 0x21 auch
> irgendwann mal ein Pieps sagt. Sonst kann ich mir nicht erklären warum
> der wie bekloppt immer das selbe Telegramm an die 0x21 schickt.

> {1A} 16:20:32 15.07.10: 10 21 AC 00 00 00 00 1A

Ich geh mal davon aus, das die 0x10 den Befehl absetzt. Es gibt eine 
Nachricht die in etwa so aussieht. Dort ändert sich ab und zu nur ein 
Bit, frag mich jetzt nicht welche ... :-/

Von Mario kam weiter oben noch diese Nachricht:

> 21 ist der Absender MM10 (Pumpe und Mischer Heizkreis 2)
> Beispiel:
> 21 00 AB 00 05 00 CD 00 9C 01 10 F9 00
> Byte 4  : Vorlauf HK2 SOLL
> Byte 5+6: Vorlauf HK2 IST
> Byte 8  : Mischersteuerung

Hallo Mario, hast du noch ein paar Telegramme von Adresse 0x21 ???????


Mal schaun ;-)

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Anbei die Bilder der BC10. Vom Klinkenstecker gehen die Daten OHNE 
Schutz auf den Bus.

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Anbei noch das Datenblatt für die CPU von NEC 78F9116.

von IngoF (Gast)


Lesenswert?

Mathias K. schrieb:
> Das habe ich auch gesehen, siehe
> Beitrag "Re: Logamatic 2107 Schnittstelle".
Hallo Rudi,

das hatte ich ja damals auch an Deinen Oszillogrammen gesehen das dort 
manchmal ein Byte widerholt wurde.

> Ich bin mir nicht sicher ob die Sendeschaltung so richtig ist,
> denn auf der RC3X Platine kann ich kein Bauteil finden das
> annähernd 1.5W verträgt.

Sieht so aus als ob Buderus das egal ist. Die MC10 ist da etwas 
radikaler mit dem Bus. Der Transistor T1 hängt direkt am Bus und spielt 
"regelbarer Kurzschluß".

Wenn T2 durch TX-Pin=0 sperrt liegt die Basis von T1 über 4,7 kOhm auf 
+5V. Wenn mann mal 1 Volt für UBE abzieht fließen hier 0,85mA in die 
Basis bei einem hfe von 200 bis 450 müssten dann etwa 170 bis 390mA 
durch den armen Kerl gejagt werden. Laut Datenblatt liegt Ptot bei 
200mW.

Wenn man jetzt mal den schlimmsten Fall annimmt liegen kurzzeitig 3,9W 
an dem T1.

Da er aber wohl nur kurz angesteuert wird und längere Ruhepausen hat 
wird der wohl noch überleben ohne gleich zu "verdampfen".

Also bevor ich meinen Collector/Emitter vertauscher bemerkt habe wurde 
kein einziges Byte widerholt. Es kam nur mal vor dass manchmal ein Byte 
nicht richtig gesendet wurde.
Nach der Korrektur des Fehlers wurde permanent die 0x21 widerholt.
Bei Deinen Oszillogrammen wurde teilweise was widerholt.

Deswegen vermute ich dass man den Bus garnicht soooo stark belasten muss 
und auf 10 Volt herunterziehen muss. Werde das mal testen indem ich noch 
ein paar Dioden dazwischen hänge...

Gruß
Ingo

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

Achso.. der Transisitor ist ein BC847B. hier noch mal das Datenblatt:

von IngoF (Gast)


Lesenswert?

Habe es noch mal getestet und scheint wirklich so zu sein. Habe noch 
zwei 1N4148 dazwischen geschaltet und es lief ganz ohne irgendwelche 
Echos.

Bei meiner Version habe ich alse 4x1N4148 und eine 8,2Volt Z-Diode inkl. 
Transistor (im Moment BCP68). Wenn ich zwei 1N4148 weglasse kommen immer 
Echos.

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

Also etwa 12V ? Versuch doch mal die 12V zu schalten und nicht GND !?

von IngoF (Gast)


Lesenswert?

Rudi schrieb:
> Also etwa 12V ? Versuch doch mal die 12V zu schalten und nicht GND !?

Habe noch nicht nachmessen können wieviel Volt es wirklich sind. Müssten 
aber geschätzte 12 Volt sein.

Gegen 12 Volt kann ich nicht schalten weil ich nicht an der 
Service-Buchse hänge sondern parallel zur RC30 im Wohnzimmer. Vielleicht 
würde es ja auch mit drei Dioden laufen. Habe ich aber (noch) nicht 
getestet.

Das wäre vielleicht eine Erklärung warum der T1 nicht abraucht weil nur 
gegen 12 Volt geschaltet wird... Allerdings soll die RC30 doch den Pegel 
auch auf 10 Volt herunterziehen? Oder war da noch irgendein Offset am 
Oskar eingestellt?

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

> Das wäre vielleicht eine Erklärung warum der T1 nicht abraucht weil nur
> gegen 12 Volt geschaltet wird... Allerdings soll die RC30 doch den Pegel
> auch auf 10 Volt herunterziehen? Oder war da noch irgendein Offset am
> Oskar eingestellt?

Nein, da war kein Offset. Das Signal liegt bei 12V +-2.5V. Evtl. springt 
dein Komparator nicht mehr an und du siehst aus diesem Grund kein Echo 
bzw. dein eigenes Signal?

von IngoF (Gast)


Lesenswert?

Rudi schrieb:
> bzw. dein eigenes Signal?

Verdammt.. habe ich nicht dran gedacht.. Nur ohne Oskar werde ich das 
wohl nie feststellen können ob ich mein Telegramm nicht mehr sehe oder 
das Echo.
Der komperator liegt ja rechnerisch genau in dem Bereich...

Gruß
Ingo

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,


ich habe mal ein wenig mit meinem Master gespielt, der mir die Daten in 
quasi Realtime visualisieren soll. Anbei ein paar Bilder mit dem 
Flot-Renderer im Browser. Ganz nett das Teil, muss man ja mal sagen.


Grüße.

von Malte B. (hellraiser)


Lesenswert?

Hi Rudi,

Jepp das flot taugt schon was, hab das in meinem 
Stromzaehler-Visualisierungs-Projekt drin.

Habe das Hardwarelayout nochmal überarbeitet für den KM271 Clone.
Also den analogpart schön zusammengepfercht, kurze Leiterbahnen und ohne 
grosse Massefläche.
Dann den Xport mit Spannungsregler getrennt auf der anderen Seite.
RX/TX sind ueber Jumper verbunden, zum Test habe ich die beiden Pins 
erstmal getrennt.

Eben getestet und ich könnte kotzen.
Zunächst waren die angezeigten Temperaturen mit am Ethernet 
angeschlossenen xport "nur" um -3°C verfälscht.
"schön" dachte ich und bin ne weile neben dran gestanden.

Nach etwa einer Minute der Supergau:

* Kesseltemperatur von 58° auf 22° gefallen
* Warmwasser von 49° auf 16°
* Aussentemperatur von 22° auf 16° (die stimmt eh nicht immer, da das 
Sensorgehäuse manchmal "besonnt" wird

So langsam habe ich das gefühl als ob die 80-120 mA vom xport zuviel für 
die logamatic sind. Spannungseinbruch mit/ohne xport ist nur ca 50 mV.

An der Ethernet-Masseverbindung kann es nicht liegen (unshielded rj45 
connector)

Falls jemand noch eine Idee hat, her damit, ansonsten werde ich 
demnaechst viel Kaffee kochen und die verbindung zwischen xport und 
logamatic per optokoppler trennen und dem xport eine eigene 
spannungsversorgung verpassen.

Gruss, Malte

von Rudi (Gast)


Lesenswert?

Hallo,

> Jepp das flot taugt schon was, hab das in meinem
> Stromzaehler-Visualisierungs-Projekt drin.

Wie greifst du den Zähler ab ? Optisch ? Selbst gebaut ? Ich habe meinen 
CAN-Bus am Zähler vorbei gezogen, mir fehlt da eigentlich nur die 
richtige Optik.


> Falls jemand noch eine Idee hat, her damit, ansonsten werde ich
> demnaechst viel Kaffee kochen und die verbindung zwischen xport und
> logamatic per optokoppler trennen und dem xport eine eigene
> spannungsversorgung verpassen.

Hast du das schon probiert ? Was passiert wenn du einen 42 Ohm / 1W 
Widerstand, anstatt des X-Ports als Verbraucher benutzt ?

Optokoppler sind bei Heizungen immer eine gute Idee. In der KM271 
benutze ich den ILD213T für 38400 Baud.


Grüße.

von Malte B. (hellraiser)


Lesenswert?

Hi,

> Wie greifst du den Zähler ab ? Optisch ? Selbst gebaut ? Ich habe meinen
> CAN-Bus am Zähler vorbei gezogen, mir fehlt da eigentlich nur die
> richtige Optik.
Ich habe hinter die Abrechnungszaehler diese Hutschienenzaehler mit SO 
Impulsausgang montiert. Also digitale Impulszählung.
Rumgebastle mit Optokoppler zum Erfassen des "zählerrades" war mir zu 
blöd. vor allem weil ich mich auf die werte verlassen will die da 
gezaehlt werden ;)

> Hast du das schon probiert ? Was passiert wenn du einen 42 Ohm / 1W
> Widerstand, anstatt des X-Ports als Verbraucher benutzt ?
nein, probiert hab ichs noch nicht. Ich wollte heute noch probieren was 
passiert wenn ich dem xport ne externe spannungsversorgung gebe und nur 
GND, RX/TX zur logamatic verbinde.
Das mit dem Widerstand als Last probier ich dann gleich mit...
wenns dann immer noch nicht haut trenne ich das ganze galvanisch.

> Optokoppler sind bei Heizungen immer eine gute Idee. In der KM271
> benutze ich den ILD213T für 38400 Baud.
hab hier noch cny75, ltv 845 und ilq1 rumfliegen. einer davon wird wohl 
für die 2400 baud taugen.

Gruss, Malte

von IngoF (Gast)


Lesenswert?

Hallo,

habe inzwischen ein paar Omis die Handtaschen geklaut und mir inzwischen 
ein DigitalOszilloskop gekauft und werde mal sehen wass denn so meine 
Sendeschaltung mit dem Bus uberhäupt veranstaltet.

Malte Bayer schrieb:
>> Wie greifst du den Zähler ab ? Optisch ? Selbst gebaut ? Ich habe meinen
>> CAN-Bus am Zähler vorbei gezogen, mir fehlt da eigentlich nur die
>> richtige Optik.
> Ich habe hinter die Abrechnungszaehler diese Hutschienenzaehler mit SO
> Impulsausgang montiert. Also digitale Impulszählung.

@Rudi
hatte irgendwie im Hinterkopf dass Du schon Deinen Stromzähler in deine 
Kurven integriert hattest. Aber das war wohl der Gaszähler.
Wie hast Du die denn die Werte vom Gaszähler bekommen? Was 
selbstgebautes? Oder vom Gasversorger schon was eltronisches bekommen? 
Gibt es sowas denn in elektronisch?

Also bei Die Idee mit dem Stromzähler hinter dem Abrechnungszähler 
gefällt mir schon ganz gut....

@Malte
Die Umwandlung des SO-Impulsausgang in Zählerwerte hast Du dann bestimmt 
mit einer Eigenentwicklung realisiert, oder wie machst Du das?

Hatte auch mal überlegt den Stromversorger zu wechseln und mir einen 
eletktronischen Stromzähler einbauen zu lassen. Allerdings hätten dann 
die Mehrkosten für den elektronischen Zähler die Ersparnise vom Wechsel 
wieder aufgefressen. Die Werte würde man dan über Google bekommen. 
Allerdings war mir nicht so wohl dabei Google meine Stromzählerwerte zu 
überlassen.....

Gruß
Ingo

von Malte B. (hellraiser)


Lesenswert?

Hi Ingo,

naja, das device von mir zaehlt einfach auf (momentan 8) kanaelen die 
impulse.
ein daemon am server pollt diese zaehlerstaende alle 60 sek, beim pollen 
werden diese dann auf 0 zurueckgesetzt.

Nachher in der Auswertung sehe ich so relativ genau über den tag 
(woche/monat/jahr/whatever) den verbrauch als kurve.

Berechnung in "ca Watt" habe ich so realisiert:

#define FLUX_RESOLUTION><------>800<---><------>// SO Counter resolution
#define FLUX_LIVE_DELTA><------>60<----><------>// seconds interval for 
calculating the live value
#define FLUX_LIVE_FACTOR<------>(1000UL * 3600UL / (FLUX_LIVE_DELTA) / 
(FLUX_RESOLUTION))

Berechnung des relativen Last (über zb 60 sekunden gemessen) wäre dann:
P = 60_SEC_TICK_COUNT * FLUX_LIVE_FACTOR

Um den Zählerwert auszurechnen braucht man lediglich alle gezaehlten 
ticks durch die Resolution teilen.

Idr. haben die Zähler 800/1000/2000 Ticks pro KWh

Gruss, Malte

von Rudi (Gast)


Lesenswert?

@Ingo
> hatte irgendwie im Hinterkopf dass Du schon Deinen Stromzähler in deine
> Kurven integriert hattest. Aber das war wohl der Gaszähler.
> Wie hast Du die denn die Werte vom Gaszähler bekommen? Was
> selbstgebautes? Oder vom Gasversorger schon was eltronisches bekommen?
> Gibt es sowas denn in elektronisch?

Selbst gebaut. Die haben einen Magneten im Gehäuse und ich messe den 
über einen Hal-Sensor, also auch wieder Impulse pro Umdrehung.


@Malte

Wieviel hast du denn in einen Stromzähler investiert ? Ich habe den 
bisher billigsten (30€) hier gefunden:

http://www.energie-zaehler.com/epages/61422236.sf//de_DE/?ObjectPath=/Shops/61422236/Products/kwh-meter

Im Vergleich zu einem Selbstbau, ich bräuchte 4, noch im Preisrahmen.

von Johann Stark (Gast)


Lesenswert?

Hallo

da ich selber Entwickler bin und und solche auch unterstützen möchte, 
biete ich bei einer Bestellung der  oben genannten Zähler, mit Angabe 
"Logamatic 2107 Schnittstelle" im Bestelltext einen Rabat von 10%. Ich 
hoffe das diese Information nicht gegen die Forum-Regeln verstößt.

Grüße
JoS0

von IngoF (Gast)


Lesenswert?

Johann Stark schrieb:
> biete ich bei einer Bestellung der  oben genannten Zähler, mit Angabe
> "Logamatic 2107 Schnittstelle" im Bestelltext einen Rabat von 10%.

Das Gilt vermutlich nicht für diesen den Drehstromzähler, oder? 
http://www.energie-zaehler.com/epages/61422236.sf//de_DE/?ObjectPath=/Shops/61422236/Products/EEM34DLC

Rudi schrieb:
> Selbst gebaut. Die haben einen Magneten im Gehäuse und ich messe den
> über einen Hal-Sensor, also auch wieder Impulse pro Umdrehung.

Habe mich mal gerade Schlau gemacht und einen Reedkontakt genau für 
meinen Gaszähler gefunden:
http://www.pipersberg.de/Gaszahler/RF1-Impulsnehmer.pdf

Habe die gerade mal angemailt. Was soll ich da selber ein Reed-Relais 
reinbasteln wenn es schon was fertiges gibt. (Wenn der nicht zu teuer 
ist)



Habe inzwischen etwas an meiner Sendeschaltung herumgebastelt und 
versucht mein Signal soweit wie möglich an dem Sendesignal der anderen 
Busteilnehmer anzupassen. Seltsamerweise werden aber immer die Bytes 
widerholt. Na vielleicht wird die Sendeschaltung doch erst noch mal 
vertagt.

Gruß
Ingo

von IngoF (Gast)


Lesenswert?

IngoF schrieb:
> Das Gilt vermutlich nicht für diesen den Drehstromzähler, oder?
> http://www.energie-zaehler.com/epages/61422236.sf/...

Oder eben diese Version mit nur halben Stromverbrauch?
Das Gilt vermutlich nicht für diesen den Drehstromzähler, oder?
http://www.energie-zaehler.com/epages/61422236.sf/...

von IngoF (Gast)


Lesenswert?


von Johann Stark (Gast)


Lesenswert?

Hallo

die Schell Count Zähler sind im Moment nicht lieferbar, aber die Saia 
Burgess Zähler sind baugleich, bis auf den Wechselstrom/32 A der 2000 
Imp/kWh hat.
Die anderen haben alle 1000 Imp./kwh.

Aber grundsätzlich, wenn es um dieses Projekt geht bitte um Anfrage und 
ich sehe was ich tun kann. Wir sind mehr als nur ein Onlineshop.

Der zuletzt gennante Zähler ist ein Wechselstromzähler!

Grüße
J0S0

von Rudi (Gast)


Lesenswert?

@IngoF

> Habe mich mal gerade Schlau gemacht und einen Reedkontakt genau für
> meinen Gaszähler gefunden:
> http://www.pipersberg.de/Gaszahler/RF1-Impulsnehmer.pdf
> Habe die gerade mal angemailt. Was soll ich da selber ein Reed-Relais
> reinbasteln wenn es schon was fertiges gibt. (Wenn der nicht zu teuer
> ist)

Ich habe mir eine schmale Platine gebaut, mit einem digitalen HAL-Sensor 
und 2 passiven Bauteilen. Das geht relativ einfach, passt auch bei 
unterschiedlichen Zählern und läuft direkt mit 3V3. Mehr als 15€ würde 
ich für einen fertigen mit Gehäuse und OpenDrain-Ausgang nicht bezahlen.

> Habe inzwischen etwas an meiner Sendeschaltung herumgebastelt und
> versucht mein Signal soweit wie möglich an dem Sendesignal der anderen
> Busteilnehmer anzupassen. Seltsamerweise werden aber immer die Bytes
> widerholt. Na vielleicht wird die Sendeschaltung doch erst noch mal
> vertagt.

Das gleiche Problem habe ich hier auch ...

Ich schreib grad einen Parser für die Nachrichten in C um die Werte auf 
dem CAN-Bus zu haben. Anbei noch ein paar Erkenntnisse zu den 
Nachrichten (Vervollständigung erwünscht):
1
08 00 34 00 32 01 db 01 dc 21 00 00 03 00 01 b3 d2 00 0e a7 00 11
2
3
            W1 W2 W2 W3 W3 W4 ?? ?? ?? ?? W5 W5 W5 W6 W6 W6 ??
4
5
W1: WW soll (Tag/Nacht)
6
W2: WW Temperatur
7
W3: WW Temperatur
8
W4: Status
9
10
* bit
11
* 0  0: night, 1: day
12
* 1  ?
13
* 2  ?
14
* 3  heating
15
* 4  ?
16
* 5  1: normal operation ?
17
* 6  ?
18
* 7  ?
19
20
W5: WW Aufbereitungszeit
21
W6: unbekannter Zähler

von Malte B. (hellraiser)


Lesenswert?

Hi Rudi,

> Wieviel hast du denn in einen Stromzähler investiert ? Ich habe den
> bisher billigsten (30€) hier gefunden:
> 
http://www.energie-zaehler.com/epages/61422236.sf//de_DE/?ObjectPath=/Shops/61422236/Products/kwh-meter
>
> Im Vergleich zu einem Selbstbau, ich bräuchte 4, noch im Preisrahmen.

Bei mir waren es 8x 17€.
Allerdings wahrscheinlich nicht direkt mit dem von dir gefundenen Zähler 
vergleichbar:
Meine verbauten Zähler sind 10A Typen, 
http://www.top-messtechnik.com/jtlshop/index.php?a=475


Das Angebot von  Johann Stark für die 25A Version -10% finde ich auch 
interessant, wären dann +10€ für +15A ;)
Die Adresse werde ich mir auf jeden Fall merken für die nächste grössere 
Bestellung (Rechnungszahlung und grössere Produktpalette in diesem 
Bereich) :)

PS: um mal wieder komplett zum Thema zurück zu kommen:
Das Netzteil der Logamatic scheine ich nicht zu überlasten. Habe mal mit 
einem Widerstand anstatt 3.3vreg+xport gespielt -> alles scheint 
korrekt.
Entweder der Spannungsregler oder der xport ziehen mir die Masse hoch. 
Ich tippe wohl eher auf den Spannungsregler.

Also, externes Netzteil ist der nächste Test...


Gruss, Malte

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

@Malte Bayer

> PS: um mal wieder komplett zum Thema zurück zu kommen:
> Das Netzteil der Logamatic scheine ich nicht zu überlasten. Habe mal mit
> einem Widerstand anstatt 3.3vreg+xport gespielt -> alles scheint
> korrekt.
> Entweder der Spannungsregler oder der xport ziehen mir die Masse hoch.
> Ich tippe wohl eher auf den Spannungsregler.

Welchen Regler benutzt du ?

Anbei die Analog-Schaltung die ich aus den Bildern sehe. Die KL1 Nummern 
stimmen nicht mit deinen überein. Mein S1 ist der linke Kontakt auf der 
Oberseite und S2 auf der Unterseite usw..

von Rudi (Gast)


Lesenswert?

@Malte Bayer

Ich seh grad die ist identisch zu deiner Schaltung. Der analoge Teil ist 
also komplett unabhängig vom digitalen Teil. Du solltest die beiden 
Teile  auch unabhängig in Betrieb nehmen können.

von Ingo F. (ingof)


Lesenswert?

Rudi schrieb:
> Ich schreib grad einen Parser für die Nachrichten in C um die Werte auf
> dem CAN-Bus zu haben.

Wie willst Du denn die Werte im CAN Bus übertragen? Der Zeitstempel muss 
ja nicht mitgesendet werden. Reicht doch wenn man beim schreiben in die 
Datenbank die aktuelle Zeit nimmt.

In meiner SQL-Datenbank habe ich nur zwei Tabellen einmal mit Tiny und 
SmallInt. Darin wird nur der Zeitstempel, der Wert und eine ID 
gespeichert.
Die Umrechnung passiert im Moment noch in meinem Programm. Wollte mir 
eventuell noch eine Tabelle basteln in der ich dann zu jeder Werte-ID 
die Berechnung und weitere Informationen wie Bemerkungen u.s.w 
speichere.

Man könnte doch einfach in einem Telegramm mehrere Werte übermitteln die 
sich geändert haben. Ungeänderte Werte werden natürlich nur gesendet 
wenn sie sich nach einer Virtelstunde immer noch nicht geändert haben 
sollten.

Also Einfach im CAN-Telegramm als erstes die Werte-ID und dann den Wert.

Vielleicht könnte man ja eine gemeinsame Werte-ID-Tabelle erstellen.
Dann könnte man einfach in einer Tabelle die Werte sammeln und neue 
ergänzen wenn man neue Werte gefunden hat.

Hier mal ein Beispiel der ersten Daten deines Beispieltelegrammes:
1
ID  Quelle  Ziel  Telegrammtyp  Start  Bit  Bytes  Divisor  Linie  Bemerkung
2
01  08      00    34            4      0     1     1        1      SollTemperatur
3
02  08      00    34            5      0     2     10       1      Warmwasser Temperatur
4
03  08      00    34            7      0     2     10       1      Warmwasser Temperatur #2
5
04  08      00    34            9      1     1     0        2      Tag/Nachtbetrieb
6
05  08      00    34            9      4     1     0        2      Heizen
7
06  08      00    34            9      6     1     0        2      Betriebsart

Oder was haltet Ihr davon? Denke das ist eine relativ einfache 
Darstellungsform. Gut ohne viel Aufwand zu dokumentieren, oder?
Die Tabelle dürfte selbsterklärend sein und für so ziemlich aller Werte 
verwendbar sein.


@Rudi?
Also der Impulgeber für meine Gasuhr soll inkl. Versand 34 Euro kosten. 
Überlege ob ich mir den doch bestelle. Habe heute mal mit einem simplen 
Reed-Kontakt versucht irgendein ergebnis zu bekommen. Allerdings scheint 
das Magnetfeld dafür zu schwach zu sein? Was hast Du denn für einen 
Hall-Sensor genommen? Gibt ja massenhaft Type von 1€ bis 40€ mit 
verschiedenen Ausgängen.

von Rudi (Gast)


Lesenswert?

> Wie willst Du denn die Werte im CAN Bus übertragen? Der Zeitstempel muss
> ja nicht mitgesendet werden. Reicht doch wenn man beim schreiben in die
> Datenbank die aktuelle Zeit nimmt.

Die ID wird im CAN-Header übertragen. Im Payload steht die Zeit und der 
eigentliche Wert. Die Zeit ist mir eigentlich sehr wichtig. Falls 
Buskollisionen auftreten kommen die Nachrichten nicht direkt an, sondern 
zeitversetzt. Für diesen Fall werden die zu sendenden Daten im externen 
SRAM gehalten und später gesendet. Für den Gaszähler (Impulsgeber) z.B. 
wichtig, für Temperaturen nicht unbedingt nötig.

> Man könnte doch einfach in einem Telegramm mehrere Werte übermitteln die
> sich geändert haben. Ungeänderte Werte werden natürlich nur gesendet
> wenn sie sich nach einer Virtelstunde immer noch nicht geändert haben
> sollten.

Wenn du mehrere Werte überträgst, sendest du zwangsläufig auch Werte die 
sich nicht geändert haben. Du hast nur eine 24Bit ID und dann 8 Bytes 
Payload. Ich habe die ID etwas verkleinert und benutze die freien Bits 
als Kontrollbits. Dadurch kann ich die eigentlichen Daten, Befehle auf 
die Daten (Offset, Skalierung etc. für einen Temperatursensor mit einer 
bestimmten ID), einfache Befehle an eine CAN-Bus Modul verschicken und 
mir jede Nachricht optional bestätigen lassen (ACK).

Ich kann über den Bus die einzelnen Module Parametrisieren und mit einer 
neuen Firmware bespielen und ich kann alle Sensoren an so einem Modul 
parametrisieren.

> Also der Impulgeber für meine Gasuhr soll inkl. Versand 34 Euro kosten.
> Überlege ob ich mir den doch bestelle. Habe heute mal mit einem simplen
> Reed-Kontakt versucht irgendein ergebnis zu bekommen. Allerdings scheint
> das Magnetfeld dafür zu schwach zu sein? Was hast Du denn für einen
> Hall-Sensor genommen? Gibt ja massenhaft Type von 1€ bis 40€ mit
> verschiedenen Ausgängen.

34€ ist doch schon was ;-). Ich benutze den AN48820a. Ich kann dir in 
etwa 2 Wochen meinen alten Sensor geben. Ich habe mir neue Platinen 
gebaut, aber noch nicht bestückt.

> Oder was haltet Ihr davon? Denke das ist eine relativ einfache
> Darstellungsform. Gut ohne viel Aufwand zu dokumentieren, oder?
> Die Tabelle dürfte selbsterklärend sein und für so ziemlich aller Werte
> verwendbar sein.

Sieht doch gut aus. Was bedeutet Linie ? Divisor würde ich Skalierung 
nennen.

von IngoF (Gast)


Lesenswert?

Rudi schrieb:
> Wenn du mehrere Werte überträgst, sendest du zwangsläufig auch Werte die
> sich nicht geändert haben.

Nicht wie ich das meinte. wenn mann z.B. 6Byte Payload hätte könnte man 
zwei zweiByte Werte (Temperatur z.B.) übertragen mit der dazugehörigen 
ID senden.

Wenn sich zwei Werte geändert haben werden mehrere gesendet. Kann ja 
sein dass sich in einem Telegramm mehrere Werte geändert haben.

Aber wenn Du ja bei den Zeitstempel mitsendest wird es schon knapp mit 
den 8 Byte Payload.

Rudi schrieb:
> Ich kann dir in
> etwa 2 Wochen meinen alten Sensor geben. Ich habe mir neue Platinen
> gebaut, aber noch nicht bestückt.

musst mir dann mal sagen was Du dafür bekommst. Würde ich glatt 
zuschlagen.

Rudi schrieb:
> Sieht doch gut aus. Was bedeutet Linie ? Divisor würde ich Skalierung
> nennen.
Das ist die Verbindungsart zwischen den Punkten. Bei Temperaturen ändert 
sich ja die Temperatur mehr oder weniger gleichmaßig und ändert sich 
nicht Stufenförmig.

Bei gesetzten Werten wie die aktuelle Leistung oder Binären Werten 
ändert sich der Zustand ja Sprungartig. Also wird dort erst mal die 
Linie mit dem alten Wert gezeichnet und dann eine Linie nach oben oder 
unten.

Rudi schrieb:
> Du hast nur eine 24Bit ID

Nein, im Moment habe ich nur eine 8Bit-ID. (erste Spalte) Bisher gibt es 
ja nur knapp über 20 auswertbare Werte der Heizung. Könnte vielleicht 
auf die Dauer etwas zu klein sein wenn noch andere Sensoren/Aktoren 
dazukommen

Gruß
Ingo

von Gebhardt Karl (Gast)


Lesenswert?

Hallo

Soory für die "Zwischenrufe", Stromzähler und so interessieren mich 
auch.


Frage:

>Habe das Hardwarelayout nochmal überarbeitet für den KM271 Clone.

Ich hätte interesse für eine KM271 oder einen Clone.
Gibt es diesen irgendwo zu beziehen odern einen Plan  ?
(Der einigermassen zu dem Ergebnis führt)


Frage:  Hat das "interne" Protokoll etwas mit dem E-Bus zu tun  ?


Gruss Karl

von Malte B. (hellraiser)


Lesenswert?

Huhu...
Das zusammengefasste Zeug dazu ist hier:
http://wiki.neo-soft.org/index.php/Heizungsschnittstelle/Logamatic2107/K4

Die Platine "Rev. C" funktioniert soweit, wenn man den kompletten 
Spannungsregler- und XPORT Teil nicht bestückt.
RS232 funktioniert komischerweise.

Schaltplan auf der Wikipage ist an sich auch okay (auf dem basiert das 
layout)

Beziehen kann man das ding nicht (also von mir zumindest nicht)...

Gruss, Malte

von IngoF (Gast)


Lesenswert?

Rudi schrieb:
> Die Zeit ist mir eigentlich sehr wichtig. Falls
> Buskollisionen auftreten kommen die Nachrichten nicht direkt an, sondern
> zeitversetzt. Für diesen Fall werden die zu sendenden Daten im externen
> SRAM gehalten und später gesendet. Für den Gaszähler (Impulsgeber) z.B.
> wichtig, für Temperaturen nicht unbedingt nötig.

Also sooo lange wird es keine Buskollisionen geben, es sei denn der Bus 
wird mit langeren Firmwareuploads vollgepumpt.
Für den Gas-/Stromzähler wollte ich die "intelligenz" in den SO-Bus 
Controller hängen der über den CAN-Bus angebunden ist. Er soll die 
Impulse zählen die in einer Minute eingegangen sind und dann daraus die 
richtigen Werte Berechnen. Entweder aus den Impulsabständen und/oder der 
Impulsanzahl innerhalb einer Minute.

Aber ich kann erst sagen wenn ich richtige Signale vom Gas/Stromzähler 
bekomme ob das so geht.
Mein Gaszähler gibt nur alle 0,1m³ ein Impuls. Wenn ich allerdings die 
"Spiegelfläche" auf der letzten Nachkommastelle auswerte würde ich alle 
0,01m³ ein Impuls bekommen.

Wieviel Impulse hast Du denn pro m³ Gas?

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

> musst mir dann mal sagen was Du dafür bekommst. Würde ich glatt
> zuschlagen.

Die Versandkosten von 2€. Würde es dann als Großbrief verschicken, dann 
muss ich nicht die Kabelage ablöten.

> Für den Gas-/Stromzähler wollte ich die "intelligenz" in den SO-Bus
> Controller hängen der über den CAN-Bus angebunden ist. Er soll die
> Impulse zählen die in einer Minute eingegangen sind und dann daraus die
> richtigen Werte Berechnen. Entweder aus den Impulsabständen und/oder der
> Impulsanzahl innerhalb einer Minute.

Ich speicher z.Z. die Impulse pro Minute. Der Zähler ist relativ 
gemütlich, auch im Winter, und wenn ich mich recht erinnere hatte ich 
kaum Werte über 10 gesehen.

> Mein Gaszähler gibt nur alle 0,1m³ ein Impuls. Wenn ich allerdings die
> "Spiegelfläche" auf der letzten Nachkommastelle auswerte würde ich alle
> 0,01m³ ein Impuls bekommen.
>
> Wieviel Impulse hast Du denn pro m³ Gas?

Ich habe an dem Gaszähler alle 0.01m³ einen Impuls. Die Auflösung der 
mechanischen Anzeige beträgt 0.001m³.

von Malte B. (hellraiser)


Lesenswert?

@Rudi: So mache ich es auch, nur eben dass das ganze dann per Ethernet 
im Minutentakt gepollt wird.
Bei den Stromzaehlern ist es auch nicht viel anders: Grundlast auf der 
Phase wo der ganze Serverkram bei mir draufhängt sind auch gemütliche 
10-12 Impulse pro Minute (1k / KWh)...

Habe gerade eine andere Baustelle, Stromverbrauchsermittlung zentral an 
der Einspeisung. Die muss ich allerdings optisch machen, da dort 3x 150A 
Shunts mit extra Messwandler verbaut sind.
Zum glück habe ich am Messwandler 2 rote LEDs für Wirkleistung und 
Blindleistung, beide mit 333,33 Imp/KWh (was für ne krumme Zahl ;).
Die Erfassung mittels Phototransistor/100k Widerstand funktioniert 
problemlos.

Ein weiterer Zähler für PV Einspeisung hat 2 grüne LEDs, eine mit 1k Imp 
und eine mit 10k Imp.
Hierbei habe ich noch mit dem Wellenlängenbereich des Phototransistors 
zu kämpfen. grün liegt halt arg an der Grenze ;)
Laborversuch mit 600k Widerstand anstatt 100k hat schon brauchbare 
Ergebnisse geliefert, allerdings darf es dann so gut wie kein 
"Fremdlicht" geben :->

BTW: sollten wir diesen Thread hier mal mit einem Fortsetzungsthread 
beenden? für meine Begriffe ist hier mittlerweile ganz schön viel 
Lesestoff angesammelt...

Achja. Ich habe im Wiki den Ansatz mit dem "ServiceKey" Interface nur zu 
anfangs versucht zu dokumentieren, irgendwann bin ich bei dem Thema 
geistig ausgestiegen, wäre nett wenn sich jemand daran vergnügen könnte 
:)

Gruss, Malte

von Matthias (Gast)


Lesenswert?

@IngoF

Bzgl. Impulsmessung von Gasuhr. Habe bei mir einen Actaris G4 RF1 
verbaut. Ein normaler Reed-Kontakt tut. Allerdings keiner mit Gehäuse 
sondern ich musste das Glasrohr ganz hinten am Anschlag befestigen(bzw. 
hab vom Gehäuse den Deckel weg gemacht damit das Röhrchen direkt 
aufliegt). Es schaltet bei mir die vorletzte Ziffer wenn die 7 am 
Zählerfester sichtbar ist (die Mitte des Glasrörchens liegt bei mir also 
etwa zwischen der letzten und vorletzten Ziffer)
Nur zur Info...

Gruss Matthias

von Ingo F. (ingof)


Lesenswert?

Hallo Matthias,

Matthias schrieb:
> Habe bei mir einen Actaris G4 RF1 verbaut.

Ich habe das selbe Modell. Bei mir steht allerdings Schlumberger drauf. 
Der Zähler von Pipersberg hat auch das Schlumberglogo. Auf dem 
Impulsnehmer den ich kaufen wollte steht allerdings auch Actaris daruf. 
Scheint also alles das selbe zu sein.

Matthias schrieb:
> Ein normaler Reed-Kontakt tut.
Habe von Conrad den billigsten und kleinsten Reedkontakt genommen 
(503770). Der zieht bei 15-35 AW an. Vermutlich ist der dann zu 
unempfindlich oder ich habe nicht genau die Position genau erwischt. 
Hatte auf der letzen und vorletzten stelle eigentlich alle Positionen 
ausprobiert. Aber zwischen den Zahlen hatte ich es noch nicht versucht.

Laut dem gelinkten Impulsnehmer-PDF kann man gut sehen dass man das 
beste Ergebnis hat wenn man ganz hinten in der unteren Ecke den Kontakt 
anbringt.

Habe aber das selbe Problem wie Du. Eben dass der Magnet in der 
vorletzten Zahl eingebaut ist. Auf dem Anzeigefeld steht auch 0,1Imp/m³ 
Also wird man genauere Ergebnisse nur mit der optischen Abtastung der 
letzten Stelle bekommen.
Der Impulsnehmer gibt es für drei verschiedene Ziffern der Gasuhr. Also 
fü 1m³, 0,1m³ und 0,01m³. Laut Pipersberg funktioniert aber nur der 
Impulsnehmer der auch auf dem Anzeigefeld angegeben ist. Hatte es 
einfacher gefunden in alle drei Nachkommastellen einen Magnet einzubauen 
und man könnte sich aussuchen welche Genauigkeit man benötigt.

Meiner Meinung nach hätten die der letzten Stelle drei oder vier Magnete 
spendieren können dass mann alle 0,00333m³ oder 0,0025m³ einen Impuls 
bekommt.

Matthias schrieb:
> (bzw.
> hab vom Gehäuse den Deckel weg gemacht damit das Röhrchen direkt
> aufliegt)

Na dann will ich mal hoffen dass Du nicht den Deckel vom Gaszähler 
gemeint hast ;o)

Gruß
Ingo

von Matthias (Gast)


Lesenswert?

Hallo Ingo

das mit der Auflösung vom Zähler find ich auch doof, aber wenigstens ist 
überhaupt ein Magnet drin verbaut...
Ich hab auch ewig probiert bis der Reed-Kontakt ansprach. Versuch mal 
die heizung zu stoppen wenn Ziffer 2 auf der 7 steht und teste dann. 
Mein Anfangsfehler war das ich die Mitte des Kontakts (überlappende 
Zungen) auf der 2. Ziffer positioniert habe, der Kontakt schaltet aber 
nur rechts oder links davon (hatte beste Empfindlichkeit bei mir mit 
externen Magneten getestet zwecks Einbauposition)

Gruss Matthias

von IngoF (Gast)


Lesenswert?

Hallo Matthias,

ich werde mit den Reed-Kontakten nicht mehr herumexperimentieren. Habe 
jetzt eine gut funktionierende Lösung gefunden ;o)

Rudi schrieb:
> 34€ ist doch schon was ;-). Ich benutze den AN48820a. Ich kann dir in
> etwa 2 Wochen meinen alten Sensor geben.

Das Problem bei den Reed-Kontakten ist ja das das Magnedfeld durch den 
Kontakt muss damit der Kontakt schaltet. Habe auch bei meinen starken 
Pinwandmagneten nur ab und zu Kontakt wenn der Reed-Kontakt den Magnet 
direkt berührt, Am besten hat es am Rand des Magneten geklappt. Bei dem 
Hall-Sensor kann ich auch 15mm Platz lassen und ich bekomme noch einen 
guten Impuls.

Wenn dann werde ich noch mal mit einer Reflexlichtschranke auf die 6 in 
der letzten Ziffer versuchen.

Matthias schrieb:
> Ziffer 2 auf der 7 steht

Bei mir ist es bei der 6, das wird aber daran liegen dass mein Sensor 
fast an der Vorderkante liegt und nichtr wie Dir an der Hinterkante.

von Ingo F. (ingof)


Lesenswert?

Matthias schrieb:
> Ich hab auch ewig probiert bis der Reed-Kontakt ansprach.

Was hast Du denn für einen Reedkontakt genommen? Was hat der denn für 
eine Ansprechschwelle?

Bei Conrad habe ich noch einen gefunden der eine halb so große 
Ansprechschwelle hat (185026) und einen der sogar nur ein drittel davon 
braucht aber dann auch gleich über 8€ kostet (185067)

Wenn Du den letzten mit 5-10AW hast erklärt sich auch warum Du ein 
Signal bekommst und ich nicht... meiner hat 15-35AW (503770)

von Matthias (Gast)


Lesenswert?

Hallo Ingo,

die Daten von meinem Reed-Kontakt weiß ich nicht. Der war mal von Pollin 
und ziemlich billig, kann also eigentlich nichts extra Tolles gewesen 
sein.

Gruss Matthias

von Michael M. (michael_m44)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

dies ist mein erster Post in diesem Forum. Nachdem ich schon soviel hier 
gelernt habt, wird es Zeit mal was zurückzugeben...
Mit den hier verfügbaren Infos habe ich eine KM271 mit folgenden 
Eigenschaften nachgebaut, die jetzt auch sehr stabil läuft. Eagle 
Schaltplan (mit lbr, die das KM271 Modul mit Platinenstecker als Bauteil 
definiert. Achtung, da fehlt noch das mechanische Sicherungsloch!) und 
SW für AVR644P und AVR Studio anbei.
Der Schaltplan ist aktuell und funktioniert soweit klasse, das Board 
Layout muss noch angepasst werden (ich habe noch einiges am Prototypen 
hinterher "gepatched").

HW
KM271 Schnittstelle hängt optogekoppelt an einem AVR644P zur 
Vorverarbeitung der Daten. Ziel war es, die Schnittstelle zur Heizung so 
wenig wie möglich zu beeinflussen, daher Opto-Kopplung und eigenes 3,3V 
Netzteil (gibt es für ein paar Euro in der Bucht) für den Digitalteil. 
Die Z-Doide am FG Fühlereingang ist nicht bestückt, sonst geht die 
Temperatur nicht unter 80°. Passenden NTC als FG Fühler gibt es bei 
Farnell, alle Spezialbauteile sind im Schaltplan mit Farnell 
Bestellnummern versehen, da gibt es auch Datenblätter...
Digitalteil mit SD-Kartenanschluss (Speicherung der Daten als Backup, 
falls WLAN Verbindung ausfällt), FRAM (für non-volatile Daten, die man 
sehr oft schreiben muss, sehr schnell, keine Beschränkung der 
Schreibzyklen) und ConnectOne Nano WiReach WLAN Modul als Anbindung zum 
Netz. Alles über SPI verbunden (was für das Nano WiReach ein ganz 
schönes gefrickel ist...)

SW
Basierend auf FreeRTOS (ich weiss, es geht auch einfacher aber ich hatte 
den ganzen Setup schon von einem anderem Projekt). Von Interesse hier 
ist wohl insbesondere die Datei KM271Task.c, die den Treiber für das 
3964 Protokoll enthält.
Alle 10 Minuten werden die Temperaturdaten in eine Internet Datenbank 
gestellt (Langzeitspeicherung), Ereignisse werden im Minutentakt (falls 
nötig) in die Internetdatenbank gegeben. Die Auswertung erfolgt dann mit 
html/sql/php und Chart Tools auf Webseiten Basis (mach ich schon für 
andere Daten, siehe wetter.naehwerkstatt.de). Alle aktuellen Daten der 
Heizung sind im Webserver des Nano WiReach als Java-Script Variablen in 
Echtzeit verfügbar.

Danke für eure ganzen Infos. Ohne die hätte ich meine Heizung (übrigens 
eine 2105, nicht 2107) nicht "anzapfen" können.

Michael

von Thomas H. (tux85)


Lesenswert?

Hallo Michael,
das Layout schaut etwas strange aus aber wenns funktioniert ok. Du sagst 
du musstest an der Platine selbst noch etwas "patchen" hast du das im 
Layout jetzt schon berücksichtigt?
Ich denk ich werde mir so was ähnliches für meine Heizungssteuerung 
bauen, nur ohne die komplette Intelligenz auf dem Board. Gibts die 
Optokoppler nur bei Farnell?


Grüße

     Thomas

von Michael M. (michael_m44)


Lesenswert?

Hallo Thomas,

stimmt, das Layout ist strange, ich habe einfach den Autorouter von 
Eagle benutzt und was da rauskommt ist nicht wirklich super. Zudem ist 
die Platine darauf ausgelegt bei mir in der Küche produzierbar zu sein, 
nicht um sie einem professionellen Leiterplattenhersteller zu liefern. 
Ist halt ein Bastel-Hobby Projekt, der Weg ist das Ziel...
Wie gesagt, der Schaltplan ist aktuell und funktioniert so. Alle 
"Patches" sind da eingearbeitet, was dazu führt, das beim Board 
Verbindungen aufgelöst sind und einzelene Bauteile noch nicht plaziert 
sind.

Ich hatte mir alles bei Farnell zusammengesucht, daher weiss ich nicht, 
ob es genau diesen Optokoppler auch woanders gibt. Dieser Typ hat den 
Vorteil, dass er 3,3V und 5V beherrscht. Da könnte man aber auch zwei 
unterschiedliche Typen für RX und TX einsetzen.

Die SW ist natürlich auch nur ein Snapshot. Da geht es noch bei mir 
weiter. Allerdings funktinieren alle Blöcke schonmal sauber und das ist 
als Grundlage für andere besser als wenn das ein riesiges Sammelsurium 
wird.

MfG

Michael

von Thomas H. (tux85)


Lesenswert?

Ach und mir ist gerade noch etwas aufgefallen:
Der Schmitt Trigger hat doch 5V Supply. Wenn du da die 5V auf der TX 
Leitung hast gefällt das dem Logamatic Controller sicher nicht oder 
täusch ich mich da jetzt?


P.S: Vielleicht setz ich mich später mal hin und route das mal von Hand. 
;)

von Michael M. (michael_m44)


Lesenswert?

Hallo Thomas,

nein, das sollte passen. Die Logamatic-Seite ist die 5V Seite. Der 
Digitalteil ist die 3,3V Seite. Der Schmitt-Trigger dient auf der 
Logamatic Seite hauptsächlich dazu, das TX von der Logamatic in Richtung 
Digital nur mit einem logischen Eingang zu belasten und ihm das Treiben 
der Optokoppler LED abzunehmen (was so 7mA ausmacht).

MfG

Michael

von Rudi (Gast)


Lesenswert?

@Michael M.

Das WLAN-Modul ist ja mal nett. Ich sehe du benutzt den teuren FRAM von 
Ramtron. Ich bin davon ab und benutze jetzt die 23K256 von Microchip. 
Die sind um Längen billiger wenn 32K ausreichend sind.

von Michael M. (michael_m44)


Lesenswert?

Hallo Rudi,
danke für den Tipp! Werde ich mir mal anschauen!
Ach, hier hab ich ein paar Bilder hinterlegt:

http://wetter.naehwerkstatt.de/BilderHz/index.html

Wie gesagt, schaut bloss nicht auf das Board, Küchenware mit händischer 
Durchkontaktierung. Mach ich aber schon seit Jahren so und reicht für 
meine Zwecke und Einzelstücke...

MfG
Michael

von Michael M. (michael_m44)


Lesenswert?

Ein paar Echtzeitdaten meiner Heizung sind online:
http://wetter.naehwerkstatt.de/html/heizung.html
Die Datenbankauswertungen werden wohl noch einige Wochenenden brauchen 
;-)
Michael

von Malte B. (hellraiser)


Lesenswert?

Hi Michael,

das sieht ja schonmal top aus!
Werde da etwas geringfuegig anpassen und eine ethernetvariante draus 
basteln...

Vielen Dank für das Posting!

Gruss, Malte

von Kay F. (jaykay)


Angehängte Dateien:

Lesenswert?

Hallo,

um die Funktion meiner Heizung zuvisualisieren versuche ich gerade die 
ServiceKey Schnittstelle nach zubauen. Bei der Menge an Informationen 
kein leichtes unterfangen ;-)

Ich habe mir folgendes Atmega8 Entwicklungskit zugelegt, wie es Ingo F. 
wohl auch hat( http://www.olimex.com/dev/pdf/AVR/AVR-P28.pdf ). Bei 
diesem Board müssen noch die Pin's 2 & 3 vom Atmega mit dem MAX232 
verbunden werden für die UART Funktion, was für den SK perfekt ist, da 
ja nur der TX Pfad über den D-Sub Stecker geht. RX wird ja an den 3,5 
Klinkestecker des SK angeschlossen.

Im Thread Buderus Bedieneinheit RC30 wird von folgender Pinbelegung 
gesprochen:
>LINKS : GND
>RECHTS: SIGNALOFFSET +12V, +-2.5V Signalpegel (etwa)
>GND   : +12V

Wenn ich die Posts hier richtig verstanden habe, muss ich also "Rechts" 
und "GND" vom 3,5 Klinkestecker nehmen, um ein 2,5V Signalpegel für den 
RX Eingang vom Atmega8 zuhaben. Richtig?

Kann man "Links" und "GND" zur Spannungsversorgung des Atmegas 
verwenden?
Das Entwicklerkit hat am Pin 28 (PC5) eine LED, wenn ich mir die main.c 
von Rudi ansehe, liegt dort die LED auf dem PortC. Reicht es im 
Quelltext PORTB gegen PORTC und DDRB gegen DDRC auszutauschen? Muss ich 
sonst noch was im Quelltext anpassen (Taktfrequenz, etc.)? Oder beim 
Programmieren beachten (Bits die evtl. gesetzt werden müssen um den 
externen Quarz zuverwenden?).

Vielen Dank schon mal für diesen Thread und die vielen Informationen!

Gruß

Kay

von Ingo F. (ingof)


Angehängte Dateien:

Lesenswert?

Hallo Kay,

hatte ursprünglich auch ganz ohne Controller dazwischen ein Adapterkabel 
gebaut das die +12V und das Signal vom Klinkenstecker benötigt. Hatte 
nur +12V auf Pin 5 (GND) gelegt und das Signal auf RX vom 9 poligen 
Stecker.

Allerdings sollte man dann darauf Achten dass man nicht irgendwie eine 
Masseverbindung zwischen Heizung und der Schaltung bekommt.

Ich würde Dir empfehlen den RX-Pfad über einen Komperator machen der bei 
+12V schaltet. Das hätte den Vorteil dass Man die Schaltung auch am Bus 
betreiben kann und nicht unbedingt neben der Heizung bleiben muss. Den 
Schaltplan mit Dimensionierung für den RX-Pfad hatte ich ja schon 
gepostet

Also über die 12V kann ich keine Aussage über die Belastung machen. 
Denke aber dass es direkt auf die 12V der MC10/BC10 geht. Also wenn es 
aus irgendwelchen Gründen einen Kurzen geben sollte hat die MC10/BC10 
auch schön zu leiden.

Soweit ich weiss reicht es einfach nur den Die Bits in den Registern zu 
entsprechend zu setzen. Das tauschen müsste aber auch gehen...

Wenn überhaupt musst du die richtige Taktfrequenz eingeben und die 
Baudrate wird automatisch korrigiert.

Soweit ich weiß habe ich den externen Quartz genommen.

Habe mal das Hex-File und die Fuses aus dem AVR-Studio angehangen.

Im Moment ist es so Das an Port C5 die LED nur so lange leuchtet wie 
Nutzdaten empfangen werden. Beim Polling nicht.

Port C4 toggelt immer wenn die Schaltung eine Polling für 0x21 (Mischer) 
empfängt. Wenn kein Mischer vorhanden ist etwa alle 20-30 Sekunden. Mit 
vorhandenem Mischer etwa jede Sekunde.
Auf Port B1 wird immer eine Antwort auf das Polling für den Mischer 
gesendet...

Also am besten nichts an PortB1 anschließen...

Bei mir habe ich die Schaltung mit dem Komperator verwendet müsste aber 
eventuelle auch mit dem MAX232 gehen.

Gruß
Ingo

von Kay F. (jaykay)


Lesenswert?

Hallo Ingo,

vielen Dank für deine Antwort und die Hex Datei. Ich muß leider 
gestehen, das ich noch einige Fragen habe, bevor ich den Lötkolben 
wieder anheize ;-)


>Den Schaltplan mit Dimensionierung für den RX-Pfad hatte ich ja schon
gepostet

Ich habe leider nur die folgende Schaltung von dir gefunden (EMSlog.gif)
mit RX & TX Pfad wobei ich den Eindruck hatte, das der TX Pfad noch in 
der Entwicklung ist ;-) Hast du schon Daten senden können?
Ist die negative Spannung für den MAX232 notwendig? Bei meinem Olimex 
Board ist der MAX232 nur an die 5V angeschlossen.

Da ich primär die Daten aufzeichnen möchte, hatte ich überlegt ob nicht 
auch ein Optokoppler aus reicht. Dafür wäre aber interressant wie stark 
man den Bus belasten kanm. 10-15 mA bräuchte man schon....

>Also über die 12V kann ich keine Aussage über die Belastung machen.
>Denke aber dass es direkt auf die 12V der MC10/BC10 geht. Also wenn es
>aus irgendwelchen Gründen einen Kurzen geben sollte hat die MC10/BC10
>auch schön zu leiden.

Denke ein Kurzschluss sollte für den Bus kein Problem sein, da man den 
Klinkestecker am ServiceKey nicht ohne Kurzschluss einstecken kann ;-)
Nur was der Bus dauerhaft verträgt ist noch offen. Wobei bei auf der 
Buderus HP zum orginal ServiceKey steht "Spannungsversorgung über 
angeschlosse- nes Regelgerät" -> Betriebsspannung 5-24 VDC (über 
Regelgerät) -> Leisungsaufnahme 5 VA

Gruß

Kay

von IngoF (Gast)


Lesenswert?

Kay F. schrieb:
> Ich habe leider nur die folgende Schaltung von dir gefunden (EMSlog.gif)
> mit RX & TX Pfad wobei ich den Eindruck hatte, das der TX Pfad noch in
> der Entwicklung ist ;-) Hast du schon Daten senden können?

Sicher habe ich schon mal auf das Polling auf 0x21 geantwortet und es 
wurde auch in der RC30 angezeigt dass ein Mischer vorhanden ist. Aber 
der TX-Pfad ist wirklich noch in Bearbeitung. Wird jetzt wohl ganz 
anders aussehen. Mehr hatte ich noch nicht versucht.. Wollte erst mal 
eine vernünftige Sendeschaltung haben.

Kay F. schrieb:
> Denke ein Kurzschluss sollte für den Bus kein Problem sein, da man den
> Klinkestecker am ServiceKey nicht ohne Kurzschluss einstecken kann ;-)

Doch zumindest keinen Kurzschluss zwischen GND und 12 Volt.

Kay F. schrieb:
> "Spannungsversorgung über
> angeschlosse- nes Regelgerät" -> Betriebsspannung 5-24 VDC (über
> Regelgerät) -> Leisungsaufnahme 5 VA

ALso das habe ich noch nciht gelesen. Dann müsste man ja die 12 Volt 
auch mit 5VA belasten können. Mit den Gleichrichter müsstest Du den 
SPannungsteiler aus R1 und R2 noch mal anpassen. Bei der Schaltschwelle 
muss an R2 2,5Volt liegen.

Gruß
Ingo

Habe das noch nicht ausprobiert da ich parallel zur RC30 hänge und da 
keine +12 Volt habe

Kay F. schrieb:
> Ist die negative Spannung für den MAX232 notwendig? Bei meinem Olimex
> Board ist der MAX232 nur an die 5V angeschlossen.

Also die positive und negative Spannung am Maxim ist der Ausgang vom 
Spannungswandler. Hatte da mal einen OP angeschlossen der mindestens 5 
Volt Symetrische Speisung brauchte. War aber nur testweise und keine 
gute Idee. Der LM393 kommt aber mit 5V Single-Supply aus.

Die Berechnung der Widerstände war aber auf den Bus bezogen ohne den 
Brückengleichrichter bezogen.

von IngoF (Gast)


Lesenswert?

Ups.. da sind wohl ein paar Abschnitte in meiner Antwort etwas 
durcheinander geraten....

Gruß
Ingo

von Danny (Gast)


Lesenswert?

@Mario, Ingo:

Könntet ihr (bzw. einer von euch beiden ;-) ) eine Protokollbeschreibung 
für das EMS-Protokoll zur Verfügung stellen? Etwas Code in irgendeiner 
Programmiersprache würde mir auch völlig reichen. Bislang habe ich 
leider nur Rudis (nicht kompletten) Python-Code gefunden. Mario schrieb 
weiter oben schon mal, dass er die relevanten Daten alle schon decodiert 
hat.

Vielen Dank schonmal,

Danny

von Danny (Gast)


Lesenswert?

Danny schrieb:
> Könntet ihr (bzw. einer von euch beiden ;-) ) eine Protokollbeschreibung
> für das EMS-Protokoll zur Verfügung stellen? Etwas Code in irgendeiner
> Programmiersprache würde mir auch völlig reichen. Bislang habe ich
> leider nur Rudis (nicht kompletten) Python-Code gefunden. Mario schrieb
> weiter oben schon mal, dass er die relevanten Daten alle schon decodiert
> hat.

Inzwischen habe ich auch das Telegramm-XLS gefunden ;-)
Sieht ja schon mal sehr gut aus, allerdings sind dann ja später noch ein 
paar Telegramme, z.B. von MM10 hinzugekommen...wenn also noch was 
aktuelleres existiert, wäre es schön, wenn das jemand posten könnte :)

Danke,

Danny

von IngoF (Gast)


Lesenswert?

Ist gerade in Arbeit.....

von Ingo F. (ingof)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe jetzt mal meinen Quelltext durchwühlt und alles in einer 
Tabelle dokumentiert. Am besten alles vorherigen Dateien vergessen.

Wenn noch jemand Werte hat die nicht aufgeführt sind bitte hier posten 
oder zumailen. Werde dann die Datei aktualisieren.

Die PDF sollte iegentlich selbsterklärend sein.
Die ersten Spalte Index ist eigentlich für andere nicht soooo wichtig. 
Das ist in meinem Programm der Index in dem Auswahlfeld.
Die zweite Spalte Wert ist die Eindeutige ID für die Kurve in meiner 
SQL-Datenbank. Wie man sieht noch nicht so ganz aktualisiert.
Beim Divisor bedeutet eine 0 gleich keine Berechnung (Digitalwerte).
Bit ist das Bit in dem Wert. 0 bedeutet kein Digitalwert.

Gruß
Ingo

von Danny B. (maniac103)


Lesenswert?

Hi,

> ich habe jetzt mal meinen Quelltext durchwühlt und alles in einer
> Tabelle dokumentiert. Am besten alles vorherigen Dateien vergessen.
>
> Wenn noch jemand Werte hat die nicht aufgeführt sind bitte hier posten
> oder zumailen. Werde dann die Datei aktualisieren.

Spitze, genau das, was ich gesucht habe - das nenne ich Service :)
Ich werd dann mal die Reichelt-Bestellung für MAX232 usw. absetzen. 
Polling-Erkennung und Checksummen-Check soll dann in den Atmega8 mit 
rein, damit der sich nicht so langweilt ;-) Auswertung dann in 'nem 
Plug-Computer. Wenn ich fertig bin (kann noch ein Stück dauern ;-) ), 
poste ich Quellcode.

Vielen Dank nochmal,

Danny

von IngoF (Gast)


Lesenswert?

Danny Baumann schrieb:
>> Wenn noch jemand Werte hat die nicht aufgeführt sind bitte hier posten
>> oder zumailen. Werde dann die Datei aktualisieren.
>
> Spitze, genau das, was ich gesucht habe - das nenne ich Service :)

Das ist natürlich noch nicht alles. Falls jemand noch andere Werte hat 
gerne zumailen und werde dass dann aktualisieren...

Gruß
Ingo

von Danny B. (maniac103)


Lesenswert?

IngoF schrieb:
> Danny Baumann schrieb:
>>> Wenn noch jemand Werte hat die nicht aufgeführt sind bitte hier posten
>>> oder zumailen. Werde dann die Datei aktualisieren.
>>
>> Spitze, genau das, was ich gesucht habe - das nenne ich Service :)
>
> Das ist natürlich noch nicht alles. Falls jemand noch andere Werte hat
> gerne zumailen und werde dass dann aktualisieren...

Ich hab mal ein paar Fragen dazu ;-)

- Deine Tabelle listet die Telegramme '10 00 3A' und '10 00 3D'. Hast du 
die bei dir schon mal gesehen oder wo kommt diese Information her? Ich 
sehe die nämlich bei meiner Heizung nicht, und ich habe hier im Thread 
auch keinen Verweis darauf gefunden...leider habe ich die gedämpfte 
Außentemperatur auch noch in keinem anderen Telegramm gefunden.
- Byte 10 und 11 von '08 00 18' scheinen vertauscht zu sein

Und noch als Info:
Ich möchte wetten, dass die Bytes 9, 10, 11 und 15 in '10 00 3E' und '10 
00 48' irgendwelche Solltemperaturen sind (HK1/Wasser/Kessel/HK2?) Im 
Tagbetrieb habe ich da die Werte 39/52/65/32 bzw. 26/33/40/27. Im 
Nachtbetrieb ist es 5/5/19/5 bzw. 5/5/7/5. Die Kombination 27/5 (d.h. 10 
00 48, Byte 16) ist mit Sicherheit Soll HK2, weil das auch in '21 00 AB' 
vom Mischer kommt.
Das ganze muss ich mal noch genauer prüfen.

Danny

von Ingo F. (ingof)


Angehängte Dateien:

Lesenswert?

Hallo Danny,

Also die gedämpfte Außentemperatur habe ich igrendwann mal 
herausgefunden. Einige Telegramme kommen relativ selten und muss schon 
ziemlich lange warten.

Das Telegramm ist in den Ergänzungen von Matthias zu meiner früheren 
Excel-Tabelle. [[Beitrag "Re: Logamatic 2107 Schnittstelle"]]

Ist ziemlich weit oben aufgeführt. Er hatte allerdings das erste Byte 
nicht mitgeloggt. Ist ziemlich oben in der Tabelle.

Dort ist auch das Telegramm 10 00 06 aufgeführt mit den der aktuellen 
Zeitinformation. Es gibt noch ein Byte was dort in diesem Telegramm 
nicht aufgeführt ist. Das Byte ist der Wochentag *0=Montag* bis 
*6=Sonntag*

Teilweise hatte ich auch Werte die immer doppelt vorkamen und dann nur 
eine in meinem Quellcode verwendet. Kann sein dass bei einem anderen 
Heizungsausbau dort andere Werte angezeigt werden.

Beim Flammenstrom ist das z.B. auch so es werden zweimal die selben 
Werte hintereinander im Telegramm gesendet. Vielleicht gibt es ja 
irgendwelche Heizungen die zwei Brenner haben und dann werden zwei 
verschiedene Werte angezeigt.

Noch mal was zum generellen Telegrammaufbau:

1. Byte: Absenderadresse
2. Byte: Zieladresse
3. Byte: Telegrammart
4. bis
(n-2). Byte: Daten
(n-1). Byte: CRC Prüfsumme
(n). Byte: Break (10 Bit lange "0")

Die Quell und Zieladresse sind 7 Bit lang.
Wenn bei der Zieladresse im Telegramm das Bit7 (8te Bit) gesetzt ist 
erwartet der Absender eine Antwort auf dieses Telegramm.

Sonst gibt es nur noch das Pollingtelegramm. das nur aus einem Byte mit 
folgendem BREAK besteht. Dabei ist immer das Bit 8 gesetzt.

Auf das Polling muss in bestimmter Zeit reagiert werden. Bei mir sendet 
die RC30 als erstes auf das Polling(0x90) erst mal seine Adresse (0x10) 
und sieht dann nach ob es gerade irgendwelche Daten zum senden hat und 
sendet dann das Break oder eben die Daten mit Prüfsumme und dann zum 
Abschluss das Break.

Wer das Polling einmal bekommen hat kann so wie es aussieht soviel 
Telegramme schicken wie er will. Erst duch eine Antwort ohne Daten 
signalisiert er dass er nichts mehr zu senden hat.

Wie anfangs vermutet wurde senden die Busteilnehmer nicht mit 
15/10Volt auf den Bus. Sondern belasten den Bus nur mit etwa 40mA. Das 
macht eine Pegeländerung von 0,5 bis 1V. Jedes Empfangene Byte wird vom 
Busmaster wiederholt und es kann kontrolliert werden ob die Daten 
richtig verstanden wurden.

Wenn man den Bus zu stark belastet (Einbruch auf knapp über 7 Volt 
(180mA??) sendet der Busmaster noch zusätzlich nach dem Break ein 0xFE. 
Vermute mal dass eine generelle Fehlermeldung ist. Vielleicht ist das 
auch eine Bestätigung dass die Prüfsumme vom Busmaster als fehlerhaft 
empfunden wurde.

Ein Timeout das Rudi auf seinem Bus festgestellt hat konnte ich bisher 
kein einziges mal auf meinem Bus feststelle. Oder vielleicht meinte er 
das 0xFE Byte. Das bei mir bisher nur aufgetreten ist wenn ich den Bus 
gequält habe. Wäre mal abzuwarten bis ich mal testweise Telegramme mit 
fehlerhafter Prüfsumme auf den Bus gesendet habe. Werde Vermutlich eine 
Konstantstromquelle  aus einem 08/15-Transistor und einem 
Emitterwiderstand von 82 oder 100 Ohm parallel zum Bus anklemmen. Das 
dürfte eine geschätze Belastung von 40-45 mA geben.

Habe mal ein Screenshot von meinem DSO angehangen. Dort kann man gut das 
Sendesignal mit Echo erkennen. Die RC30 lässt sich bei diesm Telegramm 
100ms Zeit bis es die Daten sendet. Das kann man ganz gut am ersten Bild 
sehen. Beide Bilder stammen aus dem selben Oszillogramm. Oben ist das 
ganze Signal blau hinterlegt. Der schwarze Bereich ist darunter 
vergrößert dargestellt.

Gruß
Ingo

Edit: falls sich jemand fragt was die rote Linie ist.... Das ist die 
zweite Port-LED aus meiner letzten geposteten HEX-Datei für das 
Experimentierboard. Die LED fängt nach dem zweiten Byte an zu leuchten 
und erlischt zwei Bytes nach dem Break.

von Ingo F. (ingof)


Angehängte Dateien:

Lesenswert?

Habe noch ein Sceenshot mit einem von der RC30 gesendeten Byte 
gefunden....

Wie man sieht ist die Pegeländerung zwischen High und Low nur 360mV. Bei 
meiner Sendeschaltung wurde das Signal aber erst mit etwa 35mA Last 
verstanden das war irgendwas zwischen 0,5 und 1,0V.

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

@Ingo:

> Sonst gibt es nur noch das Pollingtelegramm. das nur aus einem Byte mit
> folgendem BREAK besteht. Dabei ist immer das Bit 8 gesetzt.

Bei mir wird bei der 0x89 z.B. kein Break gesendet. Ich hatte damals 
extra mit dem Oszi. danach gesucht. Aus diesem Grund habe ich oft 
Pollingtelegramme wie 0x89 0x90 die natürlich so nicht stimmen und ein 
Timeout eingebaut.

von IngoF (Gast)


Lesenswert?

Ach stimmt... kann mich noch schwach dran erinnern... Hattest ja mal 
dieses Log mit den ganzen FF's. Allerdings habe ich bei mir noch kein 
einziges Polling/Telegramm gefunden dass ohne Break gesendet wurde.

Also nehme ich mal an dass das nicht vorgesehen ist. Vielleicht ein 
Softwarefehler oder Übertragungsfehler.

Oder ich habe einfach nicht gründlich gesucht.. Will das ja auch nicht 
ausschließen...

Wie sieht denn Dein EMS-Bus aus? Bei mir liegt das Kabel alleine in 
einem Extra Rohr zum Wohnzimmer und ist ein ganz normales 08/15 
ungeschirmtes etwa 0,7mm² Durchmesser. Bis auf meine mitlauschende 
Schaltung direkt an der RC30 habe ich nichts angeschlossen. Aber die 
0x89 oder 0x90 werdem ja vom Busmaster geschickt und könnten dann ja 
nicht verschluckt werden, oder?

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

> Wie sieht denn Dein EMS-Bus aus?

Alles direkt in der Heizung bis auf den Logger (~50cm ungeschirmt an der 
Klinke).

> Aber die
> 0x89 oder 0x90 werdem ja vom Busmaster geschickt und könnten dann ja
> nicht verschluckt werden, oder?

Nach der 0x89 kommt einfach nichts. Es ist kein sporadischer Timeout 
sondern immer auf einer Adresse. Die BC10 (Addr. 0x09) scheint da nicht 
zu antworten. Evtl. weil sie schon angemeldet ist. Man kann hier nur 
Vermutungen anstellen.

von Danny B. (maniac103)


Lesenswert?

Hi,

> Also die gedämpfte Außentemperatur habe ich igrendwann mal
> herausgefunden. Einige Telegramme kommen relativ selten und muss schon
> ziemlich lange warten.

Hab sie inzwischen gefunden ;-)
'0x10 0x00 0xa3 0x00 0x0d 0x11 0x01'
Byte 5 ist die gedämpfte Außentemperatur
Byte 6 + 7 sind mit Sicherheit irgendwelche Flags (beim Wechsel 
Tag->Nacht gehen die auf 0x00 0x00)

Und noch ein paar mehr Infos:
'0x10 0x00 0x3e 0x00 0x04 0x02 0x28 0x00 0xd4 0x00 0x00 0x27 0x34 0x41 
0x00 0x00 0x00 0x11 0x22'
Byte 7 ist die Raum-Solltemperatur (durch 2 dividieren)
Byte 8 + 9 sind die Raum-Isttemperatur (durch 10 dividieren)
Bytes 12 - 14 sind die Heizkurve für HK1 (Byte 12 = Solltemp. bei 10°C, 
Byte 13 dito für 0°C, Byte 14 dito für -10°C
Byte 18 sind irgendwelche Flags, wahrscheinlich Pumpe HK1
Byte 19 ist die Solltemperatur Vorlauf HK1

'0x10 0x00 0x48 0x00 0x04 0x02 0x28 0x00 0xd4 0x00 0x00 0x1a 0x21 0x28 
0x00 0x00 0x00 0x11 0x17'
ist exakt das gleiche für HK2

Der einzige Wert, der mir jetzt noch fehlt, ist der Servicecode ;-)

> Dort ist auch das Telegramm 10 00 06 aufgeführt mit den der aktuellen
> Zeitinformation. Es gibt noch ein Byte was dort in diesem Telegramm
> nicht aufgeführt ist. Das Byte ist der Wochentag *0=Montag* bis
> *6=Sonntag*

Ist das Byte 11? Sieht zumindest so aus...

> Wie anfangs vermutet wurde senden die Busteilnehmer nicht mit
> 15/10Volt auf den Bus. Sondern belasten den Bus nur mit etwa 40mA. Das
> macht eine Pegeländerung von 0,5 bis 1V. Jedes Empfangene Byte wird vom
> Busmaster wiederholt und es kann kontrolliert werden ob die Daten
> richtig verstanden wurden.

Sicher, dass das nur über die Belastung gemacht wird? Meinen 
EMS-auf-UART-Konverter (basierend auf deiner Schaltung) betreibe ich 
bus-powered, und der zieht um die 30mA. Das scheint den Bus aber nicht 
zu stören, d.h. die Busteilnehmer detektieren nicht den Spannungslevel, 
sondern Differenzen?

Danny

von Danny B. (maniac103)


Lesenswert?

Danny Baumann schrieb:
> Der einzige Wert, der mir jetzt noch fehlt, ist der Servicecode ;-)

... und der steht in '08 00 18' an Stelle 23 und 24 (z.B. 0x30 0x59 = 
'0Y').

von Ingo F. (ingof)


Lesenswert?

Danny Baumann schrieb:
> Und noch ein paar mehr Infos:
> '0x10 0x00 0x3e 0x00 0x04 0x02 0x28 0x00 0xd4 0x00 0x00 0x27 0x34 0x41
> 0x00 0x00 0x00 0x11 0x22'
> Byte 7 ist die Raum-Solltemperatur (durch 2 dividieren)
> Byte 8 + 9 sind die Raum-Isttemperatur (durch 10 dividieren)
> Bytes 12 - 14 sind die Heizkurve für HK1 (Byte 12 = Solltemp. bei 10°C,
> Byte 13 dito für 0°C, Byte 14 dito für -10°C
> Byte 18 sind irgendwelche Flags, wahrscheinlich Pumpe HK1
> Byte 19 ist die Solltemperatur Vorlauf HK1

Ups.. die habe ich im Quelltext wohl übersehen... Die werden bei mir 
eigentlich auch mitgeloggt. Nur die -10/0/10°C Werte sind mir neu.

Danny Baumann schrieb:
> Ist das Byte 11? Sieht zumindest so aus...

Wird wohl so sein. ist das einzige Byte was in der Ergänztung von 
Matthias nicht aufgeführt wurde bei dem Telegramm....

Danny Baumann schrieb:
>> Also die gedämpfte Außentemperatur habe ich igrendwann mal
>> herausgefunden. Einige Telegramme kommen relativ selten und muss schon
>> ziemlich lange warten.
>
> Hab sie inzwischen gefunden ;-)

Ups.. war mir auch sicher dass ich die dokumentiert hatte... Hatte das 
von Dir auch falsch verstanden.

Danny Baumann schrieb:
> Sicher, dass das nur über die Belastung gemacht wird?

Keine Ahnung wie das in der RC30 gemacht wird. Aber wenn ich das Signal 
über eine 40mA Stromsenke erzeugt habe sah das Signal genauso wie aus 
dern RC30 aus, nur dass es etwas mehr Amplitude hat.

Deine Schaltung belastet den Buss ja gleichmßig und bewirkt daher keine 
Spannungsschwankungen. Hast auch garantiert einen entsprechenden 
Bufferkondensator eingebaut, oder?

Danny Baumann schrieb:
> Das scheint den Bus aber nicht
> zu stören, d.h. die Busteilnehmer detektieren nicht den Spannungslevel,
> sondern Differenzen?

das meinte ich ja damit.. vielleicht auch nur ungünstig von mir 
ausgedrückt. Duch diese Belastung habe ich die Spannungsschwankungen 
erreicht...

von Danny B. (maniac103)


Lesenswert?

Ingo F. schrieb:
> Ups.. die habe ich im Quelltext wohl übersehen... Die werden bei mir
> eigentlich auch mitgeloggt. Nur die -10/0/10°C Werte sind mir neu.

Die -10/0/10 ist das, was RC30 bei mir zu den entsprechenden Werten 
anzeigt. Es sagt sowas wie
    39  52  65
    10 /  0 /-10
  HK1

(das ganze im Servicemenü -> Heizkennlinie)

> Deine Schaltung belastet den Buss ja gleichmßig und bewirkt daher keine
> Spannungsschwankungen. Hast auch garantiert einen entsprechenden
> Bufferkondensator eingebaut, oder?

Ich hab 10µF eingebaut, ich bin mir aber nicht sicher, ob das 
"entsprechend" ist. Für 400mV Spannungshub für die Dauer von ein paar ms 
sollte es evtl. reichen ;-)

Danny

von IngoF (Gast)


Lesenswert?

Na ich meinte ja damit es eine gleichmäßige Belastung ist und keine 
Spannungsschwankungen hervorruft... Für die Sendeschaltung soll ja 
gerade nicht den Strom aus dem Kondensator saugen.. Das wäre dann ja 
Sinnlos..

von Danny B. (maniac103)


Lesenswert?

IngoF schrieb:
> Na ich meinte ja damit es eine gleichmäßige Belastung ist und keine
> Spannungsschwankungen hervorruft... Für die Sendeschaltung soll ja
> gerade nicht den Strom aus dem Kondensator saugen.. Das wäre dann ja
> Sinnlos..

Ähm, ich habe bei mir keine Sendeschaltung verbaut...nur Atmega8 + 
MAX232 + OPV für den RX-Pfad. Stromversorgung via 78L05.

Senden war mir dann doch zu heikel ;-)

von IngoF (Gast)


Lesenswert?

Danny Baumann schrieb:
> Hab sie inzwischen gefunden ;-)
> '0x10 0x00 0xa3 0x00 0x0d 0x11 0x01'

Ups.. hatte ich dokumentiert.. Allerdings hatte ich einen Zahlendreher 
und habe 3A statt A3 geschrieben. So wie es aussieht sind wohl alle 
meine Byteangaben einen zu hoch.. Muss das noch mal nachsehen...

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

Danny Baumann schrieb:
> Senden war mir dann doch zu heikel ;-)

Also bisher habe ich bis auf eine Simple Polling-Antwort auch noch 
nichts gesendet. Wusste ja nicht dass das Echo sein muss und kein Fehler 
ist.

Werde mich da mal in der nächsten Zeit ein wenig dran versuchen wenn ich 
die neue Software mit CAN fertig habe.

Habe mal meine Tabelle aktualisiert und angehangen. Hatte bei 0 
angefangen zu zählen und die beiden Framing-Bytes die der Atmega einfügt 
auch mitgezählt. Dadur hatte ich überall einen zuviel.

Das 3A Telegramm war das A3 Telegramm ;o)

Das 11.Byte war also richtig mit dem Wochentag. Den Service-Code habe 
ich auch bei mir gefunden

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

Die Versionen der Module wäre mal nicht schlecht. Evlt. sind wir genug 
und können die Nachrichten vergleichen ? Anbei nochmal meine Versionen. 
Es lohnt sich nur wenn die Versionen unterschiedlich sind:


UBA3/MC10 (Universeller Brennerautomat/Mastercontroller) - 8 - V3.02
BC10 (Basiscontroller) - 9 - V2.02
RC30 (Raumcontroller) - 16 - V2.08

Version 3
KIM (Kesselidentifikationsmodul) 1051

von Danny B. (maniac103)


Lesenswert?

Ich habe

UBA3/MC10 - 2.05
BC10 - 2.00
RC30 - 2.05
Version 9 / KIM-Nummer 1006

Rudis Anlage ist offensichtlich neuer als meine (Ende 2004) ;-)

von IngoF (Gast)


Lesenswert?

Ich habe

UBA3/MC10 - 2.03
BC10 - 2.00
RC30 - 2.05
Version 12 / KIM-Nummer 1003

Danny Baumann schrieb:
> Rudis Anlage ist offensichtlich neuer als meine (Ende 2004) ;-)
Meine kommt ja dann fast aus der Steinzeit ;o)

von Andreas F. (andyfaq)


Lesenswert?

Hallo,

ich lese aus Interesse etwas mit und da ich eine nun eine MC10, BC10 und 
RC35 erworben habe, um meine alte Steuerung zu ersetzen, bin ich sehr 
gespannt, wie sich das hier entwickelt.

Mir ist noch nicht klar, welche Schnittstellenhardware geeignet ist aber 
ich verfolge den Thread weiter. Bisher habe ich nur einige Erfahrungen 
mit AVR-NET-IO und dem AVR Webmodul von Radig.

Schön wäre es, wenn ich die Daten nicht nur lesen (was schon ein 
Fortschritt wäre), sondern auch senden könnte. Ich nutze die Software 
IP-Symcon zur Hausautomation.

Tolle Arbeit Jungs. Danke

von Rudi (Gast)


Lesenswert?

Ihr könnt ja mal schauen ob die Werte stimmen. Index 4 in den Typ 0x02 
Nachrichten ist wohl die Identifikation der Module.

UBA3/MC10 (Universeller Brennerautomat/Mastercontroller) - 8 - V3.02
1
08 10 02 00 40 03 02 3d
2
               VH VL
3
VH VL - Version

BC10 (Basiscontroller) - 9 - V2.02
1
09 10 02 00 44 02 02 6f
2
               VH VL
3
4
VH VL - Version

RC30 (Raumcontroller) - 16 - V2.08
1
10 00 02 00 43 02 08 5d
2
               VH VL
3
4
VH VL - Version

Version 3
KIM (Kesselidentifikationsmodul) 1051
1
08 10 04 00 04 1b 03 40 18 19 30 00 00 69 6b 0c 5d
2
            KH KL VV
3
4
KH KL - KIM
5
VV    - Version

von Karl M. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

habe mir im Mai eine Buderus GB162-25 T40S zugelegt mit:

UBA3.5 - 3.06
RC 35  - 1.11
KIM 1076

und möchte natürlich auch den EMS-Bus anzapfen - zum Lesen.

Deshalb verfolge ich Euren Thread schon seit einigen Monaten, ist aber 
nicht einfacher für mich geworden :-*).

Was das Bus-Interface betrifft, geht es mir ähnlich wie meinem 
Vorredner/Schreiber. Man/ich weiss eigentlich nie so genau, was der 
neueste Stand ist. Versteht das bitte nicht als Kritik! Ich denke nur, 
dass es hier eine Vielzahl von stillen Mitlesern gibt, denen es ähnlich 
geht. Und ich finde es schade, dass Eure tollen Erkenntnisse im "Nebel" 
des Threads unterzugehen drohen.

Deshalb meine Bitte an Euch: Alle ein bis zwei Monate Eure neuesten 
Ergebnisse als Schaltplan, Code, etc. anhängen. Ja, ich weiss, es ist 
zusätzliche Arbeit, aber nach meinem Geschmack würde sich der Überblick 
über den Thread deutlich erhöhen.

In der Hoffnung, keine Fehlbitte geäussert zu haben, bin ich auf die 
weiteren Erkenntnisse gespannt - und hoffe in nicht all zu ferner 
Zukunft mit meinen eigenen Ergebnissen weiteres Licht ins Dunkel des 
EMS-Bus zu bringen ;-).

---

Eigentlich gehört es vom Thema nicht hierher, aber weiter oben war schon 
mal vom Auslesen des Gaszählerstandes die Rede. Deshalb hier mal meine 
eigenen Erfahrungen, vielleicht interessiert es jemanden.

Habe hier einen Elster/Kromschröder Gaszähler BK4. Der hat in der 
letzten Zählerrolle (1 Ltr.) einen Magneten bei der Ziffer 9. Also kann 
man die 0,01 cbm (10 Ltr.) zuverlässig bestimen. Als Reedkontakt habe 
ich bei Frau R. einen MK 1471B um 2,55 Euronen bestellt. Der passt prima 
in ein 3cm-Stück Schutzhülle für DIL-ICs. Darum 3 Lagen Panzerband 
gewickelt und das Sandwich passt haargenau in die Zähleraussparung. Und 
weil sich das Sandwich echt easy Ein- und Ausstecken lässt, ist auch 
sichergestellt, dass bei einem Zählerwechsel nicht ein neuer Reedkontakt 
beschafft werden muss. Also kann der Gasmann ruhig 2 mal klingeln ;-).

Das Zählen übernimmt bei mir ein DS2423, also ein 1-Wire Counter. In 
diesem Chip sind aber zwei 32-bit Zähler integriert, so dass noch ein 
Zähler frei war.

Der zählt jetzt das Kondenswasser über einen Regenmesser. Habe ich auch 
bei Frau R. bestellt. Kostet ca. 25 Euronen und nennt sich WS 73003. - 
Und nein, ich bekomme keine Tandieme von R.! - Das Teil besteht aus dem 
eigentlichen Regensammler für den Garten und einer Auswertestation fürs 
Haus, verbunden per Funk. Die Auswertestation steht jetzt auf meinem
Schreibtisch und zeigt mir Temperatur, Datum und Uhrzeit; für die 
Applikation habe ich sie nicht benötigt.

Was zum Einsatz gekommen ist, ist der Regensammler. Jepp, die Dinger 
funktionieren mit einer Wippe ------|------ , das Wasser kommt 
gedrosselt von oben, wenn die linke oder rechte "Schaufel" voll ist, 
kippt die Wippe. Der Mengeninhalt der "Schippe" ist bekannt, ein in der 
Wippe befestigter Magnet steuert den Reedkontakt. Für einen Liter kippt 
die Wippe 210 mal. Das gibt eine relativ gute Genauigkeit, Meteorologen 
haben eben hohe Ansprüche.

Also Batterien raus, damit die Kiste nicht funkt und auf der Platine 
direkt an den Reedkontakt, bzw. an zwei Leiterbahnen, die lötfreundlich 
in einem Pad enden. Diesen Reedkontakt habe ich mit dem zweiten Zähler 
verbunden, so dass ich jetzt synchron Gasverbrauch und
Kondenswasseranfall zähle. Das hat den Vorteil, dass ich über diese 
beiden Parameter den Netto-Abgasverlust meiner Heizungsanlage bestimmen 
kann.

Da gibt es einen schlauen Doktor an der Uni des Saarlandes, der hat in 
einer Patentschrift vorgerechnet, dass der Netto-Abgasverlust (qA) von 
Gas-Brennwertgeräten (GBWG) sich wie folgt bestimmen lässt:

qA=( 1,6 * G – W )/( 1,6 * G ) * 13,5 [%]

oder vereinfacht:

qA = ( 1 – W /( 1,6 * G) ) * 13,5 [%]

wobei:
qA = Netto-Abgasverlust in %
W = Kondenswasser in Liter
G = Gas in cbm (m³)

Wen die Herleitung interessiert 8-/, der wird hier fündig:
http://www.uni-saarland.de/fak7/fze/KFA.htm

Achso, die Auswertung der Zähler und weiterer 1-Wire Bauteile erfolgt in 
meinem FLI4L mit Opt-OW.

O.k. - ist ein bisschen lang geworden, hoffe Ihr seid nicht ermüdet und 
forscht weiter ;-).

Schönen Sonntag noch und Gruß
Karl M.

von IngoF (Gast)


Lesenswert?

Hallo Rudi,

konnte leider nur die KIM-Version in den Telegrammen finden.

Da Du ja eine ganze Version bei Deiner RC30/35 weiter bist kann es 
durchaus sein dass die Telegramme anders abgefragt werden.

Habe Dir mal meine ganzes Log angehangen. Irgendwo müssen die ja 
versteckt sein. Allerdings wohl nicht ganz so einfach im BCD Format wie 
in Deinen Telegrammen. Konnte sie jednfalls nicht finden.

Gruß
Ingo

von IngoF (Gast)


Lesenswert?

IngoF schrieb:
> Habe Dir mal meine ganzes Log angehangen.

Etwas unglücklich formuliert...
Habe sie in der Mail an Dich angehangen. Müsste schon angekommen sein.

Gruß
Ingo

von Andreas F. (andyfaq)


Lesenswert?

Hallo,

ich habe nur meine alte 3220 Steuerung ersetzt und reiche mal die 
Versionsdaten nach:
RC 35       V1.06
MC 10       V2.07
BC 10       V2.03
SAFe        V5.20
BIM         V1
BIM Nummer  7000

Gruß
Andy

von Rudi (Gast)


Lesenswert?

@Andreas F.

Wie lauten die Busadressen von deiner Anlage ?

von Andreas F. (andyfaq)


Lesenswert?

Rudi schrieb:
> @Andreas F.
>
> Wie lauten die Busadressen von deiner Anlage ?

Ich habe leider noch keinen Zugriff auf den Bus (siehe 
Beitrag "Re: Logamatic 2107 Schnittstelle" ), denn mir fehlt 
noch die passende Schnittstellenschaltung. Ich warte noch auf Euch. ;-)

Ne andere Möglichkeit, diese anzuzeigen, kenne ich nicht.

Gruß
Andreas

von IngoF (Gast)


Lesenswert?

Andreas F. schrieb:
> Ne andere Möglichkeit, diese anzuzeigen, kenne ich nicht.

Ist auch im "Sondermenü" zu finden.
Unter "Monitordaten" und dann "Bus-Status".

Gruß
Ingo

von Andreas F. (andyfaq)


Lesenswert?

IngoF schrieb:

> Ist auch im "Sondermenü" zu finden.
> Unter "Monitordaten" und dann "Bus-Status".

gefunden unter Diagnose/Monitorwert/Busteilnehmer

MC 10/SAFe  Adr. 8
BC 10       Adr. 9
RC 35       Adr. 16

Gruß
Andreas

von Rudi (Gast)


Lesenswert?

Hallo,

hat dein SAFe keine Adresse oder ist das nur ein Sensor ?

von IngoF (Gast)


Lesenswert?

Rudi schrieb:
> hat dein SAFe keine Adresse

Hallo Rudi,

wenn ich dass richtig verstanden habe ist dass das selbe wie UBA3. Keine 
Ahnung wodrin der Unterschied ist.
Vielleicht auch nur der Vorgänger der UBA3

Gruß
Ingo

von Andreas F. (andyfaq)


Lesenswert?

IngoF schrieb:
> wenn ich dass richtig verstanden habe ist dass das selbe wie UBA3. Keine
> Ahnung wodrin der Unterschied ist.
> Vielleicht auch nur der Vorgänger der UBA3

Ich bin kein Heizungsbauer, aber das BRM 10 ist doch, wenn ich das 
richtig verstehe, kein richtiger SAFe. Es ist eine Schnittstelle, um 
ältere oder andere Brenner an einer EMS-Regelung zu betreiben und SAFe 
wohl nachzuahmen. Gibt es erst seit 2007. Alle Möglichkeiten hat man 
damit wohl nicht.

Meine Angaben stehen genau so wie angegeben im Display.

Gruß

von Jens K. (jensjk)


Lesenswert?

Hallo,

 Ich hab gemäß dem Thread und den beiden Schaltungsvorschlägen Rx und Tx 
am Modulsteckplatz für KM271 abgegriffen, UART auf 2400bd stehen, 
bekomme aber keine Antwort (auch kein STX) von der 2107.

Nun die Frage: Muss man damit überhaupt die RS232 aktiviert wird noch 
Bauteile für den FG bestücken? Wenn ja welche? oder muss/kann das Modul 
in der Steuerung aktiviert werden.

vielen Dank für eure Super Arbeit und viele Grüße

jens

von Jens K. (jensjk)


Lesenswert?

ok, der 10k R zwischen 5 und 7 scheint zu reichen, nun ist Abgas 
einstellbar und das Modul wohl erkannt. Aber Daten bekomm ich trotzdem 
noch keine ... Hat jemand noch eine Idee?

vg jens

von Jens K. (jensjk)


Lesenswert?

tx und rx vertauscht  ... :-) schon immer mein Problem. Obwohl ich es an 
sich schon 10mal gecheckt hatte.

nun werd ich mal weiter sehen was so an Daten kommt.

vg und noch mal Danke für alle Infos im Forum und wiki

jens

von Ingo F. (ingof)


Lesenswert?

Hallo,

ich habe noch mal ein wenig am Bus herumgespielt und stumpf ein paar 
Pollings beantwortet und darauf gewartet was meine RC30 anzeigt.

0x08    = MC10
0x09    = BC10
0x10    = RC30/35
0x11    = Hydr. Weiche
0x12    = ZM EED
0x13    = Gerät (4x)
0x17    = RC20 Heizkreis
0x18... = RC20 (8x)
0x20... = Mischer (8x)
0x28... = Warmwasser (8x)
0x30... = Solar (8x)
0x38... = Gerät (40x)

Laut meinem Pollingmitschnitt scheinen Adressen über 0x60 nicht gepollt 
zu werden. Ausnahmen scheinen 0x61 und 0x68 zu sein.

Habe auch nicht alle Adressen überprüft und teilweise nur 
stichprobenartig meine Tabelle überprüft.

Ist ja fast alles selbsterklären. Gerät ist wohl so eine Art Platzhalter 
für irgendwelche Module die der RC30 noch nicht bekannt waren. Oder 
Busteilnehmer wie Fernwirkmodem, ServiceKey, RS232-Gateway, ....

Also wer sowas haben sollte bitte einfach mal nachsehen und mir 
irgendwie eine Info zukommen lassen. Bin von Natur aus neugierig ;o) 
Muss ja nicht im Forum sein...

Aber was zum Teufel ist "ZM EED"??? ZM = ZentralModul oder ZusatzModul? 
Was soll denn EED sein? Hat jemand irgend eine Idee?

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

Ingo F. schrieb:
> Aber was zum Teufel ist "ZM EED"??? ZM = ZentralModul oder ZusatzModul?
> Was soll denn EED sein? Hat jemand irgend eine Idee?

Bei Buderus bedeutet ZM einfach Zusatzmodul. Aber EED !?

Wie sieht deine jetzige Sendestufe mit dem Transistor aus ? Ich will mir 
demnächst eine neue Platine mit Opto. usw. bauen.


Grüße.

von Karl M. (Gast)


Lesenswert?

Rudi schrieb:
> Bei Buderus bedeutet ZM einfach Zusatzmodul. Aber EED !?

Servus Leute!

EED ist ein "Externe Störungsanzeige (EED)"-Modul.

Info z.B.: 
http://www.buderus.it/media/prodotti/1-murali/1_6-regolazioni/istruz_tecniche/_RTG_IstrUso_EED_705067A_08_06.pdf

HTH
Karl M.

von Ingo F. (ingof)


Lesenswert?

Rudi schrieb:
> Wie sieht deine jetzige Sendestufe mit dem Transistor aus ? Ich will mir
> demnächst eine neue Platine mit Opto. usw. bauen.

Also sie wird sehr wahrscheinlich einfach nur ein 82 oder 100 Ohm 
Emitterwiderstand für die Stromregelung haben und mit dem Basis am 
PIC/Atmega8 hängen. Dann sollte der Strom passen.

Die Busadressen habe ich noch mit der "alten" Schaltung ermittelt. Bin 
dabei die Software noch mal neu zu schreiben. Wenn das fertig ist mach 
ich mit der Sendeschaltung weiter...

Hinter soll es möglich sein per Jumper aus mehreren Seriellen 
Protokollen auszuwählen.

1) EMS (EMS-Bus)
2) 3964R
3) ASCII HEX-codiert
4) das bisherige Format mit AA 55 gerahmt
5) nur geänderte Werte
6) .....

mal sehen wieviel es wirklich werden. Die ersten beiden auf jeden Fall. 
3964R verwendet ja Buderus für die Fernwirkmodems. Vielleicht ja auch 
für den ServiceKey und RS232-Gateway. Das mit dem AA 55 Rahmen fand ich 
nicht ganz sooo gut. rein theoretisch wäre es ja möglich dass die Werte 
AA 55 irgendwann mal in den Daten vorkommen. Bei 3964R kann das ja nicht 
passieren.

Gruß
Ingo

von Ingo F. (ingof)


Lesenswert?

Karl M. schrieb:
> EED ist ein "Externe Störungsanzeige (EED)"-Modul.

Danke...

Also die Abkürzung von:
Zusatzmodul External Error Detection :o)

Hätten sich ja auch für eine Sprache entscheiden können...

Na dann kann ich die Adresse ja schon mal vergessen. Der Gateway oder 
Service-Key muss dann wohl eines von den "Geräten" sein.

Dann muss es ja ein ähnliche externe Fehleranzeige auch (irgendwann) für 
den EMS-Bus geben. Die ist vermutlich für das 4000er Bussystem?

von Rudi (Gast)


Lesenswert?

Ingo F. schrieb:
> 3964R verwendet ja Buderus für die Fernwirkmodems. Vielleicht ja auch
> für den ServiceKey und RS232-Gateway.

Ja, zumindestens der Service-Key arbeitet damit.

Ingo F. schrieb:
> Das mit dem AA 55 Rahmen fand ich
> nicht ganz sooo gut. rein theoretisch wäre es ja möglich dass die Werte
> AA 55 irgendwann mal in den Daten vorkommen.

;-). Es ging mir damals eher darum, den Anfang und das Frameende zu 
markieren. Durch die Längenangabe würde es auch bei doppelten AA 55 
funktionieren.

Ich lese z.Z. die Daten über die UART mit einem 50MHz Cortex. Die 
CRC-Berechnung und das Parsen der Werte sind relativ CPU-Lastig. Die CPU 
muss auch noch andere Dinge erledigen (Loggen/SD-Karte, Netzwerk, 
CAN-Master). Ich werde hauptsächlich aus diesem und anderen Gründen 
einen 72MHz STM für die Parsergeschichte einsetzen. Der Platzbedarf auf 
der Platine ist durch die integrierte CAN-Hardware auch noch kleiner im 
Vergleich zu einem ATMEGA323P. Der STM kann dann den Stream parsen und 
bei Änderungen auf dem CAN-Bus brüllen.


Grüße.

von Rudi (Gast)


Lesenswert?

Nachtrag:


Evtl. hat ja jemand Lust und Laune und kann für die CRC Berechnung die 
Tabelle, für eine Tabellen basierte CRC, erstellen. Das sollte dann noch 
einiges an CPU-Zeit sparen, wenn genug Speicher vorhanden ist.



Grüße.

von IngoF (Gast)


Lesenswert?

Rudi schrieb:
> Evtl. hat ja jemand Lust und Laune und kann für die CRC Berechnung die
> Tabelle, für eine Tabellen basierte CRC, erstellen.

Hallo Rudi,

Das wird leider nicht gehen. Die EMS-Prüfsumme ist ja kein wirkliches 
CRC mit Generatorpolynom. Es ist ja nur ein XOR mit verschiebung und ein 
paar Bits setzen wenn der bisherige Wert einen bestimmten Wert 
überschritten hat. Also nichts was man mit Tabelle machen könnte, oder?

Bei der CRC mit Generatorpolynom wird die CRC ja immer Bitweise 
"errechnet". Durch die Tabelle erspart man sich dann acht Schritte und 
hat dann ein Byte was man XORen kann, oder? Die EMS-Prüfsumme ist ja 
schon auf Byte ebene und wird nicht für jedes Bit errechnet.

Allerdings habe ich auch im Moment keine Ahnung wie die Tabelle bei 
einer CRC mit Generatorpolynom wirklich erstellt wird und angewendet 
wird. Habe nur mal am Rande davon irgendwas mitbekommen. Vielleicht geht 
es mit ein wenig Gehirnschmalz ja doch...

Gruß
Ingo

von Ingo F. (ingof)


Lesenswert?

Rudi schrieb:
> Ich lese z.Z. die Daten über die UART mit einem 50MHz Cortex. Die
> CRC-Berechnung und das Parsen der Werte sind relativ CPU-Lastig.

Wie sieht denn das Parsen bei Dir aus? Machst Du wie bei Deiner MySQL 
einen "String" raus, der komprimiert wird?

Ich hatte vor einfach wie bei meiner SQL einfach einen 16Bit-Wert daraus 
zu machen und eine ID mitzusenden. Je nach dem welches Frame ankommte 
wird nur ein entprechendes Unterprogramm ausgeführt.
Die Werte werden im Buffer zwischengespeichert (z.B. ID*3+Bufferanfang). 
Bei änderungen wird der Wert übertragen. 2*8Bit +8Bit für einen 
primitiven Zeitstempel. Das klingt eigentlich so als ob dass parrallel 
mit dem Empfang mitlaufen könnte.

Allerdings macht meine CPU nichts anderes als empfangen und weiterleiten 
und dann auch irgendwann mal die Werte auslesen.

von Rudi (Gast)


Lesenswert?

Ingo F. schrieb:
> Wie sieht denn das Parsen bei Dir aus? Machst Du wie bei Deiner MySQL
> einen "String" raus, der komprimiert wird?

Schon lange nicht mehr. Ich habe in der DB die eigentlichen Werte als 
Float gespeichert und den Rest als Integer (ID/Timestamp). Das bringt 
etwas mehr Performance. Leider kann mysql noch keinen Timestamp mit 
Millisekunden, da gibt es aber ein Workaround, falls man diese Auflösung 
benötigt.

Aus Performance-Gründen tendiere ich eher dazu, für jeden Sensorwert 
eine eigene Tabelle anzulegen. Ich habe es aber noch nicht getestet.

> Ich hatte vor einfach wie bei meiner SQL einfach einen 16Bit-Wert daraus
> zu machen und eine ID mitzusenden. Je nach dem welches Frame ankommte
> wird nur ein entprechendes Unterprogramm ausgeführt.

Ja, so in etwa mache ich es jetzt auch. Frame empfangen, CRC prüfen und 
je nach Absender an die entsprechende Unterfunktion übergeben. Dann 
parsen und ab hier wird jeder Wert als Sensor gesehen und entsprechend 
weiterverarbeitet. Also wenn ich von der Buderus zwei Temperaturen 
bekomme sind das nach dem Parsen einfach 2 Sensoren die die Temperatur 
messen. Das ist erstmal mein Ansatz für die Handhabung der einzelnen 
Daten.

Ich versuche alles in ein Schema F zu bekommen, je nach Sensor 
verallgemeinern, damit ich später bei einer zusätzlichen Regelung 
weniger Probleme habe.


Ich denke die CRC-Berechnung würde man schon in eine Tabelle bekommen. 
Es gibt ein Poly. und ein paar mal gedrehe mit Bitabhängigkeiten. Nichts 
anderes als bei einer "normalen" CRC denke ich.


Grüße.

von momurder (Gast)


Lesenswert?

hi alle zusammen,

erstmal an alle fettes danke, super arbeit habt ihr hier alle 
geleistet!!!

zu meinem prob: habe die Schaltung exakt nachgemacht, kriege aber keine 
daten von meiner logamatic 2107.

interface habe ich gemäss update von chipsuffler nachgebaut. habe schon 
viele interfaces im OBD (Automotive) Bereich gelötet, bin nicht ganz 
anfänger und finde auch keinen fehler in meiner arbeit.

habe rx/tx auf beiden seiten schon wild hin und her getauscht. nix....

versuche die ganze zeit immer nach einem versuch fhem zu starten, debug 
modus laufen zu lassen (verbose und loglevel auf 5 und 6) und logmode zu 
setzen. nix...

(in der fhem.cfg ist natürlich auch "define KM271 KM271 /dev/ttyS0" 
eingetragen)

wie testet ihr manuell? sprich senden von 0x02? mit nem PERL 
write("\x02") sehe ich aller höchstens mal ne 00 aufm ttyS0 aber nix 
gescheites.... und schon gar nicht irgendne antwort.....

interface wird natürlich mit abgas erkannt (bei nem 1k widerstand an FG 
ca 150°C) und im service menü kann ich ne abgastemperaturschwelle 
einstellen.

bin bischen verzweifelt, ist ja echt keine kunst das interface 
eigentlich.

wisst ihr was sein könnte? typischer fehler auf den ihr auch gestossen 
seid?

von jens (Gast)


Lesenswert?

-die pegel an tx und rx nachmessen und dabei merken ob es wirklich 
richtig verbunden ist (war mein fehler)
- mit einem seriell-usb Adapter und einem Terminal-programm erste 
Tuchfühlung nehmen.

Ansonsten ist wohl eine genauere Beschreibung der gebauten Variante 
noitwendig, den thread kann wohl niemand mehr auseinander halten weil 
sich da verschiedene Stränge und Varianten durchmischen ...

vg jens

von momurder (Gast)


Lesenswert?

was für pegel soll ich da erhalten? reicht ein voltmeter?

mit was für einem terminalprogram kann ich sicher die einstellung 2400 
vornehmen und hex 0x02 senden? bzw. wie machst du das?

von jens (Gast)


Lesenswert?

Pegel messen (hier Logikpegel, keine RS232):
- Verbindung auftrennen (also nichts anklemmen)
- Am zu messenden Anschluß einen Widerstand ca. 4.7k gegen Masse legen.
Ein Empfänger (Eingang) sollte dann gegen 0V zeigen, ein Ausgang knapp 
unter 5V

Terminalprogramm: Realterm. Kann man alle Baudraten einstellen und auch 
senden.

vg jens

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

anbei die CRC-Berechnung für den EMS-Bus mit und ohne Tabelle.


Grüße.

von chris_be (Gast)


Lesenswert?

Gute morgen,

sorry for my bad german...

ich habe ein service key gekauft für EMS connection und habe eco soft 
Serial Communication gesehen mit advanced serial port monitor.

Wass ich tun wolle:
Eine wifi router mit linux oder PIC oder andern kleine Linux platform 
(Synology, Wdtv, ...) connectieren zum Service Key.
Ich wollte warm wasser ein oder aus zu zetsen
Ich wollte die HistorieDaten aus der Linux speichern.
=> Vorteil: Keine Ecosoft, keine Windows PC, aber lichte HW (kleine 
consumption).

Glaubst du das die empfangen Hex Data einfach conertieren können?
danke
chris_be


e.g.
Start of comm:
<20101106065709.928 TX>
<STX>
<20101106065711.922 TX>
<STX>
<20101106065712.004 RX>
<DLE>
<20101106065712.004 TX>
<NUL><NUL><DLE><ETX><DC3>
<20101106065712.041 RX>
<DLE><STX>
<20101106065712.089 TX>
<DLE>
<20101106065712.181 RX>
<NUL><NUL><NUL><NUL>S<STX>1<DLE><ETX>s
<20101106065712.181 TX>
<DLE>
<20101106065712.265 RX>
<STX>
<20101106065712.265 TX>
<DLE>
<20101106065712.360 RX>
<NUL><NUL><SOH><NUL><NUL><NUL><ETX><NUL><SOH><ETX><DLE><ETX><DC3>
<20101106065712.360 TX>
<DLE>
<20101106065712.390 RX>
<STX>
<20101106065712.390 TX>
<DLE>
<20101106065712.492 RX>
<NUL><NUL><STX><NUL><BS><LF><FF><SO><DLE><DLE><DC2><DC4><SYN><CAN><SUB>< 
FS><RS><DLE><ETX><SOH>
<20101106065712.492 TX>
<DLE>
<20101106065714.506 TX>
<STX>
<20101106065714.588 RX>
<DLE>
<20101106065714.588 TX>
<EOT><BS><BEL><DLE><ETX><CAN>
<20101106065714.640 RX>
<DLE><STX>
<20101106065714.691 TX>
<DLE>
<20101106065714.795 RX>
<EOT><BS><BEL><NUL><VT><SOH><SOH><STX><NUL><NUL><NUL><NUL><NUL><NUL><NUL 
><NUL><NUL><NUL><NUL><DLE><ETX><DC1>
<20101106065714.795 TX>
<DLE>
<20101106065716.798 TX>
<STX>
<20101106065716.880 RX>
<DLE>
<20101106065716.880 TX>
<EOT><BS><STX><DLE><ETX><GS>
<20101106065716.940 RX>
<DLE>
<20101106065716.941 TX>
<STX>
<20101106065717.022 RX>
<DLE>
<20101106065717.022 TX>
<EOT><HT><STX><DLE><ETX><FS>
<20101106065717.089 RX>
<DLE><STX>
<20101106065717.089 TX>
<DLE>
<20101106065717.183 RX>
<EOT><BS><STX><NUL>H<STX><EOT>K<STX><DC4><NUL><NUL><NUL><DLE><ETX><SO>
<20101106065717.183 TX>
<DLE>
<20101106065717.240 RX>
<STX>
<20101106065717.240 TX>
<DLE>
<20101106065717.331 RX>
<EOT><HT><STX><NUL>D<STX><NUL><DLE><ETX>Z
<20101106065717.331 TX>
<DLE>
<20101106065719.329 TX>
<STX>
<20101106065719.411 RX>
<DLE>
<20101106065719.411 TX>
<EOT><VT><STX><DLE><ETX><RS>
<20101106065719.441 RX>
<DLE>
<20101106065719.441 TX>
<STX>
<20101106065719.523 RX>
<DLE>
<20101106065719.523 TX>
<EOT><DLE><DLE><STX><DLE><ETX><NAK>
<20101106065719.589 RX>
<DLE><STX>
<20101106065719.589 TX>
<DLE>
<20101106065719.682 RX>
<EOT><DLE><DLE><STX><NUL>C<STX><BS><DLE><ETX>\
<20101106065719.682 TX>
<DLE>

etc...

von Ingo F. (ingof)


Lesenswert?

Hallo Chris,

Das ist ja super. Genau das nach dem ich gesucht habe.
Die Kommunikation läuft wie schon fast vermutet über das 
3964R-Protokoll.

Leider hilft die Aufzeichnung von Dir leider garnichts da Du im 
ASCII-Mode aufgezeichnet hast. Zeichne doch mal im HEX-Mode auf. Wäre 
sehr interessant wie das genau abläuft. Einfach mal so eine Minute Log 
dann hier am besten als Datei anhängen.

Und Bitte schau doch mal in der RC30/35 nach mit welcher Adresse und 
Namen er sich am Bus anmeldet. Bin echt neugierig.

Bei der RC30:     Service-Menü >> MonitorDaten >> Bus-Status.
Bei der RC35:     Diagnose >> Monitorwert >> Busteilnehmer

Hier sind schon mal alle Daten die wir bisher herausgefunden haben:
Beitrag "Re: Logamatic 2107 Schnittstelle"

Die meisten Daten sind schon bekannt. Wir haben aber alle einen 
selbstgebastelten Controller und keinen Service-Key. Deswegen haben wir 
ein anderes Datenformat. Müsste bei Dir am Service-Key aber sehr ähnlich 
sein....

Gruß
Ingo

P.S.: Die Daten in Deinem Log, die nach HEX-Daten aussehen ist das Datum 
mit Uhrzeit und Millisekunden. Die eigentlich Daten sind dazwischen 
versteckt und werden evtl nicht komplett angezeigt weil es im ASCII-Mode 
von dem Programm aufgezeichnet wurde.

Gruß
Ingo

von IngoF (Gast)


Lesenswert?

Habe mir mal die Mühe gemacht die Daten ohne den "Handshake" ins 
Hexformat zu übersetzen:
12.004 TX: 00 00 11 03 13
12.181 RX: 00 00 00 00 53 02 31 11 03s
12.360 RX: 00 00 01 00 00 00 03 00 01 03 11 03 13
12.492 RX: 00 00 02 00 08 0a 0c 0e 11 11 12 14 16 18 1a 1c 0e 11 03 01
14.588 TX: 04 08 07 11 03 18
14.795 RX: 04 08 07 00 0b 01 01 02 00 00 00 00 00 00 00 00 00 00 00 11 
03 11
16.880 TX: 04 08 02 11 03 1d
17.022 TX: 04 09 02 11 03 1c
17.183 RX: 04 08 02 00 48 02 04 4b 02 14 00 00 00 11 03 0e
17.331 RX: 04 09 02 00 44 02 00 11 03 5a
19.411 TX: 04 0b 02 11 03 1e
19.523 TX: 04 11 11 02 11 03 15
19.682 RX: 04 11 11 02 00 43 02 08 11 03 5c

Allerdings werden wohl viele Daten im ASCII-Modus nicht oder falsch 
angezeigt. z.B kommt das <DLE> in den Daten auch einzeln vor. Was nach 
dem 3964R-Protokoll nicht vorkommen darf.

Stelle Dein Programm doch mal wie in dem Screenshot ein und dann im 
ASCII-Mode aufzeichnen.

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

Anhang vergessen....

von chris_be (Gast)


Angehängte Dateien:

Lesenswert?

guten abend.

bitte: bus info

Und eine Serial sniffer mit monitoring.

Ich kannst Binary aufzeichern auch oder andern teste tun.

ciao

von IngoF (Gast)


Lesenswert?

Hallo Chris_be

Danke für die Info... Der Service-Key versteckt sich also hinter der 
0x0b ;o)

Also zu den Daten....

Der Service-key sendet die Daten mit vorangestellter 0x04.
dannach kommt die Adresse des EMS-Modul (0x10 für RC35)
und dann der Telegrammtyp.

Das hier aus Deinem Log ist das Telegramm 0x18 von der MC10:
04081900006101EE0225FFFFFF0000B9DA04786E02EA4803BAFF00AB590000100335
Mit der Tabelle kannst Du dann die Daten "decodieren".

das 6.Byte ist die Außentemperatur 0x61 > 97 > 9,7°C

Was die anderen Telegramme mit 0x39 und 0x00 sind kann ich jetzt auch 
nicht sagen. Würde mal vermuten dass die 0x00 Daten vom Service-Key 
selber sind.

Ganz am Schluss sind noch Telegramme die mit 0x20 anfangen. Wird 
vermutlich nichts ganz so wichtiges sein.

Die Telegramme mit der 0x39 am Ende kommen nicht vom Service-Key oder 
von der Software und sind nur ein Hinweis auf die Beschränkungen der 
TrialVersion.

Vielleicht kannst Du ja noch mit hilfe der Buderus Software noch andere 
Daten herausfinden, was uns leider nicht möglich ist.

Falls Du noch irgendwas herausfindest bitte dann noch mal posten oder 
mailen.

Gruß
Ingo

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

Ist ja fast ein Kinderspiel mit OpenOffice die unützen Daten 
herauszulöschen ;o)

Für alle die es interessiert hier mal die reinen Daten ohne Ballast...

von IngoF (Gast)


Lesenswert?

@Rudi

Hier gibt es auch alle Versionsnummern die Du herausfinden wolltest :o) 
Ist alles Telegramm 0x02 und BIM die 0x04
1
RX: 00 00 00 00  S  Service Key 2.49  53 02  31                  
2
RX: 04 21 02 00  E  MM10        2.00  45 02  00                  
3
RX: 04 08 02 00  H  MC10        2.04  48 02  04 4B 02 14 00 00 00      
4
                 K  SAFe        2.20            4B 02 14            
5
RX: 04 08 04 00     5001        17    13 89  11 82 12 3C 64 33 05 64  5A 32
6
RX: 04 09 02 00  D  BC10        2.00  44 02  00                  
7
RX: 04 10 02 00  C  RC30        2.08  43 02  08                  
8
RX: 04 18 02 00  B  RC20        1.04  42 01  04 00 00 00

von Andreas F. (andyfaq)


Lesenswert?

Nun ist ja echt Bewegung in der Sache.

Ich habe mir auch mal spaßhalber einen original Service Key zugelegt.

Nun ist der Stecker etwas klobig und ich benötige eine Verlängerung zu 
meinem Hausautomationsserver. ;-)

Was ist sinnvoller? Den Bus direkt zu verlängern (also am Klinkenstecker 
oder die RS232 Schnittstelle, die ich wohl noch über RS232 zu USB 
konvertieren muss?

Gruß

von IngoF (Gast)


Lesenswert?

Andreas F. schrieb:
> Nun ist der Stecker etwas klobig und ich benötige eine Verlängerung zu
> meinem Hausautomationsserver. ;-)

Genau deswegen habe ich mich bisher geweigert den Service-Key zu kaufen 
;o)

Eigentlich ist es egal.Der EMS-Bus darf ja 50 Meter lang sein. Mit der 
seriellen Schnittstelle kommt kan bei 9600 laut Wikipedia bis zu 
152Meter.

Würde ich von dem Verkabelungsaufwand/-kosten abhängig machen.

Das USB-Kabel zu verlängern halte ich nicht für eine gute Idee. Bei USB 
sind das ja mindestens 1,5MBit die über das Kabel gehen müssen.

Bei 1 Meter würde vielleicht ein USB-Verlängerungskabel gehen. Halte ich 
aber trotzdem für keine gute Idee.

Gruß
Ingo

von Andreas F. (andyfaq)


Lesenswert?

IngoF schrieb:

> Eigentlich ist es egal.Der EMS-Bus darf ja 50 Meter lang sein.

Na dann ist die Entscheidung leicht.

Danke Dir.

Gruß

von chris_be (Gast)



Lesenswert?

Attachements:

- Sending the config.

- Get conf + Monitoring
- Screenshot of Monitoring.

enjoy!

von IngoF (Gast)


Lesenswert?

Hello Chris.

Hier eine kleine Anleitung um die Daten automatisisert zu bereinigen:

[code]
###########################
 1) unnütze Daten löschen:
###########################

bei "Mehr Optionen" "Regulärer Ausdruck" anklicken.

Ohne "" kopieren und in OpenOffice einfügen und jedes mal "Ersetzen 
alle" anklicken.

suchen nach:        ersetze durch:
(search for:)        (replace by:)
-----------------------------    --------------
"[[]len=[:digit:]+\x005d"
"1003[01234567890ABCDEF]{2}"
"<[RTX]{2}>$"
"<[RTX]{2}>[:digit:]{2}$"
"<[RTX]{2}>[:digit:]{4}$"
"^$"
"[01234567890ABCDEF]{2}"    "& "
"10 10 "        "10 "




###########################
 2) alles Markieren:
###########################
"bearbeiten" "alles auswählen STRG+A" auswählen


###########################
 3) in Zwischenablage:
###########################
"bearbeiten" "kopieren Strg+C" auswählen


###########################
 4) in Wordpad einfügen:
###########################
WordPad öffnen
[STRG]+[V]
[\code]

und im Anhang die bereinigte Version.

Am besten die TXT-Datei gleich mit OpenOffice öffnen und die 
Markroaufzeichnung starten. Alles bis Punkt 3 ausführen, 
Makroaufzeichnung beenden und Makro abspeichern.

Dann geht alles beim nächsten mal viel schneller.
Aber dann nicht mehr das Ausgabeformat umstellen.

Gruß
Ingo

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

schon wieder Anhang vergessen....

@Chris poste doch mal Deine Programmeinstellungen vom "Advanced Serial 
Port Monitor" wie Du die Datei erstellt hast.

Werde mich jetzt mal wieder um meine Hardware kümmern. Werde mir 
irgendwann mal ansehen was da in Deinem letzten Mittschnitt überhaupt 
drinsteht....

Gruß
Ingo

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

Wen es interessiert ein Schreenschot von meinen heutigen Daten:

von Rudi (Gast)


Lesenswert?

@IngoF

Wo ist deine Fernbedienung an der Heizung angeschlossen ? Bekommt die 
Fernbedienung nur GND und die Datenleitung oder zusätzlich noch die 12V 
?

Zum "get config": Die Daten sehen mir an einigen Stellen nach einem 
einfachen EEProm-Dump aus. Jedes Modul hat ja ein EEProm am I2C.

Jetzt könnte man eine UART-Simulation schreiben und schauen was da so 
alles in der Software passiert ;-)


@chris_be

Is there a way to get pictures from inside the key ? Anyway, thanks for 
the log data !

von IngoF (Gast)


Lesenswert?

Rudi schrieb:
> Wo ist deine Fernbedienung an der Heizung angeschlossen ? Bekommt die
> Fernbedienung nur GND und die Datenleitung oder zusätzlich noch die 12V
> ?

Also die RC30 und mein ATMega8 hängt im Wohnzimmer am Bus. Dann geht es 
an der Heizung vorbei ins Computerzimmer wo mein 18F2585 und hinter dem 
4cm langen CAN BUS noch ein PIC.

Der Bus hat keine 12 Volt also nur GND und 10/15Volt. Die 12 Volt gibt 
es nur an der Diagnosebuchse für den Service-key.

Rudi schrieb:
> Zum "get config": Die Daten sehen mir an einigen Stellen nach einem
> einfachen EEProm-Dump aus. Jedes Modul hat ja ein EEProm am I2C.

Also auf jeden Fall kommen einige Telegramme zerstückelt über den 
EMS-Bus. Der Service-Key klebt die zusammen und schickt die zum PC.

Ansonsten sind die Telegramme alle gleich. Also am EMS-Bus sieht das 
Telegramm so aus:

<Absender> <Empfänger> <Offset> <Daten ..... Daten> <"CRC"> <Break>

Als Empfänger steht endweder 0x00 für alle, die "normale" Adresse 
(0x08=MC10) oder das Polling (0x88 für MC10)
an dem Service-key zum PC (3964R):

0x04 <Absender> <Daten> <DLE(0x10)> <ETX(0x03)> <BCC(XOR)>

Dabei werden alle 0x10 in den Daten gedoppelt damit sie von dem DLE 
unterschieden werden können.

Vom Service-Key ein Telegramm mit den Schaltzeiten und anderen Daten:
RX: 04 10 10 3F 00 01 21 00 84 21 21 ........ 10 03 <BCC>
       ^^^^^^ gedoppelt wegen 3964R

sieht auf dem EMS-Bus dann so aus:
10 00 3F 00 ........ <CRC>
10 00 3F 1B ........ <CRC>
10 00 3F 36 ........ <CRC>
...
...
...

Rudi schrieb:
> Jetzt könnte man eine UART-Simulation schreiben und schauen was da so
> alles in der Software passiert ;-)

Also ich werde das auf jeden Fall mal in meine Hardware packen und evtl. 
mal testen ob es dann auch mit der Originalsoftware läuft... Vermute mal 
dass es dort keine Probleme gibt.

Wie man sieht fragt die OriginalSoftware erst mal die Versionsnummern 
mit dem Telegrammtyp 02 ab. Dannach werden alle Telegramme vom 
Busteilnehmer abgefragt.

Also scheint der Servicekey verschiedene Abfragemethoden zu haben. 
Spezielle Telegramme, oder alle Telegramme.

04 10 02 fragt also die Seriennummern ab (Telegramm 0x02)

04 10 fragt dann alle Telegramme ab (auch noch mal 0x02)

Wie man ja sieht gibt es also dann noch einige Telegrammtypen die bei 
mir noch nie auf dem Bus aufgetaucht sind..

Beim Konfig senden sieht man sogar noch mehr Telegramme die Teilweise 
nur aus Nullen bestehen...

Gruß
Ingo

von IngoF (Gast)


Lesenswert?

Achso... Ob das Offset bei dem EMS-Beispiel jetzt stimmt kann ich nicht 
garantieren. Müsste noch mal auf dem BUS mitlesen. Meine aber mich an 
die 0x1B als erstes zu erinnern.

Es gibt aber auch eine Möglichkeit nur einzelne Werte zu setzen. Die 
kommen eigentlich nur von der RC30 bei mir und gehen zur MC10 oder 
seltener zu der 0x09...

von Rudi (Gast)


Lesenswert?

IngoF schrieb:
>> Jetzt könnte man eine UART-Simulation schreiben und schauen was da so
>> alles in der Software passiert ;-)
>
> Also ich werde das auf jeden Fall mal in meine Hardware packen und evtl.
> mal testen ob es dann auch mit der Originalsoftware läuft... Vermute mal
> dass es dort keine Probleme gibt.

Ja, ich hatte es damals über VirtualBox und über eine externe Loop 
versucht, aber da kannte ich das Format noch nicht. Jetzt sollte es, 
auch ohne Hardware, einfacher sein ... ;-)

von IngoF (Gast)


Lesenswert?

Verstehe nur Bahnhof :o)

Wie oder was wolltest Du denn machen?
Hast Du die Originalsoftware und möchtest dann den Service-Key 
simulieren? Dann an irgendwelchen Parametern herumdrehen und sehen was 
sich in der Original-Software ändert?

In die andere Richtung experimentiern und irgendwelche Wert umzustellen 
um zu sehen was sich an der Heizung ändert ist bestimmt nicht so eine 
gute Idee.. Aber das könnte man auch direkt am EMS-Bus machen.

Ich habe vor das direkt in meine Hardware zu programmieren dass sie sich 
auch wie ein Service-Key verhält. Oder eben irgend ein beliebiges 
anderes Protokoll. Nur muss ich dann doch wohl irgenwie externen 
Speicher für meinen Controller spendieren. Mit dem internen 1,5K RAM 
wirds dann eng.

Und dann kann ich mir immer noch die Original-Software mal ansehen ;o)

von Rudi (Gast)


Lesenswert?

IngoF schrieb:
> Wie oder was wolltest Du denn machen?
> Hast Du die Originalsoftware und möchtest dann den Service-Key
> simulieren? Dann an irgendwelchen Parametern herumdrehen und sehen was
> sich in der Original-Software ändert?

Ich hatte damals zwei serielle Schnittstellen verbunden und an einer 
Seriellen die Software und an der anderen ein Terminal bzw. ein kleines 
Skript um zu sehen was dort passiert.


> In die andere Richtung experimentiern und irgendwelche Wert umzustellen
> um zu sehen was sich an der Heizung ändert ist bestimmt nicht so eine
> gute Idee.. Aber das könnte man auch direkt am EMS-Bus machen.

Ja, dann aber nur im Sommer ;-)


> Ich habe vor das direkt in meine Hardware zu programmieren dass sie sich
> auch wie ein Service-Key verhält. Oder eben irgend ein beliebiges
> anderes Protokoll. Nur muss ich dann doch wohl irgenwie externen
> Speicher für meinen Controller spendieren. Mit dem internen 1,5K RAM
> wirds dann eng.

Es gibt 32K externes SPI-SRAM von Microchip.
Ich werde einen STM32 zum parsen benutzen. 20K SRAM sollten reichen, 
ansonsten hat er noch etwas externes SRAM.

von chris_be (Gast)


Lesenswert?

IngoF schrieb:
Nur muss ich dann doch wohl irgenwie externen
> Speicher für meinen Controller spendieren. Mit dem internen 1,5K RAM
> wirds dann eng.
>
> Und dann kann ich mir immer noch die Original-Software mal ansehen ;o)

Ich habe eine PIC zum hause mit eine Ethernet connection.
Es registriert data (Onewire, Serial, ...) und sended UDP packet zum 
Synology NAS.
On synology brauche ich Netcat UDP port >file.txt

so brauche ich keine speicher am PIC

Wenn ich zeit habe wollte ich neue Serial data logs senden, diese abend.

von chris_be (Gast)



Lesenswert?

as promised

von IngoF (Gast)


Lesenswert?

Acho, erst werden einmal alle Werte abgefragt z.B. 04 08 18 .....

und hinterher kommen die einzelwerte 20 04 08 18 ...

<TX>20 04
<RX>20 04 08 18 02 D0
<RX>20 04 08 18 02 D5
<RX>20 04 08 18 05 09
<RX>20 04 08 18 1E 82
<RX>20 04 08 18 1F 74
<RX>20 04 10 06 04 0C
<RX>20 04 10 06 05 3A
<RX>20 04 08 34 02 E1
<RX>20 04 08 18 1E 80
<RX>20 04 08 18 1F 75
<RX>20 04 08 18 02 DA
<RX>20 04 08 18 1E 82
<TX>20 04

interessant ist auch dass nur einzelne geänderte Werte übertragen 
werden. z. Beispiel an der Kesseltemperatur mit dem Offset 01 und 02. 
Auch dort wird nur ein Byte übertragen. also so bald sich ein Byte 
ändert wird nur das Byte übertragen und nicht beider Werte der 
Temperatur.

Also hat die Software und der Servicekey irgendwo einen Buffer wo alle 
alten Werte zwischengespeichert werden.

@Chris_be
Die Software pollt also in einem bestimmten Abstand den Service-Key an 
(<TX>20 04 ). Kannst Du in dem original-Log noch erkennen in welchem 
Zeitabstand das passiert? Oder sieht das nur so aus als obe das 
regelmäßig passiert?

Gruß Ingo

von chris_be (Gast)


Lesenswert?

Hi Ingo,

beispiel von original Log: Zeit is ... 2 sek?

Start:

<20101109201120.688 RX>
02
<20101109201120.688 TX>
10
<20101109201120.778 RX>
2004081802D51003F0
<20101109201120.778 TX>
10
<20101109201120.812 RX>
02
<20101109201120.812 TX>
10
<20101109201120.902 RX>
20040818050910032B
<20101109201120.902 TX>
10
<20101109201120.942 RX>
02
<20101109201120.942 TX>
10
<20101109201121.033 RX>
200408181E821003BB
<20101109201121.033 TX>
10
<20101109201121.062 RX>
02
<20101109201121.062 TX>
10
<20101109201121.153 RX>
200408181F7410034C
<20101109201121.157 TX>
10
<20101109201121.212 RX>
02
<20101109201121.212 TX>
10
<20101109201121.304 RX>
2004101006040C100339
<20101109201121.304 TX>
10
<20101109201121.387 RX>
02
<20101109201121.387 TX>
10
<20101109201121.478 RX>
2004101006053A10030E
<20101109201121.488 TX>
10
<20101109201121.529 RX>
02
<20101109201121.529 TX>
10
<20101109201121.619 RX>
2004083402E11003E8
<20101109201121.619 TX>
10
<20101109201122.988 RX>
02
<20101109201123.021 TX>
10
<20101109201123.111 RX>
200408181E801003B9

....

Ende:
<20101109202134.018 TX>
02
<20101109202134.215 RX>
10
<20101109202134.215 TX>
2004100337
<20101109202134.249 RX>
10
<20101109202136.299 TX>
02
<20101109202136.347 RX>
021002
<20101109202138.286 TX>
10
<20101109202138.375 RX>
2004081903F01003D5
<20101109202138.397 TX>
10
<20101109202138.435 RX>
02
<20101109202138.436 TX>
10
<20101109202138.532 RX>
2004081905F01003D3
<20101109202138.532 TX>

von Rudi (Gast)


Lesenswert?

Hallo Ingo,

Ingo F. schrieb:
> Also sie wird sehr wahrscheinlich einfach nur ein 82 oder 100 Ohm
> Emitterwiderstand für die Stromregelung haben und mit dem Basis am
> PIC/Atmega8 hängen. Dann sollte der Strom passen.

Hast du schon einen konkreten Wert ? Welche Kapazitäten benutzt du um 
den Bus zu glätten (Stromversorgung hinter den Dioden).


Grüße.

von IngoF (Gast)


Lesenswert?

Rudi schrieb:
> Hast du schon einen konkreten Wert ?

Nö, leider nicht. Muss noch fleissig programmieren und finde nicht 
wirklich oft Zeit dafür. Allerdings müssten beide funktionieren

Im Moment hört mein Controller garnicht mehr auf zu senden und hängt in 
einer Endlosschleife die mir unerklärlich ist :o)

Kann ja schlecht an der "Sendestufe" basteln wenn nichts zu senden ist.

@Chris ich meinte den Abstand zwischen dem senden dieses Telegramme, das 
vermutlich immer in bestimmten abständen kommt:
> <20101109202134.215 TX>
> 2004100337

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

Hi,


ich bin grad mal wieder mit dem Oszi an der Heizung um die Sendefunktion 
zu implementieren. So wie ich das sehe kommt die abzufragende Adresse 
mit bit 7 gesetzt und danach das Break. Wenn der Buspegel auf 1 ist, 
sendet die angefragte Station mit genau 1 Byte und wartet auf das 
"Busecho", wenn alles stimmt das nächste usw.. Am Ende der Übertragung 
schickt die Station ein Break.

Ich benutze einen FET und 50 Ohm Serienwiderstand.

Wenn die Anfrage nicht beantwortet werden kann, fliegt die Station aus 
der Liste und bei der nächsten erfolgreichen Anfrage ist sie wieder 
dabei.


Grüße.

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Anbei ein Bild vom Bus Status bei Adresse 0x0b ;-)

von IngoF (Gast)


Lesenswert?

cool...

wie hast Du dass denn hinbekommen? Welches Telegramm war das denn?

von Rudi (Gast)


Lesenswert?

IngoF schrieb:
> cool...
>
> wie hast Du dass denn hinbekommen? Welches Telegramm war das denn?

Ich warte auf das 0x8B BRK und antworte danach so schnell wie möglich 
mit 0x0B BRK. Nach jedem gesendeten Zeichen musst du den Bus auslesen, 
um das Echo (dein gesendetes Zeichen) zu verifizieren. Wenn der Bus auf 
Low liegt, kann man wohl nicht senden.

Das Zurücklesen habe ich bisher nur durch ein Delay realisiert (etwas 
länger als ein Frame) und ich schau auch nicht ob ich zu spät sende 
(Kollision mit einer anderen Station), weswegen die Station ab und zu 
aus der Liste rausfliegt.


Grüße.

von IngoF (Gast)


Lesenswert?

Rudi schrieb:
> Ich warte auf das 0x8B BRK und antworte danach so schnell wie möglich
> mit 0x0B BRK. Nach jedem gesendeten Zeichen musst du den Bus auslesen,
> um das Echo (dein gesendetes Zeichen) zu verifizieren. Wenn der Bus auf
> Low liegt, kann man wohl nicht senden.

Ja, das war mir schon klar....

Wie hast Du denn das "COMPUTER" auf die RC-30 gezaubert? Bei mir steht 
bei unbekannten Adressen nur "GERÄT". Liegt dann wohl vermutlich an 
Deiner neueren Firmware der RC30 und nicht an einem Telegramm in der man 
den Namen des Busteilnehmers übergeben kann...

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

Hallo,

IngoF schrieb:
> Wie hast Du denn das "COMPUTER" auf die RC-30 gezaubert? Bei mir steht
> bei unbekannten Adressen nur "GERÄT". Liegt dann wohl vermutlich an
> Deiner neueren Firmware der RC30 und nicht an einem Telegramm in der man
> den Namen des Busteilnehmers übergeben kann...

Kennt deine Firmware den Servicekey noch nicht ?


Grüße.

von IngoF (Gast)


Lesenswert?

Nöö, bei allen "unbekannten" Adressen steht bei mir Gerät. Meine auch 
bei der 0x0b für den Service-Key.

von Dirk Janssen (Gast)


Lesenswert?

Hallo,

ich klinke mich hier auch mal ein, da wir in den nächsten Wochen eine 
neue GB172 Heizung mit RC35 Steuerung bekommen. Ich denke, dass ist doch 
EMS-Bus, oder?

Ich möchte gern einige Daten der Heizung dauerhaft mitloggen und da bin 
ich auf diesen Beitrag gestoßen.

Was empfehlt Ihr mir, wo ich die Daten abgreife? An der 
Service-Schnittstelle oder am 2-adrigen Kabel zur RC35?

Was brauche ich da an Pegelwandler? Wie ich das verstanden habe 
verwendet der EMS-Bus 9600 Baud?

Sorry, ich bin Windows-Softwareentwickler, werde mir eine passende 
Windows-Software schreiben, aber von der Elektronik habe ich nicht so 
eine tiefgreifende Ahnung. Vielleicht kann mir auch jemand so einen 
Pegelwandler anbieten mit einer seriellen Schnittstelle, wo ich dann 
"nur noch" meine Software horchen lassen kann.

Danke schonmal.
Dirk

von Dirk Janssen (Gast)


Lesenswert?

Noch eine andere Frage: Was steckt in dem Original Service-Key? Ich 
würde den sonst nachbauen oder vielleicht hat den jemand gebraucht 
abzugeben. Die Software hat mein Heizi als Demo-Version, das würde mir 
erstmal reichen, bräuchte nur den Service-Key...

von Rudi (Gast)


Lesenswert?

Hallo,

Dirk Janssen schrieb:
> Was empfehlt Ihr mir, wo ich die Daten abgreife? An der
> Service-Schnittstelle oder am 2-adrigen Kabel zur RC35?

Ich habe zuerst mit der 3-Draht Lösung gearbeitet und benutze jetzt die 
2-Draht Lösung, die funktioniert soweit. Mich stört aber noch die 
fehlende galvanische Trennung, weil ich die Heizung nicht mit der 
Hausinstallation verbinden will.

Dirk Janssen schrieb:
> Was brauche ich da an Pegelwandler? Wie ich das verstanden habe
> verwendet der EMS-Bus 9600 Baud?

Du brauchst einen Komparator. Ingo hat die Schaltung weiter oben schon 
gepostet.

Dirk Janssen schrieb:
> Noch eine andere Frage: Was steckt in dem Original Service-Key? Ich
> würde den sonst nachbauen oder

Siehe oben.

> vielleicht hat den jemand gebraucht
> abzugeben. Die Software hat mein Heizi als Demo-Version, das würde mir
> erstmal reichen, bräuchte nur den Service-Key...

Tja, wenn es den so "billig" geben würde, würde es diesen Thread nicht 
geben.

von Fred G. (sysrun)


Lesenswert?

Rudi schrieb:
> Ich habe zuerst mit der 3-Draht Lösung gearbeitet und benutze jetzt die
> 2-Draht Lösung, die funktioniert soweit.

Warum hast du dich denn umentschieden? Gibt es da Vorteile?

Habe meine "Servicekeylösung" nun am laufen und parse einige Daten mit 
einem Arduino-Clone (Jeenode) und funke die zu meinem Server.

Kann man den Servicekey eigentlich "emulieren"? Wie schmeisst der denn 
die Daten an den Rechner raus? Steige langsam nicht mehr durch bei der 
Mischung hier ;-)

von Danny B. (maniac103)


Lesenswert?

Fred Granna schrieb:
> Rudi schrieb:
>> Ich habe zuerst mit der 3-Draht Lösung gearbeitet und benutze jetzt die
>> 2-Draht Lösung, die funktioniert soweit.
>
> Warum hast du dich denn umentschieden? Gibt es da Vorteile?

Ein Vorteil (und Grund für mich, die 2-Draht-Variante zu nehmen) ist auf 
alle Fälle, dass man den Bus irgendwo zwischen Brenner und RC30/35 
abgreifen kann. Dadurch hat man keine komisch rumhängenden Kabel - im 
Keller mag das ja ok sein, bei mir steht die Heizung aber im HWR, da 
soll es schon ordentlich aussehen ;-)

von Rudi (Gast)


Lesenswert?

Hallo,

Fred Granna schrieb:
> Warum hast du dich denn umentschieden? Gibt es da Vorteile?

Hauptsächlich wegen der offenen Klappe. Im Keller staubt die schön. 
Außerdem musste ich immer den Stecker ziehen, damit die Heizungsleute 
hinter die Abdeckung kommen.

Ich suche jetzt eigentlich noch eine Isolationsmöglichkeit für die 
RX/TX-Leitung. Durch die 2-Draht Lösung gibt es nicht mehr viel Strom.

Fred Granna schrieb:
> Kann man den Servicekey eigentlich "emulieren"? Wie schmeisst der denn
> die Daten an den Rechner raus? Steige langsam nicht mehr durch bei der
> Mischung hier ;-)

Schau dir die Posts von chris_be und IngoF an, dort steht einiges 
darüber.

von Fred G. (sysrun)


Lesenswert?

Rudi schrieb:
> Hallo,
>
> Fred Granna schrieb:
>> Warum hast du dich denn umentschieden? Gibt es da Vorteile?
>
> Hauptsächlich wegen der offenen Klappe. Im Keller staubt die schön.

Ahso. Ich hab gleich einen abgewinkelten Stecker genommen. Klappe ist 
bei mir also zu :)

von guenne (Gast)


Lesenswert?

Hi Fred,

kannst Du bitte mal was zu deiner Jeenode-Lösung posten ?

Fred Granna schrieb:
> Habe meine "Servicekeylösung" nun am laufen und parse einige Daten mit
> einem Arduino-Clone (Jeenode) und funke die zu meinem Server.

Gruss
Guenne

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.