Можно интегрировать пользовательский код, написанный в C или C++ с графиками Stateflow® в моделях Simulink®. Путем обмена данными и функции между пользовательским кодом и диаграммой Stateflow, можно увеличить поддержку Stateflow и усилить программное обеспечение, чтобы использовать в своих интересах существующий ранее код. Для получения дополнительной информации см. Пользовательский код Повторного использования в диаграммах Stateflow.
Задайте опции пользовательского кода в цели симуляции для вашей модели:
Откройте диалоговое окно Model Configuration Parameters.
В диалоговом окне Model Configuration Parameters выберите панель Simulation Target.
Опции пользовательского кода появляются.
Задайте свой пользовательский код в подпанелях.
Следуйте инструкции в Задают Относительные пути к Вашему Пользовательскому коду.
Source file — Введите строки кода, чтобы включать наверху сгенерированного файла исходного кода. Эти строки кода появляются наверху сгенерированного исходного файла
, за пределами любой функции.model.c
Например, можно включать объявления extern int
для глобальных переменных.
Заголовочный файл Введите строки кода, чтобы включать наверху сгенерированного заголовочного файла
, который объявляет пользовательские функции и данные в сгенерированном коде. Эти строки кода появляются наверху всех сгенерированных файлов исходного кода и видимы ко всему сгенерированному коду.model.h
Когда вы включаете пользовательский заголовочный файл, необходимо заключить имя файла в двойные кавычки. Например, #include ''sample_header.h''
является допустимым объявлением для пользовательского заголовочного файла.
Поскольку код, который вы задаете в этой опции, появляется в нескольких исходных файлах, которые соединяются в один двоичный файл, ограничения существуют на том, что можно включать. Например, не включайте определение глобальной переменной, такое как int x;
или тело функции такой как
void myfun(void) { ... }
Эти ошибки соединения причины строк кода, потому что их определения символа появляются многократно в исходных файлах сгенерированного кода. Можно, однако, включать объявления extern
переменных или функций, таких как extern int x;
или extern void myfun(void);
.
Initialize function — Введите операторы кода, которые выполняются однажды в начале симуляции. Используйте этот код, чтобы вызвать функции, которые выделяют память или выполняют другие инициализации вашего пользовательского кода.
Terminate function — Введите операторы кода, которые выполняются в конце симуляции. Используйте этот код, чтобы вызвать функции, которые освобождают память выделенный пользовательским кодом или выполняют другие задачи очистки.
Include directories — Введите разделенный пробелом список путей к папкам, которые содержат пользовательские заголовочные файлы, что вы включаете любого непосредственно (см. опцию Header file), или косвенно в скомпилированной цели.
Source files — Введите список исходных файлов, чтобы скомпилировать и соединиться в цель. Можно разделить исходные файлы запятой, пробелом или новой строкой.
Libraries — Введите разделенный пробелом список статических библиотек, которые содержат код пользовательского объекта, чтобы соединиться в цель.
Нажмите OK.
Если вы хотите восстановить цель, чтобы включать изменения пользовательского кода, выберите Code> C/C++ Code> Build Model в редакторе Stateflow.
Моделируйте свою модель путем нажатия на кнопку воспроизведения на панели инструментов редактора.
Для получения информации об установке опций симуляции с помощью API командной строки смотрите API Командной строки, чтобы Установить Параметры Симуляции и Генерации кода.