В первой части мы разобрали создание UDS-диагностического модуля и базовую конфигурацию диагностики в TSMaster. Во второй части — диагностическая консоль, автоматические диагностические процессы, регистрация системных переменных и практические сценарии: чтение VIN и Flash Bootloader без единой строки кода.

Ключевые слова: UDS, BootLoader, автоматический диагностический процесс, диагностические системные переменные.

1. Диагностическая консоль TSMaster

Диагностическая консоль — это отладчик диагностических команд: можно выбрать любую сервисную команду, отредактировать отправляемое и ожидаемое сообщение и проверить ответ ЭБУ. Консоль состоит из четырёх рабочих областей: выбор сервисной команды, ручной ввод команды, область отправки/ответа и область диагностической информации (рис. 4-1).

Рабочие области консоли
Рис. 4-1. Рабочие области консоли

1.1. Область выбора сервисных команд

Содержит список исполняемых сервисов, сформированный из базовой конфигурации или загруженной базы ODX/PDX. Сервис выполняется двойным кликом или через контекстное меню (рис. 4-2).

Область выбора сервисных команд
Рис. 4-2. Область выбора сервисных команд

1.2. Область ручного ввода команд

Если в процессе теста нужно отправить произвольную диагностическую команду — введите сообщение вручную и нажмите Execute. Для гибкости можно выбрать отправку по физическому адресу или по функциональному ID (рис. 4-3).

Ручной ввод команды
Рис. 4-3. Область ручного ввода команд

1.3. Область отправки/ответа диагностических команд

Здесь редактируются отправляемые и ожидаемые данные: запустите выполнение и проверьте, соответствует ли ответ тестируемого ЭБУ требованиям, а также синхронизируются ли диагностические системные переменные (рис. 4-4).

Область отправки и ответа
Рис. 4-4. Область отправки/ответа

1.4. Область диагностической информации

Разделена на информацию сервисного уровня и поток данных ISO 15765-2. Сервисный уровень показывает шаги операций диагностического модуля и ответы (рис. 4-5); при отрицательном ответе или его отсутствии выводится сообщение об ошибке (рис. 4-6).

Информация сервисного уровня
Рис. 4-5. Информация сервисного уровня
Отрицательный ответ
Рис. 4-6. Подсказка при отрицательном ответе

Поток ISO 15765-2 показывает детальные сообщения сервисного уровня. Вместе с загруженной диагностической базой сырые данные разбираются в физические сигналы — например, для сервиса 22 видны разобранные параметры ответа (рис. 4-7).

Поток данных ISO 15765-2
Рис. 4-7. Поток данных ISO 15765-2

2. Автоматические диагностические процессы и регистрация системных переменных

2.1. Создание и управление процессами

Автоматические диагностические процессы TSMaster управляются на уровне всего проекта, а не отдельного приложения: под проект настраиваются группы диагностических процессов, в каждой группе — несколько процессов, в каждом процессе — конкретные диагностические шаги.

Щелчок правой кнопкой в панели управления UDS-процессами открывает меню управления сценариями (рис. 5-1):

Меню управления сценариями
Рис. 5-1. Меню управления сценариями процесса
  1. Переключить UDS-процесс — перейти к выбранному узлу (то же по двойному клику; активный узел подсвечен синим, справа раскрываются его шаги — рис. 5-2);
  2. Запустить UDS-процесс — шаги выполняются автоматически сверху вниз;
  3. Прервать UDS-процесс — остановить выполняющийся процесс;
  4. Добавить группу процессов — например Test Group1; группа содержит сценарии, но не шаги;
  5. Добавить новый тестовый процесс — сценарий, внутри которого добавляются шаги;
  6. Изменить имя — правка имени группы или сценария;
  7. Зарегистрировать системную переменную — для выбранного сценария;
  8. Отменить регистрацию системной переменной;
  9. Удалить выбранное / удалить всё.
Переключение UDS-процесса
Рис. 5-2. Переключение UDS-процесса

2.2. Настройка автоматического диагностического процесса

Процессы можно группировать, задавать циклическое выполнение и регистрировать системные переменные для внешнего вызова. Панель инструментов конфигурации (рис. 5-3), слева направо: [1] новая группа процессов; [2] новый сценарий; [3] удалить выбранное; [4] запустить настроенный процесс; [5] прервать выполняющийся; [6] заблокировать/разблокировать область конфигурации; [7] выбрать/снять выбор всех процессов; [8] включить заданное число циклов; [9] счётчик фактических выполнений.

Панель конфигурации процессов
Рис. 5-3. Панель инструментов конфигурации

В области UDS-процессов создайте процесс (правая кнопка), перейдите в него двойным кликом, разблокируйте редактор и задайте число циклов (по умолчанию циклы выключены) — рис. 5-4. Затем правой кнопкой добавляйте и удаляйте шаги (рис. 5-5): [1] выберите узел процесса слева; [2] добавляйте/редактируйте шаги справа; [3] выберите тип шага; [4] задайте имя; [5] тип адресации — физическая или функциональная; [6] пакет диагностического запроса; [7] ожидаемый пакет ответа; [8] пауза после шага; [9] обработка ошибки шага.

Создание нового UDS-процесса
Рис. 5-4. Создание нового UDS-процесса
Добавление и управление шагами
Рис. 5-5. Добавление и управление шагами

2.3. Типы диагностических шагов

Доступны 4 типа шагов, покрывающие основные сценарии диагностики (рис. 5-6):

Типы шагов
Рис. 5-6. Типы диагностических шагов
  • Обычный шаг — для простых пар «запрос–ответ»: в запросе укажите отправляемые данные (например [10 01]), в ответе — ожидаемые (например [50 01 12 34]). Если ответ не нужен, проверку ответа можно отключить (рис. 5-7).
  • Выбрать существующую конфигурацию — использовать сервис, уже настроенный в базовой диагностике. Рекомендуемый способ в TSMaster (рис. 5-8).
  • Seed&Key — достаточно выбрать уровень seed и key; DLL дешифрования берётся из настроек транспортного уровня (рис. 5-9). Поэтому и в консоли, и в автопроцессах сначала настраивается транспортный уровень.
  • Tester Present — команды включения/выключения «тестер онлайн» с настройкой данных и периода (рис. 5-10, 5-11).
Обычный шаг
Рис. 5-7. Обычный шаг
Выбор существующей конфигурации
Рис. 5-8. Выбор существующей конфигурации
Шаг Seed&Key
Рис. 5-9. Seed&Key
Старт/стоп Tester Present
Рис. 5-10. Старт/стоп команды Tester Present
Настройка Tester Present
Рис. 5-11. Данные и период Tester Present

2.4. Интервал между шагами

Задержка между шагами процесса настраивается в миллисекундах (рис. 5-12).

Интервал между шагами
Рис. 5-12. Интервал между шагами

2.5. Свойства (обработка ошибок)

В свойствах задаётся поведение при ошибке ответа: остановить или продолжить выполнение (рис. 5-13). В планах развития TSMaster — переход при ошибке к указанному процессу (например, к процессу стирания) для ещё более гибких сценариев.

Свойства шага
Рис. 5-13. Свойства

2.6. Включение шагов и порядок выполнения

Нужные шаги отмечаются флажками слева (рис. 5-14). Порядок выполнения — групп, сценариев и отдельных шагов — меняется простым перетаскиванием.

Включение шагов
Рис. 5-14. Включение шагов процесса

3. Встроенные системные переменные диагностического модуля

После добавления базового диагностического модуля менеджер системных переменных автоматически создаёт переменные с владельцем Diagnostic — через них настраиваются соответствующие параметры (рис. 5-15).

Системные переменные модуля
Рис. 5-15. Системные переменные диагностического модуля

3.1. Общие системные переменные

  • ExportProject / ImportProject — экспорт и импорт диагностического проекта;
  • TesterIsPresent — включение команды «тестер онлайн»;
  • DLC — максимальный DLC кадров FD (только в режиме FD);
  • STMin (R) / STMin (T) — минимальный интервал consecutive frame при приёме/передаче, мс; 0 — минимально возможный;
  • User Define STMin — ручное задание интервала consecutive frame;
  • FiledByte — байт-заполнитель диагностических кадров;
  • FunctionalIDType / FunctionalID, ResIDType / ResID, ReqIDType / ReqID — типы (0 — стандартный, 1 — расширенный) и значения функционального ID, ID ответа и ID запроса;
  • BusType — тип шины: 0 — CAN, 1 — CAN FD, 2 — LIN, 3 — DoIP;
  • Chn — канал диагностического модуля (0 — канал 1, 1 — канал 2…);
  • UDSProgress — ход выполнения автопроцесса в реальном времени;
  • SeedAndKeyDLL — абсолютный путь к DLL Seed&Key (следите за экранированием);
  • P2Extended, P2TimeOut, S3ServerTime, S3ClientTime — таймеры сервисного уровня.

3.2. Переменные конкретных сервисов

После добавления составного сервиса в базовой конфигурации создаётся переменная ИмяСервиса_DataFile — абсолютный путь к файлу скачивания; её изменение переключает загружаемый файл (рис. 5-16). При загрузке файла генерируются переменные контрольных сумм блоков и файла, начального адреса и длины. Если эти переменные связаны с базовым сервисом, при замене файла они обновятся автоматически — файл переключается с минимальной правкой проекта.

Переменная пути к файлу
Рис. 5-16. Системная переменная пути к файлу скачивания

3.3. Регистрация системных переменных автопроцесса

Настроенный в консоли сервис запускается двойным кликом. Чтобы запускать процесс из панели (Panel) или из программы:

  1. В окне Basic Diagnostic Config выберите сервис и через правую кнопку зарегистрируйте его как системную переменную (рис. 5-17). У зарегистрированного процесса значок дополняется тремя цветными точками (рис. 5-18).
  2. В менеджере системных переменных появятся Имя_Start и Имя_Result (рис. 5-19). Значения _Result: 0 — простой, 1 — выполняется, 2 — успешно, 3 — ошибка. Значения _Start: >0 — запуск процесса, =0 — прерывание, <0 — недопустимый параметр.
  3. Добавьте на панель кнопку, свяжите её с переменной Имя_Start и назначьте событию нажатия значение 1 (рис. 5-20).
  4. Запустите программу: нажатие кнопки записывает 1 в Имя_Start, и модуль выполняет диагностический процесс.
Регистрация сервиса как переменной
Рис. 5-17. Регистрация сервиса системной переменной
Значок зарегистрированной переменной
Рис. 5-18. Изменение значка после регистрации
Переменные _Start и _Result
Рис. 5-19. Зарегистрированные переменные
Связь кнопки с переменной
Рис. 5-20. Связь кнопки панели с системной переменной

4. Типовые применения

4.1. Чтение VIN автомобиля

Автопроцесс для чтения VIN «в одну кнопку» с разбором ответа (рис. 6-1): [1] переход в расширенную сессию; [2] получение доступа через Seed&Key; [3] обычная команда чтения VIN; либо [4] ранее настроенная команда с разбором данных.

Процесс чтения VIN
Рис. 6-1. Процесс чтения VIN

Ответ: VIN успешно прочитан; шаг «выбрать существующую конфигурацию» сразу показывает разобранное значение — «E8880003CED05909» (рис. 6-2).

Чтение VIN
Рис. 6-2. Чтение VIN

4.2. Процесс Flash Bootloader

Соберём простой процесс Flash Bootloader на диагностическом модуле TSMaster. Типовая структура — три фазы: предпрограммирование (серый), основное программирование (фиолетовый) и постпрограммирование (голубой) — рис. 6-3. Под конкретный ЭБУ процесс корректируется по его спецификации.

Структура Flash Bootloader
Рис. 6-3. Структура процесса Flash Bootloader

Предпрограммирование. [1] Создайте UDS-процесс; редактор должен быть разблокирован, иначе шаги не добавить (рис. 6-4). [2] Переход в расширенную сессию, отключение DTC и управление приёмом — обычными шагами (рис. 6-5). [3] Чтение DID F188 и сравнение с «SN123456»: совпало — дальше, нет — выход. Способ 1 — обычный шаг (рис. 6-6); способ 2 — настроить в BasicConfig и выбрать существующую конфигурацию (рис. 6-7).

Разблокировка редактора
Рис. 6-4. Разблокировка редактора
Расширенная сессия, отключение DTC
Рис. 6-5. Расширенная сессия, отключение DTC и приёма
Обычный шаг чтения F188
Рис. 6-6. Обычный шаг: чтение номера детали DID F188
Существующая конфигурация F188
Рис. 6-7. Существующая конфигурация: чтение DID F188

Основное программирование. [4] Переход в программную сессию (рис. 6-8). [5] Шаг Seed&Key — разблокировка ЭБУ (рис. 6-9). [6] Запись строки «SN1234» в DID F190 — фиксированная строка настраивается обычным шагом (рис. 6-10). [7] Процессы файлов FlashDriver и приложения: сначала добавьте файлы в базовой конфигурации (рис. 6-11), затем выберите в автопроцессе созданный составной сервис скачивания (рис. 6-12). [8] Стирание Flash через Routine Control: настройте команду стирания в базовой конфигурации, передав стартовый адрес и длину системными переменными (рис. 6-13), и добавьте её в процесс через существующую конфигурацию (рис. 6-14). [9] Перезапуск ЭБУ: пауза между ECUReset и возобновлением диагностики задаётся по спецификации ЭБУ, например 1000 мс (рис. 6-15).

Программная сессия
Рис. 6-8. Переход в программную сессию
Шаг Seed&Key
Рис. 6-9. Шаг Seed&Key
Запись в DID F190
Рис. 6-10. Запись строки в DID F190
Добавление файла FlashDriver
Рис. 6-11. Добавление файла FlashDriver в базовую конфигурацию
Выбор сервиса скачивания
Рис. 6-12. Выбор существующего составного сервиса скачивания
Команда стирания
Рис. 6-13. Команда стирания в базовой конфигурации
Стирание Flash через Routine Control
Рис. 6-14. Стирание Flash через Routine Control
Перезапуск ЭБУ
Рис. 6-15. Перезапуск ЭБУ

Постпрограммирование. [10] Возврат в сессию по умолчанию, управление COM и DTC — обычными шагами (рис. 6-16).

Постпрограммирование
Рис. 6-16. Фаза постпрограммирования

Итоговая конфигурация процесса — на рис. 6-17. Запуск одной кнопкой: шаги с положительным ответом подсвечиваются зелёным (рис. 6-18).

Готовый процесс Flash Bootloader
Рис. 6-17. Готовая конфигурация Flash Bootloader
Выполнение процесса
Рис. 6-18. Выполнение автопроцесса одной кнопкой

На диагностическом модуле TSMaster разработка процессов вроде Bootloader становится быстрой задачей без единой строки кода.

Первая часть: руководство по CAN UDS-диагностике в TSMaster, часть 1.