www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik one byte checksum


Autor: Herbert A. (onlineuser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
8-Bit CRC?

Autor: Herbert A. (onlineuser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja aber es gibt auch Pakete, die mehr als 8 Byte Nutzdaten beinhalten. 
Dann kann man ja keine "one-byte-checksum" mehr berechnen!?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Herbert A. (onlineuser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Herbert A. (onlineuser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn dass die Prüfsumme nicht in Hardware ("Standard RS232 Bauteil") 
berechnet wird?

Autor: Herbert A. (onlineuser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber die meisten RS232-ICs werden wohl einen anerkannten Standard bei 
der Prüfsummenberechnung einsetzen!?

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Herbert A. (onlineuser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso meinst du - ja ok.

Gibts eigentlich kein Reverse Ingeneering Tool für solche Aufgaben? ;)

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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_che...

Gruß
Marcus
http://www.doulos.com/

Autor: noch_ein_gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Herbert A. (onlineuser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hinweise. Wer mal weiterprobieren! :)

Autor: LinkBot (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Herbert A. (onlineuser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na halt durch! dort reden die ja genau über dasselbe Gerät! :)

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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