Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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

シングルタスク モード

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

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

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

Timing diagram that shows inefficiency of single-tasking execution

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

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

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

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

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

シングルタスク実行

この例では、リアル タイムおよびシミュレーションにおける固定ステップ ソルバーを使用した単純なマルチレート モデルの実行について説明します。モデル コンフィギュレーション パラメーター [各離散レートを個別のタスクとして扱う] を設定することで決定される、シングルタスク モードとマルチタスク モード両方の操作が考慮されます。

モデルの例を次の図に示します。ブロック線図のラベルに従い、モデルの A から F までの 6 つのブロックについて説明します。

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

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

メモ:

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

この例では、モデル コンフィギュレーション パラメーター [各離散レートを個別のタスクとして扱う] をオフにすることでシングルタスク モードを示す、上記モデルの実行を考慮します。

シングルタスク システムでモデル コンフィギュレーション パラメーター [ブロック削減] を選択すると、高速から低速への Rate Transition ブロックはモデル外で最適化されます。default ケースを示します (パラメーター [ブロック削減] を選択)。この場合、ブロック B がこの節のタイミング図に表示されません。詳細については、ブロック削減を参照してください。

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

実行順序とサンプル時間 (シングルタスク)

ブロック
(実行順序)

サンプル時間
(秒)

出力

更新

E

0.1

Y

Y

F

0.1

Y

Y

D

1

Y

Y

A

0.1

Y

N

C

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

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

関連するトピック