В этом примере показано, как реализовать конструкцию if-else при помощи блоков Simulink, диаграмм Stateflow и блока MATLAB function.
if (u1 > u2) { y1 = u1; } else { y1 = u2; }
Один метод, чтобы создать if-else
оператор должен использовать блок switch от библиотеки Simulink> Signal Routing.
1. Открытая модель ex_if_else_SL
в качестве примера.
Модель содержит блок switch с Критериями параметров блоков передачи первого входа 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' */ }
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' */ }
1. Открытая модель ex_if_else_ML
в качестве примера.
2. Блок MATLAB function содержит эту функцию:
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' */ }