Рост числа электронных модулей, потоки данных ADAS и беспилотного вождения, требования реального времени и вызовы информационной безопасности OTA повышают требования к инструментарию симуляции, тестирования, диагностики и калибровки шин. Разбираем, как с помощью системных переменных TSMaster запускать функции калибровки и диагностики.

Ключевые слова: TSMaster, системные переменные, калибровка XCP/CCP, A2L, диагностика, вторичная разработка, TSMaster API.

1. Обзор калибровки и диагностики

1.1. Калибровка

  1. Калибровка XCP/CCP. Калибровкой называется процесс динамической подстройки внутренних параметров контроллера по протоколу CCP или XCP. CCP — протокол калибровки на шине CAN; XCP — универсальный протокол измерения и калибровки, развитие CCP, применимый к разным шинам.
  2. Особенности: оба протокола работают в режиме «ведущий-ведомый» — один ведущий узел общается с несколькими ведомыми одновременно; ведущий командами устанавливает соединение, разблокирует доступ, читает данные и изменяет параметры. В связке с A2L-файлом протоколы XCP/CCP позволяют менять параметры прямо в программе, а исполнительные механизмы сразу реагируют на изменения. Модуль калибровки TSMaster использует два типа файлов (A2L и др.) и ЭБУ с работающим стеком XCP или CCP.

1.2. Диагностика

TSMaster предоставляет базовые функции диагностической консоли: пользователь настраивает собственные запросы и ответы. Поддерживаются CAN/CAN FD/LIN и UDS BootLoader (рис. 1-1, 1-2). Подробнее о калибровке — в статье «Функции калибровки CCP/XCP в TSMaster».

Диагностическая консоль
Рис. 1-1. Диагностическая консоль TSMaster
Настройка диагностики
Рис. 1-2. Настройка диагностических запросов

2. Работа с калибровкой и диагностикой

2.1. Создание калибровки в TSMaster

  1. Шаг 1. Создайте новый проект или пустой проект (затем выберите место сохранения) — рис. 2-1.
  2. Шаг 2. Откройте «Приложение» → «Менеджер калибровки» → «Конфигурация устройств» (правой кнопкой — «Создать ЭБУ»), введите имя ЭБУ и подтвердите — калибровка создана (рис. 2-2).
Создание проекта
Рис. 2-1. Создание нового проекта
Создание ЭБУ в менеджере калибровки
Рис. 2-2. Создание ЭБУ в менеджере калибровки

2.2. Создание диагностики в TSMaster

Откройте «Diagnostic ISO TP» → «Добавить Diagnostic» — появится новое диагностическое окно (рис. 2-3).

Добавление диагностического модуля
Рис. 2-3. Добавление диагностического модуля

2.3. Запуск калибровки через системные переменные

  1. Шаг 1. Выберите драйвер: нажмите XCP, чтобы выбрать протокол XCP/CCP (рис. 2-4).
  2. Шаг 2. Выберите базу данных и импортируйте A2L-файл. После успешного импорта информация доступна в памяти протокола базы данных и списке измерений (рис. 2-5).
  3. Шаг 3. Если требуется алгоритм безопасности, откройте «Протокол» → «Seed&Key DLL» и импортируйте файл (рис. 2-6).
  4. Шаг 4. Выберите логический канал и настройте отображение адресов памяти (рис. 2-7, 2-8).
  5. Шаг 5. Нажмите «Подключить ЭБУ» → «Запустить онлайн-измерение калибровки» — соединение установлено. При ошибке подключения проверьте логический канал и настройки памяти (рис. 2-9).
  6. Шаг 6. В базе данных выберите сигнал PWM: правой кнопкой его можно добавить в «Стимуляцию сигналов», «График», «Панель» или «Числовое отображение» (рис. 2-10).
  7. Шаг 7. Меняя значение в «Стимуляции сигналов» или переменную панели, вы изменяете значение сигнала — график и числовое отображение показывают, что сигнал изменён (рис. 2-11).
  8. Шаг 8. Значение переменной можно менять и из C-скрипта: откройте «Системные переменные» и выберите переменную (рис. 2-12).
  9. Шаг 9. Скопируйте код записи (рис. 2-13, 2-14).
  10. Шаг 10. Через C-скрипт и функцию Step реализуйте, например, инкремент значения каждую секунду (рис. 2-15).
Выбор протокола XCP
Рис. 2-4. Выбор протокола XCP/CCP
Импорт A2L
Рис. 2-5. Импорт A2L-файла
Импорт Seed&Key DLL
Рис. 2-6. Импорт DLL алгоритма Seed&Key
Выбор логического канала
Рис. 2-7. Выбор логического канала
Отображение памяти
Рис. 2-8. Настройка отображения адресов памяти
Подключение ЭБУ
Рис. 2-9. Подключение ЭБУ и запуск измерения
Добавление сигнала PWM
Рис. 2-10. Добавление сигнала PWM в стимуляцию, график, панель
Изменение значения сигнала
Рис. 2-11. Изменение значения сигнала через панель
Выбор переменной
Рис. 2-12. Выбор системной переменной
Копирование кода записи
Рис. 2-13. Копирование кода записи переменной
Код записи в скрипте
Рис. 2-14. Вставка кода записи в C-скрипт
Инкремент каждую секунду
Рис. 2-15. Инкремент значения каждую секунду через Step

2.4. Запуск диагностики через системные переменные

  1. Шаг 1. В окне диагностики откройте форму BasicConfig, выберите целевой сервис и через правую кнопку зарегистрируйте его как системную переменную — переменная появится в списке системных переменных (рис. 2-16).
  2. Шаг 2. Добавьте на панель кнопку, свяжите её с этой переменной; меняя значение на панели, наблюдайте изменение в графике (рис. 2-17).
  3. Шаг 3. Из C-скрипта переключайте переменную между 0 и 1 — результат виден в графике и на панели (рис. 2-18).
Регистрация сервиса как переменной
Рис. 2-16. Регистрация диагностического сервиса как системной переменной
Кнопка на панели
Рис. 2-17. Кнопка панели, связанная с переменной сервиса
Переключение 0/1 из скрипта
Рис. 2-18. Переключение переменной 0/1 из C-скрипта

3. Вторичная разработка

TSMaster поддерживает вторичную разработку на других языках. В примере калибровка реализуется вызовом TSMaster API из C# в Visual Studio 2019.

  1. Шаг 1. Создайте новый проект: C# → «Приложение Windows Forms» → «Далее» (рис. 3-1).
  2. Шаг 2. Задайте имя проекта и место хранения → «Создать» (рис. 3-2).
  3. Шаг 3. Подключите файл TSMaster.dll: «Ссылки» → «Добавить ссылку», выберите DLL и подтвердите (рис. 3-3, 3-4).
  4. Шаг 4. Откройте подключённую библиотеку и просмотрите функции вызова TSMaster (рис. 3-5).
  5. Шаг 5. Добавьте класс TSCalibration: «Добавить» → «Класс», измените имя → «Добавить» (рис. 3-6).
  6. Шаг 6. Импортируйте типы, определённые TSMaster (рис. 3-7).
  7. Шаг 7. Через public создайте два метода — чтение и запись (рис. 3-8).
  8. Шаг 8. Откройте в TSMaster «Симуляция» → «Системные переменные» → «Внутренние переменные» и прокрутите список вниз: видны состояние контроллера калибровки (Calibration.Status) и состояние регистров автоматизации контроллера калибровки (Calibration.Controller) (рис. 3-9).
  9. Шаг 9. Чтение и запись значений системных переменных запускают калибровку (рис. 3-10).
  10. Шаг 10. Нажмите «Открыть соединение»: запустится последний закрытый экземпляр TSMaster; последовательно нажмите «Запустить ЭБУ» и «Запустить измерение» (рис. 3-11).
  11. Шаг 11. Введите имя переменной и нажмите «Чтение» — отобразится текущее значение 25. Введите имя переменной и запишите значение 50 — значение переменной изменится на 50 (рис. 3-12).
Создание проекта C#
Рис. 3-1. Создание проекта Windows Forms на C#
Настройка проекта
Рис. 3-2. Имя и расположение проекта
Добавление ссылки
Рис. 3-3. Добавление ссылки на TSMaster.dll
Выбор DLL
Рис. 3-4. Выбор файла TSMaster.dll
Функции TSMaster
Рис. 3-5. Просмотр функций TSMaster API
Класс TSCalibration
Рис. 3-6. Создание класса TSCalibration
Импорт типов
Рис. 3-7. Импорт типов TSMaster
Методы чтения и записи
Рис. 3-8. Методы чтения и записи переменных
Переменные калибровки
Рис. 3-9. Внутренние переменные Calibration.Status и Calibration.Controller
Запуск калибровки
Рис. 3-10. Запуск калибровки чтением/записью системных переменных
Подключение к TSMaster
Рис. 3-11. Подключение к TSMaster и запуск измерения
Чтение и запись значения
Рис. 3-12. Чтение значения 25 и запись значения 50 из внешней программы