Можно интегрировать пользовательский код, написанный в 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.
Выберите Целевую панель Симуляции.
В подпанели Заголовочного файла введите #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.
Выберите Целевую панель Симуляции.
В подпанели Заголовочного файла введите #define
и #include
операторы. Когда вы включаете пользовательский заголовочный файл, необходимо заключить имя файла в двойные кавычки.
В подпанели директорий Include введите имя папки, которая содержит ваши файлы пользовательского кода. К файлам пользовательского кода доступа в подпапке папки модели используйте относительный путь формы .\subfolder_name
.
В подпанели Исходных файлов введите имя исходного файла, который содержит ваш пользовательский код. Чтобы получить доступ к исходному файлу, который находится в подпапке папки модели, используйте относительный путь формы .\subfolder_name\source_file.c
.
В этом примере пользовательский код задает три константы, переменную и функцию при помощи этих настроек:
Подпанель Заголовочного файла содержит этот оператор: #include "sf_custom_code_constants_vars_fcns_hdr.h"
Подпанель директорий Include содержит один период (.
) указать, что все файлы пользовательского кода находятся в той же папке как модель.
Подпанель Исходного файла содержит это имя файла: 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
, можно получить доступ к ним во всех графиках, которые принадлежат этой модели.