Forum: Mikrocontroller und Digitale Elektronik Decodierung little endian


von labelohase (Gast)


Lesenswert?

Hallo
ich lese einen Wechselrichter über 485Bus aus u. bekommer z.B diese 
Werte

die Werte sind von Byte 7 bis 12, die anderen sind Füllbytes

Antwort vom Wechselrichter:
05 E2 DE A0 03 03 B8 0B 01 02 DA 00
Telegramm nach Dekodierung
05 E2 DE A0 03 00 B8 0B 00 00 DA 00

warum werden aus den beiden 01 u.02 Bytes nach Codierung 0000 ??????
Ertragswert 7. bis 10. Byte:
B8 0B 00 00
Wert = BB8h, Wertebereich und so soll es stimmen
 Der Wechselrichter hat also aktuell einen Gesamtertrag von 3000 Wh.

von Hmm (Gast)


Lesenswert?

Ich möchte anregen, das Du die Frage nochmal in Hinblick auf 
grammatische Korrektheit formulierst. Ich verstehe den letzten Teil 
nicht und bin zu faul rückzufragen ob das, was ich mir zusammenreime nun 
stimmt oder nicht.

Erkläre bitte wie Du auf "little Endian" kommst und woher Du weiss, was 
an welchem Offset steht.

Eine Hilfe wäre möglicherweise zu wissen, welchen Wechselrichter Du 
ausliest.

von Pit (Gast)


Lesenswert?

Little Endian ist nur eine Reihenfolge, wie die Bits/Bytes übertragen 
werden.
Das da aus 1, 2 plötzlich 0, 0 wird hat andere Ursachen.

von Karl H. (kbuchegg)


Lesenswert?

labelohase schrieb:


> Antwort vom Wechselrichter:
> 05 E2 DE A0 03 03 B8 0B 01 02 DA 00
> Telegramm nach Dekodierung

 Nach welcher Dekodierung?

> 05 E2 DE A0 03 00 B8 0B 00 00 DA 00
>
> warum werden aus den beiden 01 u.02 Bytes nach Codierung 0000 ??????

Was jetzt?
Codierung oder Decodierung?

Und wer oder was codiert/decodiert?

von Erich (Gast)


Lesenswert?

Es wäre deutlich schlauer (gewesen) den Typ des Wechselrichters und 
Hersteller zu benennen, möglichst direkt im Betreff.
Sowie wie
    gesucht Telegramm Wechselrichter <Hersteller> <Typ>
meine ich.
Gruss

von labelohase (Gast)


Lesenswert?

lt. Datenblatt für PV-Wechselrichter der PIKO-Serie
Beispielkommunikation
In diesem Beispiel wird vom Wechselrichter mit der RS485-Busadresse 3 
der Gesamtertrag

Zu sendendes Telegramm:
05 62 DE A0 03 03 45 D8 00

Antwort vom Wechselrichter:
05 E2 DE A0 03 03 B8 0B 01 02 DA 00

Telegramm nach Dekodierung
05 E2 DE A0 03 00 B8 0B 00 00 DA 00
Ertragswert 7. bis 10. Byte:
B8 0B 00 00
Wert = BB8h,
 Der Wechselrichter hat also aktuell einen Gesamtertrag von 3000 Wh.

von Karl H. (kbuchegg)


Lesenswert?

labelohase schrieb:
> lt. Datenblatt für PV-Wechselrichter der PIKO-Serie
> Beispielkommunikation

Ach das sind gar keine real übertragenen Daten, sondern nur ein Beispiel 
aus einem Manual!
Hättest du aber auch sagen können.

Dann musst du halt mal die Dekodierung studieren. Da gibt es sicher 
einen Abschnitt im Handbuch. Vielleicht ist es auch ein Druckfehler.

von Karl H. (kbuchegg)


Lesenswert?

Mir kommt da zb Byte-Escaping in den Sinn, weil das Telegramm, so wie 
das aus der Ferne aussieht, mit einem 0-Byte endet und man daher in den 
Daten keine 0 Bytes haben will.

Ist aber nur eine Vermutung.

von Thomas E. (thomase)


Lesenswert?

labelohase schrieb:
> B8 0B 00 00
Was ist denn jetzt das Problem?
Wenn das Little Endian ist und die Zahl 32 Bit lang ist, wird das 
byteweise von rechts nach links gelesen:
00 00 0B B8 und das ist BB8 also dezimal 3000.

Warum das so ist? Das ist eine Vereinbarung.

mfg.

von labelohase (Gast)


Lesenswert?

Hi Thomas
aus B8 0B 01 02 wird B8 0B 00 00 dass heist aus  01 02 wird 00 00
wahrscheinlich hat Karl Heinz recht
trotzdem Danke

von Klettern G. (Gast)


Lesenswert?

Das Datenpacket ist COBS codiert. consistent overhead byte stuffing.

Das erste byte ist das sogenannte 'code' byte. Es gibt an wo die nächste 
Null im Datenpacket ist. Und da wo eigentlich die Null stünde steht der 
offset zur nächsten Null. usw.

http://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing

gruß,
klerttern g.

von Karl H. (kbuchegg)


Lesenswert?

Klettern G. schrieb:
> Das Datenpacket ist COBS codiert. consistent overhead byte stuffing.
>
> Das erste byte ist das sogenannte 'code' byte. Es gibt an wo die nächste
> Null im Datenpacket ist. Und da wo eigentlich die Null stünde steht der
> offset zur nächsten Null. usw.
>
> http://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing

Hey. Das kannte ich noch gar nicht.
Ist aber eine gute Idee.

von labelohase (Gast)


Lesenswert?

Hi Klettern

Danke für deine Info

genaus das ist es, hat mir sehr geholfen


l-hase

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.