Main Content

サンプル時間の指定

サンプル時間の指定

Simulink® では、ブロック サンプル時間を数値として直接指定するか、サンプル時間ベクトルを定義することでシンボリックに指定できます。サンプル時間値は、double、またはサンプル時間の周期とオフセットを含む double の 2 要素配列でなければなりません。離散サンプル時間の場合、ベクトルは [Ts, To] になります。ここで、Ts はサンプリング周期で、To は初期時間のオフセットを表します。たとえば、出力を 2 秒ごとに生成する離散モデルがあるとします。時間の基本単位が秒である場合は、2 の数値を SampleTime パラメーターに指定することで、離散サンプル時間を直接設定できます。オフセット値はゼロなので指定する必要はありませんが、[サンプル時間] フィールドに [2,0] を入力できます。

非離散ブロックの場合、ベクトルのコンポーネントはサンプル時間のタイプのタイプのいずれかを表すシンボリック値になります。次の表は、これらのタイプおよび対応するサンプル時間値をまとめています。また、各サンプル時間のタイプの明示的な性質を定義し、関連付けられている色と注釈も示しています。"継承サンプル時間" は明示的であるので、[-1, 0] または -1 として指定できます。一方、トリガーされるサンプル時間は暗黙的であるため、Simulink のみが [-1, -1] のサンプル時間を割り当てることができます (色と注釈の詳細は、サンプル時間情報の表示を参照)。

サンプル時間情報の指定

サンプル時間のタイプサンプル時間注釈明示的
離散[Ts, To]D1、D2、D3、D4、D5、D6、D7、... Diはい
連続[0, 0]Contはい
マイナー ステップに固定[0, 1]FiMはい
継承[–1, 0]N/Aはい
定数[Inf, 0]Infはい
変数[–2,Tvo]V1、V2、...Viいいえ
マルチレートN/AN/Aいいえ
非同期[–1, –n]A1、A2、...Aiいいえ
データフローN/AN/Aいいえ
モデル全体のイベントの初期化[Inf, 1]IE 
モデル全体のイベントの終了[Inf, 2]TE 
モデル全体のイベントの再送[Inf, 3, 4, …]RE1、RE2、RE3... 
union[NaN, NaN]U1、U2、U3... 
非周期的分割[1, -30]AP1、AP2、AP3... 

各ブロックに割り当てられる色は、モデル内の他のサンプル時間と相対的なサンプル時間によって異なります。これは、同じサンプル時間が親モデルとそれが参照するモデルで異なる色に割り当てられることを意味します (モデル参照を参照してください)。

たとえば、モデルが 3 つのサンプル時間、123 を定義すると仮定します。さらに、23 の 2 つのサンプル時間を定義するモデルを参照すると仮定します。この場合、サンプルレート 2 で動作するブロックは、親モデルで緑色で表され、参照されるモデルでは赤で表されます。

Mux ブロックと Demux ブロックが、単にグループ化のオペレーターであることに注意してください。これらのブロックを通る信号は、そのタイミング情報を保持します。このため、Demux ブロックから出るラインは、異なるサンプル時間をもつソースで駆動されている場合、別の色になります。この場合、Mux ブロックおよび Demux ブロックは、ハイブリッド (黄色) として色付けされ、複数レートの信号を扱うことを示します。

同様に、異なるサンプル時間をもつブロックを含むサブシステム ブロックもハイブリッドとして色付けされます。つまり、これに関連付けられたレートがないためです。サブシステム内のすべてのブロックが 1 つのレートで実行された場合、そのレートに応じてサブシステム ブロックが色付けされます。

この表の明示的なサンプル時間値を使用すると、ブロックベースまたは端子ベースのサンプル時間を対話形式またはプログラムで指定できます。

次のモデルは、このセクションの参照として使用されます。

この例では、入力正弦波信号のサンプル時間を 0.1 に設定します。目標は、0.2 の出力サンプル時間を達成することにあります。Rate Transition ブロックは、ゼロ次ホールドとして機能します。サンプル時間を設定し、モデルをシミュレートした後のブロック線図を次の図に示します (色と注釈は、これが離散モデルであることを示しています。)

サンプル時間設定後の ex_specify_sample_time

対話形式によるブロックベースのサンプル時間の指定

ブロックのサンプル時間を対話形式で設定するには、以下のようにします。

  1. Simulink モデル ウィンドウで、ブロックをダブルクリックします。ブロックのパラメーター ダイアログ ボックスが開きます。

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

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

次の図は、[サンプル時間] フィールドに 0.1 を入力した後の Sine Wave ブロックのパラメーター ダイアログ ボックスを示しています。

モデル全体のブロックベースのサンプル時間を指定して検査するには、モデル データ エディター ([モデル化] タブで [モデル データ エディター] をクリック) の使用を検討してください。[入力端子/出力端子][信号][データ ストア] タブで、[ビューの変更] ドロップダウン リストを [設計] に設定して [Sample Time] 列を使用します。詳細については、モデル データ エディターを参照してください。

対話形式による端子ベースのサンプル時間の指定

Rate Transition ブロックには端子ベースのサンプル時間が含まれています。出力端子のサンプル時間は次の手順を実行することで対話形式で設定できます。

  1. Rate Transition ブロックをダブルクリックします。パラメーター ダイアログ ボックスが開きます。

  2. [出力端子のサンプル時間オプション] のドロップダウン メニューの選択は [指定] のままにします。

  3. [出力端子のサンプル時間] フィールドの -10.2 に置き換えます。

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

Rate Transition パラメーター ダイアログ ボックスのサンプル時間オプションの詳細については、Rate Transition のリファレンス ページを参照してください。

プログラムによるブロックベースのサンプル時間の指定

ブロック サンプル時間をプログラムで設定するには、set_param コマンドを使用して、SampleTime パラメーターを希望のサンプル時間に設定します。たとえば、"Specify_Sample_Time" モデルの Gain ブロックのサンプル時間を継承 (-1) に設定するには、次のコマンドを入力します。

set_param('Specify_Sample_Time/Gain','SampleTime','[-1, 0]')

対話形式による指定と同様に、2 番目のベクトル成分がゼロの場合には、最初の成分のみを入力できます。

set_param('Specify_Sample_Time/Gain','SampleTime','-1')

プログラムによる端子ベースのサンプル時間の指定

Rate Transition ブロックの出力端子サンプル時間を 0.2 に設定するには、set_param コマンドを使って、OutPortSampleTime パラメーターを指定します。

set_param('Specify_Sample_Time/Rate Transition',...
'OutPortSampleTime', '0.2')

プログラムによるサンプル時間情報へのアクセス

モデルに関連付けられているすべてのサンプル時間にアクセスするには、API Simulink.BlockDiagram.getSampleTimes を使用します。

1 つのブロックのサンプル時間にアクセスするには、API Simulink.Block.getSampleTimes を使用します。

カスタム ブロックのサンプル時間の指定

カスタム ブロックを設計し、入力端子と出力端子を異なるサンプル時間レートで動作させることができます。S-function に対してブロックベースおよび端子ベースのサンプル時間を指定する方法の詳細は、Specify S-Function Sample Timesを参照してください。

サンプル時間単位の決定

Simulink モデルの実行は特定の単位セットに依存しないので、アプリケーションに適した時間の基本単位を決定し、それに応じてサンプル時間値を設定しなければなりません。たとえば、時間の基本単位が秒である場合は、サンプル時間を 0.5 に設定することで、0.5 秒のサンプル時間を表します。

シミュレーション開始時間後のサンプル時間の変更

シミュレーションの開始後にサンプル時間を変更するには、シミュレーションを停止し、SampleTime パラメーターをリセットしてから実行を再開しなければなりません。

関連するトピック