Ankündigung

Einklappen
Keine Ankündigung bisher.

Was genau ist die APDU bzw. die APDU Länge!

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

    KNX/EIB Was genau ist die APDU bzw. die APDU Länge!


    Ich stelle mir immer noch die Frage, was genau die APDU bzw. die APDU-Länge ist. Der Aufbau eines Standardframes bzw. eines Extendedframes ist mir soweit klar. Es geht mir nur um die Begrifflichkeit. Hintergrund ist, dass ich das Gefühl habe, je mehr ich darüber nachlese, desto ungenauer wird die Bedeutung.

    Mal gehört die ACPI/TCPI dazu, manchmal wieder nicht. Manchmal die Prüfsumme, manchmal wieder nicht.

    Hier im Forum steht immer wieder, die maximale APDU-Länge beim Standardframe sei 15. Somit kann APCI/TCPI (2 Bytes) nicht Teil der Länge sein, weil DPT16 ja schon 14 Bytes hat. Daher hätte ich vermutet, dass es nur die Nutzdaten (14) plus die Prüfsumme (+1) sind. Also im Endeffekt das, was auch im Telegramm steht. Das Längenfeld geht auch nur bis maximal 15.

    Stimmt das nun oder übersehe ich etwas? Was mich wundert, ist, dass Enertex für seinen Router eine APDU von max. 248 angibt. Ich kann aber 253 Bytes als Nutzlast senden. Somit wäre die APDU-Länge meiner Meinung nach 254 (also mit Prüfsumme).
    OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

    #2
    Die Prüfsumme zählt nicht dazu, die gehört ja zur Linklayer.
    Was die Sache unübersichtlich macht ist dass die APCI meist nur in die oberen zwei Bits eines Bytes hineinragt und die restlichen 6 Bit damit schon zur APDU zählen können.Bei der Berechnung der max APDU-Länge zählt dieses angebrochene Byte daher mit.

    Kommentar


      #3
      Aber dann ist die berechnung Nutzlast +1 richtig aber nicht wegen Prüfsumme und ja bool wird direkt vorne mitgesendet. Aber danke für die Klarstellung.
      OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

      Kommentar


        #4
        Aber dann passt die Angabe von enertex mit 248 apdu nicht. Immerhin bekomme ich das komplette Maximum durch den Router. Ohne wird die apdu reduziert durch die Nutzung von Tunnel. Bei VPN reduziert sich zB die MTU ja auch.
        OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

        Kommentar


          #5
          Vielleicht gibt Enertex ja nur einen Wert an, von dem die sicher sind, das er immer klappt. Oder sie wissen es nicht besser, weil sie nicht im Forum nachgefragt haben und somit nicht von Klaus Gütter eine qualifizierte Antwort bekommen haben .

          Aber was ich nicht verstehe: Warum zählt man ein angebrochenes Byte zur Länge, wenn das sowieso nicht die volle Information von 8 Bit aufnehmen kann?

          Gruss, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            #6
            Ja find ich auch nicht sinnvoll. Hätte einfach die api/tcpi (2bytes) dazu gerechnet dann wäre es klar und ummissvrrstäbdlich. Aber ich bin ja froh das wir hier einen Experten haben der zumindest aufklärt. Dafür nochmal danke.
            OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

            Kommentar


              #7
              Das hat denke ich historische Gründe.
              Schau mal in die 3/3/7
              Anfangs hatte die APCI nur 4 (oder 6?) bits und wurde dann immer mehr verlängert.

              Sobald das Byte <64 ist passt es noch rein und "spart" somit 1 Byte in der Übertragung.
              Ist aber damit trotzdem ein Byte mit Daten drin.
              (reicht für Szenen, schalten, etc)
              Aber nicht bei allen APCI ist überhaupt Platz für diese Nutzdaten.

              Das hat mir bei meine knx lib auch viel Kopfschmerzen bereitet...
              OpenKNX www.openknx.de | Kaenx-Creator | Dali-GW

              Kommentar


                #8
                Ja der Inhalt war mir klar. Ist ja bei Boolean auch so. Aber die Zählweise ist gewöhnungsbedürftig
                OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

                Kommentar


                  #9
                  Beim Router muss evtl. man noch unterscheiden zwischen der max Länge, die geroutet werden kann und der max Länge die das eigene Management des Routers akzeptiert. Und im Prinzip könnte es für Tunneling noch einen dritten Wert geben.
                  Zuletzt geändert von Klaus Gütter; 04.08.2024, 16:01.

                  Kommentar


                    #10
                    Also zum Hintergrund ich baue gerade eine max APDU Erkennung indem ich verschieden große Telegramme per FuncProperty verschicke. Für mich bedeutet das dann, ich nehmen die ermittelte maximale Nutzlast aus der FuncProp + 2 Bytes (für ObjectIndex und PropertyId) + 1 für die 6bit. Damit komme ich dann bei Standardframe auf 15 Bytes (was ja immer gehen müsste) bis zu maximal 254 Bytes.

                    Ich wollte nur sicher gehen das die Beschriftung und das +3 was ich rechne zusammen passt.
                    OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

                    Kommentar


                      #11
                      Warum liest du nicht einfach PID_MAX_APDULENGTH aus?

                      Kommentar


                        #12
                        Wie komme ich den an den Wert per JavaScript. Und der klappt auch immer? Ich brauche den Wert um später FuncProps aufzurufen. Aktuell verwirft die ets die Aufrufe wenn sie nicht ins Telegramm passt und das ohne Fehlermeldung.
                        OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

                        Kommentar


                          #13
                          Javascript? Bist du in einem Eventhändler im ETS-Applikationsprogramm?

                          Kommentar


                            #14
                            Genau. Ich mach also Button gesteuerte online Zugriffe und die werden je nach Max apdu verworfen. Wenn ich den Wert abrufen kann werde das natürlich besser. Wobei ich mir immer noch die Frage stelle wie die ets ans Max apdu kommt.
                            OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

                            Kommentar


                              #15
                              Bei der ETS kann man das bei der Kommunikation sehen. Die kennt ja den Weg zum Gerät und fragt schön brav alle Geräte nach ihrer MaxAPDU und nimmt dann das Minimum. Erst dann fängt sie das Proggen an.

                              Und ich meine auch, dass ich im ETS.log gesehen habe, dass direkt vor dem Aufruf vom Eventhandler von Javascript auch die MaxAPDU bekannt ist, ich hab aber keine Ahnung, wie ich da aus JavaScript dran komme.

                              Gruß, Waldemar


                              OpenKNX www.openknx.de

                              Kommentar

                              Lädt...
                              X