Реальное время и HIL (Hardware-in-the-Loop, аппаратура в контуре) занимают важное место в разработке и испытаниях автомобильных компонентов. Обычно для реализации реального времени и HIL-тестирования приходится иметь дело с продуктами NI, VeriStand, dSPACE и других крупных вендоров — дорогими и с высоким порогом входа. TSMaster ломает эту ситуацию. Эта статья — обзор подхода: как с нуля построить HIL-симуляцию автомобильного контроллера на TSMaster. Детальный разбор каждого шага — в частях 15 серии.

Ключевые слова: HIL, реальное время, TSMaster, CarSim, Simulink, ABS, мини-программа, программная HIL-симуляция.

1. Принцип симуляции реального времени

Сначала поясним, что такое «реальное время» в реальной симуляции. Оно не требует, чтобы симуляция была как можно быстрее, — оно предъявляет детерминированные требования к моменту, когда вычислительная задача возвращает результат. Например, задача в ЭБУ с периодом выполнения 5 мс в базовом случае обязана завершиться внутри текущего 5-миллисекундного цикла и не может быть перенесена в следующий. Вычислительные ресурсы процессора ЭБУ ограничены, и множество задач с разными периодами должны укладываться в отведённое время — именно поэтому для выполнения задач симуляции нужна система реального времени, полностью воспроизводящая среду выполнения контроллера (рис. 1-1).

Кадры с заданным периодом
Рис. 1-1. TSMaster: кадры CAN, передаваемые с заданным периодом

2. Встраиваемый код ЭБУ и интеграция мини-программы TSMaster

Мы с нуля, шаг за шагом, строим среду реального времени для алгоритма ABS на базе TSMaster. Через Simulink алгоритм ABS автоматически преобразуется во встраиваемый код, который запускается как мини-программа (applet) в среде реального времени TSMaster. Сначала модель сохраняется под новым именем и изменяется путь, чтобы генерация кода выполнялась в новый каталог. Затем модель дорабатывается под генерацию встраиваемого кода: удаляются осциллографы и прочие ненужные блоки, удаляется S-function CarSim, а интерфейсы S-function преобразуются в порты In и Out (рис. 2-1).

Подготовка модели к генерации кода
Рис. 2-1. Подготовка модели к генерации встраиваемого кода

Для корректной генерации кода настраивается конфигурация: stop time устанавливается в inf, solver — с фиксированным шагом, шаг — общепринятые в отрасли 5 мс. Далее — этап генерации кода: target file — ert; в разделе interface включается continuous time, поскольку модель давления в колёсных цилиндрах использует передаточные функции и описывается непрерывными состояниями. После этого по Ctrl+B код генерируется за считаные секунды. Файлы ABS.c, ABS.h и остальные заголовочные файлы копируются в папку мини-программы TSMaster и участвуют в компиляции (рис. 2-2).

Генерация кода
Рис. 2-2. Настройка генерации встраиваемого кода в Simulink

3. Симуляция модели автомобиля в реальном времени без RT

Независимо от того, выполняется алгоритм ABS в мини-программе TSMaster или в реальном аппаратном ЭБУ, ему обязательно нужны входные сигналы от внешней среды — скорости колёс и т.п., а его выходы должны воздействовать на внешнюю среду. Под внешней средой понимаются автомобиль в целом и остальные контроллеры. Очевидно, в процессе симуляции должна участвовать модель автомобиля — обычно это RT-версия CarSim (рис. 3-1).

Модель автомобиля
Рис. 3-1. Модель автомобиля в контуре симуляции

Опираясь на изложенное выше исследование реального времени, можно использовать и не-RT версию CarSim: достаточно в реальном времени вызывать соответствующие API-функции CarSim, чтобы перенести модель автомобиля на обычный ПК. Специально для CarSim разработан CarSim Controller — фактически аналог RT-версии CarSim, способный с высокой точностью симулировать модель автомобиля на персональном компьютере.

Программная платформа TSMaster позволяет легко вмешиваться в любую переменную алгоритма ЭБУ. Отметим: CarSim Controller — лишь один из множества способов перевести динамическое ПО CarSim под реальное управление; по тому же принципу реализуется управление в реальном времени и для другого динамического ПО, например CarMaker.

4. Практическая реализация HIL-симуляции ЭБУ

Выше описаны симуляция алгоритма ABS и запуск модели автомобиля. Их задача — не просто рисовать кривые и собирать данные: цель глубже — связь с внешним миром, полный вывод входных и выходных данных в реальный мир, то есть истинная цель HIL — аппаратура в контуре. Взаимодействие с внешним миром реализуется предельно просто: создаётся специальный DBC-файл, загружается в TSMaster, и содержимое системных переменных отображается на шину (рис. 4-1).

Отображение переменных на шину
Рис. 4-1. DBC-файл и отображение системных переменных на шину CAN

Подробный разбор каждого этапа — в статьях серии: часть 1 — принципы реального времени, часть 2 — генерация кода ЭБУ и мини-программа, часть 3 — модель автомобиля без RT, часть 4 — связь алгоритма ЭБУ с моделью автомобиля, часть 5 — практическая реализация HIL.