UART kommunikation macht keinen Sinn

OP #6454093
Lesenswert?

Hallo

Problem:
Die daten in einer UART Kommunikation ergeben keinen sinn.

Genauer:
Ein Win Programm spricht mit einem Mikrocontroller, dieser schaltet dann 
die Uhrzeit auf einer Tafel.
PC und Kontroller sind über USB verbunden. Auf die Original Platine 
besteht kein zugriff. Als Gegenstück für den Datenverkehr wird ein 
FT232RL verwendet. Das Auslesen übernimmt dann Saleae Logic 8.

Übergeben wird ein 30 Byte Wort. Bei einer Änderung der Minuten 
verändern sich byte 23 & 24, bei einer Änderung der stunden Byte 
18,19,23,24
Um eine bessere Übersicht über die Bytes zu haben, Stellt ein Python 
Programm die Byte Worte in eine Zeile da. Den Input bekommt sie dabei 
aus einer CSV Datei die von V exportiert werden kann.

Kann mir jemand sagen ob ich einen felher beim Auslesen gemacht habe 
oder sollen die daten für Menschen nicht lesbar sein?

Tafel:
-Aufbau unbekannt
-vom Kontroller zur tafel gehen 2 Adern

Platine:
-FT232BL
-M430F149

Aufbaue:

PC--> USB-Kabel -> FT232RL -> Saleae Logic 8
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #6454164
Lesenswert?

Mathias B. schrieb:
> Um eine bessere Übersicht über die Bytes zu haben, Stellt ein Python
> Programm die Byte Worte in eine Zeile da.
Übersichtlicher wäre hier eine Hex-Darstellung. Eine Suche in dieser 
0-1-Zahlenwüste ist ja umständlicher als die Nadel im Heuhaufen zu 
finden...

> Kann mir jemand sagen ob ich einen felher beim Auslesen gemacht habe
> oder sollen die daten für Menschen nicht lesbar sein?
Warum sollten sie für den Menschen lesbar sein?
Eine naheliegende Möglichkeit zum Schutz vor einem Nachbau ist das 
"Verschlüsseln" der Kommunikation.

> Kann mir jemand sagen ob ich einen felher beim Auslesen gemacht habe
Hast du dir das Timing der Bits und Worte mal auf dem Oszilloskop 
angeschaut? Nur, um sicher zu sein, dass die Baudrate passt...

> Bei einer Änderung der Minuten verändern sich byte 23 & 24,
> bei einer Änderung der stunden Byte 18,19,23,24
Irgenwie logisch, weil bei einer Stundenänderung ja auch die Minuten von 
59 auf 00 springen.
Kannst du auch sagen, welche Uhrzeit zu welchem Telegramm gehört? Und 
wie oft solche Telegramme gesendet werden?
OP #6454277
Lesenswert?

Lothar M. schrieb:
> Übersichtlicher wäre hier eine Hex-Darstellung. Eine Suche in dieser
> 0-1-Zahlenwüste ist ja umständlicher als die Nadel im Heuhaufen zu
> finden...

Orginal export aus Saleae :
1325_1330_bin.csv
1325_1330_hex.csv

vieleicht etwas übersichtlichere darstellung:
1325_1330_predit

Session_c1.sal :
Session aus dem Programm, lest sich damit wider herstellen.

Lothar M. schrieb:
> Hast du dir das Timing der Bits und Worte mal auf dem Oszilloskop
> angeschaut? Nur, um sicher zu sein, dass die Baudrate passt...
Bautrate ist in einer txt Datei im Programmordner hinterlegt (siehe 
anhang "Settings-COM4").

Die in dieser Antwort, angehängten Protokolle worden von 13:25 Uhr-13:30 
Uhr erstellt.
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #6454389
Lesenswert?

Mathias B. schrieb:
> vieleicht etwas übersichtlichere darstellung:
> 1325_1330_predit
Und die muss jetzt noch übersichtlicher werden. Alles, was konstant ist, 
muss erstmal weg. Und dann muss die korrelierende Uhrzeit dazu, damit 
man erkennt, wann da was passiert:
1
13:25  0xdb, 0x2f      0xed, 0x2c
2
13:26  0xdb, 0x2f      0xfd, 0x5c
3
13:27  0xdb, 0x2f      0x87, 0x3d
4
13:28  0xdb, 0x2f      0xff, 0x52
5
13:29  0xdb, 0x2f      0xef, 0x22
6
13:30  0xcf, 0x43      0xbf, 0x95
7
13:31  0xcf, 0x43      0x86, 0x3a
In dieser reduzierten Form sieht man, dass da mehr als nur die 6 Minuten 
von 13:25 bis 13:30 drin sind und sich offenbar auch mitten in der 
Stunde überall was tut.

Und das musst du jetzt mal für ein paar Stunden machen. Und mal schauen, 
ob das jede halbe Stunde passiert bzw. ob sich da ein Muster jede Stunde 
wiederholt. Und am besten einen Tag später für die selbe Uhrzeit, damit 
du siehst, ob sich da am nächsten Tag nochmal was ändert.
Also einfach mal Puzzleteile sammeln, hin- und hersortieren und auf dich 
wirken lassen. Irgendwann gibt es ein Bild... ;-)

So wie ich das sehe, wird es später auch nötig sein, auf die binäre 
Darstellung zurückzugehen.

BTW: was ist übrigens dein Ziel, wenn du den Code entschlüsselt hast?
Gast #6454445
Lesenswert?

Mathias B. schrieb:
> Problem:
> Die daten in einer UART Kommunikation ergeben keinen sinn.
>
> Genauer:
> Ein Win Programm spricht mit einem Mikrocontroller, dieser schaltet dann
> die Uhrzeit auf einer Tafel.

Also NOCH GENAUER:
Da es sich um ein offenbar funktionsfähiges Konstrukt handelt, ist ein 
Sinn drin.
Du hast den Sinn noch nicht erfasst.

Der Betreff ist also irreführend und falsch.

Gruss
#6454464
Lesenswert?

Ich wollte mir nicht extra ein Programm installieren, habe deswegen mit 
der .txt aus dem Eröffnungspost ein wenig in Word herumgespielt.

Das Protokoll scheint aus jeweils 6 Blöcken mit je 5 Byte zu bestehen.
Block 1 und 2 definieren Start sowie Ende, Block 2,3,4,5 die jeweiligen 
Daten für die einzelnen Segmente.

Block 2 z.B. Byte 1 Startbyte, Byte 2+3 Kennung, Byte 4+5 Zeitangaben

Block 1  Start 0s00000000, 0b00001001, 0b01001100, 0b10000110, 
0b00000110
Block 2  Daten  Stunde einer Stelle
Block 3  Daten  Stunde zehner Stelle
Block 4  Daten  Minuten einer Stelle
Block 5  Daten  Minuten sehner Stelle
Block 6  Ende   0b00000000, 0b00001010, 0b01010110, 0b11111111, 
0b00000110

Vielleicht hilft es ja.
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #6454504
Lesenswert?

Holger L. schrieb:
> Block 2  Daten  Stunde einer Stelle
> Block 3  Daten  Stunde zehner Stelle
Das passt dann aber nicht dazu, dass sich die "Stundensegmente" 
augenscheinlich zur halben Stunde auch ändern...

Wie gesagt: da braucht es noch Informationen. Wichtig ist, 
Wiederholungen zu finden. Blöd wäre, wenn es keine solchen stündlichen 
oder täglichen Wiederholungen gäbe.

Was ich noch testen würde:
Was passiert, wenn du genau so ein beliebiges mitgeschnittenes 
Datenpaket von deinem "Trace-PC" an die Anzeige schickst? Zeigt sie dann 
die Zeit an, zu der dieses Datenpaket mitgeschnitten wurde?
Gast #6454559
Lesenswert?

Hallo,

ich habe mich erinnert so was schon mal gesehen zu haben!

Du musst die Daten in deinem File „1325_1330_predit“ in 5er Gruppen 
zerlegen!
Man erhält insgesamt 13 verschiedene 5er Gruppen:
Das sind:
0x0, 0x9, 0x4c, 0x86, 0x06,
0x0, 0x9, 0x52, 0xcf, 0x7f,
0x0, 0x9, 0x56, 0xff, 0xbb,
0x0, 0xa, 0x4c, 0xcf, 0x43,
0x0, 0xa, 0x4c, 0xdb, 0x2f,
0x0, 0xa, 0x52, 0x86, 0x3a,
0x0, 0xa, 0x52, 0x87, 0x3d,
0x0, 0xa, 0x52, 0xbf, 0x95,
0x0, 0xa, 0x52, 0xed, 0x2c,
0x0, 0xa, 0x52, 0xef, 0x22,
0x0, 0xa, 0x52, 0xfd, 0x5c,
0x0, 0xa, 0x52, 0xff, 0x52,
0x0, 0xa, 0x56, 0xff, 0x06,

Das letzte Byte in jeder Gruppe ist die 8Bit-CRC jeder Gruppe berechnet 
über die ersten 4-Byte nach dem sogenannten „CRC8 (ITU-T)-Polynom“ 
(x8+x2+x+1).

Habs extra für alle 13 nachgerechnet!
Den Inhalt (d.h. die Bedeutung) der ersten 4 Byte musst du selber 
herausfinden.

Gruss
Gast #6454582
Lesenswert?

Hallo,
kurzer Nachtrag: da der Startwert der CRC-Berechnung 0x00 ist spielt das 
erste byte in jeder Gruppe mit ebenfalls 0x00 keine Rolle. D.h die 
Berechnung der CRC kann auch nur über Byte 2,3,4 erfolgen.

Gruss
#6454588
Lesenswert?

Lothar M. schrieb:
> damit man erkennt, wann da was passiert:
> 13:25  0xdb, 0x2f      0xed, 0x2c
> 13:26  0xdb, 0x2f      0xfd, 0x5c
> 13:27  0xdb, 0x2f      0x87, 0x3d
> 13:28  0xdb, 0x2f      0xff, 0x52
> 13:29  0xdb, 0x2f      0xef, 0x22
> 13:30  0xcf, 0x43      0xbf, 0x95
> 13:31  0xcf, 0x43      0x86, 0x3a

Die Minuten-Einer und die Bytes in der dritten Spalte sehen aus wie 
Siebensegmentcodes mit gesetztem Bit 7.
Gast #6454692
Lesenswert?

Mathias B. schrieb:
> Das Auslesen übernimmt dann Saleae Logic 8.
>
> Übergeben wird ein 30 Byte Wort. Bei einer Änderung der Minuten
> verändern sich byte 23 & 24, bei einer Änderung der stunden Byte
> 18,19,23,24

Dann häng doch mal statt irgendwelchen rumkonvertieren Texten eine 
.logicdata Datei an, die ein paar Minuten mindestens über einen 
Stundenwechsel (mit Angabe der Uhrzeit) enthält.
Gast #6454934
Lesenswert?

Es werden Pakete mit je 30 Byte übertragen, das ergibt sechs 5-er 
Gruppen:

1. Gruppe enthält in 4.Byte die 7-Segment-Daten Stunden zehner Stelle
2. Gruppe Stunden einer Stelle
3. Gruppe ??
4. Gruppe Minuten zehner Stelle
5. Gruppe Minuten einer Stelle
6. Gruppe ??

Die Bytes 1 bis 3 in jeder Gruppe könnten Adresse sein und Byte 5 ist 
CRC

Gruß
Viktor
Moderator (Firma: Titel) Persönliche Seite #6455013
Lesenswert?

Nochmal kurz draufgeschaut... ;-)
1
       min10  cs       min1   cs 
2
xx:25  0xdb, 0x2f      0xed, 0x2c
3
xx:26  0xdb, ..        0xfd, 0x5c
4
xx:27  0xdb,           0x87, 0x3d
5
xx:28  0xdb,           0xff, 0x52
6
xx:29  0xdb,           0xef, 0x22
7
xx:30  0xcf, 0x43      0xbf, 0x95
8
xx:31  0xcf, ..        0x86, 0x3a
9

10
hier jetzt mal die Minuten 10er:
11

12
            g f e d c b a
13
0xdb = 0b 1 1 0 1 1 0 1 1 (entspricht einer 2 auf 7-Segment-Anzeige)
14
   a
15
  ---
16
f    |b
17
g --- 
18
e|    c
19
  ---
20
   d
21

22
            g f e d c b a
23
0xcf = 0b 1 1 0 0 1 1 1 1 (entspricht einer 3 auf 7-Segment-Anzeige)
24
   a
25
  ---
26
f    |b
27
g --- 
28
e    | c
29
  ---
30
   d
Und das jetzt zum Gegenchecken noch über einen Stundenwechsel und einen 
Zehnstundenwechsel und du hast das Protokoll in der Tasche.

Viktor K. schrieb:
> Die Bytes 1 bis 3 in jeder Gruppe könnten Adresse sein
Da wäre jetzt interessant, zu wissen, wie die Anzeige aufgebaut ist. 
Vielleicht gibt es dort tastäschlich Jumper oder Schalter, in denen sich 
diese Bits wiederfinden...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren