This article needs additional citations for verification. (June 2019) |
ISO 15765-2 [ 1] или ISO-TP (транспортный уровень) — международный стандарт для отправки пакетов данных по шине CAN . Протокол позволяет передавать сообщения, превышающие максимальную полезную нагрузку фреймов CAN в восемь байт . ISO-TP сегментирует более длинные сообщения на несколько фреймов, добавляя метаданные (заголовок CAN-TP), которые позволяют получателю интерпретировать отдельные фреймы и повторно собирать их в полный пакет сообщений. Он может переносить до 2 32 -1 (4294967295) байт полезной нагрузки на пакет сообщения, начиная с версии 2016 года. Предыдущие версии были ограничены максимальным размером полезной нагрузки в 4095 байт.
В модели OSI ISO-TP охватывает уровень 3 (сетевой уровень) и уровень 4 (транспортный уровень).
Наиболее распространенным применением ISO-TP является передача диагностических сообщений в транспортных средствах, оборудованных OBD-2 , с использованием KWP2000 и UDS , но он широко используется и в других реализациях CAN, ориентированных на конкретные приложения, где может потребоваться отправлять сообщения, длина которых превышает допустимую физическим уровнем протокола CAN (8 байт для CAN, 64 байта для CAN-FD и 2048 байт для CAN-XL).
ISO-TP может работать с собственной адресацией как так называемая расширенная адресация или без адреса, используя только CAN ID (так называемая обычная адресация ). Расширенная адресация использует первый байт данных каждого кадра как дополнительный элемент адреса, уменьшая полезную нагрузку приложения на один байт. Для ясности описание протокола ниже основано на обычной адресации с восьмибайтовыми кадрами CAN. Всего протоколом ISO 15765-2 допускается шесть типов адресации.
ISO-TP добавляет один или несколько байтов метаданных к данным полезной нагрузки в восьмибайтовом кадре CAN, сокращая полезную нагрузку до семи или менее байтов на кадр. Метаданные называются Protocol Control Information (информация управления протоколом) или PCI. PCI составляет один, два или три байта. Начальное поле — четыре бита, указывающие тип кадра и неявно описывающие длину PCI.
ISO 15765-2 является частью ISO 15765 (под заголовком « Транспорт дорожный — Диагностическая связь по сети контроллеров (DoCAN)» ), который состоит из следующих частей:
ISO-TP определяет четыре типа кадров:
Тип | Код | Описание |
---|---|---|
Одиночный кадр (SF) | 0 | Один переданный кадр содержит полную полезную нагрузку объемом до 7 байт (обычная адресация) или 6 байт (расширенная адресация). |
Первый кадр (FF) | 1 | Первый кадр более длинного многокадрового пакета сообщений, используемый, когда необходимо передать более 6/7 байт сегментированных данных. Первый кадр содержит длину полного пакета вместе с начальными данными. |
Последовательный кадр (CF) | 2 | Кадр, содержащий последующие данные для многокадрового пакета |
Рамка управления потоком (FC) | 3 | ответ от приемника, подтверждающий сегмент первого кадра. Он устанавливает параметры для передачи последующих кадров. |
Смещение бита | 7 .. 4 (байт 0) | 3 .. 0 (байт 0) | 15 .. 8 (байт 1) | 23..16 (байт 2) | .... |
---|---|---|---|---|---|
Одинокий | 0 | размер (0..7) | Данные А | Данные Б | Данные С |
Первый | 1 | размер (8..4095) | Данные А | Данные Б | |
Последовательный | 2 | индекс (0..15) | Данные А | Данные Б | Данные С |
Поток | 3 | Флаг ФК (0,1,2) | Размер блока | СТ |
Сообщение длиной семь байт или меньше отправляется в одном кадре, причем начальный байт содержит тип (0) и длину полезной нагрузки (1-7 байт). С 0 в поле типа это также может сойти за более простой протокол с форматом данных длины и часто неправильно интерпретируется как таковой.
Сообщение длиннее 7 байт требует сегментации пакета сообщения на несколько кадров. Сегментированная передача начинается с первого кадра. В этом случае PCI составляет два байта, причем первое 4-битное поле — тип (тип 1), а следующие 12 бит — длина сообщения (исключая байты типа и длины). Получатель подтверждает передачу с помощью кадра управления потоком. Кадр управления потоком имеет три байта PCI, определяющих интервал между последующими кадрами и количество последовательных кадров, которые могут быть отправлены ( размер блока ).
Для CAN FD протокол ISO 15765-2 был расширен для Single и First Frame, чтобы разрешить значения большего размера, но при этом сохранить обратную совместимость с традиционным ISO 15765. См. CAN FD .
Смещение бита | 7 .. 4 (байт 0) | 3 .. 0 (байт 0) | 15 .. 8 (байт 1) | 23..16 (байт2) |
---|---|---|---|---|
Описание | тип | если передача разрешена | Размер блока | Время разделения (ST), минимальное время задержки между кадрами (конец одного кадра и начало другого) |
Одинокий | тип = 3 | (0 = Продолжить отправку, 1 = Ожидание, 2 = Переполнение/прерывание) | 0 = оставшиеся «кадры» для отправки без управления потоком или задержки | <= 127 (от 0x00 до 0x7F), время разделения в миллисекундах. |
Одинокий | тип = 3 | (0 = Продолжить отправку, 1 = Ожидание, 2 = Переполнение/прерывание) | > 0 отправить количество «кадров» перед ожиданием следующего кадра управления потоком | 0xF1 – 0xF9 UF, от 100 до 900 микросекунд. |
Начальный байт содержит тип (type = 3) в первых четырех битах и флаг в следующих четырех битах, указывающий, разрешена ли передача (0 = продолжить отправку, 1 = ожидание, 2 = переполнение/прекращение). Следующий байт — размер блока, количество кадров, которые могут быть отправлены до ожидания следующего кадра управления потоком. Значение, равное нулю, позволяет отправлять оставшиеся кадры без управления потоком или задержки. Третий байт — время разделения (ST), минимальное время задержки между кадрами. Значения ST до 127 (0x7F) указывают минимальное количество миллисекунд для задержки между кадрами, тогда как значения в диапазоне от 241 (0xF1) до 249 (0xF9) указывают задержки, увеличивающиеся от 100 до 900 микросекунд. Обратите внимание, что время разделения определяется как минимальное время между концом одного кадра и началом следующего. Надежные реализации должны быть готовы принимать кадры от отправителя, который неправильно интерпретирует это как частоту повторения кадров, т.е. от начала кадра до начала кадра. Даже тщательные реализации могут не учитывать незначительное влияние бит-стаффинга на физическом уровне.
Отправитель передает остальную часть сообщения с помощью последовательных кадров. Каждый последовательный кадр имеет однобайтовый PCI с четырехбитным типом (тип = 2), за которым следует 4-битный порядковый номер. Порядковый номер начинается с 1 и увеличивается с каждым отправленным кадром (1, 2,..., 15, 0, 1,...), с помощью которого можно обнаружить потерянные или отброшенные кадры. Каждый последовательный кадр начинается с 0, изначально для первого набора данных в первом кадре будут считаться нулевыми данными. Таким образом, первый набор CF (последовательных кадров) начинается с "1". Затем, когда он достигает "15", будет начинаться с "0". Поле длины в 12 бит (в FF) допускает до 4095 байт пользовательских данных в сегментированном сообщении, но на практике типичный предел, специфичный для приложения, значительно ниже из-за приемного буфера или ограничений оборудования.
Необходимо упомянуть такие параметры синхронизации, как таймеры P1 и P2.
ISO 15765-2:2016 Транспорт дорожный. Диагностическая связь по сети контроллеров (DoCAN). Часть 2. Транспортный протокол и службы сетевого уровня.