При создании имитационных моделей остальной сети (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: идеален для сложной математической постобработки данных, машинного обучения и генерации отчётов.
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 |
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 или нажатие горячих клавиш клавиатуры.
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);
5. Компиляция, диагностика ошибок и отладка в реальном времени
При нажатии кнопки компиляции встроенный анализатор TAC за доли секунды проверяет типы данных и выводит точные номера строк при наличии синтаксических ошибок. Во время выполнения поддерживаются вывод отладочных сообщений в системный лог (log() / print()) и мониторинг значений локальных/глобальных переменных.