Hallo, habe folgendes Problem. Möchte eine serielle Verbindung zur Wärmepumpe nachbauen. Nun hab ich das Problem, eine Checksumme für die diversen Befehle zu berechen. Hier mal ein Beispiel: Ein Paket wäre: ~RID;p 02 fd d0 e0 00 00 05 7e 52 49 44 3b 70 (das wäre das gesamte Paket) Die Nutzdaten sind: 7e 52 49 44 3b 70 Bei diesem Datenpaket ist die Checksumme 70 (alle Werte in hex). Nun die Frage, wie man diese berechnet? (Zeichensumme MOD 256 hab ich probiert und alle Zeichen miteinander mit XOR). Kommt aber etwas anderes raus. Hoffe, mir kann hier jemand helfen. Liebe Grüsse.
Naja aber es gibt auch Pakete, die mehr als 8 Byte Nutzdaten beinhalten. Dann kann man ja keine "one-byte-checksum" mehr berechnen!?
Wenn man fehlerkorrigierende Codes mal aussen vor lässt, dann gibt es keinen Zusammenhang zwischen Länge des Pakets und Länge der Prüfsumme, egal wie die ermittelt wird. Nur die Wahrscheinlichkeit eines unerkannten Übertragungsfehlers wächst.
Ja, ob es in dem Falle sinnvoll ist oder nicht, ist egal, weil ich versuche diese Verbindung nur nachzubauen, jedoch, wenn ich neue Befehle an die Wärmepumpe schicken möchte, muss ich halt genauso nach diesem Schema meine Checksummen generieren können.
das Problem dürfte wohl sein, dass hier jeder Entwickler seine eigene Methode verwirklichen kann. Hab auch schon CRC's gesehen bei dennen das Byte mit 0xAA vorgeladen wurde, anschließen wurden die Nutzdaten Byte für Byte verundet und darauf wurde nochmals 0x55 dazugezählt! Wenn Du nicht weißt wie das CRC erstellt wird dürfte es sehr schwierig sein. Hast Du denn die Möglichkeit die Nutzdaten zu beeinflußen? evt. kommst Du drauf wenn Du die Nutzdaten immer um "1" erhöhst!
Ja, ich hab folgendes Paket gesnifft. ~RID,44556; Checksum O Dann hab ich mal ~RID,55446; mit Checksum O abgesetzt und es hat auch funktioniert. Dann hab ich mir die Summe von 55446 berechnet (53+53+52+52+54=264) und dann durch 33864 (51*2+56+54+52=264) ersetzt und siehe da, dann wurde das Paket nicht mehr angenommen -> also war die Prüfsumme falsch, obwohl die Summe der Nutzdaten noch gepasst hat. Aber eine Durchmischung hat die Prüfsumme nicht geändert. Ich weiss wohl, dass es schwer ist, das zurückzurechnen, jedoch die Wärmepumpe setzt sicher einen Standard RS232 Bauteil ein und daher glaube ich, sollte es machbar sein. Werde mal versuchen rauszufinden, welcher IC das ist. Aber hat vielleicht sonst noch jemand eine Idee?
Wenn dass die Prüfsumme nicht in Hardware ("Standard RS232 Bauteil") berechnet wird?
Aber die meisten RS232-ICs werden wohl einen anerkannten Standard bei der Prüfsummenberechnung einsetzen!?
Aber nein. Denn die Prüfsummenberechnung wird praktisch immer in Software gemacht. Und die Firmware der Wärmepumpe hat ein Entwickler der entsprechenden Herstellerfirma geschrieben, nach Vorgaben seines Arbeitgebers und einem gewissen Anteil eigenem Ermessen. Man kann eine Prüfsumme auf die unterschiedlichsten Arten bilden, Aufsummieren aller Bytes ohne Übertrag, Exklusiv-Oder-Verknüpfung aller gesendeten Bytes, CRC8...
Achso meinst du - ja ok. Gibts eigentlich kein Reverse Ingeneering Tool für solche Aufgaben? ;)
Herbert A....... wrote: > Aber die meisten RS232-ICs werden wohl einen anerkannten Standard bei > der Prüfsummenberechnung einsetzen!? Asychrone RS232 Hardware mit integrierter Prüfsumme ist mir noch nicht untergekommen. Üblich ist das nur bei synchroner Kommunikation, und dann als 16 Bit CRC.
Herbert A....... wrote: > Aber die meisten RS232-ICs werden wohl einen anerkannten Standard bei > der Prüfsummenberechnung einsetzen!? Versuch's doch mal mit den üblichen Polynomen: http://en.wikipedia.org/wiki/Cyclic_redundancy_check#Commonly_used_and_standardized_CRCs Gruß Marcus http://www.doulos.com/
Am leichtesten ;-) nimmst du mehrere Sequenzen auf und erstellst ein Gleichungssystem. Ist zwar auch nur trial and error aber du hast vielleicht Glück und triffst das Richtige! Halte ich persönlich aber für sehr Aussichtslos... Am Besten mal lieb beim Hersteller anfragen, vielleicht hast du ja Erfolg (mit Verweis auf Garantieverlust usw.) LG
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.