Ankündigung

Einklappen
Keine Ankündigung bisher.

cEMI Frame, was mache ich hier falsch?

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

    cEMI Frame, was mache ich hier falsch?

    Vielleicht kann mir mal jemand helfen. Aber anscheinend mache ich einen Fehler.

    Ich will via KNXnet/IP ein UDP Telegramm via Multicast an ein IP Gateway schicken. Dazu habe ich folgende Struktur aufgebaut.

    Code:
        
        /* Header (6 Bytes) */
        sendbuf[0] = 0x06;      /* 06 - Header Length */
        sendbuf[1] = 0x10;      /* 10 - KNXnet version (1.0) */
        sendbuf[2] = 0x04;      /* 04 - hi-byte Service type descriptor (TUNNELLING_REQUEST) */
        sendbuf[3] = 0x20;      /* 20 - lo-byte Service type descriptor (TUNNELLING_REQUEST) */
        sendbuf[4] = 0x00;      /* 00 - hi-byte total length */
        sendbuf[5] = 0x16;      /* 16 - lo-byte total lengt 22 Bytes */
        
        /* ConnectionHeader (4 Bytes) */
        sendbuf[6] = 0x04;      /* 04 - Structure length */
        sendbuf[7] = 0x02;      /* 02 - Comms Channel */
        sendbuf[8] = 0x00;      /* 00 - Sequence number (Requests werden durchnumeriert (0,1,...,255,0,1,...) */
        sendbuf[9] = 0x00;      /* 00 - Reserved */
        
        /* cEMI-Frame (12 Bytes) */
        sendbuf[10] = 0x11;                     /* message code, 11: Data Service transmitting */
        sendbuf[11] = 0x00;                     /* add. info length (0 bytes) - OK */
        sendbuf[12] = 0x8C;                     /* control byte - OK */
        sendbuf[13] = 0xE0;                     /* DRL byte - OK */
        sendbuf[14] = 0x00;                     /* hi-byte source individual address - OK */
        sendbuf[15] = 0x00;                     /* lo-byte source (replace throw IP-Gateway) - OK */
        sendbuf[16] = (address >> 8)  & 0xff;   /* hi-byte destination address (20: group address) 4/0/0: (4*2048) + (0*256) + (0*1) = 8192 = 20 00 - OK */
        sendbuf[17] = address & 0xff;           /* lo-Byte destination - OK */
        sendbuf[18] = 0x02;                     /* 2 data bytes following, excluding APDU TPCI byte */
        sendbuf[19] = 0x00;                     /* APDU TPCI */
        sendbuf[20] = (power >> 8)  & 0xff;     /* hi-byte data */
        sendbuf[21] = power & 0xff;             /* lo-Byte data */
    Im cEMI Frame habe ich die Destination high & lowbytes gesetzt und als Daten will "power" senden. Das sind z.B. 1380 in Hex, also 05 46.

    Das wird auch sauber versandt, aber wenn ich mit Wireshark und dem KNXnet/IP Plugin die Pakete sniffe, erkennt er Header und ConnectionHeader, aber beim cEMI Frame stürzt das Plugin ab. Mach ich etwas verkehrt oder ist das Plugin im Eimer?

    bis zu den Bytes 17 ist eigentlich alles logisch, danach wird es eng und ich verstehe es noch nicht so richtig. Wer kann mich hier unterstützen?
Lädt...
X