При создании имитационных моделей остальной сети (Remaining Bus Simulation), реализации нестандартных алгоритмов расчёта контрольных сумм (CRC/E2E) и написании быстрых автоматизированных проверок установка тяжёлых внешних компиляторов (Visual Studio / MinGW) часто оказывается избыточной. В платформу TSMaster встроен собственный легковесный язык сценариев TAC (TSMaster Action Code) — C-подобная среда программирования, которая компилируется и запускается мгновенно внутри приложения без внешних зависимостей.

1. Что такое TAC и чем он отличается от C Mini Program и Python

Экосистема TSMaster поддерживает три взаимодополняющих уровня скриптинга:

  • TAC (TSMaster Action Code): встроенный высокопроизводительный язык с C-подобным синтаксисом, работающий из коробки без установки сторонних компиляторов. Оптимален для обработки событий шин в реальном времени, написания шлюзов и портативных скриптов, которые должны открываться на любом компьютере без настройки окружения.
  • C Mini Program: полноценный C/C++ код (компилируемый в DLL через GCC/MSVC) для задач, требующих подключения сторонних библиотек Windows SDK или закрытых бинарных модулей Seed&Key.
  • Python Mini Program: идеален для сложной математической постобработки данных, машинного обучения и генерации отчётов.
Создание и управление скриптами TAC в среде разработки TSMaster
Создание и управление скриптами TAC в среде разработки TSMaster
Архитектура редактора TAC: дерево обработчиков событий, инспектор функций и окно кода
Архитектура редактора TAC: дерево обработчиков событий, инспектор функций и окно кода

2. Базовый синтаксис и система типов данных TAC

Синтаксис TAC максимально близок к стандарту ANSI C, но дополнен безопасной работой со строками и встроенными структурами автомобильных кадров:

КатегорияПоддерживаемые типы и конструкции в TAC
Целочисленные типыint8 (char), uint8 (byte), int16, uint16 (word), int32 (int), uint32 (dword), int64, uint64 (qword)
Вещественные и логическиеfloat, double, bool (true / false), строковый тип string
Структуры кадров шинTCAN, TCANFD, TLIN, TFlexRay, TEthernetHeader
Управляющие конструкцииif / else, switch / case, циклы for, while, do...while, операторы break, continue, return
Объявление глобальных переменных, структур кадров и таймеров в скрипте TAC
Объявление глобальных переменных, структур кадров и таймеров в скрипте TAC
Подсветка синтаксиса, автодополнение кода и дерево API в редакторе TAC
Подсветка синтаксиса, автодополнение кода и дерево API в редакторе TAC

3. Событийно-ориентированная модель программирования

Скрипт TAC строится вокруг асинхронных обработчиков событий, которые вызываются ядром TSMaster с минимальной задержкой:

  • On Start / On Stop: инициализация переменных, настройка скорости каналов и запуск периодических таймеров при старте симуляции, а также корректное освобождение ресурсов при остановке.
  • On Timer (Периодические таймеры): выполнение циклических задач (например, формирование кадра счётчика жизни Alive Counter каждые 10 мс или опрос состояния стенда).
  • On CAN Rx / On CAN Pre-Tx: перехват входящих кадров по конкретному ID или на всём канале, а также модификация полезной нагрузки исходящих сообщений непосредственно перед выдачей в шину (расчёт CRC8/CRC16 в реальном времени).
  • On Var Change / On Shortcut: реакция на изменение системных переменных с элементов управления Panel или нажатие горячих клавиш клавиатуры.
Добавление обработчиков событий приёма/передачи кадров CAN/LIN и таймеров
Добавление обработчиков событий приёма/передачи кадров CAN/LIN и таймеров
Пример реализации циклической отправки CAN FD сообщений и модификации сигналов в TAC
Пример реализации циклической отправки CAN FD сообщений и модификации сигналов в TAC

4. Работа с сигналами баз данных DBC/LDF и системными переменными

Внутри кода TAC инженер может обращаться к физическим значениям сигналов из загруженных баз DBC/LDF/ARXML напрямую через встроенный инспектор символов (Drag-and-Drop сигнала из дерева БД прямо в редактор кода), а также читать и записывать системные переменные TSMaster:

// Пример отправки кадра CAN FD и обновления сигнала в TAC
TCANFD msg;
msg.init_w_std_id(0x123, 8);
msg.FIdxChn = CH1;
msg.FFDProperties = 1; // CAN FD
msg.FData[0] = 0xAA;
com.transmit_can_async(&msg);
Вставка вызовов системных функций и сигналов DBC в код скрипта перетаскиванием мыши
Вставка вызовов системных функций и сигналов DBC в код скрипта перетаскиванием мыши
Связывание скрипта TAC с элементами графической панели Panel через системные переменные
Связывание скрипта TAC с элементами графической панели Panel через системные переменные

5. Компиляция, диагностика ошибок и отладка в реальном времени

При нажатии кнопки компиляции встроенный анализатор TAC за доли секунды проверяет типы данных и выводит точные номера строк при наличии синтаксических ошибок. Во время выполнения поддерживаются вывод отладочных сообщений в системный лог (log() / print()) и мониторинг значений локальных/глобальных переменных.

Окно вывода встроенного компилятора TAC и проверка корректности скрипта
Окно вывода встроенного компилятора TAC и проверка корректности скрипта
Выполнение скрипта TAC в связке с окнами Trace, Graphic и пользовательской панелью управления
Выполнение скрипта TAC в связке с окнами Trace, Graphic и пользовательской панелью управления