Функциональное прототипирование

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

Конструкция 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. Откройте Model Explorer. В дереве иерархии модели выберите ex_func_SF > График > add_function. На правой панели убедитесь, что для опции Function Inline задано значение Function.

3. В дереве иерархии модели щелкните График. На правой панели убедитесь, что выбран параметр «Экспорт функций уровня графика».

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. Откройте ракурс код. В редакторе Отображения выберите вкладку Entry-Point Functions.

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

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

5. Сконфигурируйте аргументы функции. Если приложению требуется void-void интерфейс, очистить Настройка аргументов для прототипа функции Step. В данном примере выберите эту опцию.

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

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

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

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

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

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

  • Для порта запуска установите имя идентификатора C» arg_y1.

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

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

10. Применить свои изменения. Нажмите Применить. Затем нажмите кнопку OK.

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)

Похожие темы