mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Prüfsummenverfahren herausbekommen


Autor: Maart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann ich herausbekommen, mit welchem Verfahren eine Prüfsumme
erstellt wurde? Ich habe ein Funksignal (Temperatursensor) analysiert
(eher mitgeschnitten) und herausbekommen, daß insgesammt 5 Byte
übertragen werden. Das letzte Byte müßte meiner Meinung nach so etwas
wie eine Prüfsumme sein. An CRC-8 habe ich auch schon gedacht, gibt es
noch weitere "Norm"-Generatorpolynome außer '10011001' ?
Auch soll es soetwas wie "sum8" usw. geben. Wo finde ich aber den
Berechnungsalgorithmus? (ja, ich habe google schon mehrere Stunden
gequält).

Eine Übertragung war: 0xAE 0xDF 0x40 0x04 0x0C


Mit besten Grüßen, Maart

Autor: larsen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also meines Wissens nach gibt es nur ein CRC8 Generatorpolynom. Ist ja
auch Sinn und Zweck einer Standardisierung;-)

Was macht dich so sicher, dass es eine Art Prüfsumme ist? Nach welchem
Protokoll werden die Daten dort übertragen? Ich würde vielleicht dort
anfangen, wo die Daten ankommen und weiterverarbeitet werden. Was auch
immer dort steht, muss ja mit den Daten umgehen können. Vielleicht
kannst du so rauskriegen, was die Daten bedeuten.

VG larsen

Autor: Maart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo larsen!

Meine Nachforschungen haben ergeben: Das erste Byte steht für die Art
des Sensors: Temperatursensor = 0xA0, Hygrosensor = 0xAE
Das zweite Byte stellt wohl die "Seriennummer" des Sensors dar, sie
ändert sich nach jedem Batteriewechsel. Byte 3 und 4 stellen die
Temperatur/Luftfeuchte in BCD-codierter Form dar. Das letzte Byte hat
sich bei gleichgeblieben Werten der Temperatur nur verändert, wenn auch
die Sensor-ID (Byte2) verändert war. (Batterie wurde bei gleicher
Temperatur entfernt und sofort wieder eingesetzt).


Mit besten Grüßen, Maart

Autor: larsen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also komplett verstehe ich das nicht. Warum soll sich die Sensor-ID
verändern, wenn man die Batterie wechselt? Hat sich das letzte Byte
komplett verändert oder nur an einer Stelle? Könnte doch auch einfach
ein Zusammengesetztes Byte sein aus EOF und z.B. Parity-Bit. Die
Parity-Prüfung gibts nämlich auch mehrdimensional.

VG larsen (der name soll tatsächlich klein geschrieben werden. Du bist
ser Erste, der das auch macht;-))

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die "Sensor-ID" eine Adresse ist, die dynamisch vom Master
vergeben wird, wenn sich ein Gerät bei ihm anmeldet, macht das schon
Sinn, setzt aber halt eine Komunikation in beide Richtungen voraus.

Auch Üblich ist eine XOR-Verknüpfung aller Werte zur Prüfsumme, scheint
das hier aber nicht zu sein.

CRC fände ich für diese Anwendung etwas übertrieben... Außerdem ist es
immer schwierig, so etwas herauszufinden - selbst wenn das
Generatorpolynom bekannt ist: Schiebt man rechts oder links herum,
welchen Wert nimmt man für die Initialisierung, etc

Das von Dir angegebene Generatorpolynom ist spiegelsymetrisch - habe
ich bisher noch nie als Generatorpolynom gesehen. Für CRC8 kenne ich
10011 und 1101

Hast Du noch ein paar Datensätze, am besten welche, wo sich von einem
zum anderen nur ein bit ändert (abgesehen von der Prüfsumme). Das würde
das Ausprobieren vereinfachen.

Gruß,
Markus_8051

Autor: Maart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die "Sensor-ID" (wie immmer man es auch nennen will) wird vom Sensor
selbst nach jedem Batteriewechsel neu vergeben, deshalb muß die
Empfangsstation auch "neu gestartet" werden. In dieser Phase werden
die möglicherweise vorhandenen Sensoren registriert.
Hier habe ich noch zwei Datensätze:

0xAE 0xEG 0x39 0x03 0x94  (bedeutet 39% Feutigkeit)

Batterie entfernt und neu eingesetzt (=Sensor-Reset):

0xAE 0xEC 0x39 0x03 0x9A (bedeutet auch 39% Feuchtigkeit, die Station
geht aber davon aus, daß es sich hier um einen zweiten Sensor
handelt).

Ich werde heute Abend noch weitere Datensätze auslesen.

Vielen Dank für die bisherige Mühe.


Mit besten Grüßen, Maart

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0xAE 0xEG 0x39 0x03 0x94

Das zweite Byte ist 0xE__G__   ??

Gruß Hagen

Autor: Maart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hagen!

Ja,ja wenn man die eigene Klaue nicht lesen kann! Es muß natürlich
0xE"6" heißen! Habe die Binärfolgen in Hex umgewandelt und beim
Tippen nicht weiter darüber nachgedacht.

Also noch mal richtig:

0xAE 0xEG 0x39 0x03 0x94   (39%)

Sensor-Reset:

0xAE 0xEC 0x39 0x03 0x9A   (39%)



Mit besten Grüßen, Maart

Autor: Maart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Herrschaftszeiten! Was ist denn mit mir los? (copy & paste ist nicht
immer gut!)



0xAE 0xE6 0x39 0x03 0x94   (39%)

Sensor-Reset:

0xAE 0xEC 0x39 0x03 0x9A   (39%)



Mit besten Grüßen, Maart

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du Versuche machst, dann mach auch welche,
wo sich zb. die Temperatur ein wenig aendert.
Ideal waere wenn sich jedes der anderen 3 Bytes
mal ein wenig aendern wuerde.

In obigen ist zb. schon auffaellig, dass wenn sich
die Id um 6 aendert, sich auch die Pruefsumme um 6
aendert. Das reicht aber (zumindest mir) noch nicht
um da auf irgendwas zu kommen.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine möglichkeit wäre:

letztes byte ist prüfsumme, und errechnet sich wie folgt:
byteweise!! summe der ersten 4 bytes + 0xC4

es fehlen allerdings noch mehr datenreihen, um diese behauptung zu
verifizieren.

Autor: larsen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Byteweise Summe?

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Teste mal die Bytefolge, die Maart in seinem ersten Beitrag hier
angegeben hat. Ich glaube da klappt es nicht!

Markus_8051

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.