Relational and Logical Operators

This example shows how to implement relational and logical operators by using Simulink blocks, Stateflow Charts, and MATLAB Function blocks.

Modeling Pattern for Relational or Logical Operators — Simulink Blocks

To include a logical operation in your model, use the Logical Operator block from the Logic and Bit Operations library.

1. Open example model ex_data_type_SL.

The Logical Operator block performs an OR operation in the model. To change the operation, double-click the block and set the Operator field to any of the operations in the menu.

You can implement relational operators by replacing the Logical Operator block with a Relational Operator block.

2. To build the model and generate code, press Ctrl+B.

The code implementing the logical operator OR is in the ex_logical_SL_step function in 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);
}

Modeling Pattern for Relational and Logical Operators — Stateflow Chart

1. Open example model ex_data_type_SF.

In the Stateflow chart, the relational or logical operation actions are on the transition from one junction to another. Relational statements specify conditions to conditionally allow a transition. In that case, the statements are within square brackets.

2. To build the model and generate code, press Ctrl+B.

The code implementing the logical operator OR is in the ex_logical_SF_step function in 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);
}

Modeling Pattern for Relational and Logical Operators — MATLAB Function Block

This example shows the MATLAB Function block method for incorporating operators into the generated code by using a relational operator.

1. Open example model ex_logical_ML.

2. The MATLAB Function Block contains this function:

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

3. To build the model and generate code, press Ctrl+B.

The generated code appears in 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);
}

See Also