Ankündigung

Einklappen
Keine Ankündigung bisher.

Geheimnisse des EibPC: Heute f16

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Geheimnisse des EibPC: Heute f16

    Moin zusammen,

    es geistert hier immer wieder durch die Lande, das der EibPC Bugs bei f16 hat. Das mag vielleicht stimmen. Zuvor hier jedoch einige Überlegungen (deren Tatsachen bzgl. EibPC ggf. durch Enertex bestätigt werden müssen):

    These
    Der EibPC arbeitet intern mit einem f16 der sich exakt so verhält, wie ein "KNX Datapoint Type 9 “2-Octet Float Value”. Das bedeutet, wir haben es mit einer Gleitkommazahldarstellung derart zu tun, das

    MEEEEMMM MMMM MMMM

    E = [0 … 15] der Exponent zur Basis 2
    M = [-2 048 … 2 047] die Mantisse in der Zweierkomplementdarstellung

    Wertebereich ist [-671 088,64 … 670 760,96]

    Die Interpretation ist so zu verstehen, das die Mantisse per se eine Auflösung von 0,01 besitzt.

    Beispiel:
    2.00f16 => 200 dezimal codiert => hex c8 00 = 0000 0000 1100 1000

    oder auch:

    20.47f16 => 2047 dezimal codiert => hex fe 07 = 0000 0111 1111 1111

    wie zu sehen ist, ist jetzt die Mantisse "voll". Will man eine Zahl darstellen, die größer ist, so wird das nur funktionieren, wenn man den Exponent > 0 wählt.

    Es gilt für FloatValue = (0,01*M)*2^E

    Wollen wir beispielsweise ermitteln, welche Codierung sich für unseren Dezimal 85° Fehlerwert bei DS18B20 1Wire Sensoren ergibt so folgt:

    85 / 2^E / 0,01 = M wobei E so zu wählen ist, das M im Bereich -2048 ... 2047 landet.

    Wir wählen E mal mit 3 so ergibt sich
    85 / 8 / 0,01 = 1062,5 gerundet 1063

    zurückgerechnet in die Anzeige im Debugger etc. dann:

    FloatValue = (0,01*1063)*2^3 = 85,04

    Conclusio:
    Für alle Werte mit einer Präzision die 0,01 bei einem Wertebereich -2048..2047 dezimalcodiert überschreiten muß ein anderer Datentyp verwendet werden.

    Folgerung im Speziellen für die Implementation im Enertex EibPC:
    Die Darstellung im Graphenbereich sollte durch f32 abgedeckt werden damit wir unsere schönen Dezimalnullen nicht mit Präzisionsproblemen krumm machen.

    Gruß,
    Bernd


    #2
    Zitat von bmx Beitrag anzeigen
    Zuvor hier jedoch einige Überlegungen (deren Tatsachen bzgl. EibPC ggf. durch Enertex bestätigt werden müssen):
    Wenn Du hier schlüssig sagst, dass wir keinen Bug haben, dann werde ich der letzte sein, der Dir widerspricht, also:
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Wenn sich f16 tatsächlich so darstellt, ist die beobachtete Ungenauigkeit tatsächlich Systembedingt. Dann sollte man diesen Datentyp allerdings meiden bzw. nur falls nötig verwenden.

      Für Michael würde ich da aber ein entsprechendes Kapitel in der Anleitung erwarten
      BR
      Marc

      Kommentar


        #4
        Nein, nicht erledigt! Sorry Michael, aber Thema nervt echt!

        Bernd hat das hervorragend dargestellt! Danke Bernd!

        Aber:

        Von einer so schlauen Kiste wie dem EibPc würde ich erwarten, dass er intren erst mal mit maximaler Genauigkiet rechnet, das hattets Du, Michael, auch irgendwann mal so bestätigt. Damit dürfte es einzig und allein die Ungenauigkiet bei der Darstellung des GA-Wertes bei größer/kleiner 2047/-2048 geben.

        Dem ist aber leider nicht so!

        Wie an anderer Stelle schon diskutiert ergbit 20.0 - 0.1 eben leider nicht 19.9! Und das darf m. E. nicht sein! Diese Ungenauigkeit ist unnötig. Die ist auch nciht dem Datentyp geschuldet. Das geht besser!
        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

        Kommentar


          #5
          Zitat von Uwe! Beitrag anzeigen
          Nein, nicht erledigt! Sorry Michael, aber Thema nervt echt!
          Das mit der internen Umsetzung hatten wir rückgängig gemacht bzw. geändert, weil es sonst inkonsistent wird.

          Und die Darstellung ist so wie sie ist, ggf. an die zuständige Stelle in Brüssel wenden und dort den Frust ablassen.
          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
          Enertex Produkte kaufen

          Kommentar


            #6
            Michael,

            ich bin ja echt ein großer EibPc Fan! Ehrlich.

            Aber mit dem Abschieben an Brüssel machst Du Dir es m. E. zu leicht. Die KNX-Geräte die ich kenne, schaffen es durchaus 20.0 minus 0.1 als 19.9 darzustellen.
            Und noch mal: Das f16 keine beliebeige Genauigkeit liefert, ist klar, aber wie Bernd es perfekt formuliert hat: unterhalb 2047 sollte alles passen! Macht es aber beim EibPc eben nicht!
            ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

            Kommentar


              #7
              Zitat von enertegus Beitrag anzeigen
              Das mit der internen Umsetzung hatten wir rückgängig gemacht bzw. geändert, weil es sonst inkonsistent wird.
              Das verstehe ich jetzt nicht. Was wird wodurch inkonsistent, wenn man intern mit einer höheren Auflösung rechnet, dazu alle Argument in diese höhere Auflösung umsetzt, und erst das Ergebnis wieder in die gewünschte Auflösung umsetzt? Auch viele Taschenrechner arbeiten intern mit einer höheren Auflösung als maximal angezeigt um eben den Anwender nicht mit Rundungsfehlern zu verwirren, damit 2/3*3=2 ergibt und eben nicht 1.9999999.
              Tessi

              Kommentar


                #8
                Zitat von Uwe! Beitrag anzeigen
                Aber mit dem Abschieben an Brüssel machst Du Dir es m. E. zu leicht. Die KNX-Geräte die ich kenne, schaffen es durchaus 20.0 minus 0.1 als 19.9 darzustellen.
                Der EibPC kann das auch:
                [highlight=epc]
                [EibPC]
                u=20.0-0.1
                z=convert(u,$$)
                [/highlight]
                zeigt hier im String z
                % Wert von Objekt 135: 31 39 2e 39 30 00
                (...)
                % Typ: erweiterter Text
                % Wert: 19.90
                wie es richtig ist.
                Man darf sich nicht vom Debugger täuschen lassen, der jede Fließkommazahl als 32 Bit darstellt. Das kommt die Rundung ins Spiel, daher zeigt der Debugger für u
                % Typ: 16-Bit-Fliesskommazahl
                % Wert: 19.900000000000002
                offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                Enertex Produkte kaufen

                Kommentar


                  #9
                  Zitat von enertegus Beitrag anzeigen
                  Das mit der internen Umsetzung hatten wir rückgängig gemacht bzw. geändert, weil es sonst inkonsistent wird.
                  Das kann man ja nicht mit ansehen. Zuerst keine Ahnung von nichts und dann habt ihr das Problem schon gekannt und trotzdem nichts unternommen - am Ende sogar noch verschlimmert?

                  Und die Darstellung ist so wie sie ist, ggf. an die zuständige Stelle in Brüssel wenden und dort den Frust ablassen.
                  Du hast bisher noch nicht einmal bestätigen können, ob die Ausführungen von Bernd auch zutreffend sind. Wenn das also dein Statement hierzu ist, würde ich etwas mehr Verständnis für den Frust erwarten.

                  Das in KNX der Datentyp so definiert ist, hat nicht zu bedeuten, dass hiermit auch jemand rechnen soll.

                  Wenn ihr also einen Datentyp implementiert, der nur zur Ausgabe am KNX-Bus verwendet werden kann, solltet ihr das auch entsprechend dokumentieren.
                  Die aktuelle Verwendung von f16 im eibPC lässt diesen Schluss jedenfalls nicht zu!
                  BR
                  Marc

                  Kommentar


                    #10
                    Hallo Zusammen,

                    ich verstehe die Emotionen in diesem Thema, auch weil ich selbst schon zahlreiche Stunden indirekt in dieses Thema investiert habe.

                    Entweder lieferte mein Code mit f16 nicht die Werte, welche ich erwartet habe oder aber die Werte "versauen" mir die Skalierung von Charts (wegen Werten wie z.B. 19.900000000000002 °C).

                    Beide Themen sind derzeit mit f16 nicht in den Griff zu kriegen. Ich habe dies aufgrund der sehr guten Herleitung von Bernd zum ersten Mal verstehen können.

                    Da Bernds Herleitung auf Annahmen basiert, wäre eine Bestätigung der Richtigkeit durch Enertex der erste logische Schritt für mich.

                    Der zweite logische richtige Schritt wäre die Erweiterung des Handbuchs zu diesem Thema, damit nicht noch zahlreiche andere User unnötig Zeit in die "Fehlersuche" bei f16 investieren.

                    Als letzten Schritt würde ich mir wünschen, dass dieses Thema in Ruhe von Enertex bewertet wird und dann einmal abschließend die Position dazu veröffentlicht wird.

                    Ich finde dies kein Thema, welches zwischen Tür & Angel als erledigt gekennzeichnet werden sollte.

                    Mein Bauchgefühl sagt mir aktuell, entweder sollte f16 im Rahmen der von Bernd aufgezeigten Wertebereiche das korrekte Ergebnis liefern, oder aber alle Funktionen sollten auf f32 umgestellt werden.

                    Es gibt aber sicherlich bei Enertex weit aus bessere Fachleute um dies abschließend bewerten und aufklären zu können.

                    Michael, wäre das eine Vorgehensweise mit der Du einverstanden bist?

                    Viele Grüße

                    Michael

                    Kommentar


                      #11
                      Zitat von Jambala Beitrag anzeigen
                      Entweder lieferte mein Code mit f16 nicht die Werte, welche ich erwartet habe oder aber die Werte "versauen" mir die Skalierung von Charts (wegen Werten wie z.B. 19.900000000000002 °C).
                      Ich habe diese Abweichung ja nur im Debugger des EibStudios gesehen, der den f16 Wert in f32 umwandelt. Ggf. ist das auch das Problem des Webservers, der per se ja auch kein f16 kennt.
                      Da Bernds Herleitung auf Annahmen basiert, wäre eine Bestätigung der Richtigkeit durch Enertex der erste logische Schritt für mich.
                      Ich habe mich mit dieser Thematik nicht beschäftigt, aber ich konnte den Ausführungen Bernds folgen und denke, dass es richtig ist.
                      Ich code auch nicht die Firmware, sondern nur den Compiler. Und dann teste ich das wie oben und sehe, dass 20-0.1 = 19.9 ist, schaut also gut aus.
                      Der zweite logische richtige Schritt wäre die Erweiterung des Handbuchs zu diesem Thema, damit nicht noch zahlreiche andere User unnötig Zeit in die "Fehlersuche" bei f16 investieren.
                      "Bedenken Sie, dass f16 relativ ungenau ist und Ihre Temperatur im Debugger eine Abweichung von 0.000000000000002°C aufweist bzw. in der Grafikskalierung um diesen Wert falsch dargestellt wird"
                      Ich denke, selbst die Ausführungen vom Bernd würde einige überfordern. Dafür ist ja auch das Forum hier da.

                      Und dann ist es natürlich auch Typabhängig: Mir ist das beigefügte Diagramm des Temperaturverlaufs von heute mittag ausreichend genau.

                      Ich will ja Eure Sorgen nicht unter den Tisch kehren, sondern nur verstehen, daher:
                      Als letzten Schritt würde ich mir wünschen, dass dieses Thema in Ruhe von Enertex bewertet wird und dann einmal abschließend die Position dazu veröffentlicht wird.
                      Das werde ich auf die Agenda setzen.
                      Angehängte Dateien
                      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                      Enertex Produkte kaufen

                      Kommentar


                        #12
                        Zitat von saft6luck Beitrag anzeigen
                        Das kann man ja nicht mit ansehen. Zuerst keine Ahnung von nichts
                        YES!



                        und


                        Marc, du bist der Beste!
                        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                        Enertex Produkte kaufen

                        Kommentar


                          #13
                          Zitat von enertegus Beitrag anzeigen
                          [..] "Bedenken Sie, dass f16 relativ ungenau ist und Ihre Temperatur im Debugger eine Abweichung von 0.000000000000002°C aufweist bzw. in der Grafikskalierung um diesen Wert falsch dargestellt wird"
                          Aha, wie viel Stellen nach dem Komma sind falsch? Du sprichst schon von f16? Dir ist klar, dass f32 diesen Fehler erzeugt?

                          Ich denke, selbst die Ausführungen vom Bernd würde einige überfordern. Dafür ist ja auch das Forum hier da.
                          Klar, die anderen sind die Dummies. Immerhin stellt es die KNX-Spec ordentlich dar, für jedermann. Im Handbuch hingegen steht nicht einmal, dass dieser Datentyp im eibPC für f16 verwendet wird.

                          Zitat von enertegus Beitrag anzeigen
                          YES![.. Dr. Schusters Erguss gelöscht ..]
                          Weit über ein Jahr wird im Forum über das Thema f16 diskutiert und keine Lösung in Sicht. Dann kommt Bernd (wohl gemerkt, ein Anwender) auf die Ursache der Ungenauigkeiten und dann *tataaa* der Michael findet das toll und hat es eh schon gekannt und die Firmware macht alles richtig. Daraus folgt: schöne heile Welt? Weil ein Graph schön aussieht? Bravo!

                          Nun speist du die Leute mit "auf die Agenda setzen" oder "vielleicht gibt es hier und da ein Problem" etc. ab? Das Forum ist das Handbuch?

                          Wie wäre es denn mal mit: Jetzt, da wir die Ursache kennen können wir über eine Verbesserung nachdenken?

                          Aber du lässt es ja lieber die anderen besser machen, z.B. einfache Taschenrechner!
                          BR
                          Marc

                          Kommentar


                            #14
                            Hallo Zusammen,

                            laßt hier sachlich bleiben. Sich gegenseitig zu beschimpfen hilft keinem weiter.

                            Zitat von enertegus Beitrag anzeigen
                            Ich habe diese Abweichung ja nur im Debugger des EibStudios gesehen, der den f16 Wert in f32 umwandelt.
                            Der Debugger ist leider das einzige Werkzeug des Programmierers.

                            Bei der Programmierung meines Wärmepumpen-Gateways hat mich der Bug, welcher nur 256 Zeichen der C1400 Variablen anzeigt, mehrere Tage beschäftigt. Ich dachte immer meine RS232 Schnittstellenkommunikation würde abbrechen und ich habe den Code mehrfach zerlegt und neu zusammengebaut. Zur weiteren Überprüfung habe ich mir dann die Variable in meiner Verzweifelung per Email zugesendet. Dort hatte sie auch nur 256 Zeichen, weil auch da ein Bug vorhanden war. Nachdem ich hörte, dass beide Bugs bekannt waren, wäre ich am liebsten Richtung Süden zwecks zwangsweiser Verfütterung meines EibPCs gefahren.

                            Ähnlich verhält es sich hier mit f16. Jeder Anwender sollte zumindest die Chance haben zu wissen, was die Limitationen sind. Dazu reicht auch ein kleiner Hinweis "Achtung f16 wird im Debugger bei der xten Nachkommastelle nicht korrekt angezeigt. Dies basiert auf der Umwandlung von f16 in f32" oder so ähnlich. Das versteht jeder Anwender.

                            Ich kenne einen Anwender die aufgrund dieser Debugger Erfahrungen für jede Variable bei der Programmierung einen Button im Webserver einrichtet. Das kann es doch nicht sein.

                            Aus o.g. Gründen würde ich es auch extremst sinnvoll finden, wenn mindestens hier im Forum eine Liste der bekannten Bugs existieren würde. Idealerweise noch mit Eurer Priorität daneben.

                            Tagelang nach etwas zu suchen, was sich als danach bekannt herausstellt ist eine Erfahrung, welche niemand braucht.

                            Zitat von enertegus Beitrag anzeigen
                            "Bedenken Sie, dass f16 relativ ungenau ist und Ihre Temperatur im Debugger eine Abweichung von 0.000000000000002°C aufweist bzw. in der Grafikskalierung um diesen Wert falsch dargestellt wird"
                            Zu wenig Genauigkeit ist nicht das Problem, sonder zuviel. Ich habe jetzt gerade nur ein Beispiel mit zwei Nachkommastellen hier. Aber Temperaturcharts mit zwei bis x Nachkommastellen, würde kein Mensch absichtlich bauen, es sei den er arbeitet bei einem Prüfinstitut.

                            Ich möchte einfach nur die Temperaturen wie bei jedem haushaltsüblichen Thermometer mit einer Nachkommastelle anzeigen. Auch hier habe ich schon zahlreiche Stunden in alle möglichen Umwandlungen investiert ohne eine Lösung gefunden zu haben.

                            Viele Grüße

                            Michael
                            Angehängte Dateien

                            Kommentar


                              #15
                              Zitat von Jambala Beitrag anzeigen
                              Bei der Programmierung meines Wärmepumpen-Gateways hat mich der Bug, welcher nur 256 Zeichen der C1400 Variablen anzeigt, mehrere Tage beschäftigt.
                              Ist ja schon so, dass ich den Ärger verstehe, und das wollen wir abstellen.
                              wäre ich am liebsten Richtung Süden zwecks zwangsweiser Verfütterung meines EibPCs gefahren.
                              So gut schmecken die ja auch nicht, glaub ich.
                              Ich kenne einen Anwender die aufgrund dieser Debugger Erfahrungen für jede Variable bei der Programmierung einen Button im Webserver einrichtet.
                              Wer?
                              Aus o.g. Gründen würde ich es auch extremst sinnvoll finden, wenn mindestens hier im Forum eine Liste der bekannten Bugs existieren würde. Idealerweise noch mit Eurer Priorität daneben.
                              Das hatten wir schon. Einerseits ist das hier nicht schön zu editieren anderseits geht das Interesse an sowas beim User verloren, wenn's mal so richtig läuft.
                              Ich möchte einfach nur die Temperaturen wie bei jedem haushaltsüblichen Thermometer mit einer Nachkommastelle anzeigen. Auch hier habe ich schon zahlreiche Stunden in alle möglichen Umwandlungen investiert ohne eine Lösung gefunden zu haben.
                              Warum fragst Du dann hier nicht? Zum einen würde es uns die Notwendigkeit vor Augen führen, wenn wir dies noch nicht erkannt haben und zum anderen würde das Problem sich zumindest gelöst haben.

                              Wir haben das Release wohl zu lange aufgeschoben, weil viele und immer wieder neue Features reingekommen sind und Bugs beseitigt wurden, die aufgrund der Features wieder entstanden sind. Das werden wir ändern und bekannte Bugs schneller ausmerzen.

                              Ich hoffe nun beruhigen sich alle wieder. Würden hier alle um die Ecke sein, würde ich einen Kasten Bier auf meiner Terasse bereit stellen und wir könnten das mal ausdiskturien.[Wer Lust hat, melde sich]. Dem ein oder anderen mal so gegenüber zu treten, kann sicher lustig werden.
                              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                              Enertex Produkte kaufen

                              Kommentar

                              Lädt...
                              X