以下、図面を用いて本発明の実施形態を説明する。
<第1の実施形態>
本発明の第1の実施形態では、ユーザーがメカ部品トレースデータに対して任意の点又は領域を指定することによって、指定された点の近傍又はその点を含む所定の領域におけるコントローラ部品トレースデータを拡大表示するデバッグ解析システムの例を説明する。
図1は、本発明の第1の実施形態におけるデバッグ解析システム10のツール環境構成の例を説明する機能ブロック図である。
本実施例のデバッグ解析システム10は、コントローラシミュレータ110、メカシミュレータ120及びデータ解析支援装置130を有する。
コントローラシミュレータ110は、メカ部品(例えば自動車のエンジンのような機械装置)を制御するコントローラ部品(例えばマイコン等を含む電子機器)の動作をシミュレートするために用いられる。コントローラシミュレータ110は、データ解析支援装置130からのデータ設定要求を受け取り、コントローラ部品の内部パラメータを変更する。また、コントローラシミュレータ110は、予め定義されたシミュレーション条件に従いコントローラ部品の挙動をシミュレートし、さらに予め定義されたデータ出力条件に従いコントローラ部品トレースデータ150(図5参照)を出力する。出力されるコントローラ部品トレースデータ150は、時刻と、その時刻におけるコントローラシミュレータ110内部の少なくとも一つの変数の値と、の複数の組を含む。
メカシミュレータ120は、データ解析支援装置130からのデータ設定要求を受け取り、メカ部品の内部パラメータを変更する。また、メカシミュレータ120は、予め定義されたシミュレーション条件に従ってメカ部品の挙動をシミュレートする。さらに、メカシミュレータ120は、トレースデータ連携処理部121を有する。トレースデータ連携処理部121は、コントローラ部品トレースデータ150を受け取り、コントローラ部品トレースデータ150とメカ部品のトレースデータとの連携処理を行い、予め定義されたデータ出力条件に従ってコントローラ部品及びメカ部品のトレースデータを出力する。
出力されるトレースデータは、時刻と、その時刻におけるコントローラシミュレータ110内部の少なくとも一つの変数の値と、その時刻におけるメカシミュレータ120内部の少なくとも一つの変数の値と、の複数の組を含む。ただし、後述するように、ここで出力されるコントローラシミュレータ110内部の変数の値は、その前にコントローラシミュレータ110からメカシミュレータ120に送信されたものである。このため、コントローラシミュレータ110がトレースデータを出力しない条件下では、メカシミュレータ120はコントローラシミュレータ110内部の変数の値を出力しない。
データ解析支援装置130は、データ設定処理部131及びデータ表示処理部132を有する。データ設定処理部131は、ユーザーからの各種データ設定要求を受け取り、その要求をコントローラシミュレータ110及びメカシミュレータ120へ通知する。データ表示処理部132は、メカシミュレータ120から出力されたコントローラ部品及びメカ部品のトレースデータを受け取り、データの表示処理を行い、ユーザーへ情報提示する。
図15は、本発明の第1の実施形態のデバッグ解析システム10を動作するために使用されるハードウェア構成の例を示すブロック図である。
デバッグ解析システム10を動作する計算機1では、少なくとも1つ以上の中央演算処理装置2を備えており、また主記憶装置3及び外部インタフェース4も備えている。さらに外部インタフェース4は、入力装置40、表示装置50及び補助記憶装置60といった周辺機器とバス接続されており、外部インタフェース4を介して計算機1と周辺装置との間でデータが入出力される。なお、入力装置40の一例はマウスのようなポインティングデバイス及びキーボードのような文字入力デバイスであり、表示装置50の一例は画像表示装置であり、補助記憶装置60の一例はハードディスクドライブである。
デバッグ解析システム10は、主記憶装置3又は補助記憶装置60に常時格納されており、システムを動作させる際には外部インタフェース4を通じて中央演算処理装置2へと呼び出される。すなわち、コントローラシミュレータ110、メカシミュレータ120及びデータ解析支援装置130が実行する処理は、実際には、主記憶装置3又は補助記憶装置60に格納されたプログラム(例えば、それぞれ、コントローラシミュレータプログラム、メカシミュレータプログラム及びデータ解析支援プログラム)に従って中央演算処理装置2が実行する。トレースデータ連携処理部121は、メカシミュレータプログラムのサブプログラムとして提供されてもよい。
図2は、本発明の第1の実施形態におけるシミュレーション実行を説明するフローチャートである。
ステップ(S)1000では、データ設定処理部131がコントローラ部品のトレース条件を設定する。ステップ1100では、データ設定処理部131がメカ部品のトレース条件を設定する。ステップ1200では、データ設定処理部131がコントローラ部品又はメカ部品のトレースデータの出力方向を設定する。ステップ1300では、データ設定処理部131がシミュレーション条件を設定する。なお、これらの設定は、例えば、ユーザーが入力装置40を操作して入力した値をデータ設定処理部131が各シミュレータに通知することによって実行される。ステップ1000からステップ1300は、どのような順序で実行されてもよい。設定される条件の詳細については後述する(図3参照)。
ステップ1000からステップ1300までの条件設定が行われた後に、ステップ1400でコントローラシミュレータ110及びメカシミュレータ120によるシミュレーションの実行が開始される。
ステップ1400でシミュレーション実行が開始された後、ステップ1500では、データ解析支援装置130がコントローラ部品又はメカ部品のトレースデータ出力の有無を判定する。トレースデータ出力がある場合にはステップ1600でデータ表示処理部132がトレース対象であるデータを表示し、トレースデータ出力がない場合にはステップ1700へ処理が進む。
ステップ1700では、データ解析支援装置130がシミュレーション実行終了命令の有無及びシミュレーション実行終了条件が満たされるか否かを判定する。シミュレーション実行終了命令は、ユーザーによって入力装置40から入力される。シミュレーション実行終了条件は、例えば、ユーザーによってシミュレーション条件として設定されたシミュレーション終了時刻であり、シミュレータ内部の時刻がシミュレーション終了時刻と一致した場合にシミュレーション実行終了条件が満たされると判定される。
シミュレーション実行終了命令があったか、又はシミュレーション実行終了条件が満たされる場合、ステップ1800でシミュレーション実行が終了し、処理が終了する。シミュレーション終了命令がなく、かつ、シミュレーション実行終了条件も満たされない場合、ステップ1500へ処理が戻る。
図3は、本発明の第1の実施形態のデバッグ解析システム10におけるユーザインタフェースの例を示す説明図である。
具体的には、図3に例示する表示装置50には、入力装置40を介して、データ設定処理部131がステップ1000からステップ1300までのデータ出力条件設定要求及びステップ1400のシミュレーション実行制御要求を受け取るためのユーザインタフェースが示されている。
表示装置50には、シミュレーション実行制御部501、シミュレーション開始時刻設定部502及びシミュレーション終了時刻設定部503が表示される。
シミュレーション実行制御部501は、ユーザーがシミュレーション実行の開始及び終了を命令するために使用される。図3に例示されたシミュレーション実行制御部501は、それぞれ「スタート」及び「エンド」の表示に対応する二つのラジオボタンを含む。図3の例では「エンド」に対応するラジオボタンが選択されている。これは、シミュレーションの実行が既に終了したか、又はまだ開始されていないことを意味する。ユーザーが入力装置40を操作して「スタート」に対応するラジオボタンを選択すると、コントローラシミュレータ110及びメカシミュレータ120によるシミュレーションの実行が開始される(図2のステップ1400)。シミュレーションが実行されているときにユーザーが「エンド」に対応するラジオボタンを選択すると、データ解析支援装置130はシミュレーション実行終了命令があったと判定する(図2のステップ1700)。
シミュレーション開始時刻設定部502及びシミュレーション終了時刻設定部503は、図2のステップ1300においてユーザーがシミュレーション条件を設定するために使用される。図3に例示されたシミュレーション開始時刻設定部502及びシミュレーション終了時刻設定部503は、それぞれ、シミュレーションの開始時刻及び終了時刻の表示を含む。ユーザーが入力装置40を操作してこれらの時刻を入力することによって、シミュレーション条件が設定される。
図3の例では、シミュレーション開始時刻設定部502及びシミュレーション終了時刻設定部503にそれぞれ「0.000」及び「10.000」が表示されている。これは、時刻0秒から時刻10秒までのシミュレーションを実行するように、ユーザーがシミュレーション条件を設定したことを意味する。
なお、これらの時刻は、実時刻ではなく、コントローラシミュレータ110又はメカシミュレータ120の内部の時刻(すなわちシミュレーション時刻)である。以下の説明においても同様である。
さらに、表示装置50には、コントローラ部品トレースデータ出力設定部504、コントローラ部品トレース開始時刻設定部505、コントローラ部品トレース終了時刻設定部506、及びコントローラ部品トレース対象データ設定部507が表示される。これらは、図2のステップ1000においてユーザーがコントローラ部品トレース条件を設定するために使用される。
ここで、「シミュレーション条件」及び「トレース条件」について説明する。
シミュレーション条件は、シミュレーションを実行する条件である。具体的には、シミュレーション条件は、少なくともシミュレーションの開始時刻及び終了時刻を含む。図3には示されていないが、シミュレーション条件は、上記以外の条件(例えば、シミュレーション開始時点のシミュレータ内部のパラメータの初期値等)をさらに含んでもよい。
一方、トレース条件は、シミュレーション結果の記録及び表示に関する条件である。各シミュレータは、シミュレーション結果として種々の値を出力することができるが、トレース条件は、どの期間のどの値を記録し、それをユーザーに対して表示するかを指定するものである。トレース条件の具体例は後述する。コントローラシミュレータ110及びメカシミュレータ120に関するトレース条件を、それぞれコントローラ部品トレース条件及びメカ部品トレース条件と記載する。また、各シミュレータがトレース条件に従って記録及び表示するデータをトレースデータと記載する。
表示装置50には、さらに、メカ部品トレースデータ出力設定部508、メカ部品トレース開始時刻設定部509、メカ部品トレース終了時刻設定部510、及びメカ部品トレース対象データ設定部511が表示される。これらは、図2のステップ1100においてユーザーがメカ部品トレース条件を設定するために使用される。
図3に例示されたコントローラ部品トレースデータ出力設定部504及びメカ部品トレースデータ出力設定部508の各々は、「オン」及び「オフ」の表示に対応する二つのラジオボタンを含む。ユーザーは、入力装置40を操作してこれらのラジオボタンを選択することによって、各シミュレータにトレースデータを出力させるか否かを設定することができる。図3の例では、コントローラ部品トレースデータ出力設定部504において「オフ」に対応するラジオボタンが、メカ部品トレースデータ出力設定部508において「オン」に対応するラジオボタンがそれぞれ選択されている。これらは、コントローラシミュレータ110がトレースデータを出力せず、メカシミュレータ120がトレースデータを出力するように設定されていることを示す。
図3に例示されたコントローラ部品トレース開始時刻設定部505及びコントローラ部品トレース終了時刻設定部506は、それぞれ、コントローラシミュレータ110によるトレースの開始時刻及び終了時刻の表示を含む。ユーザーが入力装置40を操作してこれらの時刻を入力することによって、コントローラシミュレータ110によるトレースの開始時刻及び終了時刻が設定される。
図3に例示されたコントローラ部品トレース対象データ設定部507は、それぞれ「関数番号」及び「タスク番号」に対応する二つのチェックボックスを含む。ユーザーは、入力装置40を操作してこれらのチェックボックスを選択することによって、コントローラシミュレータ110に出力させるトレースデータを設定することができる。図3の例ではコントローラシミュレータ110がトレースデータとして出力できる値として関数番号及びタスク番号を挙げたが、コントローラシミュレータ110内部の変数の値である限り、上記以外の値がトレースデータとして出力されてもよい。
図3の例ではコントローラ部品トレースデータ出力設定部504において「オフ」が選択されているため、コントローラシミュレータ110はトレースデータを出力しない。このため、コントローラ部品トレース開始時刻設定部505及びコントローラ部品トレース終了時刻設定部506ではいずれも時刻「0.000」が設定され、コントローラ部品トレース対象データ設定部507ではいずれのチェックボックスも選択されていない。
図3に例示されたメカ部品トレース開始時刻設定部509及びメカ部品トレース終了時刻設定部510は、それぞれ、メカシミュレータ120によるトレースの開始時刻及び終了時刻の表示を含む。ユーザーが入力装置40を操作してこれらの時刻を入力することによって、メカシミュレータ120によるトレースの開始時刻及び終了時刻が設定される。
図3に例示されたメカ部品トレース対象データ設定部511は、それぞれ「エンジン回転数」及び「燃料噴射量」に対応する二つのチェックボックスを含む。ユーザーは、入力装置40を操作してこれらのチェックボックスを選択することによって、メカシミュレータ120に出力させるトレースデータを設定することができる。図3の例ではメカシミュレータ120がトレースデータとして出力できる値としてエンジン回転数及び燃料噴射量を挙げたが、メカシミュレータ120内部の変数の値である限り、上記以外の値がトレースデータとして出力されてもよい。
図3の例では、メカ部品トレースデータ出力設定部508において「オン」が選択され、メカ部品トレース開始時刻設定部509及びメカ部品トレース終了時刻設定部510においてそれぞれ「0.000」及び「10.000」が設定され、メカ部品トレース対象データ設定部511において「エンジン回転数」が選択されている。これは、メカシミュレータ120が、時刻「0.000」(秒)から「10.000」(秒)までの変数「燃料噴射量」の値をトレースデータとして出力するように設定されていることを示す。
表示装置50には、さらに、トレースデータ出力方向設定部512が表示される。これは、図2のステップ1200においてユーザーがトレースデータ出力方向を設定するために使用される。図3に例示するトレースデータ出力方向設定部512は、「コントローラ部品⇒メカシミュレータ」、「メカ部品⇒コントローラシミュレータ」及び「コントローラ部品/メカ部品⇒挙動連携処理装置」のそれぞれの表示に対応するラジオボタンを含む。ユーザーは、入力装置40を操作してこれらのラジオボタンを選択することによって、トレースデータの出力方向を設定することができる。第1の実施形態では、「コントローラ部品⇒メカシミュレータ」が選択される。トレースデータの出力方向の詳細については後述する。挙動連携処理装置(すなわちトレースデータ連携処理装置140)については、本発明の第3の実施形態において説明する。
次に、図3に示されているトレース条件、シミュレーション条件下において、データ設定処理部131がシミュレーション実行制御部501にてシミュレーション実行開始要求を受け取った(すなわち、ユーザーが「スタート」を選択した)場合について説明する。
図4は、本発明の第1の実施形態において表示されるトレースデータの例を示す説明図である。
図3に示す条件下でシミュレーション実行(以下の説明において、このシミュレーションを1回目のシミュレーションとも記載する)が終了した後、データ表示処理部132は、図4に示すように、メカ部品トレースデータ表示部514に0秒から10秒までのエンジン回転数変化(太実線)515を表示する。このとき、データ設定処理部131は、以下に説明するように、表示されたエンジン回転数変化515をもとに、コントローラ部品のトレース条件及びシミュレーション条件の設定変更要求を受け取ることができる。
なお、この時点で、コントローラ部品トレースデータ表示部513には何も表示されていない。
ユーザーは、入力装置40を操作してヘアーカーソル(細破線)516を上下左右に移動させることによって、シミュレーション時刻当たりのエンジン回転数変化を表す波形515上の任意のポイントを指定することができる(図4の「1.ユーザーによるポイント指定」(ステップ9000)に相当)。データ設定処理部131は、このポイントの指定を前述の設定変更要求として受け取る。そして、データ設定処理部131は、受け取った設定変更要求に従って、斜線で示されるコントローラ部品のトレース対象領域のデータを取得するためのトレースデータ出力条件、及び、シミュレータ内部の時刻がトレース対象領域から外れたときにシミュレーション実行を自動的に終了するためのシミュレーション条件を設定する。
図4の例では、ヘアーカーソル516によって、シミュレーション時刻5.05秒におけるエンジン回転数が指定されている。この場合、斜線で示されるコントローラ部品のトレース対象領域517は、シミュレーション時刻5.00秒から5.10秒までの範囲に相当する。トレース対象領域517は、ユーザーによって指定されたシミュレーション時刻(図4では5.05秒)を含み、かつ、1回目のシミュレーションによるトレースデータが取得された時間(図4では0.00秒から10.00秒まで)内に含まれるように設定される。例えば、データ設定処理部131が、ユーザーによって指定された時刻を含む所定の範囲(図4の例では指定された時刻−0.05秒から+0.05秒の範囲)をトレース対象領域517として設定してもよいし、ユーザーがトレース対象領域517自体を指定してもよい。ユーザーが指定する場合は、図3に示すユーザインタフェースを使用することができる。
その後、コントローラ部品トレース対象データ設定部507は、ユーザーからの指定に従って、関数番号をトレースデータとして出力する条件を設定する。
これらの設定の結果、図3の表示は次のように変更される。すなわち、コントローラ部品トレースデータ出力設定部504において「オン」が選択される。シミュレーション開始時刻設定部502、コントローラ部品トレース開始時刻設定部505及びメカ部品トレース開始時刻設定部509に「5.000」が表示される。シミュレーション終了時刻設定部503、コントローラ部品トレース終了時刻設定部506及びメカ部品トレース終了時刻設定部510に「5.100」が表示される。コントローラ部品トレース対象データ設定部507において「関数番号」が選択される。
その後、シミュレーション実行制御部501がシミュレーション実行開始要求を受け取り、上記のように設定された条件に基づくシミュレーションが実行される。このとき実行されるシミュレーションを、以下の説明において2回目のシミュレーションとも記載する。図4に示す「2.シミュレーション実行」(ステップ9100)は、この2回目のシミュレーションを意味する。2回目のシミュレーション実行終了後、データ表示処理部132は、コントローラ部品トレースデータ表示部513に、トレース対象領域における関数番号変化(太破線)518を表示する(図4の「3.指定ポイント近傍のトレースデータ表示」(ステップ9200)に相当)。
このとき、メカ部品トレースデータ表示部514には、シミュレーション時刻が0.00秒から10.00秒までの間のエンジン回転数変化が表示されるのに対して、コントローラ部品トレースデータ表示部513には、シミュレーション時刻が5.00秒から5.10秒までの間の関数番号変化が表示される。このように、メカ部品トレースデータが表示されるシミュレーション時刻の範囲の一部に対応するコントローラ部品トレースデータが、時間軸方向に拡大して表示される。
例えば、1回目のシミュレーションによって表示されたエンジン回転数515に異常が発見された場合、その異常はコントローラ部品の不具合(より具体的には、コントローラ部品にインストールされたソフトウェア)に起因する可能性がある。ユーザーは、その異常の原因となった可能性があるコントローラ部品の挙動を観測するため、エンジン回転数の異常が観測されたシミュレーション時刻を指定し、さらに、その時刻の近傍における関数番号を出力するように指定することができる。その場合、指定された時刻を含むトレース対象領域における時刻ごとの関数番号518がコントローラ部品トレースデータ表示部513に表示される。ユーザーは、各時刻において処理されている関数番号を参照することによって、コントローラ部品のデバッグを行うことができる。
しかし、仮に、関数番号518をエンジン回転数515と同じ時間スケールで表示すると、ユーザーが関数番号の変化を観測することは困難である。これは、関数番号が一般的にエンジン回転数よりずっと短い時間間隔で変化するためである。例えば、エンジン回転数の観測は数ミリ秒ごとに行えば十分であるのに対して、コントローラ部品のCPUの命令サイクルが数十メガヘルツ程度であれば、複数のCPU命令が実行される関数単位では、関数番号は数マイクロ秒ごとに変化する。このように、両者を表示するための適正な時間スケールには1000倍程度又はそれ以上の差が生じる場合がある。
本実施形態では、それぞれのトレースデータを観測に適した時間スケールで表示するために、関数番号518の時間分解能がエンジン回転数515のそれより高くなるように表示される。言い換えると、エンジン回転数515が表示される時刻の間隔より短い間隔の時刻ごとの関数番号518が表示される。例えば、コントローラシミュレータ110がコントローラ部品トレースデータとして数マイクロ秒ごとの関数番号を出力し、メカシミュレータ120がメカ部品トレースデータとして数ミリ秒ごとのエンジン回転数を出力し、表示装置50がトレース対象領域の関数番号を時間軸方向に拡大して表示してもよい。図4の例では、メカ部品トレースデータ表示部514の時間軸における0.00秒から10.00秒までの10秒間と、コントローラ部品トレースデータ表示部513の時間軸における5.00秒から5.10秒までの0.1秒間とが同じ長さになるように表示される。これによって、ユーザーがコントローラ部品の挙動を容易に観測することができる。
また、上記のように時間スケールが大きく異なるため、単位時間当たりのコントローラ部品トレースデータの量は、メカ部品トレースデータのそれよりずっと多くなる。このため、仮にメカ部品トレースデータと同じ時間範囲(例えば0.00秒から10.00秒までの間)のコントローラ部品トレースデータを出力する場合、膨大なデータを処理する必要が生じ、その処理のために多くの時間を要することになる。しかし、本実施形態では、トレース対象領域のみについてコントローラ部品トレースデータを表示することによって、表示のために必要なデータ量を制限することができる。
また、コントローラ部品のトレースデータを出力しない場合と比較して、それを出力する2回目のコントローラ部品のシミュレーション実行速度は低下する。しかし、上記のようにトレース対象領域として指定されたごく短い時間についてのみトレースデータを出力することによって、シミュレーション実行速度の低下を抑制することができる。
なお、図4の例では、コントローラ部品トレースデータ表示部513に関数番号が表示される。これは、各時刻においてどの関数が処理されているかを特定することによって、各時刻におけるコントローラシミュレータ110の挙動(すなわちそれによってシミュレートされたコントローラ部品の挙動)を特定することができるためである。しかし、この表示は一例であり、関数番号以外の値(例えば各時刻において実行されているプログラムのアドレス等)が表示されてもよい。ユーザーは、コントローラ部品トレース対象データ設定部507を介して、コントローラ部品のデバッグに有用な任意の値が表示されるように設定することができる。
また、図4の例では、メカ部品トレースデータ表示部514にエンジン回転数が表示されるが、これも一例に過ぎず、実際には種々の値(例えば自動車の走行速度等)が表示され得る。表示される変数の値が異なっても、一般には上記のような時間スケールの関係が成立する場合が多く、その場合には本実施形態は有効である。ただし、変数の選択次第では、時間スケールの関係が逆転する場合がある。そのような場合については後述する(第2の実施形態参照)。
図5は、本発明の第1の実施形態において構成されるデバッグ解析システム10の詳細を例示する説明図である。
コントローラシミュレータ110は、コントローラ部品のトレース条件とシミュレーション条件を受け取るコントローラ部品トレース条件設定部112、及び、コントローラ部品シミュレーション条件設定部113を有する。コントローラシミュレータ110は、さらに、コントローラ部品トレースデータ150を外部出力するコントローラ部品トレースデータ出力制御部114を有する。
メカシミュレータ120は、それぞれメカ部品のトレース条件及びシミュレーション条件を受け取るメカ部品トレース条件設定部122及びメカ部品シミュレーション条件設定部123を有する。さらに、メカシミュレータ120は、トレースデータ連携処理部121を有する。トレースデータ連携処理部121は、コントローラ部品トレースデータ入力制御部125、コントローラ部品/メカ部品トレースデータ同期制御部126及びコントローラ部品/メカ部品トレースデータ出力制御部127を有する。コントローラ部品トレースデータ入力制御部125がコントローラ部品のトレース対象データを受け取る。そして、コントローラ部品/メカ部品トレースデータ同期制御部126が各部品のトレースデータの同期をとる。最後に、コントローラ部品/メカ部品トレースデータ出力制御部127がトレースデータを出力する。
データ解析支援装置130のデータ設定処理部131は、入力装置40からユーザーの操作入力を受け取る入力制御部136、入力データから各種条件を判定するトレース条件判定部133、シミュレーション条件判定部134及びトレースデータ表示条件判定部135を有する。また、データ解析支援装置130のデータ表示処理部132は、トレースデータを表示装置50に出力するトレースデータ表示制御部137、及びメカシミュレータ120から出力されたトレースデータを受け取るトレースデータ入力制御部138を有する。
1回目のシミュレーションでは、図3に示すような条件が入力制御部136に入力され、トレース条件判定部133、シミュレーション条件判定部134及びトレースデータ表示条件判定部135はどのような条件が入力されたかを判定し、各条件がコントローラ部品トレース条件設定部112、コントローラ部品シミュレーション条件設定部113、メカ部品トレース条件設定部122及びメカ部品シミュレーション条件設定部123に設定される(図2のステップ1000〜ステップ1300)。その後、コントローラシミュレータ110及びメカシミュレータ120は、設定された条件に従ってシミュレーションの実行を開始する(図2のステップ1400)。
メカ部品はコントローラ部品から受信した制御信号に従って動作し、コントローラ部品はメカ部品から受信した信号を制御に反映させる。このため、コントローラシミュレータ110及びメカシミュレータ120は、相互にデータを通信しながらシミュレーションを実行する。しかし、トレースデータとしては、図5には明示されていないが、ユーザーによってトレース対象データとして指定されたエンジン回転数のみがメカシミュレータ120から出力される。すなわち、1回目のシミュレーションではコントローラ部品トレースデータ150は出力されない。この場合、図2のステップ1500ではメカ部品トレースデータが出力されたと判定され、トレースデータ表示制御部137によってエンジン回転数がメカ部品トレースデータ表示部514に表示される(図2のステップ1600)。
その後、シミュレーション条件として設定されたシミュレーション終了時刻が到来すると、シミュレーションの実行が終了する(図2のステップ1700及びステップ1800)。
2回目のシミュレーションでは、図4を参照して説明したように変更された条件が入力制御部136に入力され、各シミュレータに設定される(図2のステップ1000〜ステップ1300)。その後、コントローラシミュレータ110及びメカシミュレータ120は、設定された条件に従ってシミュレーションの実行を開始する(図2のステップ1400)。このとき、コントローラシミュレータ110は、ユーザーによる設定に従って、関数番号をコントローラ部品トレースデータ150として出力する。
コントローラ部品トレースデータ150は、メカシミュレータ120内のトレースデータ連携処理部121のコントローラ部品トレースデータ入力制御部125に入力される。既に説明したようにコントローラ部品トレースデータとメカ部品トレースデータの時間スケールが異なるため、コントローラ部品/メカ部品トレースデータ同期制御部126が時刻情報に基づいて両者を対応付け、コントローラ部品/メカ部品トレースデータ出力制御部127が両者をトレースデータ入力制御部138に出力する。
この場合、図2のステップ1500ではコントローラ部品トレースデータ及びメカ部品トレースデータが出力されたと判定され、トレースデータ表示制御部137によって関数番号及びエンジン回転数がそれぞれコントローラ部品トレースデータ表示部513及びメカ部品トレースデータ表示部514に表示される(図2のステップ1600)。その結果、図4に示すようなトレースデータが表示される。
なお、図3のトレースデータ出力方向設定部512において選択された「コントローラ部品⇒メカシミュレータ」は、上記のように、コントローラシミュレータ110から出力されたコントローラ部品トレースデータ150がメカシミュレータ120に入力されることを意味する。上記以外の方向については後述する(第2実施形態及び第3実施形態参照)。
次に、図6A〜図6Cを参照して、本実施形態のデバッグ解析システム10がトレースデータを出力する処理について説明する。なお、本実施形態の各シミュレータが実行するシミュレーション処理自体は従来の技術によって実現できるため、その詳細な説明は省略する。
図6Aは、本発明の第1の実施形態におけるコントローラシミュレータ110のデータ処理を示すフローチャートである。
ステップ2000において、コントローラシミュレータ110は、コントローラ部品のトレース条件が一致しているか否かを判定する。トレース条件としてトレース開始時刻及び終了時刻が設定されている場合、現在のシミュレーション時刻がトレース開始時刻から終了時刻までの時間に含まれるか否かが判定される。トレース条件が一致している場合、コントローラシミュレータ110は、ステップ2100においてコントローラ部品のシミュレーション時刻を出力し、ステップ2200においてコントローラ部品のトレースデータを出力した後、処理を終了する。トレース条件が一致していない場合、コントローラシミュレータ110は、ステップ2100及びステップ2200を実行せずに処理を終了する。
1回目のシミュレーションでは、コントローラシミュレータ110がコントローラ部品トレースデータを出力しないように設定され、トレース条件として設定されている開始時刻及び終了時刻はいずれも「0.000」である。このため、ステップ2000では常にトレース条件が一致しないと判定され、ステップ2100及びステップ2200は実行されない。
2回目のシミュレーションでは、トレース条件として設定されている開始時刻及び終了時刻はそれぞれ「5.000」及び「5.100」である。このため、コントローラ部品のシミュレーション時刻が5.000秒から5.100秒までの間のいずれかである場合に、ステップ2000でトレース条件が一致すると判定され、コントローラシミュレータ110のコントローラ部品トレースデータ出力制御部114が、シミュレーション時刻と、その時刻に対応するコントローラ部品トレースデータ(図4の例では関数番号)とを出力する(ステップ2100及びステップ2200)。
図6Bは、本発明の第1の実施形態におけるメカシミュレータ120のデータ処理を示すフローチャートである。
メカシミュレータ120は、ステップ3000において、メカ部品のシミュレーション時刻を取得し、ステップ3100において、コントローラ部品のトレースデータ出力の有無を判定する。トレースデータ出力が有る場合は、ステップ3200へ処理が進む。一方、トレースデータ出力が無い場合は、ステップ3900へ処理が進み、メカシミュレータ120は、メカ部品のシミュレーション時刻を出力し、ステップ3950において、メカ部品のトレースデータのみを出力する。
ステップ3100で、コントローラ部品のトレースデータ出力が有ると判定された場合、メカシミュレータ120は、ステップ3200において、コントローラ部品のシミュレーション時刻を取得する。その後、ステップ3300において、メカシミュレータ120は、コントローラ部品のトレースデータを取得する。そして、ステップ3400において、メカシミュレータ120は、取得したメカ部品のシミュレーション時刻とコントローラ部品のシミュレーション時刻とが一致するか否かを判定する。シミュレーション時刻が一致した場合は、ステップ3500へ処理が進むが、一致しなかった場合は、ステップ3700へ進み、コントローラ部品のシミュレーション時刻を取得し、ステップ3800において、コントローラ部品のトレースデータのみを出力する。
シミュレーション時刻が一致した場合メカシミュレータ120は、ステップ3500においてシミュレーション時刻を出力し、ステップ3600においてコントローラ部品及びメカ部品のトレースデータを出力して処理が終了する。
1回目のシミュレーションでは、コントローラシミュレータ110がコントローラ部品トレースデータ150を出力しない。このため、メカシミュレータ120は、ステップ3000においてメカ部品のシミュレーション時刻を取得した後、ステップ3200からステップ3800を実行せずに、そのシミュレーション時刻と、それに対応するメカ部品トレースデータ(すなわちエンジン回転数)を出力する(ステップ3900及びステップ3950)。
2回目のシミュレーションでは、コントローラシミュレータ110がコントローラ部品トレースデータ150を出力する。このため、メカシミュレータ120は、ステップ3000においてメカ部品のシミュレーション時刻を取得した後、ステップ3200においてコントローラ部品トレースデータ150に含まれるコントローラ部品のトレース時刻を取得する。
既に説明したように、本実施形態では、コントローラ部品トレースデータの時間分解能がメカ部品トレースデータのそれより高い。このため、あるシミュレーション時刻における関数番号が出力されても、その時刻におけるエンジン回転数は出力されない場合がある。このため、メカシミュレータ120は、ステップ3200において、コントローラ部品のシミュレーション時刻を取得し、その後ステップ3300において、そのシミュレーション時刻に対応するコントローラ部品トレースデータ(すなわち関数番号)を取得し、ステップ3400において、その時刻に対応するメカ部品トレースデータが出力されるか否かを判定する。
コントローラ部品のシミュレーション時刻に対応するメカ部品トレースデータが出力されないと判定された場合、メカシミュレータ120は、コントローラ部品のシミュレーション時刻と、その時刻に対応するコントローラ部品トレースデータを出力する(ステップ3700及び3800)。
コントローラ部品のシミュレーション時刻に対応するメカ部品トレースデータが出力されると判定された場合、メカシミュレータ120は、そのシミュレーション時刻、その時刻に対応するコントローラ部品トレースデータ(すなわち関数番号)、及びその時刻に対応するメカ部品トレースデータ(すなわちエンジン回転数)を出力する(ステップ3500及びステップ3600)。これによって、同一の時刻に対応するコントローラ部品トレースデータ及びメカ部品トレースデータが対応付けられる。
図6Cは、本発明の第1の実施形態におけるデータ解析支援装置130のデータ処理を示すフローチャートである。
データ解析支援装置130は、ステップ4000において、メカシミュレータ120から出力されたシミュレーション時刻を取得し、ステップ4100において、メカシミュレータ120から出力されたコントローラ部品及びメカ部品のトレースデータを(メカ部品のトレースデータのみが出力された場合はメカ部品のトレースデータを)取得する。なお、ステップ4000において取得される時刻及びステップ4100において取得されるトレースデータは、それぞれ、図6Bのステップ3500及びステップ3600において出力されたものである。
そして、データ解析支援装置130は、ステップ4200において、取得したトレースデータを表示装置50に表示する(図4参照)。
以上の第1の実施形態によれば、コントローラ部品トレースデータとメカ部品トレースデータの時間スケールが異なる場合であっても、表示のために必要なデータ量を制限し、シミュレーションの実行速度の低下を抑制しながら、必要な時間範囲において、十分な時間分解能を有するトレースデータを表示することができる。コントローラ部品トレースデータとメカ部品トレースデータとを連携して表示することによって、効率的にソフトウェアのデバッグを行い、工数の大きな下流工程での開発工数を軽減し、実装不具合による手戻りを抑制することができる。
<第2の実施形態>
本発明の第2の実施形態では、ユーザーがコントローラ部品トレースデータ150に対して任意の点又は領域を指定することによって、指定された点の近傍又はその点を含む所定の領域におけるメカ部品のトレースデータを拡大表示するデバッグ解析システムの例を説明する。
図7は、本発明の第2の実施形態におけるデバッグ解析システム20のツール環境構成の例を説明する機能ブロック図である。
図7のデバッグ解析システム20のうち、既に説明した図1に示された同一の符号を付された構成と同一の機能を有する部分については、説明を省略する。
コントローラシミュレータ110は、トレースデータ連携処理部111を有する。トレースデータ連携処理部111は、メカ部品トレースデータ160(図10参照)を受け取り、メカ部品トレースデータ160とコントローラ部品のトレースデータとの連携処理を行い、予め定義されたデータ出力条件に従いコントローラ部品及びメカ部品のトレースデータを出力する。メカシミュレータ120は、予め定義されたデータ出力条件に従ってメカ部品トレースデータ160を出力する。本実施形態のデバッグ解析システム20におけるシミュレート実行のフローチャートは、図2で示されるフローチャートと同一となるため、説明を省略する。
なお、本実施形態のデバッグ解析システム20のハードウェア構成は、第1の実施形態と同様であるため(図15参照)、説明を省略する。第1の実施形態の場合と同様、第2の実施形態のコントローラシミュレータ110、メカシミュレータ120及びデータ解析支援装置130が実行する処理は、実際には、主記憶装置3又は補助記憶装置60に格納されたプログラムに従って中央演算処理装置2が実行する。トレースデータ連携処理部111は、コントローラシミュレータ110を実現するプログラムのサブプログラムとして提供されてもよい。
図8は、本発明の第2の実施形態のデバッグ解析システム10におけるユーザインタフェースの例を示す説明図である。
図8に示すユーザインタフェースは、第1の実施形態において使用されるものと同じであるが(図3参照)、図8の例では、ユーザーによって図3と異なる設定がなされている。すなわち、コントローラ部品トレースデータ出力設定部504において「オン」が、メカ部品トレースデータ出力設定部において「オフ」が、トレースデータ出力方向設定部512において「メカ部品⇒コントローラシミュレータ」が、それぞれ選択されている。シミュレーション終了時刻設定部503、コントローラ部品トレース終了時刻設定部506及びメカ部品トレース終了時刻設定部510において、それぞれ「0.100」、「0.100」及び「0.000」が設定されている。コントローラ部品トレース対象データ設定部507において「タスク番号」が選択され、メカ部品トレース対象データ設定部511では何も選択されていない。
図8で示されるトレース条件及びシミュレーション条件下において、データ設定処理部131がシミュレーション実行制御部501にてシミュレーション実行開始要求を受け取った場合について、図9を参照して説明する。
図9は、本発明の第2の実施形態において表示されるトレースデータの例を示す説明図である。
図8の条件下でシミュレーション(すなわち、第2の実施形態における1回目のシミュレーション)の実行が終了した後、データ表示処理部132は、図9に示すように、コントローラ部品トレースデータ表示部513に0秒から0.1秒までのタスク番号変化(太実線)519を表示する。このとき、データ設定処理部131は、表示されたタスク番号のデータをもとに、メカ部品のトレース条件及びシミュレーション条件の設定変更要求を受け取ることができる。
第1の実施形態と同様、ユーザーは、入力装置40を操作してヘアーカーソル(細破線)520を上下左右に移動させることによって、シミュレーション時刻当たりのタスク番号変化を表す波形519上の任意のポイントを指定することができる。データ設定処理部131は、このポイントの指定を前述の設定変更要求として受け取る(ステップ9300)。そして、データ設定処理部131は、受け取った設定変更要求に従って、斜線で示されるメカ部品のトレース対象領域521のデータを取得するためのトレースデータ出力条件、及び、シミュレータ内部の時刻がトレース対象領域から外れたときにシミュレーション実行を自動的に終了するためのシミュレーション条件を設定する。
図9の例では、ヘアーカーソル520によって、シミュレーション時刻0.035秒におけるタスク番号が指定されている。この場合、斜線で示されるメカ部品のトレース対象領域521は、シミュレーション時刻0.030秒から0.040秒までの範囲である。トレース対象領域521は、ユーザーによって指定されたシミュレーション時刻(図9では0.035秒)を含むように設定される。第1の実施形態と同様、トレース対象領域521はデータ設定処理部131によって自動的に設定されてもよいし、ユーザーによって指定されてもよい。ユーザーが指定する場合は、図9に示すユーザインタフェースを使用することができる。
その後、メカ部品トレース対象データ設定部511は、ユーザーからの指定に従って、燃料噴射量をトレースデータとして出力する条件を設定する。
これらの設定の結果、図8の表示は次のように変更される。すなわち、メカ部品トレースデータ出力設定部508において「オン」が選択される。シミュレーション開始時刻設定部502、コントローラ部品トレース開始時刻設定部505及びメカ部品トレース開始時刻設定部509に「0.030」が表示される。シミュレーション終了時刻設定部503、コントローラ部品トレース終了時刻設定部506及びメカ部品トレース終了時刻設定部510に「0.040」が表示される。メカ部品トレース対象データ設定部511において「燃料噴射量」が選択される。
その後、シミュレーション実行制御部501がシミュレーション実行開始要求を受け取り、上記のように設定された条件に基づくシミュレーション(すなわち、第2の実施形態における2回目のシミュレーション)が実行される(ステップ9400)。2回目のシミュレーション実行終了後、データ表示処理部132は、メカ部品トレース対象データ表示部514に、トレース対象領域における燃料噴射量変化(太破線)522を表示する。
このとき、コントローラ部品トレースデータ表示部513には、シミュレーション時刻が0.000秒から0.100秒までの間のタスク番号変化519が表示されるのに対して、メカ部品トレースデータ表示部514には、シミュレーション時刻が0.030秒から0.040秒までの間の燃料噴射量変化522が表示される。このように、コントローラ部品トレースデータが表示されるシミュレーション時刻の範囲の一部に対応するメカ部品トレースデータが拡大表示される。
第1の実施形態では、コントローラ部品トレースデータ(関数番号)の時間分解能がメカ部品トレースデータ(エンジン回転数)のそれより高かった。第2の実施形態ではこの関係が逆転し、メカ部品トレースデータ(燃料噴射量)の時間分解能がコントローラ部品トレースデータ(タスク番号)のそれより高くなる。すなわち、第2の実施形態では、図9に示すように、トレース対象領域の燃料噴射量が時間軸方向に拡大して表示される。これによって、ユーザーがメカ部品の挙動を容易に観測することができる。
また、第1の実施形態の場合と同様、トレース対象領域のみについてメカ部品トレースデータを表示することによって、表示のために必要なデータ量を制限することができる。さらに、第1の実施形態と同様、トレースデータを出力することによるメカ部品のシミュレーション実行速度低下を抑制することができる。
なお、タスク番号及び燃料噴射量はトレースデータの一例に過ぎない。実際には、第1の実施形態の場合と同様、種々の変数の値をトレースデータとして選択することができる。
図10は、本発明の第2の実施形態において構成されるデバッグ解析システム20の詳細を例示する説明図である。
図10に示されたデバッグ解析システム20の詳細のうち、既に説明した図5に示された同一の符号を付された構成と、同一の機能を有する部分については、説明を省略する。
コントローラシミュレータ110が有するトレースデータ連携処理部111は、メカ部品トレースデータ入力制御部115、コントローラ部品/メカ部品トレースデータ同期制御部116及びコントローラ部品/メカ部品トレースデータ出力制御部117を有する。メカ部品トレースデータ入力制御部115がメカ部品トレースデータ160を受け取る。そして、コントローラ部品/メカ部品トレースデータ同期制御部116が各部品のトレースデータの同期をとる。最後に、コントローラ部品/メカ部品トレースデータ出力制御部117がコントローラ部品とメカ部品のトレースデータを出力する。メカシミュレータ120は、メカ部品トレースデータ160を外部出力するメカ部品トレースデータ出力制御部124を有する。
1回目のシミュレーションでは、図8に示すような条件が入力制御部136に入力され、各シミュレータに設定される(図2のステップ1000〜ステップ1300)。その後、コントローラシミュレータ110及びメカシミュレータ120は、設定された条件に従ってシミュレーションの実行を開始する(図2のステップ1400)。
図10では省略されているが、1回目のシミュレーションでは、トレースデータとしてタスク番号のみがコントローラシミュレータ110から出力される。すなわち、1回目のシミュレーションではメカ部品トレースデータ160は出力されない。この場合、図2のステップ1500ではコントローラ部品トレースデータが出力されたと判定され、トレースデータ表示制御部137によってタスク番号がコントローラ部品トレースデータ表示部513に表示される(図2のステップ1600)。
その後、シミュレーション条件として設定されたシミュレーション終了時刻が到来すると、シミュレーションの実行が終了する(図2のステップ1700及びステップ1800)。
2回目のシミュレーションでは、図9を参照して説明したように変更された条件が入力制御部136に入力され、各シミュレータに設定される(図2のステップ1000〜ステップ1300)。その後、コントローラシミュレータ110及びメカシミュレータ120は、設定された条件に従ってシミュレーションの実行を開始する(図2のステップ1400)。このとき、メカシミュレータ120は、燃料噴射量をメカ部品トレースデータ160として出力する。
メカ部品トレースデータ160は、コントローラシミュレータ110内のトレースデータ連携処理部111のメカ部品トレースデータ入力制御部115に入力される。コントローラ部品トレースデータとメカ部品トレースデータの時間スケールが異なるため、コントローラ部品/メカ部品トレースデータ同期制御部116が時刻情報に基づいて両者を対応付け、コントローラ部品/メカ部品トレースデータ出力制御部117が両者をトレースデータ入力制御部138に出力する。
この場合、図2のステップ1500ではコントローラ部品トレースデータ及びメカ部品トレースデータが出力されたと判定され、トレースデータ表示制御部137によってタスク番号及び燃料噴射量がそれぞれコントローラ部品トレースデータ表示部513及びメカ部品トレースデータ表示部514に表示される(図2のステップ1600)。その結果、図9に示すようなトレースデータが表示される。
なお、図3のトレースデータ出力方向設定部512において選択された「メカ部品⇒コントローラシミュレータ」は、上記のように、メカシミュレータ120から出力されたメカ部品トレースデータ160がコントローラシミュレータ110に入力されることを意味する。
図11Aは、本発明の第2の実施形態におけるコントローラシミュレータ110のデータ処理を示すフローチャートである。
コントローラシミュレータ110は、ステップ5000において、コントローラ部品のシミュレーション時刻を取得し、ステップ5100において、メカ部品のトレースデータ出力の有無を判定する。トレースデータ出力が有る場合は、ステップ5200へ処理が進む。一方、トレースデータ出力が無い場合は、ステップ5900へ処理が進み、コントローラシミュレータ110は、コントローラ部品のシミュレーション時刻を出力し、ステップ5950において、コントローラ部品のトレースデータのみ出力する。
ステップ5100で、メカ部品のトレースデータ出力が有ると判定された場合、コントローラシミュレータ110は、ステップ5200において、メカ部品のシミュレーション時刻を取得する。その後、ステップ5300において、コントローラシミュレータ110は、メカ部品のトレースデータを取得する。そして、ステップ5400において、コントローラシミュレータ110は、取得したコントローラ部品のシミュレーション時刻とメカ部品のシミュレーション時刻とが一致するか否かを判定する。シミュレーション時刻が一致した場合は、ステップ5500へ処理が進むが、一致しなかった場合は、ステップ5700へ進み、メカ部品のシミュレーション時刻を取得し、ステップ5800において、メカ部品のトレースデータのみを出力する。
シミュレーション時刻が一致した場合、コントローラシミュレータ110は、ステップ5500においてシミュレーション時刻を出力し、ステップ5600においてコントローラ部品及びメカ部品のトレースデータ(又はそれらのうち一方)を出力して処理が終了する。
1回目のシミュレーションでは、メカシミュレータ120がメカ部品トレースデータ160を出力しない。このため、コントローラシミュレータ110は、ステップ5000においてコントローラ部品のシミュレーション時刻を取得した後、ステップ5200からステップ5800を実行せずに、そのシミュレーション時刻と、それに対応するコントローラ部品トレースデータ(すなわちタスク番号)を出力する(ステップ5900及びステップ5950)。
2回目のシミュレーションでは、メカシミュレータ120がメカ部品トレースデータ160を出力する。このため、コントローラシミュレータ110は、ステップ5000においてコントローラ部品のシミュレーション時刻を取得した後、ステップ5200においてメカ部品トレースデータ160に含まれるメカ部品のシミュレーション時刻を取得する。
次に、コントローラシミュレータ110は、ステップ5300において、そのシミュレーション時刻に対応するメカ部品トレースデータ(すなわち燃料噴射量)を取得し、ステップ5400において、コントローラシミュレータ110は、取得したメカ部品のシミュレーション時刻に対応するコントローラ部品トレースデータが出力されるか否かを判定する。これは、コントローラ部品トレースデータとメカ部品トレースデータとの関係が逆転していることを除いて、図6Bのステップ3400と同様である。
その時刻に対応するコントローラ部品トレースデータが出力されないと判定された場合、コントローラシミュレータ110は、メカ部品のシミュレーション時刻と、その時刻に対応するメカ部品トレースデータを出力する(ステップ5700及び5800)。
その時刻に対応するコントローラ部品トレースデータが出力されると判定された場合、コントローラシミュレータ110は、そのシミュレーション時刻、その時刻に対応するメカ部品トレースデータ(すなわち燃料噴射量)、及びその時刻に対応するコントローラ部品トレースデータ(すなわちタスク番号)を出力する(ステップ5500及びステップ5600)。
図11Bは、本発明の第2の実施形態におけるメカシミュレータ120のデータ処理を示すフローチャートである。
ステップ6000において、メカシミュレータ120は、メカ部品のトレース条件が一致しているか否かを判定する。この判定は、図6Aのステップ2000におけるコントローラ部品のトレース条件の判定と同様に行われる。トレース条件が一致している場合、メカシミュレータ120は、ステップ6100においてメカ部品のシミュレーション時刻を出力し、ステップ6200においてメカ部品のトレースデータを出力した後、処理を終了する。トレース条件が一致していない場合、メカシミュレータ120は、ステップ6100及びステップ6200を実行せずに処理を終了する。
1回目のシミュレーションでは、メカシミュレータ120がメカ部品トレースデータを出力しないように設定されているため、ステップ6000では常にトレース条件が一致しないと判定され、ステップ6100及びステップ6200は実行されない。
2回目のシミュレーションでは、トレース条件として設定されている開始時刻及び終了時刻はそれぞれ「0.030」及び「0.040」である。このため、メカ部品のシミュレーション時刻が0.030秒から0.040秒までの間のいずれかである場合に、ステップ6000でトレース条件が一致すると判定され、メカシミュレータ120のメカ部品トレースデータ出力制御部124が、シミュレーション時刻と、その時刻に対応するメカ部品トレースデータ(図9の例では燃料噴射量)とを出力する(ステップ6100及びステップ6200)。
本実施形態のデータ解析支援装置130が実行する処理は、第1の実施形態と同様であるため、説明を省略する(図6C参照)。
以上の第2の実施形態によれば、メカ部品トレースデータをコントローラ部品トレースデータより高い時間分解能で表示する必要がある場合であっても、表示のために必要なデータ量を制限し、シミュレーションの実行速度の低下を抑制しながら、必要な時間範囲において、十分な時間分解能を有するトレースデータを表示することができる。
なお、第1の実施形態では、メカシミュレータ120はトレースデータ連携処理部121を有するが、コントローラシミュレータ110はトレースデータ連携処理部111を有しない。一方、第2の実施形態では、コントローラシミュレータ110はトレースデータ連携処理部111を有するが、メカシミュレータ120はトレースデータ連携処理部121を有しない。しかし、これらの実施形態の変形例として、コントローラシミュレータ110がトレースデータ連携処理部111を有し、かつ、メカシミュレータ120がトレースデータ連携処理部121を有する構成もあり得る。このような構成においては、ユーザーが必要に応じて(具体的には、選択したトレースデータの時間スケールに応じて)いずれのトレースデータ連携処理部を使用するかを選択することができる。
例えば、第1の実施形態のように、コントローラ部品トレースデータとして関数番号を、メカ部品トレースデータとしてエンジン回転数を選択した場合、ユーザーは、トレースデータ出力方向設定部512において「コントローラ部品⇒メカシミュレータ」を選択する。この場合、トレースデータ連携処理部121が動作して、第1の実施形態において説明した処理が実行されるが、トレースデータ連携処理部111は動作しない。
一方、第2の実施形態のように、コントローラ部品トレースデータとしてタスク番号を、メカ部品トレースデータとして燃料噴射量を選択した場合、ユーザーは、トレースデータ出力方向設定部512において「メカ部品⇒コントローラシミュレータ」を選択する。この場合、トレースデータ連携処理部111が動作して、第2の実施形態において説明した処理が実行されるが、トレースデータ連携処理部121は動作しない。
<第3の実施形態>
本発明の第3の実施形態では、コントローラ部品とメカ部品のトレースデータを連携する処理を独立して実施する装置を備えたデバッグ解析システム30の例を説明する。
図12は、本発明の第3の実施形態におけるデバッグ解析システム30のツール環境構成の例を説明する機能ブロック図である。
本実施例のデバッグ解析システム30は、コントローラシミュレータ110、メカシミュレータ120、データ解析支援装置130及びトレースデータ連携処理装置140を有する。
図12のデバッグ解析システム30のうち、既に説明した図1または図5に示された同一の符号を付された構成と同一の機能を有する部分については、説明を省略する。
トレースデータ連携処理装置140は、コントローラシミュレータ110及びメカシミュレータ120からコントローラ部品トレースデータ150及びメカ部品トレースデータ160を受け取り、トレースデータを連携表示するために処理し、データ解析支援装置130へ出力する。
なお、本実施形態のデバッグ解析システム30のハードウェア構成は、第1の実施形態と同様であるため(図15参照)、説明を省略する。第1の実施形態の場合と同様、第2の実施形態のコントローラシミュレータ110、メカシミュレータ120、データ解析支援装置130及びトレースデータ連携処理装置140が実行する処理は、実際には、主記憶装置3又は補助記憶装置60に格納されたプログラムに従って中央演算処理装置2が実行する。
本実施形態のデバッグ解析システム30におけるシミュレート実行のフローチャートは、図2に示したものと同一であるため、説明を省略する。
本実施形態のデバッグ解析システム30において使用されるユーザインタフェースは、図3又は図8に示したものと同一であるため、説明を省略する。ただし、本実施形態では、トレースデータ出力方向設定部512において「コントローラ部品/メカ部品⇒挙動連携処理装置」が選択される。
図13は、本発明の第3の実施形態において構成されるデバッグ解析システム30の詳細を例示する説明図である。
図13のシステム構成のうち、既に説明した図5または図10に示された同一の符号を付された構成と、同一の機能を有する部分については説明を省略する。
トレースデータ連携処理装置140は、コントローラ部品/メカ部品トレースデータ入力制御部141、コントローラ部品/メカ部品トレースデータ同期制御部142及びコントローラ部品/メカ部品トレースデータ出力制御部143を有する。コントローラ部品/メカ部品トレースデータ入力制御部141は、コントローラ部品トレースデータ150及びメカ部品トレースデータ160を受け取る。コントローラ部品/メカ部品トレースデータ同期制御部142は、各部品のシミュレーション時刻情報を用いて、入力されたトレースデータの同期処理を行う。そして、コントローラ部品/メカ部品トレースデータ出力制御部143は、各部品のトレースデータを出力する。
本実施例におけるデバッグ解析システム30では、各シミュレータがコントローラ部品トレースデータ150及びメカ部品トレースデータ160を外部へ出力する。そのため、トレースデータとして出力されるデータ量が増大する場合などに備えて、トレースデータを保存するために十分な記憶領域を確保する必要がある。
本実施形態におけるコントローラシミュレータ110及びメカシミュレータ120のデータ処理を説明するフローチャートは、それぞれ、既に説明した図6A及び図11Bに示されたフローチャートと同一であるため、説明を省略する。
図14は、本発明の第3の実施形態におけるトレースデータ連携処理装置140のデータ処理を示すフローチャートである。
トレースデータ連携処理装置140は、ステップ8000においてメカ部品のシミュレーション時刻を取得し、ステップ8100においてそのシミュレーション時刻に対応するメカ部品のトレースデータを取得し、ステップ8200においてコントローラ部品のシミュレーション時刻を取得する。ステップ8300において、トレースデータ連携処理装置140は、各部品のシミュレーション時刻が一致しているか否かを判定する。この判定は、図6Bのステップ3300と同様に実行される。シミュレーション時刻が一致している場合、トレースデータ連携処理装置140は、ステップ8400においてコントローラ部品のトレースデータを取得した後、ステップ8500においてコントローラ部品及びメカ部品のトレースデータを出力する。シミュレーション時刻が一致していない場合、ステップ8200に処理が戻る。
以上の第3の実施形態によれば、コントローラ部品トレースデータとメカ部品トレースデータの時間スケールの関係にかかわらず、同一の処理によってトレースデータの出力を同期させることができる。更に、本実施形態のトレースデータ連携処理装置140は、コントローラシミュレータ及びメカシミュレータの外部に独立して実装可能であるため、既存のメカシミュレータ及びコントローラシミュレータを改変することなく、容易に本発明のデバッグ解析システムを実現することができる。