参照モデルのサンプル時間
Model ブロックでのサンプル時間の継承
Model ブロックのサンプル時間は、参照先モデルのサンプル時間になります。参照モデルが特定のレートで実行されなければならない場合、そのモデルにそのレートを指定します。それ以外の場合、参照モデルは親モデルからサンプル時間を継承します。
Triggered Subsystem、Function-Call Subsystem、または反復サブシステムに Model ブロックを配置するには、サンプル時間を継承する機能が求められます。また、Model ブロックがサンプル時間を継承できるようにすれば、その再利用の可能性が最大化されます。たとえば、モデルではすべての入力信号と出力信号のデータ型と次元数が固定されている場合があります。このモデルは異なるサンプル時間で再利用できます (たとえば、離散 0.1、離散 0.2、トリガー)。
サンプル時間の継承条件
参照モデルはモデルが次の条件を満たす場合にそのサンプル時間を継承します。
連続状態が存在しないこと。
固定ステップ ソルバーを指定し、[固定ステップ サイズ] が
[auto]
であること。継承または定数以外のサンプル時間を指定するブロックを含まないこと。
独自のサンプル時間を内部で使用する S-Function を含まないこと。
サンプル時間の伝播後は、定数サンプル時間とトリガー サンプル時間を除いて、サンプル時間が 1 つしかないこと。
絶対時間に依存するブロックに記載されているような、絶対時間を使用する Stateflow® チャートなどのブロックを含まないこと。
出力が継承サンプル時間に依存するブロックに記載されているような、出力がサンプル時間の継承に依存しているブロックを含まないこと。
サンプル時間を継承するモデルは親モデルのどこででも使用できます。これに対し、固有のサンプル時間をもつ参照モデルは、Triggered Subsystem、Function-Call Subsystem、反復サブシステムでは使用することができません。また、レート変換エラーを避けるために、固有のサンプル時間をもつ参照モデルに接続されるブロックは、参照モデルと同じレートで動作させる必要があります。
メモ
連続サンプル時間は、サンプル時間に依存しない Model ブロックに伝播できません。
詳細については、出力が継承サンプル時間に依存するブロックを参照してください。
参照モデルのサンプル時間を調べる方法
参照モデルがサンプル時間を継承できるか否かを調べるには、[周期的なサンプル時間の制約] コンフィギュレーション パラメーターを [サンプル時間に依存しない]
に設定します。モデルがサンプル時間を継承できない場合、この設定はモデルのビルド時に Simulink® がエラー メッセージを出す原因になります。このオプションの詳細は、Periodic sample time constraintを参照してください。
参照モデル固有のサンプル時間、またはマルチレート参照モデルの一番速い固有サンプル時間を調べる手順を次に説明します。
そのモデルを参照するモデルを更新します。
親モデル内の Model ブロックを選択します。
MATLAB® コマンド ラインで次のコマンドを入力します。
get_param(gcb, 'CompiledSampleTime')
絶対時間に依存するブロック
次の Simulink ブロックは絶対時間に依存するので、参照モデルはサンプル時間を継承できません。
Backlash (モデルが可変ステップ ソルバーを使用し、ブロックが連続サンプル時間を使用する場合のみ)
Discrete-Time Integrator (Triggered Subsystem 内で使用された場合のみ)
Sine Wave ([正弦波タイプ] パラメーターが
[時間ベース]
である場合のみ)stateflow
(Stateflow) (チャートが絶対時間の時相論理または予約語t
を使って時間を参照する場合)To Workspace (
[時系列]
または[時間付き構造体]
形式でログ記録する場合のみ)
Simulink ブロック以外のブロックは絶対時間に依存する場合があります。使用するブロックセットのドキュメンテーションを参照してください。
出力が継承サンプル時間に依存するブロック
参照モデル内の継承されるサンプル時間に依存する出力をもつブロックを使用すると、シミュレーションで予想外の結果や間違った結果が得られる可能性があります。指定されたレートを必要としない参照モデルをビルドしている場合、Simulink は、出力が継承されるサンプル時間の関数になっているブロックがないかチェックします。このチェックには、S-Function ブロックの検証が含まれます。Simulink によってこのようなブロックが見つかった場合は、既定のサンプル時間が指定されます。[コンフィギュレーション パラメーター] 、 [ソルバー] 、 [周期的なサンプル時間の制約] を [サンプル時間に依存しない]
に設定している場合は、Simulink によってエラーが表示されます。このオプションの詳細は、Periodic sample time constraintを参照してください。
次に示す組み込みブロックの出力は、継承されるサンプル時間に依存します。これらのブロックの出力により、参照モデルは親モデルからそのサンプル時間を継承できません。
From Workspace (タイミングを含む入力データがある場合)
Probe (サンプル時間を調べる場合)
Simulink は S-Function の出力は継承サンプル時間に依存しないものと想定しますが、そうではないことを S-Function で明示的に宣言することもできます。出力が継承サンプル時間に依存するかどうかを宣言する S-Functions の作成方法の詳細は、Specify S-Function Sample Timesを参照してください。
サンプル時間を継承する参照モデルでは、出力が継承されるサンプル時間に依存するかどうかを宣言できない S-Function を参照モデルで使用しないようにします。これらの種類の S-Function を除外すると、シミュレーション エラーを回避できます。既定の設定では、このようなブロックがモデルに含まれていると、モデルの更新やシミュレーションの実行時に Simulink は警告を表示します。詳細については、指定のないサンプル時間の継承を参照してください。
サンプル時間の一貫性
別のモデルから参照されるモデルを使用する際の信頼性を向上させるために一貫したサンプル時間レートを使用します。参照モデルのルート Inport ブロックとルート Outport ブロックのサンプル レートを、これらのブロックに対して読み書きを行うブロックのサンプル レートと一致させます。Simulink では、以下のサンプル時間に不一致があるとエラーが発生します。
ルート Inport ブロックのサンプル時間と、Inport ブロックの入力先となるブロックのサンプル時間。
ルート Outport ブロックのサンプル時間と、その Outport ブロックに入力するブロックのサンプル時間。
参照モデル内でサンプル時間の不一致のフラグが付いたエラーを解決するには、次のいずれかの方法を使用できます。
最上位の Inport ブロックまたは Outport ブロックのサンプル時間 | 考えられる解決策 |
---|---|
接続先のすべてのブロックと異なっており、これらのブロックが互いに同じサンプル時間をもつ場合 | Inport ブロックまたは Outport ブロックのサンプル時間を、接続先のブロックのサンプル時間と一致するように設定します。 |
1 つ以上のブロックと異なり、1 つ以上のブロックと同じ場合 | Inport ブロックまたは Outport ブロックと一致しないブロックについては、Inport ブロックまたは Outport ブロックに接続する信号に Rate Transition ブロックを挿入します。 |
サンプルレートとソルバー
最上位モデルのソルバーは、モデルの階層構造内のすべての連続サンプル時間を制御します。たとえば、固定ステップ ソルバーの場合は、参照モデル内のすべての連続レートが最上位モデルの固定ステップ サイズで実行されます。サンプル時間がソルバーに与える影響の詳細については、サンプル時間のタイプを参照してください。