Forum: Mikrocontroller und Digitale Elektronik CRC Prüfsumme für BMS


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Tim B. (tim_b84)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich habe hier ein BMS mit RS484-Ausgang und möchte Daten abrufen. Der 
Hersteller hat eine Dokumentation mit Protokoll zur Verfügung gestellt 
und mit den dort hinterlegten Beispielen funktioniert das Abrufen der 
Daten einwandfrei. Nun möchte ich aber auch andere Befehle nutzen und 
scheitere an der Berechnung der Prüfsumme.
Wenn ich die Dokumentation richtig interpretiere, ist das Verfahren zur 
Berechnung der Prüfsumme CRC 16. Ich habe also verschiedene Rechner im 
Netz bemüht, komme aber immer zu einem anderen Ergebnis als in den 
Beispielen.
Hier ist z.B. 06 04 00 17 00 01 80 79 als Befehel genannt. Die letzten 
beiden Bytes sind die Prüfsumme - also 80 79.
Wenn ich z.B. in den Rechner 
http://www.sunshine2k.de/coding/javascript/crc/crc_js.html als String 
060400170001, Polynomial A001, Initial Value FFFF, Final Xor Value 0000 
verwende, dann ergibt die Prüfsumme 7A25 und eben nicht 8079.
Hat jemand eine Idee, was ich falsch mache?

von Adam P. (adamap)


Angehängte Dateien:

Lesenswert?

Steht doch in deiner PDF:

Seite 4, Abschnitt 1.3
1
Adopted CRC parameter model CRC-16/MODBUS
2
Polynomial formula x16+x15+x2+1
3
Width 16
4
Polynomial 0x8005
5
Initial value 0xFFFF
6
Result XOR value 0x0000
7
Input value inversion true
8
Output value inversion true

Getestet und wie im Bild zu sehen, tut.

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Probiere mal:
- https://www.lddgo.net/en/encrypt/crc
- 060400170001
- Content Type: Hex
- Algorithm: CRC-16-MODBUS
- Polynomial Formula(HEX): 8005
- Initial Value(HEX): FFFF

-=>Check Result(HEX): 7980

Das mit dem "Polynomial 0x8005" steht auch so in deinem Datenball auf 
Seite 4 unten

von Tim B. (tim_b84)


Lesenswert?

Hey cool, so klappt es. Ich hatte, wegen der Beschreibung darüber immer 
A001 als Polynomial verwendet.
Nun ist mir aber auch der Zusammenhang klar:
A001 ist 1010000000000001
und
1000000000000101 ist 8005.

Danke Dir vielmals.

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.