Main Content

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

シングルタスク実行のモデル化

シングルタスク モード

モデル コードを厳密なシングルタスクで実行できます。このモードを指定したときに特定の状況で実行速度低下する場合、モデルを単純化できます。

シングルタスク モードでは、基本サンプル レートが、間隔内ですべてのブロックの実行が可能な時間間隔を定義しなければなりません。

次の図は、シングルタスク実行に特有の非効率を示しています。

Timing diagram that shows inefficiency of single-tasking execution

シングルタスク システムの実行では、基本サンプル レートはモデル全体で 1 つのステップを実行するのに十分な時間間隔である必要があります。

シングルタスク実行のためのプログラムのビルド

シングルタスク実行を使用するには、モデル コンフィギュレーション パラメーター [各離散レートを個別のタスクとして扱う] をオフにします。このパラメーターを選択すると、シングルタスク モードが次の場合に使用されます。

  • モデルに含まれているサンプル時間が 1 つの場合

  • モデルに連続サンプル時間および離散サンプル時間が含まれ、固定ステップ サイズが離散サンプル時間と等しい場合

シングルタスク実行

このシンプルなマルチレート モデルから生成されたコードのシミュレーションを行い、実行できます。このモデルは、シングルタスク モードまたはマルチタスク モードで固定ステップ ソルバーを使用するように構成されています。

Execution order of blocks in model, labeled A through F.

適用されるタスク モードは、モデル コンフィギュレーション パラメーター [各離散レートを個別のタスクとして扱う] の設定によって変わります。クリアされた場合、パラメーターはシングルタスク モードを指定します。選択された場合、パラメーターはマルチタスク モードを指定します。

説明例は、モデルの A から F までの 6 つのブロックについて説明します。

ブロックの実行順序 (ブロックの上の数字で表示) は、ブロック E および F に高い優先度が割り当てられていることが強制的に示されています。示された順序は、このモデルで考えられる有効な実行順序の 1 つです。詳細については、動的システムのシミュレーションの段階を参照してください。

実行順序は、ブロック間のデータ依存関係によって決定します。リアルタイム システムでは、実行順序によって、指定した時間間隔またはタスク内でブロックが実行される順序が決定されます。この説明では、モデルの実行順序は、タスクに対するブロックの計算の割り当てやタスク実行のスケジューリングに関連付けられているため、既知の順序として扱います。

メモ

このセクションの説明とタイミング図は、Rate Transition ブロックが既定の設定 (保護) モードで使用されているという前提に基づいています。すなわち、ブロック パラメーター [データ転送中の整合性を確保][確定的にデータ転送を確保 (最大遅延)] は選択されています。

モデルがシングルタスク実行用に構成されていて、モデル コンフィギュレーション パラメーター [ブロック削減] を選択した場合、高速から低速への Rate Transition ブロックはモデル外で最適化されます。この例では、[ブロック削減] が選択されています。そのため、ブロック B は以下のタイミング図に表示されません。詳細については、ブロック削減を参照してください。

モデルの各ブロックについて、次の表は、実行順序、サンプル時間、およびブロックに出力または更新の計算が含まれているかどうかを示します。ブロック A には、離散状態が存在しないため、更新の計算は含まれません。

ブロック
(実行順序)

サンプル時間
(秒)

出力

更新

E

0.1

Y

Y

F

0.1

Y

Y

A

0.1

Y

N

C

1

Y

Y

D

1

Y

Y

リアルタイム シングルタスク実行

次の図は、生成コードがシングルタスク モードでリアルタイム システムに展開されたときの計算のスケジューリングを示しています。生成プログラムは、10 Hz タイマーからの割り込みを制御しながら、リアル タイムで実行されます。

Timing diagram that shows scheduling of computations when generated code is deployed in a real-time system

0.0、1.0、その後の毎秒において、低速ブロックと高速ブロックは、出力計算を実行します。その後、状態をもつブロックの更新計算が実行されます。指定された時間間隔内で、出力および更新の計算は、ブロックの実行順序になります。

高速ブロックは、目盛りごとに 0.1 秒の間隔で実行されます。出力計算の後、更新計算が実行されます。

各時間間隔の一部 (ラベル "wait" の部分) はアイドリングに利用されます。高速ブロックのみが実行された間隔では、間隔の大部分がアイドリングに使用されます。この図は、シングルタスク モード特有の非効率性を示しています。

シングルタスク実行のシミュレーション

次の図は、Simulink® シミュレーション ループ中のモデルの実行を示しています。

Timing diagram that shows execution of the model during the Simulink simulation loop

時間がシミュレートされるため、目盛りの配置はシミュレーション ループの反復を表します。ブロックは、前の図と同じ順序で実行されますが、リアルタイム クロックの制約はありません。シミュレートされたサンプル期間の間にアイドル時間はありません。

関連するトピック