Dachs MSR1 Service Protokoll
Bei der Auslieferung der Dachs MSR1 haben wir eine Service Software bekommen, die erweiterte Daten aus dem BHKW auslesen kann. Vornehmlich ging es uns darum zu erfahren in wie vielen Stunden genau die nächste Wartung ansteht. Die Schnittstelle ist eine 9600 Baud 8N1 Schnitstelle mit RTS/CTS Handshake. Temperaturen werden dabei wohl als signed char versendet. D.h. ist der Wert > 127, so muss 256 abgezogen werden. Wie bei der decodierung vorgegangen wurde gibts hier.
Vorsicht beim experimentieren! Durch komisch aussehende Daten kann die Dachs wohl ausversehen umkonfiguriert werden. Also lieber Konfiguration mit dem Service Tool vorher sichern. |
Inhaltsverzeichnis
Interne Meßwerterfassung: 0x48
Sendet man das Byte 0x48, so erhält man 76 Byte als Antwort. Ob das letzte Byte eine Checksumme ist noch herauszufinden. FIXME. Jedoch Interessiert sich die Service Software nicht dafür.
Byte | Funktion | Beispiel |
---|---|---|
0 | Identifikation der Nachricht | 01 |
1-2 | Betriebsstunden | 0xa2fe = 41726 |
3-4 | Anzahl der Starts | |
5 | Maximale Abgastemperatur | 15 hinzuaddieren |
6 | Maximale Kühlwassertemperatur Motor | |
7 | Maximale Kühlwassertemperatur Generator | |
8 | Maximale Vorlauftemperatur | |
9 | Maximale Temperatur Fühler 1 | |
10 | Maximale Temperatur Fühler 2 | |
11 | Mittlere Generator Leistung | 7.5 KW / 0xff * Wert |
12 | Anzahl der Störungen | |
13-18 | Registrierter Fehler 1 | Für Format siehe unten |
19-24 | Registrierter Fehler 2 | Für Format siehe unten |
25-30 | Registrierter Fehler 3 | Für Format siehe unten |
31-36 | Registrierter Fehler 4 | Für Format siehe unten |
37-42 | Registrierter Fehler 5 | Für Format siehe unten |
43-48 | Registrierter Fehler 6 | Für Format siehe unten |
49-54 | Registrierter Fehler 7 | Für Format siehe unten |
55 | Maximaler Flüssigkeitsschalter | vielleicht nicht bei allen Versionen? |
56,57,58 | unbekannt | |
59-60 | letzte Wartung | verschiedene Interpretationen, bei manchen Versionen des Service Programms werden noch 500 Stunden bis zur nächsten Wartung aufgeschlagen. |
61- | unbekannt |
Das Format der Fehlercodes/Fehler ist folgendes:
Byte | Funktion | Beispiel |
---|---|---|
1 | Servicecode und Autoentstörung | höchstes Bit ist Autoentstörung ja/nein, der Rest ist der Servicecode |
2 | Minute | Hexdarstellung ist die Minute |
3 | Stunde | Hexdarstellung ist Wert |
4 | Tag | Hexdarstellung ist Wert |
5 | Monat | Hexdarstellung ist Wert |
6 | Jahr | 1900 + Wert, 0x61 = 1997 |
Meßwerte und Betriebszustand: 0x50
Byte | Funktion | Beispiel |
---|---|---|
0 | Identifikation der Antwort | 02 |
1 | Vorlauftemperatur | |
2 | Rücklauftemperatur | |
3 | Kühlwassertemperatur Motor | |
4 | Abgastemperatur | 15 muss hinzuaddiert werden |
5 | Außentemperatur | |
6 | Temperatur Fühler 1 | |
7 | Temperatur Fühler 2 | |
8 | Kühlwassertemperatur Generator | |
9 | unbekannt | |
10-11 | Drehzahl | |
12 | unbekannt | |
13 | Bivalenz Umschalttemperatur | |
14-15 | Bivalenz Umschaltzeit | Wert in Minuten |
16 | Service Code | |
17,18,19,20 | unbekannt | |
21 | Umwälzpumpe Status 1 |
Bit 8: UP-Kühlung: Ein/Aus |
22 | Umwälzpumpe Status 2 |
Bit 8: UP-Vordruck: Ein/Aus |
23,24,25,26,27,28,29,30 | unbekannt | |
31-32 | U1 in Volt | 105.6V + (100 /0x1cd) * Wert |
33-34 | U2 in Volt | 314.4V - (100 /0x1cd) * Wert |
35-36 | U3 in Volt | 105.6V + (100 /0x1cd) * Wert |
37-38 | I1 in Ampere | Wert * (10.0A /0x1cd) - (10.0*0xcd)/0x1cd |
39-40 | I2 in Ampere | Wert * (10.0A /0x1cd) - (10.0*0xcd)/0x1cd (wie I1) |
41-42 | I3 in Ampere | 10.0A/0x1cd * (0x02f5 - Wert) |
43 | cosphi | unbekannte Umrechnung Wert -> cosphi |
44 | unbekannt | |
45 | ü_platine |
0xfd = OK |
46 - | unbekannt |
Status bei der letzten Störung: 0x58
Byte | Funktion | Beispiel |
---|---|---|
0 | Identifikation der Antwort | 03 |
1 | Vorlauftemperatur | |
2 | Rücklauftemperatur | |
3 | Kühlwassertemperatur Motor | |
4 | Abgastemperatur | 15 muss hinzuaddiert werden |
5 | Außentemperatur | |
6 | Temperatur Fühler 1 | |
7 | Temperatur Fühler 2 | |
8 | Kühlwassertemperatur Generator | |
9-17 | unbekannt | |
18 | Bivalenz Umschaltzeit | |
19 | Steigung der Heizkurve | Wert/10.0 |
20 | Untere Heizkurvenbegrenzung | |
21 | Obere Heizkurvenbegrenzung | |
22 | unbekannt | |
23 | Einschalttemperatur Rücklauf | |
24 | Ausschalttemperatur Rücklauf | |
25 | Soll Vorlauf | |
26- | unbekannt |
Konfiguration und Seriennummer: 0x60
Kurzer Zustandsbericht: 0xe8
Das Kommando 0xe8 fällt etwas aus dem Rahmen, da es nur 22 Byte (mit Checksumme besteht). Die Checksumme wird dadurch errechnet, dass alle 21 Datenbytes der Reihenfolge nach XORed wird. Ein Bespiel in C.
uint8_t i, chksum = 0;
for (i = 0; i < 22; i++)
chksum ^= data[i];
Byte | Funktion | Beispiel |
---|---|---|
1 | Identifiaktionsbyte | 5 |
2-3 | Betriebstunden | |
4 | Wartung | Stunden bis zur nächsten Wartung. Bei 255: >254 Stunden. |
5 | Rücklauftemperatur | |
6 | Vorlauftemperatur | |
7 | Abgastemperatur | Wert + 15 Grad |
8 | Einschalttemperatursoll | |
9 | Betriebszustand | siehe e8 Skript |
10 | Elektrische Leistung der Anlage | Wert / 34.0; Ergebnis in KW |
11-16 | Aktive Servicecodes der Module | Modul 0-5 |
17 | Betriebszustand Sollwert | Global oder modulbezogen |
18 | Verfügbarkeit BHKW | Gobal oder modulbezogen |
19-21 | unbekannt | |
22 | Prüfsumme | siehe oben |
Ist ein Wert Global oder Modulbezogen ist bedeutet dies, dass es global ist, wenn das höchste Bit 0 ist. Ist das höchste Bit 1, so beziehen sich die Werte der anderen Bits auf das Jeweilige Modul. So wäre ein 0x81 ein wahrer Wert für Modul 0.