KNX: 16-Bit Float: negative Zahl

Gast #5871291
Lesenswert?
• ▲
▼
Hallo,

ich habe gerade ein Projekt, bei dem ich KNX-Daten mit einem µC 
auswerten muß.

Die Temperatur wird in 16-Bit Gleitkomma übertragen (DPT09), wobei die 
Aufteilung der Bits bei KNX etwas "besonders" ist:

Bit 0...10: Mantisse (11 Bit)
Bit 11..14: Exponent (4 Bit)
Bit 15: Vorzeichen (1 Bit)

Die KNX-Berechnung des Temperaturwertes ist wie folgt:
Mantisse * 0,01 * 2^Exponent

Positive Werte sind mir klar, aber wie ist das mit negativen Zahlen? Ich 
hätte erwartet, daß der einzige Unterschied das 15. Byte ist, scheint 
aber nicht so zu sein. Hier z.B. folgende KNX-Werte:
-1°C:  KNX-Wert 0x899C
-2°C:  KNX-Wert 0x8738
-3°C:  KNX-Wert 0x86D4
-10°C:  KNX-Wert 0x8418
-20°C:  KNX-Wert 0x8030
-30°C:  KNX-Wert 0x8A24

Wie komme ich vom KNX-Wert auf die entsprechende negative Temperatur?

Grüße
Holger
Gast #5871357
Lesenswert?
• ▲
▼
Hallo Max M.

mache ich einen Fehler? Hier ein Beispiel:

Beispiel -10°C:
0x8418 = 0b1000 0100 0001 1000
Vorzeichen: 1 (Minus)
Exponent: 0b0000
Mantisse: 0b100 0001 1000  ==> 524 (dezimal)

Mantisse * 0,01 * 2^Exponent
524 * 0,01 * 2^0 = 5,24

==> 5,24 ist nicht 10...
Gast #5871411
Lesenswert?
• ▲
▼
Holger schrieb:
> Beispiel -10°C:
> 0x8418 = 0b1000 0100 0001 1000
> Vorzeichen: 1 (Minus)
> Exponent: 0b0000
> Mantisse: 0b100 0001 1000  ==> 524 (dezimal)
>
> Mantisse * 0,01 * 2^Exponent
> 524 * 0,01 * 2^0 = 5,24
1
Die Mantisse ist dann falsch. (2er Komplement)
2

3
0b1000 0100 0001 1000
4

5
Exponent-Bits löschen:
6

7
0b1xxx x10000011000 = 0b1100 0001 1000 (2er Komplement-Darstellung der Mantisse)
8

9
Umwandeln (eine 1 dazu addieren und alles negieren) liefert:
10
Mantisse=-1000
11

12

13
-1000*0,01*2^0=-10

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.