KNX: Umrechung von 2 Bytes in Dezimal

OP #4428974
Lesenswert?
• ▲
▼
Hallo,

ich sitze gerade daran Temperaturwerte von einem KNX-System mit einem 
Rechner auszulesen. Die Kommunikation läuft über einen IP-KNX-Router.

Das Programm schreibe ich in C#.

Die Byte-Daten bekomme ich. Meine Frage ich nun, wie ich die beiden 
empfangenen Bytes in eine Dezimalwert umrechne.

Die von KNX verwendeten Datentypen sind hier beschrieben: 
http://www.knx.org/fileadmin/downloads/03%20-%20KNX%20Standard/KNX%20Standard%20Public%20Documents/03_07_02%20Datapoint%20Types%20v1.07.00%20AS.zip

Bei den Temperaturwerten handelt es sich um “2-Octet Float Value”, zu 
finden auf Seite 32.

Hier mal ein Beispiel vom Außentemperaturfühler:
1
MSB-Byte: 0x87   0b10000111
2
LSB-Byte: 0x29   0b00101001
3

4
=>  0b1000011100101001
5
      MEEEEMMMMMMMMMMM
6

7
-> Mantisse: 0b11100101001 = -1833(dezimal)
8
-> Exponent: 0b0000        = 0
9

10
Temperatur = (0.01 * Mantisse) * 2^Exponent
11
           = (0.01 * (-1833)) * 2^0
12
           = -18,33

Momentan liegen die Außentemperaturen aber nur knapp unter 0°C. 
Demzufolge wären -1,833°C passender.

Sieht jemand wo mein Fehler ist?

Danke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren