exponenta event banner

Реляционные и логические операторы

В этом примере показано, как реализовать реляционные и логические операторы с помощью блоков Simulink, State Flow Charts и MATLAB Function.

Модель моделирования для реляционных или логических операторов - блоки Simulink

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

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

Блок логического оператора выполняет операцию ИЛИ в модели. Чтобы изменить операцию, дважды щелкните блок и установите в поле «Оператор» любую из операций в меню.

Реляционные операторы можно реализовать путем замены блока логического оператора блоком реляционного оператора.

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

Код, реализующий логический оператор OR, находится в ex_logical_SL_step функция в ex_logical_SL.c.

/* Exported block signals */
boolean_T u1;                          /* '<Root>/u1' */
boolean_T u2;                          /* '<Root>/u2' */
boolean_T y1;                          /* '<Root>/y1' */

/* Model step function */
void ex_logical_SL_step(void)
{
  /* Outport: '<Root>/y1' incorporates:
   *  Inport: '<Root>/u1'
   *  Inport: '<Root>/u2'
   *  Logic: '<Root>/Logical Operator'
   */
  y1 = (u1 || u2);
}

Модель моделирования для реляционных и логических операторов - диаграмма потока состояний

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

На диаграмме Stateflow действия реляционной или логической операции находятся на переходе от одного соединения к другому. Реляционные операторы определяют условия для условного разрешения перехода. В этом случае заявления заключены в квадратные скобки.

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

Код, реализующий логический оператор OR, находится в ex_logical_SF_step функция в ex_logical_SF.c.

/* Exported block signals */
boolean_T u1;                          /* '<Root>/u1' */
boolean_T u2;                          /* '<Root>/u2' */
boolean_T y1;                          /* '<Root>/Logical Operator' */

/* Model step function */
void ex_logical_SF_step(void)
{
  /* Chart: '<Root>/Logical Operator' incorporates:
   *  Inport: '<Root>/u1'
   *  Inport: '<Root>/u2'
   */
  y1 = (u1 || u2);
}

Модель моделирования для реляционных и логических операторов - функциональный блок MATLAB

В этом примере показан метод блока функций MATLAB для включения операторов в сгенерированный код с помощью реляционного оператора.

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

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

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

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

Созданный код появится в ex_data_type_ML.c:

/* Exported block signals */
real_T u1;                             /* '<Root>/u1' */
real_T u2;                             /* '<Root>/u2' */
boolean_T y;                           /* '<Root>/MATLAB Function' */

/* Model step function */
void ex_logical_ML_step(void)
{
  /* MATLAB Function: '<Root>/MATLAB Function' incorporates:
   *  Inport: '<Root>/u1'
   *  Inport: '<Root>/u2'
   */
  y = (u1 > u2);
}

См. также