Вы можете интегрировать пользовательский код, написанный на 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.
Чтобы ввести пользовательский код, который задает две константы:
Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters).
Выберите панель Цель симуляцию (Simulation Target).
В подпанели файл введите #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
.
Чтобы сконфигурировать модель для доступа к пользовательскому коду:
Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters).
Выберите панель Цель симуляцию (Simulation Target).
В подпанели файл введите #define
и #include
операторы. Когда вы включаете пользовательский файл заголовка, необходимо заключить имя файла в двойные кавычки.
В подпанели Include directories введите имя папки, содержащей ваши файлы пользовательского кода. Для доступа к файлам пользовательского кода в подпапке папки модели используйте относительное имя пути формы .\subfolder_name
.
В подпанели Исходные файлы введите имя исходного файла, который содержит ваш пользовательский код. Для доступа к исходному файлу, который находится в подпапке папки модели, используйте относительное имя пути формы .\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
, вы можете получить доступ к ним во всех графиках, которые относятся к этой модели.