exponenta event banner

Повторное использование пользовательского кода в диаграммах потока состояний

Пользовательский код, написанный на языке 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.

Для ввода пользовательского кода, определяющего две константы:

  1. Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters).

  2. Выберите панель Цель моделирования (Simulation Target).

  3. В подпанели 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.

Чтобы настроить модель для доступа к пользовательскому коду:

  1. Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters).

  2. Выберите панель Цель моделирования (Simulation Target).

  3. В подпанели Header file введите #define и #include заявления. При включении пользовательского файла заголовка необходимо заключить имя файла в двойные кавычки.

  4. В вложенной области Включить каталоги введите имя папки, содержащей пользовательские файлы кода. Для доступа к файлам пользовательского кода в подпапке папки модели используйте относительный путь к форме .\subfolder_name.

  5. В подпанели Исходные файлы введите имя исходного файла, содержащего пользовательский код. Для доступа к исходному файлу, находящемуся в подпапке папки модели, используйте относительный путь к форме .\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, доступ к ним можно получить во всех диаграммах, принадлежащих этой модели.

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