Forum: Haus & Smart Home Logamatic 2107 Schnittstelle


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Matthias (Gast)


Lesenswert?

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?

von Mario (Gast)


Lesenswert?

@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

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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.

von Werner Brösel (Gast)


Lesenswert?

Die ersten Hijacker stellen sich vor ...

von Matthias (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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

von Mike (Gast)


Lesenswert?

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

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

Hatte mal eine XLS-Tabelle gemacht mit den damaligen Erkenntnissen.
Vielleicht könnte man die so oder anders weiterführen.

Gruß
Ingo

von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

@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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Was haltet ihr von diesem Aufbau für die Beschreibung (siehe Anhang) ? 
Ich habe die Seite mit Tex erstellt.

von Matthias (Gast)


Lesenswert?

@Rudi
Schön übersichtlich!

von IngoF (Gast)


Lesenswert?

@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

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Zur 2107:

Ich habe die Adapterplatine jetzt fertig und werde die nächsten Tage mal 
berichten.

von Joachim K. (himtronics)


Angehängte Dateien:

Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Joachim K. (himtronics)


Lesenswert?

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

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

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

von Joachim K. (himtronics)


Angehängte Dateien:

Lesenswert?

So, hier mal 2 Bilder des KM271. Als Chip ist ein Sipex SP232 ACT 9524
drauf, und ein paar Kondensatoren, Widerstände, eine Diode.

Joachim

von Rudi (Gast)


Lesenswert?

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 ?

von Joachim K. (himtronics)


Lesenswert?

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.

von IngoF (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

noch vergessen.... Wie groß ist denn Deine Datenbank mit Werten für 
einen Monat?

Gruß
Ingo

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

@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:
1
CREATE TABLE `SOURCE` (
2
  `ID` int(11) NOT NULL auto_increment,
3
  `ADDR` char(200) NOT NULL,
4
  PRIMARY KEY  (`ID`),
5
  KEY `ADDR` (`ADDR`)
6
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC

Die ADDR ist bei mir der MAC angelehnt, z.B. 00:12:33:12:21:55:45:45 
oder auch HE:IZ:00:00:00:00:00:01.

Da ich mehrere Sensoren habe, und es auch mehr werden sollen, ist das 
erstmal für mich wichtig die Daten nach dem Absender zu unterscheiden.

Die Datentabelle ist dann nicht sooo optimal, hält sich aber in Grenzen:
1
CREATE TABLE `DATA` (
2
  `ID` int(10) unsigned NOT NULL auto_increment,
3
  `SOURCE` int(11) NOT NULL,
4
  `TYPE` int(10) unsigned NOT NULL,
5
  `DATA` char(200) NOT NULL,
6
  `TIME` datetime NOT NULL,
7
  PRIMARY KEY  (`ID`),
8
  KEY `SOURCE_TYPE_TIME` (`SOURCE`,`TYPE`,`TIME`),
9
  KEY `SOURCE` (`SOURCE`),
10
  KEY `TYPE` (`TYPE`),
11
  KEY `TIME` (`TIME`)
12
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 PACK_KEYS=1 ROW_FORMAT=DYNAMIC

Bei der Tabelle:

SOURCE : Source-ID aus der Tabelle SOURCE
TYPE: Typ der Daten, kann für jeden Sensor selbst festgelegt werden
DATA: die Daten
TIME: UTC Zeitstempel

von IngoF (Gast)


Lesenswert?

>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

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

So, die Platine läuft ;-)

von Rudi (Gast)


Lesenswert?

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

von Jens H. (sevensworld)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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/eBUS_Stuttgart_041201_eBUS_Only.PDF
ist auf S.28 ein eBus Interface dargestellt. Würde das auch für den 
EMS-Bus gehen? (vielleicht nicht unbedingt 24V Versorgung) Was meint ihr 
dazu?

Gruss Matthias

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Jens H. (sevensworld)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Jens H. (sevensworld)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Rudi (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Helmut H. (der_andere)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

@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

von IngoF (Gast)


Lesenswert?

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:
1
FE 06 00#------------------------
2
:154
3
:222
4
:24
5
:216
6
01#
7
:89
8
:123
9
:24
10
:27
11
10#
12
:192
13
:226
14
:126
15
:130
16
11#
17
:3
18
:71
19
:126
20
:65
21
22
FF 06 00#------------------------
23
:154
24
:71
25
:216
26
01#
27
:89
28
:123
29
:24
30
:27
31
10#
32
:226
33
:126
34
:124
35
:130
36
11#
37
:39
38
:71
39
:12
40
:65

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

@IngoF

Ich habe hier:

http://www.nightmare.com/~ryb/code/CrcMoose.py

noch ein nettes Skript für die CRC-Berechnung gefunden.

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

Was berechnest du denn ?

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

Schau dir mal die Betriebsstunden an, So schwer kann die CRC nicht sein 
...

Wenn sich nur 1 Byte ändert (bei den Betriebsstunden das letzte vor der 
CRC) funktioniert ein einfaches XOR aller Werte, um den gleichen Wert 
für alle Nachrichten zu erhalten. Wenn sich das vorletze Byte ändert, 
dann sieht es ein wenig anders aus, scheint dann ein etwas anderes XOR 
zu sein (bit shuffle etc.).

Mal ein Beispiel:

08 10 14 00 1A 7C D8 11 : A3
08 10 14 00 1A 7C DA 13 : A3
08 10 14 00 1A 7C DC 15 : A3
08 10 14 00 1A 7C DE 17 : A3
08 10 14 00 1A 7C E0 29 : A3
08 10 14 00 1A 7C E2 2B : A3
08 10 14 00 1A 7C E4 2D : A3
08 10 14 00 1A 7C E6 2F : A3
08 10 14 00 1A 7C E8 21 : A3
08 10 14 00 1A 7C EA 23 : A3
08 10 14 00 1A 7C EC 25 : A3
08 10 14 00 1A 7C EE 27 : A3
08 10 14 00 1A 7C F0 39 : A3
08 10 14 00 1A 7C F2 3B : A3
08 10 14 00 1A 7C F4 3D : A3
08 10 14 00 1A 7C F6 3F : A3
08 10 14 00 1A 7C F8 31 : A3
08 10 14 00 1A 7C FA 33 : A3
08 10 14 00 1A 7C FC 35 : A3
08 10 14 00 1A 7C FE 37 : A3
08 10 14 00 1A 7D 00 CB : A0
08 10 14 00 1A 7D 02 C9 : A0
08 10 14 00 1A 7D 04 CF : A0
08 10 14 00 1A 7D 06 CD : A0
08 10 14 00 1A 7D 08 C3 : A0
08 10 14 00 1A 7D 0A C1 : A0
08 10 14 00 1A 7D 0C C7 : A0
08 10 14 00 1A 7D 0E C5 : A0
08 10 14 00 1A 7D 10 DB : A0
08 10 14 00 1A 7D 12 D9 : A0
08 10 14 00 1A 7D 14 DF : A0
08 10 14 00 1A 7D 16 DD : A0
08 10 14 00 1A 7D 18 D3 : A0
08 10 14 00 1A 7D 1A D1 : A0
08 10 14 00 1A 7D 1C D7 : A0
08 10 14 00 1A 7D 1E D5 : A0
08 10 14 00 1A 7D 20 EB : A0
08 10 14 00 1A 7D 22 E9 : A0
08 10 14 00 1A 7D 24 EF : A0
08 10 14 00 1A 7D 26 ED : A0
08 10 14 00 1A 7D 28 E3 : A0
08 10 14 00 1A 7D 2A E1 : A0
08 10 14 00 1A 7D 2C E7 : A0
08 10 14 00 1A 7D 2E E5 : A0

von IngoF (Gast)


Lesenswert?

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

von chipshuffler (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

@chipshuffler

Dein Schaltplan stimmt nicht.

von chipshuffler (Gast)


Lesenswert?

> Wird ein eingestecktes KM271 irgendwo im Display-Menue angezeigt?

Im Installationsmenue erscheint unter KESSEL der Menuepunkt 
ABGASTEMPERATURSCHWELLE, wenn das KM271 erkannt wurde.

von Ingo F. (ingof)


Lesenswert?

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

von chipshuffler (Gast)


Angehängte Dateien:

Lesenswert?

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

von Joachim K. (himtronics)


Lesenswert?

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?

von Rudi (Gast)


Lesenswert?

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

von Joachim K. (himtronics)


Lesenswert?

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.

von chipshuffler (Gast)


Angehängte Dateien:

Lesenswert?

Die Kennlinie des Abgasfühlers.

von chipshuffler (Gast)


Angehängte Dateien:

Lesenswert?

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

von Rudi (Gast)


Lesenswert?

Die Verbindung bei C6/C7/R3 ist nicht klar. Ist C6 mit C7 verbunden und 
C7 mit R3 ?

von Ingo F. (ingof)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

Ne, schon beide getrennt - ich versuche halt die infos so weit es geht 
auseinander zu halten :-)

Ich habe mich aben mal hingesetzt und versucht, alles bisher 
verifizierte in das Wiki zu strukturieren.
Dabei ist mir aufgefallen, dass in den letzten Wochen der Wunsch nach 
einer Doku/Projektplattform gekommen ist.
An sich kann man sowas schon per SourceForge lösen...

Für die Dokumentation würde ich schon ein Wiki vorschlagen. Es kommt nur 
darauf an wie durchdacht man das ganze strukturiert.
Ich könnte so ein Setup machen, so dass wir dann alle darin editieren 
können (momentan ist es halt in meinem Scratchpad wiki drin).

Für Sourcen würde ich vorschlagen das ganze per SVN zu machen.

http://wiki.neo-soft.org/index.php/Heizungsschnittstelle
http://wiki.neo-soft.org/index.php/Heizungsschnittstelle/Logamatic2107
http://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!

von Malte B. (hellraiser)


Lesenswert?

@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

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

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

von chipshuffler (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Rudi (Gast)


Lesenswert?

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 ?

von Malte B. (hellraiser)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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.

von Malte B. (hellraiser)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Reinhard (Gast)


Lesenswert?

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 ?

von IngoF (Gast)


Lesenswert?

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

von chipshuffler (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von FYI (Gast)


Lesenswert?


von chipshuffler (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

Na das ist doch mal etwas. Evtl. ist die 91 auch ein Status der 
Displayeinheit ...

von Ingo F. (ingof)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

@ Ingo F.

> Wäre ganz interessant um die Prüsumme herauszubekommen.

Wie das ? Über den Betriebsstundenzähler hast du doch alle Bits die sich 
ändern ?!

von IngoF (Gast)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

Hi Leute,

habe eben ersten Test gefahren:
Modul nicht erkannt, keine weitere Temperatur (FG) im Display nach 
Neustart der Steuerung. Muss man da irgendwas einstellen oder sollte die 
Logamatic das Modul selbst erkennen?

Sind die Werte der Widerstände und Kondensatoren ok? (siehe wiki)
Ich habe jetzt auch nochmal uebers Platinenlayout geschaut ob ich pins 
verwechselt habe, kann aber nichts finden.

Kann das vielleicht mal jemand verifizieren?
http://wiki.neo-soft.org/index.php/Heizungsschnittstelle/Logamatic2107/K4#PCB_Tests
http://wiki.neo-soft.org/index.php/Bild:KM271_Nachbau1.gif
http://wiki.neo-soft.org/index.php/Bild:KM271_Nachbau2.gif
http://wiki.neo-soft.org/index.php/Bild:Km271_schematic.gif

Gruss, Malte

von Rudi (Gast)


Lesenswert?

1K als Temperaturfühler.

von Malte B. (hellraiser)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von chipshuffler (Gast)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

@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

von Malte B. (hellraiser)


Lesenswert?

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

von chipshuffler (Gast)


Lesenswert?

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.

von Malte B. (hellraiser)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

Moin,

trenne doch einzelne Leitungen (Paare) und schau an welcher es liegt !? 
Gibt es sonst noch Neuigkeiten ???

von Ingo F. (ingof)


Angehängte Dateien:

Lesenswert?

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

von Andreas (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

Hat sich schon jemand mit der Sendeschaltung fuer die RC30 auseinder 
gesetzt ?

von Ingo F. (ingof)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Ingo F. (ingof)


Lesenswert?

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

von Ingo F. (ingof)


Lesenswert?

>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

von Rudi (Gast)


Lesenswert?

@Ingo F.

könntest du einen kleinen Schaltplan für den TX-Pfad posten ?

von IngoF (Gast)


Lesenswert?

Hallo Rudi,

kann ich gerne machen. Allerdings nicht mehr heute. Irgendwann im laufe 
der Woche.

Gruß
Ingo

von sean (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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.

von sean (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

Du könntest die Daten in einer mysql Datenbank speichern oder z.B. die 
rrdtools benutzen. Beides hat seine Vor- und Nachteile.

von Christian (Gast)


Lesenswert?

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 !

von Rudi (Gast)


Lesenswert?

hier z.B. eine 3.18

von Ingo F. (ingof)


Angehängte Dateien:

Lesenswert?

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

von Ingo F. (ingof)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Rudolf K. (rudolfkoenig)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Ingo F. (ingof)


Lesenswert?

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

von Andreas (Gast)


Lesenswert?

Hi,

ich suche eine KM271 Platine. Hat jemand eine über oder läßt jemand 
demnächst welche machen ?

Gruß Andreas

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

@ 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

von Andreas (Gast)


Lesenswert?

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

von Rudolf K. (rudolfkoenig)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Malte B. (hellraiser)


Lesenswert?

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

von Rudolf K. (rudolfkoenig)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von martin (Gast)


Lesenswert?

Hallo,
welcher Händler bietet denn den verwendeten ADCMP370 an? Oder gibt es 
Vergleichstypen? Ich kann da nichts finden!

Gruß
Martin

von Rudi (Gast)


Lesenswert?

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

von BerndV (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von BerndV (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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 ?

von BerndV (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

Kannst du die Heizung auch ohne Reset zum laufen bewegen ? Ich denke per 
Software könnte man evtl. den Fehlerspeicher löschen.

von BerndV (Gast)


Lesenswert?

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?

von Rudolf K. (rudolfkoenig)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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.

von Matthias (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

Warum sind deine Nachrichten so kurz ?
1
08 00 18 00 31 01 E4 64 23 09 01 25 60 80 00 02 03 01 4F 00 A4 0E 2D 48 00 C8 00 02 00 DF
2
3
08 00 18 00 3C 02 64 01 2D 80 02 00 00 0D 4C 1C 02 5F 12
4
5
08 00 19 00 00 5C 01 DF 80 00 00 00 00 37 00 D1 1F 0C DB 88 00 00 00 0B 40 DD 00 C3 EA 14
6
7
08 00 19 00 00 02 14 00 00 64 08 02 37 00 02 A0 06 00 23 13

von Ingo F. (ingof)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

@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

von Rudi (Gast)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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

von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

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

von Rudi (Gast)


Lesenswert?

@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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Anbei die Versorgung und Datenschnittstelle einer RC30. Alles über 2 
Kontakte.

von Matthias (Gast)


Lesenswert?

@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

von Rudi (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

@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

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Rudi (Gast)


Lesenswert?

Aha,

mhh. Ich habe jetzt folgendes probiert, mit allen Bytes gerechnet bis 
auf die CRC.

crc = 0x60

crc = crc ^ data
if crc & 0x80 => crc = crc ^ 0x09

usw.

Der Stern hinter dem Byte bedeutet es wurde mit dem Byte gerechnet und 
ein # bedeutet ein xor 0x09 und ein ! bedeutet kein xor 0x09. Die finale 
CRC wird mit 0xff xort.

Stimmt auch fuer eine Gruppe bis es wieder nicht stimmt ;-) Ich glaube 
die benutzen doch ne Tabelle oder es geht noch etwas anderes mit rein. 
Evtl. hilft es ja.


FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! DE * # 39 00 39
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! E0 * # 07 00 07
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! E2 * # 05 00 05
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! E4 * # 03 00 03
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! E6 * # 01 00 01
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! E8 * # 0F 00 0F
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! EC * # 0B 00 0B
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! EE * # 09 00 09
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! F0 * # 17 00 17
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! F2 * # 15 00 15
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! F4 * # 13 00 13
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! F6 * # 11 00 11
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! F8 * # 1F 00 1F
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! FA * # 1D 00 1D
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! FC * # 1B 00 1B
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 63 * ! FE * # 19 00 19
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 00 * ! E9 00 E9
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 02 * ! EB 00 EB
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 04 * ! ED 00 ED
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 06 * ! EF 00 EF
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 08 * ! E1 00 E1
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 0C * ! E5 00 E5
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 0E * ! E7 00 E7
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 10 * ! F9 00 F9
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 14 * ! FD 00 FD
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 16 * ! FF 00 FF
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 18 * ! F1 00 F1
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 1A * ! F3 00 F3
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 1C * ! F5 00 F5
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 1E * ! F7 00 F7
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 20 * ! C9 00 C9
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 22 * ! CB 00 CB
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 24 * ! CD 00 CD
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 26 * ! CF 00 CF
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 28 * ! C1 00 C1
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 2A * ! C3 00 C3
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 2C * ! C5 00 C5
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 2E * ! C7 00 C7
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 30 * ! D9 00 D9
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 32 * ! DB 00 DB
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 34 * ! DD 00 DD
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 36 * ! DF 00 DF
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 38 * ! D1 00 D1
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 3A * ! D3 00 D3
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 3C * ! D5 00 D5
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 3E * ! D7 00 D7
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 42 * ! AB 00 AB
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 44 * ! AD 00 AD
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 46 * ! AF 00 AF
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 48 * ! A1 00 A1
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 4A * ! A3 00 A3
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 4C * ! A5 00 A5
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 4E * ! A7 00 A7
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 50 * ! B9 00 B9
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 52 * ! BB 00 BB
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 54 * ! BD 00 BD
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 56 * ! BF 00 BF
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 58 * ! B1 00 B1
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 5A * ! B3 00 B3
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 5D * ! B4 00 B4
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 5F * ! B6 00 B6
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 61 * ! 88 00 88
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 63 * ! 8A 00 8A
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 65 * ! 8C 00 8C
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 67 * ! 8E 00 8E
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 69 * ! 80 00 80
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 6B * ! 82 00 82
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 6D * ! 84 00 84
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 6F * ! 86 00 86
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 71 * ! 98 00 98
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 73 * ! 9A 00 9A
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 75 * ! 9C 00 9C
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 77 * ! 9E 00 9E
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 79 * ! 90 00 90
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 7B * ! 92 00 92
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 7D * ! 94 00 94
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 7F * ! 96 00 96
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 81 * # 68 00 61
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 83 * # 6A 00 63
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 85 * # 6C 00 65
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 87 * # 6E 00 67
FOUND:  08 * ! 10 * ! 14 * ! 00 * ! 1E * ! 64 * ! 89 * # 60 00 69

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

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

von IngoF (Gast)


Angehängte Dateien:

Lesenswert?

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.

von IngoF (Gast)


Lesenswert?

Wie sieht denn Deine Schaltung mit den FETS und der Z-Diode aus?
Würde mich mal interessieren :-)

Gruß
Ingo

von Rudi (Gast)


Lesenswert?

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 !

von Rudi (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

Achso... das MSB bei der Prüfsumme.... Nicht beim Datenbyte... Na dann 
werde ich mal testen...

von Rudi (Gast)


Lesenswert?

Hier der Code:
1
poly = 12
2
crc1 = 0x00
3
4
for i in range(0,len(a)-1):
5
  crc1 = crc1 ^ int(a[i],16)
6
  crc2 = crc1
7
  if crc1 & 0x80: crc1 ^= poly
8
9
  d = 0
10
  if crc1 & 0x80: d = 1
11
  crc1 = crc1 << 1
12
  crc1 &= 0xfe
13
  crc1 |= d
14
15
=> crc2

von Rudi (Gast)


Lesenswert?

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.

von Rudi (Gast)


Lesenswert?

> Funktioniert es dann auch bei allen anderen Telegrammen, oder nur bei
> bei den Betriebstunden Telegrammen?
Bei allen ;-)

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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 ?

von Rudi (Gast)


Lesenswert?

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.

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

> 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 )
2
{
3
        while(len--)
4
        {
5
                /* wait two bit */
6
                timer_set_wait(&timer02,20UL);
7
8
                /* wait for empty data register */
9
                while (!(UCSR0A&_BV(UDRE0))) __asm("nop");
10
                /* send data */
11
                UDR0 = *data++;
12
        }
13
14
        /* send break */
15
        if ( flag & D_DATA_FLAG_BREAK )
16
        {
17
                /* wait for tx complete */
18
                while (!(UCSR0A&_BV(TXC0))) __asm("nop");
19
                /* clear flag */
20
                UCSR0A|=_BV(TXC0);
21
                /* wait one bit */
22
                timer_set_wait(&timer02,10UL);
23
                /* disable uart TX operation */
24
                UCSR0B &= ~_BV(TXEN0);
25
                /* set TX line low (gpio) */
26
                PORTD &= ~(1<<1);
27
                /* wait 11 bit */
28
                timer_set_wait(&timer02,110UL);
29
                /* set TX line high (gpio) */
30
                PORTD |= (1<<1);
31
                /* enable uart TX operation */
32
                UCSR0B |= _BV(TXEN0);
33
        }
34
}

von IngoF (Gast)


Lesenswert?

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

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

1
89 00
2
09 88 04 05 01 AF 00
3
08 09 04 05 19 CB 00
4
09 88 04 0B 01 B3 00
5
08 09 04 0B 0C C2 00
6
09 88 15 00 01 E1 00
7
08 09 15 00 00 9C 00
8
09 08 16 00 FF 77 00
9
01 00
10
09 08 16 01 5A D0 00
11
01 00
12
09 08 16 03 00 8E 00
13
01 00
14
09 88 16 15 01 C7 00
15
08 09 16 15 5D 00
16
09 88 16 16 01 C1 00
17
08 09 16 16 5E 00
18
09 08 33 01 FF E1 00
19
01 00
20
09 08 33 09 00 0E 00
21
01 00
22
09 00 29 00 6B 5F 00
23
09 00
24
08 00 19 00 00 B7 00 D5 80 00 00 00 00 64 00 D3 D6 0D 0A AC 00 00 00 0B 6C 4C 00 C6 80 7A 00
25
8A 00
26
89 00
27
09 88 04 0E 01 B9 00
28
08 09 04 0E 62 00
29
09 00
30
8B 00
31
89 00
32
09 00
33
08 00 33 00 08 FF 32 FB 00 0F 00 01 46 00 FF B1 00
34
08 00 34 00 32 01 D6 01 D6 21 00 00 03 00 01 9E 60 00 0D 56 00 21 00
35
8C 00
36
89 00
37
09 00
38
8D 00
39
08 00 07 00 03 00 00 00 00 00 00 00 00 00 00 00 00 12 00
40
08 00 16 00 FF 5A 64 00 06 FA 0A 01 04 64 37 02 56 00
41
89 00
42
09 00
43
08 00 18 00 00 00 D6 00 00 00 00 24 60 80 00 01 D6 00 D6 00 00 0F 30 55 01 0E 00 00 00 09 00
44
89 00
45
09 00
46
89 00
47
09 00
48
89 00
49
09 00
50
8E 00
51
89 00
52
09 00
53
8F 00
54
89 00
55
09 00
56
89 00
57
09 00
58
89 00
59
09 00
60
90 00
61
98 FF
62
89 00
63
09 00
64
91 00
65
89 00
66
09 00
67
89 00
68
09 00
69
89 00
70
09 00
71
89 00
72
09 00
73
89 00
74
09 00
75
89 00
76
09 00
77
89 00
78
09 00
79
92 00
80
89 00
81
09 00
82
93 00
83
89 00
84
09 00
85
89 00
86
09 00
87
89 00
88
09 00
89
94 00
90
89 00
91
09 00
92
95 00
93
89 00
94
09 00
95
89 00
96
09 00
97
89 00
98
09 00
99
89 00
100
09 00
101
89 00
102
09 00
103
89 00
104
09 00
105
89 00
106
09 00
107
96 00
108
89 00
109
09 00
110
97 00
111
89 00
112
09 00
113
89 00
114
09 00
115
89 00
116
09 00
117
98 00
118
89 00
119
09 00
120
A0 00
121
89 00
122
09 00
123
89 00
124
09 00
125
89 00
126
09 00
127
89 00
128
09 00
129
89 00
130
09 00
131
89 00
132
09 00
133
89 00
134
09 00

von Rudi (Gast)


Lesenswert?

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

von Ingo F. (ingof)


Lesenswert?

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

von Ingo F. (ingof)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

> 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.
1
1272717168.7  98 FF 
2
1272717171.3  98 FF 
3
1272717175.15 88 FF 
4
1272717177.27 98 FF 
5
1272717179.87 98 FF 
6
1272717182.48 98 FF 
7
1272717184.63 98 FF 
8
1272717186.38 98 FF 
9
1272717186.86 88 FF 
10
1272717188.16 98 FF 
11
1272717190.76 98 FF 
12
1272717193.36 98 FF 
13
1272717194.06 98 FF 
14
1272717195.36 98 FF 
15
1272717196.58 18 FF 
16
1272717197.43 18 FF 
17
1272717199.39 98 FF 
18
1272717199.86 98 FF 
19
1272717201.17 98 FF 
20
1272717206.73 98 FF 
21
1272717209.33 98 FF 
22
1272717214.17 98 FF 
23
1272717215.31 98 FF 
24
1272717216.61 98 FF 
25
1272717218.07 98 FF 
26
1272717220.67 88 FF 
27
1272717223.27 98 FF 
28
1272717226.69 98 FF 
29
1272717227.17 98 FF 
30
1272717228.47 98 FF 
31
1272717231.07 98 FF 
32
1272717234.38 98 FF 
33
1272717236.12 18 FF 
34
1272717241.48 98 FF 
35
1272717244.45 98 FF 
36
1272717247.05 98 FF 
37
1272717249.65 98 FF 
38
1272717252.25 98 FF 
39
1272717254.53 98 FF 
40
1272717255.3  98 FF 
41
1272717255.66 98 FF 
42
1272717257.9  98 FF 
43
1272717260.5  98 FF 
44
1272717263.1  98 FF 
45
1272717264.88 98 FF 
46
1272717266.18 98 FF 
47
1272717268.79 98 FF 
48
1272717271.39 98 FF 
49
1272717274.69 98 FF 
50
1272717275.99 98 FF 
51
1272717276.76 98 FF 
52
1272717278.79 88 FF 
53
1272717279.19 98 FF 
54
1272717279.89 98 FF

von IngoF (Gast)


Lesenswert?

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

von Rudi (Gast)


Lesenswert?

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

von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Anbei mal ein paar Oszi Screens von den Nachrichten und dann noch die 
Reaktion wenn ich auf einen Request antworte.

von IngoF (Gast)


Lesenswert?

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.