Forum: Mikrocontroller und Digitale Elektronik Checksumme berechnen


von Fabian G. (fabian_g)


Angehängte Dateien:

Lesenswert?

Hallo Freunde

Zur Zeit arbeite ich an einem Projekt mit serieller Kommunikation. Ein 
Master kommuniziet mit einem Slave. Dabei schickt der Master dem Slave 
die Zeit und das Datum in einem Telegramm wie in der angehängten Datei 
dargestellt.
Ich nehme an, die letzten beiden Abschnitte sind die Checksumme bzw. 
Prüfsumme. Nun ist mein Problem, ich weiss nicht wie diese gebildet 
wird. Da kommt ihr ins Spiel, könnt ihr mir weiterhelfen?
Ich habe schon mit online Checksummerechner versucht diese zu berechnen, 
aber bin nicht auf das gleiche Resultat gekommen

Freundliche Grüsse
Fabian

von WIR (Gast)


Lesenswert?

Fabian G. schrieb:
> Da kommt ihr ins Spiel, könnt ihr mir weiterhelfen?

WIR sind besonders gut wenn DU möglichst viel Kontext zu deiner 
Frage schreibst (Hersteller, Produkt, Baujahr, etc)

Ein paar Zeilen als ASCII hex dump (nicht Pixel) währen auch nicht 
schlecht..

von Chris K. (Gast)


Lesenswert?

Tja, von der Länge her könnte es eine CRC16 sein, wenn deine Annahme mit 
den 2 Byte stimmt.
Das Problem, welche Bytes gehen alle in die Berechnung der Checksumme 
ein?
Wie lautet der Initialwert der CRC, sofern es eine ist?

CRC16 gibt es in vielen Varianten. Hier ist ein online Rechner, mit dem 
du rumprobieren kannst.

http://www.sunshine2k.de/coding/javascript/crc/crc_js.html

von dummschwaetzer (Gast)


Lesenswert?

eventuell was mit CRC
kansst du unter
http://zorc.breitbandkatze.de/crc.html
rumspielen

von Fabian G. (fabian_g)


Angehängte Dateien:

Lesenswert?

WIR schrieb:
> WIR sind besonders gut wenn DU möglichst viel Kontext zu deiner
> Frage schreibst (Hersteller, Produkt, Baujahr, etc)

Hersteller: Bosch Sicherheitssysteme
Produkt: AMC2 4R4 und Delta 1000
Baujahr: Nicht vorhanden

Ich nehme an, diese Daten sind nicht Relevant.

Ich füge aber noch 2 Ausschnitte ein, bei dem ich in Gelb das empfangen 
Telegramm markiert habe.
Ich denke der 2. und 3. letzte HEX-Wert bilden die Checksumme, jedoch 
habe ich noch nicht herausgefunden wie.

Freundliche Grüsse
Fabian Gärtner

von oszi40 (Gast)


Lesenswert?


von Fabian G. (fabian_g)


Lesenswert?

oszi40 schrieb:
> Es gibt verschiedene Methoden. Sinnvoll ist, 2 verschiedene zu benutzen,
> wenn Prüf-Fehler reduzieren möchte. z.B. CRC; LRC; MD5 usw.

Hallo oszi40

Danke für deine Hilfe. Jedoch geht es nicht darum, wie ich selber eine 
Prüfsumme bilde, sondern wie sich die Prüfsumme in dem oben erwähnten 
Text bildet.

von oszi40 (Gast)


Lesenswert?

Fabian G. schrieb:
> sondern wie sich die Prüfsumme in dem oben erwähnten Text bildet.

Sorry, das habe ich aus dem 1. Post nicht erkannt. Kannst aber gerne mal 
nachrechen ob eins der Verfahren Anwendung fand.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Fabian G. schrieb:
> Ich füge aber noch 2 Ausschnitte ein,

Wenn Du möchtest, daß wir hier mit Dir zusammen am verwendeten 
Algorithmus herumrätseln, poste so etwas nicht als Bild, sondern als 
Text. Das kann dann nämlich jeder in seinen eigenen erdachten oder 
vermeintlich erkannten Algorithmus stopfen.

Dein Bild aber müsste jeder für sich abtippen.

von Fabian G. (fabian_g)


Lesenswert?

Rufus Τ. F. schrieb:
> Wenn Du möchtest, daß wir hier mit Dir zusammen am verwendeten
> Algorithmus herumrätseln, poste so etwas nicht als Bild, sondern als
> Text. Das kann dann nämlich jeder in seinen eigenen erdachten oder
> vermeintlich erkannten Algorithmus stopfen.
>
> Dein Bild aber müsste jeder für sich abtippen.

Das ist eine gute Idee. :)

1. Telegramm:

HEX: 10 02 1B 75 30 37 3A 31 32 3A 30 31 3B 31 37 3A 31 31 3A 32 30 31 
37 3B 36 2A 10 03 0E 8D FF

2. Telegramm:

HEX: 10 02 1B 75 31 35 3A 35 37 3A 30 32 3B 31 34 3A 31 31 3A 32 30 31 
37 3B 33 2A 10 03 08 B3 FF

Ich glaube die FF wird nicht in die Checksumme einbezogen

von Rolf H. (b0d0)


Lesenswert?

Vielleicht wäre es ganz sinnvoll zwei (oder mehr) Nachrichten in sehr 
dichter Folge zu provozieren. So kann man eher sehen, welchen Einfluss 
kleine Änderungen auf die Prüfsumme haben.

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Lesenswert?

Fabian G. schrieb:
> Rufus Τ. F. schrieb:
>> Wenn Du möchtest, daß wir hier mit Dir zusammen am verwendeten
>> Algorithmus herumrätseln, poste so etwas nicht als Bild, sondern als
>> Text. Das kann dann nämlich jeder in seinen eigenen erdachten oder
>> vermeintlich erkannten Algorithmus stopfen.
>>
>> Dein Bild aber müsste jeder für sich abtippen.
>
> Das ist eine gute Idee. :)
>
> 1. Telegramm:
>
> HEX: 10 02 1B 75 30 37 3A 31 32 3A 30 31 3B 31 37 3A 31 31 3A 32 30 31
> 37 3B 36 2A 10 03 0E 8D FF
>
> 2. Telegramm:
>
> HEX: 10 02 1B 75 31 35 3A 35 37 3A 30 32 3B 31 34 3A 31 31 3A 32 30 31
> 37 3B 33 2A 10 03 08 B3 FF

Eine noch bessere Idee wäre es gewesen, auch die Telegramme aus dem
ersten Screenshot als Text zu posten, da es bei nur zwei Beispielen
i.Allg. mehrere passende Prüfsummenalgorithmen gibt, vor allem dann,
wenn man auch vom jeweiligen Entwickler selbst ausgedachte Algorithmen
in Betracht zieht.

Ich habe mir mal die Mühe gemacht, diese Telegramme sowie zwei weitere
aus deinen letzten Screenshots abzutippen. Hier sind alle sechs:

1
10 02 1B 75 30 37 3A 31 32 3A 30 31 3B 31 37 3A 31 31 3A 32 30 31 37 3B 36 2A 10 03 0E 8D
2
10 02 1B 75 31 35 3A 35 37 3A 30 32 3B 31 34 3A 31 31 3A 32 30 31 37 3B 33 2A 10 03 08 B3
3
10 02 1B 75 30 37 3A 34 36 3A 30 32 3B 31 34 3A 31 31 3A 32 30 31 37 3B 33 2A 10 03 66 DB
4
10 02 1B 75 30 37 3A 35 30 3A 34 33 3B 31 34 3A 31 31 3A 32 30 31 37 3B 33 2A 10 03 50 D3
5
10 02 1B 73 2A 10 03 A8 5E 
6
10 02 1B 74 31 3B 31 2A 10 03 DF FB

Des Rätsels Lösung:

Es handelt sich um einen CRC-16 mit dem Polynom 0x8005 und dem Startwert
0x4000 mit gespiegelten Bytes. Die DLE-Zeichen (Telegrammanfang und
-ende sind durch DLE STX bzw. DLE ETX gekennzeichnet) gehen dabei nicht
in die CRC-Berechnung mit ein.

Du kannst das mit einem Online-CRC-Tool wie bspw. diesem hier

  http://www.sunshine2k.de/coding/javascript/crc/crc_js.html

nachprüfen. Einen Screenshot (crc1.png) habe ich angehängt.

Der Startwert könnte prinzipiell statt 0x4000 auch 0xc003 sein, wenn am
Ende der CRC mit 0xC001 verXORt wird (crc2.png). Da beide Varianten für
alle sechs Telegramme passen, vermute ich, dass sie äquivalent sind.

Beitrag #5722260 wurde von einem Moderator gelöscht.
Beitrag #7397946 wurde von einem Moderator gelöscht.
Beitrag #7399620 wurde von einem Moderator gelöscht.
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
Noch kein Account? Hier anmelden.