> 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 ?
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
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.
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
> 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.
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 ???
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
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
> 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.
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
?
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
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.
> 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.
> 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.
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
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
> 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.pnghttp://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.
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
> 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.
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
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
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
@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 ?
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;
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
@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
> 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.
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
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
@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
@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 ?
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
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
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 ?
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
> 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.
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
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).
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
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
> 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.
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:
> 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 ;-)
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
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
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
> 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?
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
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.
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
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.
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
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
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
@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.
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
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/EEM34DLCRudi 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
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
@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):
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
@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..
@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.
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.
> 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.
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
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
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
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
> 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³.
@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
@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
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
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
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.
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)
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
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
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
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
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.
;)
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
@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.
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
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
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
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
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
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.
@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
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
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
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
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
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
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.
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
@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.
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
> 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.
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
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').
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...
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
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..
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 ;-)
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...
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
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
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)
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
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
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.
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
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
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
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
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
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
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
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ß
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
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
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
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
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.
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
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?
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.
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.
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
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.
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.
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?
-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
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?
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
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
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
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...
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ß
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
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
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
@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 !
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
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...
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 ... ;-)
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)
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.
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.
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
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.
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
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.
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.
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
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.
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
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...
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.
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 ;-)
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 ;-)
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.
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 :)
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