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

Вы можете интегрировать пользовательский код, написанный на C или C++ с Stateflow® графики в Simulink® модели. Путем обмена данными и функциями между вашим пользовательским кодом и диаграммой Stateflow, можно расширить возможности Stateflow и использовать программное обеспечение, чтобы использовать преимущества вашего ранее существующего кода.

Диаграммы Stateflow вызывают пользовательские функции кода с помощью того же синтаксиса, что и другие переиспользуемые функции:

return_val = function_name(arg1,arg2,...)

Примечание

Не делитесь данными с фиксированной точкой между пользовательским кодом и диаграммой Stateflow.

Выберите соответствующую процедуру для симуляции

Чтобы выбрать правильную процедуру симуляции, щелкните подсвеченный блок, который лучше всего описывает вашу цель.

Используйте пользовательский код для определения глобальных констант

В этом примере показано, как использовать пользовательский код С для определения констант, которые применяются ко всем графикам в вашей модели.

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

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

Чтобы ввести пользовательский код, который задает две константы:

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

  2. Выберите панель Цель симуляцию (Simulation Target).

  3. В подпанели файл введите #define и #include операторы. Например, в этом примере вы задаете глобальные константы с этим кодом:

#define TRUE 1
#define FALSE 0

Поскольку два пользовательских определения появляются в верхней части сгенерированного файла заголовка машины sf_custom_code_global_constants_sfun.h, можно использовать TRUE и FALSE во всех графиках, которые относятся к этой модели.

Используйте пользовательский код для определения констант, переменных и функций

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

Модель содержит диаграмму Stateflow с входным сигналом от блока Sine Wave.

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

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

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

  2. Выберите панель Цель симуляцию (Simulation Target).

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

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

  5. В подпанели Исходные файлы введите имя исходного файла, который содержит ваш пользовательский код. Для доступа к исходному файлу, который находится в подпапке папки модели, используйте относительное имя пути формы .\subfolder_name\source_file.c.

В этом примере пользовательский код задает три константы, переменную и функцию при помощи этих строений:

  • Файл заголовка подпанели содержит следующий оператора: #include "sf_custom_code_constants_vars_fcns_hdr.h"

  • Подпанель Include directories содержит одну точку (.), чтобы указать, что все пользовательские файлы кода находятся в той же папке, что и модель.

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

Похожие темы