exponenta event banner

Создание прототипов функций

В этом примере показано, как создать и настроить прототип функции.

Конструкция C

double add_function(double u1, double u2)
{ 
   return u1 + u2;
}

Вызов функции с использованием графических функций

1. Открыть пример модели ex_func_SF. В этом примере модель содержит два блока Inport и один блок Outport.

Диаграмма Stateflow содержит графическую функцию, создаваемую нажатием кнопки fx и размещением графической функции в диаграмме Stateflow.

Графическая функция содержит следующую подпись:

output = add_function(u1, u2)

На диаграмме Stateflow приведен пример простого перехода, который вызывает add_function.

2. Откройте обозреватель моделей. В дереве Иерархия модели выберите ex_func_SF > Диаграмма > add_function. На правой панели убедитесь, что параметр «Встроенная функция» установлен как Function.

3. В дереве Иерархия модели (Model Hierarchy) щелкните Диаграмма (Chart). Убедитесь, что на правой панели выбран параметр «Экспорт функций на уровне диаграммы».

4. Чтобы построить модель и создать код, нажмите клавиши Ctrl + B.

ex_func_SF.c содержит сгенерированный код:

/* Function for Chart: '<Root>/Chart' */
void add_function(real_T in1, real_T in2, real_T *output)
{
  *output = in1 + in2;
}

/* Model step function */
void ex_func_SF_step(void)
{
  /* Chart: '<Root>/Chart' incorporates:
   *  Inport: '<Root>/u1'
   *  Inport: '<Root>/u2'
   */
  add_function(u1, u2, &y1);

  /* Outport: '<Root>/y1' */
  rtY.y1_e = y1;
}

Прототип функции управления функцией model_step

1. Открыть пример модели ex_control_step_function.

2. Откройте ракурс «Код». В редакторе сопоставлений кодов перейдите на вкладку «Функции точек входа».

3. В строке функции шага в столбце Предварительный просмотр функции щелкните гиперссылку прототипа. Откроется диалоговое окно конфигурации, используемое для настройки. Первое поле диалогового окна, C function prototype, автоматически обновляется для предварительного просмотра изменений в пошаговой функции.

4. Измените имя функции. Если имя не указано, генератор кода называет функцию на основе правила именования по умолчанию. В этом примере переименуйте функцию, установив для параметра C Step Function Name значение ex_control_run. Предварительный просмотр функции изменяется в соответствии с новым именем функции шага.

5. Настройка аргументов функции шага. Если приложению требуется void-void , снимите флажок Configure arguments for Step function prototype. В этом примере выберите этот параметр.

6. Отобразите текущие настройки по умолчанию для аргументов функции точки входа, щелкнув Получить по умолчанию. Появится обновленная схема.

7. Настройте аргумент возврата функции, установив для аргумента возврата C значение void или один из перечисленных аргументов исходящего сообщения. В этом примере выберите void. Проверьте изменения в окне предварительного просмотра.

8. Сконфигурируйте входные и выходные аргументы функции. Для каждого корневого входа и выхода можно изменить квалификатор типа C и имя аргумента. Дополнительные сведения см. в разделе Настройка имени и аргументов для отдельных функций шага.

Для этого примера:

  • Для u1, установите квалификатор типа C в Value и имя идентификатора C для arg_u1.

  • Для u2, установите квалификатор типа C в Pointer to const и имя идентификатора C для arg_u2.

  • Для исходящего порта задайте для параметра C Identifier Name значение arg_y1.

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

9. Чтобы проверить изменения, нажмите кнопку Проверить.

10. Примените изменения. Нажмите кнопку «Применить». Затем нажмите кнопку ОК.

11. Чтобы построить модель и создать код, нажмите клавиши Ctrl + B.

ex_control_step_function.c содержит сгенерированный код:

void ex_control_run(real_T arg_u1, const real_T *arg_u2, real_T *arg_y1)

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