Пользовательский код, написанный на языке C или C++, можно интегрировать с диаграммами Stateflow ® в моделях Simulink ®. Совместное использование данных и функций пользовательского кода и диаграммы Stateflow позволяет расширить возможности Stateflow и использовать программное обеспечение для использования преимуществ существующего кода.
Диаграммы потока состояний вызывают пользовательские функции кода, используя тот же синтаксис, что и другие повторно используемые функции:
return_val = function_name(arg1,arg2,...)
Примечание
Не обменивайтесь данными с фиксированной точкой между пользовательским кодом и диаграммой Stateflow.
Чтобы выбрать правильную процедуру моделирования, щелкните выделенный блок, который наилучшим образом описывает цель.

В этом примере показано, как использовать пользовательский код C для определения констант, применяемых ко всем диаграммам в модели.
Модель содержит диаграмму Stateflow ® с входными данными, для которой можно установить значение 0 или 1, переключив ручной переключатель в модели во время моделирования.

Диаграмма содержит два состояния A и B. В этом примере задаются две константы с именем TRUE и FALSE для защиты переходов между состояниями на диаграмме вместо использования значений 1 и 0. Эти пользовательские определения улучшают читаемость действий диаграммы. TRUE и FALSE не являются объектами данных Stateflow.

Для ввода пользовательского кода, определяющего две константы:
Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters).
Выберите панель Цель моделирования (Simulation Target).
В подпанели Header file введите #define и #include заявления. Например, в этом примере глобальные константы определяются следующим кодом:
#define TRUE 1 #define FALSE 0
Поскольку два пользовательских определения отображаются в верхней части созданного файла заголовка машины sf_custom_code_global_constants_sfun.h, вы можете использовать TRUE и FALSE во всех диаграммах, принадлежащих этой модели.

В этом примере показано, как использовать пользовательский код C для определения констант, переменных и функций, которые применяются ко всем диаграммам в модели.
Модель содержит диаграмму Stateflow с входным сигналом от блока синусоидальной волны.

Диаграмма содержит два состояния A и Bи три объекта данных: input_data, local_data, и out_data. Диаграмма получает доступ к пользовательской переменной с именем my_global и вызывает пользовательскую функцию с именем my_function.

Чтобы настроить модель для доступа к пользовательскому коду:
Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters).
Выберите панель Цель моделирования (Simulation Target).
В подпанели Header file введите #define и #include заявления. При включении пользовательского файла заголовка необходимо заключить имя файла в двойные кавычки.
В вложенной области Включить каталоги введите имя папки, содержащей пользовательские файлы кода. Для доступа к файлам пользовательского кода в подпапке папки модели используйте относительный путь к форме .\subfolder_name.
В подпанели Исходные файлы введите имя исходного файла, содержащего пользовательский код. Для доступа к исходному файлу, находящемуся в подпапке папки модели, используйте относительный путь к форме .\subfolder_name\source_file.c.
В этом примере пользовательский код определяет три константы, переменную и функцию, используя следующие конфигурации:
Подпанель файла заголовка содержит следующую инструкцию: #include "sf_custom_code_constants_vars_fcns_hdr.h"
Подпанель Включить каталоги содержит один период (.), чтобы указать, что все пользовательские файлы кода находятся в той же папке, что и модель.
Подпанель исходного файла содержит следующее имя файла: sf_custom_code_constants_vars_fcns_src.c

Пользовательский файл заголовка sf_custom_code_constants_vars_fcns_hdr.h содержит определения трех констант:
#define TRUE 1 #define FALSE 0 #define MAYBE 2
Файл заголовка также содержит объявления для переменной my_global и функции my_function:
extern int myglobal; extern int my_function(int var1, double var2);
Пользовательский исходный файл sf_custom_code_constants_vars_fcns_src.c компилируется вместе с генерируемым кодом Stateflow в один файл MEX S-функции.
Поскольку пользовательские определения отображаются в верхней части созданного файла заголовка машины sf_custom_code_constants_vars_fcns_sfun.h, доступ к ним можно получить во всех диаграммах, принадлежащих этой модели.