Hallo Rudi,
ganz vielen Dank für den Schaltplan. Da kann ich mich ja sobald als
möglich an's Basteln machen. Einen Optokoppler werde ich mir
wahrscheinlich aber noch gönnen...
Grüsse und nochmals vielen Dank
Matthias
@all
Oben im Thread ist ja das Protokoll auf dem EMS-Bus beschrieben, soweit
ich gesehen habe als Phyton Programm. Ich will den Phyton-Code in eine
C-Library portieren. Oder hat das schon jemand gemacht und ich hab es
nur überlesen?
@Matthias
EMS:
ich denke, eine Library gibt es noch nicht. Rudi hat seine Auswertung in
Phyton, ich in Delphi erstellt. Da ich jetzt alle interessanten Werte
aus der Heizung habe, tut es das für mich erstmal;-)
Zum Thema Optokoppler:
ganz so kritisch würde ich das nicht sehen. Der EMS-Bus ist ja zur
Vernetzung der Heizungskomponenten im ganzen Haus gebaut und dürfte
daher ziemlich resistent gegen äußere Einflüsse sein. Im Zweifelsfall
bricht halt die Kommunikation zusammen und geht nach Störungsbeseitigung
wieder. Der Bus muss schließlich heizungsbauerkompatibel sein ;-)
Die Entscheidung muss natürlich jeder selbst treffen. No Risk, No Fun.
bye,
Mario
Hallo an Alle
Habe mich inzwischen von meinem PIC verabschiedet und habe mir ein
ATmega8 Entwicklungskit mit USB-Prog enscheiden mit dem man auch andere
Microcontroller programmieren kann. Habe den C-Quelltext von Rudi
übernehmen können und fast ohne Änderungen übernehmen können. Auch wenn
ich nicht wirklich verstehe was der Quelletext eigentlich wirklich macht
;-)
Auf der Platine ist ein Max RS232-Chip den ich einfach über ein Kabel an
den Service-Key angeschlossen habe. Funktioniert erst mal fürs erste.
Nur gibt es noch Probleme mit dem Java-programm die ich nicht wirklich
in den Griff bekomme. Irgendwie bekomme ich sämtliche Daten nur nach dem
ich den COM-Port schließe. vorher scheine ich keine Daten zu bekommen.
Würde ja auch gerne mit Python mithelfen. Allerdings habe ich echt
keinen Bock mich jetzt Tage/Nächtelang erst mal in Phyton, MySQL oder
andere Datenbank und GNU-Plot zu beschäftigen.
@All
fände es auch gut wenn nicht jeder sein eigenes Süppchen kocht. Mein
Versuch das zu ändern ist ja wohl fehlgeschlagen...
Jetzt hätten wir Rudi mit Phyton, Mario mit Delphi, ich mit Java und
jetzt kommt noch C dazu... ;-)
@Rudi
würdest Du mir/uns vielleicht Dein Script zur Verfügung stellen? Dazu
müsste ich auch wissen welche Datenbank dazu installieren müsste. Das
GNUPlot-Script wäre vielleicht auch interessant.
@Matthias
Wäre auch an einer gemeinsamen Hardware interessiert und auch an dem
Quelltext. Leider habe ich kaum den Quelltext fur den ATMega verstanden
und wäre vermutlich keine große Hilfe bei der Software. Würde auch noch
mal für das AVR-Board von Pollin geld ausgeben. Auch wenn ich für dieses
Projekt am Ende mehr Geld ausgegeben habe als für die Original Hardware
von Buderus.
Allerdings wäre es schön wenn man nicht unbedingt auf Linux angewiesen
wäre und auch mit Windows auf dem PC lassen könnte. Wäre natürlich noch
besser wenn man eine SD-Karte hätte die die Daten solange
zwischenspeichert bis man den PC hochfährt und nicht unbedingt einen
Server mitlaufen lassen muss. Das hätte den Vorteil dass man die Daten
auch weiterhin aufzeichnen kann wenn man aus irgendwelchen Gründen der
Server mal neugestartet wird.
*Könnte gerne bei der Decodierung mithelfen, auch wenn es schon so
aussieht ob schon alle Telegramme komplett entschlüsselt sind.
*Könnte auch gerne Adapterplatinen entwickeln auf der dann der
"Telegrammumwandler" sitzt und eine SD-KKarte platz findet.
Mir wäre dann aber auch wichtig dass auf der Platine eine Sendefunktion
untergebracht werden kann. Nachdem das loggen funktioniert will ich auf
jeden fall auch vom PC, Server, Controllerplatine oder was auch immer
Die Heizungsprogramme ändern kann. Vielleicht sogar automatisiert für
Feiertage und Urlaubstage für das ganze Jahr im Vorraus. Aber bis dahin
ist es wohl noch ein längerer Weg....
Gruß
Ingo
@IngoF
> fände es auch gut wenn nicht jeder sein eigenes Süppchen kocht. Mein> Versuch das zu ändern ist ja wohl fehlgeschlagen...
Jein, bisher verwenden wir mysql und gnuplot (in ajax gibt es ja auch
schon etwas) für die Visualisierung. Wie die Daten in die Datenbank
gelangen ist bisher das "Süppchen".
Ich kann meinen suboptimalen Aufbau kurz beschreiben:
Heizung -(EMS)-> Mega8 -(RS232)-> CORTEX -(RS232/USB)-> Laptop -> Parser
(python) -> Binary-Log/Sqlite-DB -(Network upload)-> Server -> Mysql ->
Gnuplot -> Web
So sieht es bei mir aus ;-)
> würdest Du mir/uns vielleicht Dein Script zur Verfügung stellen? Dazu> müsste ich auch wissen welche Datenbank dazu installieren müsste. Das> GNUPlot-Script wäre vielleicht auch interessant.
Das Skript kann bisher nicht alle Daten parsen. Ich kann die beiden mal
posten. Die Konvertierung nach Sqlite will ich da nicht drin haben, da
das mit einem kleinen Netz-Controller nicht funktioniert. Ich bin leider
bei mir, wegen der 2107, nicht viel weiter gekommen.
> Allerdings wäre es schön wenn man nicht unbedingt auf Linux angewiesen> wäre und auch mit Windows auf dem PC lassen könnte. Wäre natürlich noch> besser wenn man eine SD-Karte hätte die die Daten solange
Ja, ich werde demnächst den Kram auch auf einem Windos PC installieren.
Ab dem Netzwerkkontroller soll das dann identisch zu meiner Installation
(etwas verbessert) laufen, aber eben auf Windos. Die Adaption zur
Heizung ist komplett anders (leider). Die Tools für die Visualisierung
sind für mehrere Platformen verfügbar. Wir bräuchten einen kleinen
Webserver der die Daten empfangen/quittieren kann und in die Datenbank
schreibt und/oder ein kleines Programm welches die Daten abholt. Ich
würde schon wegen der Platformunabhängigkeit und der Wartung kein C
benutzen wollen, ich komme übrigens aus der C/C++-Ecke.
> Mir wäre dann aber auch wichtig dass auf der Platine eine Sendefunktion> untergebracht werden kann. Nachdem das loggen funktioniert will ich auf> jeden fall auch vom PC, Server, Controllerplatine oder was auch immer
Mach das ! Du hast 12V/GND und das Signal. Das Signal liegt bei +- 2.5V
auf den 12V (9600 Baud). Eingang dann vom uC mit 3.3V oder 5V. Wenn du
daran arbeiten könntest wäre das super !
Das Hauptproblem bei Senden ist die CRC. Im schlimmsten Fall muss man
den String 256 mal senden ...
Hallo,
will mich nochmal zu Wort melden bzgl. meiner Vorstellung mit dem
Pollin-Board. Vorteil sind die geringen Hardwarekosten (ca. 20€ als
Bausatz bzw. knapp 30€ für das Fertiggerät). Die Busanschaltung muss man
dann natürlich noch selber basteln. Für das Board sind schon viele
fertige Projekte im Netz zu finden, mit denen man ohne grossen
Entwicklungsaufwand eine gute Software-System-Grundlage hat.
Implementiert man darauf das EMS-Protokoll hat man mit geringen Kosten
eine netzwerkfähige Schnittstelle zur Heizung (seriell könnte das Board
auch).
Implementiert man jetzt hier drauf das Modbus-Protokoll, kann man die
Kiste neben Linux und Windows z.B. auch mit einem
Wago-Ethernetcontroller (Wago System 750) auslesen.
Prinzipiell könnte ich mir als Interface natürlich auch andere Hardware
vorstellen, aber nach meiner Erfahrung ist es oft so, das wenn man noch
viel neu entwickeln muss ein Projekt oft einschläft.
Zweifelsohne wäre aber ein SD-Interface praktsch, wenn man keinen Server
ständig am Laufen hat.
Vielleicht sollte man im ersten Schritt aber mal alle Infos in einem
Wiki o.ä. sammeln. Dann könnte man sich besser orientieren was es schon
gibt. Ich habe zwar noch nie ein Wiki aufgesetzt aber ich könnte mir mal
ansehen wie das geht. Denn auf die Dauer wird der Thread schon ziemlich
unübersichtlich.
@Werner Brösel,
nöhh, hab keine Lust am hijacken. Macht ja im Endeffekt nur Arbeit. Für
meine privaten Zwecke komme ich mit den Infos hier gut klar. Ich könnte
also auch nur schnorren und mich an der Arbeit anderer bedienen, ohne
was beizutragen..
@Matthias
> Ich könnte also auch nur schnorren und mich an der Arbeit anderer> bedienen, ohne was beizutragen..
Was hast Du dir vorgestellt ? Für eine Wiki kann ich mich nicht
begeistern, man findet nichts wieder und es gibt irgendwie keine
gescheite Übersicht der Artikel.
Wenn wir einen zentralen Ort anlegen, dann für alle. Doku, Software und
ein Forum/Mailinglist für Hilfe und Austausch, von der möglichen
B.-Kontra abgesehen ;-)
Evtl. können sich die stillen Mitleser dazu äußern ...
@Rudi
>Was hast Du dir vorgestellt ? Für eine Wiki kann ich mich nicht>begeistern, man findet nichts wieder und es gibt irgendwie keine>gescheite Übersicht der Artikel.
Beim Suchen nach einer Schnittstellenbibliothek für Buderus bin ich auf
ein Projekt für Viessmann-Geräte gestossen (http://openv.wikispaces.com)
Etwas in der Art fände ich praktisch... Zumal ja jeder etwas andere
Bedürfnisse/Infrastruktur hat und da könnte man übersichtlich die
einzelnen Lösungen sortieren.
@Matthias
> Beim Suchen nach einer Schnittstellenbibliothek für Buderus bin ich auf> ein Projekt für Viessmann-Geräte gestossen (http://openv.wikispaces.com)> Etwas in der Art fände ich praktisch... Zumal ja jeder etwas andere> Bedürfnisse/Infrastruktur hat und da könnte man übersichtlich die> einzelnen Lösungen sortieren.
Also eher ein CMS als ein Wiki. Die Sourcen und Programme sind bei denen
nicht auf der gleichen Domain.
Ich würde ein Projekt auf Sourceforge anlegen, Webseite,
Sourceverwaltung, Mailingliste ... . Für die Webseite könnte ich mir
(bitte nicht schlagen;-)) joomla vorstellen und dann über die
Userverwaltung das Editieren erledigen. Am Ende sind es eh nur eine Hand
voll Leute die aktiv etwas tun. Siehe hier ;-)
>Ich würde ein Projekt auf Sourceforge anlegen, Webseite,>Sourceverwaltung, Mailingliste ... . Für die Webseite könnte ich mir>(bitte nicht schlagen;-)) joomla vorstellen und dann über die>Userverwaltung das Editieren erledigen.
@Rudi
Ok, wollen wir es mal angehen? Die Webseite ja keinen Schönheitspreis
gewinnen, Hauptsache man strukturiert die vielen Infos mal.
Vielleicht kannst Du initial die Seite anlegen, Du hast ja auch am
meisten zu dem Projekt beigetragen. Damit keinn Hijacker-Verdacht
aufkommt....
Habe mir gestern aus dem Thread mal die Protokoll-Infos zusammengesucht,
die ich für die Anbindung brauche. Ich schreib jetzt das sowieso mal für
mich zusammen. Post wenn ich fertig bin mal meine Zusammenfassung.
Hallo,
lese auch bei Euch mit, obwohl ich eine Ecomatic 4000 habe ... beim
Aufbau der Seite mit Joomla! kann ich Euch gerne ein wenig unterstützen.
Gruß,
Mike
Buderus HS2401 / Ecomatic 4000 (mit Schieberegler) / Baujahr 1994
ATMEL ATMEGA32, Pollin AVR Net I/O, EvalBoard 2.0.1 / AddOn Board
@Ingo:
Vielen Dank für die Tabelle. Habe Sie mal mit den anderen Infos
abgeglichen und ergänzt. Muss ich noch weiterbearbeiten, aber mal als
Zwischenstand für alle.
Gruss Matthias
@Rudi
sieht sehr gut aus. Wie sehen denn die Dokumentation aus wenn einzelne
Bits eine bestimmte Bedeutung haben?
Allerdings müsste man dafür TEX installieren um es zu bearbeiten. Oder
ist das ein Format dass man mit OpenOffice oder anderen Programmen
öffnen könnte?
Warum kein Dateiformat wofür man kein spezielles Programm für benötigt?
Kann man die Datei denn auf der Webseite (Joomla) bearbeiten und
automatisiert aus der Datenbank erstellen? Glaub mit Joomla kann man ja
auch automatisiert PDF Dateien erstellen, oder?
Gruß
Ingo
> sieht sehr gut aus. Wie sehen denn die Dokumentation aus wenn einzelne> Bits eine bestimmte Bedeutung haben?
Das könnte man da problemlos einbauen, z.B etwas eingerückt.
> Allerdings müsste man dafür TEX installieren um es zu bearbeiten. Oder> ist das ein Format dass man mit OpenOffice oder anderen Programmen> öffnen könnte?
Das Tex-Quell-Format ist reiner Text ;-). Okay, die Syntax ist etwas
anders. Du kannst den auch mit Edit öffnen, um aber ein formatiertes
Dokument zu erstellen brauchst du Tex. In meinem Fall habe ich es in
eine PDF-Datei gewandelt. Das gute daran, du kannst den "Quelltext" in
GIT oder was auch immer verwalten und Änderungen verfolgen.
> Warum kein Dateiformat wofür man kein spezielles Programm für benötigt?
Ich finde PDF schon als normales Format, es ist allerdings nur der
Output.
> Kann man die Datei denn auf der Webseite (Joomla) bearbeiten und> automatisiert aus der Datenbank erstellen? Glaub mit Joomla kann man ja> auch automatisiert PDF Dateien erstellen, oder?
Nein, das wäre mit viel Aufwand verbunden.
Das mit dem Bild war auch nur ein Vorschlag wie man es machen könnte.
Hallo!
bin leider erst jetzt auf diesen Thread gestoßen. Ich habe ein KM271
bei mir in Betrieb, an einer Logamatic 2105 (wie 2107, nur ohne
Solarmodul-Nachrüstmöglichkeit) mit Warmwasserbereitung.
Ich habe auch die Software und mittels Serial-Logger das Protokoll
zum Teil ermittelt. Eine Beschreibung findet Ihr im Anhang. Im Moment
kenne ich nur den Log-Modus, kann also nur die laufenden Meldungen
der Heizung interpretieren, aber keine Änderungen an der Konfiguration
vornehmen. Dazu müsste ich mal wieder die Windows-Software von Buderus
laufen lassen und mitprotokollieren.
Das KM271 könnte ich bei Gelegenheit ausbauen und fotografieren damit
man die Bauteile und Verbindungen bestimmen kann, aber das kann ich erst
am Wochenende.
Schreibt mal, ob das Protokoll der KM-271 hilft bei Eurem Ansatz.
Himtronics
@Joachim König
Das sind doch mal ein paar Daten. Sind die evtl. auch dort beschrieben:
Beitrag "Re: Logamatic 2107 Schnittstelle"
Das KM271-Modul setzt die RS232 auf I2C um und vice versa. Das
Display-Modul fragt eine I2C-Adresse ab, die evtl. ohne Solar oder KM271
nicht auf dem Bus vorhanden ist '(Beide benutzen wohl die gleiche
Adresse). Ich konnte die Displayeinheit aber nicht zur Kommunikation
überreden, bzw. habe dort auch nicht weiter geforscht, da die Daten auch
direkt abgegriffen werden können, mit direktem Zugriff auf das EEProm
(I2C).
Viele Daten können eigentlich nur im EEProm gespeichert werden, den
Aufbau der Daten zu finden ist mit einem KM271 mit Sicherheit viel
einfacher ...
Einige Bilder mit erkennbaren IC Bezeichnungen und Leiterbahnen wären
super !
Einige Fragen habe ich noch:
Was ist die Pumpenleistung ? Braucht man für die Steuerung ein extra
Modul ?
Was sind das für Werte:
Brennereinschalttemperatur/Brennerausschalttemperatur ??? Welche
Temperaturen werden dort gemessen ?
@Rudi schrieb:
> Was sind das für Werte:> Brennereinschalttemperatur/Brennerausschalttemperatur ??? Welche> Temperaturen werden dort gemessen ?
das sind keine Messwerte sondern die Temperatur, bei der der
Brenner ein- beziehungsweise ausschaltet. Die ist abhängig
von der Aussentemperatur, dem Gebäudetyp etc, also wenn's
draußen kalt ist, soll das Wasser im Kessel heißer
sein als wenn's lau ist, insbesondere wenn kein Mischer
vorhanden ist. So ähnlich jedenfalls.
Hallo,
habe es endlich geschafft Ein Java-Programm zum laufen zu bekommen. Es
werden nur Telegramme mit Daten mitgeloggt.
Man muss den PC mit dem Sklaven verbinden der das Break erkennt und
einen Rahmen um die Daten setzt. Dannach noch die richtige Schnittstelle
auswählen und 'Verbinden' drücken.
Wenn Java installiert ist muss man nur das ZIP entpacken und emslog.jar
oder emslog.bat mit doppelklick starten. Wenn man EMSlog schließt ohne
vorher auf 'Verbinden' zu klicken muss man EMSlog mit dem TaskManager
beenden.
Es gibt noch unter bestimmten Bedingungen Lesefehler auftreten.
Sonst kann das Programm noch garnichts. Jetzt kann ich endlich mit der
Programmierung anfangen ;-)
Für die Mitleser die keine Hardware zum Testen haben können sich ja das
Screenschot ansehen.
Gruß
Ingo
Sehr schön. Also gibt es doch noch 2 Leitungen für eine UART auf dem
Bus.
Empfängst du, auch ohne den Logmodus zu aktivieren, Daten auf der UART ?
Wird dort zufällig zyklisch etwas gesendet ?
Rudi schrieb:
> Sehr schön. Also gibt es doch noch 2 Leitungen für eine UART auf dem> Bus.> Empfängst du, auch ohne den Logmodus zu aktivieren, Daten auf der UART ?> Wird dort zufällig zyklisch etwas gesendet ?
Nein, da ist Ruhe. Werde mir bei Gelegenheit mal das Protokoll
ansehen für das Ändern der Konfiguration. Die Konfiguration
die am Anfang nach dem Aktivieren des Protokoll-Modus gesendet
wird, kann ich schon zum Teil interpretieren, z.B. die Zeiten für
die Heizphasen.
Hallo Rudi,
kannst Du mir ein wenig über die Struktur Deiner mySQL-Datenbank geben?
Wie hast Du die angelegt? Pro Telegramm eine Tabelle? Die
unterschiedlichen Telegramme kommen ja zu unterschiedlichen Zeit und
natürlich unterschiedlich oft.
Belegen eigentlich nicht benutzte Werte Speicherplatz? Denke schon.
Was für Datenformate hast Du verwendet. Hätte nie gedachte dass es
soooooooo viele Datenformate geben kann. Bei der Datenbank soll ja nicht
wirklich unütz Platz verschwendet werden.
Gruß
Ingo
@IngoF
Ich speicher keine Datensätze von der Anlage in der Datenbank. Die
Logdateien belaufen sich in etwa auf 10GB über gefühlte 3 Monate.
In der Datenbank werden nur relevante Daten gespeichert. Temperaturen,
Brenner, Gaszähler usw..
Ich habe bisher 2.5M Einträge vom Juli an. Der Durchschnitt ist im Laufe
der Zeit durch Optimierung aber weniger geworden.
Der Aufbau der Datenbank ist für eine Query nicht optimal, aber ich sehe
erstmal nichts einfacheres. Es gibt eine Tabelle mit IDs der Sensoren
und die Datentabelle.
SOURCE-TABLE:
Die ADDR ist bei mir der MAC angelehnt, z.B. 00:12:33:12:21:55:45:45
oder auch HE:IZ:00:00:00:00:00:01.
Da ich mehrere Sensoren habe, und es auch mehr werden sollen, ist das
erstmal für mich wichtig die Daten nach dem Absender zu unterscheiden.
Die Datentabelle ist dann nicht sooo optimal, hält sich aber in Grenzen:
Bei der Tabelle:
SOURCE : Source-ID aus der Tabelle SOURCE
TYPE: Typ der Daten, kann für jeden Sensor selbst festgelegt werden
DATA: die Daten
TIME: UTC Zeitstempel
>Ich speicher keine Datensätze von der Anlage in der Datenbank. Die>Logdateien belaufen sich in etwa auf 10GB über gefühlte 3 Monate.>>In der Datenbank werden nur relevante Daten gespeichert. Temperaturen,>Brenner, Gaszähler usw..
Da hast Du mich falsch verstanden. Natürlich wollte ich auch keine
unnützen Daten speichern.
------------------------------------------------------------------------
--
Mal angenommen jedes Telegramm hätte 22Byte.
Das Telegramm 0815 kommt alle 10 Sekunden und hat 10 Temperaturen
(0815=2 +10*2 pro Temperatur).
Das Telegramm 4711 kommt jede Sekunde und hat eine Temperatur.
(4711=2Byte +1*2Byte für Temperatur +18Byte noch unbekannt).
Ich hatte jetzt gedacht:
eine Tabelle für Telegramm 0815 mit 10 Spalte/Werten und 6 Einträgen pro
Minute.
Die zweite Tabelle für Telegramm 4711 mit einer Spalte/Wert und 60
Einträgen pro Minute.
------------------------------------------------------------------------
--
Also hätte man hinterher 2 Tabellen mit etwa 60Byte pro Minute.
> `DATA` char(200) NOT NULL,
Sorry, aber bin noch nicht soweit mit mySQL... Ich hoffe nicht dass für
jeden Sensor mit 200 Zeichen gespeichert wird.
Gruß
Ingo
> > `DATA` char(200) NOT NULL,> Sorry, aber bin noch nicht soweit mit mySQL... Ich hoffe nicht dass für> jeden Sensor mit 200 Zeichen gespeichert wird.
Doch, aber dafür gibt es dann:
PACK_KEYS=1 ROW_FORMAT=DYNAMIC
;-)
Ich wollte erst ein float, aber evtl. kommen doch noch andere Daten.
> Ich hatte jetzt gedacht:> eine Tabelle für Telegramm 0815 mit 10 Spalte/Werten und 6 Einträgen pro> Minute.> Die zweite Tabelle für Telegramm 4711 mit einer Spalte/Wert und 60> Einträgen pro Minute.
Wenn du keine Daten verlieren willst kannst du es so machen. Im
Zweifelsfall einfach eine Tabelle anlegen und mit Pseudodaten füllen und
schauen wie groß die Tabelle etwa wird.
Das füllen der Tabelle ist nicht das Problem. Die Abfragen für die
Grafik usw. sind bei vielen Daten sehr CPU lastig. Speicherplatz ist
eigentlich kein Problem.
@Joachim K.
> Nein, da ist Ruhe. Werde mir bei Gelegenheit mal das Protokoll> ansehen für das Ändern der Konfiguration. Die Konfiguration> die am Anfang nach dem Aktivieren des Protokoll-Modus gesendet> wird, kann ich schon zum Teil interpretieren, z.B. die Zeiten für> die Heizphasen.
Ich konnte es mehr oder weniger verifizieren. Ohne eingesteckte Platine
lässt sich der Modus nicht aktivieren. Bei erkanntem/eingeschaltetem
zweiten Heizkreis werden dort andere Daten gesendet und es wird nicht
auf 0x02 oder 0x10 geantwortet.
Moin allerseits,
ich hänge mich hier mal mit dran, da ich schon ne Weile mitlese ...
Wir haben eine GB142 mit ner RC35. Das Ganze Projekt klingt recht
spannend, aber einiges habe ich noch nicht verstanden.
Es sind 2 unterschiedliche Systeme, ja? Einmal die Logamatic2107 und
einmal die RC30/35 Serie, wobei aber beide Systeme das gleiche Protokoll
haben?
Technische Möglichkeiten wie Oszi stehen mir leider nicht zur Verfügung,
daher könnte ich höchstens versuchen bei der weiteren Entschlüsselung zu
helfen!?
Benötigt wird also der Klinkenstecker für die RC3x und dann eine kleine
Platine zur Umsetzung. Bei mir läuft eh ein Homeserver 24/7 , auf dem
die Daten dann verarbeitet werden könnten. SQL ist ebenfalls vorhanden.
Das Signal kann man dann einfach über die RS232 Schnittstelle im PC
verwerten oder wird noch weiteres benötigt wie z.B. ein µC zur Umsetzung
des Datenstroms auf der Platine und dann erst die Kommunikation zum PC?
Gruß
Jens
@Jens H.
> Es sind 2 unterschiedliche Systeme, ja?
Ja.
> Einmal die Logamatic2107 und einmal die RC30/35 Serie, wobei aber beide> Systeme das gleiche Protokoll haben?
Nein.
> Technische Möglichkeiten wie Oszi stehen mir leider nicht zur Verfügung,> daher könnte ich höchstens versuchen bei der weiteren Entschlüsselung zu> helfen!?
Ja, die CRC ist bei der RC30/35 noch nicht ganz klar.
> Benötigt wird also der Klinkenstecker für die RC3x und dann eine kleine> Platine zur Umsetzung.
Ja.
> Das Signal kann man dann einfach über die RS232 Schnittstelle im PC> verwerten oder wird noch weiteres benötigt wie z.B. ein µC zur Umsetzung> des Datenstroms auf der Platine und dann erst die Kommunikation zum PC?
Ein uC vor dem PC ist besser, siehe oben die Posts.
@Matthias:
> Unter Beitrag "eBus CRC Berechnung nachvollziehen" wird über den eBus> diskutiert. Der EMS-Bus scheint dem eBus ja sehr ähnlich.> Unter> http://www.mikrocontroller.net/attachment/54958/eB...> ist auf S.28 ein eBus Interface dargestellt. Würde das auch für den> EMS-Bus gehen? (vielleicht nicht unbedingt 24V Versorgung) Was meint ihr> dazu?
Könnte funktionieren. Musste man aber auf 12V auslegen. Evtl. sind die
9600 Baud zu schnell, muesste man mal aufbauen und messen.
Hallo Rudi,
danke für die Antworten! Ein µC davor ist besser, aber nicht zwingend
notwendig oder wird auf jeden Fall benötigt? Oder hängt das von der
verwendeten Software auf dem Rechner ab?
Ich war mir sicher das mit dem µC gelesen zu haben, habe es aber vorhin
nicht wiedergefunden und deswegen gefragt ;-)
Die main.c von Mario hab ich gefunden, aber leider noch kein Schaltbild
um eine Platine aufzusetzen. Wobei ihr ja scheinbar unterschiedliche
Versionen einsetzt, da Mario mit nem Mega128 arbeitet und du nen Mega8
einsetzt.
Magst du vielleicht das Layout preis geben?
@Matthias:
Falls die eBus Platine funktionieren sollte, wäre das natürlich auch
noch ne Möglichkeit ;-)
Sorry für die vielleicht blöde Frage, aber direkt von Buderus gibt es ja
noch ein RS232 Gateway für die aktuellen Thermen, das ist aber nicht die
Logamatic 2107 Schnittstelle oder doch?
Gruß
Jens
@ Jens H.
> danke für die Antworten! Ein µC davor ist besser, aber nicht zwingend> notwendig oder wird auf jeden Fall benötigt? Oder hängt das von der> verwendeten Software auf dem Rechner ab?
Ein PC ist zu langsam bzw. hat kein Realtime. Also uC und fertig.
> aber leider noch kein Schaltbild> um eine Platine aufzusetzen. Wobei ihr ja scheinbar unterschiedliche> Versionen einsetzt, da Mario mit nem Mega128 arbeitet und du nen Mega8> einsetzt.> Magst du vielleicht das Layout preis geben?
Ein Mega8 und dann VCC/GND RX/TX, also nichts kompliziertes was
unbedingt ein Layout erfordert. Fertige Eval. Boards gibts ja wie Sand
am Meer.
Also ich habe auch den ATmega8.
Habe mir ein Komplettkit mit USBprog fur etwa 69 Euro gekauft. Ist alles
drin was man zur Programmierung für den Atmega8 braucht.
Am Service-key gibt es zwei Kontakte die das Signal mit +-2,5Volt haben.
Diese habe ich einfach ohne weitere Technik auf den RX-Eingang des
Atmega8 gelegt.
Der Quellcode für den ATmega8 wurde hier schon von Rudi gepostet.
Den PC schließt man am TX-Ausgang des Atmega8 an.
Bisher läuft es nur am Service-Key direkt. Wenn man die Platine am Bus
anschließen will benötigt man auf jeden Falle ein Schaltung die ich mir
auch noch zulegen werde.
Ich habe es schon, mit Hilfe von Rudi geschafft ein Java-Programm zu
schreiben dass die Daten mittloggt und in der MySQL-Datenbank
abspeichert. Wenn die letzten Fehler weg sind werde ich hier gerne den
Download-Link posten. Die Visualisierung kommt natürlich auch noch rein.
Vermutlich mit GNUPlot oder direkt im Java-Programm.
Gruß
Ingo
Hallo ihr zwei, vielen Dank für die Hinweise
Da ich KEINEN Service-key habe, muss ich direkt an den Bus. Sehe ich das
richtig, das Ingo mit Service-Key arbeitet und Rudi ohne oder auch mit?
Denn Ingo schreibt ja ohne Service-Key benötigt man ne Schaltung dafür!?
Daher auch meine Frage nach einer passenden Platine ... Denn wenn dafür
noch ne Schaltung benötigt wird, dann könnte man die ganze Sache auch
auf eine Platine basteln.
Gruß
Jens
Also an der Service-Key-Buchse gibt es das Bus-Signal mit +-2,5 Volt. Ab
Bus (also dort wo die RC30 oder RC35 dran hängt) kommen 12 +-2,5 Volt an
und können nicht einfach ohne Schaltung an den ATmega8 angeschlossen
werden.
Habe nur zwei Brücken auf der Platine eingelegt, ein Adapterkabel ohne
Elektronik gebastelt und es hat funktioniert.
Habe die CRC-Berechnung noch mal mit dem Generator-Polynom berechnet.
Hat laeider nicht funktioniert. Werde mal wenn ich Zeit habe einfach
alle möglichen Berechnungen durchlaufen (Startwerte 0x00-0xff, XOR am
Ende 0x00-0xff und Generatorpolynome 0x00-0xff) und dann sollte sich das
Geheimnis irgendwie lüften lassen.
Es ist jedenfalls kein simples XOR oder addierung über alle Werte.
Standart CRC-8 funktioniert auch nicht.
Aber für das simple mitloggen braucht man erst mal keine CRC. Aber
irgendwann möchte ich ja auch mal die Schaltprogramme ändern. spätestens
dann geht es nicht ohne CRC-Berechnung.
Gruß
Ingo
Zur 2107:
Anbei die ersten Daten der Platine. Der Anfang (rot) ist noch vom
Versuchsaufbau mit einigen Störungen auf den langen Datenleitungen. Was
sich die Leitungen eingefangen hatten, wenn der Brenner startet, ist
schon nicht schlecht.
@IngoF
> Habe die CRC-Berechnung noch mal mit dem Generator-Polynom berechnet.
Ich habe es auch schon mit Bruteforce versucht. Filter dir einfach mal
eine kurze Nachricht, die sich zyklisch ändert. Am besten das Datum.
Dort sieht man sehr schön wie sich die CRC ändert. Für ein paar dieser
Nachrichten kann die CRC berechnet werden, und für andere wieder nicht.
Sehr komisch die Berechnung.
Ich habe mir diese Nachrichten genommen (etwa 10) und habe dann per
Bruteforce das gemeinsame Polynome/Startwert/XOR-Endwert gesucht. Leider
ohne Erfolg (Fehler nicht ausgeschlossen).
Bin auch gerade dabei. Habe zwei Nachrichten genommen und schreibe
gerade eine BatchDatei....
Welchen Teil hast Du denn zur Berechnung eingeschlossen?
vielleicht werden die ersten (adress)Bytes ja nicht mit einbezogen.
Versuche mich gerade an diesen beiden:
10 88 14 00 03 6e 00
10 89 29 00 01 90 00
Berechne die Checksumme über alles inkl. der Prüfsumme (6e und 90) und
ignoriere das break (00).
Dann sollte beim richtigen Polynom oder Berechnung 00 als Prüfsumme
herauskommen.
Gruß
Ingo
> Welchen Teil hast Du denn zur Berechnung eingeschlossen?> vielleicht werden die ersten (adress)Bytes ja nicht mit einbezogen.
Deswegen habe ich immer den gleichen Nachrichtentyp genommen. Da sollte
es bei CRC8 keine Probleme geben, da der Startwert immer gleich ist.
> Berechne die Checksumme über alles inkl. der Prüfsumme (6e und 90) und> ignoriere das break (00).
Ja.
> Dann sollte beim richtigen Polynom oder Berechnung 00 als Prüfsumme> herauskommen.
Genau.
@Jens H.:
> Daher auch meine Frage nach einer passenden Platine ... Denn wenn dafür> noch ne Schaltung benötigt wird, dann könnte man die ganze Sache auch> auf eine Platine basteln.
Ohne Service-Key benötigst du eine kleine Schaltung für den RX. Der
MEGA8 wäre dafür geeignet, da man die Kommunikation zur Heizung über
eine Software-UART realisieren muesste (Frame-Error). Der MEGA hat ja
nur eine UART. ...
Mario schrieb:
> @Rudi> heute habe ich Deinen C-Quellcode auf den Atmega128 angepasst und> übersetzt. Als C-Unwissender hatte ich mich ja schon geoutet ;-).> Mir fehlt noch das Verständnis, an welchem Port das TTL-Signal des> EMS-Bus angeschlossen wird.> In Deinem Code sehe ich immer nur, dass auf dem gleichen USART gelesen> und geschrieben wird. Das kann ja aber nicht sein.> Bitte hilf mir auf die Sprünge.>> Danke,> Mario
@Rudi
als Antwort schriebst du, der Mega8 hat nur einen Usart.
An Rx den EMS-Bus und an Tx kommen die Daten raus ????
Dann kannst du aber doch nicht ZUM Bus schreiben ??? Verwirrung ???
Noch `ne Frage:
Würdest du das Hex und die Configuration dafür rausrücken?
Gruß Helmut
@Helmut
Also zur Zeit gibt es nur ein "Interface" zum loggen. Wenn man schreiben
will benötigt man entweder einen zweiten UART oder einen zweiten
ATMega8.
Allerdings müsste man sich noch Gedanken über "Schaltung" machen die
auch auf dem selben Bus senden <b>und</b> empfangen kann.
Aber darüber kann man sich Gedanken machen wenn die CRC bekannt ist.
Ohne die CRC-Berechnung nützt das "senden können" leider ganrichts wenn
die Heizung die wegen Übertragungsfehler ignoriert. Und jedes Telegramm
evtl. 256 mal zu senden ist auch keine Lösung.
Habe gerade ein Batch Datei geschrieben die die CRC-Berechnung für fast
alle Parameter die man angeben kann durchführt.
Es sind 1048576 Berechnung für die mein PC vermutlich 26 Stunden
brauchen wird.
Dummerweise wird die LOG-Datei etwa 8MByte groß und muss dann noch nach
den richtigen Werten durchsucht werden.
Vielleicht hat ja jemand eine Idee oder kann ein auswertescript oder
Programm schreiben.
jede errechnete CRC steht als Dezimalzahl in einer Zeile mit einem
Doppelpunkt als erstes Zeichen. Jeder Block besteht aus 4 Zeilen
(4Telegramme).
Die Datei muss nach vier gleichen aufeinanderfolgenden CRC-Prüfsummen
durchsucht werden. Eventuell reicht schon ein durchsuchen nach vier
aufeinander folgenden 0-CRC.
Gruß
Ingo
Ups.. das war alles nicht für Helmut gedacht....
@Helmut.
Der C-Quelltext wurde von Rudi ja schon gepostet. Kann aber auch gerne
die HEX-Datei hier hochladen die ich daraus erzeugt habe, falls Rudi
nicht schneller ist. Allerdings ist mein PC mit der HEX-Datei gerade mit
CRC-Berechnungen beschäftigt und ich muss warten bis er damit fertig
ist. Die Datei ist auf der anderen Partition :(
@all
wer eine Idee hat hier mal eine Kostprobe der CRC-Datei die gerade
entsteht:
Danke für den hinweis... Aber meine CRC-Berechnung müsste bald fertig
sein und das Script wird vermutlich auch nicht schneller als die
JAVA-Version sein. Fragt sich nur wie ich das Ergebnis durchforsten
soll...
Gruß
Ingo
Habe für diese Telegramme die CRC berechnet:
108811241829
108811181B52
10881400036e
108929000190
Habe fast alle möglichen Kombinationen berechnen lassen:
Polynom: 0x00 bis 0xff
Startwert 0x00 bis 0xff
Eingabe gespiegelt: true,false
Ausgabe gespiegelt: true,false
Ein abschließendes XOR habe ich nicht eingegeben weil die Berecnung
sonst 280 tage gedauert hätte. Aber wenn man bei den Telegrammen nach
gleicher Prüfsumme sucht erübrigt sich ja die Berechnung, oder?
Nur das Durchsuchen der Ergebnisse ist nicht ganz sooo einfach.
Habe schon mal versucht die vorkommenden Nullen mit Zeilennummer
(findstring in DOS) in eine Textdatei zu exportieren. Die Ergebnisse
habe ich in Excel geladen und durch Berechnung die vierer Blöcke zu
finden (Wert Zeile)-(Wert-Zeile-3). Also sollte als ergebnis 3 für die
vierer Blöcke herauskommen.
Alle Zeilen mit falschen Ergebnis gelöscht. Dann den Abstand mit Exel
errechnet. Dabei kam immer ein Abstand zwischen den Polynomen von 128
oder 256. Also gabe es wenn meine Überlegungen richtig waren nur bei
0x00 und 0x80 zu einem vierer Block mit CRC=0
Demanch wurde keine richtige CRC erkannt oder die CRC würde anschliend
noch mal mit XOR verknüpft.
Also müsste man nicht nach einem vierer Block 0 suchen sondern nach
einem Block mit vier selben CRC. Keine Ahnung wie ich das anstellen
könnte. mit Excel kann ich die Ergebnisse natürlich nicht einlesen weil
max 64k Zeilen erlaubt sind.
Gruß
Ingo
Na dann bruach ich ja garnicht weitersuchen.... Dann kann es keine
"richtige" CRC-Berechnung sein sondern irgendwelchen Berechnungen.
Kann es vielleicht sein dass es doch keine Prüfsumme ist?
Bei deinen Beispielen gibt es ja nur 2 Prüfsummen für 20 verschiedene
Telegramme. Was macht denn dann eine Prüfsumme für einen Sinn wenn die
Prüfsumme keine Sicherheit bietet?
Bei anderen Telegrammen habe ich allerdings festgestellt dass sich die
"Prüfsumme" schon ändert wenn sich nur ein einziges Bit geändert hat.
08 00 18 00 07 01 11 00 00 00 00 00 60 80 00 02 0D 01 1D 00 00 0C 30 48
00 CB FF 00 00 4B 00
08 00 18 00 07 01 10 00 00 00 00 00 60 80 00 02 0D 01 1D 00 00 0C 30 48
00 CB FF 00 00 94 00
Gruß
Ingo
Aus den Fotos habe ich mal den angehängten Schaltplan extrahiert. Die
Werte für die Widerstände und Kondensatoren kann ich nicht erkennen. R2,
1003 (100k) konnte ich erkennen. Die Widerstände werden möglicherweise
für die Modulerkennung benötigt.
Ich habe versucht ohne die R/C-Beschaltung mit 2400,8N1 ein Byte 0x02
(STX) zu schicken, darauf erhalte ich keine Antwort (DEL, 0x10). Wird
ein eingestecktes KM271 irgendwo im Display-Menue angezeigt?
@IngoF
> Kann es vielleicht sein dass es doch keine Prüfsumme ist?> Bei deinen Beispielen gibt es ja nur 2 Prüfsummen für 20 verschiedene> Telegramme. Was macht denn dann eine Prüfsumme für einen Sinn wenn die> Prüfsumme keine Sicherheit bietet?
Nene, der letzte Wert ist die XOR über alle Daten+CRC ;-)
Die CRC8 ist eine schwache Prüfsumme, aus diesem Grund ändert sich die
auch relativ gleichmaessig mit den Daten.
Je nachdem welches Bit sich in welchem Byte ändert, geht es in die CRC
anders mit ein. Es ist auf alle Fälle ist die CRC kein einfaches XOR.
> Wird ein eingestecktes KM271 irgendwo im Display-Menue angezeigt?
Im Installationsmenue erscheint unter KESSEL der Menuepunkt
ABGASTEMPERATURSCHWELLE, wenn das KM271 erkannt wurde.
Rudi schrieb:
> Nene, der letzte Wert ist die XOR über alle Daten+CRC ;-)
Dann habe ich Dich falsch verstanden.. Ich dachte die A3 und A0 wäre die
Prüfsumme... deswegen auch meine Verwunderung. 20 verschiedene
Telegramme und jedesmal die Prüfsumme "A3". Was ist denn die A3?
> Je nachdem welches Bit sich in welchem Byte ändert, geht es in die CRC> anders mit ein. Es ist auf alle Fälle ist die CRC kein einfaches XOR.
Hatte es so verstanden dass eine CRC durch eine Polynomdivision
errechnet wird. Wenn die anders errechnet wird ist es keine CRC sondern
nur eine andere Art der Prüfsumme, oder habe ich das
falsch verstanden.
Hatte auch mal einige Prüfsummen für Telegramme mit XOR berechnet und
habe keine Übereinstimmung gefunden. Habe wohl was falsches
berechnet.... Werde das auch mal testen...
Gruß
Ingo
@Rudi:
Richtig, das R/C Netz R1/R2/C5 stimmte nicht. Gegenüber dem Foto ist im
Schaltplan der Edgeconnector um 180° gedreht, damit er mit der Aufsicht
auf die Steuerung von vorne übereinstimmt. Zur Orientierung noch ein
Lageplan des Modul-Steckverbinders auf der Busplatine mit den
Pinnummern.
chipshuffler schrieb:
> Wird ein eingestecktes KM271 irgendwo im Display-Menue angezeigt?
Wenn man am Drehknopf dreht erscheint nach der Kesseltemperatur dann
die Abgastemperatur. Man muss also nicht ins Installationsmenue.
Kennt jemand eine günstige Bezugsquelle für einen geeigneten PTC
für die Abgastemperaturbestimmung?
@Joachim K.
Es gibt bei B. eine Liste mit den Werten und Bezeichnungen für die
unterschiedlichen PTC, hatte ich mal gesucht, aber keinen Link mehr.
Die Module werden über die Temperatursensoren identifiziert und nicht
über Steuerleitungen ... ;-). Die Leitungen gehen an die Steuerplatine
und dann die ADC-Werte über das Flachbandkabel an die Displayeinheit,
die diese dann identifiziert. Alles sehr abenteuerlich ...
@chipshuffler
Schau dir die Sensorleitungen besser nochmal an. Das ist übrigens eine
Schutzbeschaltung für die Eingange mit Pullup oder Down. Mach dir deine
Heizung nicht kaputt ! Da hängt ein ADC dran.
@Ingo F.
> Was ist denn die A3?
XOR über die Daten und CRC
> Wenn die anders errechnet wird ist es keine CRC sondern> nur eine andere Art der Prüfsumme, oder habe ich das> falsch verstanden.
Ich denke das ist schon eine CRC. Evtl. etwas abgeändert. Ich habe mich
damit nicht wirklich tiefgründiger beschäftigt. Ich sehe aber in den
Betriebsstunden einen guten Ansatz um diese zu finden.
Rudi schrieb:
> @Joachim K.>> Es gibt bei B. eine Liste mit den Werten und Bezeichnungen für die> unterschiedlichen PTC, hatte ich mal gesucht, aber keinen Link mehr.>> Die Module werden über die Temperatursensoren identifiziert und nicht> über Steuerleitungen ... ;-). Die Leitungen gehen an die Steuerplatine> und dann die ADC-Werte über das Flachbandkabel an die Displayeinheit,> die diese dann identifiziert. Alles sehr abenteuerlich ...
An das KM271 kann man einen PTC zum Messen der Abgastemperatur
anschließen (FG 1 und 2 in meinem Photo der Platine). Ich suche
mal den Wert raus.
@Joachim K.:
Nach der Kennlinie müsste die 2107 mit ca. 10k als Ersatz für den
Abgfasfühler-PTC erkennen.
Ich habe ein Paar Widerstände aus deinem Foto erraten (siehe Schematic)
und Testweise an die 2107 angeschlossen (ohne den FG-Fühler). Damit
erkennt die 2107 das "Modul" noch nicht.
Kannst du nochmal schauen, welche Werte die Widerstände (bzw. womit sie
beschriftet sind)auf deiner Platine haben?
Ich vermute aber, dass die Kommunikation über das KM271 auch laufen
müsste, wenn kein Abgasfühler angeschlossen ist. Der zweite ADC Eingang
(festverdrahtet mit Widerstand) auf dem K4 Board-Stecker ist dann wohl
für den Solar-Fühler (FM244).
Hallo,
Zum EMS-Telegrammaufbau habe ich noch eine Kleinigkeit herausgefunden:
das Erst Byte ist die Absenderadresse, das zweite Byte die Zieladresse.
Wenn das Ziel auf dieses Telegramm antworten soll ist das Bit 7 gesetzt.
10 88 ...ist ein Telegramm von 10 (RC30/RC35) zu 08 (UBA3/MC10) mit der
Aufforderung zu antworten.
Die UBA3/MC10 antwortet dann mit dem Telegramm 08 10 ...
Alle ein Byte Telegramme mit Bit 7 gesetzt ist ein normales Polling.
90 soll dann 10 aufordern zu antworten. Wenn die RC30 oder RC35
angeschlossen ist antwortet diese. Wenn es nichts besonderes gab
antwortet dir RC30/35 nur mit der eigenen Adresse 10
Wenn Daten gesendet werden kommt als nächstes ein Byte für den
Telegrammtyp gefolgt von den Daten und zum Schluss die Prüfsumme.
Das Break ist immer der Abschluss vom Telegramm.
Habe inzwischen auch ein eigenes Interface mit einem OP damit ich nicht
immer zum Dachboden muss um was zu testen. Jetzt kann ich mich auch
parallel zur RC30 dranhängen und mitloggen.
Gruß
Ingo
Arrrggggghhhhhhhh... Und ich wundere mich wieso der Thread jetzt so
riesig geworden ist.
RE-ABO... aus irgend einem Grund habe ich keine Mails mehr bekommen.
Sorry Leute, aber ohne die Mailbenachrichtigungen habe ich den Thread
irgendwie vergessen.
Habe eben mal alles neue seit Oktober überflogen und muss sagen:
@Rudi:
Godlike! wirklich godlike. Mehr fällt mir dazu gerade nicht ein :)
Die Frage nach meinem zweiten Heizkreis (nein, habe nur einen an der
logamatic aktiv) hat sich ja wohl erübrigt.
Ich werde mir den Thread noch vor Weihnachten nochmal im detail
anschauen muessen... Freue mich jetzt schon darauf.
Ich überlege mir gerade ob ich die ganzen Informationen im Wiki
strukturieren soll (mittlerweile unwichtig gewordenen "schrott"
natürlich ausfiltern).
Besteht da interesse, dann würde ich das schön strukturiert aufbauen und
den Link posten?
Gruss, Malte
PS: hoffentlich bleibt die mailbenachrichtigung jetzt aktiv, hab
momentan wieder viel zuviel aktives im Kopf ;)
Hallo Malte,
ist eine gute Idee... Vermutlich wird das dann aber nur ein Wiki über
die 2107. Oder gibt es da auch einen Bereich für den EMS-Bus (RC30/35)?
Gruß
Ingo
Ne, schon beide getrennt - ich versuche halt die infos so weit es geht
auseinander zu halten :-)
Ich habe mich aben mal hingesetzt und versucht, alles bisher
verifizierte in das Wiki zu strukturieren.
Dabei ist mir aufgefallen, dass in den letzten Wochen der Wunsch nach
einer Doku/Projektplattform gekommen ist.
An sich kann man sowas schon per SourceForge lösen...
Für die Dokumentation würde ich schon ein Wiki vorschlagen. Es kommt nur
darauf an wie durchdacht man das ganze strukturiert.
Ich könnte so ein Setup machen, so dass wir dann alle darin editieren
können (momentan ist es halt in meinem Scratchpad wiki drin).
Für Sourcen würde ich vorschlagen das ganze per SVN zu machen.
http://wiki.neo-soft.org/index.php/Heizungsschnittstellehttp://wiki.neo-soft.org/index.php/Heizungsschnittstelle/Logamatic2107http://wiki.neo-soft.org/index.php/Heizungsschnittstelle/ServiceKey
Also ich biete mich gerne an, das einzurichten und zu hosten.
@rudi:
sehe ich das richtig dass diese aufsteckplatine sowas wie eine
eierlegende Wollmilchsau werden soll? :)
Auf jeden Fall vielen Dank für deinen Breakthrough bei der 2107!
@all:
Habe ich das jetzt richtig verstanden, dass der neue Erkenntnisstand
(Logamatic 2107) wie folgt aussieht:
1) KM271 ist ausser dem FG Anschluss NICHTS anderes als ein TTL->RS232
Umsetzer?
2) Auf dem Sockel K4 liegen Spannungsversorgung (24 und 5V) sowie eine
asynchrone serielle Schnittstelle (RX/TX) sowie der I2C Bus (SDA/SCL)
auf?
3) Temperaturen werden nicht über I2C übermittelt sondern nur über die
RS232 oder eben als gemultiplexter ADC Wert am Flachbandkabel?
Ich frage mich nämlich gerade ob Rudis Aufbau nötig ist oder ob es für
mich auch einfacher gehen könnte (in Form einer Steckkarte für K4).
Muss zu meinem Leid sagen dass ich die Bestückung von miniaturbauteilen
nicht hin bekomme ;-)
Temperaturen brauche ich schon, werde deshalb wahrscheinlich nicht drum
herum kommen, ebenfalls die Bedieneinheit anzuzapfen :-)
Gruss, Malte
@Malte Bayer
> Ich frage mich nämlich gerade ob Rudis Aufbau nötig ist oder ob es für> mich auch einfacher gehen könnte (in Form einer Steckkarte für K4).
Wenn der Schaltplan für das KM271 klar ist, dann reicht es aus. Die
Daten kommen dann, nach der beschriebenen Methode, über die RS232.
@chipshuffler
Bist du schon weiter gekommen ?
@Malte Bayer
> Für die Dokumentation würde ich schon ein Wiki vorschlagen. Es kommt nur> darauf an wie durchdacht man das ganze strukturiert.
Das sieht doch schon gut aus. Hauptsache das wird für einzelne
Nachrichten nicht unübersichtlich.
> sehe ich das richtig dass diese aufsteckplatine sowas wie eine> eierlegende Wollmilchsau werden soll? :)
Nein ;-) Die Platine ist halt aus der Not und dem bisherigen Stand der
Dinge entstanden. Die Wahl der Bauteile liegt an der Platinengröße
(Preis) und den vorhandenen Bauteilen.
Die Datenerfassung ist auch nur ein kleiner Teil. Dazu kommen noch
diverse extra Temperatursensoren an den Wasserleitungen etc.. Ich kann
nur jedem die Überprüfung der richtigen Einstellungen der Heizung
empfehlen, besonders bei der 2107 gibt es schon einige Überraschungen
und Optimierungsbedarf. Je nach Budget für den Einbau und Heizungsbauer
können da schöne Geldverbrennanlagen entstehen.
Ja das ist schon mein Ziel dass ich das ding optimiere.
Ich habe die Heizung im Februar selbst mit eingebaut (parametrisierung
nicht dem heizungsmensch ueberlassen).
Komisch finde ich auch dass es nur 3 Gebäudetypen gibt - völliger
Quatsch bei meiner Konfiguration, da passt keine der 3 Einstellungen.
Das dumme im moment ist, dass ich mir zur zeit auf dauer im Heizraum den
hintern abfriere... da hats nur noch 10°C wenns draussen am Gefrierpunkt
ist.
Das war letztes jahr mit 32° noch anders ;-)
Ich versuche mal ob ich mit den bisherigen Infos an K4 weiter komme. den
Abgasfühler brauche ich ja hoffentlich nicht.
Wegen dem Wiki: Sowie es weitere Infos gibt mache ich daran weiter.
Ein Datagram zu dokumentieren ist da auch kein riesen Act, da kann ich
ein Template für machen.
Gruss & gute nacht, Malte
Nach gut einer Stunde bei 10°C im Keller gibts einige neue Ergebnisse:
@Rudi: Ja, die Schaltung war nicht richtig. Die Verbindung R3,C6,C7
stimmte nicht. Inzwischen wird das "Modul" erkannt und ABGAS --- wird im
Display angezeigt. Ich habe dazu einen 1k Dummy-Widerstand an FG Pin 1+2
angeschlossen.
Ich habe dann zum Anschluss an den PC einen USB-TTL-RS232 Adapter von
FTDI
http://www.ftdichip.com/Documents/DataSheets/Modules/DS_TTL-232R_CABLES_V201.pdf
angeschlossen. Damit umgehe ich den Umweg über RS232 und COM-Port, da
das Netbook nur noch USB und keine RS232-COM-Ports hat.
Hier die Verdrahtung mit den Farben aus dem FTDI-Datenblatt und den
Signalen aus dem angehängten Schaltplan:
Orange an UARTTX
Gelb an UARTRX
Schwarz an 0V
Grün/Braun verbunden (RTS/CTS)
Beim Einschalten sendet die 2107 mit 2400Baud,8N1 ein STX (02) als
Sendeaufforderug aus.
Dann folgt ein Protokoll mit der Prozedur 3964R (ein betagtes S5/S7 SPS
Kommunikationsprotokoll).
Danke an Joachim K. für die Fotos und die Protokollbeschreibung.
Angehängt ist mein Trace (der Anfang fehlt, ist aus dem Kopf
rekonstruiert).
Folgende Erkenntnisse gibt es:
Ein Protokollfehler wird mit NAK beantwortet (das letzte Byte ist immer
die Prüfsumme als XOR vom ersten bis zum letzten Byte).
04 00 07 01 81 A5 00 E3 10 03 D6
Es gibt kein Längenbyte in der Nachricht. Der Parser sucht nach 10 03
(DLE, ETX), nach folgt die Prüfsumme.
Ein DLE (10) in den Daten wird beim Übertragen verdoppelt und geht in
die Prüfsummenberechnung ein (muss beim Empfangen wieder entfernt
werden).
Der LogMode wird mit EE 00 00 10 03 FD eingeleitet.
Danach kann mit 10 (DLE) jeweils der nächste Datensatz angefordert
werden.
Zuerst folgt der Inhalt des EEPROMs Page 0 und 1. Das EEPROM ist in
Records mit 6 Bytes+Prüfsumme eingeteilt. Die EEPROM Prüfsumme wird
nicht übertragen, dafür wird ja eine Nachrichtenprüfsumme über die
Nachricht neu berechnet angehängt. Die Page 0 enthält die
Modus-Parameter, die Page 1 die Absenk/Heizzeiten. Die mit Adresse 0xxx
beginnenden Datensätze (EEPROM-Konfiguration) haben eine Länge von 10
Bytes+Prüfsumme.
Die EEPROM-Records an Adresse 0000 und 0038, sowie Adresse 0007 und 003F
sind (wahrscheinlich zur Verifikation) identisch und enthalten die
Heizkreis 1 und Warmwasser-Betriebsart/Soll-Temperaturen.
Ein 65 ("e" für empty) in den EEPROM-Daten kennzeichnet beim Lesen und
Schreiben zu ignorierende Bytes.
Nach Einigen Sekunden ohne Aktivität sendet die 2107 ein STX (02) als
Sendeaufforderung.
Nach den EEPROM-Konfigurationsdaten folgen die Ereignisse die an einer
16-Bit Adresse mit gesetztem Bit 15 (8xxx) erkennbar sind. Diese
Datensätze haben eine Länge von 5 Bytes + Prüfsumme und folgen der
Beschreibung von Joachim K.
Die nächste Frage ist nun, ob die Schreibzugriffe im Direktmodus mit dem
Führenden Byte 0xB0 (Parameter Setzen) oder 0xDD (Direktmodus)
stattfinden und welche Adressen für die Schreibzugriffe verwendet werden
können.
Mit 0xDC kommst du wieder in den Normalmodus und mit 0xDD Direktmodus.
Nach 60sec. ,ohne Nachrichten, schaltet die Anlage automatisch in den
Normalmodus.
Der Wert z.B. 0x80 XX ist die Adresse (Heizkreis 1) und ein Offset. Es
wundert mich das bei Joachim K. der Offset bei anderen Adressen nicht
bei 0 anfängt. Evtl. ein Schreibfehler !?
Mit B0 sollten die Parameter verändert werden können. Es kann aber sein
das die Adressen anders sind.
Versuch mal den Befehl 0xA1 <ADRESSE> zum lesen der Schaltuhrparameter.
Oder mit 0xA2 um die Monitordaten von <ADRESSE> zu holen. Immer im
Direktmodus.
Sehen die Nachrichten im Normalmodus anders aus ?
Thx Chipshuffler.
Wiki geupdated.
Habe eben einen KM271 Nachbau als kleine Steckkarte geroutet.
Muss nochmal gegenchecken ob ich mich nicht mit den Anschlüssen vertan
habe, mache so selten doppelseitige Platinen ;)
Werde das ganze dann am Wochenende mal aufbauen und testen, mal sehen,
wenn alles klappt bin ich ab nächster woche dabei mit Protokolltests.
Gruss, Malte
Dann denk auch gleich an Serienwiderstände in den Datenleitungen. Die
Anlage rotzt ganz schon rum. Ein geschirmtes Kabel, z.B. altes USB-Kabel
ist auch von Vorteil.
@Rudi:
Hatte vor den XPORT den ich hier eh noch rumliegen habe direkt auf das
Steckmodul drauf zu pflastern.
Dann erspare ich mir auch gleich Frostbeulen durch zu langen Aufenthalt
@ 10°C und kann bequem vom Sofa aus kommunizieren ;)
Gleichzeitig habe ich noch alle Anschlüsse (ausser die 4 für FG) auf
einer Pinleiste ausgeführt, falls man alternativ dann doch noch nen
externen RS232 Wandler einbauen möchte.
Die Bestückungsseite zeigt nach hinten wenn man vor der Steuerung steht.
Das heisst man hat da noch massig platz, ein Sandwitch drauf zu packen
(auf der anderen Seite ist ja K3 und K1 im Weg :)
Was für ne Spannung hat die Zener überhaupt? Braucht es die überhaupt?
Soweit mein Verständnis da geht, begrenzt diese doch die Spannung die
ich extern an FG anlegen könnte. Da da aber entweder nichts oder ein
Widerstand dran hängt ist die doch an sich sinnlos oder?
Selbst ein 0 Ohm Widerstand sollte da nicht weh tun, oder habe ich mich
da verguckt?
@all: ich verifiziere das Layout noch, wenn alles passt schmeisse ich
die Boarddaten und natürlich jegliche neuen Erkenntnisse ins Wiki.
Ist Pin 3/4 eine Versorgungsleitung ?
Sollten es nicht auch 100k an 4/8 und 3/7 und dann 1k an 8/7 auch tun ?
Die Diode soll wohl eher den Eingang schützen. Wenn da ein paar Meter
Kabel dran kleben, fängst du dir alles ein was da so in der Luft liegt.
Die Kondensatoren sind wohl eher zum Glätten der Signale gedacht, evtl.
ein RC-Filter gegen Netzbrummen (R1/C7) (Versorgungsspannung???, kann da
mal jemand messen???) und bei R2/C5 das gleiche für den Eingang.
Die Anzeige --- als Wert, bedeutet ein Wert ausserhalb der Spec..
Beim XPORT würde ich das Gehäuseground vom Netzwerk "erstmal" nicht mit
dem Ground der Anlage verbinden (wenn es nicht schon intern mit Ground
verbunden ist).
Hallo,
ich habe in Verbindung mit einem Buderus Service Key versucht meine
Heizung (GB-125) abzufragen. Leider konnte ich an den Pins 2,3 der RS232
des Keys keine keinerlei Daten sehen können (via Oszi). Muss der Key via
Steuerzeichen aktiviert werden oder was könnte ich sonst noch falsch
machen ? Wer kann mir hierzu helfen ?
Die mitgelogten Telegramme hier haben nichts mit dem Service-Key
(Hardware) von Buderus zu tun. Im Servicekey ist irgendwelche Hardware
drin die die Kommunikation mit der Heizung übernimmt.
Hier geht es ja um die Schnittstelle an der der Service-Key
angeschlossen wird.
Soweit ich weiß sendet die Buderusoriginal-Software an den Servicekey
ein STX (0x2). oder ein aderes Steuerzeichen damit der Servicekey
antwortet.
Habe keine Ahnung wie die Kommunikation mit dem Service-Key genau läuft.
Gruß
Ingo
> Ist Pin 3/4 eine Versorgungsleitung ?
Vermutung: 3 = AGND, 7,4,8 sind ADC-Inputs für Vorlauf HK2, Abgas und
Solar.
Als ich einen der Eingänge mal mit 5V bauaufschlagt habe, zeigte die
2107 danach VORLAUF --- und einen Heizkreis 02 im Display und meinte
zeigte FEH FM241 (das Mischer-Modul) wäre nicht gefunden worden. Ich
habe den Heizkreis 02 dann per Menue entfernt und die Fehlermeldung
verschwand.
Die Kondensatoren sind als Tiefpass-Filter drin. Die grossen
Vorwiderstände 100k legen wohl nur die unbenutzten ADC-Eingänge
(Vorlauf, Solar) auf definierte Pegel, vermutlich wird dadurch aus das
KM271 vom FM244 Solarmodul im gleichen Steckplatz unterschieden.
> Sollten es nicht auch 100k an 4/8 und 3/7 und dann 1k an 8/7 auch tun ?
Für einen Nachbau als Dummy reicht das. Die Werte im Schaltplan sind aus
dem Foto "erraten".
@Joachim K. kannst du nochmal prüfen, wie die Beschriftung der 0805
Widerstände ist?
Die Kondensatoren sollten unkritisch sein (10nf-1uF). Weglassen wie bei
meinem Testaufbau geht auch). Ich habe ja keine Fühler angeschlossen.
@Rudi: Es sieht so aus als wäre bei den Status-Nachrichten wirklich 80
für HK1 und 81 für HK2, 84 für Warmwasser, 88 für Brenner/Kessel und 89
für sonstiges Verwendet und das nächste Byte zählt einfach von 00..xx
durch.
Der Versuch mit dem Direkt-Modus steht noch aus, die 3964R Prozedur
lernt gerade den Schreibzugriff...
> @Rudi: Es sieht so aus als wäre bei den Status-Nachrichten wirklich 80> für HK1 und 81 für HK2, 84 für Warmwasser, 88 für Brenner/Kessel und 89> für sonstiges Verwendet und das nächste Byte zählt einfach von 00..xx> durch.
Die 89 ist die Konfiguration.
Inzwischen konnte ich auch Schreibzugriffe auf die 2107 zu machen. D.h.
Ein- Ausschalten (Automatik, Tag, Nacht Manuell) sind getestet und
funktionieren über die KM271 Schnittstelle. Die Telegramme entsprechen
der Doku für die 4311/12, bis auf die ersten beiden Bytes (B0 und
ECO-CAN Adresse).
D.h. das Telegramm zum Verändern der Betriebsart/Solltemperaturen:
(02) 07 00 65 65 NN TT MM 65 (10) (03) (CC)
07 = TYP Heizkreis 1
00 = OFFSET 0 für Heizkreisparameter
65 = Dont Care
NN = Nach-Solltemperatur in 0.5C
TT = Tag Solltemperatur in 0.5C
MM = Betriebsart (00=Manuell Nacht, 01=Manuell Tag, 02=Automatik)
CC = XOR-Prüfsumme
In Klammern das 3964R Framing.
Eine Umschaltung DD/DC Direktmodus/Normalmodus scheint nicht
erforderlich zu sein.
Zum Senden wird vorher 0x02 geschickt, die 2107 Antwortet mit 0x10. Dann
folgt das Telegramm (s.o) mit DLE(0x10), ETX(0x03) und Prüfsumme am
Ende. Bei fehlerfreiem Empfang antwortet die 2107 wieder mit DLE(0x10).
Warmwasser Parameter ändern:
(02) 0C 07 65 65 65 WW 65 65 10 03 CC
0C = TYP Warmwasser
07 = OFFSET 7 für Warmwasserparameter
65 = Dont care
WW = Warmwasser Solltemperatur in 1.0C
CC = XOR Prüfsumme
Betriebsart Warmwasser ändern:
(02) 0C 0E MM 65 65 65 65 65 10 03 CC
MM = Betriebsart (00=Manuell Nacht, 01=Manuell Tag, 02=Automatik)
Danach sendet die 2107 alle durch den Schreibzugriff veränderten
Ereignisse. Ich sehe am Ende übrigens noch Ereignisse vom Typ 0x91 die
in keiner 4311/12 Doku beschrieben sind:
TYP 91 ADDR=0x9142 0
TYP 91 ADDR=0x9143 32
TYP 91 ADDR=0x9144 110
TYP 91 ADDR=0x9145 0
TYP 91 ADDR=0x9146 255
TYP 91 ADDR=0x9147 0
TYP 91 ADDR=0x9148 0
TYP 91 ADDR=0x9149 0
TYP 91 ADDR=0x914a 0
TYP 91 ADDR=0x914b 0
TYP 91 ADDR=0x914c 0
TYP 91 ADDR=0x914d 0
Hat eigentlich irgendjemand einen Service-Key oder RS232-Gateway von
Buderus den ich mir mal für ein paar Tage ausleihen könnte? Finanziell
würde man sich bestimmt auch einig. Wäre ganz interessant um die
Prüsumme herauszubekommen.
Gruß
Ingo
Hallo Rudi,
man könnte z.B. den Betriebsstundenzähler jede Minute Abfragen. Bei mir
wird häufig nur jede zweite Minute der Betriebstundenzähler angefragt.
Manchmal ist sogar eine Pause von 15 Minuten. Man hätte mehrere Werte
und könnte sich die Zählerstände so sortieren dass vielleicht nur ein
Bit geändert wird und kann sehen wie sich das auf die Prüfsumme
auswirkt.
Vielleicht könnte man sich ein Telegramm über das man mit der
PC-Software Daten sendet nehmen und beliebig verändern und sehen wie
sich das auf die gesendete Prüfsumme auswirkt. Wenn sich der Service-Key
ähnlich wie das RS232-Gateway oder Fernwirkmodem verhält brauch man beim
Senden über den Service-Key keine Prüfsumme. Oder es ist vielleicht nur
ein simples XOR wenn es doch eine Prüfsumme gibt.
Sieht auch fast so aus als ob vielleicht jemand mit einem Notebook mit
orignal-Software (oder vergleichbar) mal vorbeischaut. Der Service-Key,
RS232-Gateway, Fernwirkmodem, ... ist wohl das Problem.
Kann natürlich sein dass das alles auch nicht weiterhilft...
Und natürlich gaaanz viel Neugier auf den Service-Key.
Gruß
Ingo
Ah sorry, hatte ich uebersehen.
Auch mit 1k geht nix.
Also ich habe als Anzeige nur Kessel, WW, Aussen und Betriebsstunden.
Wenn ich im HK1 die (nicht vorhandene) Fernbedienung aktiviere habe ich
noch ne weitere Temperatur "Raum1" die mit --- angegeben ist (normal, is
ja kein Signal da).
Das wars dann auch schon.
Falls ich nicht irgend einen Leichtsinnsfehler im Layout habe (den ich
nicht finden kann) verstehe ich nicht wieso das Teil nicht als Modul
erkannt wird.
@Chipshuffler: Stimmt der Schaltplan mit deinem Selbstbau überein?
Welche Werte hast du für R1 R2 und C5 verwendet? Hast du D1 weg gelassen
oder wenn ja mit welchem Wert bestückt?
Gruss, Malte
Hallo,
die KM271-Nachbauplatinen sehen ja schon ganz gut aus. Vielleicht kannst
Du ja noch die beiden Abgriffe für RX/TX vom XPORT oder MAX232 neben die
richtigen UART-Pinne setzten. Dann könnte man die richtige Schnittstelle
jumpern und muss keine Kabel umstecken
Gruß
Ingo
@hellraiser:
Es sieht so aus, als wäre das Layout genau seitenverkehrt
(Bottom/Top-Layer Pins vertauscht), d.h. Pin 1 und 2 vertauscht, Pin 3
und 4 vertauscht etc. Dadurch sind auch 0V und 5V vertauscht und der
SP232 dürfte gelitten haben.
Ich habe alle Kondensatoren und D1 weggelassen. Die Werte für R1 und R2
sind wie im Schaltplan bestückt.
Ich habe dein PCB um 180° gedreht und mit dem Foto von himtronics
verglichen. Nach Vergleich mit dem Schaltplan bin ich der Meinung, dass
das Pinning im Schematic stimmt. Die Position der Pinnummern in dem
Kasten unten bezieht sich auf die Position der Buchse auf der
Busplatine.
@IngoF: Ja, ist jetzt drin. Ich bin mir nur noch nicht sicher ob ich
RX/TX vertauscht habe. Wird sich in der nächsten Woche zeigen :)
@chipshuffler:
Viel schlimmer. ich muss irgendwie beim layouten einen totalaussetzer
gehabt haben. Ich schiebe es mal auf die vielen Telefonate mit den
Kunden zwischendrin ;-)
Spannungsversorgung war richtig rum. Die Pins für das
Widerstandsgebrösel auch, nur habe ich mit der Verschaltung total
gepennt (böser fehler drin, aber die logamatic lebt noch :)
@all:
Habe jetzt die rev C für das Selbstbaumodul soweit fertig, dass es
korrekt erkannt wird.
Ich versuche noch die Widerstände auf einen PT1000 abzustimmen, so dass
die Abgastemperatur nachher auch halbwegs korrekt ist und nicht irgend
einen Mist anzeigt der eh nicht stimmt.
http://wiki.neo-soft.org/index.php/Heizungsschnittstelle/Logamatic2107/K4#KM271_Selbstbau-Modul
Alles was ich bisher habe ist im wiki aktualisiert. Aber bitte sparsam
mit Kommentaren zu den Bildern, ich habs echt schwer mit diesem scheiss
doppelseitigen Basismaterial mit weisser Schutzfolie. Ich hätte die
dinger einfach in die tonne kloppen und mir noch nen stapel Bungard
Material holen sollen :-P
Ansonsten werde ich jetzt die Arbeit mal ruhen lassen.
In diesem Sinn wünsche ich euch allen schöne Feiertage!
Gruss, Malte
Soweit ich das bisher beurteilen kann funktioniert das Einsteckmodul.
bekomme Antwort von der Steuerung (Logmode aktiv, dann die events
pollen).
Mir ist da allerdings etwas aufgefallen: Heizkreis 2 habe ich im Setup
auf "Kein" eingestellt, also abgeschaltet.
Abgastemperatur mit 1K Widerstand bei 208°C.
Soweit okay vorerst.
Das komische ist aber dass sobald das Modul drin steckt die
Kesseltemperatur manchmal springt. So passiert es, dass die temperatur
normal im 1° Schritt unter irgendwas um 55° sinkt und dann der Brenner
gestartet wird. kurz danach springt die temperaturanzeige für den kessel
aber auf 67°C (für ein paar sekunden, dann zurück auf 54°C. Dieses
Springen stoppt den brenner (halbwegs logisch).
Dumm nur dass das immer wieder passiert und der brenner dann für 2-3 sec
zündet, dann aber wieder abgeschaltet wird.
Ich habs noch nicht raus was das sein könnte, kann das jemand bestätigen
oder ist es nur bei mir so?
Mir ist aufgefallen dass ich das springen manchmal erzwingen kann indem
ich am modul "wackle". Schlachten Kontakt kann ich mir aber schlecht
vorstellen, habe extra vorher die Kupferkontakte die in den Sockel gehen
blank gereinigt.
(vergolden kann ich leider nicht ;)
Werde nächste woche nochmal weiter probieren. In dem Zustand lasse ich
das Modul erstmal nicht eingebaut.
Gruss, Malte
Bei mir springt die Kesseltemperatur nicht, wenn das Modul eingesteckt
ist. Ich vermute, dass ein Offset am AGND-Pin am Modulstecker die
Messung der Kesseltemperatur beeinflusst.
Okay, das muss ich nochmal genauer angucken. Mir ist eben aufgefallen
(ja ich kanns nicht lassen) dass es nicht nur die kesseltemperatur ist.
Alle Temperaturen stimmen mit aktivem Modul nicht, Alle Temperaturen
werden niedriger ausgegeben als tatsächlich gemessen kurz bevor das
modul eingesteckt wurde (Kessel, Speicher, Aussentemperatur). Habe jetzt
auch mal nen 500 Ohm Widerstand als Abgassensor verwendet -> 218°C, also
sollen 500 Ohm 10° Unterschied ausmachen? da stimmt echt was nicht bei
mir.
Ich versuche es erst nochmal mit nem steckbrett.
Vielleicht habe ich ja auch Leiterbahnen auf der Platine ungünstig
gelegt, rudi meinte ja "das ding rotzt rum"... Für Analogmessungen nicht
gerade von Vorteil.
Gruss, Malte
Hallo,
da Rudi nachfragt...
Ich habe schon mal eine erste Testversion von meinem Java-Programm.
Dazu muss Java 1.6 installiert sein.
Das ZIP-File entpacken.
MySQL muss installiert werden und der Ordner EMSlog aus dem ZIP in das
Daten-Verzeichnis von MySQL kopiert werden und gestartet werden.
Oder in der MySQL die SQL_Create.sql ausgeführt werden. Das SQL-Script
erzeugt die Datenbank EMSlog und die Tabellen für die Telegramme 080018,
080019, 080034 und 10003e an.
Das Java-Programm ausführen. Den COM-Port auswählen an dem der Wandler
hängt und auf [Verbinden] klicken. Die Daten für MySQL angeben
(IP-Adresse, User, Passwort) und auch auf [Verbinden] drückenDas
eingetragene Defaultpassword ist password.
Die Daten werden von dem Wandler der an der Schaltung hängt empfangen,
angezeigt und in der MySQL geloggt. Gleichzeitig werden die Daten aus
der MySQL-Datenbank ausgelesen und in der Grafik angezeigt.
Bevor man das Programm schließt natürlich auf [Trennen] drücken.
Im Moment müssen beide Verbindungen aufgebaut werden. Später sollen man
mit dem Programm auch nur loggen oder nur die Daten auswerten können. Je
nachdem was man will.
Natürlich benötigt man noch den "Wandler" mit ATMega8 und den Komparator
der programmiert sein muss. Leider kann ich mein HEX-File nicht
wiederfinden. Notfalls eben den von Rudi geposteten C-Quelttext
kompilieren und programmieren.
Gruß
Ingo
Hallo,
ich suche ein Interface für meine Heizung um die Daten in meiner
Hausautomation zu visualsieren und bin über den Thread hier gestolpert -
echt interessant ! Hat jemand eine Leerplatine oder einen Bausatz über ?
Gruß Andreas
Hallo Rudi
habe mal einen kleinen Versuch gestartet. Irgendwo war hier ein link zu
einem anderen Thread. Dort war eine Version mit einer ZenerDiode die mit
Transistor auf den Bus geschaltet wurde um die Spannung herunter zu
ziehen. Habe mal gemessen dass dort dann 160mA fliesen. An der Z-Diode
fallen also 1,5 Watt ab. Hatte anders als dort angegeben eine
8,2-Z-Diode genommen statt der 7,5Z-Diode. Allerdings ist dann die
Spannung noch höher als 10 Volt. Hatte nur gerechnet ohne mir die
Kennlinie der Z-Diode anzusehen.
Also war die Lösung mit 7,5-Volt Z-Diode und zwei normalen Dioden
(Brückengelichrichter damit die Polung des Busses egal ist) plus
Transisitor.
Nach dem Senden ist allerdings erst mal längere Stille auf dem Bus. Was
auch schon mal öfter bei langen Telegrammen der RC30 vorkommt.
Habe mal das mit Deiner Schaltung getestet und noch einen freien Treiber
vom MX232 genommen um den Transistor anzusteuern. Habe dazu die
Sendeleitung vom PC die ja noch nicht benutzt wurde einfach auf den
MAX232 geklemmt.
Allerdings müsste ich meiner Software erst noch angewöhnen auf das
Polling zu reagieren und das richtige Senden zu können.
Gruß
Ingo
> Nach dem Senden ist allerdings erst mal längere Stille auf dem Bus. Was> auch schon mal öfter bei langen Telegrammen der RC30 vorkommt.
Das könnte auch am fehlenden "Frameerror" liegen, da alle Teilnehmer auf
das Ende warten und dann wohl in den Timeout rennen.
Ach ja.......
Wenn man aber noch einen Master nimmt bräuchte man den ja nur mit
normalen Port-Pins verbinden. Der Slave könnte sich bemerkbar machen
wenn ein Polling mit einer bestimmten Adresse kommt und der Master
könnte dann einfach sein Telegramm abschicken. Dazu müsste man nicht
unbedingt einen zweiten UART nehmen. Ein einfacher Port-Pin mit
entsprechender Assembler-Programmierung könnte reichen. Oder gibt es
einee Art Software-Uart denn man mit C verwenden könnte?
Ideal wäre ja noch ein kleiner Buffer im Master der die Daten decodiert
und zwischenspeichert und dann direkt über Ethernet in die SQL-Datenbank
schreibt. Habe mir inzwischen ein gebrauchten Laptop gekauft. Der könnte
dann automatisch zu einer bestimmten zeit hochfahren, MySQL starten und
nach einer bestimmten Zeit wieder herunterfahren. Dann könnte mann den
Jahresverbrauch noch stärker drosseln. Sind zwar nur 20Watt, aber selbst
das sind schon immerhin 170kW/h. Mein normaler Mini-Tower braucht
immerhin 100W. Der Laptop hat natürlich noch den Vorteil der
Akkupufferung.
Gruß
Ingo
>Das könnte auch am fehlenden "Frameerror" liegen,
Wäre möglich.. allerdings habe ich ein Zeichen und ein Break gesendet.
Dieses Break vom Terminal-Programm ist um einiges länger als das
EMS-Bus-Break. Man müsste also noch sehen ob man am PC diese Break-Länge
ändern kann. Aber wenn man einen Master einbaut könnte der automatisch
die richtige Länge erzeugen.
Gruß
Ingo
Hallo,
Habe eine 2107 mit km271. Ich hatte vor laengerer Zeit schon mal mit dem
3964R etwas experimentiert und ein paar Mittschnitte gemacht von der
Windows Software (die leider durch crash abhanden gekommen ist). Leider
bin ich aus Zeitgruenden nie dazu gekommen es weiter zu analysieren bzw
zu implementieren. Hatte aber mit http://libnodave.sourceforge.net/ ein
wenig gespielt bis mir die Software zum Vergleich fehlte.
Hat hier schon jemand versucht das hier gelernte ueber die Libnodave
laufen zu lassen?
Ich hatte damals eine NSLU2 dafuer genommen, mit Debian und externer
Platte, und USB serial. Ich denke das ist eine Gute Loesung zusammen mit
der KM271 oder der ersatzplatine.
Mich interessiert jetzt brennend ob jemand etwas auf linux lauffaehiges
hat das z.b. auf einer NSLU2 laueft.
Gruesse und Hut ab.
Sean
Moin,
> Hat hier schon jemand versucht das hier gelernte ueber die Libnodave> laufen zu lassen?
Ich nicht. Das einzige was mir auf der Seite bekannt vor kam war der
"Basic data exchange". Evtl. kannst du ja mal kurz erklären wofür diese
Lib. gut sein soll.
> Mich interessiert jetzt brennend ob jemand etwas auf linux lauffaehiges> hat das z.b. auf einer NSLU2 laueft.
Ja, auf Linux schon, aber bei den Datenmengen ist das schon Tierquälerei
;-). Ist aber auch nur eine Vermutzung, keiner weiss was du vor hast.
Hi,
Ich will mindestens den Zustand an/aus nacht/tag/auto erkennen und
beinflussen koennen. Soweit moeglich wuerde ich dann gerne Aktuelle
Werte Anzeigen lassen koennen (Aussentemperatur, vor/ruecklauf
Differenz, etc). Danach ggf. Historische Daten und danach zb. die
Zeiteinstellung korrigieren (winter Sommer etc und ggf. mit ntp
angleichen). Danach wuerde das Modifizieren der programierten
Schaltzeiten selber in betracht kommen.
jedenfalls alles Schritt fuer Schritt und moeglichst einfach und
wartbar. Fuer mich bedeutet das eine definierte Schnittstelle wie Z.b.
das KM271 oder das Ersatzboard und dann Schnittstellen Treiber auf einem
System das moeglichst direkt auch als Web interface dienen kann um das
ganze autark laufen lassen zu koennen. Der NSLU2 ist da fuer mich
interessant da Linux drauf laueft und es ggf. sogar direkt als
Entwicklungsumgebung herhalten kann. Ein anderes Beispiel waehre zb. ein
Plug computer.
Gruesse
Sean
Hi,
Darf ich kurz eine Frage an die Besitzer einer 2107 Regelung einwerfen ?
Man kann ja die Versionsnummer abfragen, falls jemand hier eine
Version größer 3.14 hat, bitte mal kurz melden.
Vielen Dank !
Rudi schrieb:
> könntest du einen kleinen Schaltplan für den TX-Pfad posten ?
hier mal der erste Versuch des Schaltplans meiner laufenden Platine. Der
Gleichrichter sorgt dafür das man den Bus beliebig anklemmen kann.
Ist natürlich noch nicht die entgültige Version.
Gruß
Ingo
In den TX-Pfad sollte ich noch den zweiten Comperator einbauen damit der
Transistor nicht direkt über die serielle Schnittstelle angesteuert
wird, oder?
Die Spannungswandler des MAX232 wird noch für die Versorgung der
Comperatoren benutzt. Hatte leider keinen anderen Comperator/OP greifbar
der ohne +-10V auskam.
Kritik und Anregungen sind gerne willkommen.
Gruß
Ingo
> hier mal der erste Versuch des Schaltplans meiner laufenden Platine. Der> Gleichrichter sorgt dafür das man den Bus beliebig anklemmen kann.
Danke !
Auf welche Spannung ziehst du das Signal runter und welcher Strom fließt
dann ?
Hallo!
Ich würde gerne mein Logamatic 2107 an die Haussteuerung (fhem)
anschließen, aber leider bin ich kein Hardware- sondern ein Software-
Bastler. Ich habe mich auch damit abgefunden, den KM271 zu kaufen,
leider weiss ich nicht wo. Ich habe auch keine Angst von irgendwelchen
nachbauten, und ob es via RS232 oder Ethernet, ist mir auch egal, aber
soweit ich es sehe kann man keine fertigen Alternativen kaufen. Kann mir
hier jemand weiterhelfen?
Gruss,
Rudi (der Zweite :)
@Rudolf Koenig
> Ich habe mich auch damit abgefunden, den KM271 zu kaufen,> leider weiss ich nicht wo.
Frag einfach deinen Heizungsmenschen, wenn er mal wieder zur Wartung da
ist, der besorgt dir das Modul.
Die KM271-Alternative ist irgendwie eingeschlafen !?!?!?!?
Ziehe im Moment auf 10Volt herunter. Ist ja vergleichbar mit der RC30.
Ein Test mit normalen Wiederständen hat gezeigt dass dann 160 mA fließen
wenn man die Spannung so weit herunterzieht. Deswegen auch die 1,3 Watt
Z-Diode.
Habe allerdings im Moment eine 8,5 Volt Z-Diode drin und nur eine Diode.
Das dürfte dann ja der 7,5Volt Diode mit vorgeschalteten Gleichrichter
entsprechen.
Wäre vielleicht auch eine Idee den MAX232 wegzulassen und den X-Port
dafür zu nehmen. Dann müsste ich aber noch einen OP/Comperator nehmen
der mit 5 Volt auskommt.
Hätte den Vorteil dass man überall aus dem Netzwerk drauf zugreifen
könnte.. SOgar aus der Ferne wenn man will.
Gruß
Ingo
> Ziehe im Moment auf 10Volt herunter. Ist ja vergleichbar mit der RC30.> Ein Test mit normalen Wiederständen hat gezeigt dass dann 160 mA fließen> wenn man die Spannung so weit herunterzieht. Deswegen auch die 1,3 Watt> Z-Diode.
Bist du sicher das 160mA okay sind ? Hört sich für mich, aus dem Bauch
heraus, etwas viel an. Wenn man von Störungen ausgeht dann ist das
sicherlich berechtigt.
> Wäre vielleicht auch eine Idee den MAX232 wegzulassen und den X-Port> dafür zu nehmen. Dann müsste ich aber noch einen OP/Comperator nehmen> der mit 5 Volt auskommt.
3-5V wären ausreichend, dann kann man direkt einen uC seiner Wahl
anschalten. Ich frage wegen der Schaltung mal einen anderen Hardwerker (
ich bin keiner ;-) ).
> Hätte den Vorteil dass man überall aus dem Netzwerk drauf zugreifen> könnte.. SOgar aus der Ferne wenn man will.
Jup.
@Andreas
> ich suche eine KM271 Platine. Hat jemand eine über oder läßt jemand> demnächst welche machen ?
Es gibt hier keine Plagiate. Alles hausbacken ;-)
@ rudi:
>Die KM271-Alternative ist irgendwie eingeschlafen !?!?!?!?
Naja. eingeschlafen noch nicht.
ich bin noch etwas gefrustet wegen dem offensichtlich bescheuerten
layout. Ich muss das nochmal neu machen, scheinbar hätte ich nicht die
gesamte fläche als gnd nehmen sollen bzw so wie es aussieht gibts da
einen getrennten agnd.
Jedenfalls ist das layout so nicht brauchbar (verfaelscht alle
gemessenen temperaturen im system um mehr als 10°C
Werde mich nochmal dran setzten sobald ich wieder mehr zeit habe!
Gruss, Malte
@Rudi
Rudi schrieb:
>> ich suche eine KM271 Platine. Hat jemand eine über oder läßt jemand>>> demnächst welche machen ?>>>> Es gibt hier keine Plagiate. Alles hausbacken ;-)
okay, ich nehme auch eine hausgebackene ;-) Vielleicht erbarmt sich ein
Bäcker.
Ich habe eine erste Version eines fhem Moduls fuer KM271 implementiert,
vielen Dank nochmal an alle die das Protokoll dokumentiert haben.
Die in dieser Liste erwaehnten Buderus Dokumente haben auch etwas
geholfen, zusaetzlich gibt es noch den hier nicht erwaehnten
63011377.pdf
Ich habe die Daten eine Weile protokolliert, siehe die Plots in dem
Abschnitt
http://www.koeniglich.de/fhem/commandref.html#KM271
Kann jemand mir erklaeren, was der Logamatic mit "Kesselintegral" meint?
Laut Buderus Doku wird es in KK gemessen (was auch immer das wiederum
ist).
Weiterhin meldet mein KM271 nachdem ich es ins logmode setze nur noch
die Aenderungen, aber keine Konfigurationsdaten bzw. Zeitprogramm, wie
es in der Doku von himtronics steht.
Btw. der wiki scheint seit ein paar Tagen ein Problem zu haben.
Gruss,
Rudi
@Rudolf Koenig
Ich seh da grad deine Vorlauftemperatur & Warmwasser. Kann es sein das
die Pumpe deiner Heizung dein WW in den Vorlauf der Heizung drückt ? Ein
Freund von mir hat das gleiche Problem. Es ist schön zu sehen wie lange
die Temperatur hält wenn sich die Heizung in der Absenkung befindet.
> Weiterhin meldet mein KM271 nachdem ich es ins logmode setze nur noch> die Aenderungen, aber keine Konfigurationsdaten bzw. Zeitprogramm, wie> es in der Doku von himtronics steht.
Die RC3X sendet auch nur Datensätze die sich geändert haben.
@Ingo F.
> In den TX-Pfad sollte ich noch den zweiten Comperator einbauen damit der> Transistor nicht direkt über die serielle Schnittstelle angesteuert> wird, oder?
Eine Stromsenke mit OP & FET wäre wohl besser (ich habe da mal einen
anderen Hardwerker gefragt). Problem könnte evtl. der RX-Pfad sein, da
es keine getrennten RX/TX-Leitungen gibt.
Leider bin ich da nicht so bewandert...
Rudi schrieb:
> Eine Stromsenke mit OP & FET wäre wohl besser (ich habe da mal einen> anderen Hardwerker gefragt).
Ich habe ja keinen festen Strom. Also kann ich keine Konstantstromsenke
nehmen. Die Schaltungen die ich bis jetzt gefunden habe waren alles
Konstantstromsenken. Ich muss mal nach einer Stromsenke suchen die von
der Ausgangspannung abhängig ist....
Rudi schrieb:
> Problem könnte evtl. der RX-Pfad sein, da> es keine getrennten RX/TX-Leitungen gibt.
Die Sende- und Empfangsdaten sind doch nur auf einer Leitung. Man könnte
höchstens die Schaltung so modifizieren dass der Empfangsteil
abgeschaltet wird wenn die Daten gesendet werden. Aber denke das kann
man doch auch in der Software des ATMega8 machen..
Rudi schrieb:
> Leider bin ich da nicht so bewandert...
Macht nichts... ich auch nicht ;-)
Gruß
Ingo
@rudi (der erste :)
Habe es glaube ich jetzt rausbekommen, ich verwende ja noch einen 3.3v
spannungsregler für den xport. Wenn ich vcc vom regulator abtrenne
stimmen alle temperaturen wieder. Allerdings ist das modul im moment
dann sinnfrei, da keine kommunikation.
Ich denke ich werfe den kram mit dem xport weg und mache ein reines
rs232 modul, das kann sich dann jeder nachbauen der es braucht.
A propos: ich habe firmware version 4.00, eben nachgeschaut. falls das
irgendwann mal was zu bedeuten hat :)
@all:
wiki geht jetzt wieder und ist nebenbei auf den aktuellen Stand gebracht
worden.
Wer sich an der Doku beteiligen mag, der kann sich dort gerne
registrieren und selbst mit daran arbeiten.
Auf der Hauptseite
http://wiki.neo-soft.org/index.php/Heizungsschnittstelle
habe ich einen Hinweis "Aktualität der Inhalte: 2010 02 13".
Dieser bezieht sich auf den Letzten aus diesem Thread entnommenen
Informationsstand, diesen bitte nicht verändern, da ich sonst beim
nachtragen von Informationen durcheinander komme....
Mal sehen, ich habe wieder in absehbarer Zeit mehr Luft für Basteleien,
ich halte euch auf dem Laufenden, wenn ich Neuigkeiten habe.
Auf Grund der kranken Temperaturen habe ich seit wochen keine Lust mich
laenger in meiner Werkstatt aufzuhalten (nicht beheizt), weshalb ich zzt
etwas "eingeschlafen" wirke. Aber Frühling ist ja bald in Sicht ;)
> Ich seh da grad deine Vorlauftemperatur & Warmwasser. Kann es sein das> die Pumpe deiner Heizung dein WW in den Vorlauf der Heizung drückt ?
Ich glaube das passiert ohne Mitwirkung der Pumpe. Wir haben teilweise
sehr dicke Heizungsrohre und die Rueckstauklappe wurde wegen
Laermbelaestigung entfernt. Im Sommer trenne ich die Heizung manuell.
Finde ich faszinierend, dass Du sowas ablesen kannst :)
@ IngoF
> Die Sende- und Empfangsdaten sind doch nur auf einer Leitung. Man könnte> höchstens die Schaltung so modifizieren dass der Empfangsteil> abgeschaltet wird wenn die Daten gesendet werden. Aber denke das kann> man doch auch in der Software des ATMega8 machen..
Dann den Sender, da der Strom vom Pegel auf dem Bus abhängt. Bleibt noch
die Frage was passiert wenn der Sender eingeschaltet wird und eine
andere Einheit anfängt zu senden.
> Ich glaube das passiert ohne Mitwirkung der Pumpe. Wir haben teilweise> sehr dicke Heizungsrohre und die Rueckstauklappe wurde wegen> Laermbelaestigung entfernt. Im Sommer trenne ich die Heizung manuell.> Finde ich faszinierend, dass Du sowas ablesen kannst :)
Nein, ich habe da nicht drauf geachtet, mir kam es nur komisch vor das
das WW so oft geladen wird. Der erwähnte Freund hat dann nochmal drüber
gegrübelt. Was ist an einer Rückstauklappe so laut ??? Wäre mal
interessant ob die überhaupt etwas bringt. Besser wäre natürlich ein
Mischer und keine zwei Pumpen am gleichen Strang.
Hallo Rudi,
> Dann den Sender, da der Strom vom Pegel auf dem Bus abhängt. Bleibt noch> die Frage was passiert wenn der Sender eingeschaltet wird und eine> andere Einheit anfängt zu senden.
das kann ja nicht passieren weil die Busteilnehmer nur auf das Polling
antworten. Wenn jetzt natürlich der ATMega8 einfach drauf los sendet
ohne auf sein Polling zu warten wird es natürlich Probleme geben.
Schätze dass dann die fehlerhaften Telegramme ignoriert werden dank der
ominösen Prüfsumme.
Gruß
Ingo
IngoF schrieb:
>> Dann den Sender
habe das vermutlich falsch verstanden. Den Sender kann man ja schlecht
abschalten wenn er senden soll... Dachte höchstens den Empfänger, damit
die selbst gesendeten Daten nicht wieder empfangen werden.
Aber das könnte man ja im Atmega8 besser machen. Einfach nach dem Senden
die eigelesenen Daten irgnorieren. Kann man auch notfalls an der
eigenene Adresse erkennen...
Gruß
Ingo
@IngoF
> habe das vermutlich falsch verstanden. Den Sender kann man ja schlecht> abschalten wenn er senden soll... Dachte höchstens den Empfänger, damit> die selbst gesendeten Daten nicht wieder empfangen werden.
Den Empfänger kann man schon anlassen, dann sieht man direkt ob die
Daten sauber gesendet wurden und es keine Buskollision gab.
> welcher Händler bietet denn den verwendeten ADCMP370 an? Oder gibt es> Vergleichstypen? Ich kann da nichts finden!
Den kannst du bei Analog sampeln oder bei digikey gibt es den auch.
Andere Möglichkeit wäre ein Komparator der über seiner
Versorgungsspannung Signale am Eingang verträgt.
Eine andere ungetestet Methode wäre auch eine z-diode (etwa 11.5V) in
Reihe und dann an einen Opto., evtl. noch mit Transistor zwischen. Das
wäre dann die sichere low-cost Variante.
Hallo zusammen,
ich bin gerade über diese Diskussion gestolpert und fasziniert darüber
was Ihr erreicht habt :-)
Ich habe ein Buderus Heizung mit BC10 und RC35. Die Anlage ist nett hat
aber ein Problem. Alle paar Wochen läuft sie in einen Fehler, gefühlt so
ca. 10 Mal im Jahr. Das BC10 zeigt Fehlercode 6A (Handbuch: Brenner kann
nicht gezündet werden) und der Warmwasserspeicher kühlt langsam aus. Man
merkt das dann dadurch dass kein heisses Wasser mehr kommt...
Ich würde gerne das Verhalten der Anlage über längere Zeit mitschreiben
um zu schauen woran das wohl liegen könnte.
Gibt der BC10 über die Service-Key-Schnittstelle auch Fehler aus? Dazu
habe ich hier noch nix gesehen.
Nach einem A6-Fehler kommt man über einen Reset (Taster an der BC10)
wieder in den Normalzustand. Kann man den reset auch über die
Service-Key-Schnittstelle auslösen?
Viele Grüße,
Bernd
> Nach einem A6-Fehler kommt man über einen Reset (Taster an der BC10)> wieder in den Normalzustand. Kann man den reset auch über die> Service-Key-Schnittstelle auslösen?
Wie wäre es den Heizungsfritzen an das Gerät zu zitieren ?
Schon drei mal gemacht. Gibt immer eine Riesenbaustelle. Nutzt aber nix
weil der Fehler nie auftritt wenn die da sind. Und die stellen nicht
einen Monat einen Rechner hier hin um mitzuschreiben was die Kiste
macht. Und ich werde deswegen den Brenner nicht rausreißen lassen.
Deshalb: Nase voll und Selbsthilfe...
Viele Grüße,
Bernd
Bei einem defekten Brenner oder defekter Flammenerkennung helfen dir die
Daten auch nicht. Es gab bei B. eine Rückrufaktion für einige Brenner,
evtl. gilt das auch für dich !?
Die letzte Fehlermeldung ist in den Daten, wie auch im Monitormenü am
Display.
> Nach einem A6-Fehler kommt man über einen Reset (Taster an der BC10)> wieder in den Normalzustand. Kann man den reset auch über die> Service-Key-Schnittstelle auslösen?
Evtl. über SSR Heizung aus/an ?
Hat jetzt nicht mehr zu viel mit dem Thema zu tun...
Ich glaube nicht dass der Brenner defekt ist. Der zündet problemlos
einige 100 Mal (einige 1000 Mail?) im Jahr. Google sagt mir dass der 6A
Fehler verschiedenste Ursachen haben kann, von Abgas in der Zuluft bis
kein Gas.
Vielleicht finde ich ja ein Muster in den Daten. Jedenfalls passiert das
fast immer nachts, die morgentliche Dusche danach ist erfrischend.
Viele Grüße,
Bernd
Die Bedienungsanleitung sagt "Bei 6A Reset drücken". 6A kommt wenn die
Elektronik es mehrmals hintereinander nicht geschafft hat den Brenner zu
zünden. Die Kiste geht dann schlafen weil sie nicht weiss was sie machen
soll, eine Heizung die nicht heizen kann hat eine Identitätskrise.
Wenn ich dann einige Stunden später komme und Reset drücke dann springt
der Brenner (bisher immer) problemlos an.
Wie komme ich denn an den Fehlerspeicher? Über das RC35 Modul?
Logamatic 2107/KM271
Nur als Info: hab an dem KM271 fhem Modul weitergebastelt: Ich kann (wie
oben schon erwaehnt) bestaetigen: nach dem senden der "logmode"
Aufforderung sendet der 2107 erst ca 60 Stueck 6-er Bloecke aus dem
Adressbereich 0000 bis 01e0, dann die schon bekannten einnzelnen Bytes
aus dem Bereich 8000-8940 und dann die vom chipshuffler erwaehnten
"unbekannten" 914x und 03xx Daten.
Ich habe durch drehen aller Knoepfe meiner Logamatic ca 20 Bytes aus dem
ersten 60x6 Block entschluesselt. Weiterhin kann das fhem Modul die vom
vom Chipshuffler beschriebenen Werte auch aendern.
Siehe auch:
http://cvs.berlios.de/cgi-bin/viewvc.cgi/fhem/fhem/FHEM/00_KM271.pm?revision=1.3&view=markup
Gruss,
Rudi
BerndV schrieb:
> Wie komme ich denn an den Fehlerspeicher? Über das RC35 Modul?
Über das Service-Menü. Bei meiner RC30 muss man drei Tasten gleichzeitig
drücken. Soweit ich weiß die ganz linke und die beiden rechten. Evtl.
mal in der Bedienungsanleitung nachsehen. Allerdings kann man dort nur
die Fehler sehen. Vielleicht kann man die dort auch herauslöschen.
Wenn das helfen sollte kann man bestimmt auch eine Softwarelösung dafür
finden. Ist allerdings nur ein herumbasteln an den Symptomen wenn es
klappen sollte.
Vermute allerdings dass Du wirklich den Reset-Schalter an der Anlage
drücken musst. Dann kann eine Softwarelösung wohl kaum helfen.
Allerdings gibt es (noch) das Problem dass die Prüfsumme vom Protokoll
her nicht bekannt ist. Notfalls müsste man die Software-Reset-Prozedur
der RC35 mitschneiden und von einer Elektronik mit oder ohne PC
automatisch schicken.
Man könnte die Daten am Bus mitloggen und eventuell die Fehlermeldung
darin finden. Was Dir vermutlich auch nichts helfen wird
Mit der Schaltung von Rudi oder mir könntest Du Die Daten aufzeichen und
Dir ansehen. Habe inzwischen meine Schaltung wieder ein wenig geändert.
Ist vermutlich unwahrscheinlich den Fehler zu finden. Aber vielleicht
hilft es ja trotzdem.
Wie gesagt sind alles nur Vermutungen....
Falls Du das mal versuchen möchtest und nicht mit dem lötkolben umgehen
kannst oder möchtest, kann ich dir die Schaltung zum selbstkostenpreis
zusammenbauen und mit Software zuschicken. Allerdings muss dann immer
ein PC rund um die Uhr laufen.
Gruß
Ingo
Ich wollte mal meine Projekte zur Verfüging stellen.
ETH_M32 (URadig) ist für das Pollin-AVR-Net-IO Board. Läuft bei mir aber
mit einem Atmega644 statt Atmega32. Wenn man sich per Telnet drauf
verbindet werden die empfangenen Telegramme über die Telnet-Verbindung
weitergeben. 1-Byte-Telegramme werden aus Performancegründen nicht
versendet und die Daten gehen nicht binär sondern als Hex-Text über die
Leitung (Telegramm-Ende CR/LF). War für mich einfacher für das Debugging
und die Auswertung als das binäre Protokoll wie von Rudi. DAC1 wird als
Ausgang für die Empfangs-LED verwendet.
EmsBusReceiver ist der Code von Rudi für Atmega8 (binäres Protokoll).
Als Hardware verwende ich das Pollin-AVR-Evaluationsboard.
Am Pollin-Board gehe ich mit der Empfängerplatine direkt auf den RS232
Stecker, deshalb habe ich an der Platine +/- Eingang getauscht damit mir
der OP das Signal invertiert.
Ein Problem habe ich noch mit der Auswertung der daten vom UBA3. Die
Warmwassertemperatur geht manchmal für 1 Telegramm auf (immer) 25.7
Grad. Brennerstatus stimmt auch nicht. Die Daten für den Wasserdruck
liegen bei mir auch auf anderen Stellen im Telegramm. Kann mir hier
jemand nochmal seine komplette Auswertungsroutine posten? Mein Eindruck
ist das die Daten in der Excel-Liste teilweise nicht stimmen.
Gruss Matthias
Beitrag "Re: Logamatic 2107 Schnittstelle"
Der Druck ist an Stelle 21. Poste doch mal eins von deinen falschen
Telegrammen. Evtl. sind es einfach nur Übertragungsfehler.
Hallo Rudi
Das Telegramm sieht bei mir so aus (letztes Byte ist Anzahl der Zeichen
im Telegramm)
Das Telegramm ist also immer nur 18 Byte gross.
Der Druck ist an Stelle 13.
080018003C02640125800201010F48C8028E12
080018003C02640125800201010F48C802C712
080018003C02640125800201010F48C802EA12
080018003C02640125800201011048C8021412
080018003C02640125800201011048C8022112
080018003C02640125800201011048C8022D12
080018003C02640125800201011048C8022D12
080018003C02640125800201011048C8023712
080018003C02640125800201011048C8028212
080018003C02640125800201011048C8028F12
080018003C02640125800201011048C8029B12
080018003C02640125800201011048C802A412
080018003C02640125800201011048C802BD12
080018003C02640125800201011048C802BD12
080018003C02640125800201011048C802E512
080018003C02640125800202011048C8027712
080018003C0264012C800102000D4C1C027512
080018003C0264012D800102000E4C1C02F012
080018003C0264012D800102000F4C1C02E412
080018003C0264012D800200000D4C1C025F12
Bei der Aussentemp. konnte ich dagegen noch keine "Fehler" feststellen.
080019000002140000640802370002A006002313
08001900000B2C00001F0802120002BD06026413
08001900000C1F0000270802160002C106029013
08001900000C2300002E0802190002C406024113
08001900000C270000210802130002BE06024C13
08001900000C3700001E0802110002BC0602E213
0800190000895A00001E08022F00029C06012113
080019000089800000000802A20002C306001813
0800190000898000001E08022D00029A06012613
Die Daten vom WM10 und RC35 passen auch.
Gruss Matthias
Hallo Matthias,
habe vorgestern die Auswertung der Satusbytes 10 und 11 vom Telegramm
080018 bei mir eingebaut. Ich musste hinterher die Bytes 11 und 10
tauschen. Vielleicht mal ausprobieren die Bytes zu tauschen.
Habe nicht mehr nachgeschaut obe es jetzt von mir ein Programmierfehler
war oder wirklich die Exeltabelle die Bytes 10 und 11 vertauscht hat.
Ich meinte die Exel-Tabelle die die ganzen Telegramme auswertet werden
und 5 Megabyte hat oder noch größer ist.
Die Telegramme kann ich imm Moment nicht mit meinen vergleichen.
Gruß
Ingo
Hallo Ingo,
An einen Byte-Verdereher glaube ich nicht, da die Werte ja zur Anzeige
im RC35 passen. Komisch ist das ich nur ein 18-Byte-Telegramm habe (ganz
selten war's mal ein 17-Byte-Tele, das war dann wohl ein
Übertragungsfehler).
Vielleicht muss ich auch nochmal meine Empfängerplatine optimieren.
Verwende einen LM393, die Signale nehme ich mittels Spannungsteiler vom
Bus ab damit mein Eingang kleiner 5V ist (Vcc vom LM393). Allerdings
würde mich halt wundern, das das Telegramm immer so schön reproduzierbar
ist.
Gruss Matthias
Hallo Matthias, ich habe auch einen LM393 in meiner Schaltung. Klappt
eigentlich problemlos.
@Rudi,
meinte nur die Bytes 10 und 11 der Rest wird wohl stimmen.. Aber wie
gesagt, kann auch ein Programmierfehler von mir gewesen sein den ich
dann glatt gezogen habe.
Gruß
Ingo
@Rudi
Mit der Telegrammlänge wunder ich mich auch.
Was hast Du den für Komponenten-Versionen?
Bei mir ist:
RC35 1.08
UBA3 3.06
BCM Version 12
BCM Nummer 1072
BC10 2.03
WM10 2.0
Werde aber auch noch mal in meiner Netio-Software schauen ob ich da etwa
irgendwas versemmel...
@ Ingo
Dneke auch das der LM393 gut funktioniert, da die Kommunikation
reproduzierbar ist.
Gruss Matthias
@Matthias
Ein anderes Protokoll in Abhängigkeit von der Versionsnummer kann ich
mir nicht wirklich vorstellen.
Kommt die Länge vom Pollin-AVR-Evaluationsboard oder berechnest du die
neu ?
Kannst du mal ein Log mehrerer Nachrichten posten (mit Space zwischen
den Bytes bitte) ?
Ich habe hier eine RC30.
Hallo Rudi,
die Länge berechne ich beim Empfang wenn der Frameerror kommt auf dem
Atmega, das ist prinzipiell das Verfahren aus deinem Atmega-Code.
Die Logdaten zeichne ich heute Abend mal auf.
Das unterschiedliche Versionen ein unterschiedliches Protokoll fahren
sollten käme mir auch seltsam vor (zumindest bei Heiztechnik).
Allerdings finde ich schon komisch das bei mir auch der Heizungsdruck
reproduzierbar auf anderen Adressen liegt.
Gruss Matthias
Hallo Rudi,
anbei das Log (ca. 2h 18:15-20:30) mit Spaces.
Bzgl. der Datenerfassung hab ich nochmal geschaut. Sollte eigentlich so
stimmen. Der Netio erfasst direkt die Telegramme und sendet sie per
telnet. Am Anfang hatte ich etwas Probleme mit der Performance, deshalb
sende ich nicht mehr die 1-Byte Telegramme. Muss es aber nochmal mit dem
Eval-board versuchen (deine Version - Ausgabe über Uart) und schauen, ob
ich damit andere Daten bekomme.
Gruss Matthias
@Matthias
Die Daten werden offensichtlich wirklich in einem anderen Format
geschickt. Hast du die Hard-/Software kontrolliert ?
Hier meine Versionen:
UBA3/MC10 (Universeller Brennerautomat/Mastercontroller) - 8 - V3.02
BC10 (Basiscontroller) - 9 - V2.02
RC30 (Raumcontroller) - 16 - V2.08
Version 3
KIM (Kesselidentifikationsmodul) 1051
@Rudi
Hallo Rudi,
vielen Dank für dein Infos.
Habe bei mir in meiner jetzigen Konfiguration alles geprüft, scheint OK
zu sein. Ich werde jetzt nochmal die Telegramme direkt über die RS232
auslesen (deine Atmega8-Software). Allerdings fehlt mir gerade etwas die
Zeit, deshalb kann es noch ein paar Tage dauern.
Ich melde mich sobald ich es getestet habe.
Gruss Matthias
@IngoF
Bist du mit deiner Sendefunktionalität weiter gekommen ? Ich habe es
jetzt mit zwei Fets und einer Z-Diode aufgebaut. Senden funktioniert,
nur wird die Nachricht offensichtlich nicht ordentlich empfangen.
Entweder ich bekomme keine Antwort oder eine Falsche. Ich habe zum
Testen die 10 88 ... Nachricht verwendet.
Nein, noch nicht wirklich.. Habe mich an der Prüfsumme versucht und aber
nur ein wenig weiter gekommen.. Mit praktischen Versuchen habe ich noch
nichts versucht... Vielleicht sollte ich doch den Microcontroller zum
senden nehmen, Dann muss ich aber erst noch mal Dein Programm in
Assembler nachschrieben oder noch mal von vorne anfangen...
Gruß
Ingo
Also es scheint schon mal ein "normales" XOR zu sein. Und nach der
Berechnung wird die Prüfsumme ein Bit nach rechts rotiert. Aber bei
Bytes mit gesetztem MSB werden die beiden mittleren Bits getauscht. Aber
irgendwie Ist das noch nicht ganz OK so...
Vielleicht hat ja noch jemand eine Idee...
Gruß
Ingo
@IngoF
Senden funktioniert nur mit gleichzeitigem RX. Es kann auch nicht mit
einer vorhandenen Adresse gesendet werden. Sendet man z.B. einfach ein
0x10 Antwortet die vorhandene 0x10 mit 0x10. Kollisionen werden über das
RX erkannt, da der Bus bei einem "high" released wird ein ein anderer
Sender den Bus auf "low" halten würde.
Das mit der CRC hört sich doch schonmal gut an.
Bei mir sah es etwas anders aus. Die oberen 4 Bits gingen nur in die
oberen Bits der CRC ein. Die unteren 4 Bits in die unteren 4 Bits der
CRC. Ich habe aber nur einen Nachrichtentyp getestet. Mit einer
vorhandenen Sendefunktion sollte es evtl. einfacher werden.
Soweit ich herausgefunden habe müsste man auch erst auf sein Polling
warten. Und kann dann erst senden. Also 0x90 0x00 ist das Polling für
die RC30/35 die mit 0x10 0x00 antwortet, oder noch Daten
hinterhersendet.
Ich hatte bei drei verschiedenen Telegrammen die Bits getestet. Dann
wurde immer rechts rotiert. Also ging auf die Prüfsumme Bit0 das Bit0
vom letzen Byte, Das Bit1 vom vorletzten Byte , das Bit2 vom drittletzen
Byte ein.
Soweit ich mitbekommen habe schien die Adresse nicht mit in die
Berechnung gegangen zu sein. Immer nur die Daten nach den Quell und
Zieladresse.
Die Prüfsumme von den Betriebsstunden kann man relativ gut berechnen.
einfach 0x60 XOR mit dem erten Byte, dannach dann das Zwischenergebnis
rotieren und dann XOR dem aktuellen Byte.. Das klappt dann bei allen
Telegrammen. Außnahme sind die Telegramme die an dem vorletzten Byte das
MSB gesetzt haben.
Wäre ja mal ganz interessant zu wissen ob in der RC30/35 dann ein neuer
Bus-Teilnehmer auftaucht wenn man das Polling immer mit der Adresse
beantwortet. Vielleicht kann man schon mal herausfinden welche Adressen
für welche Module vorgesehen sind.
Gruß
Ingo
@IngoF
So ganz komme ich bei deiner Berechnung nicht mit.
Mal ein Bsp.:
CRC = 0xE9
08 10 14 00 1E 64 00 <E9>
crc = 0x60
crc = crc ^ 0x08
crc = crc >> 1
usw. bis 0x00
Da komme ich auf 0x1A
Genau so...
hier mal meine Beispiel-Berechnung mit Excel. Wer kein Excel kann sich
das Bildchen ansehen...
bei den Telegrammen mit größer 0x7f habe ich als Startwert 0x00
genommen. Die Prüfsummen sind in der Fett gedruckt.
Bei anderen Telegrammen hat es aber nicht geklappt.. Aber immerhin schon
mal ein weiterer Schritt in die Richtige Richtung.
Habe alle Telegramme mitgeloggt und dann die passenden Telegramme
ausgesucht und zum Berechnen genommen.
Ja, habe ich ja gesagt... bei den Telegrammen mit 0x80 oder größer muss
genau bei dem XOR wohl die beiden mittleren Bits getauscht werden.
Oder man nimmt den STartwert 0x00, dann stimmt es auch wieder...
ABer wie gesagt bei den anderen Telegrammtypen am Anfang der Excel-Datei
stimmt es auch nicht..
Also wie gesagt.. Ich habe für etwa einen Monat die Telegramme
mitgeloggt und dann immer zwei Telegrammpärchen ausgesucht wo nur ein
einziges Bit geändert wurde. Da habe ich dann bei allen Telegrammen
herausgefunden dass die Bytes immer bei jedem XOR verschoben sind. Auch
bei anderen Telegrammtypen.
Gruß
Ingo
Nein, das kann ich nicht bestätigen. Mal auf die letzten Bytes und den
Betriebsstundenzähler bezogen, es ändert sich bei der 0x80er Grenze
(durch das Polynome) und dann noch bei einem Wechsel vom vorletzten
Byte. Für mich bedeutet das eine normale CRC (Tabellenbezogen). Die
Tabelle wird wohl hausbacken sein, ansonsten wäre die CRC schon klar.
Bei einem Polynome von 0x09 (xort wenn das MSB in der CRC gesetzt ist)
bleibt die Differenz zwischen berechneter und vorhandener CRC immer
gleich, bis zu einem Wechsel des vorletzten Bytes, da es nun als Index
auf einen neuen Wert in der Tabelle verweist. Da sich die Bytes davor
nicht ändern ist dieser Index erstmal gleich. Teste es einfach mal ;-)
Anbei noch eine Ausgabe als Logdatei:
FOUND: 08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 5E * ! 6D * ! F0 DE 21 2E
Die letzten 4 Byte:
F0 DE 21 2E
**----------CRC-1 aus dem Datenstream
**-------CRC-2 berechnet mit dem finalen XOR 0xff
**----CRC-3 ohne Polynome (einfaches XOR aller Bytes ohne finales
XOR)
**-berechneter Wert aus CRC-1 XOR 0xFF XOR CRC-2 (*1)
(*1) wobei ich grad merke das XOR 0xff hätte ich mir auch sparen können
Für mich sieht das erstmal gut aus ...
Also dass sich die Bits verschoben auf die Prüfsumme auswirken ist ganz
sicher. Zumindest bei den getesteten Telegrammen. Allerdings ist es
nicht so einfach passende Telegrammpärchen zu finden bei denen sich nur
ein Bit ändert.
Das vorletzte Tabellenblatt enthält Telegramme von Dir und Mir die wenig
änderungen haben. Das letzte Tabellenblatt sind Telegramme von 0x10 0x00
0x9c bei dennen das auch zutrifft.
die letzte Zeile in Rot ist nur ein XOR damit man sieht welches Bit sich
ändert.
Nach meiner Berechnung funktionieren bisher alle Telegramme von 0x10
0x00 0x14. Denke das ist schon mal ein kleiner Schritt in die richtige
Richtung..
Nur dass man bei Telegrammen mit >0x7f einen anderen Startwert nehmen
muss (>0x7f = 0x60 / <0x80 = 0x00)
Das Telegramm ist eigentlich nicht sooo gut geeignet die Prüfsumme zu
finden... Am besten wäre ein Telegramm bei der sich alle Werte ändern,
und das so häufig vorkommt dass man genug Rohmaterial hat um zu sehen
welches Bit sich wie auswirkt. Aber das gibt es ja nicht.. ABer
vielleicht kann man ja durch die Sendefunktion und die Antwort durch
irgendeinen Busteilnehmer so ein Telegramm finden.....
Diese Verschiebung durch eine Stelle bei jedem Byte kann doch nicht
durch ein Polynom kommen, oder? Kann es sein dass es doch irgendein
Polynom ist, bei der dann nach jedem Byte das Zwischenergebnis rotiert
wird? Aber dann würde ich doch nicht so eine "gute" CRC mit einem
simplen XOR nachrechnen können.
Also irgendeine Schweinerei außer das rotieren haben die noch eingebaut.
Der initiale Wert ist 0x00. Wenn bei der CRC das MSB gesetzt ist, dann
wird mit 12 xort, vor dem shiften. Bei der letzten Berechnung bzw. beim
letzten Byte muss vor dem XOR aufgehört werden. Damit stimmen dann ALLE
CRCs !
Ingo, gute Arbeit !
> Wie sieht denn Deine Schaltung mit den FETS und der Z-Diode aus?> Würde mich mal interessieren :-)
Ein P-MOSFET (20K am Gate Pullup) schaltet einen N-MOSFET (500 Ohm am
Gate Pulldown) der die Masse über die Z-Diode (10V) auf den Bus
schaltet. Ich habe 3 500mW parallel geschaltet, hatte keine "große".
Leider ist die steigende Flanke auf dem Bus etwas langsam (die fallende
Flanke nicht), evtl. gibt es da noch Probleme.
Also anstelle des Wertes, oder noch zusätzlich mit 0x12 XORen.
Funktioniert es dann auch bei allen anderen Telegrammen, oder nur bei
bei den Betriebstunden Telegrammen?
Welcher Teil wird denn verknüpft? Alles, oder nur der Datenbereich?
Kann die Flanken bei meiner Lösung leider nicht kontrollieren.. Habe
leider keine Möglichkeiten mehr dazu...
Gruß
Ingo
P.S. Hat ja auch eine Weile gedauert das rauszufinden.. nur mit den 0x80
Werten kam ich nicht so ganz weiter...
Ich habe mal versucht die 8 anzusprechen, aber leider nichts. Meine
Nachricht:
33 88 14 00 03 6C
Die Adresse kann natürlich auch falsch sein und Statusbits involvieren.
Vielleicht muss man sich ja auch erst anmelden oder die Teilnehmer
nehmen nur eine bestimmte Adresse an. Jede Adresse steht ja für einen
bestimmten Teilnehmer.
Schätze mal die 08 ist der Master und schickt das Polling los. Also
müsstest Du warten bis einmal das Telegramm 0xB3 0x00 auftaucht.
Was soll dass den für ein Telegramm sein? also 33 ist der ABsender die
88 der Empfänger (0x08) mit MSB gesetzt damit es antwortet. Dann
möchtest Du telegramm 0x14 (oder ist das nur ein Speicherbereich).
Dannach müsste dann die Prüfsumme kommen und anschließend 0x00 mit
Stopbit 0, oder
also 0x33 0x88 0x14 "CRC" 0x00
Fang doch erst mal mit was einfacheren an...
Versuch doch erst mal nur ein existierendes Polling zu beantwortet. Also
eine Adresse die noch nicht in der RC30 als Busteilnehmer eingetragen
ist. z.B die 0x21 oder 0x22 wenn die noch nicht vorhanden sind. Glaub
das sollten irgendwelchen Mischer sein, oder?
Also auf jedes 0xa1 0x00 mit 0x21 0x00 antworten. Also erst mal ganz
ohne Prüfsumme.. Dannach müsste das Polling öfter kommen und vielleicht
in der RC30 als Busteilnehmer auftauchen. Dann ist schon mal klar dass
das senden funktioniert.
Hoffe dass es schon reichen sollte um von der RC30 als Busteilnehmer
erkannt zu werden. Nicht dass noch mehr als "anmeldung" erwartet wird.
Oder vielleicht kommt dann aufeinmal eine Anfrage von irgendeinem
Busteilnehmer...
Gruß
Ingo
Ja, mal schaun. Ich stelle den Sklaven grad auf einen AVR644p um. Der
hat wenigstens 2 Uarts. Einen Timer für den Timeout will ich auch noch
programmieren und dann noch die UART-Break Geschichte in Software. Hoffe
das funktioniert soweit.
> Was soll dass den für ein Telegramm sein? also 33 ist der ABsender die> 88 der Empfänger (0x08) mit MSB gesetzt damit es antwortet. Dann> möchtest Du telegramm 0x14 (oder ist das nur ein Speicherbereich).
Das ist die Abfrage für die Betriebsstunden. Break hatte ich bisher über
einen Cortex gesendet, der kann das mehr oder weniger in Hardware. Den
will ich aber für den Sklaven aber nicht benutzen. Der 644er läuft jetzt
nebenher und hat die Sendefunktionalität. Ich kann dann also mit 2
Geräten den Bus loggen (der "alte" M8 und der 644).
> Hoffe dass es schon reichen sollte um von der RC30 als Busteilnehmer> erkannt zu werden. Nicht dass noch mehr als "anmeldung" erwartet wird.> Oder vielleicht kommt dann aufeinmal eine Anfrage von irgendeinem> Busteilnehmer...
Das sollte man ja beim einschalten der Anlage direkt sehen können.
Hat das mit der CRC bei dir funktioniert ?
Also. Ich warte auf ein 0x8F und antworte mit einem 0x0F
8F BRK
0F BRK
FC TIMEOUT
Danach kommt dann FC und ein Timeout, ist wohl sowas wie Busreset !? Das
ist also erstmal falsch nehme ich an.
Wenn ich kein Break sende dann bekomme ich ein Echo von der 0x0f und ein
Timeout.
8F BRK
0F 0F TIMEOUT
Wenn ich kein Break sende und 0x0f 0x00 sende bekomme ich:
8F BRK
0F 00 TIMEOUT
Wenn ich kein Break sende und 0x0f 0x00 0xFF sende bekomme ich:
8F BRK
0F 00 FF FF TIMEOUT
Also wieder ein Echo.
Hallo Rudi,
Laut dem Mitschnitt hier:
Beitrag "Re: Logamatic 2107 Schnittstelle"
müsste auf das Polling mit Adresse und 0x00 mit Stopbit 0 geantwortet
werden.
Als Antwort dürfte dann eigentlich garnichts kommen.
Vielleicht gibt es die Adresse ja ganricht. Versuch doch mal die 0x21
oder 0x22 wenn die Mischer nicht eingebaut sind.
Was ist das denn für ein Break? Wer sendet das denn? Also wenn das
Terminalprogramm am PC ein Break sendet dann wird der Sendepin für 3
Sekunden auf 0 gesetzt. Das könnte für den Bus oder den Busmaster
vielleicht zuviel sein. Keine Ahnung was der AVR-Uart für ein Break
sendet. Auf dem Bus wurden ja nur 9 Bit (937,5µs) lang Null gesendet
Vielleicht muss der UART vom Atmega8 (oder was auch immer) entsprechend
konfiguriert werden. Werde das irgendwann mal im Atmega8 in Assembler
programmieren. Dummerweise hatte die Festplatte den Wochenlangen
Dauerbetrieb nicht verkraftet und muss mir eine andere besorgen... Kann
das im Moment leider nicht selber testen.
Gruß
Ingo
> Laut dem Mitschnitt hier:> Beitrag "Re: Logamatic 2107 Schnittstelle"> müsste auf das Polling mit Adresse und 0x00 mit Stopbit 0 geantwortet> werden.
Ja, das habe ich versucht, aber ich bekomme auf der Leitung ein Echo.
> Als Antwort dürfte dann eigentlich garnichts kommen.
Hier nicht.
> Vielleicht gibt es die Adresse ja ganricht. Versuch doch mal die 0x21> oder 0x22 wenn die Mischer nicht eingebaut sind.
Das habe ich versucht, gleiches Verhalten.
> Was ist das denn für ein Break? Wer sendet das denn? Also wenn das> Terminalprogramm am PC ein Break sendet dann wird der Sendepin für 3> Sekunden auf 0 gesetzt. Das könnte für den Bus oder den Busmaster> vielleicht zuviel sein.
Ja, ist es. Das Break sollte in etwa 1 Frame (10Bit) lang sein, damit
die UART ein negiertes Stop-Bit sieht.
> Keine Ahnung was der AVR-Uart für ein Break> sendet. Auf dem Bus wurden ja nur 9 Bit (937,5µs) lang Null gesendet
Ja, die 937.5uS habe ich hier in etwa auch. Beim Mega ist das etwas
komplizierter, da muss TX abgeschaltet werden und dann gehts per GPIO
weiter.
> Vielleicht muss der UART vom Atmega8 (oder was auch immer) entsprechend> konfiguriert werden. Werde das irgendwann mal im Atmega8 in Assembler> programmieren. Dummerweise hatte die Festplatte den Wochenlangen> Dauerbetrieb nicht verkraftet und muss mir eine andere besorgen... Kann> das im Moment leider nicht selber testen.
Schade, bisher habe ich hier noch keine Probleme.
Anbei mal der Code in C. Ich habe intern einen Timer der mit etwa 100KHz
läuft und die timer_set_wait Funktion wartet die angegebenen Ticks. Ich
habe mit dem Oszi gemessen und es sieht ganz vernünftig aus. Bei der RX
Funktion (nicht anbei) habe ich mir noch ein Flag für ein Bus-Free
eingebaut, das wird nach einem Timeout oder Break gesetzt und beim
Empfang eines neuen Bytes gelöscht. So vermeidet man Kollisionen auf dem
Bus.
1
void uart0_send_data( uint8_t * data, uint8_t len, uint8_t flag )
Rudi schrieb:> Ja, die 937.5uS habe ich hier in etwa auch.
Denke mit "in etwa" meintest Du genau...
Allerdings
> /* wait 11 bit */
Müssten dann doch 9 Bit sein, oder? Waren doch 9600 8N1 wenn ich mich
recht erinnere. Also das Startbit High dann 1 Bit warten und dann 9 Bit
Low (8 Daten+1Stopbit. Keine Ahnung ob sich der Busmaster wegen so einer
kleinigkeit anstellt. Vielleicht sendest Du Die Bytes ja auch zu schnell
hintereinander? Soweit ich mich aber erinnere wurden von der RC30 auch
die Bytes hintereinander losgeschickt. Dürfte dann eigentlich auch nicht
sein.
Liegt das Signal denn selbsterzeugte Break denn auch richtig an? Weiß
jetzt ganricht mehr so genau ob jetzt 10V oder 15Volt auf dem Bus eine 1
oder 0 war. Normalerweise wird das Signal noch mal durch einen Treiber
wie MAX232 invertiert..
Kann leider auch nur im Dunkeln herumstochern...
Gruß
Ingo
Achso...
Wir haben ja nur im laufenden Betrieb das Polling mitgeschnibbelt..
Vielleicht ist die einmalige Anmeldeprozedur ja ganz anders und läuft
nur ganz kurz nach dem einschalten der Anlage ab.
Vielleicht kommt bei der erstmaligen Anmeldung ja noch irgendwas wie
eine Bestätigung als z.B. das 0xfc.
Kannst Du das den mal mit dem Oszilloskop vergleichen ob das gesendet
wird was Du auch senden möchtest..
Gruß
Ingo
> Wir haben ja nur im laufenden Betrieb das Polling mitgeschnibbelt..> Vielleicht ist die einmalige Anmeldeprozedur ja ganz anders und läuft> nur ganz kurz nach dem einschalten der Anlage ab.
Nein, da passiert nicht viel. Siehe unten, direkt die Einschaltsequenz.
Das zweite FF z.B. 98 FF bedeutet Timeout, das habe ich jetzt eingebaut.
> Vielleicht kommt bei der erstmaligen Anmeldung ja noch irgendwas wie> eine Bestätigung als z.B. das 0xfc.
Nein.
> Kannst Du das den mal mit dem Oszilloskop vergleichen ob das gesendet> wird was Du auch senden möchtest..
Das stimmt schon, ich logge mit unterschiedlichen CPUs den Bus und die
sehen das gleiche. Ich denke da hilft nur ein Log vom ServiceKey. So wie
ich das gesehen habe wandelt der das Protokoll von der 2107 UART auf
diesen Bus. Evtl. haben wir es auch noch nicht richtig verstanden wer
was sendet. Warum hat z.B. die 98 immer einen Timeout, die 88 z.B. auch,
und die anderen Adressen werden immer mit BRK gesendet bzw. bestätigt.
Das ist auch nicht klar.
>> Ja, die 937.5uS habe ich hier in etwa auch.>Denke mit "in etwa" meintest Du genau...
;-) Es geht an die eine Millisekunde.
>> /* wait 11 bit */> Müssten dann doch 9 Bit sein, oder? Waren doch 9600 8N1 wenn ich mich> recht erinnere. Also das Startbit High dann 1 Bit warten und dann 9 Bit> Low (8 Daten+1Stopbit. Keine Ahnung ob sich der Busmaster wegen so einer> kleinigkeit anstellt. Vielleicht sendest Du Die Bytes ja auch zu schnell> hintereinander? Soweit ich mich aber erinnere wurden von der RC30 auch> die Bytes hintereinander losgeschickt. Dürfte dann eigentlich auch nicht> sein.
Du musst den Bus für 10Bit auf Low ziehen, also START 8Bit STOP sind
Low. Das elfte Bit ist für den Clockjitter ;-)
> Liegt das Signal denn selbsterzeugte Break denn auch richtig an? Weiß> jetzt ganricht mehr so genau ob jetzt 10V oder 15Volt auf dem Bus eine 1> oder 0 war. Normalerweise wird das Signal noch mal durch einen Treiber> wie MAX232 invertiert..
Das liegt an, ich logge ja gleichzeitig den Bus. Mein Problem ist eher
dieses "mitsenden" vom Master.
Rudi schrieb:> 98 00
Also es ist ja nicht so dass die 98 immer ein Timeout bekommt. Bisher
habe ich auf meinem Bus noch nie ein Timeout sehen können. Aber ich habe
auch nicht so stark danach gesucht..
Vielleicht gibt es ja trotz Polling irgendwelche Kollisonen. Die 98 FF
würde ich jetzt einfach mal als Übertragungsfehler oder Kollision
einordnen. Soweit ich mitbekommen habe werde bekannte Busteilnehmer
häufiger abgefragt. Ein Polling für Adresse 88 habe ich z.B. noch nie
gesehen. Vermutlich weil das der Busmaster ist und das Polling sendet.
Warum soll er sich also selber anpollen. Danach werden fortlaufend die
Adressen angepollt die noch nie geantwortet haben.
Fing dann meistens mit 0x89 und dann kommen der Reihe nach 0x91, 0x92,
0x93, 0x94, 0x95, 0x96, 0x97, und 0x98. Dann war soweit ich mich
erinnere erst mal eine Zeitlang Ruhe beim Polling von bisher
unbeantworteten Pollings. Dann ging es nach einiger Zeit mit dem
nächsten Polling-Block weiter Als 0xA0, 0xA1, ..... 0xA8, dann wieder
Pause und der nächste Polling-Block war dran.
Demnach hätte das Polling 0x98 dort noch garnichts zu suchen. Deshalb
vermute ich wirklich einen Übertragungsfehler. Vielleicht haben die
beiden Sender mitgehört und mitbekommen dass die Daten falsch übertragen
wurden und haben dann die Übertragung beendet. Vielleicht gab es
deswegen kein <break>.
Vielleicht mal das im Auge behalten ob das Polling mit dem Timeout
immer, wie hier vermutlich, zur falschen Zeit kommt.
Glaub ich sollte mich mal schleunigst um eine Festplatte kümmern.
Vielleicht hatte die ja auch schon eine Vorschädigung. Hatte die
Festplatte gebraucht gekauft.
Rudi schrieb:> Du musst den Bus für 10Bit auf Low ziehen,
Ups, hatte doch glatt das Startbit vergessen... Vermutlich wird das eine
Bit "zuviel" wohl keine Probleme machen...
Gruß
Ingo
Ingo F. schrieb:> Ein Polling für Adresse 88 habe ich z.B. noch nie> gesehen.
Meinte damit das 0x88 <break> Polling und nicht das mit einem Telegramm
wie 0x10 0x88 .....
> Demnach hätte das Polling 0x98 dort noch garnichts zu suchen. Deshalb> vermute ich wirklich einen Übertragungsfehler. Vielleicht haben die> beiden Sender mitgehört und mitbekommen dass die Daten falsch übertragen> wurden und haben dann die Übertragung beendet. Vielleicht gab es> deswegen kein <break>.
So wie ich das sehe kommt nur bei diesen Adressen (18,88,98) ein
Timeout. Anbei mal ein Log mit Zeitstempel.
Hallo Rudi,
das habe ich ja nicht ausgeschlossen.. Ich habe nur gesagt dass genau
die 98 FF aus dem Log vermutlich ein übertragungfehler ist. Vielleicht
kommen ja gerade immer nur diese Adressen zustande bei
Übertragungsfehlern.
Vielleicht sollte ich auch mal auf meinem Bus genauer mitloggen.
Bei Dir ist das ja ziemlich oft, oder? Sind das Sekunden? oder was ist
das für eine Zeiteinheit?
Gruß
Ingo
> Vielleicht sollte ich auch mal auf meinem Bus genauer mitloggen.> Bei Dir ist das ja ziemlich oft, oder? Sind das Sekunden? oder was ist> das für eine Zeiteinheit?
Ja, sind Sekunden. Die Daten kommen kontinuierlich, aber nicht zyklisch.
Hallo Rudi,
in Bild 4 und 5 scheint das wohl keine Störung zu sein.
Das scheint wohl die RC30 zu sein (0x10). Die kleinen "Störungen" sehen
genauso aus wie das nachfolgende Byte. Also ob die RC30 die Bytes erst
zum Sendeteil überträgt und trotzdem den Weg auf den Bus finden. Und
dann wird erst das Byte übertragen. Beim lesen dürfte das Problem
vermutlich nicht auftreten. Die anderen Busteilnehmer scheinen ja nicht
so eine Pause zu machen.
In Bild 1 bist Du vermutlich in der Zeile verrutscht. Das sind 1,04 ms =
961,5 Hz also 10 Bit.
die letzten beiden Bilder sind vermutlich Deine Antwort, oder? Sieht so
aus als ob es da wirklich eine Kollision gibt. Kann das sein dass Du zu
langsam geantwortet hast und das nächste Telegramm oder eine
Fehlermeldung verschickt wird?
Gruß
Ingo