Solarthermie SunGo SXL: Unterschied zwischen den Versionen

Aus TippvomTibb
Zur Navigation springen Zur Suche springen
Zeile 227: Zeile 227:
 
|0x00006|| 6 ||FF ... FF 01||
 
|0x00006|| 6 ||FF ... FF 01||
 
|-
 
|-
|0x00010|| 16 ||20 57 61 67 ... ||Wagner& Co ...  
+
|0x00010|| 16 ||20 57 61 67 ... ||Wagner& Co ... System-Nr. und System-Version sind als 2 Byte Integer codiert
 
|-
 
|-
|0x00100||   8 ||Byte Datum
+
|0x00100|| 256 || 8 Byte (Identifier ?)
 
|-
 
|-
|0x00210||   || ||Kopfdaten
+
|0x00210|| 528  || ||Kopfdaten (Kopfzeile Messwerte incl. Typ und Reihenfolge). Pro Eintrag 16 Bytes.
 
|-
 
|-
 
|0x00520||    || ||In Blöcken von jeweils 264 Byte Daten (Datum (8 Byte) + 4 * Werte (64 Byte))
 
|0x00520||    || ||In Blöcken von jeweils 264 Byte Daten (Datum (8 Byte) + 4 * Werte (64 Byte))
Zeile 238: Zeile 238:
  
  
Was im Vergleich mit der auf hobbyelektronik.org veröffentlichen Binärdatei auffällt ist, dass 40 (64) in der Datalogging Sofware kein zulässiges LogIntervall ist. Es werden nur die Werte 1,2,5,10,15,20 und 30 Minuten vorgeschlagen. Die nächsten Bytes sind bei mir 05 23 01, in der Vergleichsdatei 05 24 01. Die darauf folgende Reihe von FF schließen mit 01 oder 00 ab.  
+
Was im Vergleich mit der auf hobbyelektronik.org veröffentlichen Binärdatei auffällt ist, dass der Wert 0x40 (64) in der Datalogging Software kein zulässiges LogIntervall ist. Es werden nur die Werte 1,2,5,10,15,20 und 30 Minuten vorgeschlagen. Die nächsten Bytes sind bei mir 05 23 01, in der Vergleichsdatei 05 24 01. Die darauf folgende Reihe von FF schließen mit 01 oder 00 ab. Ein weiterer großer Unterschied ist an Offset-Position 0000:0100 zu sehen. In meiner Binärdatei steht ab dieser Stelle ein 8 Byte (Zufallswert). Dieser Wert fehlt in der Vergleichsdatei. Der Grund liegt in der (Page-)Organisation des EEPROMs. Dort sind 256 bzw. 264 Bytes pro Page einstellbar. Die Differenz sind genau die fraglichen 8 Bytes. Aber egal ob sie nun mitgelesen/geschrieben werden, sie lassen sich leicht im Programm ausfiltern.
  
 
<div style="font-family:Courier;white-space: pre-wrap;">
 
<div style="font-family:Courier;white-space: pre-wrap;">
Zeile 249: Zeile 249:
 
00000060  20 53 79 73 74 65 6D 2D 56 65 72 2E 20 20 XX XX  System-Ver.  XX
 
00000060  20 53 79 73 74 65 6D 2D 56 65 72 2E 20 20 XX XX  System-Ver.  XX
 
</div>
 
</div>
 +
 +
Die darauf folgenden Kopfdaten haben immer 16 Bytes. Das zweitletzte Byte ist wohl immer 0x00 und stellt den Stringabschluss dar. Das letzte (16.) Byte ist der Typ des (Mess-)wertes.
 +
#00 Dummy
 +
#01 Temperatur
 +
#02 (Strahlung)
 +
#07 (Speicher)
 +
#08 Datum
 +
#09 Uhrzeit
 +
#0A Prozent
 +
#0B (Funktion aktiv)
 +
#0C (Funktion aktiv)
 +
#0D (Fehler)
 +
#0E (Fehler)
 +
#0F (Speicher)
 +
#13 (Volumenstrom)
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px; overflow:auto;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px; overflow:auto;">

Version vom 28. Februar 2021, 12:29 Uhr

Motivation

Angeregt durch drei Artikel unter https://hobbyelektronik.org[1] habe ich mein Vorhaben, die SunGo SXL Solarthermie Steuerung in meine Gebäudeautomation zu integrieren, wieder aufgenommen. Die Artikel sind als für mich eine schöne Quelle (gewesen) meine Informationen und Daten abzugleichen und die Sicherheit zu haben, dass so wie ich mir das Ganze vorgestellt habe, scheinbar funktioniert. Was durchaus erstaunlich ist. Denn bereits zu Beginn habe ich bei der Analyse des Datensticks im Datenblatt des AT45DB081D die Taktfrequenz bis zu 66 MHz gelesen. Sollte die SunGo diese Rate ausnutzen ist eine Emulation des Datensticks doch schon recht aufwendig und alle Mikrocontroller und RasPis dieser Welt als reine Softwareemulatoren außen vor. Aber dazu weiter unten mehr.

Allgemeines

Die SunGo SXL ist eine Steuerung für solarthermische Anlagen der Firma Wagner&Co. Die Steuerung bietet die Möglichkeit des Datenloggings. Zu diesem Zweck wird an der markierten Stelle ein kleiner Stick eingesteckt. Um die Daten, die auf dem Stick aufgezeichnet werden zu visualisieren muss der Stick abgezogen werden und am PC in einen Leseadapter gesteckt werden. Dann lassen sich mit der mitgelieferten Software (Datalogging Solareg II; DtSol2.exe)die Daten einlesen, anzeigen und exportieren.

Artikel

Die Artikel liefern eine Vielzahl von mitprotokollierten Daten und deren Analyse bis hin zur Beschreibung des möglichen Nachrichtenformats. Dafür herzlichen Dank, das hat mir viel Zeit gespart. Auch die Interface-Implementierung mit Hilfe eines ATmega328 und die Datenaufbereitung durch einen RasPi ist eine gelungene Referenz. Zwischendrin haben mich dann aber immer mal wieder Aussagen unsicher gemacht, die ich nicht nachvollziehen konnte. Dazu gehörten z. B. die Aussagen "Datenstick als Sackgasse herausgestellt" und "Leider stellte sich heraus, dass der Regler für den "zweiten Kanal" keinen Chip select herausführt." Der Interface-ATmega ist auch z.B. MISO nicht angeschlossen. Was ist mit den Daten, die die SunGo lesen will!!! Da ich diese Dinge nicht nachvollziehen kann habe ich mich entschlossen "meinen" Weg zu gehen und mir mit den Erkenntnissen der Artikel nur Gewissheit zu verschaffen, dass ich nicht in Fallen tappe, die bereits ausfindig gemacht wurden.

Vorbemerkungen

Im ersten Analyseschritt konzentriere ich mich ganz auf die Daten auf dem Datenstick. Wenn es gelingt das Datenformat zu "lesen" kann man daraus schließen welche Daten am Port der Steuerung übertragen werden und zwar in beide Richtungen! Es ist doch sehr erstaunlich, dass durch einen fehlenden Stick am Steckplatz der Steuerung und damit fehlender Parameter z.B. des Log-Intervalls, die Steuerung freiwillig trotzdem Daten an den Stick sendet. Die Analyse der Kommunikation der SunGo über den MiniDIN-Port kommt erst später, sobald die Daten des Datensticks interpretierbar sind.

Analyse

Den Datenumfang sieht man am schönsten in der Datalog-Software (Datalogging Solareg II)

Datalogging-Software (V2.02.16) Menüstruktur:

Als Analysezeitraum diente eine Aufzeichnung vom 03.11. (Start 04:16 Uhr) bis 14.11. (Ende 12:56 Uhr). Zur Aufzeichnung stehen folgende Werte zu Verfügung:

  • Uhrzeit
  • T1 Kollektor °C
  • T2 Speicher unten
  • T3 Speicher oben
  • T4 Thermostat A
  • T5 Poolschutz
  • T6 Ertrag T
  • T7 Rücklaufanhebung T
  • T8 Rücklaufanhebung T
  • T9 T
  • Strahlung W/m²
  • Speicher kWh
  • Speicher h
  • Funktion aktiv 1
  • Funktion aktiv 2
  • Volumenstrom l/min

Wobei hier noch nicht deutlich erkennbar ist, ob gerade die Werte Strahlung und Speicher, Werte sind die in der Datalog-Software aufbereitet sind und sich somit gar nicht als Rohdaten auf dem Datenstick befinden.

Anzahl Datensätze: (Aufzeichnungsintervall 1 Minute)

  • 03.11. 1184
  • 04.11. 1440
  • 05.11. 1440
  • 06.11. 1440
  • 07.11. 1440
  • 08.11. 1440
  • 09.11. 1440
  • 10.11. 1440
  • 11.11. 1440
  • 12.11. 1440
  • 13.11. 1440
  • 14.11. 777 in Summe 16361 Einträge

Der benutzte Datenstick hat eine Größe von 8 Mbit. Die Funktion "Rohdaten Datastick lesen" erzeugt eine Datei namens "debug.bin" mit einer Größe von 2 MiB. Da kommen doch Zweifel auf, dass es sich wirklich um die Rohdaten auf dem Stick handelt.

Mein FlashCat-EEPROM-Programmer liefert den tatsächlichen Inhalt des EEPROMS. Und siehe da. Das was da in debug.bin drin steht ist nach meinem Verständnis gar kein "binärer" Inhalt, sondern eine TXT-Datei, die die hexadezimale Entsprechung der eigentlichen Binärdatei in ASCII enthält. Beispiel: In der Binärdatei steht HEX AA 55 01 05 ... Dies ist die hexadezimale Darstellung der Binärdaten 10101010 01010101 00000001 00001001 ... im EEPROM. Wenn man nun diese AA 55 01 05 (4 Byte) in ASCII codiert erhält man 61 61 35 35 30 31 30 35 (8 Byte).... Dadurch erklärt sich die doppelte Dateigröße. Die Verwendung eines solchen Formates (Codierung) erschließt sich mir nicht. NB: Endian habe ich nicht kontrolliert. Die Bin-Datei lässt Little-Endian vermuten. Ist aber eigentlich auch egal. Ich muss sowieso später im Ausleseprogramm individuell darauf reagieren.

Als Grundlage für die weitere Untersuchung dient natürlich jetzt die "korrekte" Bin-Datei.

Inhalt EEPROM

0000:0000 | AA 55 01 05 23 01 FF FF FF FF FF FF FF FF FF 01 | ŠU..#.ĸĸĸĸĸĸĸĸĸ. 0000:0010 | 20 57 61 67 6E 65 72 20 26 20 43 6F 20 20 00 00 | Wagner & Co .. 0000:0020 | 00 00 00 00 00 00 00 00 00 00 20 53 6F 6C 61 72 | .......... Solar 0000:0030 | 20 53 6F 6C 61 72 74 65 63 68 6E 69 6B 20 31 34 | Solartechnik 14 0000:0040 | 31 35 31 36 53 50 31 32 30 31 31 32 35 31 30 30 | 1516SP1201125100 0000:0050 | 20 20 53 79 73 74 65 6D 2D 4E 72 2E 20 20 04 BB | System-Nr. .ŧ 0000:0060 | 20 53 79 73 74 65 6D 2D 56 65 72 2E 20 20 00 66 | System-Ver. .f 0000:0070 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0080 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0090 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:00A0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:00B0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:00C0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:00D0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:00E0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:00F0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0100 | BF FF 7E FF F7 E7 DF FF FF FF FF FF FF FF FF FF | ŋĸ~ĸũįßĸĸĸĸĸĸĸĸĸ 0000:0110 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0120 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0130 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0140 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0150 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0160 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0170 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0180 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0190 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:01A0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:01B0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:01C0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:01D0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:01E0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:01F0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0200 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸĸ 0000:0210 | 20 20 20 20 44 61 74 75 6D 20 20 20 20 20 00 08 | Datum .. 0000:0220 | 20 20 20 55 68 72 7A 65 69 74 20 20 20 20 00 09 | Uhrzeit .. 0000:0230 | 20 20 4B 6F 6C 6C 65 6B 74 6F 72 20 20 20 00 01 | Kollektor .. 0000:0240 | 20 20 53 70 65 69 63 68 65 72 20 B9 20 20 00 01 | Speicher đ .. 0000:0250 | 20 20 53 70 65 69 63 68 65 72 20 B3 20 20 00 01 | Speicher ģ .. 0000:0260 | 20 54 68 65 72 6D 6F 73 74 61 74 20 41 20 00 01 | Thermostat A .. 0000:0270 | 20 20 50 6F 6F 6C 73 63 68 75 74 7A 20 20 00 01 | Poolschutz .. 0000:0280 | 20 20 45 72 74 72 61 67 20 20 20 54 20 20 00 01 | Ertrag T .. 0000:0290 | 52 FC 63 6B 6C 2E 41 6E 68 2E 20 54 20 20 00 01 | Rückl.Anh. T .. 0000:02A0 | 52 FC 63 6B 6C 2E 41 6E 68 2E 20 54 20 20 00 01 | Rückl.Anh. T .. 0000:02B0 | 20 20 20 54 20 20 20 20 20 20 00 00 00 00 00 01 | T ...... 0000:02C0 | 44 75 6D 6D 79 00 00 00 00 00 00 00 00 00 00 00 | Dummy........... 0000:02D0 | 53 74 72 61 68 6C 75 6E 67 20 00 00 00 00 00 02 | Strahlung ...... 0000:02E0 | 44 75 6D 6D 79 00 00 00 00 00 00 00 00 00 00 00 | Dummy........... 0000:02F0 | 44 75 6D 6D 79 00 00 00 00 00 00 00 00 00 00 00 | Dummy........... 0000:0300 | 20 20 41 75 73 67 61 6E 67 20 31 20 20 20 00 0A | Ausgang 1 .. 0000:0310 | BF FF 3E FF E7 E7 DF FF 20 20 41 75 73 67 61 6E | ŋĸ>ĸįįßĸ Ausgan 0000:0320 | 67 20 32 20 20 20 00 0A 20 20 41 75 73 67 61 6E | g 2 .. Ausgan 0000:0330 | 67 20 33 20 20 20 00 0A 20 20 41 75 73 67 61 6E | g 3 .. Ausgan 0000:0340 | 67 20 34 20 20 20 00 0A 20 20 41 75 73 67 61 6E | g 4 .. Ausgan 0000:0350 | 67 20 35 20 20 20 00 0A 20 20 41 75 73 67 61 6E | g 5 .. Ausgan 0000:0360 | 67 20 36 20 20 20 00 0A 20 20 46 65 68 6C 65 72 | g 6 .. Fehler 0000:0370 | 20 20 00 00 00 00 00 0D 20 20 46 65 68 6C 65 72 | ...... Fehler 0000:0380 | 20 20 00 00 00 00 00 0D 20 20 46 65 68 6C 65 72 | ...... Fehler 0000:0390 | 20 20 00 00 00 00 00 0E 20 20 20 53 70 65 69 63 | ...... Speic 0000:03A0 | 68 65 72 20 20 20 00 07 44 75 6D 6D 79 00 00 00 | her ..Dummy... 0000:03B0 | 00 00 00 00 00 00 00 00 44 75 6D 6D 79 00 00 00 | ........Dummy... 0000:03C0 | 00 00 00 00 00 00 00 00 20 20 20 53 70 65 69 63 | ........ Speic 0000:03D0 | 68 65 72 20 20 20 00 0F 44 75 6D 6D 79 00 00 00 | her ..Dummy... 0000:03E0 | 00 00 00 00 00 00 00 00 44 75 6D 6D 79 00 00 00 | ........Dummy... 0000:03F0 | 00 00 00 00 00 00 00 00 46 75 6E 6B 74 69 6F 6E | ........Funktion 0000:0400 | 20 61 6B 74 69 76 00 0B 46 75 6E 6B 74 69 6F 6E | aktiv..Funktion 0000:0410 | 20 61 6B 74 69 76 00 0C BF FF 3E FF E7 E7 DF FF | aktiv..ŋĸ>ĸįįßĸ 0000:0420 | 20 56 6F 6C 75 6D 65 6E 73 74 72 6F 6D 20 00 13 | Volumenstrom .. 0000:0430 | 44 75 6D 6D 79 00 00 00 00 00 00 00 00 00 00 00 | Dummy........... 0000:0440 | 44 75 6D 6D 79 00 00 00 00 00 00 00 00 00 00 00 | Dummy........... 0000:0450 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0000:0460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0000:0470 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0000:0480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0000:0490 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0000:04A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0000:04B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0000:04C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0000:04D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0000:04E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0000:04F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0000:0500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0000:0510 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0C | ................ 0000:7F60 | BF FF 7E FF F7 E7 DF FF 4F 04 00 01 2E 00 E6 00 | ŋĸ~ĸũįßĸO.....æ. 0000:7F70 | 25 01 C4 09 C4 09 C4 09 0D 01 DE 00 A2 FE 00 00 | %.Ä.Ä.Ä...Þ.Ēþ.. 0000:7F80 | 00 00 00 00 00 00 00 00 00 00 00 64 00 15 15 08 | ...........d.... 0000:7F90 | 00 00 00 00 00 00 00 00 7D 01 00 00 00 00 01 00 | ........}....... 0000:7FA0 | 00 00 00 00 00 00 00 004F 04 01 01 2E 00 E6 00 | ........O.....æ. 0000:7FB0 | 25 01 C4 09 C4 09 C4 09 0D 01 DE 00 A2 FE 00 00 | %.Ä.Ä.Ä...Þ.Ēþ.. 0000:7FC0 | 00 00 00 00 00 00 00 00 00 00 00 64 00 15 15 08 | ...........d.... 0000:7FD0 | 00 00 00 00 00 00 00 00 7D 01 00 00 00 00 01 00 | ........}....... 0000:7FE0 | 00 00 00 00 00 00 00 00 4F 04 02 01 2E 00 E6 00 | ........O.....æ. 0000:7FF0 | 25 01 C4 09 C4 09 C4 09 0B 01 DF 00 A2 FE 00 00 | %.Ä.Ä.Ä...ß.Ēþ.. 0000:8000 | 00 00 00 00 00 00 00 00 00 00 00 64 00 15 15 08 | ...........d.... 0000:8010 | 00 00 00 00 00 00 00 00 7D 01 00 00 00 00 01 00 | ........}....... 0000:8020 | 00 00 00 00 00 00 00 00 4F 04 03 01 2E 00 E6 00 | ........O.....æ. 0000:8030 | 25 01 C4 09 C4 09 C4 09 0D 01 DE 00 A2 FE 00 00 | %.Ä.Ä.Ä...Þ.Ēþ.. 0000:8040 | 00 00 00 00 00 00 00 00 00 00 00 64 00 15 15 08 | ...........d.... 0000:8050 | 00 00 00 00 00 00 00 00 7D 01 00 00 00 00 01 00 | ........}....... 0000:8060 | 00 00 00 00 00 00 00 00 BF FF 7E FF F7 E7 DF FF | ........ŋĸ~ĸũįßĸ 0000:8070 | 4F 04 04 01 2E 00 E7 00 25 01 C4 09 C4 09 C4 09 | O.....į.%.Ä.Ä.Ä. 0000:8080 | 0D 01 DE 00 A2 FE 00 00 00 00 00 00 00 00 00 00 | ..Þ.Ēþ.......... 0000:8090 | 00 00 00 64 00 15 15 08 00 00 00 00 00 00 00 00 | ...d............ 0000:80A0 | 7D 01 00 00 00 00 01 00 00 00 00 00 00 00 00 00 | }............... 0000:80B0 | 4F 04 05 01 2E 00 E6 00 25 01 C4 09 C4 09 C4 09 | O.....æ.%.Ä.Ä.Ä. 0000:80C0 | 0C 01 DD 00 A2 FE 00 00 00 00 00 00 00 00 00 00 | ..Ý.Ēþ.......... 0000:80D0 | 00 00 00 64 00 15 15 08 00 00 00 00 00 00 00 00 | ...d............ 0000:80E0 | 7D 01 00 00 00 00 01 00 00 00 00 00 00 00 00 00 | }............... 0000:80F0 | 4F 04 06 01 2D 00 E6 00 24 01 C4 09 C4 09 C4 09 | O...-.æ.$.Ä.Ä.Ä. 0000:8100 | 0B 01 DD 00 A2 FE 00 00 00 00 00 00 00 00 00 00 | ..Ý.Ēþ.......... 0000:8110 | 00 00 00 64 00 15 15 08 00 00 00 00 00 00 00 00 | ...d............ 0000:8120 | 7D 01 00 00 00 00 01 00 00 00 00 00 00 00 00 00 | }............... 0000:8130 | 4F 04 07 01 2F 00 E6 00 26 01 C4 09 C4 09 C4 09 | O.../.æ.&.Ä.Ä.Ä. 0000:8140 | 0E 01 DE 00 A2 FE 00 00 00 00 00 00 00 00 00 00 | ..Þ.Ēþ.......... 0000:8150 | 00 00 00 64 00 15 15 08 00 00 00 00 00 00 00 00 | ...d............ 0000:8160 | 7D 01 00 00 00 00 01 00 00 00 00 00 00 00 00 00 | }...............

In der Darstellung des BIN-Files musste ich etwas tricksen. Man erkennt den Sprung an Adresse 0000:0510 - 0000:7F60. Das kommt daher, dass ich die hier die passenden Daten zu der nachfolgenden Exportdatei zeigen will. Da die Daten im EEPROM in einem Ringpuffer-Verfahren abgelegt sind und in der Exportdatei chronologisch gezeigt werden, erklärt sich dass der älteste Eintrag im Ringpuffer in der Regel nicht am Anfang des EEPROM-Speichers abgelegt ist.


Die Binärdatei hat folgende Struktur:

Offset (hex) Offset (dez) Datenbytes Bemerkung
0x00000 0 AA 55 LI XX XX XX File Signatur erinnert an die Magic Number. Das dritte Byte ist das Logintervall.
0x00006 6 FF ... FF 01
0x00010 16 20 57 61 67 ... Wagner& Co ... System-Nr. und System-Version sind als 2 Byte Integer codiert
0x00100 256 8 Byte (Identifier ?)
0x00210 528 Kopfdaten (Kopfzeile Messwerte incl. Typ und Reihenfolge). Pro Eintrag 16 Bytes.
0x00520 In Blöcken von jeweils 264 Byte Daten (Datum (8 Byte) + 4 * Werte (64 Byte))


Was im Vergleich mit der auf hobbyelektronik.org veröffentlichen Binärdatei auffällt ist, dass der Wert 0x40 (64) in der Datalogging Software kein zulässiges LogIntervall ist. Es werden nur die Werte 1,2,5,10,15,20 und 30 Minuten vorgeschlagen. Die nächsten Bytes sind bei mir 05 23 01, in der Vergleichsdatei 05 24 01. Die darauf folgende Reihe von FF schließen mit 01 oder 00 ab. Ein weiterer großer Unterschied ist an Offset-Position 0000:0100 zu sehen. In meiner Binärdatei steht ab dieser Stelle ein 8 Byte (Zufallswert). Dieser Wert fehlt in der Vergleichsdatei. Der Grund liegt in der (Page-)Organisation des EEPROMs. Dort sind 256 bzw. 264 Bytes pro Page einstellbar. Die Differenz sind genau die fraglichen 8 Bytes. Aber egal ob sie nun mitgelesen/geschrieben werden, sie lassen sich leicht im Programm ausfiltern.

00000000 AA 55 40 05 24 01 FF FF FF FF FF FF FF FF FF 00 ªU@.$.ÿÿÿÿÿÿÿÿÿ. 00000010 20 20 57 61 67 6E 65 72 20 26 20 43 6F 20 00 00 Wagner & Co .. 00000020 00 00 00 00 00 00 00 00 00 00 20 53 6F 6C 61 72 .......... Solar 00000030 20 53 6F 6C 61 72 74 65 63 68 6E 69 6B 20 XX XX Solartechnik XX 00000040 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 00000050 20 20 53 79 73 74 65 6D 2D 4E 72 2E 20 20 XX XX System-Nr. XX 00000060 20 53 79 73 74 65 6D 2D 56 65 72 2E 20 20 XX XX System-Ver. XX

Die darauf folgenden Kopfdaten haben immer 16 Bytes. Das zweitletzte Byte ist wohl immer 0x00 und stellt den Stringabschluss dar. Das letzte (16.) Byte ist der Typ des (Mess-)wertes.

  1. 00 Dummy
  2. 01 Temperatur
  3. 02 (Strahlung)
  4. 07 (Speicher)
  5. 08 Datum
  6. 09 Uhrzeit
  7. 0A Prozent
  8. 0B (Funktion aktiv)
  9. 0C (Funktion aktiv)
  10. 0D (Fehler)
  11. 0E (Fehler)
  12. 0F (Speicher)
  13. 13 (Volumenstrom)
Die Exportdatei der Datalogging-Software dient als Abgleich.
;Datalogging
; Wagner & Co  
;
; Solartechnik 
1317SP1201105100
;  System-Nr.  	1211
; System-Ver.  	102
Datum	Uhrzeit	Kollektor	Speicher  unten	Speicher  oben	Thermostat A	Poolschutz	Ertrag   T	Rückl.Anh. T	Rückl.Anh. T	T	Strahlung	Ausgang 1	Ausgang 2	Ausgang 3	Ausgang 4	Ausgang 5	Ausgang 6	Speicher	Speicher	Funktion aktiv	Funktion aktiv	Volumenstrom
8	9	1	1	1	1	1	1	1	1	1	2	10	10	10	10	10	10	7	15	11	12	19

03.11.21	04:16:00	4.600	23.000	29.300	250.000	250.000	250.000	26.900	22.200	-35.000	0.000	0.000	0.000	0.000	0.000	0.000	100.000	0	381	0.100	0.000	0.000
03.11.21	04:17:00	4.600	23.000	29.300	250.000	250.000	250.000	26.900	22.200	-35.000	0.000	0.000	0.000	0.000	0.000	0.000	100.000	0	381	0.100	0.000	0.000
03.11.21	04:18:00	4.600	23.000	29.300	250.000	250.000	250.000	26.700	22.300	-35.000	0.000	0.000	0.000	0.000	0.000	0.000	100.000	0	381	0.100	0.000	0.000
03.11.21	04:19:00	4.600	23.000	29.300	250.000	250.000	250.000	26.900	22.200	-35.000	0.000	0.000	0.000	0.000	0.000	0.000	100.000	0	381	0.100	0.000	0.000
03.11.21	04:20:00	4.600	23.100	29.300	250.000	250.000	250.000	26.900	22.200	-35.000	0.000	0.000	0.000	0.000	0.000	0.000	100.000	0	381	0.100	0.000	0.000
...

Initialisierung Datenstick

LogIntervall setzen

Delay ermitteln

Datenstick Rohdaten

Datenstick löschen

Request for Comments


Kommentar hinzufügen
TippvomTibb freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, registriere dich bitte oder melde dich an.

  1. 1,2,3