サンプル時間が推奨されないブロック
一部のブロックでは、既定で [サンプル時間] パラメーターの設定は有効になっていません。ただし、サンプル時間に既定値である -1
(継承されたサンプル時間) 以外の値が設定されている場合は、既存のモデルのブロックの [サンプル時間] パラメーターを表示したり、設定したりすることができます。特定のブロックでは [サンプル時間] パラメーターは利用できません。これは Gain、Sum、n-D Lookup Table、Discrete Filter、Discrete FIR Filter、Discrete Transfer Fcn などのブロックで -1
以外のサンプル時間を指定すると、サンプル レートの遷移がブロック アルゴリズムと暗黙的に混合される原因になるためです。この混合によって Simulink® モデル内にあいまいさや混乱が生じることがよくあります。
多くのモデリング アプリケーションでは、サブシステム内のブロックではなく、システムの境界上でモデルのレートを指定します。システム レートは入力信号または出力のサンプリング レートによって指定します。トリガー、関数呼び出しまたはイネーブル/ディセーブル信号としてサブシステムに入る、モデル化するイベントのレートを決定することもできます。一部のグローバル変数 (Data Store Memory ブロックなど) では、追加のサンプル時間の指定が必要になる場合があります。システム内でレートを変更する場合は、モデルのレート変換専用に設計されている Rate Transition ブロックを使用します。
将来のリリースでは、適切でない場合に、ブロックのこのパラメーターの表示や設定ができなくなる可能性があります。
モデルのサンプル時間のベスト プラクティス
ブロック内での [サンプル時間] パラメーターの設定が適切でない場合には、代わりに以下のアプローチを使用します。
サンプル時間パラメーターに適したブロックに記載されているブロック内でのみ [サンプル時間] を指定し、他のすべてのブロックでは [サンプル時間] を
-1
に設定することでモデルを調整します。複数のブロックのサンプル時間を同時に変更する場合は、モデル エクスプローラーを使用します。詳細については、モデル エクスプローラーを参照してください。モデル内でレート変換をモデル化するには Rate Transition ブロックを使用します。
ソース ブロックをもたないモデル (代数ループなど) でサンプル時間を指定するには、Signal Specification ブロックを使用します。
[モデル パラメーター] ダイアログ ボックスを使用して、ブロックのサンプル時間とは独立にシミュレーション レートを指定します。
これらの変更を完了したら、モデルが以前と同じ出力を行うか確認します。
サンプル時間パラメーターに適したブロック
サンプル時間は、モデルまたはサブシステムの境界、あるいはレート変換のモデル化のために設計されているブロック内で指定します。たとえば、以下のようなものがあります。
Sources ライブラリ内のブロック
Sinks ライブラリ内のブロック
トリガー端子 ([トリガー タイプ] が
[関数呼び出し]
に設定されている場合) とイネーブル端子Data Store Read ブロックと Data Store Write ブロック (リンク先の Data Store Memory ブロックがサブシステムの境界の外側にある可能性があるため)
Rate Transition ブロック
Signal Specification ブロック
Discrete Filter、Discrete FIR Filter、Discrete Transfer Fcn ブロック以外の、Discrete ライブラリ内のブロック
Message Receive ブロック
Function Caller ブロック
非表示ブロック内のサンプル時間の指定
ブロックのダイアログ ボックスにサンプル時間のパラメーターが表示されないブロック内でサンプル時間を指定できます。これらのブロック内で -1
以外の値を指定しても、モデルのシミュレーションを実行する際にエラーは発生しません。ただし、ブロックのダイアログ ボックスにはこのパラメーターを -1
(継承されたサンプル時間) に設定するように勧めるメッセージが表示されます。サンプル時間ブロックのパラメーターをマスクにプロモートする場合、このパラメーターは常にマスク ダイアログ ボックスに表示されます。
この場合にサンプル時間を変更するには、set_param
コマンドを使用します。たとえば、Simulink エディターでブロックを選択し、コマンド プロンプトで次のように入力します。
set_param(gcb,'SampleTime','2');