主要内容

生成されたコ,ドにおけるロ,カルブロック出力の有効化と再利用

以下の例では,ブロック出力をロ,カル変数として指定する方法を示します。コドジェネレタはこれらのロカル変数を生成されたコドで再利用できる可能性があります。ブロック出力をロ,カル変数として宣言すると,rom消費量を節約します。ロ,カル変数を再利用すると、RAM 消費量を節約し、データ コピーを減らし、実行速度が上がります。

モデル例

  1. 轮廓尺寸ブロック,外港ブロック,获得ブロックおよび开关ブロックを使用して,以下のモデルを作成します。この例では,モデルの名前はlocal_variable_exです。

  2. G2の場合,增益ブロックパラメタダアログボックスを開きます。2の値を入力します。

  3. G1に対して,3.の値を入力します。

  4. 开关に対して,[ブロックパラメタ]ダアログボックスを開きます。[1番目の入力が通過する条件]パラメ,タ,で,[u2 >=しきい値]を選択します。

最適化を使用しないコ,ドの生成

  1. [モデルコンフィギュレションパラメタ]ダアログボックスを開きます。[ソルバ]ペ@ @ンを選択します。[タ电子邮箱プ]パラメ,タ,に対し,[固定ステップ]を選択します。

  2. [コンフィギュレ,ションパラメ,タ,][信号ストレ,ジの再利用]チェックボックスをオフにします。

  3. [コ,ド生成],[レポ,ト]ペ电子邮箱ンを選択し,[コ,ド生成レポ,トを作成]を選択します。

  4. [コ,ド生成]ペ@ @ンを選択します。[コ,ド生成のみ]を選択してから,モデルウィンドウでCtrl + Bを押します。コ,ドの生成が完了すると,htmlコ,ド生成レポ,トが開きます。

  5. コ,ド生成レポ,トでlocal_variable_ex.cセクションを選択し,モデルのステップ関数を表示します。增益ブロック出力は,グロ,バル変数local_variable_ex_B。G2local_variable_ex_B。G1です。

/*模型步长函数*/ void local_variable_ex_step(void) {/* Switch: '<根>/Switch'合并:* Inport: '<根>/In1' */ if (local_variable_ex_U. 0)In1 > = 0.0){/ *获得:“< Root > / G2”* / local_variable_ex_B。G2 = 2.0 * local_variable_ex_U.In1;/* Outport: '/Out1' */ local_variable_ex_Y.输出端口:'/Out1'Out1 = local_variable_ex_B.G2;其他}{/ *获得:“< Root > / G1”* / local_variable_ex_B。G1 = 3.0 * local_variable_ex_U.In1;/* Outport: '/Out1' */ local_variable_ex_Y.输出端口:'/Out1'Out1 = local_variable_ex_B.G1;} /* Switch End: '/Switch' */

ロ,カルブロック出力の有効化とコ,ドの生成

  1. [コンフィギュレ,ションパラメ,タ,][信号ストレ,ジの再利用]パラメ,タ,を選択します。[信号ストレ,ジの再利用]は以下の最適化パラメ,タ,を有効にします。

    • ロ,カルなブロックの出力を有効にする

    • ロ,カルブロック出力の再利用

    • 余分なロ,カル変数の削除(式の畳み込み)

  2. [信号ストレ,ジの再利用][余分なロ,カル変数の削除(式の畳み込み)]をオフにします。

  3. コ,ドを生成しモデルのステップ関数を表示します。最適化パラメタ[ロ,カルなブロックの出力を有効にする]を選択したため,モデルのステップ関数には3のロカル変数があります。ロ,カル変数rtb_G2rtb_G1获得ブロックの出力を保持します。ロ,カル変数rtb_Switch开关ブロックの出力を保持します。

/*模型步长函数*/ void local_variable_ex_step(void) {real_T rtb_Switch;real_T rtb_G2;real_T rtb_G1;/* Switch: '<根>/Switch'合并:* Inport: '<根>/In1' */ if (local_variable_ex_U。In1 > = 0.0){/ *获得:“< Root > / G2”* / rtb_G2 = 2.0 * local_variable_ex_U.In1;rtb_Switch = rtb_G2;} else{/*增益:'<根>/G1' */ rtb_G1 = 3.0 * local_variable_ex_U.In1;rtb_Switch = rtb_G1;} /* End of Switch: '/Switch' */ /* Outport: '/Out1' */ local_variable_ex_Y. Outport: '/Out1'Out1 = rtb_Switch;

ロ,カルブロック出力の再利用とコ,ドの生成

  1. [コンフィギュレ,ションパラメ,タ,][ロ,カルブロック出力の再利用]パラメ,タ,を選択します。

  2. コ,ドを生成します。local_variable_ex.cセクションで,モデルのステップ関数を表示します。コドジェネレタが3回使用するロカル変数rtb_G2が1あります。

/*模型步长函数*/ void local_variable_ex_step(void) {real_T rtb_G2;/* Switch: '<根>/Switch'合并:* Inport: '<根>/In1' */ if (local_variable_ex_U。In1 > = 0.0){/ *获得:“< Root > / G2”* / rtb_G2 = 2.0 * local_variable_ex_U.In1;} else{/*增益:'<根>/G1' */ rtb_G2 = 3.0 * local_variable_ex_U.In1;} /* End of Switch: '/Switch' */ /* Outport: '/Out1' */ local_variable_ex_Y. Outport: '/Out1'Out1 = rtb_G2;

余分な一時変数rtb_Switchと関連するデ,タコピ,は生成コ,ドに含まれていません。

参考

関連するトピック