Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

関係演算子および論理演算子

この例では、Simulink® ブロック、Stateflow® チャート、および MATLAB® Function ブロックを使用して関係演算子と論理演算子を実装する方法を示します。

関係演算子または論理演算子のモデル化パターン — Simulink ブロック

モデルに論理演算を含めるには、"Logic and Bit Operations" ライブラリの Logical Operator ブロックを使用します。

1. モデル例 ex_data_type_SL を開きます。

Logical Operator ブロックは、モデルで OR 演算を実行します。演算を変更するには、ブロックをダブルクリックし、[演算子] フィールドをメニューのいずれかの演算に設定します。

Logical Operator ブロックを Relational Operator ブロックに置き換えて関係演算子を実装できます。

2. モデルをビルドしてコードを生成するには、Ctrl+B を押します。

論理演算子 OR を実装するコードが ex_logical_SL.c の関数 ex_logical_SL_step に含まれています。

/* 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.c の関数 ex_logical_SF_step に含まれています。

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

参考