システムおよびサブシステム内のサンプル時間
システムについて、そのシステムにおける信号のダイナミクスの観点から記述することができます。Simulink® では、信号の "サンプル時間" は、信号値を更新するモデル要素がいつ実行されるかを示します。たとえば、離散サンプル時間をもつ信号の場合、その信号を生成するブロックは、固定の間隔で区切られるシミュレーションの離散時間点でのみ実行されます。連続サンプル時間をもつ信号を生成するブロックは、シミュレーションのすべてのタイム ステップで実行されて新しい信号値を提供します。詳細については、サンプル時間のタイプを参照してください。
Simulink モデル内のシステムとサブシステムは、そのシステムとサブシステムに含まれるサンプル時間の観点から記述できます。
"離散システム" は、離散サンプル時間のみを含みます。
"連続システム" は、離散サンプル時間を含みません。
"ハイブリッド システム" は、"ミックスドシグナル システム" とも呼ばれ、離散サンプル時間と連続サンプル時間が混在しています。
"マルチレート システム" は、複数のサンプル時間を含みます。
マルチレート システムについては、システム内のすべてのサンプル時間が離散であれば離散になります。また、離散サンプル時間と連続サンプル時間の両方を含むマルチレート システムはハイブリッドになります。
離散システム内のサンプル時間
離散システムには離散サンプル時間のみが含まれ、離散アルゴリズムを実装するブロックがよく使用されます。離散システムは、固定ステップまたは可変ステップのいずれかのソルバーを使用してシミュレートできます。固定ステップと可変ステップのどちらのソルバーでも、シミュレーションのステップ サイズを特定または評価するときにモデル内の離散サンプル時間が考慮されます。
可変ステップ ソルバーの [最大ステップ サイズ] パラメーターの値は、モデル内で最も小さい離散サンプル時間以下でなければなりません。
固定ステップ ソルバーの [固定ステップ サイズ (基本サンプル時間)] パラメーターの値は、モデル内のサンプル時間の公約数でなければなりません。
マルチレート離散システムのシミュレーションで使用されるタイム ステップは、可変ステップ ソルバーの方が固定ステップ ソルバーに比べて少なくなることがあります。たとえば、システムに 2 つの離散レート 0.5
と 0.75
があるとします。最大公約数は 0.25
であるため、固定ステップ ソルバーでは 0.25
以下の固定ステップ サイズを使用してモデルがシミュレートされます。このシステムでは、固定ステップ シミュレーションの一部のタイム ステップ (0.25
のタイム ステップなど) がシステム内のいずれの離散サンプル時間のヒット時間にも対応しません。それに対して、可変ステップ ソルバーで確実にしなければならないのは、最大ステップ サイズを最も小さい離散レートである 0.5
以下にすることだけです。
シミュレーション用のソルバーの選択の詳細については、ソルバーの選択を参照してください。
マルチレート システムおよびハイブリッド システム内のサンプル時間
多くのシステムには、連続サンプル時間と離散サンプル時間の両方を使用してモデル化された離散コンポーネントと連続コンポーネントが混在しています。
"マルチレート システム" には、定数のサンプル時間およびモデル全体のイベント用のサンプル時間とは別に複数のサンプル時間が含まれています。
詳細については、サンプル時間のタイプを参照してください。
"ハイブリッド システム" には、連続サンプル時間と離散サンプル時間の両方が含まれています。
タイミング凡例とサンプル時間の色を使用して、ブロック線図にサンプル時間情報の注釈を付けることができます。マルチレート システムとハイブリッド システムの設計やシミュレーションを行うときは、モデル内のシステムとサブシステムが目的のサンプル時間や想定されるサンプル時間を継承しているかどうかを調べるのにサンプル時間の色が役立ちます。
マルチレート離散システムとハイブリッド システムはどちらもマルチレートであるため、マルチレートのサンプル時間の色はマルチレート離散システムとハイブリッド システムの両方に適用されます。マルチレートのサンプルの色で強調表示されたモデル要素がマルチレート離散であるかハイブリッドであるかを調べるには、周囲のサンプル時間情報を確認しなければなりません。
たとえば、自動車のクルーズ コントロール システムを簡単なフィードバック ループとして実装した次のモデルについて考えてみます。Constant ブロックによってクルーズ コントロールの指令値が提供されます。discrete cruise controller
という名前の Atomic サブシステムは、car dynamics
という名前のバーチャル サブシステムの入力信号を提供します。自動車の速度がフィードバック信号として機能します。これを Constant ブロックの出力信号から減算して、離散クルーズ コントローラーの誤差入力が計算されます。
タイミング凡例を開いてサンプル時間の色を表示するには、Simulink ツールストリップの [デバッグ] タブにある [診断] で [情報のオーバーレイ] をクリックします。次に、[サンプル時間] で [色] を選択します。信号線にサンプル時間情報の注釈を付けるには、タイミング凡例で [サンプル時間の注釈表示の切り替え] をクリックします。
サンプル時間の色により、バーチャル サブシステムが茶色で強調表示されます。これは、マルチレート システム用の既定の色です。ブロック線図から、このサブシステムには離散サンプル時間と連続サンプル時間の両方があるため、ハイブリッド マルチレート システムであることがわかります。入力信号は離散であり、赤色で表示され、D1
というラベルが付いています。出力信号は連続であり、黒色で表示され、連続を示す Cont
というラベルが付いています。
ハイブリッド システム内のサンプル時間に関する詳細情報を取得するには、car dynamics
という名前のサブシステム内に移動します。自動車のダイナミクスが Integrator ブロックを使用してモデル化されており、これによって連続ダイナミクスがもたらされます。サンプル時間の色から、サブシステムに離散サンプル時間と連続サンプル時間の両方があることがわかります。
次に、固定マイナー (FiM) サンプル時間のラベルが付いた単一の出力信号をもつ別のマルチレート サブシステムについて考えてみます。サンプル時間の色でも、このサブシステムはマルチレートのサンプル時間の色で強調表示され、サブシステムがマルチレートであることを示しています。サブシステム内のサンプル時間について理解するには、サブシステムの内容を表示します。
サブシステムには、サンプル時間が異なる 3 つの Sine Wave ブロックが含まれており、それぞれのサンプル時間は 0.2
、0.3
、0.4
です。離散サンプル時間のみを含むため、このサブシステムはマルチレート離散システムです。
サブシステム内のサンプル時間
サブシステムには、以下の 2 つのカテゴリがあります。Triggered と Non-Triggered です。
一般に、Triggered Subsystem のサンプル時間はトリガー信号によって設定されます。
1 つの例外は、Trigger ブロックを使用して Triggered Subsystem を作成し、[サンプル時間] パラメーターをアクティブにするようにブロック パラメーターを構成する場合です。この場合は、Trigger ブロックに対して指定されたサンプル時間によって、サブシステムのサンプル時間が設定されます。
Non-Triggered Subsystem のサンプル時間が決定される方法は、サブシステムのタイプによって異なります。
バーチャル サブシステムと Enabled Subsystem のサンプル時間は、サブシステムの内容のサンプル時間に基づいて決定されます。
Atomic サブシステムには、サブシステムのサンプル時間を定義する [サンプル時間] パラメーターがあります。Atomic サブシステムのサンプル時間を指定する場合、サブシステム内のブロックのサンプル時間は定数 (Inf
) または継承 (-1
) にするか、サブシステムのサンプル時間と同じでなければなりません。Atomic サブシステム内のブロックのサンプル時間を既定の継承のままにする場合は、サブシステムの [サンプル時間] パラメーターを使用してサブシステム内のすべてのブロックに対する離散サンプル時間を指定できます。
Atomic サブシステムのサンプル時間を既定の継承のままにすると、バーチャル サブシステムや Enabled Subsystem と同様に、サブシステムの内容のサンプル時間に基づいてサブシステムのサンプル時間が決定されます。Atomic サブシステムのサンプル時間を取得するには、get_param
関数を使用します。次のコマンドは、mdl
という名前のモデル内の AtomicSubsystem
という名前の Atomic サブシステムの SystemSampleTime
パラメーターの値を取得します。
st = get_param("mdl/AtomicSubsystem","SystemSampleTime");
Action Subsystem のサンプル時間は、Action Subsystem 内の If ブロックまたは Switch Case ブロックによって設定されます。
Non-Triggered Subsystem にサンプル時間が異なるブロックが含まれている場合、サブシステムのコンパイルされたサンプル時間によってサブシステム内のサンプル時間が示されます。サブシステムのコンパイルされたサンプル時間を取得するには、get_param
関数を使用します。次のコマンドは、mdl
という名前のモデル内の Subsystem
という名前の Subsystem ブロックの CompiledSampleTime
パラメーターの値を取得します。サブシステムがマルチレート サブシステムの場合、get_param
関数は、コンパイルされたサンプル時間を文字ベクトルの cell 配列として返します。
st = get_param("mdl/Subsystem","CompiledSampleTime");