(57)【要約】【課題】ハードウェア機器を模擬するシミュレータとハードウェア機器を制御する制御ソフトウェアの実行を模擬するシミュレータとのインタフェースを容易に変更できるシミュレーション装置を提供する。【解決手段】  機器を制御するための制御ソフトウェアを実行する制御装置を模擬するシミュレーション装置であって、制御装置に含まれるハードウェアを模擬するハードウェア模擬手段と、制御ソフトウェアが表す演算処理の実行を模擬する実行模擬手段とを備え、実行模擬手段は、制御ソフトウェアにおけるハードウェアへ対する入力と出力の少なくとも一方を行う演算処理であることを表す記述記号を、他の演算処理に多重定義すると共に、他の演算処理においてハードウェア模擬手段に対する演算処理を行うインタフェースプログラムを実行する。これによれば、インタフェースプログラムを容易に変更できる。【選択図】図５
2009211568.tif 000002
【特許請求の範囲】
【請求項１】
機器を制御するための制御ソフトウェアを実行する制御装置を模擬するシミュレーション装置であって、
前記制御装置に含まれるハードウェアを模擬するハードウェア模擬手段と、
前記制御ソフトウェアが表す演算処理の実行を模擬する実行模擬手段とを備え、
前記実行模擬手段は、前記制御ソフトウェアにおける前記ハードウェアへ対する入力と出力の少なくとも一方を行う演算処理であることを表す記述記号を、他の演算処理に多重定義すると共に、前記他の演算処理において前記ハードウェア模擬手段に対する演算処理を行うインタフェースプログラムを実行することを特徴とするシミュレーション装置。
【請求項２】
前記他の演算処理は、例外を発生させる処理を含み、
前記実行模擬手段は、前記例外が発生した場合に実行するよう定めた例外時処理に従って、前記ハードウェア模擬手段へ対する入力と出力の少なくとも一方を行う入出力プログラムを実行することを特徴とする請求項１に記載のシミュレーション装置。
【請求項３】
前記他の演算処理は、前記ハードウェア模擬手段へ対する入力と出力の少なくとも一方を行う入出力プログラムを実行する手順を表すコールバック関数を実行する手順を表すことを特徴とする請求項１に記載のシミュレーション装置。
【請求項４】
前記機器を模擬することで前記機器の状態を表す状態情報を出力する機器模擬手段を更に備え、
前記ハードウェア模擬手段は、前記機器模擬手段が出力する状態情報を前記入出力プログラムへ出力し、
前記実行模擬手段は、前記状態情報を演算する演算処理を模擬する場合において、多重定義した前記他の演算処理に従って、前記状態情報を前記入出力プログラムから取得することを特徴とする請求項１から３のいずれかに記載のシミュレーション装置。
【請求項５】
前記実行模擬手段は、前記状態情報に基づいて前記制御装置が行う演算処理を模擬し、
前記ハードウェア模擬手段は、前記実行模擬手段が模擬する演算処理の結果に基づいて前記機器を制御する制御情報を出力して前記機器模擬手段を制御することを特徴とする請求項４に記載のシミュレーション装置。
【請求項６】
前記機器は、車両、航空機、船舶、電子機器、及び機械設備のいずれか１つ以上を含み、
前記制御装置は、電子制御ユニットを含み、
前記制御装置を構成するハードウェアは、前記演算処理を行う演算部が演算対象とする演算情報を記憶するレジスタを含み、
前記制御装置が実行する演算処理は、前記レジスタへ前記演算情報を代入演算する処理であることを特徴とする請求項１から５のいずれかに記載のシミュレーション装置。
【請求項７】
前記実行模擬手段は、前記演算処理の実行を模擬する場合に、参照又は変更が制限される属性を有する情報を演算対象とすることで例外を発生させることを特徴とする請求項２に記載のシミュレーション装置。
【請求項８】
前記多重定義した他の演算処理は、オーバ・フロー又はアンダ・フローを発生させる演算処理、所定の数値を値０で除算する演算処理、並びに浮動小数点例外を発生させる演算処理のいずれか１つ以上を含むことを特徴とする請求項２に記載のシミュレーション装置。
【請求項９】
機器を制御するための制御ソフトウェアを実行する制御装置を模擬するシミュレーションプログラムであって、
コンピュータを、
前記制御装置に含まれるハードウェアを模擬するハードウェア模擬手段と、
前記制御ソフトウェアが表す演算処理の実行を模擬する実行模擬手段として機能させ、
前記実行模擬手段は、前記制御ソフトウェアにおける前記ハードウェアへ対する入力と出力の少なくとも一方を行う演算処理であることを表す記述記号を、他の演算処理に多重定義すると共に、前記他の演算処理において前記ハードウェア模擬手段に対する演算処理を行うインタフェースプログラムを実行することを特徴とするシミュレーションプログラム。
【請求項１０】
機器を制御するための制御ソフトウェアを実行する制御装置を模擬するシミュレーション方法であって、
前記制御装置に含まれるハードウェアを模擬するハードウェア模擬ステップと、
前記制御ソフトウェアが表す演算処理の実行を模擬する実行模擬ステップとを備え、
前記実行模擬ステップは、前記制御ソフトウェアにおける前記ハードウェアへ対する入力と出力の少なくとも一方を行う演算処理であることを表す記述記号を、他の演算処理に多重定義すると共に、前記他の演算処理において前記ハードウェア模擬手段に対する演算処理を行うインタフェースプログラムを実行することを特徴とするシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータ等のソフトウェアを実行する際に必要となるハードウェア機器を模擬するプログラム、装置、及び方法に関する。
【背景技術】
【０００２】
従来から、ハードウェアである実機ではなく、実機をモデル化した実機モデルモジュールを制御した結果を取得することで、実機を制御する制御ソフトウェアを効率的に開発できる開発環境を提供するソフトウェア開発環境システムが知られている（例えば、特許文献１）。
【０００３】
このソフトウェア開発環境システムは、制御ソフトウェアを含む制御ソフトモジュールと、制御ソフトモジュールが制御する実機をモデル化した実機モデルモジュールと、システムに発生するイベントに基づいて制御ソフトモジュール及び実機モデルモジュールの起動及び実行を管理するシステム管理モジュールとを備えることを特徴としている。
【０００４】
特に、制御ソフトモジュール及び実機モデルモジュールは、両モジュール間で共有する共有メモリへ情報を入出力する入出力ドライバを用いて情報を共有し、管理モジュールは、入出力ドライバが情報を入出力することで発生したイベント及び入出力した情報に基づいて、制御ソフトモジュール及び実機モデルモジュールの実行を管理することを特徴とする。
【０００５】
【特許文献１】特開２００７−５２５８０
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで上記のようなシステムでは、制御ソフトモジュール及び実機モデルモジュールは入出力ドライバを用いて情報を共有しているので、両モジュールのインタフェースを改変するためには入出力ドライバを改変する必要がある。
【０００７】
このために、制御ソフトモジュール及び実機モデルモジュールが入出力ドライバを用いて行う処理の全てに、入出力ドライバの改変によって生じる影響が及ぶという問題があった。
【０００８】
また、上記のようなシステムでは、システム管理モジュールが十分に短い周期で共有メモリの記憶する値の変化を検査し、値の変化を検出したというイベントに基づいて制御ソフトモジュール及び実機モデルモジュールの実行を管理する。
【０００９】
このために、実機モデルモジュールを制御する処理の実行速度が、短周期で繰り返し実行される検査処理によって低下するという問題があった。
【００１０】
つまり例えば、制御ソフトモジュールが、実マイコン（microcomputer）で構成されるＥＣＵ（Electronic Control Unit）等といった実機において動作することを前提にプログラミングされた制御ソフトウェアである場合、実機モデルモジュールを実行するシミュレーション装置において制御ソフトウェアを実行するためには、シミュレーション装置による制御ソフトウェアの実行によって実機の制御に用いる情報等を入出力したことを実機モデルモジュールに伝える処理を追加するように制御ソフトウェアを改変しなければならないという問題があった。
【００１１】
もしくは、制御ソフトウェアが実機の制御に用いる情報を入出力するために、メモリであるレジスタの値を変更したことを、実機モデルモジュールを実行するシミュレーション装置が検出するように構成する必要があるが、この場合には、十分に短い周期でレジスタの値をシステム管理モジュールにより管理する必要があり、シミュレーションの実行時間が長くなるという問題があった。
【００１２】
よって、本発明の目的とするところは、ハードウェア機器及びハードウェア機器を制御する基盤となるインタフェースを提供するプラットフォームプログラムの実行を模擬するシミュレータとハードウェア機器を制御する制御ソフトウェアの実行を模擬するシミュレータとのインタフェースを容易に変更できるシミュレーション装置、シミュレーションプログラム、及びシミュレーション方法を提供することにある。
【課題を解決するための手段】
【００１３】
本発明に係るシミュレーション装置は、機器を制御するための制御ソフトウェアを実行する制御装置を模擬するシミュレーション装置であって、制御装置に含まれるハードウェアを模擬するハードウェア模擬手段と、制御ソフトウェアが表す演算処理の実行を模擬する実行模擬手段とを備え、実行模擬手段は、制御ソフトウェアにおけるハードウェアへ対する入力と出力の少なくとも一方を行う演算処理であることを表す記述記号を、他の演算処理に多重定義すると共に、他の演算処理においてハードウェア模擬手段に対する演算処理を行うインタフェースプログラムを実行することを特徴としている。
【００１４】
上記構成において、他の演算処理は、例外を発生させる処理を含み、実行模擬手段は、例外が発生した場合に実行するよう定めた例外時処理に従って、ハードウェア模擬手段へ対する入力と出力の少なくとも一方を行う入出力プログラムを実行する構成を採用できる。
【００１５】
上記構成において、他の演算処理は、ハードウェア模擬手段へ対する入力と出力の少なくとも一方を行う入出力プログラムを実行する手順を表すコール・バック関数を実行する手順を表す構成を採用できる。
【００１６】
上記構成において、機器を模擬することで機器の状態を表す状態情報を出力する機器模擬手段を更に備え、ハードウェア模擬手段は、機器模擬手段が出力する状態情報を入出力プログラムへ出力し、実行模擬手段は、状態情報を演算する演算処理を模擬する場合において、多重定義した他の演算処理に従って、状態情報を入出力プログラムから取得する構成を採用できる。
【００１７】
上記構成において、実行模擬手段は、状態情報に基づいて制御装置が行う演算処理を模擬し、ハードウェア模擬手段は、実行模擬手段が模擬する演算処理の結果に基づいて機器を制御する制御情報を出力して機器模擬手段を制御する構成を採用できる。
【００１８】
上記構成において、機器は、車両、航空機、船舶、電子機器、及び機械設備のいずれか１つ以上を含み、制御装置は、電子制御ユニットを含み、制御装置を構成するハードウェアは、演算処理を行う演算部が演算対象とする演算情報を記憶するレジスタを含み、制御装置が実行する演算処理は、レジスタへ演算情報を代入演算する処理である構成を採用できる。
【００１９】
上記構成において、実行模擬手段は、演算処理の実行を模擬する場合に、参照又は変更が制限される属性を有する情報を演算対象とすることで例外を発生させる構成を採用できる。
【００２０】
上記構成において、多重定義した他の演算処理は、オーバ・フロー又はアンダ・フローを発生させる演算処理、所定の数値を値０で除算する演算処理、並びに浮動小数点例外を発生させる演算処理のいずれか１つ以上を含む構成を採用できる。
【００２１】
本発明に係るシミュレーションプログラムは、機器を制御するための制御ソフトウェアを実行する制御装置を模擬するシミュレーションプログラムであって、コンピュータを、制御装置に含まれるハードウェアを模擬するハードウェア模擬手段と、制御ソフトウェアが表す演算処理の実行を模擬する実行模擬手段として機能させ、実行模擬手段は、制御ソフトウェアにおけるハードウェアへ対する入力と出力の少なくとも一方を行う演算処理であることを表す記述記号を、他の演算処理に多重定義すると共に、他の演算処理においてハードウェア模擬手段に対する演算処理を行うインタフェースプログラムを実行することを特徴としている。
【００２２】
本発明に係るシミュレーション方法は、機器を制御するための制御ソフトウェアを実行する制御装置を模擬するシミュレーション方法であって、制御装置に含まれるハードウェアを模擬するハードウェア模擬ステップと、制御ソフトウェアが表す演算処理の実行を模擬する実行模擬ステップとを備え、実行模擬ステップは、制御ソフトウェアにおけるハードウェアへ対する入力と出力の少なくとも一方を行う演算処理であることを表す記述記号を、他の演算処理に多重定義すると共に、他の演算処理においてハードウェア模擬手段に対する演算処理を行うインタフェースプログラムを実行することを特徴とすることを特徴としている。
【発明の効果】
【００２３】
請求項１の構成によれば、多重定義した他の演算処理に従ってインタフェースプログラムを実行するために、実行速度を低下させることがないだけでなく、多重定義の変更により演算処理を行うインタフェースプログラムを容易に変更できる。
【００２４】
請求項２の構成によれば、例外時に実行するよう定めた処理に従って入出力プログラムを実行するために、実行速度を低下させることがないだけでなく、例外時処理を変更することで実行する入出力プログラムを容易に変更できる。
【００２５】
請求項３の構成によれば、入出力プログラムを実行する手順を表すコール・バック関数を動的に変更できるだけでなく、実行する入出力プログラムを容易に変更できる。
【００２６】
請求項４の構成によれば、多重定義を変更することで、演算対象とする状態情報を入出力する入出力プログラムを容易に変更できる。
【００２７】
請求項５の構成によれば、シミュレーションの対象とする機器の状態に基づいて機器を制御する制御装置を模擬できる。
【００２８】
請求項６の構成によれば、車両、航空機、船舶、電子機器、及び機械設備を実際に用いることなく、電子制御ユニットが演算情報をレジスタへ入力して行う制御を模擬できる。
【００２９】
請求項７の構成によれば、演算対象とする情報の属性を変更することで容易に例外を発生させることができる。
【００３０】
請求項８の構成によれば、数値演算を行うことで容易に例外を発生させることができる。
【００３１】
請求項９の構成によれば、多重定義した他の演算処理に従ってインタフェースプログラムを実行するために、実行速度を低下させることがないだけでなく、多重定義の変更により演算処理を行うインタフェースプログラムを容易に変更できる。
【００３２】
請求項１０の構成によれば、多重定義した他の演算処理に従ってインタフェースプログラムを実行するために、実行速度を低下させることがないだけでなく、多重定義の変更により演算処理を行うインタフェースプログラムを容易に変更できる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の最良の実施形態について、添付図面を参照しつつ説明する。
【実施例１】
【００３４】
図１は本発明に係るシミュレーション装置の一実施形態を示す機能ブロック図である。
【００３５】
図１に示すシミュレーション装置１０００は、例えば、パーソナルコンピュータで構成される。また、シミュレーション装置１０００は、機器模擬部１１００及び制御模擬部１２００を有している。
【００３６】
機器模擬部１１００及び制御模擬部１２００が有する機能は、シミュレーション装置１０００が実行するソフトウェア制御により実現される。
【００３７】
ここで、図２を参照して、ソフトウェア制御を実行するためのシミュレーション装置１０００のハードウェア構成について説明する。図２は、ソフトウェア制御を実現するためのシミュレーション装置１０００のハードウェア構成の一例を表す図である。
【００３８】
シミュレーション装置１０００は、例えば、ＣＰＵ（Central Processing Unit）等の演算部１０１０、ＥＰＲＯＭ（Erasable Programmable Read-Only Memory）又はＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）等の読み出し専用メモリであるＲＯＭ１０２０（Read-Only Memory ）、ＤＲＡＭ（Dynamic  RAM）又はＳＲＡＭ（Static  RAM）等の揮発性メモリ及びＮＶＲＡＭ（Non Volatile RAM）等の不揮発性メモリで構成されるＲＡＭ１０３０（Random Access Memory）、並びにハードディスク等の外部記憶装置で構成される外部記憶部１０４０で構成され、演算部１０１０、ＲＯＭ１０２０、ＲＡＭ１０３０、及び外部記憶部１０４０は互いにバス１０５０によって接続している。
【００３９】
ソフトウェア制御は、ＲＯＭ１０２０又は外部記憶部１０４０に格納したプログラムを演算部１０１０が読込み、読込んだプログラムに従って演算部１０１０が演算を行うことにより上記各部の機能を実現する。なお、ＲＡＭ１０３０には、演算結果のデータが書き込まれ、特にＮＶＲＡＭには、電源オフ時にバックアップが必要なデータが保存される。
【００４０】
ここで図１に戻りシミュレーション装置１０００の構成について引き続き説明する。
機器模擬部１１００は、制御模擬部１２００に接続し、機器の挙動を模擬する。
【００４１】
ここで図３を参照して、機器模擬部１１００が模擬する機器について説明する。図３は、機器模擬部１１００が模擬する機器の一例について説明するための図である。
【００４２】
図３に示す機器２０００は、例えば、乗用車、バス、及びトラック等の車両で構成される。車両２０００は、制御装置２１００、エンジン２２００、ミッション２３００、プロペラシャフト２４００、デフ２５００、ドライブシャフト２６０１及び２６０２、車輪２７０１から２７０４、及び回転数センサ２８００で構成される。
【００４３】
制御装置２１００は、例えば、電子制御ユニット（ＥＣＵ：Electronic Control Unit）で構成され、エンジン２２００及び回転数センサ２８００に接続している。制御装置２１００は、制御プログラム（以下、制御ソフトウェアという）を実行することで車両機器２０００の挙動を制御する。
【００４４】
尚、上記した電子制御ユニットで実行される制御プログラム（制御ソフトウェア）は、エンジンの制御等の、その電子制御ユニットにおける機能を実現するためのアプリケーションプログラム等を含む。ただし、制御ソフトウェアが表す処理については後述する。
【００４５】
ここで、機器２０００の挙動は、機器２０００の動作及び機器２０００の状態の変化を含む。また、車両機器２０００の動作は、例えば、車両２０００の速度及び加速度の変化、車両２０００の進行方向及びヨーイングの変化、並びに車両２０００に加わる加重の変化を含む。
【００４６】
更に、車両２０００の状態は、例えば、車両２０００を構成するエンジン２２００に供給される空気量及び燃料の量、温度、回転数、並びに発生するトルク、並びに車輪２７０１から２７０４の回転数を含む。
【００４７】
ここで、図４を参照して、ソフトウェア制御を実行するために用いる制御装置２１００のハードウェア構成について説明する。図４は、ソフトウェア制御を実現するために用いる制御装置２１００のハードウェア構成の一例を表す図である。
【００４８】
制御装置２１００は、入出力回路２１１０及び２１２０と組込み用マイコン２１３０とで構成される。
【００４９】
入出力回路２１１０は、組込み用マイコン２１３０に外付けする外付ＡＤＣ（Ａ／Ｄコンバータ）２１１１を有する回路であり、組込み用マイコン２１３０に接続する。
【００５０】
入力回路２１１０は、車両２０００の状態を表す状態情報をデジタル信号として組込み用マイコン２１３０へ入力する。
【００５１】
また特に、入力回路２１１０は、車両２０００を構成するエンジンの状態を検出するセンサ又は回転数センサ２８００が出力したアナログ信号を、外付ＡＤＣ２１１１を用いてデジタル信号に変換して組込み用マイコン２１３０へ入力する。
【００５２】
入出力回路２１２０は、ドライバ２１２１から２１２９を実現する回路であり、組込み用マイコン２１３０に接続する。出力回路２１２０が実現するドライバ２１２１から２１２９は、組込み用マイコン２１３０が出力する制御情報を表す信号に従ってアクチュエータを駆動する等して車両２０００の挙動を制御する。尚、制御情報とは、車両２０００を制御するための情報をいう。
【００５３】
組込み用マイコン２１３０は、入力ポート２１３１、シリアルレジスタ２１３２、ＡＤレジスタ２１３３、ＣＰＵ（Central Processing Unit）２１３４、メモリ２１３５、出力ポート２１３６、ＰＷＭ（Pulse Width Modulation）レジスタ２１３７、及びコンペアレジスタ２１３８で構成され、入力回路２１１０及び出力回路２１２０に接続する。
【００５４】
尚、入力ポート２１３１、シリアルレジスタ２１３２、ＡＤレジスタ２１３３、ＣＰＵ２１３４、メモリ２１３５、出力ポート２１３６、ＰＷＭレジスタ２１３７、及びコンペアレジスタ２１３８は、それぞれ情報の授受が可能なように内部バス２１３９を介して接続している。
【００５５】
組込み用マイコン２１３０は、車両２０００に組込まれて車両２０００を制御するマイコンである。
【００５６】
入力ポート２１３１は、車両２０００の状態を検出するセンサが出力したデジタル信号の入力を受けて所定の値を保持する。
【００５７】
同様に、ＡＤレジスタ２１３３は、センサが出力したアナログデータをＡＤコンバータが変換したデジタル信号を受けて所定の値を保持する。
【００５８】
シリアルレジスタ２１３２は、外付けＡＤＣ２１１１が変換したデジタル信号を受けて所定の値を保持する。
【００５９】
ＣＰＵ２１３４は、メモリ２１３５が記憶する制御ソフトウェアに従って、入力ポート２１３１、入力ポート２１３１、シリアルレジスタ２１３２、ＡＤレジスタ２１３３、ＰＷＭレジスタ２１３７、及びコンペアレジスタ２１３８が保持する値に対して演算処理を行うことで、車両２０００の挙動を制御するための各種信号を出力ポート３１３６、シリアルレジスタ２１３２、ＡＤレジスタ２１３３、ＰＷＭレジスタ２１３７、及びコンペアレジスタ２１３８に出力する。
【００６０】
この演算処理は、ハードウェアであるレジスタ２１３１から２１３８へ対する入力と出力の少なくとも一方を行う制御ソフトウェアにおける演算処理であり、例えば、演算子を含む記述記号を用いて表される。尚、本実施例において記述記号として用いる演算子については後述する。
【００６１】
メモリ２１３５は、例えば、ＥＰＲＯＭ又はＥＥＰＲＯＭ等のＲＯＭ、ＤＲＡＭ又はＳＲＡＭ等の揮発性メモリ及びＮＶＲＡＭ等の不揮発性メモリであるＲＡＭで構成される。メモリ２１３５は、制御ソフトウェアを記憶する。
【００６２】
出力ポート２１３６は、ＣＰＵ２１３４が出力する信号を受けて所定の値を保持する。出力ポート２１３６が保持する値は、車両２０００を制御するアクチュエータを駆動させるドライバ２１２１から２１２３によって参照される。
【００６３】
ＰＷＭレジスタ２１３７は、ＣＰＵ２１３４が出力する信号を受けて所定の値を保持する。ＰＷＭレジスタ２１３７が保持する値は、ドライバ２１２４から２１２６がＰＷＭ制御を行う際のデュティ比等を変化させる。
【００６４】
コンペアレジスタ２１３８は、ＣＰＵ２１３４が出力する信号を受けて所定の値を保持する。コンペアレジスタ２１３８は、図示を省略するが、比較対象とする他のレジスタの値と異なる値に変化した場合に所定の割込み信号をドライバ２１２７から２１２９へ出力する。
【００６５】
尚、ＣＰＵ２１３４が実行する演算処理は、演算の対象とする演算情報をレジスタ２１３１から２１３３又は２１１６から２１１８（以下単に、レジスタ２１３１等という）に一時的に記憶させる代入演算処理、記憶した演算情報を論理演算装置２１１１が参照する参照演算処理、及び記憶した演算情報を論理演算装置２１１１が論理演算することで実行される数値演算処理を含む。
【００６６】
ここで図３に戻り機器２０００の構成について引き続き説明する。
制御装置２１００は、エンジン２２００及び回転数センサ２８００からエンジンの回転数及び車輪２７０４の回転数によって車両機器２０００の状態を表す状態情報を取得する。次に、制御装置２１００は、取得した状態情報に基づいて機器２０００の挙動を制御する制御情報をエンジン２２００へ出力する。
【００６７】
具体例を挙げて説明すると、制御装置２１００は、回転数センサ２８００から車輪２７０４の回転数を表す状態情報を取得する。次に、取得した状態情報が表す回転数に基づいてエンジン２２００の回転数を制御する制御情報を出力する。その後、制御装置２１００は、上記処理を繰り返すことで、車両機器２０００の挙動を制御する。
【００６８】
エンジン２２００は、例えば、レシプロエンジン又はロータリーエンジンで構成される。エンジン２２００は、制御装置２１００、ミッション２３００、及び図示を省略するが、燃料タンクに接続している。エンジン２２００は、制御装置２１００が出力する制御情報に従った量の燃料を燃料タンクから取得し、取得した燃料を燃焼させることで発生させたトルク等の動力をミッション２３００へ伝達する。
【００６９】
尚、エンジンが発生させたトルクは、ミッション２３００、プロペラシャフト２４００、デフ２５００、並びにドライブシャフト２６０１及び２６０２を介して車輪２７０１から２７０４に伝達される。
【００７０】
また、エンジン２２００は、図示を省略するが、各種のセンサを有する。エンジン２２００は、供給される空気量及び燃料の量、温度、回転数、並びに発生するトルクをセンサにより計測し、計測結果を状態情報として制御装置２１００へ出力する。
【００７１】
車輪２７０１は、例えば、ホイールとタイヤとで構成される。ホイールはドライブシャフト２６０１に接続し、タイヤは路面に接する。よって車輪２７０１は、ドライブシャフト２６０１からトルクを伝達されてドライブシャフト２６０１との接点を中心に路面に接した状態で回転運動を行う。これにより、車輪２７０１を備える車両２０００が路面上を移動する。尚、車輪２７０２から２７０４の構成、接続、及び機能は、車輪２７０１の構成、接続、及び機能とほぼ同様であるので説明を省略する。
【００７２】
よって、制御装置２１００が、エンジン２２００において発生させるトルク等を制御することで車輪２７０１に伝達されるトルクを制御できるため、車両２０００の挙動を制御できる。
【００７３】
回転数センサ２８００は、制御装置２１００に接続している。回転数センサ２８００は、車輪２７０４の回転数を計測し、計測結果を状態情報として制御装置２１００へ出力する。
【００７４】
ここで図１に戻りシミュレーション装置１０００の構成について引き続き説明する。
【００７５】
機器模擬部１１００は、制御模擬部１２００へ模擬した機器の状態を表す状態情報を出力する。次に、機器模擬部１１００は、後述するように、出力した状態情報に基づいて制御模擬部１２００が出力した制御情報を取得する。その後、機器模擬部１１００は、取得した制御情報に基づいて制御される機器を模擬した後に上記処理を繰り返す。
【００７６】
制御模擬部１２００は、機器模擬部１１００に接続する。制御模擬部１２００は、車両機器２０００を構成する制御装置２１００を模擬する。
【００７７】
ここで図５を参照して、制御模擬部１２００の構成について説明する。図５は、制御模擬部１２００の一構成例を表す図である。
【００７８】
図５に示す制御模擬部１２００は、実行模擬部１２１０及びハードウェア模擬部１２２０で構成される。
【００７９】
実行模擬部１２１０は、ハードウェア模擬部１２２０に接続する。実行模擬部１２１０は、車両機器２０００が有する制御装置２１００を構成するＣＰＵ２１３４による制御ソフトウェアが表す演算処理の実行を模擬する。
【００８０】
つまり、実行模擬部１２１０は、後述する実行模擬処理を実行することで、ハードウェア模擬部１２２０から状態情報を取得し、取得した状態情報に対して演算処理の実行を模擬し、模擬した演算処理の結果をハードウェア模擬部１２２０へ出力する。
【００８１】
ハードウェア模擬部１２２０は、実行模擬部１２１０及び機器模擬部１１００に接続する。ハードウェア模擬部１２２０は、車両機器２０００を制御するための制御ソフトウェアを実行する制御装置２１００を構成するハードウェアを模擬する。
【００８２】
具体的には、ハードウェア模擬部１２２０は、図４を参照して説明した入力ポート２１３１、シリアル２１３２、ＡＤ２１３３、出力ポート２１３６、ＰＷＭレジスタ２１３７、及びコンペアレジスタ２１３８で構成されるマイコン周辺リソースを模擬すると共に、マイコン周辺リソースを制御するプラットフォームプログラムの実行を模擬する。
【００８３】
本実施例において、ハードウェア模擬部１２２０は、マイコン周辺リソースを模擬するとして説明するが、これに限定される訳ではなく、例えば、マイコン周辺リソースのみならず入出力回路２１１０及び２１２０をも模擬すると共に、入出力回路２１１０及び２１２０を制御するプラットフォームプログラムの実行をも模擬する構成を採用できる。
【００８４】
ハードウェア模擬部１２２０は、機器模擬部１１００から状態情報を取得し、取得した状態情報を実行模擬部１２１０へ出力する。また、ハードウェア模擬部１２２０は、状態情報に基づいて実行される演算結果を実行模擬部１２１０から取得し、取得した演算結果に基づいて車両機器２０００を制御する制御情報を機器模擬部１１００へ出力する。
【００８５】
ここで図６を参照して、制御模擬部１２００が機器模擬部１１００から状態情報を取得するために行う処理について説明する。図６は、制御模擬部１２００が機器模擬部１１００から状態情報を取得するめに行う処理の一例を概説するための図である。
【００８６】
先ず、機器模擬部１１００は、機器モデルＰＭＰを実行することで、模擬対象とする機器２０００の状態を表す状態情報を制御模擬部１２００へ出力する。尚、機器モデルＰＭＰは、機器２０００を模擬するために実行するプログラムをいう。
【００８７】
次に、制御模擬部１２００を構成するハードウェア模擬部１２２０は、ハードウェアモデルＰＭＨを実行することで、機器模擬部１１００から状態情報を取得する（ステップＳＳ１）。尚、ハードウェアモデルＰＭＨは、制御装置２１００を構成するハードウェアの模擬のみならず、ハードウェア機器を制御する基盤となるインタフェースを提供するプラットフォームプログラムの実行をも模擬するために実行するプログラムをいう。
【００８８】
ここで、機器模擬部１１００が出力する状態情報の種類は、例えば、電圧値等で状態情報を表すアナログ出力、又は、例えば、周波数で状態情報を表すパルス出力を含む。機器模擬部１１００が出力する状態情報の種類は、模擬対象とする機器２０００が出力する状態情報の種類により定まる。
【００８９】
以下、機器模擬部１１００が出力する状態情報がアナログ出力である場合について説明する。
【００９０】
ハードウェア模擬部１２２０は、ステップＳＳ１で取得した状態情報を表す電圧値に対してＬＳＢ（least significant bit）変換を行う。次に、ハードウェア模擬部１２２０は、変換後の値を入出力プログラムＰＤＩ（以下単に、ＩＯプログラム及びＩＯドライバともいう）に与える（ステップＳＳ２）。
【００９１】
尚、ＩＯプログラムＰＤＩは、状態情報及び後述する実行模擬部１２１０が模擬実行する演算処理の結果を、制御模擬部１２００を構成する実行模擬部１２１０とハードウェア模擬部１２２０との間で入出力するプログラムである。
【００９２】
その後、実行模擬部１２１０は、制御ソフトウェアＰＳＣの記述する演算処理を模擬する（ステップＳＳ３−２）。ここで、制御ソフトウェアＰＳＣの記述する演算処理は、仮想レジスタＶＲへ、ＡＤ（analog to digital）変換の開始を表す値を書き込む演算処理であるとする。
【００９３】
仮想レジスタＶＲへ値を書き込む演算処理の実行を模擬した後に、実行模擬部１２１０は、後述する多重定義した他の演算処理に従ってＩＯプログラムＰＤＩを実行する（ステップＳＳ３−３）。
【００９４】
次に、実行模擬部１２１０は、ＩＯプログラムＰＤＩを実行することで、ハードウェア模擬部１２２０から取得したＡＤ変換後の状態情報を仮想レジスタＶＲへ複写する（ステップＳＳ４）。
【００９５】
その後、制御模擬部１２００を構成する実行模擬部１２１０は、仮想レジスタＶＲから、ＡＤ変換後の状態情報を読み込む（ステップＳＳ５）。
【００９６】
尚、機器模擬部１１００、並びに制御模擬部１２００を構成する実行模擬部１２１０及びハードウェア模擬部１２２０は、制御ソフトウェアＰＳＣの実行模擬部１２１０による模擬実行が終了するまでの間、上記ステップＳＳ１からＳＳ５の処理を繰り返す。
【００９７】
尚、制御模擬部１２００は、例えば、ポーリング処理等の処理を実行することで、仮想レジスタＶＲの値の変化を十分に短い周期で検査し、値の変化を検出したというイベントに基づいてＩＯプログラムＰＤＩを起動する実施例が知られている。
【００９８】
しかし、この実施例では、短周期で繰り返し実行される検査処理によって、制御模擬部１２００が制御装置２１００を模擬するために実行する処理、及び機器模擬部１１００が車両機器２０００を模擬するために実行する処理の実行速度が低下するという問題が生じる。
【００９９】
よって、本実施例では、実行模擬部１２１０が、仮想レジスタＶＲの値を変更する演算処理の実行を模擬した後に、ＩＯプログラムＰＤＩを起動する構成を採用している。尚、制御模擬部１２００がＩＯプログラムＰＤＩを起動する処理については後に説明する。
【０１００】
次に、機器模擬部１１００が出力する状態情報がパルス出力である場合について説明する。
【０１０１】
ハードウェア模擬部１２２０は、ステップＳＳ１で取得した状態情報を表す周波数に基づいて、現在の論理レベル及びキャプチャ時刻を取得する。次に、ハードウェア模擬部１２２０は、取得した論理レベル及びキャプチャ時刻とを入出力プログラムＰＤＩに与える（ステップＳＳ２）。
【０１０２】
尚、入出力プログラムＰＤＩは、立てた割り込みフラグを仮想レジスタＶＲに書き込む（ＳＳ３−１）。尚、立てた割り込みフラグは、割り込みするべきである旨を表す。
【０１０３】
その後、実行模擬部１２１０が、制御ソフトウェアＰＳＣの記述する演算処理の実行を模擬する（ステップＳＳ３−２）。ここで、制御ソフトウェアＰＳＣの記述する演算処理は、仮想レジスタＶＲの値を参照して、割り込みフラグが立っているか否かを確認する演算処理であるとする。
【０１０４】
実行模擬部１２１０は、割り込みフラグが立っていると判断した場合には、ＩＯプログラムＰＤＩを実行する（ステップＳＳ３−３）。
【０１０５】
次に、実行模擬部１２１０は、ＩＯプログラムＰＤＩを実行することで、ハードウェア模擬部１２２０から取得した論理レベル及びキャプチャ時刻を仮想レジスタＶＲへ複写する（ステップＳＳ４）。その後、実行模擬部１２１０は、仮想レジスタＶＲから、論理レベル及びキャプチャ時刻を読み込む（ステップＳＳ５）。
【０１０６】
尚、状態情報がアナログ出力される場合と同様に、機器模擬部１１００、並びに制御模擬部１２００を構成する実行模擬部１２１０及びハードウェア模擬部１２２０は、制御ソフトウェアＰＳＣの実行模擬部１２１０による模擬実行が終了するまでの間、上記ステップＳＳ１からＳＳ５の処理を繰り返す。
【０１０７】
これらの構成によれば、多重定義を変更することで、演算対象とする状態情報を入出力する入出力プログラムＰＤＩを容易に変更できる。
【０１０８】
ここで図７を参照して、制御模擬部１２００が制御情報を機器模擬部１１００へ出力するために行う処理について説明する。図７は、制御模擬部１２００が制御情報を機器模擬部１１００へ出力するために行う処理の一例を概説するための図である。
【０１０９】
先ず、制御模擬部１２００を構成する実行模擬部１２１０は、制御ソフトウェアＰＳＣの記述する演算処理を模擬して実行する（ステップＳＣ１）。ここで、制御ソフトウェアＰＳＣの記述する演算処理は、演算対象とする演算情報を仮想レジスタＶＲへ代入する演算処理であるとする。
【０１１０】
また、この演算処理は、機器２０００を模擬した機器模擬部１１００から取得した状態情報に基づいて、機器２０００を制御するために行う演算処理であるとする。
【０１１１】
次に、実行模擬部１２１０は、仮想レジスタＶＲに対応するレジスタ２１３１等の値を変更することで制御装置２１００に生じる影響ＥＣ２を模擬するために、演算処理の結果を引数として与えた上でＩＯプログラムＰＤＩを実行する（ステップＳＣ２）。
【０１１２】
尚、実行模擬部１２１０は、ＩＯプログラムＰＤＩを実行することで、必要な場合には、レジスタ２１３１等の値の変化によって制御装置２１００に生じる影響の一部を模擬する。
【０１１３】
次に、実行模擬部１２１０は、レジスタ２１３１等の値が変化することで生じる制御装置２１００の影響ＥＣ３をハードウェア模擬部１２２０が模擬できるように、演算処理の結果をハードウェア模擬部１２２０へ仲介する（ステップＳＣ３）。この処理は、実行模擬部１２１０が実行するＩＯプログラムＰＤＩが演算結果をハードウェア模擬部１２２０へ出力することで実現される。
【０１１４】
その後、ハードウェア模擬部１２２０は、ハードウェアモデルＰＭＨを実行することで、取得した演算結果に基づいて制御装置２１００を構成するハードウェア等の挙動を模擬し、模擬したハードウェアで構成される制御装置２１００の出力する制御情報を機器模擬部１１００へ出力する（ステップＳＣ４）。
【０１１５】
尚、機器模擬部１１００は、機器モデルＰＭＰを実行することで、取得した制御情報に基づいて制御される機器２０００を模擬する。
【０１１６】
また、機器模擬部１１００、並びに制御模擬部１２００を構成する実行模擬部１２１０及びハードウェア模擬部１２２０は、制御ソフトウェアＰＳＣの実行模擬部１２１０による模擬実行が終了するまでの間、上記ステップＳＣ１からＳＣ４の処理を繰り返す。
【０１１７】
この構成によれば、シミュレーションの対象とする機器の状態に基づいて機器を制御する制御装置２１００を模擬できる。
【０１１８】
次に、図８を参照して、従来の実行模擬部１２１０が制御ソフトウェアを模擬するために実行していた実行模擬処理を表すソースコードについて説明する。図８は、従来の実行模擬処理を表すソースコードの一例を表す図である。
【０１１９】
図８に示すソースファイルＦＳＩは、実行模擬処理を表すソースコードを記述したテキストファイルである。ソースファイルＦＳＩは、仮想レジスタＶＲの値を変更する演算処理を記述する。
【０１２０】
仮想レジスタＶＲの値を変更する演算処理は、仮想レジスタ「stREG.TMD」に対して演算情報「level」を「=」演算（つまり、代入演算）する処理、及び仮想レジスタ「stREG.TOC」に対して、演算情報「0xFFFC」を「&=」演算する演算処理を記述する。
【０１２１】
また、ソースファイルＦＳＩは、演算処理の直後に、演算処理の結果「level」を引数として与えた上でＩＯプログラムＰＤＩ「vIOD_MregIf_CmpSetImm」を実行する処理を記述する。
【０１２２】
尚、実行模擬処理は、制御ソフトウェアＰＳＣが表す処理の全てを含む。しかし、制御ソフトウェアＰＳＣが表す処理は、実行模擬処理に含まれるＩＯプログラムＰＤＩを実行する処理を含まない。
【０１２３】
尚、「&=」演算とは、Ｃ言語、Ｃ＋＋言語、Ｃ＃言語における「&=」演算を表す。つまり例えば、整数型の変数Ａ及びＢに対する２項演算「Ａ&=Ｂ」の場合には、変数Ａ及びＢのオペランドのビットごとの論理積を演算（ＡＮＤ演算）した値を変数Ａに代入する演算を行うことを表す。同様に、ブール型の変数Ａ及びＢに対する２項演算「Ａ&=Ｂ」の場合には、変数Ａ及びＢのオペランドをＡＮＤ演算した値を変数Ａに代入する演算を行うことを表す。
【０１２４】
ここで図９を参照して、従来の実行模擬部１２１０が実行していた実行模擬処理について説明する。図９は、従来の実行模擬部１２１０が制御ソフトウェアを模擬するために実行していた実行模擬処理の一例を表すフローチャートである。
【０１２５】
先ず、実行模擬部１２１０は、仮想レジスタ構造体「stREG」を生成する（ステップＳＴ０１０１）。次に、所定の制御処理（以下単に、前制御処理という）を実行する（ステップＳＴ０１０２）。
【０１２６】
尚、仮想レジスタ構造体「stREG」は、レジスタ２１３１等の値を保持するメンバ変数「stREG.TMD」と、例えば、即値モード（ノーマルモード）等のレジスタ２１３１等を利用するＣＰＵ２１３４のアドレッシングモードを表す情報を保持するメンバ変数「stREG.TOC」とを有する。
【０１２７】
その後、実行模擬部１２１０は、レジスタ２１３１等の値を表すメンバ変数「stREG.TMD」に演算情報「level」を代入する演算処理を実行する（ステップＳＴ０１０３）。次に、実行模擬部１２１０は、仮想レジスタのメンバ変数「stREG.TOC」に対し、演算情報である所定のマスク値「0xFFFC」を「&=」演算する演算処理を実行する（ステップＳＴ０１０４）。 
【０１２８】
尚、所定のマスク値は、変数「stREG.TOC」の値を、ＣＰＵ２１３４のアドレッシングモードが即値モードであることを表す値に変更するために用いられる所定の数値である。
【０１２９】
次に、実行模擬部１２１０は、演算処理の結果「level」を引数として与えてＩＯプログラムＰＤＩであるＩＯドライバを実行する（ステップＳＴ０１０５）。
【０１３０】
その後、実行模擬部１２１０は、所定の制御処理（以下単に、後制御処理という）を実行する（ステップＳＴ０１０６）。次に、実行模擬部１２１０は、実行模擬処理の実行を終了する。
【０１３１】
尚、図９に示す実行模擬処理は、制御ソフトウェアＰＳＣが表す全てのステップを含む。しかし、制御ソフトウェアＰＳＣが表すステップは、実行模擬処理に含まれるＩＯプログラムＰＤＩを実行するステップＳＴ０１０５を含まない。
【０１３２】
よって、従来の実行模擬処理を表すソースコードＦＳＩを作成するためには、制御ソフトウェアＰＳＣを表すソースコードに対して、レジスタ２１３１等の値を変更する演算処理（例えば、ステップＳＴ０１０３及びＳＴ０１０４の処理）の後に、ＩＯプログラムＰＤＩを実行する処理（例えば、ステップ０１０５の処理）を追加しなければならない。
【０１３３】
このため、使用するＩＯプログラムＰＤＩを変更する場合には、変更により生じる影響が追加された処理の全てに及んでしまう。
【０１３４】
よって、本実施例において、制御ソフトウェアＰＳＣが表す演算処理の実行を実行模擬部１２１０が模擬する場合に、演算子の多重定義により定めた他の演算処理に従って演算処理を実行すると共に、実行した演算の結果をハードウェア模擬部１２２０へ入出力するＩＯプログラムＰＤＩを実行することで、実行するＩＯプログラムＰＤＩを容易に変更できる実行模擬処理について説明する。
【０１３５】
ここで図１０を参照して、本実施例における実行模擬処理を記述する実行模擬プログラムの構成について説明する。図１０は、本実施例における実行模擬処理を記述する実行模擬プログラムの一構成例について説明するための図である。
【０１３６】
本実施例における実行模擬処理を表したソースファイルＦＳＩは、制御ソフトウェアのソースファイルＦＳＣ及びレジスタクラスの定義ファイルＦＳＲで構成される。
【０１３７】
制御ソフトウェアのソースファイルＦＳＣは、レジスタクラスの定義ファイルＦＳＲを構成するヘッダファイルをインクルードするように修正されている。
【０１３８】
レジスタクラスの定義ファイルＦＳＲは、レジスタクラスを定義する。ここで、レジスタクラスとは、共通の情報（一般に、属性又はプロパティと呼ばれる）、共通の処理（一般に、操作又はメソッドと呼ばれる）、及び多重定義（一般に、オーバロードと呼ばれる）した演算子のいずれか１つ以上を有するレジスタオブジェクトの概念的な集合をいう。
【０１３９】
レジスタオブジェクトとは、現実に存在するレジスタ２１３１等を表し、レジスタ２１３１等に対して実行する具体的な操作、操作の対象とする具体的な属性、及び多重定義した演算子が表すレジスタ２１３１等に対する具体的な演算処理で構成される。本実施例において生成されたレジスタオブジェクトは仮想レジスタＶＲを構成する。
【０１４０】
つまり、レジスタクラスの定義ファイルＦＳＲは、仮想レジスタＶＲの属性を表す変数、仮想レジスタＶＲの操作処理、及びソースファイルＦＳＣが記述する仮想レジスタＶＲを扱う演算子に関する演算処理に対して、演算子を多重定義することで定まる他の演算処理を記述するソースファイルである。
【０１４１】
尚、多重定義することで定まる他の演算処理は、ハードウェア模擬部１２２０に対する演算処理を行うことで制御ソフトウェアＰＳＣにおけるハードウェア（つまり、マイコン周辺リソース）へ対する入力と出力の少なくとも一方を行う演算処理を模擬する処理と、模擬した演算の結果をハードウェア模擬部１２２０へ出力するＩＯドライバを実行する処理を含む。
【０１４２】
また、レジスタ２１３１等を扱う演算処理は、レジスタ２１３１等に対して演算情報を代入演算する演算処理を含む。また、レジスタクラスが有するプロパティである属性、メソッドである操作、及びオーバロードされた演算子（以下単に、オーバロード演算子という）である多重定義演算子については後に説明する。
【０１４３】
本実施例において、制御ソフトウェアのソースファイルＦＳＣはＣ言語で記述され、レジスタクラスの定義ファイルＦＳＲはＣ＋＋言語で記述されるとして説明する。また、制御ソフトウェアのソースファイルＦＳＣ及びレジスタクラスの定義ファイルＦＳＲは、例えば、ＧＮＵ  Ｃ＋＋  コンパイラ等のコンパイラによって中間ファイル（一般に、オブジェクトファイルともいう）を生成する基礎とされる。
【０１４４】
つまり、制御ソフトウェアのソースファイルＦＳＣに基づいて制御ソフトウェアの中間ファイルＰＭＣが生成され、レジスタクラスの定義ファイルＦＳＲに基づいてレジスタクラスの中間ファイルＰＭＲが生成される。
【０１４５】
ここで、レジスタクラスの中間ファイルＰＭＲは、他の演算処理を実行する手順を表すバイナリファイルである。よって、中間ファイルＰＭＲは、他の演算処理においてハードウェア模擬部１２２０に対する演算処理を行うインタフェースプログラムであるといえる。
【０１４６】
次に、例えば、ＧＮＵ  リンカ  ＬＤ等のリンカによって、制御ソフトウェアの中間ファイルＰＭＣ及びレジスタクラスの中間ファイルＰＭＲ、並びに必要なライブラリプログラムがリンクされることで、本実施例における実行模擬処理を表す実行模擬プログラムＰＳＩが生成される。
【０１４７】
よって、実行模擬プログラムＰＳＩは、制御ソフトウェアの中間ファイルＰＭＣが表す演算処理を、レジスタクラスの中間ファイルＰＭＲが表す多重定義された他の演算処理を用いて表す。
【０１４８】
本実施例では、制御ソフトウェアのソースファイルＦＳＣはＣ言語で記載され、レジスタクラスの定義ファイルＦＳＲはＣ＋＋言語で記載されるとして説明したがこれに限定される訳ではない。例えば、Ｃ＃、Ｊａｖａ（登録商標）、及びＯｂｊｅｃｔ  Ｐａｓｃａｌ等のオブジェクト指向言語であり、かつ演算子の多重定義を許す他の言語を採用できる。
【０１４９】
ここで図１１を参照して、制御ソフトウェアのソースファイルＦＳＣについて再度説明する。図１１は、制御ソフトウェアのソースファイルＦＳＣの一例を表す図である。
【０１５０】
図１１に表す制御ソフトウェアのソースファイルＦＳＣは、図８で説明した実行模擬処理のソースファイルＦＳＩと異なり、レジスタクラスの定義ファイルＦＳＲを構成するヘッダファイル「VRegister.h」をインクルードするための「#include」文が追加されているが、ＩＯプログラムＰＤＩを実行する処理が追加がされていない。
【０１５１】
尚、図１１に示す制御ソフトウェアのソースファイルＦＳＣには、オーバロード演算子（多重定義演算子）「&=」を用いた演算処理「stREG.TOC&=0xFFFC;」が記載されている。
【０１５２】
次に図１２を参照して、レジスタクラスの定義ファイルＦＳＲについて再度説明する。図１２は、レジスタクラスの定義ファイルＦＳＲの一例を表す図である。
【０１５３】
図１２に示すレジスタクラスの定義ファイルＦＳＲは、操作（メソッド）、多重定義演算子（オーバロード演算子）、及び属性（プロパティ）を定義する。定義ファイルＦＳＲが定義する操作（メソッド）は、レジスタオブジェクトの生成時に実行される操作である生成操作（一般に、コンストラクタと呼ばれる）、レジスタの値又はモードを表す属性（プロパティ）（以下単に、レジスタ属性という）の値を設定変更する操作（メソッド）、レジスタ属性の値を取得する操作、及びコールバック関数の所在を表す属性（プロパティ）（以下単に、コールバック属性という）の値を設定変更する操作（メソッド）（以下単に、コールバック属性設定操作という）を含む。
【０１５４】
尚、本実施例において、コールバック関数とは、コールバック属性設定操作（コールバックプロパティ設定メソッド）を呼び出す際に引数として与えられるポインタで指定される関数であって、ＩＯプログラムＰＤＩを実行する処理を表す関数をいう。
【０１５５】
また、コールバック属性設定操作（コールバックプロパティ設定メソッド）を実行することで指定されたコールバック関数の所在（アドレス）は、コールバック属性（コールバックプロパティ）に保存されるために、一旦、コールバック属性設定操作を実行した後に改めてコールバック関数を指定する必要は無い。
【０１５６】
定義ファイルＦＳＲが定義する多重定義演算子は、「=」演算子について多重定義した演算子（以下単に、「=」多重定義演算子という）及び「&=」演算子について多重定義した演算子（以下単に、&=多重定義演算子という）を含む。尚、「&=」多重定義演算子が定める処理については後述し、「=」多重定義演算子が定める処理については説明を省略する。
【０１５７】
定義ファイルＦＳＲが定義する属性は、レジスタ属性及びコールバック属性を含む。尚、レジスタ属性は「mV」という変数名で表される。
【０１５８】
本実施例では、記述記号「=」を用いる代入演算及び「&=」演算について多重定義を行う場合について説明するが、これに限定される訳ではない。例えば、「=&」演算、「+」演算、「-」演算、「*」演算、「/」演算、「%」演算、「&」演算、「|」演算、「^」演算、「~」演算、「<」演算、「>」演算、「=+」演算、「+=」演算、「-=」演算、「=-」演算、「=*」演算、「*=」演算、「=/」演算、「/=」演算、「=%」演算、「%=」演算、「=|」演算、「|=」演算、「=^」演算、「^=」演算、「=~」演算、「~=」演算、「=<」演算、「<=」演算、「=>」演算、「>=」演算、「<<」演算、「>>」演算、「++」演算、「--」演算、及び「??」演算等の制御ソフトウェアのソースファイルＦＳＣを記述するために用いる演算子であって、多重定義できる他の演算子を採用することができる。
【０１５９】
次に図１３を参照して、実施例１において実行模擬部１２１０が実行する実行模擬処理について説明する。図１３は、実施例１において、実行模擬部１２１０が実行する実行模擬処理について説明する。
【０１６０】
先ず、実行模擬部１２１０は、仮想レジスタ構造体「stREG」を生成する処理（以下単に、生成操作処理という）を実行する（ステップＳＴ０２０１）。尚、生成操作処理については後述する。
【０１６１】
また、仮想レジスタ構造体「stREG」を構成するメンバ変数は、定義ファイルＦＳＲが定めるレジスタクラス型の変数である。よって、生成操作処理は、図１２を参照して説明した生成操作を表す処理をいう。また、仮想レジスタ構造体「stREG」は、レジスタの値を表すTMD変数及びモードを表すTOC変数をメンバ変数として有する。
【０１６２】
次に、実行模擬部１２１０は、前制御処理を実行する（ステップＳＴ０２０２）。尚、ステップＳＴ０２０２の処理は、図９を参照して説明したステップＳＴ０１０２の処理と同様であるため説明を省略する。
【０１６３】
その後、実行模擬部１２１０は、仮想レジスタＶＲの値を表すメンバ変数「stREG.TMD」及び 演算情報「level」について、多重定義された「=」演算子が定める処理（以下単に、「=」多重演算処理という）を実行する（ステップＳＴ０２０３）。
【０１６４】
次に、実行模擬部１２１０は、モードを表す仮想レジスタＶＲのメンバ変数「stREG.TOC」及び 所定のマスク値「0xFFFC」について、多重定義された「&=」演算子が定める処理（以下単に、「&=」多重演算処理ともいう）を実行する（ステップＳＴ０２０４）。
【０１６５】
その後、実行模擬部１２１０は、図９を参照して説明したステップＳＴ０１０５の処理を実行することなく、後制御処理を実行する（ステップＳＴ０２０５）。尚、ステップＳＴ０２０５の処理は、図９を参照して説明したステップＳＴ０１０６の処理と同様であるため説明を省略する。次に、実行模擬部１２１０は、実行模擬の実行を終了する。
【０１６６】
次に図１４を参照して、実行模擬部１２１０が実行する生成操作処理について説明する。図１４は、実行模擬部１２１０が実行する生成操作処理の一例を表すフローチャートである。
【０１６７】
先ず、実行模擬部１２１０は、使用する関数の所在を表すポインタを引数として与えたコールバック属性設定操作（コールバックプロパティ設定メソッド）を実行することで、使用する関数の所在（アドレス）を表す情報をコールバック属性（コールバックプロパティ）に設定する（ステップＳＴ０３０１）。
【０１６８】
この構成によれば、入出力プログラムを実行する手順を表すコール・バック関数を動的に変更できる。
【０１６９】
次に、実行模擬部１２１０は、レジスタ属性「mV」を初期化する（ステップＳＴ０３０２）。その後、実行模擬部１２１０は、生成操作処理の実行を終了する。
【０１７０】
ここで図１５を参照して、実行模擬部１２１０が実行する多重演算処理について説明する。図１５は、実行模擬部１２１０が実行する多重演算処理の一例を表すフローチャートである。尚、図１５が表す多重演算処理は、ステップＳＴ０２０４で実行する「&=」多重演算処理の一例である。
【０１７１】
先ず、実行模擬部１２１０は、演算対象とするマスク値「0xFFFC」を引数をして取得し、取得した値をテンポラリ変数「value」に入力する（ステップＳＴ０４０１）。
【０１７２】
次に、実行模擬部１２１０は、現在のレジスタ属性「mV」とマスク値「0xFFFC」とを「&」演算した演算結果をレジスタ属性「mV」に代入する代入演算を実行する（ステップＳＴ０４０２）。尚、実行模擬部１２１０は、レジスタ属性に演算結果を代入するために、レジスタ属性の値を設定変更する操作を実行する。
【０１７３】
その後、実行模擬部１２１０は、コールバック属性（コールバックプロパティ）が所在（アドレス）を表すコールバック関数を実行する（ステップＳＴ０４０３）。次に、実行模擬部１２１０は、多重演算処理の実行を終了する。尚、コールバック関数が表す処理をコールバック処理という。
【０１７４】
この構成によれば、入出力プログラムを実行する手順を表すコール・バック関数を変更することで、実行する入出力プログラムを容易に変更できる。
【０１７５】
次に図１６を参照して、実行模擬部１２１０が実行するコールバック処理について説明する。図１６は、実行模擬部１２１０が実行するコールバック処理の一例を表すフローチャートである。
【０１７６】
先ず、実行模擬部１２１０は、レジスタ属性（レジスタプロパティ）「mV」の表す値を取得する（ステップＳＴ０５０１）。尚、実行模擬部１２１０は、レジスタ属性「mV」の表す値を取得するために、レジスタ属性の値を取得する操作を実行する。
【０１７７】
次に、実行模擬部１２１０は、模擬対象とする制御装置２１００を構成するＣＰＵ２１３４のアドレッシングモードが即値モードであるか否かを判断する（ステップＳＴ０５０２）。実行模擬部１２１０は、即値モードであると判断する場合には、ステップＳＴ０５０３の処理を実行し、そうでない場合には実行模擬処理の実行を終了する。
【０１７８】
尚、即値モードであるか否かの判断は、レジスタ属性「mV」の表す値が、マスク値「0xFFFC」でマスクされた値（つまり、下位２ビットが双方とも０である値）であるか否かによって判断される。
【０１７９】
ステップＳＴ０５０２において、実行模擬部１２１０は、即値モードであると判断した場合には、レジスタの値を表すメンバ変数ＴＭＤの値「level」（つまり、メンバ変数ＴＭＤに演算情報「level」を代入演算した結果の値）を取得し、取得した値「level」をＩＯプログラムであるＩＯドライバＰＤＩの引数として与えた上で実行する（ステップＳＴ０５０３）。その後、実行模擬部１２１０は、コールバック処理の実行を終了する。
【０１８０】
つまり、実行模擬部１２１０は、「&=」多重演算処理という多重定義した他の演算処理に従って模擬対象とする「&=」演算処理を模擬するとともに、演算処理の結果「level」をハードウェア模擬部１２２０へ入出力する入出力プログラムＰＤＩを実行する。
【０１８１】
この構成によれば、多重定義した他の演算処理に従ってインタフェースプログラムを実行するために、実行速度を低下させることがないだけでなく、多重定義の変更により演算処理を行うインタフェースプログラムを容易に変更できる。
【０１８２】
上記実施例において、機器２０００は、乗用車、バス、及びトラック等の車両で構成されるとして説明したが、これに限定される訳ではない。例えば、機器２０００は、原動機付自転車、軽車両、及びトロリーバス、並びに戦車及び装甲車等の軍用車両で構成される実施例を採用できる。また、機器２０００は、汽車、列車、及び電車等の車両、航空機、船舶、電子機器、及び機械設備で構成される実施例を採用できる。
【０１８３】
この構成によれば、車両、航空機、船舶、電子機器、及び機械設備等を実際に用いることなく、電子制御ユニットが演算情報をレジスタへ入力して行う制御を模擬できる。
【０１８４】
本実施例においては、機器模擬部１１００が機器模擬手段に相当し、実行模擬部１２１０が実行模擬手段に相当し、ハードウェア模擬部１２２０がハードウェア模擬手段に相当する。
【０１８５】
以下、本発明の第２の実施形態について図面を参酌しながら説明する。
【実施例２】
【０１８６】
第２の実施例においては、保護例外が発生した場合に実行するよう定めた例外時処理に従ってＩＯプログラムＰＤＩを実行する実行模擬部を備えるシミュレーション装置について説明する。
【０１８７】
ここで例外とは、プログラムが表す実行手順を強制的に中断し、他の処理を実行する切欠となる事象(一般には、エクセプションという)をいい、保護例外及び実施例３で説明する算術例外を含む。
【０１８８】
また保護例外は、参照及び変更を禁止される領域に配置されることで、実行模擬部による参照又は変更が制限される属性を有する情報に対して演算処理を実行することにより生じる例外をいう。尚、実行模擬部による参照及び変更を禁止される領域は、例えば、ＯＳ（Operating System）の提供するメモリ管理機能により管理される記憶領域であって、ＯＳを構成するシステムプログラムの実行に用いる領域を含む。
【０１８９】
尚、実施例２において説明するシミュレーション装置は、実施例１で説明したシミュレーション装置１０００とほぼ同様の構成を有するため、以下主に相違点について説明する。また、装置番号は、説明の便宜のために同一の番号を用いる。
【０１９０】
先ず図１７を参照して、実施例２において実行模擬部１２１０が実行する実行模擬処理のソースファイルについて説明する。図１７は、実施例２において、実行模擬部１２１０が実行する実行模擬処理のソースファイルの一例を表す図である。
【０１９１】
図１７に示す実行模擬処理のソースファイルＦＳＩには、制御ソフトウェアのソースファイルＦＳＣに対して所定の例外時処理が追記されている。例外時処理は、実行模擬部１２１０が、ソースファイルＦＳＣの表す制御処理（いわゆるメイン関数が表す処理）を実行することで発生した例外を取得した場合に実行する所定の処理である。また、本実施例では、例外時処理はコールバック関数を呼び出す処理として定められている。
【０１９２】
また、ソースファイルＦＳＩには、仮想レジスタＶＲを表す変数を、実行模擬部１２１０が値の参照及び変更を制限される記憶領域に配置する処理が追記されている。
【０１９３】
ここで図１８を参照して、実施例２において、制御装置２１００が実行する制御処理について説明する。図１８は、実施例２において、制御装置２１００が実行する制御処理の一例を表すフローチャートである。
【０１９４】
先ず、制御装置２１００は、仮想レジスタ構造体を生成する（ステップＳＴ０６０１）。尚、この仮想レジスタ構造体は、メンバ変数ＧＴＭＣ及びｂｂｂを有する。次に、制御装置２１００は、仮想レジスタ構造体を書込可能な記憶領域に配置する（ステップＳＴ０６０２）。
【０１９５】
その後、制御装置２１００は、前制御処理を実行する（ステップＳＴ０６０３）。尚、ステップＳＴ０６０３の処理は、図９を参照して説明したステップＳＴ０１０２の処理と同様であるため説明を省略する。
【０１９６】
次に、制御装置２１００は、仮想レジスタのメンバ変数ＧＴＭＣに値「0x80」を書込む演算処理（つまり代入演算処理）を行う（ステップＳＴ０６０４）。次に、制御装置２１００は、後制御処理を実行する（ステップＳＴ０６０５）。その後、制御装置２１００は、制御処理の実行を終了する。尚、ステップＳＴ０６０５の処理は、図９を参照して説明したステップＳＴ０１０６の処理と同様であるため説明を省略する。
【０１９７】
次に図１９を参照して、実施例２において、実行模擬部１２１０が実行する実行模擬処理について説明する。図１９は、実施例２において、実行模擬部１２１０が実行する実行模擬処理の一例を表すフローチャートである。
【０１９８】
先ず、実行模擬部１２１０は、ステップＳＴ０７０１の処理を実行する（ステップＳＴ０７０１）。尚、ステップＳＴ０７０１の処理は、図１８を参照して説明したステップＳＴ０６０１の処理と同様であるので説明を省略する。
【０１９９】
次に、実行模擬部１２１０は、仮想レジスタ構造体を実行模擬部１２１０が書込不能な記憶領域に配置する（ステップＳＴ０７０２）。その後、実行模擬部１２１０は、前制御処理を実行する（ステップＳＴ０７０３）。尚、ステップＳＴ０７０３の処理は、図１８を参照して説明したステップＳＴ０６０３の処理と同様であるため説明を省略する。
【０２００】
次に、実行模擬部１２１０は、仮想レジスタのメンバ変数ＧＴＭＣに値「0x80」を書込む演算処理（つまり代入演算処理）を行う（ステップＳＴ０７０４）。ここで、仮想レジスタが実行模擬部１２１０による値の変更を制限する領域に配置されているために例外が発生する。
【０２０１】
この構成によれば、演算対象とする情報の属性を変更することで容易に例外を発生させることができる。
【０２０２】
次に、実行模擬部１２１０は、発生した例外を取得し、ステップＳＴ０６０５で説明した後制御処理を行うことなく、例外が発生した場合に実行するよう定めた例外時処理であるコールバック処理を実行する（ステップＳＴ０７０５）。その後、実行模擬部１２１０は、実行模擬処理の実行を終了する。
【０２０３】
上記ステップＳＴ０７０４の処理では、実行模擬部１２１０が書込みを制限される領域に配置された仮想レジスタに対して、実行模擬部１２１０が書込みを行う処理を実行することで例外を発生させるとして説明したが、これに限定される訳ではなく、参照が制限される領域に配置された仮想レジスタに対して、実行模擬部１２１０が参照を行う処理を実行することで例外を発生させる構成を採用できる。
【０２０４】
次に図２０を参照して、実施例２において実行模擬部１２１０が実行するコールバック処理について説明する。図２０は、実施例２において実行模擬部１２１０が実行するコールバック処理の一例を表すフローチャートである。
【０２０５】
先ず、実行模擬部１２１０は、模擬対象とした制御装置２１００を構成するレジスタ２１３１等が、コンペアレジスタであるか否かを判断する（ステップＳＴ０８０１）。実行模擬部１２１０は、レジスタ２１３１等がコンペアレジスタであると判断する場合にはステップＳＴ０８０４の処理を、そうでない場合にはステップＳＴ０８０２の処理を実行する。
【０２０６】
ステップＳＴ０８０１において、実行模擬部１２１０は、レジスタ２１３１等がコンペアレジスタでないと判断した場合には、模擬対象とする制御装置２１００がパルス幅変調（Pulse Width Modulation）ＰＷＭを行う装置であるか否かを判断する（ステップＳＴ０８０２）。実行模擬部１２１０は、ＰＷＭを行う装置であると判断する場合にはステップＳＴ０８０３の処理を実行し、そうでない場合にはコールバック処理の実行を終了する。
【０２０７】
ステップＳＴ０８０２において、実行模擬部１２１０は、制御装置２１００がＰＷＭを行う装置であると判断した場合には、制御装置２１００がＰＷＭを行う装置である場合に使用する所定のＩＯドライバを実行する（ステップＳＴ０８０３）。その後、実行模擬部１２１０は、コールバック処理の実行を終了する。
【０２０８】
ステップＳＴ０８０１において、実行模擬部１２１０は、レジスタ２１３１等がコンペアレジスタであると判断した場合には、レジスタ２１３１等がコンペアレジスタである場合に使用する所定のＩＯドライバを実行する（ステップＳＴ０８０４）。その後、実行模擬部１２１０は、コールバック処理の実行を終了する。
【０２０９】
この構成によれば、例外時に実行するよう定めた処理に従って入出力プログラムを実行するために、実行速度を低下させることがないだけでなく、例外時処理を変更することで実行する入出力プログラムを容易に変更できる。
【０２１０】
以下、本発明の第３の実施形態について図面を参酌しながら説明する。
【実施例３】
【０２１１】
第３の実施例においては、算術例外が発生した場合に実行するよう定めた例外時処理に従ってＩＯプログラムＰＤＩを実行する実行模擬部を備えるシミュレーション装置について説明する。
【０２１２】
ここで算術例外は、オーバ・フロー又はアンダ・フローを発生させる演算処理、所定の数値を値０で除算する演算処理（以下単に、０除算処理という）、並びに浮動小数点例外を発生させる演算処理を実行することで生じる例外を含む。
【０２１３】
尚、実施例３において説明するシミュレーション装置は、実施例１で説明したシミュレーション装置１０００とほぼ同様の構成を有するため、以下主に相違点について説明する。また、装置番号は、説明の便宜のために同一の番号を用いる。
【０２１４】
次に図２１を参照して、実施例３において、実行模擬部１２１０が実行する実行模擬処理について説明する。図２１は、実施例３において、実行模擬部１２１０が実行する実行模擬処理の一例を表すフローチャートである。
【０２１５】
先ず、実行模擬部１２１０は、ステップＳＴ０９０１からＳＴ０９０３の処理を実行する（ステップＳＴ０９０１からＳＴ０９０３）。ステップＳＴ０９０１からＳＴ０９０３の処理は、図１３を参照して説明したステップＳＴ０２０１からＳＴ０２０３の処理と同様であるので説明を省略する。
【０２１６】
ステップＳＴ０９０３の処理を実行した後に、実行模擬部１２１０は、仮想レジスタのメンバ変数「stREG.TOC」及び 所定のマスク値「0xFFFC」について、「&=」多重演算処理を実行する（ステップＳＴ０９０４）。ここで、後述するように実行模擬部１２１０は、実施例３における「&=」多重演算処理において０除算処理を実行する。よって、算術例外が発生する。
【０２１７】
次に、実行模擬部１２１０は、発生した例外を取得し、図１３を参照して説明したステップＳＴ０２０５の後制御処理を行うことなく、例外が発生した場合に実行するよう定めた例外時処理を実行する（ステップＳＴ０９０５）。尚、所定の例外時処理は、図１５を参照して説明したステップＳＴ０４０３の処理と同様であるコールバック処理として定めている。その後、実行模擬部１２１０は、実行模擬処理の実行を終了する。
【０２１８】
次に図２２を参照して、実施例３において実行模擬部１２１０が実行する多重演算処理について説明する。図２２は、実施例３において実行模擬部１２１０が実行する多重演算処理処理の一例を表すフローチャートである。尚、図２１が表す多重演算処理は、ステップＳＴ０９０４で実行する「&=」多重演算処理の一例である。
【０２１９】
先ず、実行模擬部１２１０は、ステップＳＴ１００１及びＳＴ１００２の処理を実行する（ステップＳＴ１００１及びＳＴ１００２）。尚、ステップＳＴ１００１及びＳＴ１００２の処理は、図１５を参照して説明したステップＳＴ０４０１及びＳＴ０４０２の処理と同様であるので説明を省略する。
【０２２０】
次に、実行模擬部１２１０は、所定の数値を値０で除算する０除算処理を実行することで算術例外を発生させる（ステップＳＴ１００３）。その後、実行模擬部１２１０は、多重演算処理の実行を終了する。
【０２２１】
この構成によれば、例外時に実行するよう定めた処理に従って入出力プログラムを実行するために、実行速度を低下させることがないだけでなく、例外時処理を変更することで実行する入出力プログラムを容易に変更できる。
【０２２２】
尚、上記ステップＳＴ１００３において、実行模擬部１２１０が０除算処理を実行する場合について説明したが、これに限定される訳ではない。例えば、実行模擬部１２１０がオーバ・フロー又はアンダ・フローを発生させる演算処理、並びに浮動小数点例外を発生させる演算処理を実行することで算術例外を発生させる構成を採用し得る。
【０２２３】
この構成によれば、数値演算を行うことで容易に例外を発生させることができる。
【０２２４】
シミュレーション装置１０００は、演算部１０１０がＲＯＭ１０２０、ＲＡＭ１０３０、外部記憶部１０４０の少なくともひとつに格納されたプログラムを実行することによって実現される。また、このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供できる。
【０２２５】
以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【０２２６】
上記実施形態では、外部記憶装置はハードディスク（Hard Disk）で構成されるとして説明したが、これに限定されるわけではなく、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ−ＲＯＭ（Digital Versatile Disk Read Only Memory）、ＤＶＤ−ＲＡＭ（Digital Versatile Disk Random Access Memory）、ＭＯ（magneto-optic）、及び、フラッシュメモリ（flash memory）で構成される実施形式を採用できる。
【図面の簡単な説明】
【０２２７】
【図１】本発明に係るシミュレーション装置の一実施形態を示す機能ブロック図である。
【図２】シミュレーション装置のハードウェア構成の一例を表す図である。
【図３】機器模擬部が模擬する機器の一例について説明するための図である。
【図４】制御装置のハードウェア構成の一例を表す図である。
【図５】制御模擬部の一構成例を表す図である。
【図６】制御模擬部が機器模擬部から状態情報を取得するめに行う処理の一例を概説するための図である。
【図７】制御模擬部が制御情報を機器模擬部へ出力するために行う処理の一例を概説するための図である。
【図８】従来の実行模擬部が実行していた実行模擬処理を表すソースコードの一例を表す図である。
【図９】従来の実行模擬部が実行していた実行模擬処理の一例を表すフローチャートである。
【図１０】実施例１において、実行模擬処理を表す実行模擬プログラムの一構成例について説明するための図である。
【図１１】制御ソフトウェアのソースファイルの一例を表す図である。
【図１２】レジスタクラスの定義ファイルの一例を表す図である。
【図１３】実施例１において、実行模擬部が実行する実行模擬処理の一例を表すフローチャートである。
【図１４】実行模擬部が実行する生成操作処理の一例を表すフローチャートである。
【図１５】実行模擬部が実行する多重演算処理の一例を表すフローチャートである。
【図１６】実行模擬部が実行するコールバック処理の一例を表すフローチャートである。
【図１７】実施例２において、実行模擬部が実行する実行模擬処理のソースファイルの一例を表す図である。
【図１８】実施例２において、制御装置が実行する制御処理の一例を表すフローチャートである。
【図１９】実施例２において、実行模擬部が実行する実行模擬処理の一例を表すフローチャートである。
【図２０】実施例２において、実行模擬部が実行するコールバック処理の一例を表すフローチャートである。
【図２１】実施例３において、実行模擬部が実行する実行模擬処理の一例を表すフローチャートである。
【図２２】実施例３において、実行模擬部１２１０が実行する多重演算処理処理の一例を表すフローチャートである。
【符号の説明】
【０２２８】
１０００…シミュレーション装置        １０１０…演算部                      
１０２０…ＲＯＭ                      １０３０…ＲＡＭ                      
１０４０…外部記憶部                  １０５０…バス                        
１１００…機器模擬部（機器模擬手段）  １２００…制御模擬部                  
１２１０…実行模擬部（実行模擬手段）  
１２２０…ハードウェア模擬部（ハードウェア模擬手段）
２０００…車両（プラント／機器）      ２１００…制御装置（ＥＣＵ）            
２１１０，２１２０…入出力回路        ２１１１…外付ＡＤＣ                  
２１２１〜９…ドライバ                ２１３０…組込み用マイコン            
２１３０…組込み用マイコン            ２１３１…入力ポート                  
２１３２…シリアル                    ２１３３…ＡＤ                        
２１３４…ＣＰＵ（演算部）            ２１３５…メモリ                      
２１３６…出力ポート                  ２１３７…ＰＷＭ                      
２１３８…コンペア                    ２１３９…内部バス                    
２２００…エンジン                    ２３００…ミッション                  
２４００…プロペラシャフト            ２５００…デフ                        
２６０１，２…ドライブシャフト        ２７０１〜４…車輪                    
２８００…回転数センサ                ＣＬＲ…レジスタクラス                
ＦＳＣ…制御ソフトウェアのソースファイル
ＦＳＩ…実行模擬処理のソースファイル  
ＦＳＲ…レジスタクラスの定義ファイル  
ＰＤＩ…ＩＯドライバ（入出力プログラム）
ＰＭＣ…制御ソフトウェアの中間ファイル
ＰＭＨ…ハードウェアモデル            ＰＭＰ…車両モデル                    
ＰＭＲ…レジスタクラスの中間ファイル（インタフェースプログラム）  
ＰＳＣ…制御ソフトウェア              
ＰＳＩ…実行模擬プログラム            ＶＲ…仮想レジスタ                    
【図１】
2009211568.tif 000003
【図２】
2009211568.tif 000004
【図３】
2009211568.tif 000005
【図４】
2009211568.tif 000006
【図５】
2009211568.tif 000007
【図６】
2009211568.tif 000008
【図７】
2009211568.tif 000009
【図８】
2009211568.tif 000010
【図９】
2009211568.tif 000011
【図１０】
2009211568.tif 000012
【図１１】
2009211568.tif 000013
【図１２】
2009211568.tif 000014
【図１３】
2009211568.tif 000015
【図１４】
2009211568.tif 000016
【図１５】
2009211568.tif 000017
【図１６】
2009211568.tif 000018
【図１７】
2009211568.tif 000019
【図１８】
2009211568.tif 000020
【図１９】
2009211568.tif 000021
【図２０】
2009211568.tif 000022
【図２１】
2009211568.tif 000023
【図２２】
2009211568.tif 000024