Main Content

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

モデルの離散化

モデルの離散化とは

モデルの離散化では、Simulink® の連続ブロックをその離散ブロックに選択的に置き換えます。デジタル コントローラーの設計において、またハードウェアのインザループ シミュレーションのために、離散化は重要なステップです。

モデルの離散化を使用すると、次の操作を実行できます。

  • モデルの連続ブロックの識別

  • ブロックのパラメーターを連続から離散へ変換

  • モデル中のすべての連続ブロック、または選択したブロックに離散化の設定値を適用

  • 元の連続ブロックと共に複数の離散化候補ブロックを含む Variant Subsystem を作成

  • 各種の離散化候補ブロックを相互に切り替え、結果として得られるモデル シミュレーションを評価

モデルの離散化はマスク サブシステムをサポートしていません。

必要条件

モデルの離散化の使用には、次の要件があります。

  • Version 5.2 以降の Control System Toolbox™ ライセンスがなければなりません。

  • モデルが、いかなる旧式のブロックも含んでいないことと Simulink の現在のバージョンにアップグレードされていることを確認します。詳細については、モデルのアップグレードを参照してください。

  • 既存のモデル内の Configurable Subsystem ブロックは Variant Subsystem に変換されなければなりません。詳細については、Configurable Subsystem の Variant Subsystem への変換を参照してください。

モデルの離散化ツールでのモデルの離散化

この例では、モデルの離散化を使用して f14 モデルを離散化する方法を示します。

model='f14';
open_system(model)

モデルの離散化のワークフロー

モデルを離散化するには、以下の手順で行います。

モデルの離散化を開始する

ツールを開くには、Simulink エディターの [アプリ] タブで、[アプリ][制御システム][モデルの離散化] をクリックします。

[Simulink モデルの離散化] が開きます。

Open Model Discretizer for f14 model

または、関数 slmdldiscui を使用して、MATLAB® コマンド ウィンドウから [モデルの離散化] を開くことができます。

次のコマンド シーケンスは、f14 モデルと共に [Simulink モデルの離散化] ウィンドウを開きます。

openExample('f14');
slmdldiscui('f14')

[モデルの離散化] から新しいモデルまたはライブラリを開くには、[ファイル][モデルの読み込み] を選択します。

変換方法を指定する

変換方法は、離散化で使用するアルゴリズムのタイプを指定します。各種の変換方法の詳細については、Control System Toolbox を参照してください。

[変換手法] リストには、次のオプションがあります。

変換手法説明

ゼロ次ホールド

入力のゼロ次ホールド

1 次ホールド

入力のゼロ次ホールド線形内挿

双一次 (Tustin) 変換

双一次 (Tustin) 変換

プリワーピング付き双一次 (Tustin) 変換

周波数プリワーピングを含む双一次変換

極-零点マッチング法

極-零点マッチング法 (SISO システムのみ)

サンプル時間を指定する

[サンプル時間] フィールドにサンプル時間を入力します。モデルの離散化の場合、この値は数値でなければなりません。

離散ブロックまたは Variant Subsystem の 2 要素ベクトルを入力してオフセット時間を指定することができます。最初の要素はサンプル時間で、2 番目の要素はオフセット時間です。たとえば、「[1.0 0.1]」と入力すると、0.1 秒のオフセットを有する 1.0 秒のサンプル時間が指定されます。オフセットを指定しなかった場合、既定の設定は 0 になります。

s 領域でブロックを離散化するときに、ワークスペース変数を入力することができます。離散ブロック (s 領域でパラメーターを入力)を参照してください。

離散化方法を指定する

[現在の選択の置換] フィールドで離散化方法を指定します。次のオプションがあります。

離散化手法説明

離散ブロック (s 領域でパラメーターを入力)

パラメーターが、対応する連続ブロックから保持される離散ブロックを作成します。

離散ブロック (z 領域でパラメーターを入力)

パラメーターがブロックのダイアログへ直接配置される "ハードコード化された" 値である離散ブロックを作成します。

Variant Subsystem (s 領域でパラメーターを入力)

現在の選択設定で s 領域値を使用して、複数の離散化候補ブロックを作成します。

Variant Subsystem (z 領域でパラメーターを入力)

現在の選択肢に対応する z 領域で、複数の離散化候補ブロックを作成します。

離散ブロック (s 領域でパラメーターを入力).  パラメーターが、対応する連続ブロックから保持される離散ブロックを作成します。また、サンプル時間と離散化パラメーターもブロックのパラメーター ダイアログ ボックスにあります。

このブロックは、マスク初期化コード中で連続パラメーターを離散パラメーターに変換するときに c2d (Control System Toolbox) を使用するマスク離散ブロックとして実装されています。

このブロックには、サンプル時間がゼロに変更された場合に元の連続的な動作を示すように戻る独自の機能があります。サンプル時間をワークスペース変数として入力すると ('Ts' など)、連続から離散に切り替えたり離散から連続に戻したりすることも簡単にできます。サンプル時間を指定するを参照してください。

メモ

モデルからコードを生成したときに、モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスで [既定のパラメーター動作][インライン] に設定されている場合はパラメーターは調整できません。

次の図は、双一次変換メソッドを使用して s 領域で離散化されている Transfer Function ブロックの隣に連続 Transfer Function ブロックを示したものです。各ブロックの [ブロック パラメーター] ダイアログ ボックスをブロックの下に示します。

離散ブロック (z 領域でパラメーターを入力).  パラメーターがブロックのダイアログ ボックスへ直接配置される "ハードコード化された" 値である離散ブロックを作成します。モデルの離散化では、関数 c2d (Control System Toolbox) を使用し、必要に応じて、離散化されたパラメーターを取得します。

関数 c2d (Control System Toolbox) のヘルプについては、コマンド ウィンドウで次のコマンドを入力してください。

help c2d

次の図は、z 領域で離散化してある Transfer Function ブロックの隣に連続 Transfer Function ブロックを示したものです。各ブロックの [ブロック パラメーター] ダイアログ ボックスをブロックの下に示します。

メモ

モデルの離散化を実行した後に元の連続パラメーター値に正確に戻したいときは、s 領域でパラメーターを入力してください。

Variant Subsystem (s 領域でパラメーターを入力).  現在の選択設定で s 領域値を使用して、複数の離散化候補ブロックを作成します。パラメーターが、対応する連続ブロックから保持される離散ブロックを作成します。​

このオプションをオンにすると、[Variant Subsystem 内のブロックの場所] フィールドがアクティブになります。このオプションでは、Variant Subsystem を新規作成できます。

Variant Subsystem (z 領域でパラメーターを入力).  現在の選択肢に対応する z 領域で、複数の離散化候補ブロックを作成します。パラメーターがブロックのダイアログへ直接配置される "ハードコード化された" 値である離散ブロックを作成します。​

このオプションをオンにすると、[Variant Subsystem 内のブロックの場所] フィールドがアクティブになります。このオプションでは、Variant Subsystem を新規作成できます。

ブロックを離散化する

ライブラリにリンクしているブロックを離散化するには、ライブラリ自身の中のブロックを離散化するか、モデル ウィンドウ内のライブラリ リンクを使用不可にしなければなりません。

[ファイル] メニューから [モデルの読み込み] を選択すると、モデルの離散化からライブラリを開くことができます。

ブロックを右クリックして、コンテキスト メニューから [ライブラリ リンク][リンクを無効にする] を選択すると、ライブラリ リンクを無効にできます。

ブロックの離散化には、以下の 2 つの方法があります。

ブロックを選択し、離散化する

  1. [モデルの離散化] ツリー表示ペインから単一または複数のブロックを選択します。

    複数のブロックを選択するには、キーボードの Ctrl ボタンを押したままそれらのブロックを選択します。

    メモ

    [モデルの離散化] ツリー表示からブロックを選択しなければなりません。エディターでブロックをクリックしても、そのブロックを離散化対象として選択できません。

  2. 1 つのブロックを選択した場合は、[離散化] メニューから [現在のブロックの離散化] を選択します。複数のブロックを選択した場合は、[離散化] メニューから [選択したブロックの離散化] を選択します。

    また、以下に示されている [離散化] ボタンをクリックして現在のブロックを離散化することもできます。

離散化設定値を格納し、モデル中の選択されたブロックに適用する

  1. 現在のブロックについて離散化設定値を入力します。

  2. [設定の保存] をクリックします。

    あらかじめ設定されたブロック グループに、入力した離散化設定値をもつブロックが追加されます。

  3. 必要に応じて、ステップ 1 および 2 を繰り返します。

  4. [離散化] メニューから [プリセット ブロックの離散化] を選択します。

Variant Subsystem からの離散化候補ブロックの削除

[Variant Subsystem 内のブロックの場所] フィールドで離散化候補ブロックを選択し、[削除] ボタンをクリックすると、Variant Subsystem から離散化候補ブロックを削除できます。

離散化の取消し

離散化を取り消すには、[離散化を元に戻す] ボタンをクリックします。

または、[離散化] メニューから、[離散化の取り消し] を選択することもできます。

この操作により、現在選択してあるブロックとその子ブロックにおいて離散化が取り消されます。たとえば、サブシステムについて取り消し操作を実行すると、サブシステムのすべてのレベルの階層にあるすべてのブロックから離散化が削除されます。

離散化モデルの表示

[モデルの離散化] は、モデルを階層ツリーで表示します。

離散化ブロックの表示

ツリー表示内のブロック アイコンは、そのブロックが離散化されたときに "z" が付加されて強調表示されます。

次の図は 2 つの離散化候補ブロックを有する Variant Subsystem に離散化された Aircraft Dynamics Model サブシステムを示したものです。

Discretize Aircraft Dynamics Model subsystem

この f14 モデル中の他のブロックはまだ離散化されていません。

次の図は、元の連続モデルと 2 つの離散化候補ブロックを含む Variant Subsystem に離散化した後の f14 のモデル例の Aircraft Dynamics Model サブシステムを示したものです。

Result of discretization of Aircraft Dynamics Model subsystem

次の図は 2 つの離散化候補ブロックを有する Aircraft Dynamics Model Variant Subsystem を示したものです。

Aircraft Dynamics Model variant subsystem with the two discretization candidates

モデルの離散化のモデル表示の更新

モデルに変更を加えたときに、モデルの [モデルの離散化] ツリー ビューを更新するには、[更新] ボタンをクリックします。

あるいは、[ビュー][更新] を選択することもできます。

Simulink モデルからのブロックの離散化

Discretizing ライブラリを使用して、Simulink モデル中の連続ブロックを s 領域で離散化された等価なブロックに置き換えることができます。

次の方法は、f14 モデルの Aircraft Dynamics Model サブシステム内の連続 Transfer Fcn ブロックを Discretizing ライブラリの離散化 Transfer Fcn ブロックに置き換える方法を示しています。ブロックは、ゼロ次ホールド変換手法と 2 秒のサンプル時間を使用して s 領域で離散化されます。

  1. f14 モデルを開きます。

  2. f14 モデルで Aircraft Dynamics Model サブシステムを開きます。

  3. Discretizing ライブラリ ウィンドウを開きます。

    MATLAB コマンド プロンプトで「discretizing」と入力します。

    ライブラリ: discretizing ウィンドウが表示されます。

    このライブラリには s 領域で離散化されたブロックが含まれます。

  4. Discretized Transfer Fcn ブロック (初期状態) を [f14/Aircraft Dynamics Model] ウィンドウに追加します。

    1. [ライブラリ: discretizing] ウィンドウの Discretized Transfer Fcn ブロックをクリックします。

    2. そのブロックを [f14/Aircraft Dynamics Model] ウィンドウにドラッグします。

  5. Transfer Fcn.1 ブロックのパラメーター ダイアログ ボックスを開きます。

    [f14/Aircraft Dynamics Model] ウィンドウで Transfer Fcn.1 ブロックをダブルクリックします。

    [ブロック パラメーター: Transfer Fcn.1] ダイアログ ボックスが開きます。

  6. Discretized Transfer Fcn ブロックのパラメーター ダイアログ ボックスを開きます。

    [f14/Aircraft Dynamics Model] ウィンドウで Discretized Transfer Fcn ブロックをダブルクリックします。

    [ブロック パラメーター: Discretized Transfer Fcn] ダイアログ ボックスが表示されます。

    Transfer Fcn.1 ブロックのダイアログ ボックスから Discretized Transfer Fcn ブロックのダイアログ ボックスにパラメーター情報をコピーします。

  7. [サンプル時間] フィールドに「2」と入力します。

  8. [メソッド] ドロップダウン リストから zoh を選択します。

    この時点で、Discretized Transfer Fcn のパラメーター ダイアログ ボックスは次のようになります。

  9. [OK] をクリックします。

    この時点で、[f14/Aircraft Dynamics Model] ウィンドウは次のようになります。

  10. 元の Transfer Fcn.1 ブロックを削除します。

    1. Transfer Fcn.1 ブロックをクリックします。

    2. Delete キーを押します。

      この時点で、[f14/Aircraft Dynamics Model] ウィンドウは次のようになります。

  11. Discretized Transfer Fcn ブロックをモデルに追加します。

    1. Discretized Transfer Fcn ブロックをクリックします。

    2. モデルを完成させるには、Discretized Transfer Fcn ブロックを適切な位置にドラッグします。

      この時点で、[f14/Aircraft Dynamics Model] ウィンドウは次のようになります。

関数 sldiscmdl でのモデルの離散化

MATLAB コマンド ウィンドウから Simulink モデルを離散化するには、関数 sldiscmdl を使用します。関数 sldiscmdl は、変換方法、サンプル時間、および離散化方法を指定することができます。

たとえば、次のコマンドを使用して、ゼロ次ホールド変換法で、サンプル時間を 1 秒とし、s 領域で f14 モデルを離散化することができます。

sldiscmdl('f14',1.0,'zoh')

参考

|

関連するトピック