Реальное время и HIL (Hardware-in-the-Loop, аппаратура в контуре) занимают важное место в разработке и испытаниях автомобильных компонентов. Обычно для этого приходится работать с продуктами NI, VeriStand, dSPACE и других крупных вендоров — дорогими, с высоким порогом входа, что мешает массовому внедрению. TSMaster ломает эту ситуацию. В первой части серии — что такое «реальное время» в симуляции, как TSMaster обеспечивает мягкое реальное время и как это проверяется осциллографом на реальной шине CAN.
Ключевые слова: реальное время, HIL, TSMaster, мягкое реальное время, таймер, частота кадров, осциллограф, CAN.
Сначала поясним, что такое «реальное время» в реальной симуляции. Оно не требует, чтобы симуляция выполнялась как можно быстрее, — оно предъявляет детерминированные требования к моменту возврата результата вычислительной задачи. Например, задача в ЭБУ с периодом 5 мс в базовом случае обязана завершиться внутри текущего 5-миллисекундного цикла и не может быть перенесена в следующий. Вычислительные ресурсы процессора ЭБУ ограничены, и множество задач с разными периодами должны укладываться в отведённое время — именно поэтому для симуляционных задач нужна система реального времени, полностью воспроизводящая среду выполнения контроллера.
1. Возможности мягкого реального времени TSMaster
Возьмём задачу с периодом 1 мс: за секунду она выполняется 1000 раз. TSMaster способен точно удерживать частоту выполнения такой задачи на уровне 1000 Гц и даже выше. Например, если период кадра изменить на 1 мс, его частота станет 1000 кадров в секунду (рис. 1-1).

Когда частота корректна, следующий шаг — математически оценить попадание каждого запуска задачи в целевой момент времени. Например, если задача, которая должна выполниться в конкретный 1-миллисекундный момент, завершилась в пределах ±20 % от него, этот запуск считается успешным попаданием. По окончании всей симуляции получаем процент попаданий — скажем, 97 %: в среднем лишь 3 из 100 запусков дают ошибку из-за неопределённости момента. Процент попаданий — критерий близости результата симуляции к ожидаемому: чем он выше, тем лучше эффект. Именно этот алгоритм лежит в основе HIL в TSMaster (рис. 1-2).

2. Таймер TSMaster в симуляционных испытаниях
Откройте окно системной информации TSMaster и перейдите на вкладку диагностической информации: там есть инструмент оценки производительности встроенного таймера. По умолчанию период таймера — 8 мс, допустимое отклонение — 10 %. Это значит, что предел отклонения — 0,8 мс: момент срабатывания в диапазоне от 7,2 до 8,8 мс считается приемлемым (рис. 2-1).

Нажмите кнопку «Оценка производительности» — и появятся результаты измерений. В центре — среднее значение измеренного периода, слева — минимальное среднее, справа — максимальное среднее, дополнительно указана доля ошибки порядка 1 % (рис. 2-2).

Теперь откроем диспетчер задач: видно, что при столь низкой доле ошибки (около 5 %) загрузка CPU процессом TSMaster также очень низкая — это наглядно демонстрирует производительность самого TSMaster. На практике это означает: в большинстве случаев таймерных функций TSMaster достаточно, чтобы напрямую участвовать в симуляции реального времени без дополнительной инфраструктуры (рис. 2-3).

3. Реальное время аппаратуры TOSUN
Проверим реальное время TSMaster на простом примере приёма и передачи кадров. Создайте новый проект по шаблону измерения шины; в нём в качестве моста между программным и реальным миром используем аппаратуру TC1005 (рис. 3-1).

Откройте селектор каналов и выберите два канала TC1005 — заранее соединённые CAN-кабелем между собой. Тогда всё, отправленное на одном канале, принимается на другом (рис. 3-2). Вместо TC1005 подойдёт и современный двухканальный интерфейс, например TC1014 с четырьмя каналами CAN/CAN FD.

Запустите симуляцию, откройте окно передачи и отправьте кадр с периодом 5 мс — то есть 200 кадров в секунду. В окне Trace видно, что частота кадров — 200. Переключитесь в окно графиков, добавьте системную переменную статистики частоты кадров: частота держится около 200 с очень малым разбросом (рис. 3-3).

Разумеется, это статистика лишь на программном уровне. Проверим, совпадает ли реальный мир. Для наблюдения за частотой и ошибкой кадров используем осциллограф PicoScope: его канал 1 заранее подключён к шине CAN и измеряет дифференциальный сигнал — один щуп на CAN-H, другой на CAN-L (рис. 3-4).

Установим масштаб 5 мс на деление — видна непрерывно меняющаяся осциллограмма. Настроим простой триггер с точкой захвата на первом делении: на линии каждого деления присутствует кадр. Это значит, что ПО старается гарантировать появление кадра на каждом 5-миллисекундном интервале (рис. 3-5).

Далее измерим частоту — для этого нужен достаточный диапазон выборки. Переключимся на 10 мс на деление: в середине каждого деления приходится примерно два кадра, что в целом обеспечивает 200 кадров в секунду. Добавив измерение частоты, видим значение 200 Гц — полное совпадение с частотой на программном уровне. Это подтверждает реальное время TSMaster. На таком фундаменте реальное время и даже HIL-симуляция выполняются управлением передачей шинных данных (рис. 3-6).

Продолжение — в части 2: генерация встраиваемого кода ЭБУ и интеграция мини-программы.