Forum: Mikrocontroller und Digitale Elektronik unbekanntes Bus (Frame) entziffern, brauche Hilfe.


von Georg (Gast)



Lesenswert?

Hallo,

ich bin gerade dabei ein fremdes BUS-System (Ältere CNC Anlage mit 
Mitsubishi Steuerung) zu decodieren. (Aufgenommen mit Saleae Logic, 
Kopie angehängt https://www.saleae.com/). Das ist ein reine Asynchrone 
Serielle Übertragung auf RS-422 Basis, also insgesamt 2 Datenleitung.
Ich habe bis jetzt folgendes raus bekommen:

1. Es ist eine NRZ Datenübertragung, ähnlich wie UART, aber ohne START 
und STOP Bits, nur reine 8 Datenbits.
2. 1 Datenpaket besteht aus (Alle Daten sind 0 Byte):
   Preamble 3 Byte + Daten 194 Byte + CRC 2Byte + Preamble 3 Byte = 202 
Byte = 1616 Bit
3. nur bei Preamble: Max Länge H-Pegel oder L-Pegel 7Bit nacheinander.
4. nur bei Daten und CRC: Max Länge H-Pegel oder L-Pegel 6Bit 
nacheinander.
4.1 Kommen irgendwo (bei Daten oder CRC) 6Bit nacheinander egal low oder 
high Pegel, wird das ganze Frame(Datenpaket) um ein 1Bit verlängert.
Beispiel, es kommen 5x (6Bit) nacheinander:
...xxxxx01100000011111100000011111100101000111111xxxx...
Das Paket ist dann 1616 Bit + 5 Bit = 1621Bit. Dabei bleiben die beiden 
Preamble und CRC auf seinen Plätzen (werden nicht verschoben).
Alle Pakete die ich bis jetzt gesehen haben variieren von 1616 Bit bis 
1622 Bit. Diese Bitverlängerung hat was mit Preamble zutun, es dürfen in 
Daten keine 7 Bits nacheinander kommen! Oder?
5. Die Datenübertagung müsste NRZ-S sein, bin mir fats 100% sicher:
https://de.wikipedia.org/wiki/Non_Return_to_Zero
Preamble ist ausgerechnet (nach NRZ-S) immer: 01111110011111101111110 
(7E7E7E).

Die Frage ist, hat schon einer sowas gesehen oder realisiert, mir gehts 
erst um die Bitverlängerung, wie wird das gemacht?

Die 2 Frage wäre die CRC Berechnung, da muss ich aber noch Daten 
dekodieren.
1. Paket habe ich schon mal (Mit NRZ-S ausgerechnet) :-)
Preamble 3x7E (wird aber denke ich nicht mitberechnet) + Daten 194x 0x00 
+ CRC 0x7D34 + Preamble 3x7E (wird aber denke ich nicht mitberechnet).


Gruß
Georg

von Georg (Gast)


Lesenswert?

Georg schrieb:
> 5. Die Datenübertagung müsste NRZ-S sein, bin mir fats 100% sicher:
> https://de.wikipedia.org/wiki/Non_Return_to_Zero
> Preamble ist ausgerechnet (nach NRZ-S) immer: 01111110011111101111110
> (7E7E7E).

Oder bin ich ganz falsch und es ist ganz was anderes, MAnchester ist es 
aber nicht, NRZ-S passt da am besten. nur diese Bitverlängerung bei 6 
gleichen Bits, das macht mich "verrückt".

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Bei dem Übertragungsprotokoll handelt es sich offenbar um eine Anlehnung 
an das bitweise(*) HDLC. Dieses verwendet auch sog. Flags am Anfang und 
Ende eines Pakets, die allerdings 01111110 lauten und nur einfach 
auftreten. Das, was Du als Bitverlängerung beschreibst, ist allgemein 
unter der Bezeichnung Bitstuffing bzw. Bitstuffing bekannt. Dies wird 
nicht nur bei HDLC, sondern auch z.B. bei CAN und Ethernet verwendet.

https://de.wikipedia.org/wiki/Bitstopfen

Zu (*): Es gibt neben dem o.a. bitweisen HDLC auch noch das byteweise 
HDLC, welches z.B. bei PPP und PPPoE eingesetzt wird, also TCP/IP über 
Modem/ISDN bzw. DSL. PPP ist allerdings nicht auf IP-basierte Protokolle 
beschränkt, sondern eignet sich auch dafür, andere Protokolle wie z.B. 
PAP, CHAP, IPX oder Appletalk zu übertragen.

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

Andreas S. schrieb:
> Bei dem Übertragungsprotokoll handelt es sich offenbar um eine Anlehnung
> an das bitweise(*) HDLC. Dieses verwendet auch sog. Flags am Anfang und
> Ende eines Pakets, die allerdings 01111110 lauten und nur einfach
> auftreten. Das, was Du als Bitverlängerung beschreibst, ist allgemein
> unter der Bezeichnung Bitstuffing bzw. Bitstuffing bekannt. Dies wird
> nicht nur bei HDLC, sondern auch z.B. bei CAN und Ethernet verwendet.

Da kommt der Stopfen her :-), sehr schön, da werde ich mich ein wenig 
einlesen, Danke.

Gruß Georg

von Joe F. (easylife)


Lesenswert?

Muss ja eigentlich eine verbreitete Industrieschnittstelle sein. 
"Profibus" evtl.?

von Georg (Gast)


Lesenswert?

Joe F. schrieb:
> "Profibus" evtl.?
glaube ich nicht...

Das ist was eigenes von Mitsubishi, es gibt nicht mal eine 
Pinbezeichnung vom Stecker (Computer->Servo).

Gruß
Georg

von Georg (Gast)


Angehängte Dateien:

Lesenswert?

Ich bin mir fast sicher das da dieses IC verbaut ist, das Teil kann 
alles:


xMR15-13 Data Format
000 NRZ
001 NRZB
010 NRZI-Mark
011 NRZI-Space
100 Bi-phase-Mark
101 Bi-phase-Space
110 Bi-phase-Level
111 Differential Biphase-Level

0000 Asynchronous Asynchronous
0001 — External Sync
0010 Isochronous Isochronous
0100 Monosync Monosync
0101 Bisync Bisync
0110 HDLC/SDLC HDLC/SDLC
0111 Transp. Bisync Transp. Bisync
1000 Nine-Bit Nine-Bit
1001 802.3 (Ethernet) 802.3 (Ethernet)
1010 — —
1011 — —
1100 Slaved Monosync —
1101 — —
1110 HDLC/SDLC Loop —
1111 — —

Das ist das was ich brauche :-)

von Georg (Gast)


Lesenswert?

Es passt jetzt alles, NRZI-Space mit Bitstuffing, und der Rest, es geht 
jetzt alles auf, nur nicht die Checksumme, komme einfach nicht weiter, 
CRC von Zilog und Konsorten hauen nicht hin... habe alle bekannten 
Polynome durch probiert:

Paket besteht: 3x 8Bit Flag, 194x 8Bit Data, 2x 8Bit CRC, 3x 8Bit Flag.
Flags und CRC wird nicht einberechnet.

1. Paket:
Flag (3 Byte):7E7E7E
Data (194 Byte): 
000000000000000000000000000000000000000000000000000000000000000000000000 
000000000000000000000000000000000000000000000000000000000000000000000000 
000000000000000000000000000000000000000000000000000000000000000000000000 
000000000000000000000000000000000000000000000000000000000000000000000000 
000000000000000000000000000000000000000000000000000000000000000000000000 
0000000000000000000000000000
CRC (2 Byte):7D34
Flag (3 Byte):7E7E7E

2. Paket:
Flag (3 Byte):7E7E7E
Data (194 Byte): 
FB808040000060004020607FFFFF80000000000000000000000000000000000000000000 
000000000000000000000000000000000000000000000000000000000000000000000000 
000000000000000000000000000000000000000000000000000000000000000000000000 
000000000000000000000000000000000000000000000000000000000000000000000000 
000000000000000000000000000000000000000000000000000000000000000000000000 
0000000000000000000000000000
CRC (2 Byte):4C1A
Flag (3 Byte):7E7E7E

2. Paket:
Flag (3 Byte):7E7E7E
Data (194 Byte): 
A50100480000FF0F2FC80000000000000000000000000000000000C00000000000000000 
00000000000000000000000000008048000000507AD90000000000000000000000000000 
000000C00000000000000000000000000000000000000000000040480000FF9FF5F30000 
000000000000000000000000000000C00000000000000000000000000000000000000000 
0000C04A0000000000000000000000000000F2FF00000000000000800000840000000000 
0000000000000000000000000000
CRC (2 Byte):CF55
Flag (3 Byte):7E7E7E


Irgend einer Idee? SRP16 Rocksoft habe schon Probiert, ein "dreier" gabs 
bis jetzt nicht

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.