Main Content

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

サンプル時間のタイプ

離散サンプル時間

離散サンプル時間をもつブロックの場合、Simulink® ソフトウェアでは次の時間にブロックの出力または更新メソッドを実行します。

tn=nTs+|To|,

ここで、サンプル時間の周期 Ts は常にゼロより大きく、シミュレーション時間 Tsim より小さくなります。周期数 (n) は整数で、次を満たさなければなりません。

0nTsimTs.

シミュレーションの進行中、tn のこれらの各固定間隔で 1 回だけブロック出力が計算されます。任意のサンプル時間に対してブロックの出力メソッドが実行されるこれらのシミュレーション時間は、"サンプル時間ヒット" と呼ばれます。離散サンプル時間は、サンプル時間ヒットが既知の情報である唯一のタイプです。

最初のサンプル ヒット時間を遅延させる必要がある場合は、オフセット To を定義できます。

Unit Delay ブロックは離散サンプル時間をもつブロックの例です。

制御可能なサンプル時間

分解能 Tbase をもつ制御可能なサンプル時間を使用するようにブロックを設定できます。Tbase は、ブロック実行間の最小許容時間間隔です。独自の C S-Function ブロックで Tbase を設定するには、関数 ssSetControllableSampleTime を使用します。

ブロックで制御可能なサンプル時間を使用する場合は、ブロックを Tbase の n 倍で実行するよう動的に設定できます。ブロックの次の実行時間は以下のようになります。

Tnext = n Tbase + T(1)

関数 ssSetNumTicksToNextHitForControllableSampleTime を使用して、C S-Function ブロックで n を設定できます。

連続サンプル時間

連続サンプル時間

連続サンプル時間ヒットはメジャー タイム ステップとマイナー タイム ステップに分けられます。マイナー タイム ステップは、メジャー タイム ステップの下位区分です。ソルバーは、各メジャー タイム ステップでの結果を生成します。ソルバーは、マイナー タイム ステップでの結果を使ってメジャー タイム ステップでの結果の精度を向上させます。

選択する ODE ソルバーは、すべての連続状態をシミュレーション開始時間から任意のメジャー タイム ステップまたはマイナー タイム ステップまで統合します。ソルバーは、マイナー ステップの時間を判断し、マイナー タイム ステップでの結果を使用して、メジャー タイム ステップでの結果の精度を向上させます。表示されるのはメジャー タイム ステップのブロック出力のみです。

Derivative などのブロックの連続サンプル時間を指定するには、[サンプル時間] パラメーターに「[0, 0]」または「0」と入力します。

固定マイナー ステップのサンプル時間

ブロックのサンプル時間が [0 1] の場合、ブロックは "固定マイナー ステップ" のサンプル時間をもちます。このサンプル時間では、ブロックはマイナー タイム ステップで実行されません。ブロックはメジャー タイム ステップでのみ実行されます。固定マイナー ステップのサンプル時間により、メジャー ステップ間で出力を変更できないブロックの不要な計算が除去されます。

ブロックは固定マイナー ステップのサンプル時間に明示的に設定できますが、多くの場合、この条件は継承サンプル時間として、または連続サンプル時間の指定への変更として設定されます。固定マイナー ステップのサンプル時間は、固定ステップ ソルバーを使用するシステムでの最速離散レートと同等です。固定ステップ ソルバーを使用する場合、固定マイナー ステップのサンプル時間は最速の離散サンプル時間に変換されます。

可変サンプル時間

可変サンプル時間を使用するブロックは、ブロックが指定する暗黙的なサンプル時間パラメーターをもっています。このブロックは、その実行時期をソフトウェアに伝えます。コンパイルされたサンプル時間は [–2 Tvo] で、Tvo は一意の可変オフセットです。

Hit Scheduler ブロックと Pulse Generator ブロックはどちらも可変サンプル時間をもちます。可変サンプル時間は可変ステップ ソルバーでのみサポートされています。Hit Scheduler ブロックは固定ステップ ソルバーではサポートされていません。固定ステップ ソルバーを使用して Pulse Generator ブロックを含むモデルをシミュレーションする場合は、そのブロックによって離散サンプル時間が指定されます。

独自のブロックを記述して変数サンプル時間を使用する方法については、C MEX S-Function Examplesを参照してください。

イベントおよび非同期のサンプル時間

非同期のサンプル時間

非同期のサンプル時間はトリガー サンプル時間に似ています。Simulink エンジンは定期的にブロックを実行しないので、どちらの場合も継承サンプル時間を指定する必要があります。代わりに、ランタイム条件によってブロックの実行時期が決定されます。非同期のサンプル時間の場合は、S-Function が非同期の関数呼び出しを行います。

これらのサンプル時間タイプの違いは次のとおりです。

  • Function-Call Subsystem のみが非同期のサンプル時間をもつことができます Function-Call Subsystem の使用を参照してください。

  • 関数呼び出し信号ソースは、オプション SS_OPTION_ASYNCHRONOUS をもつ S-Function です。

  • 非同期のサンプル時間は、バーチャル ブロックが非同期の S-Function サブシステムまたは非同期の Function-Call Subsystem に接続されている場合にも発生することがあります。

  • 非同期のサンプル時間はコードを生成する一部のアプリケーションで重要です。非同期イベント (Simulink Coder)を参照してください。

  • サンプル時間は [-1,-n] です。

ブロックを使用して、非同期のイベントを処理するコードをモデリングし、生成する方法の詳細については、Rate Transitions ブロックと Asynchronous ブロック (Simulink Coder)を参照してください。

非周期的分割

モデルの非周期的分割により、このタイプのサンプル時間が導入されます。非周期的分割は、制約がなく、いつでも実行できるように作成できます。スケジュール エディターでヒット時間を指定して、非周期的分割のタイムラインを駆動できます。イベントではこのサンプル時間が指定されているブロックの実行タイミングを判別できます。Subsystem ブロックは指定したサンプル時間パラメーターとして非周期性をもつことができます。

その他のサンプル時間

継承サンプル時間

ブロックのサンプル時間が [–1 0] または –1 に設定されている場合、サンプル時間は "継承" され、モデル内のブロックのコンテキストに基づいてブロックの最適なサンプル時間が決定されます。コンパイル時に継承されたサンプル時間を使用して、ブロックのサンプル時間が決定されます。継承された設定はコンパイル時に上書きされるため、[サンプル時間の凡例] では、コンパイルされたモデルに継承サンプル時間 [-1 0] が表示されることはありません。詳細については、サンプル時間情報の表示を参照してください。

一部のブロックはサンプル時間を既定で継承します。これらのブロックでは、継承されていない値を指定しない限り、パラメーターは表示されません。たとえば、Gain ブロックや Rounding Function ブロックでは、サンプル時間パラメーターは表示されず、サンプル時間を既定で継承します。これらのブロックの [サンプル時間] パラメーターは変更しないことをお勧めします。詳細については、サンプル時間が推奨されないブロックを参照してください。

継承されたすべてのブロックは、サンプル時間の伝播のプロセスの影響を受けます。詳細については、伝播が継承サンプル時間に影響を与える方法を参照してください。

定数サンプル時間

Simulink ソフトウェアでは、"定数" はシンボリック名またはシンボリック式であり、その値はアルゴリズム外または監視制御を通じてのみ変更できます。Constant ブロックなどのブロックは、モデルを通常実行している間はその出力が変化することはなく、常に一定であると見なされます。

定数サンプル時間がこれらのブロックに割り当てられます。ブロックの出力メソッドは次のタイミングで実行されます。

  • シミュレーションの開始時

  • 環境内での実行時の変更への応答 (パラメーターの調整など)

定数サンプル時間の場合、ブロックのサンプル時間の割り当ては [inf 0] または inf です。

定数サンプル時間を許可するブロックについては、ブロックに連続状態または離散状態がないことと、条件付き実行サブシステムの出力端子にブロックが接続されていないことが必要です。詳細については、Enabled Subsystem の使用を参照してください。

Simulink ブロック ライブラリには、MATLAB S-Function ブロック、Level-2 MATLAB S-Function ブロック、C S-Function ブロックなど、異なるサンプル レートで出力を行う端子をもつさまざまなブロックが含まれています。このようなブロックの端子には、定数サンプル時間をもつものがあります。

トリガー サンプル時間

ブロックが Function-Call Subsystem や Enabled Subsystem などの Triggered Subsystem に含まれている場合、そのブロックは定数であるか、トリガー サンプル時間をもちます。ただし、非同期の関数呼び出しの場合は除きます。トリガー サンプル時間のタイプを明示的に指定することはできません。コンパイル中にトリガー サンプル時間を使用するには、ブロックのサンプル時間を継承 (–1) に設定します。それにより、ブロックがシミュレーション中に実行される特定の時間が決まります。

マルチレートのサンプル時間

共用体のレート

union サンプル時間は、コンポーネント サンプル時間の和集合であるコンテナー サンプル時間です。これらのサンプル時間の実行は、コンポーネント サンプル時間のタイムラインの和集合です。

マルチレートのサンプル時間

マルチレートのサンプル時間は、Simulink エンジンによってモデルに導入されます。ブロックには 1 つを超えるサンプル時間が含まれているので、[ブロック線図の更新] を実行すると、サブシステムまたはすべてのマルチレート ブロック (Rate Transition ブロックなど) が黄色になります。

複数のサンプル時間に関してシステムを評価する際、定数 [inf, 0] もモデル全体のイベントも考慮されません。したがって、定数値の出力をもつ 1 つのブロックと離散サンプル時間をもつ 1 つのブロックが含まれているサブシステムは、マルチレートとして指定されません。ブロックに連続した固定マイナー ステップのサンプル時間が含まれている場合、そのようなサンプル時間のタイムラインは同じであるため、該当するブロックもマルチレートとして指定されません。そのようなブロックは連続サンプル時間をもっているものとして指定されます。

データフロー サンプル時間

サンプル時間としてデータ フローをもつブロックはデータ駆動型です。たとえば、Dataflow Subsystem (DSP System Toolbox) ブロックなどです。このブロックは計算のモデルとして同期データフローを使用します。同期データフローはデータ駆動型であり、静的にスケジュールされます。詳細については、Dataflow Subsystem (DSP System Toolbox)を参照してください。

初期化、再初期化、終了のサンプル時間

Initialize Functionブロック、Reinitialize Functionブロック、およびTerminate Functionブロックを使用して既定のルーチンにカスタム ルーチンを追加し、ブロックの状態を変更または読み取ることができます。Reset Function ブロックを使用してカスタム ルーチンを実装することもできます。初期化、リセット、終了のサンプル時間は、Initialize Function ブロック、Reinitialize Function ブロック、および Terminate ブロックがモデルに存在している場合に指定されます。これらのブロックには、このサンプル時間をモデルに導入するアルゴリズムまたはセマンティクスが含まれています。

関連するトピック