Forum: Mikrocontroller und Digitale Elektronik Crc berechnung ?


von Sven (Gast)


Lesenswert?

Hallo
Ich habe mit einen Akkutester gekauft EBC-A20
https://de.aliexpress.com/item/1005002193414522.html?
Ein wie ich finde tolles Gerät.

Zum Problem. Die Software welche die Daten aufzeichnet und eine Lade / 
Endladekurve darstellt ist ein Windows Programm und muss permanent 
laufen um die Messung ordentlich aufzuzeichnen. Ich habe eigentlich kein 
Windows und ich möchte keinen Pc Ewig laufen lassen. Ich teste damit 
LifePo4 Zellen mit bis zu 300A das dauert etwas.
Ich möchte das Problem mit einem Raspberry oder ggf sogar einer Avr 
Lösung lösen
 Die Schnittstelle ist seriell 9600
Der grundlegende Aufbau des Protokoll ist soweit einfach nur an der 
Checksumme fehlt es mit

Die Software sendet einmalig das sie Verbunden ist zum Gerät
[250,5,0,0,0,0,0,0,5,248]
Und einmalig das sie getrennt wird
[250,6,0,0,0,0,0,0,6,248]

Wenn der Pc verbunden ist lässt sich das Gerät nicht mehr per tasten 
bedien. auch nicht wenn die Verbindung getrennt wird oder der Pc aus 
ist.
Nur der Befehl zum trennen oder ein Reset hilft da.

Wenn das gerät verbunden ist sendet es selbstständig im ca Sekundentakt 
die Messwerte.
[250,12,1,200,15,100,0,101,0,0,2,20,1,130,0,10,9,93,248]
[250,12,1,231,15,100,0,35,0,0,2,20,1,130,0,10,9,52,248]
[250,12,1,211,15,100,0,71,0,0,2,20,1,130,0,10,9,100,248]
[-1-,--2-,---3--,---4-,--5--,-6-,--7-,--8--,--9-,xx,yyy]

1 Start
2 A ist
3 V ist
4 mAh ist
5 ?
6 A Soll
7 V Soll
8 ?
9 Temperatur ?
xx crc
yy ende

Es sei gesagt die jeweils 2 Byte zu einem Datenfeld werte werden 
merkwürdig berechnet
[250,12,1, 200,15,  100,0,101,0,0,2,20,1,130,0,10,9,93,248]
15*240! +200 = 3600 = 3,6V
Ich habe noch nie gesehen das die mit 240 berechnet werden.


Befehle zum Starten Vom Pc zum Gerät
start
c-cv 5a 3,7v 0,1v
[250,33,2,20,1,130,0,10,190,248]
c-cv 5a 3,8v 0,1v
[250,33,2,20,1,140,0,10,176,248]
c-cv 4a 3,8v 0,1v
[250,33,1,160,1,140,0,10,7,248]
c-cv 4,1a 3,8v 0,1v
[250,33,1,170,1,140,0,10,13,248]

Hat jemand eine Idee wie die auf die Checksumme kommen?

von Sven (Gast)


Lesenswert?

[250,33,1,170,1,141,0,10,12,248]
[250,33,1,170,1,142,0,10,15,248]
[250,33,1,170,1,143,0,10,14,248]
[250,33,1,170,1,144,0,10,17,248]
[250,33,1,170,1,145,0,10,16,248]

Das sieht irgendwie nach xor oder so aus?

von Wolfgang (Gast)


Lesenswert?

Sven schrieb:
> Hat jemand eine Idee wie die auf die Checksumme kommen?

Wozu brauchst du die?
Da das Gerät die Messdaten selbständig sendet, musst du sie doch nur in 
Empfang nehmen und kannst die Check ignorieren.

von Sven (Gast)


Lesenswert?

Ja das könnte ich aber ich würde gerne auch die Parameter zum Gerät 
senden und einstellen können
Auch da könnte ich die werte "vor speichern" aber das ist halt nur halb 
schön ;)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Sven schrieb:
> Das sieht irgendwie nach xor oder so aus?

Ja, wobei Start- und Ende-Byte nicht in die Prüfsumme eingehen.

von Nosnibor (Gast)


Lesenswert?

Sven schrieb:
> Es sei gesagt die jeweils 2 Byte zu einem Datenfeld werte werden
> merkwürdig berechnet
> [250,12,1, 200,15,  100,0,101,0,0,2,20,1,130,0,10,9,93,248]
> 15*240! +200 = 3600 = 3,6V
> Ich habe noch nie gesehen das die mit 240 berechnet werden.
Das verhindert, dass Werte ab 240 in den Daten vorkommen. Dadurch wird 
das Framing robuster: wenn der Empfänger eine 250 sieht, weiß er immer, 
dass das der Start (oder Prüfsumme) ist; das kann nach 
Übertragungsstörungen wichtig sein.

von Harald (Gast)


Lesenswert?

Hallo,

ist die USB Leitung nur eine serielle Leitung?

Bist DU mit dem Protokoll weiter gekommen?

Gruß
Harry

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.