Hallo zusammen,
ich versuche hier schon seit längerem meine Waterkotte (Wärmepumpe) per ComPort abzufrage. Ich habe da aber ehrlich gesagt richtige Schwierigkeiten.
- Wie Werte ich die Daten aus die ich bekomme.
- Wie bilde ich die CRC16 Checksumme
- Welche Werte schicke ich zum Comport Zeichen Hex …
- Muss ich die Emfangenen Daten abschneiden.
- CRC für die Empfangenen Daten Prüfen JA/Nein
Ich habe auch ein Protokoll dafür. Die Verbindung steht auf jeden Fall. Da kommen auch ein Paar Zeichen zurück.
Ich hoffe hier kann mir einer Helfen. Ich fange quasi bei Null an.
Danke Gruß
Oliver
Protokoll:
Hallo Oliver,
>
> die Steuerung der WP verwendet ein an DIN angelehntes Protokoll, wie
> es in ähnlicher Form beispielsweise auch bei einigen elektronischen
> Kassen benutzt wird.
>
> Zur Kommunikation mit einem PC benötigst Du ein NULL-Modem-Kabel. Als
> Kommunikationsparameter funktioniert bei mir 9600 Bd; 8 bit, 1 Stop
> Bit, Parity Nein
>
> Protokoll
> - PC->WPP ::= DLE STX <KOMMANDO> DLE ETX <CRC>
> - WPP->PC ::= ‚FF‘ DLE STX <DATEN> DLE ETX <CRC> ‚FF‘
>
> KOMMANDO ::= <CMD> <ADR> <ANZ>
>
> CMD ::= ‚01 15‘ - SPEICHER LESEN
> ADR ::= XXXX -
> ANZ ::= XXXX -
> DATEN ::= <GELESEN>
> GELESEN ::= ‚00 17‘ XX…XX - ANZ Antwortbytes
>
> CRC ::= CRC == Standard CRC-16
> über <DATEN>|<KOMMANDO> mit Polynom=8005 init=0 lsb=0;
> keine sonstige Verknüpfung, wie XOR
>
> In <DATEN>|<KOMMANDO> eventuell vorkommende DLE Zeichen werden zur
> Wahrung der Codetransparenz verdoppelt.
>
> Beispiel um die Version zu lesen
> Senden von
> 10 02 01 15 00 00 00 02 10 03 FE 17
> um ab Adresse 0000 zwei Datenbytes zu lesen (Version)
>
> Die WP antwortet mit
> FF 10 02 00 17 1F BE 10 03 C0 AB FF
>
> Die zwei Byte 1F26 geben in das Dezimalsystem die Version an (8126).
>
> Nachfolgend habe ich Dir die bislang von mir eruierten
> Adressenbelegung aufgelistet.
>
> Die 4 Byte Temperaturen bzw. Drücke sind als IEEE FLOAT Werte
> repräsentiert, die kannst Du etwa in VC++ problemlos darstellen.
> Ich hoffe, hier bei der Analyse keine Fehler gemacht zu haben, Basis
> ist meine WP vom angegebenen Typ. Bei anderen Typen sind die Adressen
> möglicherweise anders.
>
> Beschreibung Adresse Anzahl
> ================================================
> „Version“, { 0x0000, 0x0002 }
> „LastModDate“, { 0x0002, 0x0003 }
> „CopyEinAusStufen“, { 0x0005, 0x0003 }
> „TempAußen“, { 0x0008, 0x0004 }
> „TempAußen24h“, { 0x000C, 0x0004 }
> „TempAußen1h“, { 0x0010, 0x0004 }
> „TempRücklaufSoll“, { 0x0014, 0x0004 }
> „TempRücklauf“, { 0x0018, 0x0004 }
> „TempVorlauf“, { 0x001C, 0x0004 }
> „TempWWSoll“, { 0x0020, 0x0004 }
> „TempWW“, { 0x0024, 0x0004 }
> „TempRaum“, { 0x0028, 0x0004 }
> „TempRaumMittel“, { 0x002C, 0x0004 }
> „TempWQEin“, { 0x0030, 0x0004 }
> „TempWQAus“, { 0x0034, 0x0004 }
> „TempVerdampfer“, { 0x0038, 0x0004 }
> „TempKondensator“, { 0x003C, 0x0004 }
> „TempSaugleitung“, { 0x0040, 0x0004 }
> „TempFrei“, { 0x0044, 0x0004 }
> „WPDruckVerdampfer“, { 0x0048, 0x0004 }
> „WPDruckKondensator“, { 0x004C, 0x0004 }
> „TempHeizRL_Soll“, { 0x0050, 0x0004 }
> „TempHeizRL“, { 0x0054, 0x0004 }
> „TempKühlRL_Soll“, { 0x0058, 0x0004 }
> „TempKühlRL“, { 0x005C, 0x0004 }
> „TempWW“, { 0x0060, 0x0004 }
> „ST52Zeit“, { 0x0064, 0x0003 }
> „ST52Datum“, { 0x0067, 0x0003 }
> „BetriebsstundenKompressor“, { 0x006A, 0x0004 }
> „BetriebsstundenHeizPumpe“, { 0x006E, 0x0004 }
> „BetriebsstundenWWPumpe“, { 0x0072, 0x0004 }
> „BetriebsstundenSt2“, { 0x0076, 0x0004 }
> „BetriebsstdMessZeitKompr“, { 0x007A, 0x0003 }
> „BetriebsstdMessDatumKompr“, { 0x007D, 0x0003 }
> „BetriebsstdMessZeitWW“, { 0x0080, 0x0003 }
> „BetriebsstdMessDatumWW“, { 0x0083, 0x0003 }
> „BetriebsstdResetKomp“, { 0x0086, 0x0001 }
> „BetriebsstdResetWWp“, { 0x0087, 0x0001 }
> „Kennwort“, { 0x0088, 0x0001 }
> „Werkseinstellungen“, { 0x0089, 0x0001 }
> „ResetWPumpe“, { 0x008A, 0x0001 }
> „ST52CRC“, { 0x008B, 0x0002 }
> „ST52Start“, { 0x008D, 0x0001 }
> „DisplayZeile1“, { 0x008E, 0x0002 }
> „DisplayZeile2“, { 0x0090, 0x0001 }
> „AusfallZeit“, { 0x0091, 0x0003 }
> „AusfallDatum“, { 0x0094, 0x0003 }
> „AusfallBetrZustände“, { 0x0097, 0x0001 }
> „AusfallDoBuffer“, { 0x0098, 0x0001 }
> „AusfallDiBuffer“, { 0x0099, 0x0001 }
> „AusfallAiError“, { 0x009A, 0x0001 }
> „AusfallAiDi“, { 0x009B, 0x0001 }
> „AusfallAiTempAußen“, { 0x009C, 0x0004 }
> „AusfallTempWQein“, { 0x00A0, 0x0004 }
>
> Ich hoffe, das hilft Dir schon mal weiter.
> Falls Du mal rauskriegen solltest, wie man Werte ändert, also die WP
> fernsteuern kann, wäre ich für einen Hinweis dankbar.
>
>
>
> Gruß
>
> Harald
>