ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

クラシック初期化モード

クラシック初期化を使用する場合

初期化モードは、Simulink® が条件付き実行サブシステムに対する初期化値をどのように処理するのかを制御します。

[クラシック] モードは R2013b 以前に作成された Simulink モデルの既定の初期化モードでした。以下のような場合は、クラシック モードを引き続き使用できます。

  • 簡易モードによる影響を受けるモデル要素がモデルに含まれていない場合。

  • 簡易モードの動作と要件がモデル化の目的に合わない場合。

  • 簡易モードへの変換に伴う作業量が簡易モードの利点よりも問題になる場合。初期化モードのクラシックから簡易への変換を参照してください。

初期化モードのクラシックへの設定

クラシック初期化モードを設定するには、次を行います。

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

  2. 検索ボックスで、[指定不足の初期化の検出] を入力します。

  3. ドロップダウン リストから [クラシック] を選択します。

クラシック初期化の問題

クラシック初期化モードを使用すると、以下のような問題の 1 つ以上が発生する場合があります。これらの問題は、簡易モードを使用することによって解決できます。各問題の説明には、クラシック モードでの動作の例、簡易モードを使用した場合の動作、簡易モードを使用するために行う必要のある変更の概要を含めています。

  • 恒等変換によるモデル動作の変化

    同一のサブシステムを含む各条件付きサブシステムは、以下の両方が該当する場合、最初の実行の前に異なる初期値を表示する場合があります。

    • モデルがクラシック初期化モードを使用している。

    • 1 つ以上の同一サブシステムが恒等変換ブロックに出力する。

  • Discrete-Time Integrator ブロックまたは S-Function ブロックでの出力の不整合

    クラシック初期化モードを使用し、出力が Discrete-Time Integrator ブロックまたは S-Function ブロックに接続している条件付きサブシステムでは、出力の不整合が発生する場合があります。

  • 並べ替え順序による Merge ブロックの出力への影響

    クラシック初期化モードを使用した条件付きサブシステムの並べ替え順序は、Merge ブロックに接続したときに、Merge ブロックの出力に影響を及ぼす場合があります。ブロックの実行順序が変化すると、予期しない結果が得られる場合があります。

  • Merge ブロックのソース サブシステム ブロックの名前を変更すると、Merge ブロックの初期出力が変わる場合があります。

    独自の初期出力値を指定しない Merge ブロックに 2 つ以上のサブシステムが異なる初期出力値を提供している場合、いずれかのサブシステムの名前を変更すると、クラシック初期化モードの Merge ブロックの初期出力値に影響する可能性があります。

モデルをクラシック モードから簡易モードに変換する場合の作業についての詳細は、初期化モードのクラシックから簡易への変換を参照してください。

恒等変換によるモデル動作の変化

同一のサブシステムを含む各条件付きサブシステムは、以下の両方が該当する場合、最初の実行の前に異なる初期値を表示する場合があります。

  • モデルがクラシック初期化モードを使用している。

  • 1 つ以上の同一サブシステムが恒等変換ブロックに出力する。

恒等変換ブロックは、入力信号の値を変更しないブロックです。恒等変換ブロックの例として、Signal Conversion ブロックや値 1 が設定された Gain ブロックが挙げられます。

ex_identity_transform_cl モデルで、サブシステム A および B が同一ですが、B は Gain ブロックに出力し、さらに Outport ブロックに出力しています。

モデルのシミュレーションを実行したときに、A の初期値 (Scope ブロックの最上位の信号) は 2 ですが、サブシステムが同一でも B の初期値は 0 です。

簡易初期化モードを使用するようモデルを更新した場合 (「ex_identity_transform_simpl」を参照)、モデルの外観は同じに見えます。ex_identity_transform_clex_identity_transform_simpl に変換する上で必要なステップは次のとおりです。

  1. [指定不足の初期化の検出][簡易] に設定します。

  2. サブシステム A および B の Outport ブロックについて、[初期出力の値のソース] パラメーターを [入力信号] に設定します。

    [初期出力値のソース] パラメーターを [ダイアログ] に設定して、[初期出力] パラメーターを 3 に設定する方法でも、動作の結果は同じになります。

更新されたモデルのシミュレーションを実行したときに、恒等変換の接続は結果を変更しません。どちらの場合も出力は一致します。

Discrete-Time Integrator ブロックまたは S-Function ブロックでの出力の不整合

クラシック初期化モードを使用し、出力が Discrete-Time Integrator ブロックまたは S-Function ブロックに接続している条件付きサブシステムでは、出力の不整合が発生する場合があります。

ex_discrete_time_cl モデルで、有効なサブシステムに 2 つの Constant ブロックと、Discrete-Time Integrator ブロックへの出力が含まれています。有効なサブシステムは、2 つの Display ブロックに出力しています。

モデルのシミュレーションを実行すると、2 つの Display ブロックに異なる値が表示されます。

条件付きサブシステムが無効な場合でも、Discrete-Time Integrator ブロックに接続している Constant1 ブロックは実行されます。一番上の Display ブロックには、値 2 が表示されます。この値は、Constant1 ブロックの値です。Constant2 ブロックは実行されないので、一番下の Display ブロックには値 0 が表示されます。

簡易初期化モードを使用するようモデルを更新した場合 (「ex_discrete_time_simpl」を参照)、モデルの外観は同じに見えます。更新されたモデルは、簡易モードを使用することで、出力の不整合の問題を解決します。ex_discrete_time_clex_discrete_time_simpl に変換する上で必要なステップは次のとおりです。

  1. [指定不足の初期化の検出][簡易] に設定します。

  2. Outport ブロック Out1 および Out2 について、[初期出力の値のソース] パラメーターを [入力信号] に設定します。この設定により、初期値 (この場合は 2) を明示的に継承します。

    [初期出力値のソース] パラメーターを [ダイアログ] に設定して、[初期出力] パラメーターを 2 に設定する方法でも、動作の結果は同じになります。

更新されたモデルのシミュレーションを実行すると、Display ブロックに同じ出力が表示されます。両方の Outport ブロックがそれぞれの初期値を継承するので、出力値は 2 になります。

並べ替え順序による Merge ブロックの出力への影響

クラシック初期化モードを使用した条件付きサブシステムの並べ替え順序は、Merge ブロックに接続したときに、Merge ブロックの出力に影響を及ぼす場合があります。ブロックの実行順序が変化すると、予期しない結果が得られる場合があります。動作は、[ディセーブル時の出力] パラメーターをどのように設定しているかに依存します。

ex_basic_merge_sorted_order_1_cl モデルには、同一の有効なサブシステムが 2 つ (Enable A と Enable B) 存在し、Merge ブロックに接続しています。モデルのシミュレーションを実行すると、ブロックの並べ替えられた実行順序が赤い数字で表示されます。

モデルのシミュレーションを実行すると、Scope ブロックは以下のようになります。

ex_basic_merge_sorted_order_2_cl モデルは ex_merge_sorted_1_cl と同じです。ただし、ブロックの実行順序は、既定の実行順序の逆になっています。実行順序を変更するには、次のようにします。

  1. Enable A サブシステムの [プロパティ] ダイアログ ボックスを開いて、[優先順位] パラメーターを 2 に設定します。

  2. Enable B サブシステムの [優先順位]1 に設定します。

異なる実行順序を使ってモデルのシミュレーションを実行すると、Scope ブロックは以下のようになります。

並べ替え順序の変更によって、同一の条件付きサブシステムから異なる結果が生成されます。

モデルを更新して簡易初期化モード (「ex_basic_merge_sorted_order_1_simpl」および「ex_basic_merge_sorted_order_2_simpl」を参照) を使用するには、以下のようにします。

  1. [指定不足の初期化の検出][簡易] に設定します。

Merge ブロックの [初期出力] パラメーターは、既定で空行列 ([]) です。このため初期出力値は、このデータ型の既定の初期値 (つまり、0) に設定されます。既定の初期値についての詳細は、信号値の初期化を参照してください。簡易モード モデルのシミュレーションをそれぞれ実行すると、両方のモデルで同じ結果が生成されます。

[リセット] に設定した [ディセーブル時の出力] パラメーターの使用

ex_merge_sorted_1_cl モデルには、Enabled Subsystem が 2 つ (Enable A と Enable B) 存在し、Merge ブロックに接続しています。モデルのシミュレーションを実行すると、ブロックの並べ替えられた実行順序が赤い数字で表示されます。

モデルのシミュレーションを実行すると、Scope ブロックは以下のようになります。

ex_merge_sorted_2_cl モデルは ex_merge_sorted_1_cl と同じです。ただし、ブロックの実行順序は、既定の実行順序の逆になっています。実行順序を変更するには、次のようにします。

  1. Enable A サブシステムの [プロパティ] ダイアログ ボックスを開いて、[優先順位] パラメーターを 2 に設定します。

  2. Enable B サブシステムの [優先順位]1 に設定します。

異なる実行順序を使ってモデルのシミュレーションを実行すると、Scope ブロックは以下のようになります。

並べ替え順序の変更によって、同一の条件付きサブシステムから異なる結果が生成されます。

モデルを更新して簡易初期化モード (「ex_merge_sorted_1_simpl」および「ex_merge_sorted_2_simpl」を参照) を使用するには、以下のようにします。

  1. [指定不足の初期化の検出][簡易] に設定します。

  2. Enable A および Enable B の Outport ブロックについて、[ディセーブル時の出力] パラメーターを [保持] に設定します。簡易モードは、Merge ブロックを駆動する条件付きサブシステムの出力端子に対して [リセット] をサポートしません。

簡易モード モデルのシミュレーションをそれぞれ実行すると、両方のモデルで同じ結果が生成されます。

関連するトピック