Baumer GK473 Benutzerhandbuch
Seite 26

Handbuch_GK473_S7_Profibus_DE.doc 26/32
Baumer IVO GmbH & Co. KG
04.05.11
Villingen-Schwenningen,
Germany
5.4 FC 1 - ASCII Zahl (6 Byte) in Realzahl
Diese Funktion wird von den Funktionen FC10, FC11, FC12 und FC13 benötigt, um die erhaltenen
Daten der SPA in eine Realzahl (Gleitkommazahl nach IEEE-754) umzuwandeln.
Die Funktion liest die eingehenden Daten, die sich im ASCII Format befinden, aus einem DB (in
diesem Beispiel DB20) und konvertiert diese in die Floating Point Darstellung.
Dazu wird das ASCII Zeichen zuerst in eine Integer Zahl umgerechnet und diese danach mit 10
multipliziert. Es wird das nächste ASCII Zeichen eingelesen, umgerechnet, zum vorherigen Ergebnis
addiert und wieder mit 10 multipliziert. Dies geschieht bis zur letzten eingelesenen Zahl, die einfach
nur noch aufaddiert und das Ergebnis danach nicht mehr multipliziert wird, sondern, um die zwei
Nachkommastellen zu erhalten, durch 100 dividiert wird.
Zur Veranschaulichung: (positive Zahl)
0x31 Æ 1
multipliziert mit 10 -> 10
0x32
Æ
2 + 10 = 12 multipliziert mit 10 Æ 120
0x33
Æ
3 + 120
= 123 multipliziert mit 10 Æ 1230
0x34
Æ
4 + 1230
= 1234 multipliziert mit 10 Æ 12340
0x38
Æ
8 + 12340
= 12348 multipliziert mit 10 Æ 123480
0x36
Æ
6 + 123480
=123486 dividiert durch 100 Æ 1234,86
Analog bei negativem Vorzeichen:
0x2d Æ - (negatives Vorzeichen, nur 5 Zahlenwerte einzulesen)
0x34
Æ
4
= 4 multipliziert mit 10 Æ 40
0x33
Æ
3 + 40
= 43 multipliziert mit 10 Æ 430
0x32
Æ
2 + 430
= 432 multipliziert mit 10 Æ 4320
0x38
Æ
8 + 4320
= 4328 multipliziert mit 10 Æ 43280
0x36
Æ
6 + 43280
= 43286 dividiert durch 100 Æ 432,86
Negieren der Zahl, da negatives Vorzeichen Æ -432.86
Dabei läuft die Funktion bei negativem Vorzeichen einen anderen Programmteil als bei einem
positiven Vorzeichen ab. Wie auch bei der Anzeige der SPA ist der Wertebereich begrenzt. Im
positiven Zahlenbereich lässt sich maximal 9999.99 darstellen, im negativen Zahlenbereich bis zu –
999.99.
5.5 FC 5 – Realzahl in ASCII
Diese Funktion wird von der Funktion FC13 benötigt, um den übergebenen Sollwert vom Realformat in
das ASCII Format zu konvertieren. Dazu benutzt die Funktion den Datenbaustein 97 in den sie den
Sollwert im ASCII Format nach der Umrechnung schreibt. Die Umrechnung wird folgendermaßen
realisiert.
Zuerst wird der Sollwert mit 100 multipliziert, so dass die Nachkommastellen wegfallen. Die
Gleitkommazahl kann ohne Rundungsfehler in eine Integerzahl (Ganzzahl) gewandelt werden. Diese
Zahl wird dann wiederum in eine BCD (Binary Coded Decimal) konvertiert. Da es nicht möglich ist
unter AWL nur 4 Bytes zu laden (eine BCD Ziffer) müssen immer 8 Bytes, also 2 Ziffern geladen
werden und durch Verschiebeoperationen und Ausmaskieren getrennt behandelt werden. Die Ziffern
werden hintereinander in den DB97 im ASCII Format geschrieben, dazu wird der Offset auf die Ziffer
addiert.
Beispiel am Sollwert 123,45:
Zuerst wird der Sollwert mit 100 multipliziert: 12345
Als BCD ergibt sich:
BYTE BYTE BYTE
0 1 2 3 4 5
Wenn byteweise darauf zugriffen wird, beispielsweise auf die letzten beiden Ziffern, wird 01000101
binär in den Akku geladen.
4 5
010
0
010
1