Handling Overrun Situations

dSPACE FAQ 242
FAQ 242
Handling Overrun Situations
キーワード
タスクオーバーラン; オーバーラン状態; ターンアラウンドタイム; taskCallCount; overrunCount;
overrunQueueCount; オーバーラン対応; オーバーランを無視;
シミュレーションを停止する前にタスクをキューに登録; dSPACE Profiler;
最初のシミュレーションステップ; FIRST_SIMSTEP_INCREASEMENT
質問
リアルタイムシミュレーション中に、エラーメッセージ「Task Overrun: Occurred in task "<task
name>", execution step <number> 」がControlDeskまたはControlDesk Next
Generationで表示され、リアルタイムアプリケーションが停止します。
このエラーメッセージが表示される原因は何ですか。メッセージを表示しないようにするにはどうす
れば良いですか。タスクオーバーランを解析する方法を教えてください。
解決策
スケジューラが実行中のタスクを開始しようとしたため、オーバーラン状況が発生します。サンプル
時間が小さすぎるか、またはタスクの呼び出し頻度が高すぎる可能性があります。このドキュメント
では、タスクオーバーランを回避し対応するための定義および方法について概説します。
オーバーラン状態の定義
オーバーラン状態は、前のタスクの実行完了前に同じタスクの開始が要求された場合に発生します(
タスクの先行するインスタンスの計算がまだ終了していません)。次の図を参照してください。
1回目と2回目のタイマー割り込みの間にオーバーランは発生していません。ただし、ハードウェア割
り込みブロックによってトリガされるTHWタスクを計算する必要がある場合、再び開始を要求される前
にTTimerタイマータスクは終了することができません。このようなオーバーラン状態が発生した場合、
スケジューラがそれを検出し、タスクのオーバーラン設定に基づいてRTIが応答します。
Handling Overrun Situations
FAQバージョン: 6 / 2016-09-23
ページ1
dSPACE FAQ 242
タスクオーバーランが発生する場合、アプリケーションタスクのターンアラウンドタイムの解析が非
常に役に立ちます。タスクのターンアラウンドタイムとは、タスクがトリガされてから実行が完了す
るまでに経過する時間です。
ターンアラウンドタイムは以下のもので構成されています。

タスクの機能コードの実行に要する時間

タスクの実行が優先順位の高い他のタスクによって割り込まれる時間

タスクがホストサービスコードを含む場合に、変数の取得に要する時間
ターンアラウンドタイムには、1つのタスクから別のタスクに切り替えるために要する時間は含まれません。
詳細については(多くのタスクのターンアラウンドタイムを示した図解など)、「オーバーラン状態
とターンアラウンドタイム」(『RTI and RTI-MP Implementation Guide』)を参照してください。
ControlDeskまたはControlDesk Next Generationでのオーバーラン状態の解析
タスクオーバーランの原因となるアプリケーションのターンアラウンドタイムを解析するには、RTI
Task Configurationダイアログ(シングルプロセッサシステム:Configuration
Parametersダイアログ、マルチプロセッサシステム: Multiprocessor
Setupダイアログ)でオーバーラン対応をデフォルト値の「Stop simulation」から「Ignore
Overrun」または「Queue task before simulation stop」に変更する必要があります。
「Queue task before simulation stop」または「Ignore
Overrun」のオーバーラン対応を選択した場合、タスクがリアルタイムで実行されないため、タスクのオーバーラン
オーバーラン状態を分析するには、次のリアルタイム変数を使用します。これらの変数は、‘Task
Info’変数グループに属しています。

turnaroundTime:ターンアラウンドタイムを継続的に表示するには、プロッタアレイ計器を
使用する必要があります。一般的に、ターンアラウンドタイムはタスクの周期(固定ステッ
プサイズ)よりも小さくする必要があります。

overrunCount:タスクのoverrunCount変数は、発生したタスクのオーバーランの合計数をカ
ウントします。

overrunQueueCount:overrunQueueCount変数は、キューに登録されたインスタンス数を示し
、「Queue task before simulation stop」が選択されている場合は増減します。

taskCallCount:taskCallCount変数は、タスクの各実行ごとに増加します。これには、オー
バーラン状態の原因になったタスクの呼び出しは含まれません。
Handling Overrun Situations
FAQバージョン: 6 / 2016-09-23
ページ2
dSPACE FAQ 242
dSPACE Profilerでのオーバーラン状態の解析
dSPACE
Profilerは、リアルタイムアプリケーションのランタイム動作の出力をグラフィカルに作成するため
のスタンドアロンツールです。dSPACE
Profilerでは、ランタイム時の問題(タスクオーバーランなど)を検証する場合に、すべてのアプリ
ケーションタスクのターンアラウンドタイムの分布を表示します。リアルタイムカーネルと関連した
介入事項は、グラフィカルインターフェースの上部に表示されます。すべてのアプリケーションタス
クの呼び出しと関連するターンアラウンドタイムは下部に表示されます。
Profilerを使用する場合は、少なくともロギングカテゴリの‘Task’、‘Task
Register’、‘Overrun’、‘ISR’および‘Idle
Mode’(最初にすべてのカテゴリを選択することを推奨します)を選択してください。さらに、オー
バーランの原因となるアプリケーションタスクのトリガ条件を設定することができます(オーバー
ランを検出するには<プロセッサボード - タスク名>
OD)。オーバーラン状態は、‘OD’のマーク付きで表示されます。
dSPACE Profilerに関する詳細は、dSPACE Product DVDのユーザマニュアル(
Tools\Profiler\Profiler_user_doc.pdf)を参照してください。
最新のセットアップは、http://www.dspace.jp/go/profilerにあります。
MicroAutoBox IIでは、dSPACE Profiler
1.1.5が必要です。インストールされているバージョンを確認するには、Windows Control
Panelを開いてインストールされている製品のリストを確認します。
dSPACE Profilerは公式の製品ではなく、社内ツールとして開発されました。
タスクオーバーランの防止
タスクオーバーランを防止するには、以下の1つ以上の手順を実行します。

タイマータスクのサンプル時間またはモデルの固定ステップサイズを大きくします。

割り込み駆動タスクのトリガ頻度を減らします。

モデルに別の実行モード(シングルタイマータスクモードまたはマルチタイマータスクモー
ド)を選択します。

タスクの優先順位を変更します。

タスクのターンアラウンドタイムを小さくするか、またはSimulinkモデル内のモデリングを
最適化することにより、サブシステムおよびブロックの実行時間を小さくします。詳細につ
いては、FAQ 211、FAQ 023、またはFAQ 292を参照してください。

モデルのパーツをサンプル時間の遅いタイマータスクに移動します。

条件付きで実行されるモデルのパーツを検索します。条件付き実行によりターンアラウンド
タイムが増えないよう、条件付き実行を考慮している他の方法を探します。
Handling Overrun Situations
FAQバージョン: 6 / 2016-09-23
ページ3
dSPACE FAQ 242
最初のシミュレーションステップで発生するタスクオーバーランへの対処
たとえば、初期化の問題などによりシミュレーション開始時に一定数のオーバーランが発生する場合
など、モデル内で直接オーバーランに対処しなければならない場合があります。その際、許容範囲内
の一定数のオーバーラン以上のオーバーランが発生する場合は、アプリケーションの実行を中止する
必要があります。
MPシステムの場合(dSPACE Release
5.2以降):最も速いタイマータスクについて、マルチプロセッサシステムの1つのCPU上で最初の実
行ステップのみでタスクオーバーランが発生する場合は、FIRST_SIMSTEP_INCREASEMENTコンパイラオ
プションを使用してタスクオーバーランを防止します。このためには、DFIRST_SIMSTEP_INCREASEMEN
T=<Value>を呼び出します(ここで<Value>は0以上の任意の整数です)。
マルチプロセッサシステムのすべてのCPUにこのオプションを設定すると、各CPUの最初のシミュレー
ションステップに<Value> *
BaseSampleTimeが追加されます。最初のシミュレーションステップにおいて1つのCPUで利用可能な時
間は、次の通りです。(StepSizeMultiple + <Value>) * BaseSampleTime.
FIRST_SIMSTEP_INCREASEMENTに加え、NUM_INCREASED_SIMSTEPSを使用して、マルチプロセッサアプリ
ケーションにおける各CPU上の複数のシミュレーションステップに対してFIRST_SIMSTEP_INCREASEMEN
Tマクロを適用することができます。この場合、DNUM_INCREASED_SIMSTEPS=<Value>を呼び出します(ここで<Value>は0以上の任意の整数です)。
マルチプロセッサシステムですべてのCPUに対してこのオプションを設定した場合、FIRST_SIMSTEP_I
NCREASEMENTマクロによって定義されたシミュレーションステップサイズの増分が、マルチプロセッ
サアプリケーションの各CPUにおける最初の<Value>シミュレーションステップに適用されます。
このオプションは、マルチプロセッサシステムの各CPUの最初のステップで同じ増分値を指定した場合にのみ有効です。
このオプションを使用する場合、最初のシミュレーションステップに使用可能な時間は、(StepSizeMultiple + <Valu
BaseSampleTime(非リアルタイム)です。そのため、最初のシミュレーションステップ中は、I/O信号のタイミングはシ
NUM_INCREASED_SIMSTEPSオプションは、FIRST_SIMSTEP_INCREASEMENTマクロとともに使用してください。
SPシステムの場合:dSPACE Release 2010B以降では、上記のコンパイラオプションFIRST_SIMSTEP_INCREASEMENTおよびNUM_INCREASED_SIMSTEP
Sは、SPシステムでも使用可能です。
SPシステムの例:最初の3つのタスク実行にモデルのステップサイズの2倍のランタイムを与えるには
、SimulinkモデルのConfiguration Parametersダイアログを開き(Ctrl+E)、Code Generation >
RTIの一般的なビルドオプションに移動し、[Compiler
options]編集フィールドに以下のコマンドを入力します。
-DFIRST_SIMSTEP_INCREASEMENT=1 -DNUM_INCREASED_SIMSTEPS=3
関連するdSPACE HelpDeskのドキュメント

「Handling Tasks」(『RTI and RTI-MP Implementation Guide』)

「How to Handle Overrun Situations」(『RTI and RTI-MP Implementation Guide』)

「Handling overruns in multiprocessor systems」(『RTI and RTIMP Implementation
Guide』)

「RTI Task Configuration Dialog」(『RTI and RTI-MP Implementation Reference』)
Handling Overrun Situations
FAQバージョン: 6 / 2016-09-23
ページ4
dSPACE FAQ 242

「Build Optionsページ(CPU Options Dialog)」(『RTI and RTI-MP Implementation
Reference』)
関連するFAQs

FAQ 211: 「Avoiding task overrun errors」

FAQ 023: ブロックおよびサブシステムの実行時間の計測

FAQ 292: dSPACE Profilerでの実行時間の計測
Handling Overrun Situations
FAQバージョン: 6 / 2016-09-23
ページ5
dSPACE FAQ 242
How to Contact dSPACE Support
dSPACE GmbH
Rathenaustraße 26
33102 Paderborn
Germany
++49 5251 1638-941
mailto:[email protected]
http://www.dspace.com/support
dSPACE recommends that you use the support request form on the Internet to contact
dSPACE Support.
It is available at:

http://www.dspace.com/go/supportrequest
Software Updates and Patches
dSPACE strongly recommends that you download and install the most recent patches for your
current dSPACE installation. Visit http://www.dspace.com/go/patches for software updates
and patches.
FAQ
FAQ documents are available at http://www.dspace.com/go/faq.
Important Notice
This document contains proprietary information that is protected by copyright. All rights are
reserved. Neither the documentation nor software may be copied, photocopied, reproduced,
translated, or reduced to any electronic medium or machine-readable form, in whole or in part,
without the prior written consent of dSPACE GmbH.
© Copyright 2016 by:
dSPACE GmbH
Rathenaustraße 26
33102 Paderborn
Germany
This publication and the contents hereof are subject to change without notice.
A list of registered dSPACE trademarks is available at:
http://www.dspace.com/go/Trademarks
Handling Overrun Situations
FAQバージョン: 6 / 2016-09-23
ページ6