Можно задать пользовательские структуры в коде С, который можно интегрировать с графиком Stateflow® в модели Simulink® для симуляции и генерации кода. Например, модель sf_bus_demo использует пользовательскую функцию C, чтобы записать в выходную структуру outbus. Путем обмена данными с пользовательским кодом можно увеличить возможности, поддержанные Stateflow, и использовать в своих интересах существующий ранее код. Для получения дополнительной информации см. Пользовательский код Повторного использования в диаграммах Stateflow и доступе к Сигналам Шины Через Структуры Stateflow.

В вашем коде С задайте структуру путем создания пользовательского заголовочного файла. Заголовочный файл содержит объявления typedef, совпадающие со свойствами объекта Simulink.Bus, который задает структуру Stateflow. Например, в модели sfbus_demo, заголовочный файл counterbus.h объявляет три пользовательских структуры:
...
typedef struct {
int input;
} SIGNALBUS;
typedef struct {
int upper_saturation_limit;
int lower_saturation_limit;
} LIMITBUS;
typedef struct {
SIGNALBUS inputsignal;
LIMITBUS limits;
} COUNTERBUS;
...
В Редакторе Шины задайте объект Simulink.Bus, который совпадает с каждой пользовательской структурой объявление typedef. В поле Header file каждого объекта Simulink.Bus введите имя заголовочного файла, который содержит соответствующее объявление typedef.

Сконфигурируйте свой график языка действия C, чтобы включать пользовательский код С.
Чтобы включать пользовательский код для симуляции, смотрите доступ к Пользовательскому коду С в Графиках Небиблиотеки.
Чтобы включать пользовательский код для генерации кода, смотрите, Интегрируют Внешний Код при помощи Образцовых Параметров конфигурации (Simulink Coder).
Создайте и запустите свою модель.
Когда вы пишете функции пользовательского кода, которые берут указатели структуры в качестве аргументов, передают структуры Stateflow адресом. Чтобы передать адрес структуры Stateflow или одно из ее полей к пользовательской функции, используйте оператор & и запись через точку:
&outbus обеспечивает адрес структуры Stateflow outbus.
&outbus.inputsignal обеспечивает адрес подструктуры inputsignal структуры outbus.
&outbus.inputsignal.input обеспечивает адрес поля input подструктуры outbus.inputsignal.
Для получения дополнительной информации смотрите Индексные Подструктуры и Поля.
Например, модель sfbus_demo содержит пользовательскую функцию C counterbusFcn, который берет указатели структуры в качестве аргументов. Пользовательский заголовочный файл содержит это объявление функции:
extern void counterbusFcn
(COUNTERBUS *u1, int u2, COUNTERBUS *y1, int *y2);График передает адреса структурам Stateflow counterbus_struct и outbus при помощи этого вызова функции:
counterbusFcn(&counterbus_struct, u2, &outbus, &y2);

Функция читает значение входа u2 графика и локальной структуры counterbus_struct. Это пишет в график выводу y2 и выходной структуре outbus.