mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CRC-CCITT überprüfen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Michael S. (mschueller)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Morgen zusammen,

ich habe hier gerade einen Thread gelesen, in dem es um die Berechnung 
bzw. Nachvollziehung einer CRC16-CCITT-Prüfsumme geht.
Ein solches Problem habe ich auch; ich möchte, bevor ich anfange, eine 
Auswertung zu programmieren, zu allererst mal die Vorraussetzungen 
prüfen:

Ich habe einen elektronischen Drehstromzähler Marke ISKRA eHZ-EDL Typ 
MT681 (Das ist ein normaler neuzeitlicher Einrichtungszähler).
Aus diesem möchte ich die aktuellen Daten auslesen und habe zu dem Zweck 
die optische Schnittstelle mit einem Auslesekopf (Optical Probe OP-300) 
per RS-232 abgefragt.
So weit klappt das prima; ich kann mit dem Terminalprogramm m.E. 
sinnvolle SML-Datenpakete empfangen.

Laut SML-Spezifikation 
(https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-1_Anlage_Feinspezifikation_Drahtgebundene_LMN-Schnittstelle_Teilb.pdf?__blob=publicationFile&v=2) 
beginnt ein Telegramm mit vier mal '1B' (Start Telegramm) , dann kommt 
vier mal '01' (Start SML-V.1-Nachricht) gefolgt von den 
Nutzdatenpaketen. Am Ende des Telegramms erscheint wieder vier mal '1B', 
dann '1A', ein Füllbyte und als letzte zwei Bytes eine Prüfsumme gemäß 
16 Bit CRC-CCITT. Hier liegt nun mein Problem: ich komme beim Überprüfen 
nicht auf diese Prüfsumme.

Wenn ich das komplette Datenpaket ohne die letzten zwei Bytes in einen 
der Online-CRC-Rechner kopiere 
(http://www.sunshine2k.de/coding/javascript/crc/crc_js.html) müsste doch 
die dort angezeigte Prüfsumme mit der im Telegramm mitgeschickten 
übereinstimmen ?
Bzw. wenn ich die komplette SML-Nachricht inklusive der letzten beiden 
Bytes berechnen lassen, müsste 'Null' herauskommen.

Soweit die Theorie; ich habe als Generatorpolynom CRC-CCITT  (x^16 + 
x^12 + x^5 + 1) sowohl in Form von 16#1021 als auch 
bitreihenfolgengedreht in Form von 16#8408 ausprobiert, einen 
CRC-Startwert von 16#FFFF (laut Spezifikation) oder 16#0000 und so fort.
Wo ist da mein Denkfehler ?

Anbei mal zwei der mitgeschriebenen Telegramme, eins normgerecht geloggt 
mit 8N1, das andere versuchsweise mit 7E1 (las ich an einer anderen 
Stelle als Kommunikationseinstellung). Kein Online-Prüfprogramm gibt die 
erwarteten Daten aus. Irgendeine Idee ??

Autor: Michael S. (mschueller)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier nochmal zur Veranschaulichung ein Bild:

Rechts unten das empfangene Telegramm und links und oben in je einen 
Online-Rechner eingefügt. Nirgendwo erscheit '09 A8'...

Autor: Michael S. (mschueller)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Gelöst !!

 Prima, alleine durch ins Forum schreiben hat sich das Problem nach drei 
Tagen gelöst: Man muss alles anknipsen, was geht: Eingang und Ausgang 
'reflekten' und am Ende nochmal verXODERn.


Mann...

Danke jedenfalls,
  Michael

Autor: crc16 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die 7E1 Datei ist ungültig. Die 8E1 Datei kann ich komplett 
interpretieren.

Auf die Schnelle sehe ich da:
1.0.1.8.0. 125776312 * 10^-1 Wh
1.0.1.8.1. 125776312 * 10^-1 Wh
1.0.1.8.2. 0* 10^-1 Wh
1.0.10.7.0 54W
1.0.24.7.0 27W

Autor: Michael S. (mschueller)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die 7E1-Datei ist ungültig.

Das entspricht auch der Theorie. War nur ein Versuch :-)


> Die 8N1-Datei kann ich komplett interpretieren.

Das ist jetzt mein nächster Schritt; ich wollte zuerst die Prüfsumme 
auswerten.


Danke fürs Mitdenken,
  Michael

Autor: Cheffe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael S. schrieb:
> Mann...

man?



Cheffe

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.