Conversion de et vers EIS5 - Version imprimable +- Forum KNX francophone / English KNX forum (https://www.knx-fr.com) +-- Forum : Français (https://www.knx-fr.com/forumdisplay.php?fid=3) +--- Forum : Archives eib-domotique (https://www.knx-fr.com/forumdisplay.php?fid=8) +--- Sujet : Conversion de et vers EIS5 (/showthread.php?tid=924) |
Conversion de et vers EIS5 - Roby - 24/07/2010 Bonjour, Pour interconnecter du 1-wire avec eibd, je suis à le recherche de la "formule" pour convertir des températures en 2-byte. J'ai trouvé ça (http://faq.knx.org/search_faq?product=11&faq=41) : --- To convert from decimal representation to DPT_Value_Temp (9.001), the following steps shall be done: 1. The value has to be noted with a precision of 0,01 EXAMPLE 315 °C is noted as 31500 2. This is divided by 2 until you have a value smaller than 2047. With each division, the Exponent is incremented. This gives the smalled exponent, which is the most accurate coding. EXAMPLE 1968,75 with 4 devisions by 2. 3. The mantissa can only carry the integer part of the value, so 1968,75 becomes 1968. Here of course, truncation errors occur. 4. The integer value of the mantissa is binary encoded. EXAMPLE 1968 becomes 11110110000b 5. The DPT_Value_Temp value is composed as in the given format: M EEEE MMM MMMM MMMM EXAMPLE 0 0100 111 1011 0000 is hexadecimally noted 27B0h. NOTE 1 Of course, an optimisation is possible: due to the truncation, 27B0h is not really 315: it is 314,88. The value 27B1h is more precise: this is 315,04. NOTE 2 An interesting only tool can be found here: http://www.tapko.de/Tools.31.0.html --- Donc pour 46.32°C 46.32*100=4632 4632/2 = 2316 2316/2 = 1158 1158 en bin = 100 1000 0110 Donc 2 divisions par 2 (en bin 10) résultat en bin : 0001 0100 1000 0110 -> en hex 1486 donc je send par eibd : groupwrite ip:192.168.5.5 9/5/3 14 86 et arrive dans ETS : 46.32 ! Parfait, maintenant j'ai un souci avec les °C négatives ... j'imagine que pour -46.32°C il faut mettre le bit de poid fort à 1 donc : 1001 0100 1000 0110 -> en hex 94 86 donc je send par eibd : groupwrite ip:192.168.5.5 9/5/3 94 86 et arrive dans ETS : -35.6 ??????????? Donc si quelqu'un peux m'expliquer ce que j'ai raté, je suis preneur ! Après il faudra que je fasse la formule de manière automatique sous linux, mais ça devrait pas être trop compliqué ! Merci de votre aide ! Roby Conversion de et vers EIS5 - Pascal - 24/07/2010 On 24 juil, 12:16, Roby <goo...@macuba.net> wrote: > j'imagine que pour -46.32°C il faut mettre le bit de poid fort à 1 Non, la mantisse est codée en complément à 2 sur 12 bits. Donc on remplace 1158 par 2^12-1158 = 4096-1158 = 2938 2938 = 101101111010 en binaire = MMMMMMMMMMMM L'exposant est toujours 2 = 0010 en binaire = EEEE On mélange ces deux valeurs selon le format MEEEEMMMMMMMMMMM. On obtient 1001001101111010 en binaire, soit 937a en hexa. Et on confirme que 937a donne -46.32 sur http://www.tapko.de/Tools.31.0.html Pascal Conversion de et vers EIS5 - Roby - 25/07/2010 Ah ok merci beaucoup ! |