Main Content

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

論理信号の boolean データを使用した生成コードの最適化

論理信号を boolean データとして保存し、生成されたコードを最適化します。モデル コンフィギュレーション パラメーター [boolean データ (対 double) として論理信号を処理] を選択すると、論理信号を生成するブロックは boolean 信号を出力します。

最適化により、以下が実現されます。

  • ROM と RAM の消費を低減する。

  • 実行速度が向上する。

モデル例

モデル LogicalAsBoolean について見ていきます。Relational OperatorLogical Operator および HitCrossing ブロックの出力は double です (これらが logical データを表す場合であっても)。

model = 'LogicalAsBoolean';
open_system(model);

コードの生成

モデルを作成します。

slbuild(model)
### Starting build procedure for: LogicalAsBoolean
### Successful completion of build procedure for: LogicalAsBoolean

Build Summary

Top model targets built:

Model             Action                        Rebuild Reason                                    
==================================================================================================
LogicalAsBoolean  Code generated and compiled.  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 25.463s

最適化を行わない生成コードを表示します。以下のコード行は LogicalAsBoolean.h にあります。

hfile = fullfile('LogicalAsBoolean_grt_rtw',...
    'LogicalAsBoolean.h');
coder.example.extractLines(hfile,'/* External outputs','/* Parameters (default storage) */',1,0);
/* External outputs (root outports fed by signals with default storage) */
typedef struct {
  real_T Out1;                         /* '<Root>/Out1' */
  real_T Out2;                         /* '<Root>/Out2' */
  real_T Out3;                         /* '<Root>/Out3' */
} ExtY_LogicalAsBoolean_T;

最適化の有効化

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。

  2. [boolean データ (対 double) として論理信号を処理] パラメーターを選択します。

代わりに、コマンド ライン API を使用して最適化を有効にできます。

set_param(model,'BooleanDataType','on');

最適化を使用したコードの生成

生成コードは論理信号出力を boolean データとして格納します。

モデルを作成します。

slbuild(model)
### Starting build procedure for: LogicalAsBoolean
### Successful completion of build procedure for: LogicalAsBoolean

Build Summary

Top model targets built:

Model             Action                        Rebuild Reason                   
=================================================================================
LogicalAsBoolean  Code generated and compiled.  Generated code was out of date.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 10.281s

最適化を行った生成コードを表示します。以下のコード行は LogicalAsBoolean.h にあります。

coder.example.extractLines(hfile,'/* External outputs','/* Parameters (default storage) */',1,0);
/* External outputs (root outports fed by signals with default storage) */
typedef struct {
  boolean_T Out1;                      /* '<Root>/Out1' */
  boolean_T Out2;                      /* '<Root>/Out2' */
  boolean_T Out3;                      /* '<Root>/Out3' */
} ExtY_LogicalAsBoolean_T;

モデルおよびコード生成レポートを閉じます。

bdclose(model)

参考

関連するトピック