TSMaster — программная платформа инструментария для работы с автомобильными шинами, разработанная TOSUN: полноценный инструмент для проектирования, симуляции, анализа, диагностики и калибровки шин, поддерживающий весь цикл разработки — от анализа требований до реализации системы. TSMaster подключает, конфигурирует и управляет всеми интерфейсными картами TOSUN, закрывая задачи мониторинга шин, симуляции, диагностики, калибровки, BootLoader, управления I/O, измерений и EOL, а также поддерживает оборудование Vector, Kvaser, PCAN, Intrepid, ZLG и других производителей для совместной мультиканальной симуляции и тестирования. Пользователей TSMaster становится всё больше, и вопросы, которые они задают в процессе работы, мы регулярно собираем для совместного изучения. Смотрим, какие Q&A вошли в этот выпуск.

Ключевые слова: TSMaster, CAN FD, TDC, loop delay, LIN, контрольная сумма, PID, FAQ.

1. Вопросы по CAN FD в TSMaster

Вопрос 1. Есть ли в TSMaster настройка включения TDC (Transmitter Delay Compensation — компенсация задержки передачи в поле данных) для CAN FD, или она включена по умолчанию?
В TSMaster TDC для CAN FD включён по умолчанию: без него приём и передача в FD-режиме работать не будут.

Вопрос 2. Какое значение offset у TDC задано по умолчанию?
В TSMaster это значение вычисляется динамически в зависимости от битрейта: это пропорция, а не фиксированная величина.

1.1. Полезная теория: что такое loop delay (задержка петли)?

В процессе «обратного считывания» CAN-трансивер выполняет два преобразования: передатчик преобразует последовательность цифровых уровней 0 и 1 в дифференциальные уровни, а приёмник — дифференциальные уровни обратно в последовательность 0 и 1. Поскольку преобразование занимает время, физическая задержка неизбежна. На рис. 1 ЭБУ отправляет один кадр: изменение цифрового уровня на выводе RX запаздывает относительно TX на некоторое время.

Задержка между TX и RX
Рис. 1. Запаздывание изменения уровня RX относительно TX

На рис. 2 показан фрагмент CAN FD-кадра под осциллографом в увеличенном масштабе: изменение уровня RX отстаёт от TX более чем на 100 нс.

Осциллограмма CAN FD: задержка RX относительно TX
Рис. 2. Осциллограмма CAN FD-кадра: RX отстаёт от TX более чем на 100 нс

1.2. Что такое TDC?

TDC — Transceiver Delay Compensation, компенсация задержки трансивера.

В поле данных CAN FD при использовании повышенного битрейта (с установленным битом BRS) длительность бита (bit time) мала, и задержка, вносимая loop delay локального CAN-трансивера, может превысить Phase_Seg1 (см. рис. 3 — интервал time segment перед точкой сэмплирования): предположим, loop delay составляет 255 нс; если битрейт поля данных CAN FD-кадра ≥ 4 МГц, то bit time ≤ 250 нс, что приводит к обнаружению bit error. Таким образом, loop delay трансивера ограничивает битрейт поля данных CAN FD-кадра.

Loop delay и Phase_Seg1
Рис. 3. Соотношение loop delay и сегментов bit time

Поэтому для преодоления этого ограничения введена функция TDC (компенсация задержки трансивера): в поле данных CAN FD-кадра передатчик должен использовать новую точку сэмплирования SSP (Secondary Sample Point — вторичная точка сэмплирования), игнорируя точку сэмплирования SP (sample point), на которую влияет loop delay трансивера.

Secondary Sample Point складывается из loop delay трансивера и конфигурируемого смещения компенсации задержки трансивера (transceiver delay compensation offset).

Loop delay трансивера измеряется в каждом передаваемом кадре от бита EDL (он же FDF) до фронта следующего бита r0 — как промежуток между фронтом переданного бита и фронтом принятого бита (см. рис. 4 и 5). Одного измеренного loop delay недостаточно для определения secondary sample point, поскольку он привязан к фронтам битов.

Измерение loop delay
Рис. 4. Измерение loop delay трансивера
Осциллограмма: задержка RX 120 нс
Рис. 5. Осциллограмма CAN FD-кадра: RX отстаёт от TX на 120 нс

Смещение компенсации (transceiver delay compensation offset) сдвигает secondary sample point от фронта к середине bit time, в сторону от его границ. Поэтому значение offset не может превышать длительность bit time фазы данных.

Если secondary sample point расположить слишком близко к границе бита CAN (см. рис. 3, поле Sync_Seg), при сэмплировании битов фазы данных возможны проблемы. Чтобы TDC работал надёжно, offset нужно задавать оптимальным. Для сэмплирования в оптимальной зоне TDC offset рекомендуется вычислять по формуле (см. рис. 3):

Offset = Phase_Seg1 + Prop_Seg + 2

На рис. 6 показано положение SSP при таких настройках.

Положение SSP
Рис. 6. Положение SSP при рекомендуемых настройках

1.3. Условия включения Transceiver Delay Compensation

Итак, обобщим сказанное выше:

  • Условие 1: кадр должен быть кадром CAN FD (для классического CAN неприменимо, поскольку его bit time значительно больше loop delay) с установленным битом BRS (битрейт фазы данных выше битрейта фазы арбитража); SSP действует на поле данных CAN FD-кадра;
  • Условие 2: TDC применяется только к CAN FD-кадрам, передаваемым ЭБУ, и не применяется к принимаемым ЭБУ кадрам CAN FD.

* Материалы раздела «полезная теория» собраны из сети.

2. Вопросы по LIN-сообщениям в TSMaster

Вопрос 1. Какова максимальная поддерживаемая задержка отправки LIN-сообщений?
Максимум — 255 мс, это ограничение аппаратного уровня. Текущая реализация именно такова.

Максимальная задержка LIN 255 мс
Рис. 7. Настройка времени задержки отправки LIN — максимум 255 мс

Вопрос 2. Почему при работе через таблицу расписания (scheduler) возникает ошибка контрольной суммы, а при одиночной отправке ошибки нет?
Проверка показала, что алгоритм контрольной суммы ведомого ЭБУ некорректен, поэтому ошибка контрольной суммы при работе таблицы расписания — это нормальное сообщение об ошибке. А при одиночной отправке контрольная сумма действительно не проверяется, поэтому ошибка не возникает.

Ошибка контрольной суммы LIN
Рис. 8. Ошибка контрольной суммы при работе таблицы расписания LIN

Вопрос 3. Когда TSMaster выступает ведущим узлом и отправляет сообщения, приём показывает «receive data timeout», но изредка несколько кадров всё же принимается — что это?
Со стороны TSMaster виден только симптом — изредка принимаются отдельные кадры. Для анализа конкретной причины нужно осциллографом снять форму сигнала LIN-кадров. Ниже две осциллограммы: снятая клиентом с проблемного сообщения и наша, эталонная. Из сравнения видно, что у клиента стоп-бит поля данных сильно растянут — отсюда можно сделать вывод, что данные ответа ЭБУ клиента, скорее всего, некорректны.

Осциллограмма клиента
Рис. 9. Осциллограмма проблемного LIN-кадра (у клиента)
Эталонная осциллограмма
Рис. 10. Осциллограмма эталонного LIN-кадра (тест TOSUN)

Вопрос 4. Что означают квадратные скобки [ ] в идентификаторе LIN-сообщения? Например, [50]10.

Идентификатор LIN со скобками
Рис. 11. Отображение идентификатора LIN-сообщения со значением в скобках

Это PID (Protected ID) шины LIN — он однозначно соответствует ID, соответствие можно посмотреть по таблице.

Таблица соответствия PID и ID
Рис. 12. Таблица соответствия PID и ID в LIN

3. Итоги

Выше мы подробно разобрали и систематизировали несколько частых вопросов по двум темам — CAN FD и LIN-сообщения в TSMaster. Если у вас остались вопросы по программе, обращайтесь в техподдержку TOSUN.