シミュレーション方法、システム及びプログラム
【課題】 フルビークルSILSなどのシミュレーションシステムにおいて、処理速度を向上させること
【解決手段】 通常は物理装置シミュレータを高速で投機的に連続実行させ、実際の入力が入ってきたときのみ、投機的な入力と実際の入力を比較し、それらが不一致であることに応答して、実際の入力の時点に一番近い時点に物理装置シミュレータを戻し、実際の入力の時点まで可変ステップさせ、実際の入力の時点まで辿り着いたら、そこから高速連続実行に戻すことにより、シミュレータの処理速度を著しく向上することができる。
【解決手段】 通常は物理装置シミュレータを高速で投機的に連続実行させ、実際の入力が入ってきたときのみ、投機的な入力と実際の入力を比較し、それらが不一致であることに応答して、実際の入力の時点に一番近い時点に物理装置シミュレータを戻し、実際の入力の時点まで可変ステップさせ、実際の入力の時点まで辿り着いたら、そこから高速連続実行に戻すことにより、シミュレータの処理速度を著しく向上することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、自動車などに使用されるエンジンなどの機構装置のテストに関し、より詳しくは、ソフトウェア・ベースでの機構装置シミュレータのテストに関するものである。
【背景技術】
【0002】
自動車は、その初期の時代の20世紀初頭は、動力としてのエンジンと、ブレーキ、アクセル、ハンドル、トランスミッション、サスペンジョンを含む、機構部品からなっていたが、エンジンのプラグの点火、ヘッドライト以外は、電気的な仕組みはほとんど利用していなかった。
【0003】
ところが、1970年代頃から、大気汚染、石油危機などに備えて、エンジンを効率的に制御する必要性が生じ、このためエンジンの制御に、ECUが使用されるようになってきた。ECUは、一般的に、センサからの入力信号を、例えばA/D変換する入力インターフェースと、決められた論理に従ってディジタル入力信号を処理する論理演算部(マイクロコンピュータ)と、その処理結果を、アクチュエータ作動信号に変換する出力インターフェースとから構成される。
【0004】
ここで、ECUに信号を入力するセンサには、エンジンの温度などを計測する温度センサ、エンジンに吸入される圧力を推定するための圧力センサ、アクセスペダルの踏み量を測定するスロットル・ポジション・センサ、ステアリング舵角センサ、車高センサ、回転速度センサ、ノックセンサ、加速度センサ、流量センサ、酸素センサ、希薄空燃比センサなどがある。
【0005】
一方、ECUの出力信号によって駆動されるアクチュエータには、電磁ソレノイド及びモータ等がある。ソレノイドは例えば、エンジンのインジェクタ、トランスミッションのシフト・コントロール、ブレーキのバルブ制御、ドアロックなどに使用される。
【0006】
モータは、主としてサーボ機構として、エンジンのスタータ、エンジンのフューエル・コントロール、ブレーキの油圧ポンプ、舵角制御、ステアリング、ワイパ、パワーウインドウ、シートベルト、エアバックなどに使用される。
【0007】
1970年代は、ECUの主要な用途は、エンジンを効率的に制御することであったが、1980年代になると、それだけに限らず、より安全に、快適に自動車を走らせることに、ECUが使用され始めてきて、現在では、自動車一台に50個を越えるECUが搭載されることが多くなってきている。このように多数のECUが自動車に搭載されると、開発段階で、複数のECUがきちんと適正に協働して動作するかどうかをテストするのが非常に大変になってくる。
【0008】
このようなテストにために従来行われている技法として、HILS(Hardware In the Loop Simulation)がある。特に、自動車全体のECUをテストする環境は、フルビークルHILSと呼ばれる。フルビークルHILSにおいては、実験室内で、本物のECUが、エンジン、トランスミッション機構などをシミュレーションする専用のハードウェア装置に接続され、所定のシナリオに従って、テストが行われる。ECUからの出力は、監視用のコンピュータに入力され、さらにはディスプレイに表示されて、テスト担当者がディスプレイを眺めながら、異常動作がないかどうか、チェックする。
【0009】
しかし、HILSは、専用のハードウェア装置を使い、それと本物のECUの間を実際に配線しなくてはならないので、準備が大変である。また、別のECUに取り替えてのテストも、物理的に接続し直さなくてはならないので、手間がかかる。さらに、本物のECUを用いたテストであるため、テストに実時間を要する。従って、多くのシナリオをテストすると、膨大な時間がかかる。また、HILSのエミュレーション用のハードウェア装置は、一般に、非常に高価である。
【0010】
そこで近年、高価なエミュレーション用ハードウェア装置を使うことなく、ソフトウェアで構成する手法が存在する。この手法は、SILS(Software In the Loop Simulation)と呼ばれ、ECUに搭載されるマイクロコンピュータ、入出力回路、制御のシナリオ、エンジンやトランスミッション機構などの機構装置などを全て、ソフトウェア・シミュレータで構成する技法である。これによれば、ECUのハードウェアが存在しなくても、テストを実行可能である。
【0011】
特開平11−14507号公報は、車両全体のロジックを机上で検証できるようにすることを課題とするものであり、エンジン制御模擬装置(ECU)と、車両制御模擬装置からなる車両シミュレーション装置を開示する。ECUは、エンジンモデルの制御パラメータを演算し、その演算結果を車両制御模擬装置に送信する。車両制御模擬装置は、ECUから送られてくる制御パラメータを用いて車両モデルの各部の状態量を演算してその演算結果をECUに返送する。車両モデルは、ドライバモデル、吸気系モデル、燃料系モデル、燃焼系モデル、エンジン温推定モデル、駆動系モデル、触媒モデル、A/Fセンサモデル、リアO2 センサモデルから構成されている。ドライバモデルは、目標車速の変化パターンを入力する車速パターン入力手段を有する。
【0012】
特開2001−331346号公報は、実機が完成していなくてもあたかも実機があるかのように制御プログラムのデバッグを行うことが可能なシミュレータを提供するものであって、制御CPUにより制御情報をメモリに書き込み、シミュレーション用CPUによりメモリに書き込まれた制御情報をバスを介して読み出し、この制御情報に基づくシミュレーションを実行し、このシミュレーションの結果をバスを介してメモリに書き込み、制御CPUによりメモリに書き込まれたシミュレーションの結果を読み出すことを開示する。
【0013】
特開2003−316603号公報は、実機のハードウェア開発よりもプログラム開発の方が先行した場合でも、実機デバイスの完成を待たずにプログラム検証が可能な検証システムに関し、実機デバイスの仕様に対応したICEデバッガと、新規プログラムに対応する実機デバイスの仕様をシミュレーションする仮想デバイスとの間に、仮想デバイスからのコマンド等をICEデバッガに適合させるべく変換処理等を行うブリッジを設けることを開示する。
【0014】
特開2008−1261号公報は、車両制御のデータ処理装置において、マルチ入出力のデータバッファ機能を有するデータ授受処理部5により、初期設定状態ではデータ受信部が受信したデータを一時保持して入出力端子部に出力し、シミュレーション指令により初期設定状態からシミュレーション状態に切り替わることにより入出力端子部に入力された収集結果のデータを一時保持し、演算処理部6によりデータ授受処理部に一時保持されるデータに基づいて車両制御の演算を実行し、演算結果の車両制御のデータをバス接続端子部に出力することにより、開発・評価のデータ収集、シミュレーション及び常備搭載を可能にすることを開示する。
【0015】
特開2008−84121号公報は、所定のシミュレーションを実行するシミュレータにおけるシミュレーションの環境条件を管理するスレーブ管理装置SPCを複数存在するシミュレータSMに対応させて複数備えるとともに、各スレーブ管理装置とネットワーク接続され、前記スレーブ管理装置を介して複数のシミュレータにおけるシミュレーションの環境条件を統括管理するマスタ管理装置を備える構成を開示する。
【0016】
【特許文献1】特開平11−14507号公報
【特許文献2】特開2001−331346号公報
【特許文献3】特開2003−316603号公報
【特許文献4】特開2008−1261号公報
【特許文献5】特開2008−84121号公報
【発明の開示】
【発明が解決しようとする課題】
【0017】
しかし、従来のシミュレーション技術で、フルビークルSILSを実装しようとすると、さまざまなシナリオをテストする必要があるため、膨大な時間がかかり、現実的には、なかなか実用的なものにはならなかった。
【0018】
この発明の目的は、フルビークルSILSなどのシミュレーションシステムにおいて、処理速度を向上させることにある。
【課題を解決するための手段】
【0019】
本発明によれば、好適にはマルチCPUのワークステーションが使用される。また、各ECUのソフトウェア・エミュレータが用意される。一般的には、ECUのソフトウェア・エミュレータは、そのECUのメーカから入手可能である。
【0020】
そして、これらのECUエミュレータの出力によって制御される、ソフトウェア・ベースの複数の機構装置シミュレータが用意される。機構装置シミュレータには、エンジン、ブレーキ、ドライブ・トレーン、エアコンなどに対応するものがある。ECUエミュレータと、機構装置シミュレータは、グローバル・スケジューラによって、統合的に制御される。
【0021】
本発明によれば、物理装置シミュレータのソース・コードが事前に解析され、プログラム・コードがループ化され、固定ステップ実行モジュールと、可変ステップ実行モジュールが生成される。
【0022】
そして、実行時、固定ステップ実行モジュールは、一気に固定数(例えば、100)のステップを投機実行する。そして、その固定ステップ毎に、ロールバック表に入力と、内部状態と、出力を保存する。その間に、ECUエミュレータからの入力を受け付け、投機実行の結果の入力と、受け付けた入力が一致しているなら、投機成功とみなして、そのまま処理を進める。
【0023】
もし投機実行の結果の入力と、受け付けた入力が不一致であるなら、物理装置シミュレータは、受け付けた入力に刻印されている時刻に最も近い過去の時刻まで戻って、その入力と内部状態から計算をやり直す。そして、可変ステップ実行モジュールで入力時刻まで実行したら、そこからまた、固定ステップ実行モジュールに処理を移して、高速処理を再開する。
【0024】
グローバル・スケジューラは、ECUエミュレータと、物理装置シミュレータからの出力を受け取り、それらの出力のうち最も古い時間の出力が更新されたことに応答して、確定時刻を更新し、ECUエミュレータと物理装置シミュレータに通知する。そして、その確定時刻よりも古い出力を捨てることによって、リリース表を更新する。
【発明の効果】
【0025】
この発明によれば、通常は物理装置シミュレータを高速で投機的に連続実行させ、実際の入力が入ってきたときのみ、投機的な入力と実際の入力を比較し、それらが不一致であることに応答して、実際の入力の時点に一番近い時点に物理装置シミュレータを戻し、実際の入力の時点まで可変ステップさせ、実際の入力の時点まで辿り着いたら、そこから高速連続実行に戻すことにより、シミュレータの処理速度を著しく向上することができる。
【発明を実施するための最良の形態】
【0026】
以下、図面を参照して、本発明の一実施例の構成及び処理を説明する。以下の記述では、特に断わらない限り、図面に亘って、同一の要素は同一の符号で参照されるものとする。なお、ここで説明する構成と処理は、一実施例として説明するものであり、本発明の技術的範囲をこの実施例に限定して解釈する意図はないことを理解されたい。
【0027】
本発明を実現するための構成を説明する前に、その前提として、ECU及び物理装置について説明する。ECUは、一般的に、センサからの入力信号を、例えばA/D変換する入力インターフェースと、決められた論理に従ってディジタル入力信号を処理する論理演算部(マイクロコンピュータ)と、その処理結果を、アクチュエータ作動信号に変換する出力インターフェースとから構成されるものである。
【0028】
尚、この発明は、説明の便宜上、以下では、自動車のECU及び物理装置に関連して説明するが、それには限定されず、航空機、ロボットなどその他のメカトロニクス物理全般に適用可能であることを理解されたい。
【0029】
ECUは、周辺や環境状態、エンジン、ドライブ・トレーン、ブレーキ、サスペンジョン、エアコンなどの駆動物理の状態、及び人間による指示操作の内容をセンサで検出して、信号として入力する。具体的には、水温センサ、吸気温センサ、過給圧センサ、ポンプ角センサ、クランク角センサ、車速センサ、アクセル位置センサ、A/Tシフト・ポジション、スタータ・スイッチ、エアコンECUなどからの信号がある。
【0030】
ECUは、これらの信号を入力して、電磁スピル弁、フュエル・カット・ソレノイド、タイミング・コントロール・バルブ、吸気絞りVSV、グロー・プラグ・リレー、タコメータ及びエアコン・リレーなどを駆動する信号を出力する。
【0031】
1つのECUが複数の異なる物理を制御するための駆動信号を出力するようにすることは不可能ではないが、例えば、エンジンとエアコンのように、応答性やその制御の厳密性が異なるものを単一のECUで制御することは合理的でなく、従って、一般的に自動車にECUは複数個、最近では好適には40個以上設けられる。
【0032】
図1は、ECU及び物理装置からなるシステムの典型的な制御である、フィードバック閉ループ系の例を示す図である。すなわち、図1において、ある目標の信号が、ECUであるコントローラ102に入力され、ECUは、目標の信号を内部処理することによって、駆動信号を出力し、制御対象モデルである、エンジンなどの物理装置(プラント)104を駆動し、プラント104の出力は、センサ106を介して、コントローラ102の入力にフィードバックされる。
【0033】
ここで目標信号として与えられるのは、例えば、スロットル開度、アイドル・コントロール、ブレーキ力、シフト、スタータON・OFF、バッテリ電圧、インジェクション通電時間、インジェクション通電回数、デポジット、ドウェル角、進角値、吸気完了フラグ、点火完了フラグ、大気圧、車両重量、転がり抵抗係数、道路勾配、粘着係数、吸気温、などのパラメータである。
【0034】
また、センサ信号としてフィードバックされるのは、スロットル開度、吸気圧力、吸入空気量、シフト、エンジン回転数、車速、排気温、O2、冷却水温、空燃比、ノック、点火異常、などである。
【0035】
ECUが制御する対象は、ニュートンの力学方程式で解かれる、物理系システムであったり、電気回路の応答方程式で解かれる電気駆動回路であったり、ナビエ・ストークスの偏微分方程式で解かれる粘性流体系、あるいは、それらの組み合わせであったりする。これらは、制御工学によれば、ラプラス変換によって応答関数に変換されて、記述することができる。
【0036】
図2は、そのような応答関数による記述の例である。図2で破線202で囲った箇所が、図1のコントローラ102に対応し、破線204で囲った箇所が、図1のプラント104に対応し、センサ106が、ブロック206に対応する。なお、図2は、応答関数による表現の一例であって、特に本発明を限定する意図はないことを理解されたい。
【0037】
さて、前述したSILSのようなシステムのテストの目的で、自動車部品メーカーは、自社が提供する機器のECUのソフトウェア・エミュレータを提供する。すなわち、図2に示すような機能を、アセンブラまたはCなどの言語が書かれたコードをアセンブリまたはコンパイルした実行可能プログラムにより、純粋にソフトウェア的に実現する。
【0038】
また、SILSにおけるドライブ・トレーン、ブレーキ、サスペンジョン、エアコンなどの駆動物理のシミュレータは、自動車メーカ、電機メーカその他によって提供される。これらも、アセンブラまたはCなどのコンピュータ・プログラムによって、ソフトウェア的に実現されたものである。
【0039】
次に、図3を参照して、本発明を実施するために使用されるコンピュータのハードウェアについて説明する。図3において、ホスト・バス302には、複数のCPU0 304a、CPU1 304b、CPU2 304c、CPU3 304dが接続されている。ホスト・バス302にはさらに、CPU0 304a、CPU1 304b、CPU2 304c、CPU3 304dの演算処理のためのメイン・メモリ306が接続されている。
【0040】
一方、I/Oバス308には、キーボード310、マウス312、ディスプレイ314及びハードティスク・ドライブ316が接続されている。I/Oバス308は、I/Oブリッジ318を介して、ホスト・バス302に接続されている。キーボード310及びマウス312は、オペレータが、コマンドを打ち込んだり、メニューをクリックするなどして、操作するために使用される。ディスプレイ314は、後述する本発明に係るプログラムをGUIで操作するための画面イメージを表示するために使用される。
【0041】
この目的のために使用される好適なコンピュータ・システムのハードウェアとして、IBM(R)System Xがある。その際、CPU0 304a、CPU1 304b、CPU2 304c、CPU3 304dは、例えば、インテル(R)Core 2 DUOであり、オペレーティング・システムは、Windows(商標)Server 2003である。オペレーティング・システムは、ハードティスク・ドライブ316に格納され、コンピュータ・システムの起動時に、ハードティスク・ドライブ316からメイン・メモリ306に読み込まれる。
【0042】
尚、本発明を実施するために使用可能なコンピュータ・システムのハードウェアは、IBM(R)System Xに限定されず、ECUエミュレータ・プログラム及び物理装置シミュレータ・プログラムを走らせることができるものであれば、任意のコンピュータ・システムを使用することができる。オペレーティング・システムも、Windows(R)に限定されず、Linux(R)、Mac OS(R)など、任意のオペレーティング・システムを使用することができる。さらに、ECUエミュレータ・プログラム及び物理装置シミュレータ・プログラムを高速で動作させるために、POWER(商標)6ベースで、オペレーティング・システムがAIX(商標)のIBM(R)System Pなどのコンピュータ・システムを使用してもよい。
【0043】
ハードディスク・ドライブ316にはさらに、テストするための複数のECUエミュレータ・プログラム、複数の物理装置シミュレータ・プログラム、及び、それら複数のECUエミュレータ・プログラム及び物理装置シミュレータ・プログラムを協働させてテストするための、本発明に係るプログラムが格納され、キーボード310及びマウス312によって起動操作可能である。
【0044】
好適には、フルビークルSILSを実現するために、1台の自動車で使われるすべてのECUのエミュレータ・プログラム及び物理装置シミュレータ・プログラムが、ハードティスク・ドライブ316に保存されている。
【0045】
ハードティスク・ドライブ316にはさらに、後述するグローバル・スケジューラ、及び、登り坂道、高速道路、つづら折道などの様々な、テストのためのシナリオを格納したシナリオ・ジェネレータのプログラムも格納されている。
【0046】
尚、ここでの「エミュレータ」と、「シミュレータ」の用語の使い分けであるが、もともとの、別のプロセッサで動くことを想定して書かれていたECUのコードを、CPU0〜CPU3などをターゲットとして動くようにすることを、エミュレーションと呼び、それを行うプログラムを、エミュレータと呼ぶ。一方、エンジンなどの物理的システムの動作を仮想計算するシステムを、シミュレータと呼ぶ。
【0047】
図4は、本発明に係るシミュレータ・システムの動作原理を説明するクロックの概要のタイムチャートである。先ず、比較のために、図4(a)に、従来のシミュレータ・システムの動作のクロックを示す。このような従来のシミュレータ・システムは、Δt間隔で所定のクロックで動作する同期実行モニタによって駆動される。図4(a)で「物理装置シミュレータ」として示すように、基本的に、エンジン・シミュレータなどの物理装置シミュレータは、そのΔt間隔で駆動され、そのクロック毎に、ECUエミュレータからの出力があるかどうかを確認する。
【0048】
ECUエミュレータからの出力とは、例えば、エンジンECUエミュレータの場合、燃料噴射制御信号、点火時期制御信号、ノック判定制御信号などであるが、連続的なクロックにより実行されている物理装置シミュレータに比べると、ECUエミュレータからの出力は、非常に疎らであり、且つ非同期である。例えば、燃料噴射制御信号は、エンジンの1サイクルのうち限られたフェーズにしか提供されないし、それはエンジン・シミュレータの駆動クロックよりも、はるかに疎ら、という次第である。
【0049】
本発明は、この性質をうまく利用する。そのタイミングチャートを、図4(b)に示す。すなわち、図4(b)に示すように、物理装置シミュレータは、全体の個々のクロックに同期して動作するのではなくて、Nステップを一気に駆動される。これによって、物理装置シミュレータの計算動作を高速化することができる。図4(b)で、白抜きの矢印は、実際はそのクロックのタイミングでシミュレータのモジュールが呼び出されていないことを示すす。
【0050】
ただ、Nステップを一気に駆動されると、その間にECUエミュレータからの出力があると、Nステップ連続計算で使った値との不一致が生じることがある。そこで、本発明によれば、Nステップ駆動毎に、入力と出力を、ロールバック表に記録していく。そうして、Nステップ連続計算が完了した時点で、ECUエミュレータから、関連するパラメータが出力として入ってきていれば、それを、ロールバック表の対応する入力と比較し、一致していれば、Nステップ連続計算の投機実行が成功とみなして、次のNステップ連続計算に移る。
【0051】
もしECUエミュレータからの出力が、ロールバック表の対応する入力と一致しないなら、Nステップ連続計算の投機実行が失敗したとみなして、シミュレーション・システムは、そのECUエミュレータからの出力が指し示す時間より前の時点に戻して、そこからステップ駆動をはじめる。そうして、ECUエミュレータからの出力が指し示す時間に到達したら、また、Nステップ連続計算の投機実行を再開して、ロールバック表への記録を続ける。
【0052】
図5は、本発明に係る物理装置シミュレータの論理構成の機能ブロック図を示す。図5において、プログラムコード502は、エンジン・シミュレータなどの物理装置シミュレータのソースコードである。物理装置シミュレータの実行可能バイナリファイルしか入手できない場合は、逆アセンブル、逆コンパイルなどにより、ソースコードが用意される。
【0053】
本発明によれば、事前に、物理装置シミュレータのプログラムコード502から、好適にはプログラム処理により自動的に、可変ステップ実行モジュール504と、固定ステップ実行モジュール506が、生成される。
【0054】
さて、簡単のために、プログラムコード502は、下記のような内容だとする。
Function Integer_X(Sum, X)
{
Sum = Sum + X;
Return(Sum);
}
【0055】
プログラムコード502から、可変ステップ実行モジュール504として、下記のコードが生成される。
Function Integer_X_N(Sum, X,N)
{
DO i = 1, N
Sum = Sum + X;
END
Return(Sum);
}
【0056】
また、プログラムコード502から、固定ステップ実行モジュール506として、下記のコードが生成される。
Function Integer_100_speculative(Sum, X)
{
DO i = 1, 100
Sum = Sum + X;
END
Return(Sum);
}
【0057】
要するに、図4(a)のような場合だと、1クロック毎に、下記の関数を呼び出すので、その都度、入力変数セット、関数呼び出し、出力の戻し、というオーバーヘッドがかかる。
Function Integer_X(Sum, X)
{
Sum = Sum + X;
Return(Sum);
}
これを、下記で置き換えることにより、上記関数を100回呼び出したのと同じ効果を実現し、且つ、関数個別呼び出しのオーバーヘッドを削減することができる。ただ、本発明は、投機失敗の場合に、ロールバックする手段を提供する。
Function Integer_100_speculative(Sum, X)
{
DO i = 1, 100
Sum = Sum + X;
END
Return(Sum);
}
【0058】
ここで、固定ステップ実行モジュール506の100というステップ数は、例示的な数であり、実際のクロック数の時間間隔により、500、あるいは1000など、任意の適切な数を選ぶことができる。
【0059】
尚、下記のコードがあったとき、
Function Integer_100_speculative(Sum, X)
{
DO i = 1, 100
Sum = Sum + X;
END
Return(Sum);
}
これは、コンパイラの最適化機能で、下記のようなコードとして実行可能コードに変換されることがあり、以ってさらに処理が高速化される。
Function Integer_100_speculative(Sum, X)
{
Sum = Sum + 100 * X;
Return(Sum);
}
【0060】
ローカル・スケジューラ508は、コミュニケーション・インターフェース・モジュール510を介して入力された、ECUエミュレータからの出力を、ロールバック表512に記録されている対応のエントリと比較して、投機実行が成功と判断すれば、固定ステップ実行モジュール506を実行し、投機実行が失敗と判断すれば、可変ステップ実行モジュール504を実行する、という処理を行う。この処理は後で詳しく説明する。
【0061】
図6は、本発明に係るシミュレーション・システム全体の機能論理ブロック図である。図示されているように、シミュレーション・システムは、物理装置シミュレータ604a、604b・・・604mと、その各々のロールバック表格納のための記憶部610a、610b・・・610mと、ECUエミュレータ608a、608b、・・・608nと、物理装置シミュレータ604a、604b・・・604m及び物理装置シミュレータ604a、604b・・・604mの入出力をスケジューリングするグローバル・スケジューラ602からなる。
【0062】
物理装置シミュレータ604a、604b・・・604m、ECUエミュレータ608a、608b、・・・608n、及びグローバル・スケジューラ602は、実行可能モジュールとして、ハードディスク・ドライブ316に保存され、図3のコンピュータ・システムの起動時に、メイン・メモリ306にオペレーティング・システムの処理によりロードされ、動作する。
【0063】
物理装置シミュレータ604a、604b・・・604mはそれぞれ、エンジン、ブレーキ、ドライブ・トレーン、エアコンなどに対応するものである。
【0064】
グローバル・スケジューラ602は、物理装置シミュレータ604a、604b・・・604mと、ECU608a、608b、・・・608nからの出力を受け取り、それらを一旦バッファして、確定時間に基づき、指定されたECUエミュレータ608a、608b、・・・608nまたは物理装置シミュレータ604a、604b・・・604mに差し向ける。
【0065】
グローバル・スケジューラ602と、物理装置シミュレータ604a、604b・・・604m及びECU608a、608b、・・・608nの間は、図示しないが、共通メモリまたは、CAN(controller area network)シミュレータで接続される。共有メモリ方式ならば、特定のメモリのアドレスに書いてシグナルされるし、CANエミュレータ方式の場合、送り出すメッセージに、所定の宛先を含むヘッダを付けることになる。
【0066】
図示しないが、図6の構成は、登り坂道、高速道路、つづら折道などの様々な、テストのためのシナリオを格納したシナリオ・ジェネレータも含む。そして、シナリオ・ジェネレータに記述されたシナリオに従って、ECUエミュレータ608a、608b、・・・608nに入力が与えられ、様々な条件でシミュレーションが行われることになる。
【0067】
図7に総称的に示すように、好適には各々の物理装置シミュレータ604が、可変ステップ実行モジュール504、固定ステップ実行モジュール506、ローカル・スケジューラ508及びコミュニケーション・インターフェース510をもつ。これらの機能は、図5に関連して説明したとおりである。記憶部610には、ロールバック表のエントリ512が格納される。また、図7には図示しないが、各々の物理装置シミュレータ604はそれぞれ、1つずつ、キューをもつ。
【0068】
図示しないが、ECUエミュレータも、内部にロールバック表を維持して、投機的に実行してもよい。この処理は、例えば、本出願人に係る、特願2008−124053号明細書に記述されているが、本発明にとって必ずしも本質的でないので、詳しい説明は省略する。
【0069】
次に、図8のフローチャートを参照して、物理装置シミュレータ604における、ローカル・スケジューラ508の処理について説明する。まず、ステップ802では、物理装置シミュレータ604のキューにイベントがあるかどうかの判断が行われる。もし、キューにイベントがなければ、ステップ804では、新しい入力イベントが予測される。ここでいう予測とは、例えば、過去の入力イベントに基づく、入力イベントの予測であり、例えば、典型的には、前回と同じ入力イベントを使う、という方法がありえる。あるいは、タイミングの場合は、それまでの周期を維持するようにイベントを予測する、という方法をとることもできる。ここは、物理装置シミュレータが、エンジン・シミュレータであるか、ドライブ・トレーン・シミュレータがあるかなどの性質によって、最善の予測を行うように、予め、ローカル・スケジューラ508にプログラムしておくものとする。このようにして予測された入力イベントは、ステップ806でキューに入れられて、処理はステップ802に戻る。
【0070】
ステップ802で、キューにイベントがある、すなわちキューが空でないと判断されると、ステップ808では、キューから、最も古いイベントが取り出される。その最も古いイベントのタイムスタンプをtとすると、ステップ810では、Tnext + N < tが成立するかどうかが、判断される。ここで、Tnextとは、次の実行時刻であり、Nは、固定ステップ実行モジュール506の1回の実行時間である。
【0071】
もしTnext + N < tであるなら、ステップ812で、イベントは一旦キューに戻され、ステップ814で、時刻Tnextから、固定ステップ実行モジュール506が呼び出されて、Nステップの連続実行がなされる。そうして、ステップ816で、その実行後の内部状態が保存され、時刻TnextがNだけ増分されて、処理は、ステップ802に戻る。
【0072】
もしステップ810で、Tnext + N < tが成立しないと判断されたなら、ステップ818で、Tnext < tが成立するかどうが、判断される。もしそうなら、ステップ820で、Tnextからtまで可変ステップ実行モジュールが実行され、ステップ822では、その結果の新しいエントリがロールバック表に挿入されて、Tnext = tとされ、そこから、固定ステップ実行モジュール506が呼び出されて、Nステップの連続実行がなされる。そうして、ステップ816で、その実行後の内部状態が保存され、時刻TnextがNだけ増分されて、処理は、ステップ802に戻る。
【0073】
ステップ818で、Tnext < tが成立しないと判断されたら、ステップ824で、t=tkのようなtkをもつイベントがロールバック表にあるかどうか判断される。もし、t=tkのようなtkをもつイベントがないなら、ステップ826で、確定時間Tに最も近い時間までロールバックされる。すなわち、確定時間Tに最も近いエントリを残して、残りを削除する。そして、ステップ828で、tまで可変ステップ実行モジュールを実行し、ステップ822では、その結果の新しいエントリがロールバック表に挿入されて、Tnext = tとされる。次に、ステップ814で、時刻Tnextから、固定ステップ実行モジュール506が呼び出されて、Nステップの連続実行がなされる。そうして、ステップ816で、その実行後の内部状態が保存され、時刻TnextがNだけ増分されて、処理は、ステップ802に戻る。
【0074】
ステップ824で、t=tkのようなtkをもつイベントがあると判断されたなら、キューから取り出されたイベントeと、時間tkをもつ、ロールバック表中のイベントekが比較され、e = ekであれば、投機実行成功なので、ステップ802に戻る。
【0075】
e = ekでなければ、結局ステップ826に行き、そこで、確定時間Tに最も近い時間までロールバックされる。すなわち、確定時間Tに最も近いエントリを残して、残りを削除する。そして、ステップ828で、tまで可変ステップ実行モジュールを実行し、ステップ822では、その結果の新しいエントリがロールバック表に挿入されて、Tnext = tとされる。次に、ステップ814で、時刻Tnextから、固定ステップ実行モジュール506が呼び出されて、Nステップの連続実行がなされる。そうして、ステップ816で、その実行後の内部状態が保存され、時刻TnextがNだけ増分されて、処理は、ステップ802に戻る。
【0076】
なお、イベントを比較するとは、それに含まれるパラメータが一致しているかどうかを調べることである。例えば、燃料噴射の量や温度などである。数値として一致を判断するときは、その量の性質に応じて有効数字(桁数)を変える。例えば、噴射量や温度なら上位の2桁で一致を判断すればよい。このような誤差に対する許容の高さによって、多くの投機実行を成功とみなすことが可能となる。このことは、すなわち、投機的シミュレーションを可能としている重要なポイントである。
【0077】
なお、ロールバック表の確定フラグは,グローバル・スケジューラから別途,通知されるので,その都度更新する.ローカル・スケジューラは確定の判断をしない。また,確定エントリが取り消されることはないので,最後の確定エントリを除いて,それ以前のエントリは,ロールバック表から削除しても良い。
【0078】
確定フラグは、グローバル・スケジューラ602から別途通知されるので、その都度更新する。ローカル・スケジューラは確定の判断をしない。また、確定エントリが取り消されることはないので、最後の確定エントリを除いて、それ以前のエントリは、ロールバック表から削除しても良い。
【0079】
図9は、物理装置シミュレータに対する入力と、出力、及び予測入力の例を示すタイミング・チャートである。また、図10は、図9に対応する、ロールバック表のエントリを示す図である。図示されているように、ロールバック表において、時間tより後のエントリは、まだ未確定であるとして、キャンセルすることができる。
【0080】
図11に示すように、グローバル・スケジューラ602は、論理プロセスLP#1〜LP#N毎にキューQ1〜Qnをもつ。論理プロセスとは各々、図6に示す物理装置シミュレータ#1〜#m、ECUエミュレータ#1〜#nのどれかである。
【0081】
キューQ1〜Qnには、対応する論理プロセスLP#1〜LP#Nから、随時にイベントが入来し、入来したイベントは、キューに一旦格納される。グローバル・スケジューラ602は、キューQ1〜Qnに格納されているイベントに基づき、確定イベントと、確定時間を出力する。
【0082】
図12は、そのためのグローバル・スケジューラ602の処理を示すフローチャートである。ステップ1202で、グローバル・スケジューラ602は、どれかのキューQ1〜Qn(図11)に、新しいイベントが到来するのを待つ。
【0083】
ステップ1204では、空のキューにイベントが届いたかどうかが判断され、そうでなければ、処理は、ステップ1202に戻る。
【0084】
ステップ1204で、空のキューにイベントが届いたと判断されると、ステップ1206に行って、そこで、すべてのキューQ1〜Qnが少なくとも1つのイベントをもつかどうかが判断される。そうでなければ、やはり処理は、ステップ1202に戻る。
【0085】
ステップ1206で、すべてのキューQ1〜Qnが少なくとも1つのイベントをもつと判断されると、ステップ1208では、すべてのキューQ1〜Qnの中で、最も古いイベントが見出される。このことは、すべてのイベントには、タイムスタンプがつけられていることにより可能である。
【0086】
ステップ1210では、見つけられた最も古いイベントが、確定イベントとされ、論理プロセスLP#1〜LP#Nに通知される。
【0087】
ステップ1212では、確定イベントがキューから取り除かれる。そして、ステップ1202に戻り、グローバル・スケジューラ602は、次のイベントの到着を待つ。
【0088】
以上、自動車用の複数の物理装置シミュレータを含むシミュレーション・システムに関連して、本発明の特定の実施例を説明してきたが、本発明はこのような特定の実施例に限定されず、飛行機用のシミュレーション・システムなど、一般的な電子機械制御系システムのシミュレーション・システムに適用可能であることを、この分野の当業者であるなら、理解するであろう。
【図面の簡単な説明】
【0089】
【図1】ECUの典型的な制御である、フィードバック閉ループ系の例を示す図である。
【図2】フィードバック閉ループ系の、応答関数による記述の例である。
【図3】本発明を実施するために使用されるコンピュータのハードウェアのブロック図である。
【図4】従来と本発明のシミュレーション・システムの動作の対比を示す、クロックのタイムチャートを示す図である。
【図5】本発明の一実施例に係る、物理装置シミュレータの論理構成ブロック図である。
【図6】本発明の一実施例に係る、シミュレーション・システム全体の機能ブロック図である。
【図7】本発明の一実施例に係る、物理装置シミュレータの機能ブロック図である。
【図8】物理装置シミュレータのローカル・スケジューラの処理のフローチャートである。
【図9】物理装置シミュレータのタイミング・チャートを示す図である。
【図10】物理装置シミュレータのロールバック表のエントリを示す図である。
【図11】グローバル・スケジューラのキューを示す図である。
【図12】グローバル・スケジューラの処理のフローチャートである。
【技術分野】
【0001】
本発明は、自動車などに使用されるエンジンなどの機構装置のテストに関し、より詳しくは、ソフトウェア・ベースでの機構装置シミュレータのテストに関するものである。
【背景技術】
【0002】
自動車は、その初期の時代の20世紀初頭は、動力としてのエンジンと、ブレーキ、アクセル、ハンドル、トランスミッション、サスペンジョンを含む、機構部品からなっていたが、エンジンのプラグの点火、ヘッドライト以外は、電気的な仕組みはほとんど利用していなかった。
【0003】
ところが、1970年代頃から、大気汚染、石油危機などに備えて、エンジンを効率的に制御する必要性が生じ、このためエンジンの制御に、ECUが使用されるようになってきた。ECUは、一般的に、センサからの入力信号を、例えばA/D変換する入力インターフェースと、決められた論理に従ってディジタル入力信号を処理する論理演算部(マイクロコンピュータ)と、その処理結果を、アクチュエータ作動信号に変換する出力インターフェースとから構成される。
【0004】
ここで、ECUに信号を入力するセンサには、エンジンの温度などを計測する温度センサ、エンジンに吸入される圧力を推定するための圧力センサ、アクセスペダルの踏み量を測定するスロットル・ポジション・センサ、ステアリング舵角センサ、車高センサ、回転速度センサ、ノックセンサ、加速度センサ、流量センサ、酸素センサ、希薄空燃比センサなどがある。
【0005】
一方、ECUの出力信号によって駆動されるアクチュエータには、電磁ソレノイド及びモータ等がある。ソレノイドは例えば、エンジンのインジェクタ、トランスミッションのシフト・コントロール、ブレーキのバルブ制御、ドアロックなどに使用される。
【0006】
モータは、主としてサーボ機構として、エンジンのスタータ、エンジンのフューエル・コントロール、ブレーキの油圧ポンプ、舵角制御、ステアリング、ワイパ、パワーウインドウ、シートベルト、エアバックなどに使用される。
【0007】
1970年代は、ECUの主要な用途は、エンジンを効率的に制御することであったが、1980年代になると、それだけに限らず、より安全に、快適に自動車を走らせることに、ECUが使用され始めてきて、現在では、自動車一台に50個を越えるECUが搭載されることが多くなってきている。このように多数のECUが自動車に搭載されると、開発段階で、複数のECUがきちんと適正に協働して動作するかどうかをテストするのが非常に大変になってくる。
【0008】
このようなテストにために従来行われている技法として、HILS(Hardware In the Loop Simulation)がある。特に、自動車全体のECUをテストする環境は、フルビークルHILSと呼ばれる。フルビークルHILSにおいては、実験室内で、本物のECUが、エンジン、トランスミッション機構などをシミュレーションする専用のハードウェア装置に接続され、所定のシナリオに従って、テストが行われる。ECUからの出力は、監視用のコンピュータに入力され、さらにはディスプレイに表示されて、テスト担当者がディスプレイを眺めながら、異常動作がないかどうか、チェックする。
【0009】
しかし、HILSは、専用のハードウェア装置を使い、それと本物のECUの間を実際に配線しなくてはならないので、準備が大変である。また、別のECUに取り替えてのテストも、物理的に接続し直さなくてはならないので、手間がかかる。さらに、本物のECUを用いたテストであるため、テストに実時間を要する。従って、多くのシナリオをテストすると、膨大な時間がかかる。また、HILSのエミュレーション用のハードウェア装置は、一般に、非常に高価である。
【0010】
そこで近年、高価なエミュレーション用ハードウェア装置を使うことなく、ソフトウェアで構成する手法が存在する。この手法は、SILS(Software In the Loop Simulation)と呼ばれ、ECUに搭載されるマイクロコンピュータ、入出力回路、制御のシナリオ、エンジンやトランスミッション機構などの機構装置などを全て、ソフトウェア・シミュレータで構成する技法である。これによれば、ECUのハードウェアが存在しなくても、テストを実行可能である。
【0011】
特開平11−14507号公報は、車両全体のロジックを机上で検証できるようにすることを課題とするものであり、エンジン制御模擬装置(ECU)と、車両制御模擬装置からなる車両シミュレーション装置を開示する。ECUは、エンジンモデルの制御パラメータを演算し、その演算結果を車両制御模擬装置に送信する。車両制御模擬装置は、ECUから送られてくる制御パラメータを用いて車両モデルの各部の状態量を演算してその演算結果をECUに返送する。車両モデルは、ドライバモデル、吸気系モデル、燃料系モデル、燃焼系モデル、エンジン温推定モデル、駆動系モデル、触媒モデル、A/Fセンサモデル、リアO2 センサモデルから構成されている。ドライバモデルは、目標車速の変化パターンを入力する車速パターン入力手段を有する。
【0012】
特開2001−331346号公報は、実機が完成していなくてもあたかも実機があるかのように制御プログラムのデバッグを行うことが可能なシミュレータを提供するものであって、制御CPUにより制御情報をメモリに書き込み、シミュレーション用CPUによりメモリに書き込まれた制御情報をバスを介して読み出し、この制御情報に基づくシミュレーションを実行し、このシミュレーションの結果をバスを介してメモリに書き込み、制御CPUによりメモリに書き込まれたシミュレーションの結果を読み出すことを開示する。
【0013】
特開2003−316603号公報は、実機のハードウェア開発よりもプログラム開発の方が先行した場合でも、実機デバイスの完成を待たずにプログラム検証が可能な検証システムに関し、実機デバイスの仕様に対応したICEデバッガと、新規プログラムに対応する実機デバイスの仕様をシミュレーションする仮想デバイスとの間に、仮想デバイスからのコマンド等をICEデバッガに適合させるべく変換処理等を行うブリッジを設けることを開示する。
【0014】
特開2008−1261号公報は、車両制御のデータ処理装置において、マルチ入出力のデータバッファ機能を有するデータ授受処理部5により、初期設定状態ではデータ受信部が受信したデータを一時保持して入出力端子部に出力し、シミュレーション指令により初期設定状態からシミュレーション状態に切り替わることにより入出力端子部に入力された収集結果のデータを一時保持し、演算処理部6によりデータ授受処理部に一時保持されるデータに基づいて車両制御の演算を実行し、演算結果の車両制御のデータをバス接続端子部に出力することにより、開発・評価のデータ収集、シミュレーション及び常備搭載を可能にすることを開示する。
【0015】
特開2008−84121号公報は、所定のシミュレーションを実行するシミュレータにおけるシミュレーションの環境条件を管理するスレーブ管理装置SPCを複数存在するシミュレータSMに対応させて複数備えるとともに、各スレーブ管理装置とネットワーク接続され、前記スレーブ管理装置を介して複数のシミュレータにおけるシミュレーションの環境条件を統括管理するマスタ管理装置を備える構成を開示する。
【0016】
【特許文献1】特開平11−14507号公報
【特許文献2】特開2001−331346号公報
【特許文献3】特開2003−316603号公報
【特許文献4】特開2008−1261号公報
【特許文献5】特開2008−84121号公報
【発明の開示】
【発明が解決しようとする課題】
【0017】
しかし、従来のシミュレーション技術で、フルビークルSILSを実装しようとすると、さまざまなシナリオをテストする必要があるため、膨大な時間がかかり、現実的には、なかなか実用的なものにはならなかった。
【0018】
この発明の目的は、フルビークルSILSなどのシミュレーションシステムにおいて、処理速度を向上させることにある。
【課題を解決するための手段】
【0019】
本発明によれば、好適にはマルチCPUのワークステーションが使用される。また、各ECUのソフトウェア・エミュレータが用意される。一般的には、ECUのソフトウェア・エミュレータは、そのECUのメーカから入手可能である。
【0020】
そして、これらのECUエミュレータの出力によって制御される、ソフトウェア・ベースの複数の機構装置シミュレータが用意される。機構装置シミュレータには、エンジン、ブレーキ、ドライブ・トレーン、エアコンなどに対応するものがある。ECUエミュレータと、機構装置シミュレータは、グローバル・スケジューラによって、統合的に制御される。
【0021】
本発明によれば、物理装置シミュレータのソース・コードが事前に解析され、プログラム・コードがループ化され、固定ステップ実行モジュールと、可変ステップ実行モジュールが生成される。
【0022】
そして、実行時、固定ステップ実行モジュールは、一気に固定数(例えば、100)のステップを投機実行する。そして、その固定ステップ毎に、ロールバック表に入力と、内部状態と、出力を保存する。その間に、ECUエミュレータからの入力を受け付け、投機実行の結果の入力と、受け付けた入力が一致しているなら、投機成功とみなして、そのまま処理を進める。
【0023】
もし投機実行の結果の入力と、受け付けた入力が不一致であるなら、物理装置シミュレータは、受け付けた入力に刻印されている時刻に最も近い過去の時刻まで戻って、その入力と内部状態から計算をやり直す。そして、可変ステップ実行モジュールで入力時刻まで実行したら、そこからまた、固定ステップ実行モジュールに処理を移して、高速処理を再開する。
【0024】
グローバル・スケジューラは、ECUエミュレータと、物理装置シミュレータからの出力を受け取り、それらの出力のうち最も古い時間の出力が更新されたことに応答して、確定時刻を更新し、ECUエミュレータと物理装置シミュレータに通知する。そして、その確定時刻よりも古い出力を捨てることによって、リリース表を更新する。
【発明の効果】
【0025】
この発明によれば、通常は物理装置シミュレータを高速で投機的に連続実行させ、実際の入力が入ってきたときのみ、投機的な入力と実際の入力を比較し、それらが不一致であることに応答して、実際の入力の時点に一番近い時点に物理装置シミュレータを戻し、実際の入力の時点まで可変ステップさせ、実際の入力の時点まで辿り着いたら、そこから高速連続実行に戻すことにより、シミュレータの処理速度を著しく向上することができる。
【発明を実施するための最良の形態】
【0026】
以下、図面を参照して、本発明の一実施例の構成及び処理を説明する。以下の記述では、特に断わらない限り、図面に亘って、同一の要素は同一の符号で参照されるものとする。なお、ここで説明する構成と処理は、一実施例として説明するものであり、本発明の技術的範囲をこの実施例に限定して解釈する意図はないことを理解されたい。
【0027】
本発明を実現するための構成を説明する前に、その前提として、ECU及び物理装置について説明する。ECUは、一般的に、センサからの入力信号を、例えばA/D変換する入力インターフェースと、決められた論理に従ってディジタル入力信号を処理する論理演算部(マイクロコンピュータ)と、その処理結果を、アクチュエータ作動信号に変換する出力インターフェースとから構成されるものである。
【0028】
尚、この発明は、説明の便宜上、以下では、自動車のECU及び物理装置に関連して説明するが、それには限定されず、航空機、ロボットなどその他のメカトロニクス物理全般に適用可能であることを理解されたい。
【0029】
ECUは、周辺や環境状態、エンジン、ドライブ・トレーン、ブレーキ、サスペンジョン、エアコンなどの駆動物理の状態、及び人間による指示操作の内容をセンサで検出して、信号として入力する。具体的には、水温センサ、吸気温センサ、過給圧センサ、ポンプ角センサ、クランク角センサ、車速センサ、アクセル位置センサ、A/Tシフト・ポジション、スタータ・スイッチ、エアコンECUなどからの信号がある。
【0030】
ECUは、これらの信号を入力して、電磁スピル弁、フュエル・カット・ソレノイド、タイミング・コントロール・バルブ、吸気絞りVSV、グロー・プラグ・リレー、タコメータ及びエアコン・リレーなどを駆動する信号を出力する。
【0031】
1つのECUが複数の異なる物理を制御するための駆動信号を出力するようにすることは不可能ではないが、例えば、エンジンとエアコンのように、応答性やその制御の厳密性が異なるものを単一のECUで制御することは合理的でなく、従って、一般的に自動車にECUは複数個、最近では好適には40個以上設けられる。
【0032】
図1は、ECU及び物理装置からなるシステムの典型的な制御である、フィードバック閉ループ系の例を示す図である。すなわち、図1において、ある目標の信号が、ECUであるコントローラ102に入力され、ECUは、目標の信号を内部処理することによって、駆動信号を出力し、制御対象モデルである、エンジンなどの物理装置(プラント)104を駆動し、プラント104の出力は、センサ106を介して、コントローラ102の入力にフィードバックされる。
【0033】
ここで目標信号として与えられるのは、例えば、スロットル開度、アイドル・コントロール、ブレーキ力、シフト、スタータON・OFF、バッテリ電圧、インジェクション通電時間、インジェクション通電回数、デポジット、ドウェル角、進角値、吸気完了フラグ、点火完了フラグ、大気圧、車両重量、転がり抵抗係数、道路勾配、粘着係数、吸気温、などのパラメータである。
【0034】
また、センサ信号としてフィードバックされるのは、スロットル開度、吸気圧力、吸入空気量、シフト、エンジン回転数、車速、排気温、O2、冷却水温、空燃比、ノック、点火異常、などである。
【0035】
ECUが制御する対象は、ニュートンの力学方程式で解かれる、物理系システムであったり、電気回路の応答方程式で解かれる電気駆動回路であったり、ナビエ・ストークスの偏微分方程式で解かれる粘性流体系、あるいは、それらの組み合わせであったりする。これらは、制御工学によれば、ラプラス変換によって応答関数に変換されて、記述することができる。
【0036】
図2は、そのような応答関数による記述の例である。図2で破線202で囲った箇所が、図1のコントローラ102に対応し、破線204で囲った箇所が、図1のプラント104に対応し、センサ106が、ブロック206に対応する。なお、図2は、応答関数による表現の一例であって、特に本発明を限定する意図はないことを理解されたい。
【0037】
さて、前述したSILSのようなシステムのテストの目的で、自動車部品メーカーは、自社が提供する機器のECUのソフトウェア・エミュレータを提供する。すなわち、図2に示すような機能を、アセンブラまたはCなどの言語が書かれたコードをアセンブリまたはコンパイルした実行可能プログラムにより、純粋にソフトウェア的に実現する。
【0038】
また、SILSにおけるドライブ・トレーン、ブレーキ、サスペンジョン、エアコンなどの駆動物理のシミュレータは、自動車メーカ、電機メーカその他によって提供される。これらも、アセンブラまたはCなどのコンピュータ・プログラムによって、ソフトウェア的に実現されたものである。
【0039】
次に、図3を参照して、本発明を実施するために使用されるコンピュータのハードウェアについて説明する。図3において、ホスト・バス302には、複数のCPU0 304a、CPU1 304b、CPU2 304c、CPU3 304dが接続されている。ホスト・バス302にはさらに、CPU0 304a、CPU1 304b、CPU2 304c、CPU3 304dの演算処理のためのメイン・メモリ306が接続されている。
【0040】
一方、I/Oバス308には、キーボード310、マウス312、ディスプレイ314及びハードティスク・ドライブ316が接続されている。I/Oバス308は、I/Oブリッジ318を介して、ホスト・バス302に接続されている。キーボード310及びマウス312は、オペレータが、コマンドを打ち込んだり、メニューをクリックするなどして、操作するために使用される。ディスプレイ314は、後述する本発明に係るプログラムをGUIで操作するための画面イメージを表示するために使用される。
【0041】
この目的のために使用される好適なコンピュータ・システムのハードウェアとして、IBM(R)System Xがある。その際、CPU0 304a、CPU1 304b、CPU2 304c、CPU3 304dは、例えば、インテル(R)Core 2 DUOであり、オペレーティング・システムは、Windows(商標)Server 2003である。オペレーティング・システムは、ハードティスク・ドライブ316に格納され、コンピュータ・システムの起動時に、ハードティスク・ドライブ316からメイン・メモリ306に読み込まれる。
【0042】
尚、本発明を実施するために使用可能なコンピュータ・システムのハードウェアは、IBM(R)System Xに限定されず、ECUエミュレータ・プログラム及び物理装置シミュレータ・プログラムを走らせることができるものであれば、任意のコンピュータ・システムを使用することができる。オペレーティング・システムも、Windows(R)に限定されず、Linux(R)、Mac OS(R)など、任意のオペレーティング・システムを使用することができる。さらに、ECUエミュレータ・プログラム及び物理装置シミュレータ・プログラムを高速で動作させるために、POWER(商標)6ベースで、オペレーティング・システムがAIX(商標)のIBM(R)System Pなどのコンピュータ・システムを使用してもよい。
【0043】
ハードディスク・ドライブ316にはさらに、テストするための複数のECUエミュレータ・プログラム、複数の物理装置シミュレータ・プログラム、及び、それら複数のECUエミュレータ・プログラム及び物理装置シミュレータ・プログラムを協働させてテストするための、本発明に係るプログラムが格納され、キーボード310及びマウス312によって起動操作可能である。
【0044】
好適には、フルビークルSILSを実現するために、1台の自動車で使われるすべてのECUのエミュレータ・プログラム及び物理装置シミュレータ・プログラムが、ハードティスク・ドライブ316に保存されている。
【0045】
ハードティスク・ドライブ316にはさらに、後述するグローバル・スケジューラ、及び、登り坂道、高速道路、つづら折道などの様々な、テストのためのシナリオを格納したシナリオ・ジェネレータのプログラムも格納されている。
【0046】
尚、ここでの「エミュレータ」と、「シミュレータ」の用語の使い分けであるが、もともとの、別のプロセッサで動くことを想定して書かれていたECUのコードを、CPU0〜CPU3などをターゲットとして動くようにすることを、エミュレーションと呼び、それを行うプログラムを、エミュレータと呼ぶ。一方、エンジンなどの物理的システムの動作を仮想計算するシステムを、シミュレータと呼ぶ。
【0047】
図4は、本発明に係るシミュレータ・システムの動作原理を説明するクロックの概要のタイムチャートである。先ず、比較のために、図4(a)に、従来のシミュレータ・システムの動作のクロックを示す。このような従来のシミュレータ・システムは、Δt間隔で所定のクロックで動作する同期実行モニタによって駆動される。図4(a)で「物理装置シミュレータ」として示すように、基本的に、エンジン・シミュレータなどの物理装置シミュレータは、そのΔt間隔で駆動され、そのクロック毎に、ECUエミュレータからの出力があるかどうかを確認する。
【0048】
ECUエミュレータからの出力とは、例えば、エンジンECUエミュレータの場合、燃料噴射制御信号、点火時期制御信号、ノック判定制御信号などであるが、連続的なクロックにより実行されている物理装置シミュレータに比べると、ECUエミュレータからの出力は、非常に疎らであり、且つ非同期である。例えば、燃料噴射制御信号は、エンジンの1サイクルのうち限られたフェーズにしか提供されないし、それはエンジン・シミュレータの駆動クロックよりも、はるかに疎ら、という次第である。
【0049】
本発明は、この性質をうまく利用する。そのタイミングチャートを、図4(b)に示す。すなわち、図4(b)に示すように、物理装置シミュレータは、全体の個々のクロックに同期して動作するのではなくて、Nステップを一気に駆動される。これによって、物理装置シミュレータの計算動作を高速化することができる。図4(b)で、白抜きの矢印は、実際はそのクロックのタイミングでシミュレータのモジュールが呼び出されていないことを示すす。
【0050】
ただ、Nステップを一気に駆動されると、その間にECUエミュレータからの出力があると、Nステップ連続計算で使った値との不一致が生じることがある。そこで、本発明によれば、Nステップ駆動毎に、入力と出力を、ロールバック表に記録していく。そうして、Nステップ連続計算が完了した時点で、ECUエミュレータから、関連するパラメータが出力として入ってきていれば、それを、ロールバック表の対応する入力と比較し、一致していれば、Nステップ連続計算の投機実行が成功とみなして、次のNステップ連続計算に移る。
【0051】
もしECUエミュレータからの出力が、ロールバック表の対応する入力と一致しないなら、Nステップ連続計算の投機実行が失敗したとみなして、シミュレーション・システムは、そのECUエミュレータからの出力が指し示す時間より前の時点に戻して、そこからステップ駆動をはじめる。そうして、ECUエミュレータからの出力が指し示す時間に到達したら、また、Nステップ連続計算の投機実行を再開して、ロールバック表への記録を続ける。
【0052】
図5は、本発明に係る物理装置シミュレータの論理構成の機能ブロック図を示す。図5において、プログラムコード502は、エンジン・シミュレータなどの物理装置シミュレータのソースコードである。物理装置シミュレータの実行可能バイナリファイルしか入手できない場合は、逆アセンブル、逆コンパイルなどにより、ソースコードが用意される。
【0053】
本発明によれば、事前に、物理装置シミュレータのプログラムコード502から、好適にはプログラム処理により自動的に、可変ステップ実行モジュール504と、固定ステップ実行モジュール506が、生成される。
【0054】
さて、簡単のために、プログラムコード502は、下記のような内容だとする。
Function Integer_X(Sum, X)
{
Sum = Sum + X;
Return(Sum);
}
【0055】
プログラムコード502から、可変ステップ実行モジュール504として、下記のコードが生成される。
Function Integer_X_N(Sum, X,N)
{
DO i = 1, N
Sum = Sum + X;
END
Return(Sum);
}
【0056】
また、プログラムコード502から、固定ステップ実行モジュール506として、下記のコードが生成される。
Function Integer_100_speculative(Sum, X)
{
DO i = 1, 100
Sum = Sum + X;
END
Return(Sum);
}
【0057】
要するに、図4(a)のような場合だと、1クロック毎に、下記の関数を呼び出すので、その都度、入力変数セット、関数呼び出し、出力の戻し、というオーバーヘッドがかかる。
Function Integer_X(Sum, X)
{
Sum = Sum + X;
Return(Sum);
}
これを、下記で置き換えることにより、上記関数を100回呼び出したのと同じ効果を実現し、且つ、関数個別呼び出しのオーバーヘッドを削減することができる。ただ、本発明は、投機失敗の場合に、ロールバックする手段を提供する。
Function Integer_100_speculative(Sum, X)
{
DO i = 1, 100
Sum = Sum + X;
END
Return(Sum);
}
【0058】
ここで、固定ステップ実行モジュール506の100というステップ数は、例示的な数であり、実際のクロック数の時間間隔により、500、あるいは1000など、任意の適切な数を選ぶことができる。
【0059】
尚、下記のコードがあったとき、
Function Integer_100_speculative(Sum, X)
{
DO i = 1, 100
Sum = Sum + X;
END
Return(Sum);
}
これは、コンパイラの最適化機能で、下記のようなコードとして実行可能コードに変換されることがあり、以ってさらに処理が高速化される。
Function Integer_100_speculative(Sum, X)
{
Sum = Sum + 100 * X;
Return(Sum);
}
【0060】
ローカル・スケジューラ508は、コミュニケーション・インターフェース・モジュール510を介して入力された、ECUエミュレータからの出力を、ロールバック表512に記録されている対応のエントリと比較して、投機実行が成功と判断すれば、固定ステップ実行モジュール506を実行し、投機実行が失敗と判断すれば、可変ステップ実行モジュール504を実行する、という処理を行う。この処理は後で詳しく説明する。
【0061】
図6は、本発明に係るシミュレーション・システム全体の機能論理ブロック図である。図示されているように、シミュレーション・システムは、物理装置シミュレータ604a、604b・・・604mと、その各々のロールバック表格納のための記憶部610a、610b・・・610mと、ECUエミュレータ608a、608b、・・・608nと、物理装置シミュレータ604a、604b・・・604m及び物理装置シミュレータ604a、604b・・・604mの入出力をスケジューリングするグローバル・スケジューラ602からなる。
【0062】
物理装置シミュレータ604a、604b・・・604m、ECUエミュレータ608a、608b、・・・608n、及びグローバル・スケジューラ602は、実行可能モジュールとして、ハードディスク・ドライブ316に保存され、図3のコンピュータ・システムの起動時に、メイン・メモリ306にオペレーティング・システムの処理によりロードされ、動作する。
【0063】
物理装置シミュレータ604a、604b・・・604mはそれぞれ、エンジン、ブレーキ、ドライブ・トレーン、エアコンなどに対応するものである。
【0064】
グローバル・スケジューラ602は、物理装置シミュレータ604a、604b・・・604mと、ECU608a、608b、・・・608nからの出力を受け取り、それらを一旦バッファして、確定時間に基づき、指定されたECUエミュレータ608a、608b、・・・608nまたは物理装置シミュレータ604a、604b・・・604mに差し向ける。
【0065】
グローバル・スケジューラ602と、物理装置シミュレータ604a、604b・・・604m及びECU608a、608b、・・・608nの間は、図示しないが、共通メモリまたは、CAN(controller area network)シミュレータで接続される。共有メモリ方式ならば、特定のメモリのアドレスに書いてシグナルされるし、CANエミュレータ方式の場合、送り出すメッセージに、所定の宛先を含むヘッダを付けることになる。
【0066】
図示しないが、図6の構成は、登り坂道、高速道路、つづら折道などの様々な、テストのためのシナリオを格納したシナリオ・ジェネレータも含む。そして、シナリオ・ジェネレータに記述されたシナリオに従って、ECUエミュレータ608a、608b、・・・608nに入力が与えられ、様々な条件でシミュレーションが行われることになる。
【0067】
図7に総称的に示すように、好適には各々の物理装置シミュレータ604が、可変ステップ実行モジュール504、固定ステップ実行モジュール506、ローカル・スケジューラ508及びコミュニケーション・インターフェース510をもつ。これらの機能は、図5に関連して説明したとおりである。記憶部610には、ロールバック表のエントリ512が格納される。また、図7には図示しないが、各々の物理装置シミュレータ604はそれぞれ、1つずつ、キューをもつ。
【0068】
図示しないが、ECUエミュレータも、内部にロールバック表を維持して、投機的に実行してもよい。この処理は、例えば、本出願人に係る、特願2008−124053号明細書に記述されているが、本発明にとって必ずしも本質的でないので、詳しい説明は省略する。
【0069】
次に、図8のフローチャートを参照して、物理装置シミュレータ604における、ローカル・スケジューラ508の処理について説明する。まず、ステップ802では、物理装置シミュレータ604のキューにイベントがあるかどうかの判断が行われる。もし、キューにイベントがなければ、ステップ804では、新しい入力イベントが予測される。ここでいう予測とは、例えば、過去の入力イベントに基づく、入力イベントの予測であり、例えば、典型的には、前回と同じ入力イベントを使う、という方法がありえる。あるいは、タイミングの場合は、それまでの周期を維持するようにイベントを予測する、という方法をとることもできる。ここは、物理装置シミュレータが、エンジン・シミュレータであるか、ドライブ・トレーン・シミュレータがあるかなどの性質によって、最善の予測を行うように、予め、ローカル・スケジューラ508にプログラムしておくものとする。このようにして予測された入力イベントは、ステップ806でキューに入れられて、処理はステップ802に戻る。
【0070】
ステップ802で、キューにイベントがある、すなわちキューが空でないと判断されると、ステップ808では、キューから、最も古いイベントが取り出される。その最も古いイベントのタイムスタンプをtとすると、ステップ810では、Tnext + N < tが成立するかどうかが、判断される。ここで、Tnextとは、次の実行時刻であり、Nは、固定ステップ実行モジュール506の1回の実行時間である。
【0071】
もしTnext + N < tであるなら、ステップ812で、イベントは一旦キューに戻され、ステップ814で、時刻Tnextから、固定ステップ実行モジュール506が呼び出されて、Nステップの連続実行がなされる。そうして、ステップ816で、その実行後の内部状態が保存され、時刻TnextがNだけ増分されて、処理は、ステップ802に戻る。
【0072】
もしステップ810で、Tnext + N < tが成立しないと判断されたなら、ステップ818で、Tnext < tが成立するかどうが、判断される。もしそうなら、ステップ820で、Tnextからtまで可変ステップ実行モジュールが実行され、ステップ822では、その結果の新しいエントリがロールバック表に挿入されて、Tnext = tとされ、そこから、固定ステップ実行モジュール506が呼び出されて、Nステップの連続実行がなされる。そうして、ステップ816で、その実行後の内部状態が保存され、時刻TnextがNだけ増分されて、処理は、ステップ802に戻る。
【0073】
ステップ818で、Tnext < tが成立しないと判断されたら、ステップ824で、t=tkのようなtkをもつイベントがロールバック表にあるかどうか判断される。もし、t=tkのようなtkをもつイベントがないなら、ステップ826で、確定時間Tに最も近い時間までロールバックされる。すなわち、確定時間Tに最も近いエントリを残して、残りを削除する。そして、ステップ828で、tまで可変ステップ実行モジュールを実行し、ステップ822では、その結果の新しいエントリがロールバック表に挿入されて、Tnext = tとされる。次に、ステップ814で、時刻Tnextから、固定ステップ実行モジュール506が呼び出されて、Nステップの連続実行がなされる。そうして、ステップ816で、その実行後の内部状態が保存され、時刻TnextがNだけ増分されて、処理は、ステップ802に戻る。
【0074】
ステップ824で、t=tkのようなtkをもつイベントがあると判断されたなら、キューから取り出されたイベントeと、時間tkをもつ、ロールバック表中のイベントekが比較され、e = ekであれば、投機実行成功なので、ステップ802に戻る。
【0075】
e = ekでなければ、結局ステップ826に行き、そこで、確定時間Tに最も近い時間までロールバックされる。すなわち、確定時間Tに最も近いエントリを残して、残りを削除する。そして、ステップ828で、tまで可変ステップ実行モジュールを実行し、ステップ822では、その結果の新しいエントリがロールバック表に挿入されて、Tnext = tとされる。次に、ステップ814で、時刻Tnextから、固定ステップ実行モジュール506が呼び出されて、Nステップの連続実行がなされる。そうして、ステップ816で、その実行後の内部状態が保存され、時刻TnextがNだけ増分されて、処理は、ステップ802に戻る。
【0076】
なお、イベントを比較するとは、それに含まれるパラメータが一致しているかどうかを調べることである。例えば、燃料噴射の量や温度などである。数値として一致を判断するときは、その量の性質に応じて有効数字(桁数)を変える。例えば、噴射量や温度なら上位の2桁で一致を判断すればよい。このような誤差に対する許容の高さによって、多くの投機実行を成功とみなすことが可能となる。このことは、すなわち、投機的シミュレーションを可能としている重要なポイントである。
【0077】
なお、ロールバック表の確定フラグは,グローバル・スケジューラから別途,通知されるので,その都度更新する.ローカル・スケジューラは確定の判断をしない。また,確定エントリが取り消されることはないので,最後の確定エントリを除いて,それ以前のエントリは,ロールバック表から削除しても良い。
【0078】
確定フラグは、グローバル・スケジューラ602から別途通知されるので、その都度更新する。ローカル・スケジューラは確定の判断をしない。また、確定エントリが取り消されることはないので、最後の確定エントリを除いて、それ以前のエントリは、ロールバック表から削除しても良い。
【0079】
図9は、物理装置シミュレータに対する入力と、出力、及び予測入力の例を示すタイミング・チャートである。また、図10は、図9に対応する、ロールバック表のエントリを示す図である。図示されているように、ロールバック表において、時間tより後のエントリは、まだ未確定であるとして、キャンセルすることができる。
【0080】
図11に示すように、グローバル・スケジューラ602は、論理プロセスLP#1〜LP#N毎にキューQ1〜Qnをもつ。論理プロセスとは各々、図6に示す物理装置シミュレータ#1〜#m、ECUエミュレータ#1〜#nのどれかである。
【0081】
キューQ1〜Qnには、対応する論理プロセスLP#1〜LP#Nから、随時にイベントが入来し、入来したイベントは、キューに一旦格納される。グローバル・スケジューラ602は、キューQ1〜Qnに格納されているイベントに基づき、確定イベントと、確定時間を出力する。
【0082】
図12は、そのためのグローバル・スケジューラ602の処理を示すフローチャートである。ステップ1202で、グローバル・スケジューラ602は、どれかのキューQ1〜Qn(図11)に、新しいイベントが到来するのを待つ。
【0083】
ステップ1204では、空のキューにイベントが届いたかどうかが判断され、そうでなければ、処理は、ステップ1202に戻る。
【0084】
ステップ1204で、空のキューにイベントが届いたと判断されると、ステップ1206に行って、そこで、すべてのキューQ1〜Qnが少なくとも1つのイベントをもつかどうかが判断される。そうでなければ、やはり処理は、ステップ1202に戻る。
【0085】
ステップ1206で、すべてのキューQ1〜Qnが少なくとも1つのイベントをもつと判断されると、ステップ1208では、すべてのキューQ1〜Qnの中で、最も古いイベントが見出される。このことは、すべてのイベントには、タイムスタンプがつけられていることにより可能である。
【0086】
ステップ1210では、見つけられた最も古いイベントが、確定イベントとされ、論理プロセスLP#1〜LP#Nに通知される。
【0087】
ステップ1212では、確定イベントがキューから取り除かれる。そして、ステップ1202に戻り、グローバル・スケジューラ602は、次のイベントの到着を待つ。
【0088】
以上、自動車用の複数の物理装置シミュレータを含むシミュレーション・システムに関連して、本発明の特定の実施例を説明してきたが、本発明はこのような特定の実施例に限定されず、飛行機用のシミュレーション・システムなど、一般的な電子機械制御系システムのシミュレーション・システムに適用可能であることを、この分野の当業者であるなら、理解するであろう。
【図面の簡単な説明】
【0089】
【図1】ECUの典型的な制御である、フィードバック閉ループ系の例を示す図である。
【図2】フィードバック閉ループ系の、応答関数による記述の例である。
【図3】本発明を実施するために使用されるコンピュータのハードウェアのブロック図である。
【図4】従来と本発明のシミュレーション・システムの動作の対比を示す、クロックのタイムチャートを示す図である。
【図5】本発明の一実施例に係る、物理装置シミュレータの論理構成ブロック図である。
【図6】本発明の一実施例に係る、シミュレーション・システム全体の機能ブロック図である。
【図7】本発明の一実施例に係る、物理装置シミュレータの機能ブロック図である。
【図8】物理装置シミュレータのローカル・スケジューラの処理のフローチャートである。
【図9】物理装置シミュレータのタイミング・チャートを示す図である。
【図10】物理装置シミュレータのロールバック表のエントリを示す図である。
【図11】グローバル・スケジューラのキューを示す図である。
【図12】グローバル・スケジューラの処理のフローチャートである。
【特許請求の範囲】
【請求項1】
電子制御ユニットによって制御される物理装置システムをシミュレートするためのシステムであって、
前記物理装置をソフトウェア的にシミュレートする物理装置シミュレータと、
前記物理装置シミュレータに、時刻付きの出力を与えるための、前記電子制御ユニットをソフトウェア的にエミュレートする、電子制御ユニット・エミュレータとを有し、
前記物理装置シミュレータは、前記物理装置シミュレータを固定の複数ステップ連続動作させる固定ステップ実行モジュールと、前記物理装置シミュレータを可変数のステップ動作させる可変ステップ実行モジュールと、前記固定ステップ実行モジュールまたは前記可変ステップ実行モジュールの実行完了時に、その時刻と入力と内部状態変数を、読み出し可能にロールバック表に記録するローカル・スケジューラと、前記電子制御ユニット・エミュレータからの出力を保持するためのキューをもち、
前記ローカル・スケジューラは、前記キューにある、相対的に古い前記電子制御ユニット・エミュレータからの出力の時刻に対応して、前記ロールバック表に記録されている入力と比較し、前記電子制御ユニット・エミュレータからの該出力が前記ロールバック表に記録されている該出力と不一致であることに応答して、前記電子制御ユニット・エミュレータからの該出力の時刻より前まで戻し、前記電子制御ユニット・エミュレータからの該出力の時刻まで、前記可変ステップ実行モジュールにより前記物理装置シミュレータを動作させ、その後は前記固定ステップ実行モジュールにより、前記物理装置シミュレータを動作させる、
シミュレーション・システム。
【請求項2】
前記物理装置シミュレータは、時刻付の出力を与えるものであり、
前記電子制御ユニット・エミュレータからの出力と、前記物理装置シミュレータからの出力を保持は、そのうちの最も古い出力の時刻を、確定時刻として、前記電子制御ユニット・エミュレータと、前記物理装置シミュレータに通知する、グローバル・スケジューラをさらに有する、
請求項1に記載のシミュレーション・システム。
【請求項3】
前記出力の一致の比較は、桁切り上げの数値での概数比較である、請求項1に記載のシミュレーション・システム。
【請求項4】
電子制御ユニットによって制御される物理装置システムをシミュレートするための方法であって、
コンピュータの処理により、前記物理装置システムをソフトウェア的にシミュレートする物理装置シミュレータと、前記物理装置シミュレータに、時刻付きの出力を与えるための、前記電子制御ユニットをソフトウェア的にエミュレートする、電子制御ユニット・エミュレータを実行させるステップと、
前記コンピュータの処理により、前記物理装置シミュレータを、固定の複数ステップ連続動作させる固定ステップ実行モードで動作させるステップと、
前記コンピュータの処理により、前記可変ステップ実行モジュールの実行完了時に、その時刻と入力と内部状態変数を、読み出し可能にロールバック表に記録するステップと、
前記コンピュータの処理により、前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取るステップと、
前記コンピュータの処理により、前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取ったことに応答して、該出力の時刻に対応して、前記ロールバック表に記録されている出力と比較し、前記電子制御ユニット・エミュレータからの該出力が前記ロールバック表に記録されている該出力と不一致であることに応答して、前記電子制御ユニット・エミュレータからの該出力の時刻より前まで戻し、前記電子制御ユニット・エミュレータからの該出力の時刻まで、可変ステップ実行モードにより前記物理装置シミュレータを動作させ、その後は前記固定ステップ実行モードで、前記物理装置シミュレータを動作させるステップを有する、
シミュレーション方法。
【請求項5】
前記出力の一致の比較は、桁切り上げの数値での概数比較である、請求項4に記載のシミュレーション方法。
【請求項6】
電子制御ユニットによって制御される物理装置システムを、コンピュータによってシミュレートするためのプログラムであって、
前記物理装置システムをソフトウェア的にシミュレートする物理装置シミュレータと、前記物理装置シミュレータと、
時刻付きの出力を与えるための、前記電子制御ユニットをソフトウェア的にエミュレートする、電子制御ユニット・エミュレータとをもち、
前記コンピュータに、
前記物理装置シミュレータを、固定の複数ステップ連続動作させる固定ステップ実行モードで動作させるステップと、
前記可変ステップ実行モジュールの実行完了時に、その時刻と入力と内部状態変数を、読み出し可能にロールバック表に記録するステップと、
前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取るステップと、
前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取ったことに応答して、該出力の時刻に対応して、前記ロールバック表に記録されている出力と比較し、前記電子制御ユニット・エミュレータからの該出力が前記ロールバック表に記録されている該出力と不一致であることに応答して、前記電子制御ユニット・エミュレータからの該出力の時刻より前まで戻し、前記電子制御ユニット・エミュレータからの該出力の時刻まで、可変ステップ実行モードにより前記物理装置シミュレータを動作させ、その後は前記固定ステップ実行モードで、前記物理装置シミュレータを動作させるステップを実行させる、
シミュレーション・プログラム。
【請求項7】
前記出力の一致の比較は、桁切り上げの数値での概数比較である、請求項6に記載のシミュレーション・プログラム。
【請求項8】
電子制御ユニットによって制御される物理装置システムをシミュレートするためのシステムにおいて、コンピュータの制御によって、前記物理装置をソフトウェア的にシミュレートする物理装置シミュレータの制御方法であって、
前記物理装置シミュレータを、固定の複数ステップ連続動作させる固定ステップ実行モードで動作させるステップと、
前記コンピュータの処理により、前記可変ステップ実行モジュールの実行完了時に、その時刻と入力と内部状態変数を、読み出し可能にロールバック表に記録するステップと、
前記コンピュータの処理により、前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取るステップと、
前記コンピュータの処理により、前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取ったことに応答して、該出力の時刻に対応して、前記ロールバック表に記録されている出力と比較し、前記電子制御ユニット・エミュレータからの該出力が前記ロールバック表に記録されている該出力と不一致であることに応答して、前記電子制御ユニット・エミュレータからの該出力の時刻より前まで戻し、前記電子制御ユニット・エミュレータからの該出力の時刻まで、可変ステップ実行モードにより前記物理装置シミュレータを動作させ、その後は前記固定ステップ実行モードで、前記物理装置シミュレータを動作させるステップを有する、
制御方法。
【請求項9】
前記出力の一致の比較は、桁切り上げの数値での概数比較である、請求項8に記載の制御方法。
【請求項10】
電子制御ユニットによって制御される物理装置システムをシミュレートするためのシステムにおいて、コンピュータの制御によって、前記物理装置をソフトウェア的にシミュレートする物理装置シミュレータの制御プログラムであって、
前記コンピュータをして、
前記物理装置シミュレータを、固定の複数ステップ連続動作させる固定ステップ実行モードで動作させるステップと、
前記コンピュータの処理により、前記可変ステップ実行モジュールの実行完了時に、その時刻と入力と内部状態変数を、読み出し可能にロールバック表に記録するステップと、
前記コンピュータの処理により、前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取るステップと、
前記コンピュータの処理により、前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取ったことに応答して、該出力の時刻に対応して、前記ロールバック表に記録されている出力と比較し、前記電子制御ユニット・エミュレータからの該出力が前記ロールバック表に記録されている該出力と不一致であることに応答して、前記電子制御ユニット・エミュレータからの該出力の時刻より前まで戻し、前記電子制御ユニット・エミュレータからの該出力の時刻まで、可変ステップ実行モードにより前記物理装置シミュレータを動作させ、その後は前記固定ステップ実行モードで、前記物理装置シミュレータを動作させるステップを実行させる、
制御プログラム。
【請求項11】
前記出力の一致の比較は、桁切り上げの数値での概数比較である、請求項10に記載の制御プログラム。
【請求項1】
電子制御ユニットによって制御される物理装置システムをシミュレートするためのシステムであって、
前記物理装置をソフトウェア的にシミュレートする物理装置シミュレータと、
前記物理装置シミュレータに、時刻付きの出力を与えるための、前記電子制御ユニットをソフトウェア的にエミュレートする、電子制御ユニット・エミュレータとを有し、
前記物理装置シミュレータは、前記物理装置シミュレータを固定の複数ステップ連続動作させる固定ステップ実行モジュールと、前記物理装置シミュレータを可変数のステップ動作させる可変ステップ実行モジュールと、前記固定ステップ実行モジュールまたは前記可変ステップ実行モジュールの実行完了時に、その時刻と入力と内部状態変数を、読み出し可能にロールバック表に記録するローカル・スケジューラと、前記電子制御ユニット・エミュレータからの出力を保持するためのキューをもち、
前記ローカル・スケジューラは、前記キューにある、相対的に古い前記電子制御ユニット・エミュレータからの出力の時刻に対応して、前記ロールバック表に記録されている入力と比較し、前記電子制御ユニット・エミュレータからの該出力が前記ロールバック表に記録されている該出力と不一致であることに応答して、前記電子制御ユニット・エミュレータからの該出力の時刻より前まで戻し、前記電子制御ユニット・エミュレータからの該出力の時刻まで、前記可変ステップ実行モジュールにより前記物理装置シミュレータを動作させ、その後は前記固定ステップ実行モジュールにより、前記物理装置シミュレータを動作させる、
シミュレーション・システム。
【請求項2】
前記物理装置シミュレータは、時刻付の出力を与えるものであり、
前記電子制御ユニット・エミュレータからの出力と、前記物理装置シミュレータからの出力を保持は、そのうちの最も古い出力の時刻を、確定時刻として、前記電子制御ユニット・エミュレータと、前記物理装置シミュレータに通知する、グローバル・スケジューラをさらに有する、
請求項1に記載のシミュレーション・システム。
【請求項3】
前記出力の一致の比較は、桁切り上げの数値での概数比較である、請求項1に記載のシミュレーション・システム。
【請求項4】
電子制御ユニットによって制御される物理装置システムをシミュレートするための方法であって、
コンピュータの処理により、前記物理装置システムをソフトウェア的にシミュレートする物理装置シミュレータと、前記物理装置シミュレータに、時刻付きの出力を与えるための、前記電子制御ユニットをソフトウェア的にエミュレートする、電子制御ユニット・エミュレータを実行させるステップと、
前記コンピュータの処理により、前記物理装置シミュレータを、固定の複数ステップ連続動作させる固定ステップ実行モードで動作させるステップと、
前記コンピュータの処理により、前記可変ステップ実行モジュールの実行完了時に、その時刻と入力と内部状態変数を、読み出し可能にロールバック表に記録するステップと、
前記コンピュータの処理により、前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取るステップと、
前記コンピュータの処理により、前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取ったことに応答して、該出力の時刻に対応して、前記ロールバック表に記録されている出力と比較し、前記電子制御ユニット・エミュレータからの該出力が前記ロールバック表に記録されている該出力と不一致であることに応答して、前記電子制御ユニット・エミュレータからの該出力の時刻より前まで戻し、前記電子制御ユニット・エミュレータからの該出力の時刻まで、可変ステップ実行モードにより前記物理装置シミュレータを動作させ、その後は前記固定ステップ実行モードで、前記物理装置シミュレータを動作させるステップを有する、
シミュレーション方法。
【請求項5】
前記出力の一致の比較は、桁切り上げの数値での概数比較である、請求項4に記載のシミュレーション方法。
【請求項6】
電子制御ユニットによって制御される物理装置システムを、コンピュータによってシミュレートするためのプログラムであって、
前記物理装置システムをソフトウェア的にシミュレートする物理装置シミュレータと、前記物理装置シミュレータと、
時刻付きの出力を与えるための、前記電子制御ユニットをソフトウェア的にエミュレートする、電子制御ユニット・エミュレータとをもち、
前記コンピュータに、
前記物理装置シミュレータを、固定の複数ステップ連続動作させる固定ステップ実行モードで動作させるステップと、
前記可変ステップ実行モジュールの実行完了時に、その時刻と入力と内部状態変数を、読み出し可能にロールバック表に記録するステップと、
前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取るステップと、
前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取ったことに応答して、該出力の時刻に対応して、前記ロールバック表に記録されている出力と比較し、前記電子制御ユニット・エミュレータからの該出力が前記ロールバック表に記録されている該出力と不一致であることに応答して、前記電子制御ユニット・エミュレータからの該出力の時刻より前まで戻し、前記電子制御ユニット・エミュレータからの該出力の時刻まで、可変ステップ実行モードにより前記物理装置シミュレータを動作させ、その後は前記固定ステップ実行モードで、前記物理装置シミュレータを動作させるステップを実行させる、
シミュレーション・プログラム。
【請求項7】
前記出力の一致の比較は、桁切り上げの数値での概数比較である、請求項6に記載のシミュレーション・プログラム。
【請求項8】
電子制御ユニットによって制御される物理装置システムをシミュレートするためのシステムにおいて、コンピュータの制御によって、前記物理装置をソフトウェア的にシミュレートする物理装置シミュレータの制御方法であって、
前記物理装置シミュレータを、固定の複数ステップ連続動作させる固定ステップ実行モードで動作させるステップと、
前記コンピュータの処理により、前記可変ステップ実行モジュールの実行完了時に、その時刻と入力と内部状態変数を、読み出し可能にロールバック表に記録するステップと、
前記コンピュータの処理により、前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取るステップと、
前記コンピュータの処理により、前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取ったことに応答して、該出力の時刻に対応して、前記ロールバック表に記録されている出力と比較し、前記電子制御ユニット・エミュレータからの該出力が前記ロールバック表に記録されている該出力と不一致であることに応答して、前記電子制御ユニット・エミュレータからの該出力の時刻より前まで戻し、前記電子制御ユニット・エミュレータからの該出力の時刻まで、可変ステップ実行モードにより前記物理装置シミュレータを動作させ、その後は前記固定ステップ実行モードで、前記物理装置シミュレータを動作させるステップを有する、
制御方法。
【請求項9】
前記出力の一致の比較は、桁切り上げの数値での概数比較である、請求項8に記載の制御方法。
【請求項10】
電子制御ユニットによって制御される物理装置システムをシミュレートするためのシステムにおいて、コンピュータの制御によって、前記物理装置をソフトウェア的にシミュレートする物理装置シミュレータの制御プログラムであって、
前記コンピュータをして、
前記物理装置シミュレータを、固定の複数ステップ連続動作させる固定ステップ実行モードで動作させるステップと、
前記コンピュータの処理により、前記可変ステップ実行モジュールの実行完了時に、その時刻と入力と内部状態変数を、読み出し可能にロールバック表に記録するステップと、
前記コンピュータの処理により、前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取るステップと、
前記コンピュータの処理により、前記物理装置シミュレータが、前記電子制御ユニット・エミュレータから出力を受け取ったことに応答して、該出力の時刻に対応して、前記ロールバック表に記録されている出力と比較し、前記電子制御ユニット・エミュレータからの該出力が前記ロールバック表に記録されている該出力と不一致であることに応答して、前記電子制御ユニット・エミュレータからの該出力の時刻より前まで戻し、前記電子制御ユニット・エミュレータからの該出力の時刻まで、可変ステップ実行モードにより前記物理装置シミュレータを動作させ、その後は前記固定ステップ実行モードで、前記物理装置シミュレータを動作させるステップを実行させる、
制御プログラム。
【請求項11】
前記出力の一致の比較は、桁切り上げの数値での概数比較である、請求項10に記載の制御プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2009−295126(P2009−295126A)
【公開日】平成21年12月17日(2009.12.17)
【国際特許分類】
【出願番号】特願2008−151047(P2008−151047)
【出願日】平成20年6月9日(2008.6.9)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】
【公開日】平成21年12月17日(2009.12.17)
【国際特許分類】
【出願日】平成20年6月9日(2008.6.9)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】
[ Back to top ]