Forum: Mikrocontroller und Digitale Elektronik binäre Zählweise? UART Kommunikation


von Joachim A. (joachim198)


Lesenswert?

Hallo,

ich hoffe hier die richtige Rubrik getroffen zu haben. Ich habe 
folgendes Problem. Ich besitze eine kleine CNC Anlage von China mit 
einer Steuerung aus DSP und einem NXP P89V51RB2 µC in einem Bedienpanel. 
Die beide kommunizieren einander über UART TTL. Ich bin dabei mir eine 
eigene Ansteuerung zu basteln und habe dazu die Übertragungen geloggt. 
Alles ging soweit wunderbar nur jetzt kommts.
Man kann die Geschwindigkeiten vorgeben. 0-100% oder in mm/s. Dabei gibt 
es folgende Zählweise:
1
     X2%  10000111 10100010 00100000
2
     X3%  10000111 10100010 00100001
3
     X4%  10000111 10100010 00100110
4
     X5%  10000111 10100010 00100111
5
     X6%  10000111 10100010 00100100
6
     X7%  10000111 10100010 00100101
7
     X8%  10000111 10100010 00101010
8
     X9%  10000111 10100010 00101011
9
    X10%  10000111 10100010 00101000
10
    X11%  10000111 10100010 00101001
11
    X12%  10000111 10100010 00101110
12
    X13%  10000111 10100010 00101111
13
    X14%  10000111 10100010 00101100
14
    X15%  10000111 10100010 00101101
15
    X16%  10000111 10100010 00110010
16
    X17%  10000111 10100010 00110011
17
    X18%  10000111 10100010 00110000
18
    X19%  10000111 10100010 00110001
19
    X20%  10000111 10100010 00110110
20
    X21%  10000111 10100010 00110111
usw.

beim Speed
1
     1    10000111 01010010 00100010 00100011
2
     2    10000111 01010010 00100010 00100000
3
     3    10000111 01010010 00100010 00100001
4
     4    10000111 01010010 00100010 00100110
5
     5    10000111 01010010 00100010 00100111
6
     9    10000111 01010010 00100010 00101011
7
    10    10000111 01010010 00100010 00110010
8
    11    10000111 01010010 00100010 00110011
9
    12    10000111 01010010 00100010 00110000
10
    13    10000111 01010010 00100010 00110001
11
    14    10000111 01010010 00100010 00110110
12
    15    10000111 01010010 00100010 00110111
13
    16    10000111 01010010 00100010 00110100
14
    17    10000111 01010010 00100010 00110101
15
    18    10000111 01010010 00100010 00111010
16
    19    10000111 01010010 00100010 00111011
17
    20    10000111 01010010 00100010 00000010
18
    21    10000111 01010010 00100010 00000011
19
    22    10000111 01010010 00100010 00000000
20
    23    10000111 01010010 00100010 00000001
21
    24    10000111 01010010 00100010 00000110
22
    25    10000111 01010010 00100010 00000111
23
24
    50    10000111 01010010 00100010 01110010
25
   100    10000111 01010010 00100011 00100010
26
   150    10000111 01010010 00100011 01110010
27
   200    10000111 01010010 00100000 00100010
28
   250    10000111 01010010 00100000 01110010
29
   300    10000111 01010010 00100001 00100010
usw.
Kennt jemand diese Art der Zählweise? Normal Binär ist das nicht!

Vielleicht kann mir jemand einen Tipp geben!

Danke!

Grüße
Joachim

--
Formatierte Tabellen sowie "ASCII-Art" bitte zukünftig in [ pre ] [ / 
pre ]-Tags einschließen.

-rufus

von Günter Lenz (Gast)


Lesenswert?

Aichinger schrieb:
>Normal Binär ist das nicht!

Also ich sehe lauter Binärzahlen.
Erste Reihe zum Beispiel umgerechnet in Dezimal:

135 162 32

oder in Hex

87 A2 20

von Günter Lenz (Gast)


Lesenswert?

Sagen wir mal anders, du wilst das Übertragungsprotokoll
rekonstruieren. Ob das möglich ist weiß ich auch nicht.
Das wird nicht so einfach sein. Ich hatte auch mal sowas vor,
mit einem Eprombrenner, um selber ein Programm dafür schreiben
zu können, habe es aber bis jetzt noch nicht gemacht.
Am einfachsten würde sein, man fragt den Hersteller.
Ob der die Informationen rausrückt ist eine andere Frage.

von Byteverprügler (Gast)


Lesenswert?

Ist doch egal wie die Werte wirklich zu interpretieren sind.

Pack sie in ein Array und je nach gewünschtem Wert sendest du
die aufgezeichnet bytes an die Maschine, fertig.

Wenn du keine Doku dazu hast kannst du lange rätseln, das ist 
Zeitverschwendung.

Hauptsache die Maschine verhält sich genauso wie erwünscht mit
den aufgezeichneten Werten.

von radiostar (Gast)


Lesenswert?

Das ist ein BCD-Code, wobei Du jedes Nibble mit 0010 XORen mußt, um auf 
den binären Wert zu kommen.

Also z.B.

00000111 XOR
00100010 =
00100101 bzw 25 Dezimal.

Wozu allerdings weiß ich auch nicht.

von Joachim198 (Gast)


Lesenswert?

Vielen Dank! Damit kann ich ja einmal weiterarbeiten. Ein Array wäre 
natürlich auch eine Möglichkeit.
Vielleicht haben die früher eine Vorgabe über BCD Schalter gehabt?!

Danke nochmal!

Joachim

von Joachim198 (Gast)


Lesenswert?

radiostar schrieb:
> 00000111 XOR
> 00100010 =
> 00100101 bzw 25 Dezimal.

Aber 00100101 ist doch 37 ?!

von Joachim198 (Gast)


Lesenswert?

Joachim198 schrieb:
>> 00000111 XOR
>> 00100010 =
>> 00100101 bzw 25 Dezimal.

In 25 ist es Hex!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Joachim198 schrieb:
> In 25 ist es Hex!
Bei BCD gibt es kein A...F, dirket nach 9 kommt der Überlauf:
nach x09 kommt nicht wie binär x0A, sondern x10. Deshalb ist x10 als 
BCD-Code eben auch dezimal 10, und x25 im BCD Code eben auch dezimal 
25...
1
bin        BCD   dez
2
00001001   x09    9
3
00010000   x10   10
4
00010001   x11   11
5
:
6
:
7
00011001   x19   19
8
00100000   x20   20
9
00100001   x21   21
10
:
11
:

von Joachim198 (Gast)


Lesenswert?

Ach! Wieder was gelernt!

Danke!

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.