Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit DPT 5.010 vs. 6.010 => signed value - Hilfeeeeee!!!

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

    KNX/EIB Probleme mit DPT 5.010 vs. 6.010 => signed value - Hilfeeeeee!!!

    Hallo zusammen!

    Bin dabei die Kalibrierung des Arcus EDS mit der CV umzusetzen. Leider komme ich hier mit den Kalibrierwerten nicht zu Rande und bin am verzweifeln...

    Arcus erwartet auf dem Kalibrierobjekt einen Wert zB -10 um den PH um -0.1 zu verschieben.
    Lt.dem Buch von Willi Meyer wäre hier DPT 6.010 das richtige, Arcus schreibt im Manual DPT 5.010 signed value, was offensichtlich falsch ist.

    Das kommt vermutlich aus EIS Zeiten: EIS 14 = DPT5 und DPT6

    Ich kann zwar über den Gruppenmonitor mit DPT 6 die richtigen Werte schicken, schicke ich die Werte von der Visu, bekomme ich aber im Gruppenmonitor die falschen Werte angezeigt:

    sende ich als DPT5.010 die 50 => $32 (=dez 50)

    sende ich als DPT6.010 die 50 => $50

    sende ich als DPT5.010 die -50 => $FD

    sende ich als DPT6.010 die -50 => FB 02 56

    Ich wäre ja geneigt zu sagen, für die positiven Werte passt 5.010, aber für -50 passt irgendwie nichts....

    Gibt es einen hex Wert im Bereich 0-FF (255), der -50 entspricht oder was erwartet die GA wirklich?
    Aufgrund der Kompatibilität von EIS14/DPT5.010/6.010 denke ich, dass es auch mit 5.010 gehen müsste, wenn man weiß, wie/wo die -128 - 0 im Zahlenraum 0-255 liegen?

    Danke im Voraus für eure Hilfe!!!
    Robert


    #2
    Versteh dein Problem nicht ganz. Wenn du mit der ETS -50 auf den Bus schreibst, dann sendet die ETS auch -50. die rohdaten dazu sind eigentlich egal. Die Umrechnung bzw. Codierung ist nicht so ganz simpel, gerade nicht bei negativen Zahlen. Aber die ETS macht das richtig.
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    Kommentar


      #3
      Hallo Robert,


      ​was ist das für eine ETS-Version?

      Mit der ETS 5.5.0 gerade probiert:


      sende ich als DPT5.010 die 50 => $32 (=dez 50)

      sende ich als DPT6.010 die 50 => $32 (=dez 50)

      sende ich als DPT5.010 die -50 => Fehlermeldung "Please enter integer between 0 and 255"

      sende ich als DPT6.010 die -50 => $CE (=dez -50 als Zweierkomplement)

      Gruß, Klaus

      Kommentar


        #4
        Danke!!

        Die ETS ist (noch) Ets3f.
        Der Fehler kann auch in der Visu liegen, von der ich die Werte schicke.

        Klaus hat das Stichwort zur Lösung schon gegeben: "Zweierkomplement".
        Code:
         [FONT=sans-serif]knx.org sagt dazu:
        DPT 6.xxx is defined for transmitting values from -[/FONT]
          [FONT=sans-serif]128 up to +127.[/FONT]
          [FONT=sans-serif]Negative numbers are represented as two’s complement. To do so, the binary[/FONT]
          [FONT=sans-serif]representation of the positive number is inverted and 1 is added.[/FONT]
        Somit kann ich DPT 5.010 verwenden und 255 für -1, 206 für -50 etc, schicken. Ich erhalte dann auch $CE im Gruppenmonitor.

        Hab's zwar noch nicht live am Arcus EDS WAQ getestet, sollte aber klappen.

        Danke nochmal
        Robert

        Kommentar


          #5
          Ich hab gerade nachgesehen, die CV hat einen Bug im Handling des DPT 6.010. Ein Pull-Request zum fixen stelle ich gleich
          TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

          Kommentar


            #6
            Hallo,

            ich möchte das Thema gerne aufwärmen :-), ich stehe vor einem ähnlichen Problem.

            Ich möchte einen Zahlenwert (in Loxone Analogwertbaustein) zwischen -1,28 und +1,27 auf einen KNX Aktor senden. Dieser soll dann ein „signed“ Byte (Wertebereich -128 bis +127) an den KNX Bus senden. In der ETS heißt das „pulse count“ und ist ein „byte“ (signed). Die Loxone kann aber keine Signed sondern nur unsigned Byte (DPT5/6 Bitwert). Die Datentyptabelle von Loxone kann also z.B. nur 0 bis 255. Mit einem Offset von 128 könnte man das austricksen, das hat bei mir z.T. schon geklappt, nur schaffe ich es nicht, dass genau -128 Pulse für den Wert -1,28 und +127 Pulse für den Wert 1,27 am KNX ankommen.

            Hat von euch jemand schon mal so ein Problem gehabt? Wie müsste eine Formel aussehen, damit das klappt? Wäre was für Loxone diesen Datentyp hinzuzufügen.

            lg,
            Andreas

            Kommentar


              #7
              Das mit dem Teil wo der Aktor bei eingehenden Wert X einen Wert Y senden soll musst nochmal erklären was das für ein Aktor im KNX sein soll.
              Das ergibt so recht gar keinen Sinn.
              ----------------------------------------------------------------------------------
              "Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten."
              Albert Einstein

              Kommentar


                #8
                Ich möchte den Arcus EDS SK08-WAQ Kalibrieren. Dafür hat dieser zwei Eingänge in der Applikation.

                Einer hat Datentyp DPT 5.010 (Werte von 0 bis 255) und der andere DPT 6.010 (Werte von -128 bis 127). Beides sind zwar 1 Byte, zweiteres aber Vorzeichenbehaftet.

                Ich habe die KNX Aktoren in Loxone mit dem Datentyp 8-Bit Wert parametriert.
                Beim DPT 5.010 muss ich bestimmte positive Werte an den SK08 senden, diese kommen korrekt in der ETS an.
                Beim DPT 6.010 kommt irgendwas an, negative Werte gar nicht, positive Werte irgendwie, das hängt was ich bis dato rausgefunden habe, an der Bit Codierung.

                Ich möchte also um das zu vermeiden, die Werte in Loxone auf "signed byte" umrechnen.
                Als Beispiel:
                0 in Loxone kommt in ETS als 0 an.
                1 in Loxone kommt in ETS als 127 an.
                2 in Loxone kommt in ETS als -2 an.
                3 in Loxone kommt in ETS als 126 an.
                4 in Loxone kommt in ETS als -3 an.
                127 in Loxone kommt in ETS als 64 an.
                usw....
                negative Werte in Loxone kommen immer als 0 in ETS an.

                Grundsätzlich verstehe ich auf der binären Ebene was da abgeht :-), aber ich weis nicht wie ich das hinbekomme, dass mir das Loxone vorher umrechnet.
                Fragt sich ob man das in PicoC nicht mittels Programm umbiegen kann.

                lg,
                Andreas

                Kommentar


                  #9
                  Gehört ja eigentlich ins Loxone Forum.

                  Mit dem Korrektur Faktor geht es nicht?


                  image.png



                  Wenn das was bei Loxone Ausgang raus geht, nicht Korrekt auf der KNX Seite Ankommt, dann bringt das ganze Rechnen nichts. Dann kann Loxone einfach kein DPT 6 verarbeiten.

                  Kommentar


                    #10
                    Hi, nein, Loxone gibt DPT6 nicht als signed byte weiter, daher müsste ich einen PicoC code vorschalten, der mir die Umrechnung übernimmt. Leider kann ich aber kein C :-(

                    Kommentar


                      #11
                      Du kannst ja auch selber das Zweierkomplement bilden, es als DPT 5 losschicken und als DPT6 empfangen.

                      Also: -4
                      wird zu (Not 4) + 1
                      wird zu 0b11111011 + 1
                      wird zu 0b11111100 = 0xFC = 252

                      Wenn Du also 252 als DPT5 versendest und das empfangs-KO ein DPT6 erwartet, wird es -4 empfangen.

                      Gruß, Waldemar
                      OpenKNX www.openknx.de

                      Kommentar


                        #12
                        Hallo Waldemar,

                        vielen herzlichen Dank. Noch ein kleines Detail, es muss in Loxone DPT5/6 8-bit gewählt sein, also EIS14, sonst klappt das nicht.
                        Ich kann den SK08-WAQ Sensor jetzt gemütlich über die Loxone kalibrieren .

                        Für Korrektur in negative Richtung positive Werte: Virtueller Eingang Text für den Korrekturwert der Sensorkalibrierung --> Formel 1:1 durch --> Analogspeicher --> KNX Aktor (EIS14)
                        Für Korrektur in positive Richtung negative Werte: Virtueller Eingang Text für den Korrekturwert der Sensorkalibrierung --> Formel 255+I1+1 (da als Minus wert eingegeben) --> Analogspeicher --> KNX Aktor (EIS14)​
                        Damit die Analogspeicher die Änderungen durchschalten habe ich für die Bausteine jeweils einen Taster gewählt.

                        Anderer Weg ist mir keiner eingefallen...

                        lg,
                        Andreas

                        Kommentar

                        Lädt...
                        X