Main Content

システム内のサンプル時間

純粋な離散システム

純粋な離散システムは、離散ブロックのみで構成されており、固定ステップ ソルバーまたは可変ステップ ソルバーを使用してモデル作成できます。離散システムのシミュレーションでは、シミュレーターがサンプル時間ヒットごとにシミュレーションのステップを取る必要があります。マルチレート離散システム、つまり Simulink® のブロックが異なるレートでサンプリングするシステムでは、ステップはシステムの各サンプル時間の整数倍で発生しなければなりません。そうでない場合、シミュレーターはシステムの状態において重要な遷移を失うことがあります。Simulink ソフトウェアが選択するステップ サイズは、マルチレート システムのシミュレーションに使用するソルバーのタイプと基本サンプル時間により異なります。

マルチレート離散システムの基本サンプル時間は最大倍精度数であり、システムの実際のサンプル時間の最大公約数です。たとえば、システムのサンプル時間が 0.25 秒と 0.50 秒であるとします。この場合の基本サンプル時間は、0.25 秒です。また、サンプル時間が 0.50 秒と 0.75 秒であるとします。この場合も基本サンプル時間は 0.25 秒です。

基本サンプル時間の重要性は、Simulink ソフトウェアが固定ステップまたは可変ステップのどちらの離散ソルバーを使用してマルチレート離散システムを解くかに直接関係します。固定ステップ ソルバーは、シミュレーションのステップ サイズを離散システムの基本サンプル時間と等しくなるように設定します。一方、可変ステップ ソルバーは、実際のサンプル時間ヒット間の距離に等しくなるようにステップ サイズを変化させます。

次の図は、固定ステップ ソルバーと可変ステップ ソルバーの違いを示しています。

図中で、矢印はシミュレーション ステップを示し、円はサンプル時間ヒットを表します。図が示すように、基本サンプル時間がシミュレーションの対象となるシステムの実際のサンプル時間よりも短い場合、可変ステップ ソルバーがシステムをシミュレートするのに必要なシミュレーション ステップは少なくなります。一方、固定ステップ ソルバーは、システムのサンプル時間が基本サンプル時間である場合、実装のために要するメモリ量が少なく、高速になります。これは、(Simulink Coder™ を使った) Simulink モデルからのコード生成を伴うアプリケーションにおいては、利点となります。どちらの場合でも、Simulink が提供する離散ソルバーは、離散システムに対して最適化されています。ただし、どのソルバーを使用しても純粋な離散システムをシミュレートし、同等の結果を得ることができます。

次の単純なマルチレート システムの例を見てください。この例で、DTF1 Discrete Transfer Fcn ブロックのサンプル時間[1 0.1] に設定され、これにより 0.1 のオフセットが与えられます。DTF2 Discrete Transfer Fcn ブロックのサンプル時間0.7 に設定され、オフセットはありません。ソルバーは可変ステップの離散ソルバーに設定されます。

シミュレーションを実行し、その出力に関数 stairs を使用して、

set_param(bdroot,'SolverType','Variable-Step','SolverName','VariableStepDiscrete','SaveFormat','Array');
simOut = sim(bdroot,'Stoptime','3');
stairs(simOut.tout,simOut.yout,'-*','LineWidth',1.2);
xlabel('Time (t)');
ylabel('Outputs (out1,out2)');
legend('t_s = [1, 0.1]','t_s = 0.7','location','best')

次のプロットを作成します。

(sim コマンドの詳細については、プログラムによるシミュレーションの実行を参照してください。)

図が示すように、DTF1 ブロックには 0.1 のオフセットがあるので、DTF1 ブロックは t = 0.1 になるまで出力を生成しません。同様に、伝達関数の初期条件はゼロなので、DTF1 の出力 y(1) はこの時間まではゼロです。

ハイブリッド システム

ハイブリッド システムは離散ブロックと連続ブロックの両方を含んでいるので、離散状態と連続状態の両方をもちます。ただし、Simulink ソルバーは連続サンプル時間と離散サンプル時間の両方をもつシステムすべてをハイブリッド システムとして取り扱います。ハイブリッド システムのモデル化の詳細については、ハイブリッド システムのモデル化を参照してください。

ブロック線図でのハイブリッドという用語は、ハイブリッド システム (連続および離散混在システム) と、複数のサンプル時間をもつシステム (マルチレート システム) の両方に適用されます。[サンプル時間の表示] の [色] を [on] にして [ブロック線図の更新] を実行すると、このようなシステムは黄色で表示されます。例として、Atomic サブシステム "discrete cruise controller" とバーチャル サブシステム "car dynamics" をもつ次のモデルを考えてみましょう。

自動車モデル

[サンプル時間] オプションを [すべて] に設定して [ブロック線図の更新] を実行すると、バーチャル サブシステムはハイブリッド サブシステムであることを示す黄色で表示されます。この場合、サブシステムには連続と離散の両方のサンプル時間が含まれているので、これは真のハイブリッド システムです。以下に示すように、離散入力信号 D1 は、連続速度信号 v と組み合わされて Integrator への連続入力を生成します。

モデルの更新後の自動車モデル

モデルの更新後の Car Dynamics サブシステム

次に、3 つの Sine Wave ソース ブロックをもつマルチレート サブシステムを考えてみましょう。これらのブロックは、それぞれ 0.2、0.3、および 0.4 の固有のサンプル時間をもっています。

モデルの更新後のマルチレート サブシステム

このサブシステムには 1 つを超えるサンプル時間が含まれているので、[ブロック線図の更新] を実行すると、黄色で表示されます。ブロック線図に示されているように、Sine Wave ブロックには離散サンプル時間の D1、D2、および D3 が存在し、出力信号はマイナー ステップで固定されています。

複数のサンプル時間に関してシステムを評価する際、Simulink では定数 [inf, 0] または非同期 [–1, –n] サンプル時間を考慮に入れません。したがって、定数値を出力する 1 つのブロックと離散サンプル時間をもつ 1 つのブロックで構成されるサブシステムは、ハイブリッドとして指定されません。

ハイブリッドの注釈と色付けは、モデル内のサブシステムが正しいサンプル時間または予期されるサンプル時間を継承しているかどうかを評価する上で非常に役立ちます。

関連するトピック