Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenformat Temperatur bei MDT Sensor

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

    Datenformat Temperatur bei MDT Sensor

    Hallo liebe KNX Gemeinde,

    ich habe ein Problem bei der Temperaturmessung mit einem MDT Temperatursensor (Artikel-Nr.: SCN-RT1UP.01). Dieser soll lediglich die Ist-Temperatur in einem Raum messen und den Messwert zyklisch auf den Bus senden. Über eine Schnittstelle zum Modbus wird dann die Temperatur in dem Raum geregelt. Bei der Übertragung gibt es jedoch ein Problem mit dem Messergebnis:
    Das Kommunikationsobjekt "Temperaturmesswert" sendet den Messert. Der Wert ist momentan als 2-Byte Gleitkommawert eingestellt. Als ich mit dem Gruppenmonitor die Telegramme auf dem Bus mitverfolgte, konnte ich eine Abweichung bei den Messwerten feststellen. Beispielsweise wird ein Temperaturwert von 0CBA gesendet. Im Fenster "Eigenschaften" in ETS4 wird dann als Dezimalwert 24,2°C angegeben. Rechnet man diese Hexadezimalzahl um erhält man jedoch als Ergebnis 3258. Der Faktor 100 stört weiter nicht, da er später bei der Temperaturregelung mitberücksichtigt werden kann. Es ergibt sich dann jedoch eine Temperatur von 32,58°C und dies ist offensichtlich nicht korrekt.

    Hatte jemand schon eine ähnliches Problem und kann mir mit diesem Problem weiterhelfen? Ich bin um jeden Vorschlag dankbar.

    Freundlich grüßt SUSDominik

    #2
    Mon,
    schon mal die Temperatur, mit einem Thermometer im Raum nachgemessen
    .... und Tschüs Thomas

    Kommentar


      #3
      Ich denke mal, dass die ETS die richtige Umrechnung und Definition kennt Einfach mathematisch umrechnen geht nicht. Du musst dich mit den Definitionen der DPT auseinandersetzten, und da spielt die Untrgruppe eine entscheidende Funktion bei der Dekodierung.
      Viel Erfolg Florian
      Ach so, willkommen im Forum

      Kommentar


        #4
        Zitat von SuSDominik Beitrag anzeigen
        Beispielsweise wird ein Temperaturwert von 0CBA gesendet. Im Fenster "Eigenschaften" in ETS4 wird dann als Dezimalwert 24,2°C angegeben. Rechnet man diese Hexadezimalzahl um erhält man jedoch als Ergebnis 3258. Der Faktor 100 stört weiter nicht, da er später bei der Temperaturregelung mitberücksichtigt werden kann. Es ergibt sich dann jedoch eine Temperatur von 32,58°C und dies ist offensichtlich nicht korrekt.
        Der Sensor ist ok und sendet richtig, nur deine Umrechung ist falsch. Was möchtest du denn eigentlich machen, daß du den Hexwert selbst auswertest? Kann das Modbus-Interface die DPT nicht interpretieren und umrechnen?



        dpt_temp.PNG
        Zuletzt geändert von Gast1961; 04.07.2018, 08:52.

        Kommentar


          #5
          Zitat von 6ast Beitrag anzeigen

          Der Sensor ist ok und sendet richtig, nur deine Umrechung ist falsch. Was möchtest du denn eigentlich machen, daß du den Hexwert selbst auswertest?



          dpt_temp.PNG
          Hallo 6ast,

          da ich in dem Projekt vom SuSDominik involviert bin, kann ich dir auch Auskunft geben.
          Der Temperaturmesswert wird ja als Hexwert auf den Bus gesendet. Dieser Wert gelangt über eine Schnittstelle an eine SPS-Steuerung, die die Raumtemperatur regeln soll. Um die Temperatur richtig regeln zu können, muss der Messwert als Dezimalwert vorliegen. Es muss also eine Umrechnung von Hex nach Dez erfolgen.
          An der Funktion des Sensors habe ich keine Zweifel. Die gemessenen Werte stimmen mit den wahren Temperaturen überein. Es kann also nur an der Umrechnung liegen!?

          Gruß SuSFabian

          Kommentar


            #6
            Klar liegt das an der fehlenden Umrechnung eines 2byte Gleitkommawertes, in eine Dezimalzahl, das musst du schon irgendwo vorher machen wenn die Steuerung nur Dezimalzahlen kann..
            Aber in der DPT Beschreibung steht ja wie man vom Gleitkommawert auf seine Zahl kommt...

            Kommentar


              #7
              Zitat von SuSFabian Beitrag anzeigen
              Die gemessenen Werte stimmen mit den wahren Temperaturen überein. Es kann also nur an der Umrechnung liegen!?
              Ja. Eine einfache Umrechung 0CBA -> 3258 dezimal würde für Integer funktionieren, aber hier haben wir eine Fließkommazahl mit Mantisse und Exponent und Vorzeichen.

              Im Handbuch zum KNX Aufbaukurs (5€ als Kindle ebook) gibt es neben der Tabelle auch ein Beispiel zur Umrechnung. Auf die Schnelle habe ich's damit für deinen Wert nicht hinbekommen, aber als Startpunkt sollte es helfen.

              Kommentar


                #8
                Noch ein Versuch:

                0CBA = 0000 1100 1011 1010 binär

                Vorzeichen 0 => positive Zahl
                Exponent 0001 = 1
                Mantisse 100 1011 1010 = 1210 dezimal

                1210 * 2^1 = 2420
                geteilt durch 100 wegen 0.01°C Auflösung => 24.2 °C

                Kommentar


                  #9
                  Erstmal vielen Dank für die zahlreichen Antworten.
                  Ich habe mal in der System Specification nachgelesen. Dort ist für den DPT 9.001 angegeben welche Bits zur Mantisse und welche zum Exponenten gehören (Anhang). Im meinem Beispiel ist der Hexwert: 0CC4 . Daraus ergibt sich binär: 0000.1100.1100.0100 und für den Exponenten: 0001 (Binär), also 1 dezimal. für die Mantisse ergibt sich ein Dezwert von 1220. Mit value = (0,01*M)*2^E kommt man auf den Wert von 24,4°C.
                  Kann man diese Rechnung nicht vereinfachen, indem man den Wert Kommunikationsobjektes ändert? Hat da jemand Vorschläge?

                  Gruß SuSFabian
                  Angehängte Dateien

                  Kommentar


                    #10
                    Zitat von SuSFabian Beitrag anzeigen
                    Kann man diese Rechnung nicht vereinfachen, indem man den Wert Kommunikationsobjektes ändert? Hat da jemand Vorschläge?
                    Der Datentyp ist in diesem Fall fest vorgegeben vom Gerät. Du musst DPT9 auswerten.

                    edit: oder je nach Wertebereich mit separatem KNX Logikmodul selbst umsetzen, z.B. Integerwert = Floatwert * 100
                    Faktor 100 um die Auflösung von 0,01°C zu erhalten
                    Zuletzt geändert von Gast1961; 04.07.2018, 11:41.

                    Kommentar


                      #11
                      Danke für die zahlreichen Antworte.
                      Problem gelöst

                      Kommentar


                        #12
                        Und wie?
                        ----------------------------------------------------------------------------------
                        "Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten."
                        Albert Einstein

                        Kommentar


                          #13
                          Zitat von gbglace Beitrag anzeigen
                          Und wie?
                          Vermutlich Datentyp im Modbus-Gateway richtig eingestellt auf DPT9

                          Kommentar


                            #14
                            Wahrscheinlich, hab mich beim Lesen schon gewundert warum das nicht klappen sollte, weil klang alles nicht danach, dass das nen Bastelwastel-Gateway ist.
                            ----------------------------------------------------------------------------------
                            "Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten."
                            Albert Einstein

                            Kommentar


                              #15
                              Das Problem lag an der richtigen Interpretation der einzelnen Bits. Die Umrechnung ist schon in einer Antwort weiter oben beschrieben. Die Telegramme werden von den KNX-Sensoren direkt über die Schnittstelle zum Modbus weitergeleitet. An der Schnittstelle kann man keinen Datentyp einstellen. Die Umrechnung der Telegrammwerte in eine Temperatur kann seitens der Modbus-Anlage vollzogen werden.

                              Gruß SuSFabian

                              Kommentar

                              Lädt...
                              X