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

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

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

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

Примечание

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

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

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

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

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

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

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

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

  1. Откройте диалоговое окно Model Configuration Parameters.

  2. Выберите Целевую панель Симуляции.

  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. Выберите Целевую панель Симуляции.

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

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

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

Похожие темы