Pagina 1 van 1

Datapunttype 9.001

Geplaatst: di 19 feb 2019, 14:51
door ON3WVS
Hallo,

Ik merkte iets vreemds op tijdens het uitlezen van een groepsadres die een Datapunttype 9.001 (temperatuur) heeft:

Deze waarde wordt eerst in HEX getoond (bijvoorbeeld 3,6°C = HEX 0168)
Als je deze waarde vertaalt met de Windows calculator van HEX naar DEC dan krijg je inderdaad de waarde 36

Bovenstaande is geldig voor waarden tot +/-20°C, wanneer je er boven gaat krijg je dit:

vb. 21,3°C wordt weergegeven als 0C29 = 3113

Volgens ik lees op de site van KNX is datapunttype 9.001 een 16-bit float. Iemand een verklaring voor deze waarden?

Thanks!

Re: Datapunttype 9.001

Geplaatst: di 19 feb 2019, 18:26
door egfdevos
Als je zelf al gevonden hebt dat het een "Floating point" is.
Dan heb je daar het antwoord op je vraag toch al.

Dec 3,6 naar Hex is normaal onmogelijk want geen heel getal vandaar het toepassen van floating point.

Re: Datapunttype 9.001

Geplaatst: wo 20 feb 2019, 16:30
door ON3WVS
egfdevos schreef:
di 19 feb 2019, 18:26
Als je zelf al gevonden hebt dat het een "Floating point" is.
Dan heb je daar het antwoord op je vraag toch al.

Dec 3,6 naar Hex is normaal onmogelijk want geen heel getal vandaar het toepassen van floating point.
Hoi Edwin,

HEX 0168 = DEC 360 (en nog eens delen door 100 en je komt aan 3,6°C) Dit werkt bij alle waarden onder 20,4°C
Wat bedoel je met het type Floating Point, als zijnde een antwoord op mijn vraag? Daar kan ik even niet volgen.

Grtz W

Re: Datapunttype 9.001

Geplaatst: wo 20 feb 2019, 17:11
door egfdevos
Hexadecimaal is een 16 tallig stelsel en decimaal een 10 tallig stelsel.

Derhalve klopt jouw beredenering niet als je goed kijkt.

Zoals knx het toepast op de temperatuur word daar vanwege de preciesie nog eens een formule op toegepast bestaande uit delen van die 16bit data binnen een bepaald bereik.

Re: Datapunttype 9.001

Geplaatst: wo 20 feb 2019, 18:18
door ON3WVS
egfdevos schreef:
wo 20 feb 2019, 17:11
Hexadecimaal is een 16 tallig stelsel en decimaal een 10 tallig stelsel.

Derhalve klopt jouw beredenering niet als je goed kijkt.

Zoals knx het toepast op de temperatuur word daar vanwege de preciesie nog eens een formule op toegepast bestaande uit delen van die 16bit data binnen een bepaald bereik.
Dit is nu net de formule waar mijn vraag over gaat... heb mij de laatste dagen scheel gezocht en pagina's doorlezen met mantissa's, exponenten, etc. maar ik zie het niet zo duidelijk.

W

Re: Datapunttype 9.001

Geplaatst: wo 20 feb 2019, 19:10
door egfdevos
Dit geld voor DPT 9.xxx
16 bits:
16 t/m 1
MEEEEMMM MMMMMMMM

Eerste M staat voor +/-

X = (0,01*M)*2 tot de macht (E)
E = [0 … 15]
M = [-2048 … 2047]
bereik = [-671088,64 … 670760,96]

Voor DPT 9.001 is het bereik beperkt; [-273 … 670760]
en een eenheid; graden celcius.

Re: Datapunttype 9.001

Geplaatst: wo 20 feb 2019, 19:19
door egfdevos
Dus als je een hexadecimale waarde hebt zul je deze eerst naar binair om moeten rekenen.
Dan in die 3 blokken onderverdelen. Dan 2 blokken omrekenen naar decimaal.
Door de formule halen en kijken of het een positieve of negatieve temperatuur is.

Re: Datapunttype 9.001

Geplaatst: do 21 feb 2019, 11:01
door ON3WVS
egfdevos schreef:
wo 20 feb 2019, 19:19
Dus als je een hexadecimale waarde hebt zul je deze eerst naar binair om moeten rekenen.
Dan in die 3 blokken onderverdelen. Dan 2 blokken omrekenen naar decimaal.
Door de formule halen en kijken of het een positieve of negatieve temperatuur is.
Ok thanks, hier kan ik wat mee.

Mvg