# ISO 15765-2

ISO 15765-2, comúnmente conocido como ISO-TP, es una norma internacional que define un protocolo de transporte sobre bus de comunicaciones CAN, empleado en automoción. El propósito del protocolo es permitir el transporte de mensajes con una longitud superior a los 8 bytes de información útil que permite una trama CAN normal.
En el modelo OSI, ISO-TP corresponde a las capas 3 (red) y 4 (transporte), mientras que el protocolo CAN engloba las capas 1 (física) y 2 (enlace). ISO-TP segmenta los mensajes largos en varias tramas CAN, completándolas con información que permite su interpretación por parte del receptor. Así, el tamaño máximo de datos útiles (payload) que ofrece es de 4095 bytes por TPDU ("tramas ISO-TP").
La aplicación típica de ISO-TP, que no la única, es la transmisión de mensajes de diagnóstico KWP2000 y UDS.

## Direccionamiento

ISO-TP puede funcionar, bien con un mecanismo de direccionamiento adicional propio conocido como “direccionamiento extendido”, bien utilizando sólo el identificador CAN (“direccionamiento normal”).
Cuando se usa direccionamiento extendido, el primer byte del campo de datos de la trama ISO-TP se utiliza para guardar la información de direccionamiento extra. Por tanto, en el modo de direccionamiento normal, las tramas tienen un byte adicional para información útil. El direccionamiento extendido puede resultar útil, por ejemplo, cuando no todas las centralitas de un bus tienen su identificador CAN propio.
Además del byte de direccionamiento extendido (si lo hay), cuando se usa ISO-TP, en cada trama CAN existe un campo de información de control de protocolo (PCI), de 1, 2 o 3 bytes, que reduce el payload. En este byte se introducen el tipo de trama ISO-TP, así como contadores y otras variables específicas del protocolo.

## Tipos de PDU

La norma ISO 15765-2 define cuatro tipos de unidades de datos de protocolo:
* Single frame (SF): el paquete de datos tiene hasta 6 o 7 bytes (direccionamiento normal) útiles y no precisa ser segmentado.
* First frame (FF): es la primera trama de un paquete de datos que, al tener más de 6 (o 7 con direccionamiento normal) bytes de datos, se ha segmentado. Una first frame especifica la longitud total del paquete.
* Consecutive frame (CF): resto de tramas de un paquete de datos segmentado.
* Flow control frame (FC): respuesta enviada por el receptor para acordar la modalidad de transferencia de las próximas ‘’consecutive frames’’.

## Flujo de transmisión

La transmisión segmentada la comienza el emisor con una first frame, tras lo que el receptor contesta con una flow control frame (FC) de confirmación. En esta FC, el receptor especifica cuántas consecutive frames seguidas puede recibir (“block size”) y con qué separación temporal (0-127 ms) deben ser emitidas. El receptor manda secuencialmente consecutive frames hasta que todos los datos útiles del bloque han sido transferidos. Algunas centralitas modernas aceptan un block size igual a cero, esto es, permiten mandar tantas CF consecutivas como quiera el emisor. Cada CF contiene un contador de 4 bits que se incrementa con cada trama enviada (1, 2, …, 15, 0, 1, …), lo que permite identificar las tramas que se pierden
El límite de carga útil impuesto por ISO-TP es 4095 bytes, si bien en la práctica los mensajes segmentados son notablemente más pequeños, ya que los ‘’buffers’’ de entrada de las centralitas conectadas al bus suelen ser más pequeños.

## Bibliografía

* Zimmermann, Werner; Schmidgall, Ralf (2010). Bussysteme in der Fahrzeugtechnik – Protokolle, Standards und Softwarearchitektur (4ª edición). Vieweg+Teubner. ISBN 978-3-8348-0907-0.
* Datos: Q616778