exponenta event banner

Включить пользовательские функции и структуры кода C

Эта модель показывает, как Stateflow ® позволяет включать и вызывать пользовательские функции кода C.

В этом конкретном примере функция C, определенная в my_function.c и структура, которая определена в my_header.h включены в диаграмму. MY_FUNCTION умножает его входной сигнал на два. Структура в my_header.h определяется следующим образом:

typedef struct { real_T a; int8_T b[10]; } MyStruct;

Модель обращается к элементу структуры с помощью точечной нотации MyStruct.a а также с использованием указателя gMyStructPointerVar ->b[1].

Интеграция кода C в модель

Пользовательские написанные C-файлы можно легко интегрировать в модели Stateflow. Пользовательский код может использоваться для расширения возможностей диаграммы Stateflow и использования преимуществ устаревшего кода.

Чтобы добавить пользовательские C-файлы, откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters), выберите панель Цель моделирования (Simulation Target) и введите:

  • Файл заголовка: заголовок, определяющий функции, структуры и данные, которые будут доступны для Stateflow.

  • Включить каталоги: Путь к папкам, содержащим пользовательский код.

  • Исходные файлы: C-файлы, определяющие функции и данные, доступные Stateflow.

При создании кода с помощью Simulink Coder добавьте те же параметры на панель «Создание кода» > «Пользовательский код».

Вызов кода C из потока Stateflow

Функции: Диаграммы Stateflow вызывают пользовательские функции C-кода, используя тот же синтаксис, что и графические, таблицы истинности, вызовы функций MATLAB ® и Simulink ®:

result = my_custom_function(in_args);

Структуры: Диаграммы Stateflow могут обращаться к переменным структурного типа с помощью точечной нотации:

result = my_var.my_field;

Вызов кода C из потока Stateflow

Пользовательский код C++ также может быть интегрирован в Stateflow и Simulink Coder. Дополнительные сведения см. в разделе Генерация и интеграция кода C++ в Stateflow.

Связанные темы