exponenta event banner

Если-иначе

В этом примере показано, как реализовать конструкцию if-else с помощью блоков Simulink, диаграмм Stateflow и блоков MATLAB Function.

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

if (u1 > u2)
{
  y1 = u1;
}
else
{
  y1 = u2;
}

Моделирование шаблона для блока If-Else: Switch

Один метод создания if-else оператор должен использовать блок Switch из библиотеки Simulink > Signal Routing.

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

Модель содержит блок Switch с параметром блока Criteria для передачи первого ввода u2~=0. Программа выбирает u1 если u2 является TRUE, в противном случае u2 проходит.

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

Код, реализующий if-else конструкция находится в ex_if_else_SL_step функция в ex_if_else_SL.c:

/* External inputs (root inport signals with default storage) */
ExternalInputs U;

/* External outputs (root outports fed by signals with default storage) */
ExternalOutputs Y;

/* Model step function */
void ex_if_else_SL_step(void)
{
  /* Switch: '<Root>/Switch' incorporates:
   *  Inport: '<Root>/u1'
   *  Inport: '<Root>/u2'
   *  RelationalOperator: '<Root>/Relational Operator'
   */
  if (U.u1 > U.u2) {
    /* Outport: '<Root>/y1' */
    Y.y1 = U.u1;
  } else {
    /* Outport: '<Root>/y1' */
    Y.y1 = U.u2;
  }

  /* End of Switch: '<Root>/Switch' */
}

Шаблон моделирования для диаграммы If-Else: Stateflow

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

Модель содержит If-Else шаблон решения, добавляемый щелчком правой кнопкой мыши внутри диаграммы > Добавить шаблон в диаграмме > Решение > Если-иначе.

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

Код, реализующий if-else конструкция находится в ex_if_else_SF_step функция в ex_if_else_SF.c:

/* External inputs (root inport signals with default storage) */
ExternalInputs U;

/* External outputs (root outports fed by signals with default storage) */
ExternalOutputs Y;

/* Model step function */
void ex_if_else_SF_step(void)
{
  /* Chart: '<Root>/Chart' incorporates:
   *  Inport: '<Root>/u1'
   *  Inport: '<Root>/u2'
   */
  /*  If-Else  */
  if (U.u1 > U.u2) {
    /* Outport: '<Root>/y1' */
    Y.y1 = U.u1;
  } else {
    /* Outport: '<Root>/y1' */
    Y.y1 = U.u2;
  }

  /* End of Chart: '<Root>/Chart' */
}

Модель моделирования для If-Else: Функциональный блок MATLAB

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

2. Функциональный блок MATLAB содержит следующую функцию:

function y1 = fcn(u1, u2)
if u1 > u2;
    y1 = u1;
else y1 = u2;
end

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

Код, реализующий if-else конструкция находится в ex_if_else_ML_step функция в ex_if_else_ML.c:

/* External inputs (root inport signals with default storage) */
ExternalInputs U;

/* External outputs (root outports fed by signals with default storage) */
ExternalOutputs Y;

/* Model step function */
void ex_if_else_ML_step(void)
{
  /* MATLAB Function: '<Root>/MATLAB Function' incorporates:
   *  Inport: '<Root>/u1'
   *  Inport: '<Root>/u2'
   */
  if (U.u1 > U.u2) {
    /* Outport: '<Root>/y1' */
    Y.y1 = U.u1;
  } else {
    /* Outport: '<Root>/y1' */
    Y.y1 = U.u2;
  }

  /* End of MATLAB Function: '<Root>/MATLAB Function' */
}

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