Операторы отношения и логические операторы

Этот пример показывает, как реализовать операторы отношения и логические операторы при помощи блоков Simulink, диаграмм Stateflow и блоков MATLAB function.

Моделирование шаблона для операторов отношения или логических операторов — блоки Simulink

Чтобы включать логическую операцию в вашу модель, используйте блок Logical Operator от библиотеки Logic и Bit Operations.

1. Открытая модель ex_data_type_SL в качестве примера.

Блок Logical Operator выполняет операцию OR в модели. Чтобы изменить операцию, дважды кликните блок и установите поле Operator на любую из операций в меню.

Можно реализовать операторы отношения, заменив блок Logical Operator на блок Relational Operator.

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);
}

Моделирование шаблона для операторов отношения и логических операторов — диаграмма Stateflow

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 function

Этот пример показывает метод блока MATLAB function для слияния операторов в сгенерированный код при помощи оператора отношения.

1. Открытая модель ex_logical_ML в качестве примера.

2. Блок MATLAB function содержит эту функцию:

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);
}

Смотрите также