# Hexmuster Drehgeber Profibus zu Festpunktzahl umwandeln?



## Bär1971 (6 November 2009)

Hallo, 
ich habe da eine "kleine" Sorge.

Ich muss einen Absolutwertdrehgeber über Profibus anbinden. Es ist in der Hardwareconfig von der GSD je ein Wort (16Bit) für den Ein- sowie Ausgangsbereich konfiguriert. Die Auflösung hab ich mit 360 angepasst (360° einer Drehachse).
Das Positionssignal wird laut Handbuch Hexcodiert ausgegeben:
also Bitmuster: 2hoch15 ... 2hoch0.
Nun möchte ich im Programm die Position direkt verarbeiten als Festpunktzahl (Integer). Also bei einer halben Umdrehung möchte ich den Wert 180 haben.
Wie wandel ich das am besten?

Und jetzt noch die Steigerung:
Wenn ich den Geber Nullen möchte (Preset-funktion) muss ich das Ausgangswort für den Geber ebenfalls Hexcodiert beschreiben. Das würde ja nun genau anderstrum gehen wie oben gefragt. Allerdings gilt das Bit 15 hier als "Befehl" zum das Hexmuster ins EEprom des Gebers zu schreiben. Das Bit 15 muss solange 1 sein, bis der Geber den Presetwert im Eingangswort wieder zurückgibt und dann auf 0 zurückgesetzt werden.
Wie beschreib ich das Wort am besten, wenn ich z.Bsp 30 als Presetwert haben mag?

Vielen Dank mal im Vorraus


----------



## MarkusP210 (6 November 2009)

Hallo

Eingangswert lesen:
L   Eingangswort
BTI
T   Integerzahl

und

Presetwert schreiben:
L   Integerzahl
L   Presetwert
<>I
SPBN N001

L   Presetwert
ITB
L   W#16#8000
OW
SPA N002

N001: L   Ausgangswort
L   W#16#7FFF
UW

N002: T   Ausgangswort

Markus


----------



## Bär1971 (6 November 2009)

au weia, erstmal danke für die schnelle Antwort. Hm.. kannst du mir noch die 8000 und die 7FFF erklären? Ich steh am Anfang mit Zahlenformate... und warum muss es vor dem Sprung nach N002 OW heissen?


----------



## Blockmove (6 November 2009)

Lass dich nicht verwirren,
der Geber liefert dir das Geber als Integer.
Entweder als in Grad oder als 1/10 Grad.

Hex8000 setzt das Bit 15 mit 7FFF nimmst du es wieder weg.

Willst du z.B. deinen Preset auf 10 setzten, dann muss in dein AW:

Hex 000A = Binär 0000 0000 0000 1010

dann Bit 15 durch ODER Hex 8000 setzen
Hex 000A = Binär 0000 0000 0000 1010
Hex 8000 = Binär 1000 0000 0000 0000
OW
Hex 800A = Binär 1000 0000 0000 1010

danach wieder Bit 15 reseten
Hex 7FFF UND HEX 800A verknüpfen

Hex 800A = Binär 1000 0000 0000 1010
Hex 7FFF = Binär 0111 1111 1111 1111
UW
Hex 000A = Binär 0000 0000 0000 1010


Gruß
  Dieter


----------



## Bär1971 (6 November 2009)

supi,
jetzt hab ichs kappiert.

vielen Dank euch Beiden.


----------

