Модуль MATLAB-автоматизации TSMaster — набор инструментов для MBD-разработки: подключение к автоматизационному объекту MATLAB, автоматическое преобразование C-кода в логику Stateflow и автоматическое построение SIL/HIL-сред из Simulink-моделей. Разберём работу модуля по шагам.
Ключевые слова: TSMaster, MATLAB, Simulink, Stateflow, SIL, HIL, MBD.
1. Автоматизационный объект MATLAB
- Шаг 1. Нажмите «Подключить» — подключение к автоматизационному объекту MATLAB требует запущенной основной программы MATLAB. После подключения MATLAB управляется TSMaster в реальном времени: кнопка «Подключить» становится неактивной, а «Отключить» — подсвечивается (рис. 1-1).
- Шаг 2. Нажмите «C-код → Stateflow», затем «Разобрать» — строится дерево логики; далее нажмите «Сгенерировать код». Пример C-кода автоматически преобразуется в код Stateflow: существующая логика на C одним действием переводится в полностью эквивалентную логику Stateflow, что повышает эффективность MBD-разработки. Двойной щелчок по chart1 раскрывает логику Stateflow, соответствующую исходному C-скрипту (рис. 1-2, 1-3).



2. Автоматическое построение SIL- и HIL-сред
Если есть Simulink-модель, способная генерировать код, модуль позволяет запустить её в реальном времени в среде TSMaster: алгоритм участвует в SIL- и HIL-симуляции уже на ранних этапах проектирования, а с помощью мини-программ его можно детально отлаживать и мониторить или публиковать в виде бинарных файлов другим пользователям для совместной симуляции.
Разберём пример с нуля. Страница «SIL and HIL» содержит 4 шага, выполняемые последовательно.
- Шаг 1. Конфигурация модели алгоритма. Два входных параметра: имя мини-программы и файл Simulink-модели. Введите имя новой мини-программы (по умолчанию Model1) и нажмите зелёную галочку справа: если Model1 не существует — она будет создана, если существует — будет использована имеющаяся. Так новый алгоритм интегрируется в существующую мини-программу (рис. 2-1).
- Шаг 2. Файл Simulink-модели. Для примера откройте Simulink и на стартовой странице выберите пример Stateflow — иерархическую диаграмму (untitled): модель содержит состояния run и cooldown — 30 секунд работы, затем 5 секунд охлаждения, циклически; внутри run выход каждую секунду переключается между 10 и 1 (рис. 2-2). Добавьте осциллограф и запустите модель (F5), сменив рабочий каталог на любую папку, — выход совпадает с ожиданием. Сохраните модель как simple, удалите осциллограф и добавьте выходной порт out, чтобы модель могла генерировать код.
- Шаг 3. Настройка генерации кода. В настройках модели откройте «Code Generation»: смените grt на ert.tlc (целевая среда — встраиваемая), отметьте «Generate code only», а в разделе шаблонов снимите галочку «Generate an example main program», чтобы не генерировался main (рис. 2-3). Сохраните и закройте модель.



3. Модуль управления MATLAB
- Шаг 1. Вернитесь в модуль управления MATLAB и выберите файл Simulink-модели: зелёной кнопкой-стрелкой укажите сохранённый simple.slx — после этого шаг 1 считается выполненным (рис. 3-1).
- Шаг 2. Задайте папки cache и codegen (пустые поля означают расположение по умолчанию): зелёной кнопкой выберите или создайте папки cache и codegen (рис. 3-2).
- Шаг 3. Нажмите «Запустить генерацию кода Simulink» и дождитесь завершения — код попадёт в папку codegen. Первая генерация занимает время; выполнение Simulink синхронное и медленное, поэтому TSMaster может выдать предупреждение (рис. 3-3).
- Шаг 4. Нажмите кнопку автоматического копирования сгенерированного кода в библиотеку кода мини-программы — отобразится, например, «скопировано 6 файлов». Шаг 2 завершён (рис. 3-4).
- Шаг 5. Интеграция кода. Нажмите «Редактировать исходный код мини-программы», откройте Model1 и перейдите по пути библиотеки кода: там лежат simple.c, simple.h и другие заголовочные файлы. В simple.h — интерфейс из трёх функций: initialize, step и terminate; их вызовы нужно перенести в мини-программу Model1 (рис. 3-5).
- Шаг 6. В мини-программе в глобальных определениях добавьте
#include "simple.h". Затем скопируйте вызов инициализации в событие инициализации программы, вызов step — в функцию step, terminate — в событие остановки. - Шаг 7. Период step. Период по умолчанию — 5 мс, но в модели решатель с фиксированным шагом 0,1 с, то есть 100 мс: дважды щёлкните функцию step и установите период 100.
- Шаг 8. Наблюдение сигнала out1. Правой кнопкой в списке переменных добавьте переменную out1. В коде выходы доступны как члены структуры outports:
simple_Y.out1. Присвойте значение переменной:out1.set(simple_Y.out1)— мини-программа готова (рис. 3-6).






4. Выполнение SIL/HIL-симуляции
Нажмите «Запустить симуляцию» — модель алгоритма начинает работать в реальном времени. Для наблюдения сигналов запустите симуляцию TSMaster и откройте окно графика: правой кнопкой добавьте системную переменную — через внутренние переменные найдите out1 модуля Model1 и задайте диапазон отображения (например, −1…15). График полностью совпадает с осциллографом Simulink; сигнал можно отобразить вертикальными линиями, что лучше отражает его логику (рис. 4-1).

Сигнал out1 обновляется в реальном времени: через шинный интерфейс модель алгоритма можно включить в сеть автомобиля и взаимодействовать с реальными контроллерами. Это и есть простой способ построения HIL модулем управления MATLAB. Модуль входит в лицензию TSMaster MATLAB Controller.