Telegrama KNX

KNX (2)

En la pasada entrada sobre KNX hice un esbozo sobre la arquitectura de estos sistemas domóticos. Comenté que el direccionamiento de cada equipo se hace mediante dos bytes, que recogían el área en que se encuentra (bus principal), el bus secundario y finalmente su dirección dentro de éste. Hoy voy a profundizar en la comunicación; me vais a permitir hacerlo de forma sintética, bottom up. Así, un telegrama serie típico podría ser el siguiente, que da orden de activar un elemento (una bombilla, por ejemplo):
10111100 00000000 00000001 00000000 00000010 00010001 000000 0010000001 00111111
Vamos a analizar su significado:

  • Primer byte (10111100), de control. Formado por los siguientes bits:
    • 10 – Obligatorios, salvo para ciertos telegramas breves de reconocimiento que en su momento comentaremos.
    • 1 – Indica que no es un telegrama repetido; esto es, es la primera vez que se envía.
    • 1 – También obligatorio.
    • 11 – El mensaje es de tipo normal (no se trata de una alarma ni un mensaje de sistema) y tiene prioridad baja.
    • 00 – Bits obligatorios.
  • Bytes dos y tres (00000000 00000001), dirección del remitente, de acuerdo a lo que se comentó en la entrada previa, en la que hablamos de la arquitectura de KNX.
  • Bytes cuatro y cinco (00000000 00000010), dirección del destinatario, de acuerdo al mismo critero.
  • Sexto byte (00010001), aquí comienza la información de la capa de transporte, que alcanza hasta el checksum. A esta parte se denomina N_PDU (de Protocol Data Unit; la N se refiere a Network).
    • 0 – El receptor es individual, en oposición a los mensajes de grupo.
    • 000 – Contador de enrutamiento. Puesto que vale cero, este mensaje no será enrutado por ningún acoplador de línea, así que no pasará a otro bus.
    • 0001 – Este telegrama va a contener un dato; concretamente, será el estado del actuador. Se hace notar que se cuentan datos, y no bits o bytes, a diferencia de otros protocolos.
  • Siguiente palabra (000000 0010000001): resto del N_PDU, denominado T_PDU, porque contiene información para la capa de transporte:
    • 0 – Se trata de un paquete de datos; la alternativa sería un paquete de control.
    • 0 – Dicho paquete no está numerado; es decir, contiene toda la información que se quiere transmitir. A los paquetes de datos no numerados se los llama UDP (Unnumbered Data Package).
    • 0000 – Número de secuencia. Puesto que el paquete no es numerado, este valor no tiene significado, y queda a cero.
    • El resto de la palabra (0010000001), denominado A_PDU, incluye la información para la capa de aplicación:
      • 0010 – Comando, en este caso escritura de un grupo de objetos.
      • 000001 – Valores que se escriben. Puesto que se ha indicado que sólo enviamos un dato, el único que tiene sentido es el último bit, y los ceros son de relleno. El uno indica que estamos activando el actuador.
  • El último byte es el dígito de control o checksum. En KNX se obtiene haciendo un OR de todos los bytes previos.

La siguiente figura muestra los elementos que hemos comentado.

Telegrama KNX
Telegrama KNX

Hasta aquí el ejemplo. Partiendo del mismo vamos a profundizar en la comunicación.
He dicho que éste era un telegrama típico, y que el primer byte tenía algunos bits fijos. En realidad KNX también contempla mensajes de un solo byte como respuesta. Concretamente son 0xCC (reconomiento positivo), 0x0C (reconocimiento negativo) y 0xC0 (destinatario ocupado). En los dos últimos casos, o si no se ha recibido respuesta, la transmisión debe repetirse (hasta tres veces). Se marca entonces el sexto bit de la trama, que indica dicha repetición. Cuando se ha enviado un mensaje de grupo, todos los destinatarios deben responder simultáneamente. Aquí se hace notar un detalle: el cero se transmite en KNX sobre TP1 energizando la línea (una oscilación de ±5V). Así, si varios equipos responden a un mensaje de grupo, un reconocimiento no positivo sobreescribe los positivos, lo que obliga a la retransmisión. También hay que anotar que tanto la transmisión de mensajes como de respuestas comienza siempre por los bits 00, los menos significativos, un preámbulo difícil de confundir con parásitos.
Volviendo al mensaje tipo, comenté que el tercer y cuarto bit indican la prioridad de éste. Las cuatro posibilidades son las siguientes, de mayor a menor prioridad: funciones de sistema (0x00), alarmas (0x10), normales con prioridad alta (0x01) y baja (0x11). Nuevamente, en caso de colisión prevalece el de mayor prioridad.
El sexto byte es el que inicia el N_DPU. Su bit más significativo nos indica si un mensaje es individual o de grupo. En este segundo caso, el mensaje no apunta a una dirección física, sino a una dirección de grupo, que permite una vía alternativa de relacionar los dispositivos. Cada elemento puede tener una o varias direcciones de este tipo, que además puede ser compartida. Aunque formalmente una dirección de grupo apenas se diferencia de una individual, aporta mayor versatilidad a las comunicaciones. Por ejemplo, permite que un varios interruptores gobiernen varias luminarias con una única instrucción de conmutación. Una dirección de grupo está compuesta por 15 bits (no incluye el más significativo), y se puede subdividir en grupo principal y subgrupo, o bien en principal, medio y subgrupo:
Dirección de grupo
El uso de direcciones de grupo afecta entre otras cosas a los enrutadores o acopladores de línea, que deben de mantener una tabla de filtrado para determinar qué telegramas deben retransmitir. El funcionamiento de estos dispositivos es diferente en cambio cuando trabajan con direcciones individuales. En dicho caso, la gestión es muy sencilla (máxime teniendo en cuenta que KNX no permite lazos en su instalación física), y tan sólo tienen que tener en cuenta el contador de enrutamiento incluido en el telegrama. El funcionamiento de este número es como sigue: a cada dispositivo se le asocia un valor que va a dar cuenta del alcance de sus mensajes. Cuando vale 0, sus telegramas no van a ser retransmitidos por ningún acoplador, y se quedarán en su propio bus. Si vale 7, serán siempre retransmitidos; esta posibilidad se restringe al software de programación (ETS, Engineering Tool Software). Los valores intermedios dan cuenta del número de enrutadores que los mensajes pueden saltar. Esto es así, porque cuando un acoplador lo retransmite, reduce su valor en una unidad.
Esta entrada continúa en KNX (3).

Facebooktwitterlinkedin