Можно задать пользовательские структуры в коде С, который можно интегрировать с графиком Stateflow® в модели Simulink® для симуляции и генерации кода. Например, модель sf_bus_demo использует пользовательскую функцию C, чтобы записать в структуру output 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 и структура output outbus.