Вторая часть серии о построении HIL-симуляции автомобильного контроллера с нуля на TSMaster. В примере мы своими руками проектируем контур реального времени (HIL); чтобы пример был понятным, в качестве объекта симуляции взят штатный ABS-контроллер из CarSim: модель Simulink, алгоритм ABS, низкобюджетная замена RT и генерация встраиваемого кода ЭБУ с интеграцией в мини-программу TSMaster.
Ключевые слова: HIL, TSMaster, CarSim, Simulink, ABS, генерация кода, мини-программа, программная HIL-симуляция.
1. Модель Simulink
- Шаг 1. Откройте CarSim и выберите Simulink-модель «Multi-port SLX» на дороге с разным сцеплением (split-mu). В примере используется легковой автомобиль без системы ABS в переднеприводной конфигурации (рис. 1-1).

- Шаг 2. Рассмотрим Procedure — часть управления «водителем»: начальная скорость 65 км/ч, давление торможения 15 МПа, достигаемое за 0,3 с (известные нам 150 бар); передачи переключаются автоматически в разумном диапазоне, а руление отдано модели водителя с замкнутым контуром (рис. 1-2).

- Шаг 3. Дорожное покрытие — split-mu: с 3-го метра коэффициент сцепления одной стороны 0,2, другой — 0,5. Вернитесь на главную страницу и нажмите «Send to Simulink»; после запуска Simulink его модель становится главным героем этой части (рис. 1-3).

2. Алгоритм управления ABS
Этот алгоритм можно превратить во встраиваемый код и загрузить в ЭБУ с функцией ABS. Модель содержит S-function CarSim как интерфейс модели автомобиля, упрощённую стратегию управления давлением в колёсных цилиндрах на основе относительного проскальзывания, стратегию выбора по низкому давлению для задней оси (select-low), распределение тормозного усилия и т.д. (рис. 2-1).

Запустим модель: в окне графиков скоростей колёс и автомобиля отрисовываются циклы ABS на покрытии split-mu, а в окне давлений — кривые управления давлением в колёсных цилиндрах четырёх колёс. Это упрощённая версия алгоритма. Распределение тормозного усилия — отношение давления передней оси к задней 1:0,4 — позволяет легко определить, что два колеса, давление в которых после торможения поднимается до 15 МПа, — передние, а те, где давление достигает 6 МПа, — задние (рис. 2-2).

3. Низкобюджетная замена RT
Обратите внимание: в среде Simulink время симуляции — 10 секунд, однако после нажатия «Run» вся симуляция фактически завершается за очень короткое время — то есть процесс не является реальным временем. Simulink лишь выполняет алгоритм по шагам, собирает данные каждого шага и рисует их в окнах графиков.
Если мы хотим в процессе торможения ABS в реальном времени передавать на бортовую шину флаг активации ABS или значения давления в колёсных цилиндрах, такой подход этого не позволяет. В среде с RT-версией CarSim модель может быть скомпилирована в DLL и загружена в систему реального времени, обеспечивая взаимодействие алгоритма модели с реальным миром, — это широко принятая сегодня схема симуляции, на которой строится HIL у автопроизводителей и поставщиков компонентов. Однако у неё две проблемы: во-первых, стоимость — нужны лицензии и на само ПО динамики автомобиля, и на RT; во-вторых, развёртывание отнимает много времени: после изменения параметров в CarSim требуется повторное развёртывание, автоматизация низкая.
В нашем примере алгоритм ABS выполняется в среде реального времени TSMaster; в процессе работы он взаимодействует с внешним миром через CAN-интерфейс или подключённые к ПК платы ввода-вывода, а собственный движок реального времени TOSUN перехватывает управление процессом симуляции CarSim, обеспечивая выполнение модели автомобиля на компьютере в реальном времени. Так мы получаем низкобюджетную замену RT — программную HIL (рис. 3-1).

4. Встраиваемый код ЭБУ и мини-программа
Теперь с нуля, шаг за шагом, построим среду реального времени для алгоритма ABS на базе TSMaster. Первый шаг — автоматически сгенерировать встраиваемый код алгоритма ABS через Simulink и запустить его как мини-программу (applet) в среде реального времени TSMaster.
- Шаг 1. Сначала сохраните модель под новым именем и измените путь, чтобы генерация кода выполнялась в новый каталог (рис. 4-1).

- Шаг 2. Доработайте модель под генерацию встраиваемого кода: удалите осциллографы и прочие ненужные блоки, удалите S-function CarSim, а её интерфейсы преобразуйте в порты In и Out (рис. 4-2).

- Шаг 3. Для корректной генерации кода настройте конфигурацию: stop time — inf; solver — с фиксированным шагом (fixed-step); шаг — общепринятые в отрасли 5 мс (рис. 4-3).

- Шаг 4. Переходим к генерации кода: target file — ert; в разделе interface включите continuous time — модель давления в колёсных цилиндрах использует передаточные функции и непрерывные состояния. Нажмите Ctrl+B — код сгенерируется очень быстро (рис. 4-4).

- Шаг 5. Из сгенерированного кода скопируйте ABS.c, ABS.h и остальные заголовочные файлы в папку мини-программы TSMaster — они будут участвовать в компиляции.
Автоматизировать сборку SIL/HIL-моделей из Simulink также помогает модуль MATLAB Automation Controller для TSMaster. Продолжение — в части 3: модель автомобиля в реальном времени без RT.