(57)【要約】【課題】モデルベース開発を行う場合にあって、制御プログラムや制御モデルの異常の有無の検査を簡易に行う。【解決手段】自動コード生成部１２は、制御モデルを入力し、これからＣ言語で記述された制御プログラムを生成して出力する。対応情報作成部１６は、上記自動コード生成部１２が制御プログラムを生成するに際して同自動コード生成部１２の有する情報に基づき、制御モデルと制御プログラムとの対応関係を表す対応情報を作成する。シミュレーション部２０は、制御モデルを入力し、その動作をシミュレーションする。また、プログラム実行部２２は、上記制御プログラムを入力し、これを実行するものである。同期部２６は、上記対応情報に基づきシミュレーション部２０及びプログラム実行部２２の動作結果を同期（関連付け）させる。【選択図】        図２
2004280786.tif 000002
【特許請求の範囲】
【請求項１】
制御要求仕様が要求仕様記述言語にて記述された制御モデルから所定のプログラム言語にて記述された制御プログラムを自動生成する自動コード生成手段を用いて該所定のプログラム言語にて記述された制御プログラムを検査する制御プログラムの検査方法において、
前記制御モデルの挙動をシミュレーションするシミュレーション手段の動作結果と前記制御プログラムを実行するプログラム実行手段の動作結果とのそれぞれ対応する動作結果毎にこれらを関連付けして出力して、前記制御モデル及び前記制御プログラムの少なくとも一方の異常の有無を検査する
ことを特徴とする制御プログラムの検査方法。
【請求項２】
前記関連付けが、前記自動コード生成手段による制御プログラムの自動生成に際して取得される前記制御モデルと該制御モデルから生成される制御プログラムとの対応関係を表す対応情報に基づいて行われる
請求項１記載の制御プログラムの検査方法。
【請求項３】
前記関連付けが、前記制御モデル及び前記制御プログラムのいずれか一方に対して動作の停止箇所を指定するブレークポイントが設定されることに基づき、他方に対しても前記対応情報に基づきその対応するブレークポイントが設定されることによって行われる
請求項２記載の制御プログラムの検査方法。
【請求項４】
前記ブレークポイントが、前記制御モデルを構成する各機能ブロック毎に設定可能とされる
請求項３記載の制御プログラムの検査方法。
【請求項５】
前記各動作結果についてのそれぞれ関連付けされた動作結果の出力が、前記プログラム実行手段により前記制御プログラムを１行ずつ実行及び停止させることによって行われる
請求項２記載の制御プログラムの検査方法。
【請求項６】
請求項２〜５のいずれかに記載の制御プログラムの検査方法において、
前記異常の有無の検査が、前記関連付けされた前記シミュレーション手段の動作結果と前記プログラム実行手段の動作結果とを逐次比較する比較手段によって行われる
ことを特徴とする制御プログラムの検査方法。
【請求項７】
前記比較手段によるシミュレーション手段の動作結果と前記プログラム実行手段の動作結果との逐次比較が、前記対応情報に基づく前記制御モデルのシミュレーション順序と前記制御プログラムの実行順序との比較として行われる
請求項６記載の制御プログラムの検査方法。
【請求項８】
前記比較手段によるシミュレーション手段の動作結果と前記プログラム実行手段の動作結果との逐次比較が、前記対応情報に基づき前記制御モデルのシミュレーションによって演算される変数値と前記制御プログラムの実行によって演算される変数値との比較として行われる
請求項６又は７記載の制御プログラムの検査方法。
【請求項９】
前記対応情報に基づく前記制御モデルのシミュレーションによって演算される変数値と前記制御プログラムの実行によって演算される変数値との比較による異常の有無の検査が、前記制御モデルのシミュレーションによって演算される変数値と前記制御プログラムの実行によって演算される変数値との差が許容範囲内にないか否かによって行われる
請求項８記載の制御プログラムの検査方法。
【請求項１０】
請求項６〜９のいずれかに記載の制御プログラムの検査方法において、
前記比較手段により異常がある旨の判断がなされたとき、その時点での前記制御モデルのシミュレーション箇所と前記制御プログラムの実行箇所とを前記検査の結果として出力する
ことを特徴とする制御プログラムの検査方法。
【請求項１１】
請求項１〜１０のいずれかに記載の制御プログラムの検査方法において、
前記検査に伴って前記制御モデルのシミュレーション及び前記制御プログラムの実行が停止されるとき、前記制御モデルのシミュレーションによって演算される変数値の停止箇所において保持されている値及び前記制御プログラムの実行によって演算される変数値の停止箇所において保持されている値の少なくとも一方を変更可能とする
ことを特徴とする制御プログラムの検査方法。
【請求項１２】
請求項１〜１１のいずれかに記載の制御プログラムの検査方法において、
少なくとも前記制御モデルの挙動をシミュレーションするシミュレーション手段の動作結果と前記制御プログラムを実行するプログラム実行手段の動作結果とを表示手段に出力して可視表示させる
ことを特徴とする制御プログラムの検査方法。
【請求項１３】
制御要求仕様が要求仕様記述言語にて記述された制御モデルから所定のプログラム言語にて記述された制御プログラムを自動生成する自動コード生成手段を用いて該所定のプログラム言語にて記述された制御プログラムを検査する制御プログラムの検査装置において、
前記制御モデルの挙動をシミュレーションするシミュレーション手段の動作結果と前記制御プログラムを実行するプログラム実行手段の動作結果とのそれぞれ対応する動作結果毎にこれらを関連付けして出力する同期手段を備え、これら出力される動作結果に基づいて前記制御モデル及び前記制御プログラムの少なくとも一方の異常の有無を検査する
ことを特徴とする制御プログラムの検査装置。
【請求項１４】
前記同期手段は、前記自動コード生成手段による制御プログラムの自動生成に際して取得される前記制御モデルと該制御モデルから生成される制御プログラムとの対応関係を表す対応情報に基づいて前記関連付けを行う
請求項１３記載の制御プログラムの検査装置。
【請求項１５】
前記同期手段は、前記制御モデル及び前記制御プログラムのいずれか一方に対して動作の停止箇所を指定するブレークポイントが設定されることに基づき、他方に対しても前記対応情報に基づきその対応するブレークポイントを設定することによって前記関連付けを行う
請求項１４記載の制御プログラムの検査装置。
【請求項１６】
前記ブレークポイントが、前記制御モデルを構成する各機能ブロック毎に設定可能とされる
請求項１５記載の制御プログラムの検査装置。
【請求項１７】
前記同期手段による各動作結果の出力が、前記プログラム実行手段により前記制御プログラムを１行ずつ実行及び停止させることによって行われる
請求項１４記載の制御プログラムの検査装置。
【請求項１８】
請求項１４〜１７のいずれかに記載の制御プログラムの検査装置において、
前記同期手段により関連付けされる前記シミュレーション手段の動作結果と前記プログラム実行手段の動作結果とを逐次比較することで前記異常の有無の検査を行う比較手段をさらに備える
ことを特徴とする制御プログラムの検査装置。
【請求項１９】
前記比較手段によるシミュレーション手段の動作結果と前記プログラム実行手段の動作結果との逐次比較が、前記対応情報に基づく前記制御モデルのシミュレーション順序と前記制御プログラムの実行順序との比較として行われる
請求項１８記載の制御プログラムの検査装置。
【請求項２０】
前記比較手段によるシミュレーション手段の動作結果と前記プログラム実行手段の動作結果との逐次比較が、前記対応情報に基づき前記制御モデルのシミュレーションによって演算される変数値と前記制御プログラムの実行によって演算される変数値との比較として行われる
請求項１８又は１９記載の制御プログラムの検査装置。
【請求項２１】
前記対応情報に基づく前記制御モデルのシミュレーションによって演算される変数値と前記制御プログラムの実行によって演算される変数値との比較による異常の有無の検査が、前記制御モデルのシミュレーションによって演算される変数値と前記制御プログラムの実行によって演算される変数値との差が許容範囲内にないか否かによって行われる
請求項２０記載の制御プログラムの検査装置。
【請求項２２】
請求項１８〜２１のいずれかに記載の制御プログラムの検査装置において、
前記比較手段は、異常がある旨の判断がなされたとき、その時点での前記制御モデルのシミュレーション箇所と前記制御プログラムの実行箇所とを前記検査の結果として出力するものである
ことを特徴とする制御プログラムの検査装置。
【請求項２３】
請求項１３〜２２のいずれかに記載の制御プログラムの検査装置において、
前記検査に伴って前記制御モデルのシミュレーション及び前記制御プログラムの実行が停止されるとき、前記制御モデルのシミュレーションによって演算される変数値の停止箇所において保持されている値及び前記制御プログラムの実行によって演算される変数値の停止箇所において保持されている値の少なくとも一方を変更可能とする
ことを特徴とする制御プログラムの検査装置。
【請求項２４】
請求項１３〜２３のいずれかに記載の制御プログラムの検査装置において、
少なくとも前記制御モデルの挙動をシミュレーションするシミュレーション手段の動作結果と前記制御プログラムを実行するプログラム実行手段の動作結果とを可視表示する表示手段をさらに備える
ことを特徴とする制御プログラムの検査装置。
【請求項２５】
制御要求仕様が要求仕様記述言語にて記述された制御モデルから所定のプログラム言語にて記述された制御プログラムを自動生成する自動コード生成手段を用いて該所定のプログラム言語にて記述された制御プログラムを検査する際に用いられる検査プログラムであって、
前記制御モデル及び前記制御プログラムの少なくとも一方の異常の有無を検査すべくコンピュータを通じて実行する手段として、
ａ．前記制御プログラムを自動生成する際に取得される情報から前記制御モデルと前記制御プログラムとの対応関係を表す対応情報を生成し、前記制御モデルをシミュレーションするシミュレーション手段と前記制御プログラムを実行するプログラム実行手段との双方の動作の停止箇所を前記対応情報に基づき関連付けする手段、
ｂ．前記シミュレーション手段と前記プログラム実行手段との双方に対してシミュレーション及びプログラムの実行を指示する手段、
ｃ．前記シミュレーション及びプログラムの実行の後、前記シミュレーション手段及び前記プログラム実行手段の双方の停止を検出する手段、
ｄ．前記双方の停止を検出したとき、前記制御モデルのシミュレーションの結果と前記制御プログラムの実行の結果とを比較し、その比較結果に基づいて前記異常の有無を検査する手段、
を含むことを特徴とする制御プログラムの検査プログラム。
【請求項２６】
前記対応情報は、前記制御モデルと前記制御プログラムとの互いに対応する位置の関係を表す情報である実行位置対応情報を含み、
前記対応情報に基づき停止箇所を関連付けする手段は、前記シミュレーション手段及び前記プログラム実行手段のいずれか一方においてその動作の停止箇所を指定するブレークポイントが設定されることによって前記実行位置対応情報に基づき他方の対応する箇所を指定するブレークポイントを設定するものである
請求項２５記載の制御プログラムの検査プログラム。
【請求項２７】
前記比較結果に基づいて異常の有無を検査する手段は、少なくとも前記制御モデルのシミュレーションの停止位置と前記制御プログラムの実行の停止位置とを前記実行位置対応情報に基づき比較することによって前記異常の有無を検査する
請求項２６記載の制御プログラムの検査プログラム。
【請求項２８】
前記対応情報は、前記制御モデルの処理にかかる変数値と前記制御プログラムの処理にかかる変数値との対応関係を表す変数対応情報を含み、
前記比較結果に基づいて異常の有無を検査する手段は、少なくとも前記制御モデルのシミュレーションによって演算される変数値と前記制御プログラムの実行によって演算される変数値とを前記変数対応情報に基づき比較することによって前記異常の有無を検査する
請求項２５〜２７のいずれかに記載の制御プログラムの検査プログラム。
【請求項２９】
制御要求仕様が要求仕様記述言語にて記述された制御モデルから所定のプログラム言語にて記述された制御プログラムを自動生成する自動コード生成手段を用いて該所定のプログラム言語にて記述された制御プログラムを検査する際に用いられる検査プログラムであって、
前記制御モデル及び前記制御プログラムの少なくとも一方の異常の有無を検査すべくコンピュータを通じて実行する手段として、
ａ．前記制御プログラムを自動生成する際に取得される情報から前記制御モデルと前記制御プログラムとの対応関係を表す対応情報を生成し、前記制御モデルをシミュレーションするシミュレーション手段と前記制御プログラムを実行するプログラム実行手段との双方の動作の停止箇所を前記対応情報に基づき関連付けする手段、
ｂ．前記シミュレーション手段と前記プログラム実行手段との双方に対してシミュレーション及びプログラムの実行を指示する手段、
ｃ．前記シミュレーション及びプログラムの実行の後、前記シミュレーション手段及び前記プログラム実行手段の双方の停止を検出する手段、
ｄ．前記双方の停止を検出した後、前記シミュレーション手段によるシミュレーション結果及び前記プログラム実行手段による実行結果を出力する手段、
を含むことを特徴とする制御プログラムの検査プログラム。
【請求項３０】
前記シミュレーション手段によるシミュレーション結果及びプログラム実行手段による実行結果を出力する手段は、それら各動作結果を表示手段に出力して可視表示させるものである
請求項２９記載の制御プログラムの検査プログラム。
【請求項３１】
前記対応情報は、前記制御モデルと前記制御プログラムとの互いに対応する位置の関係を表す情報である実行位置対応情報を含み、
前記対応情報に基づき停止箇所を関連付けする手段は、前記シミュレーション手段及び前記プログラム実行手段のいずれか一方においてその動作の停止箇所を指定するブレークポイントが設定されることによって前記実行位置対応情報に基づき他方の対応する箇所を指定するブレークポイントを設定するものである
請求項２９又は３０記載の制御プログラムの検査プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象の制御に用いる制御プログラムの検査方法及び該制御プログラムの検査に際して用いられる検査装置及び検査プログラムに関する。
【背景技術】
【０００２】
例えば車載エンジン等を制御する制御プログラムの開発には通常、
（ア）設計（制御）仕様（制御モデル）に基づいて制御プログラムを作成（コーディング）する工程。
（イ）該作成した制御プログラムの異常の有無を検査、修正（デバッグ）する工程。
（ウ）該デバッグした制御プログラムを用いて実際の車両にてデバッグ、適合（実車チェック）する工程。
（エ）この実車チェック結果に基づいて更に制御プログラムを修正する工程。
等々が含まれる。
【０００３】
また近年は、こうした制御プログラムの開発において、その要求仕様を記述する制御モデルからプログラム言語にて記述された制御プログラムを自動的に生成する工程を有するモデルベース開発も行われている。このモデルベース開発では、制御モデルをコンピュータ上で既存のソフトウェアによりシミュレーションすることで、その制御モデルの動作等の妥当性が検証される。こうした検証のなされた制御モデルから自動生成された制御プログラムは完成度が高いため、上記（エ）の工程における制御プログラムの修正を低減することができるようになる。また、制御モデルの構築自体は、制御プログラムの作成よりも簡易に行うことができる。そのため、こうしたモデルベース開発を採用することで、制御プログラムの開発の効率化を図ることも可能となる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上記自動生成された制御プログラムには、制御モデルの指定した各処理について、同制御モデルでは必ずしも決められていなかった実行順序が、自動生成された制御プログラムでは新たに規定されることがある。
【０００５】
このため、上記モデルベース開発を採用する場合、制御モデルから自動生成される制御プログラムのデバッグ作業や、上記制御モデルが制御プログラムを自動生成するのに妥当なものであるか否かを検査し修正するデバッグ作業が逆に困難なものとなる。これは、上述のように制御モデルと制御プログラムの実行順序が必ずしも同じではないことに起因するものであり、制御モデル及び制御プログラムの一方のデバッグ作業にて何らかの問題が発見されたときには、その問題の位置と対応する他方の位置を特定することが極めて困難となる。
【０００６】
本発明は、こうした実情に鑑みてなされたものであり、その目的は、モデルベース開発を行う場合にあって、制御プログラムや制御モデルの異常の有無の検査を簡易に行うことのできる制御プログラムの検査方法、及び該制御プログラムの検査に用いる検査装置及び検査プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
こうした目的を達成すべく、請求項１記載の制御プログラムの検査方法あるいは請求項１３記載の制御プログラムの検査装置では、前記制御モデルの挙動をシミュレーションするシミュレーション手段の動作結果と前記制御プログラムを実行するプログラム実行手段の動作結果とのそれぞれ対応する動作結果毎にこれらを関連付けして出力して、前記制御モデル及び前記制御プログラムの少なくとも一方の異常の有無を検査するようにした。
【０００８】
このように、制御プログラムをプログラム実行手段によって実行することでその異常の有無の検査を行うに際し、同制御プログラムの実行結果と制御モデルのシミュレーション結果との各対応するものをそれぞれ関連付けて出力することで、これら制御プログラムや制御モデルの異常の有無の検査を簡易に行うことができるようになる。
【０００９】
また、請求項２記載の制御プログラムの検査方法あるいは請求項１４記載の制御プログラムの検査装置では、前記関連付けが、前記自動コード生成手段による制御プログラムの自動生成に際して取得される前記制御モデルと該制御モデルから生成される制御プログラムとの対応関係を表す対応情報に基づいて行われるようにした。
【００１０】
制御モデルから制御プログラムを自動生成する自動コード生成手段は、同自動生成に際し制御モデルと制御プログラムとの対応関係を表す対応情報を有することとなる。そして、この対応情報を用いることで、シミュレーション手段による制御モデルのシミュレーションの実行位置とプログラム実行手段による制御プログラムの実行位置とを適切に関連付けることができる。
【００１１】
また、請求項３記載の制御プログラムの検査方法あるいは請求項１５記載の制御プログラムの検査装置では、前記関連付けが、前記制御モデル及び前記制御プログラムのいずれか一方に対して動作の停止箇所を指定するブレークポイントが設定されることに基づき、他方に対しても前記対応情報に基づきその対応するブレークポイントを設定することによって行われるようにした。
【００１２】
シミュレーション手段やプログラム実行手段は、それぞれのブレークポイントでシミュレーションの実行や制御プログラムの実行を停止する。このため、対応情報により把握される制御モデルと制御プログラムとの対応関係に基づき、それぞれの対応する実行位置にブレークポイントを設定することで、制御モデル及び制御プログラムについての上記実行位置が互いに関連する位置となる。したがって、これらシミュレーション手段とプログラム実行手段との実行、停止を、既存の機能（ブレークポイント）を用いることで互いの同期（関連付け）を簡易に行うことができる。
【００１３】
更に、上記のように制御モデル及び制御プログラムのいずれか一方にブレークポイントが設定されたときに、他方にもブレークポイントが自動的に設定されるようにした。このため、例えば、外部からユーザが制御モデル及び制御プログラムのうちのいずれか一方を任意に選択してブレークポイントを設定することで、双方の適切な箇所にブレークポイントを設定することができる。
【００１４】
また、請求項４記載の制御プログラムの検査方法あるいは請求項１６記載の制御プログラムの検査装置では、前記ブレークポイントを、前記制御モデルを構成する各機能ブロック毎に設定可能とした。
【００１５】
制御モデルから自動生成される制御プログラムには、制御モデルの各機能ブロックに対応する処理について同制御モデルには規定されていない実行順序が新たに規定されることがある。このため、自動生成された制御プログラムの検査においては、これら新たに規定される実行順序の異常の有無を検査することが望ましい。この点、ブレークポイントを各機能ブロックに設定可能とすることで、新たに実行順序が規定される場合であれ、その異常の有無を、制御モデルと対応させつつ簡易に検査することができるようになる。
【００１６】
また、請求項５記載の制御プログラムの検査方法あるいは請求項１７記載の制御プログラムの検査装置では、前記各動作結果についてのそれぞれ関連付けされた動作結果の出力が、前記プログラム実行手段により前記制御プログラムを１行ずつ実行及び停止させることによって行われるようにした。
【００１７】
このように、制御プログラムを１行ずつ実行及び停止させるようにすることで、停止箇所の設定を簡易に行うことができ、より詳細な検査をすることができる。
また、請求項６記載の制御プログラムの検査方法あるいは請求項１８記載の制御プログラムの検査装置では、前記異常の有無の検査が、前記関連付けされた前記シミュレーション手段の動作結果と前記プログラム実行手段の動作結果とを逐次比較する比較手段によって行われるようにした。
【００１８】
このように、制御モデルのシミュレーション結果と制御プログラムの実行結果とを逐次比較する比較手段を用いることで、これら制御モデルのシミュレーション結果と制御プログラムの実行結果との対応関係を、ユーザが確認する必要が無く、自動的に検出することができるようになる。したがって、上記異常の有無の検査を自動的に行うことができる。また、請求項５記載の方法や請求項１７記載の構成と併用することによって、より細部までの実行位置の比較ができ、詳細な検査をすることができるようになる。
【００１９】
また、請求項７記載の制御プログラムの検査方法あるいは請求項１９記載の制御プログラムの検査装置では、前記比較手段によるシミュレーション手段の動作結果と前記プログラム実行手段の動作結果との逐次比較が、前記対応情報に基づく前記制御モデルのシミュレーション順序と前記制御プログラムの実行順序との比較として行われるようにした。
【００２０】
自動生成される制御プログラムには、制御モデルの処理について同制御モデルが有しない実行順序が新たに規定されることがある。このため、同制御プログラムと制御モデルとは互いの処理の実行順序が異なったものとなることがある。この点、上記のように比較手段によって制御モデルのシミュレーションの順序と制御プログラムの実行順序とを比較することで、この実行順序の不一致にかかる異常を自動的に検出することができるようになる。
【００２１】
また、請求項８記載の制御プログラムの検査方法あるいは請求項２０記載の制御プログラムの検査装置では、前記比較手段によるシミュレーション手段の動作結果と前記プログラム実行手段の動作結果との逐次比較が、前記対応情報に基づき前記制御モデルのシミュレーションによって演算される変数値と前記制御プログラムの実行によって演算される変数値との比較として行われるようにした。
【００２２】
自動生成された制御プログラムが適切なものでないと、制御プログラムの実行によって演算される変数値は、制御モデルの対応する処理によって演算される変数値と異なることがある。この点、上記のように比較手段によって制御モデルのシミュレーションによって演算される変数値と制御プログラムの実行によって演算される変数値とを比較することで、これらの不一致にかかる異常を自動的に検出することができるようになる。
【００２３】
なお、こうした変数値の比較による異常の有無の検査は、請求項９記載の制御プログラムの検査方法あるいは請求項２１記載の制御プログラムの検査装置によるように、前記制御モデルのシミュレーションによって演算される変数値と前記制御プログラムの実行によって演算される変数値との差が許容範囲内にないか否かによって行われるようにしてもよい。制御モデルのシミュレーションを行うシミュレーション手段や制御プログラムの実行を行うプログラム実行手段の演算精度に依存して、演算された変数値がわずかながら一致しない場合がある。しかしこのような場合、制御モデル及び制御プログラムは共に正常であり、変数値が不一致でも正常と判定すべきものである。そういった場合は、変数値の偏差が許容範囲内にないか否かによって異常の有無の検査を行うとよい。これにより、異常の有無の検査をより適切に行うことができるようになる。
【００２４】
また、請求項１０記載の制御プログラムの検査方法あるいは請求項２２記載の制御プログラムの検査装置では、前記比較手段により異常がある旨の判断がなされたとき、その時点での前記制御モデルのシミュレーション箇所と前記制御プログラムの実行箇所とを前記検査の結果として出力するようにした。
【００２５】
このように、制御モデルのシミュレーション箇所と制御プログラムの実行箇所とを検出し、検査の結果として出力することで、外部のユーザ等が異常がある旨判断された箇所を簡易に把握することができるようになる。
【００２６】
また、請求項１１記載の制御プログラムの検査方法あるいは請求項２３記載の制御プログラムの検査装置では、前記検査に伴って前記制御モデルのシミュレーション及び前記制御プログラムの実行が停止されるとき、前記制御モデルのシミュレーションによって演算される変数値の停止箇所において保持されている値及び前記制御プログラムの実行によって演算される変数値の停止箇所において保持されている値の少なくとも一方を変更可能とした。
【００２７】
例えば前記ブレークポイントや何らかの異常の判断に起因して制御モデルのシミュレーションや制御プログラムの実行が停止されるとき、それら制御モデルのシミュレーション停止箇所において保持される変数値及び制御プログラムの実行停止箇所で保持される変数値の少なくとも一方を変更可能とすることで、たとえ異常がある旨の判断がなされた場合であれ、再度制御モデルのシミュレーション条件と制御プログラムの実行条件とを等しくすることができる。このため、異常がある旨判断された箇所から異常の有無の検査を再開することが可能となる。
【００２８】
また、請求項１２記載の制御プログラムの検査方法あるいは請求項２４記載の制御プログラムの検査装置では、少なくとも前記制御モデルの挙動をシミュレーションするシミュレーション手段の動作結果と前記制御プログラムを実行するプログラム実行手段の動作結果とを表示手段に出力して可視表示させるようにした。
【００２９】
このように、シミュレーション手段の動作結果とプログラム実行手段の動作結果とを表示手段に出力して可視表示させることで、ユーザ自身が各動作結果を簡易に把握することができるようになる。
【００３０】
また、請求項２５記載の制御プログラムの検査プログラムでは、前記制御モデル及び前記制御プログラムの少なくとも一方の異常の有無を検査すべくコンピュータを通じて実行する手段として、ａ．前記制御プログラムを自動生成する際に取得される情報から前記制御モデルと前記制御プログラムとの対応関係を表す対応情報を生成し、前記制御モデルをシミュレーションするシミュレーション手段と前記制御プログラムを実行するプログラム実行手段との双方の動作の停止箇所を前記対応情報に基づき関連付けする手段、ｂ．前記シミュレーション手段と前記プログラム実行手段との双方に対してシミュレーション及びプログラムの実行を指示する手段、ｃ．前記シミュレーション及びプログラムの実行の後、前記シミュレーション手段及び前記プログラム実行手段の双方の停止を検出する手段、ｄ．前記双方の停止を検出したとき、前記制御モデルのシミュレーションの結果と前記制御プログラムの実行の結果とを比較し、その比較結果に基づいて前記異常の有無を検査する手段、を含むようにした。
【００３１】
このようにシミュレーション手段とプログラム実行手段との双方の停止箇所を関連付けることで、シミュレーション手段とプログラム実行手段とを同期させることができるようになる。そして、これらシミュレーション手段とプログラム実行手段とのそれぞれに対し、実行を指示するとともに、双方の停止を検出したときにシミュレーションの結果と制御プログラムの実行の結果とを比較することで、双方の停止位置において異常の有無を的確に検査することができるようになる。
【００３２】
また、請求項２６記載の制御プログラムの検査プログラムでは、前記対応情報は、前記制御モデルと前記制御プログラムとの互いに対応する位置の関係を表す情報である実行位置対応情報を含み、前記対応情報に基づき停止箇所を関連付けする手段が、前記シミュレーション手段及び前記プログラム実行手段のいずれか一方においてその動作の停止箇所を指定するブレークポイントが設定されることによって前記実行位置対応情報に基づき他方の対応する箇所を指定するブレークポイントを設定するものであるとした。
【００３３】
このような検査プログラムによれば、外部からユーザが制御モデル及び制御プログラムのうちのいずれか一方を任意に選択してブレークポイントを設定することに基づいて、双方の適切な箇所にブレークポイントが自動的に設定されるようになる。
【００３４】
また、請求項２７記載の制御プログラムの検査プログラムでは、前記比較結果に基づいて異常の有無を検査する手段を、少なくとも前記制御モデルのシミュレーションの停止位置と前記制御プログラムの実行の停止位置とを前記実行位置対応情報に基づき比較することによって前記異常の有無を検査するものとした。
【００３５】
自動生成される制御プログラムには、制御モデルの処理についての実行順序であって同制御モデルが有しない実行順序が新たに規定されることがある。このため、同制御モデルを用いて作成される制御プログラムと制御モデルとは互いの処理の実行順序が異なったものとなることがある。この点、上記のように制御モデルの実行順序と制御プログラムの実行順序とを比較することで、この実行順序の不一致にかかる異常を適切に検出することができるようになる。
【００３６】
また、請求項２８記載の制御プログラムの検査プログラムでは、前記対応情報は、前記制御モデルの処理にかかる変数値と前記制御プログラムの処理にかかる変数値との対応関係を表す変数対応情報を含み、前記比較結果に基づいて異常の有無を検査する手段を、少なくとも前記制御モデルのシミュレーションによって演算される変数値と前記制御プログラムの実行によって演算される変数値とを前記変数対応情報に基づき比較することによって前記異常の有無を検査するものとした。
【００３７】
自動生成された制御プログラムが適切なものでないと、制御プログラムの実行によって演算される変数値は、制御モデルの対応する処理によって演算される変数値と異なることがある。この点、制御モデルのシミュレーションによって演算される変数値と制御プログラムの実行によって演算される変数値とを比較することで、これら変数値の不一致にかかる異常についてもこれを的確に検出することができるようになる。
【００３８】
また、請求項２９記載の制御プログラムの検査プログラムでは、前記制御モデル及び前記制御プログラムの少なくとも一方の異常の有無を検査すべくコンピュータを通じて実行する手段として、ａ．前記制御プログラムを自動生成する際に取得される情報から前記制御モデルと前記制御プログラムとの対応関係を表す対応情報を生成し、前記制御モデルをシミュレーションするシミュレーション手段と前記制御プログラムを実行するプログラム実行手段との双方の動作の停止箇所を前記対応情報に基づき関連付けする手段、ｂ．前記シミュレーション手段と前記プログラム実行手段との双方に対してシミュレーション及びプログラムの実行を指示する手段、ｃ．前記シミュレーション及びプログラムの実行の後、前記シミュレーション手段及び前記プログラム実行手段の双方の停止を検出する手段、ｄ．前記双方の停止を検出した後、前記シミュレーション手段によるシミュレーション結果及び前記プログラム実行手段による実行結果を表示手段に出力する手段、を含むようにした。
【００３９】
このように、シミュレーション手段とプログラム実行手段との双方の停止箇所を関連付けることで、シミュレーション手段とプログラム実行手段との各動作結果を同期させることができるようになる。そして、これらシミュレーション手段とプログラム実行手段とのそれぞれに対し、実行を指示するとともに、双方の停止を検出した後に、シミュレーション手段のシミュレーション結果及びプログラム実行手段の実行結果を出力することで、制御モデルの動作と制御プログラムの動作とを簡易に把握することができるようになる。
【００４０】
またこの場合、請求項３０記載の制御プログラムの検査プログラムのように、前記シミュレーション手段によるシミュレーション結果及びプログラム実行手段による実行結果を出力する手段を、それら各動作結果を表示手段に出力して可視表示させるものとすることで、ユーザ自身がそれら動作結果を比較して制御プログラムや制御モデルの異常の有無の検査を行うことも可能となる。
【００４１】
また、請求項３１記載の制御プログラムの検査プログラムでは、前記対応情報は、前記制御モデルと前記制御プログラムとの互いに対応する位置の関係を表す情報である実行位置対応情報を含み、前記対応情報に基づき停止箇所を関連付けする手段を、前記シミュレーション手段及び前記プログラム実行手段のいずれか一方においてその動作の停止箇所を指定するブレークポイントが設定されることによって前記実行位置対応情報に基づき他方の対応する箇所を指定するブレークポイントを設定するものとした。
【００４２】
このような検査プログラムによれば、外部からユーザが制御モデル及び制御プログラムのうちのいずれか一方を任意に選択してブレークポイントを設定することに基づいて、双方の適切な箇所にブレークポイントが自動的に設定されるようになる。
【発明を実施するための最良の形態】
【００４３】
以下、本発明にかかる制御プログラムの検査方法及び検査装置を車両の制御プログラムの検査に適用した一実施形態を図面を参照しつつ説明する。
図１は、本実施形態にかかる制御プログラムの作成並びに検査手順の概要を示すフローチャートである。
【００４４】
同図１に示すステップＳ１では、まず、対象となる制御プログラムについて、その要求仕様を記述する制御モデルを要求仕様記述言語を用いて構築する。次に、こうして構築された制御モデルをシミュレーションすることで、同制御モデルが正当な機能と妥当な性能を有するものであるか否かを検証する。そして、この検証結果に基づき、適宜、制御モデルを修正する。
【００４５】
次に、ステップＳ２において、制御モデルから例えばＣ言語にて記述された制御プログラムを自動生成する。この制御プログラムには、制御モデルの規定する処理について同制御モデルによっては規定されていない実行順序が新たに規定されている。
【００４６】
ステップＳ３では、上記制御モデルをシミュレーションするとともに、制御プログラムを実行することで、互いの対応関係を維持しつつ制御モデルや制御プログラムの異常の有無の検査を行う。そして、制御プログラムに異常がある旨判断されると、制御プログラムが修正される。また、制御プログラムを検証した結果、制御モデルが妥当でないと判断される場合には、上記ステップＳ１に戻り、制御モデルを修正するようにしてもよい。
【００４７】
こうして制御プログラムのデバッグが終了すると、ステップＳ４において、同制御プログラムを搭載した電子制御装置によって実際の車両でのデバッグ、適合を行う。そして、この実際の車両でのデバッグ結果に基づき制御プログラムに妥当でない箇所がある場合には、ステップＳ１に戻って制御モデルを修正し、上記ステップＳ１〜Ｓ４の処理を繰り返す。この一連の処理は、制御プログラムが妥当であると判断されるまで行われる。
【００４８】
以下、上記ステップＳ３の処理である制御プログラムのデバッグ作業について、詳細に説明する。
図２は、制御プログラムの生成及びデバッグに用いるシステム（検査装置）の全体構成を示す図である。
【００４９】
このシステムにおいて、モデル格納部１０には、先の図１のステップＳ１にて構築され検証のなされた制御モデルが格納されている。図３に、こうした制御モデルの一例を模式的に示す。
【００５０】
同図３に示す制御モデルは、車載エンジンの燃料噴射量の演算、及び噴射タイミングの演算を行うモデルである。ブロックＢ１は、図示しないエンジンのクランク角度が所定のクランク角と一致したときに、ブロックＢ２及びブロックＢ６にトリガを与えるブロックである。ブロックＢ２は、上記所定のクランク角をトリガとして基本噴射量を演算するブロックである。ブロックＢ３は、上記ブロックＢ２によって演算された基本噴射量をブロックＢ４に書き込み指示するブロックである。ブロックＢ４は、基本噴射量を記憶するブロックである。ブロックＢ５は、記憶されている基本噴射量を読み出すブロックである。ブロックＢ６は、上記所定のクランク角をトリガとして上記基本燃料噴射量に対する補正量を計算するブロックである。ブロックＢ７は、補正量と上記読み出された基本噴射量とに基づき噴射タイミングを演算するブロックである。
【００５１】
ちなみに、図３において実線で示す矢印は、処理の順序を規定するとともに、各処理の施されたデータの流れを示すものである。すなわち、例えばブロックＢ７の処理は、ブロックＢ５及びブロックＢ６の処理の後に行われるようにその処理順序が規定されている。しかし、ブロックＢ２とブロックＢ６との処理については、どちらを先に実施するかといった順序は規定されていない。また、ブロックＢ３及びブロックＢ５の処理の順序についても同様に、基本噴射量のメモリへの書き込みとメモリからの読み出しの順序は規定されていない。つまり、ブロックＢ５を先に処理し、ブロックＢ３を後で処理することも、このモデルでは考えられる。
【００５２】
一方、図２に示すシステムにおいて、自動コード生成部（自動コード生成手段）１２は、この制御モデルを入力し、同制御モデルから上記Ｃ言語で記述された制御プログラムを生成してプログラム格納部１４へ格納する部分である。こうして、プログラム格納部１４には、上記自動コード生成部１２により生成された制御プログラムが格納される。
【００５３】
図４に、先の図３に示した制御モデルから自動生成される制御プログラムを例示する。同図４に示すように、先の図３に示した制御モデルにおけるブロックＢ３の処理はブロックＢ５の処理に先立って行われる必要があるにもかかわらず、この制御プログラムでは、ブロックＢ５に対応する処理の後にブロックＢ３に対応する処理が行われる。これは、制御モデルには各機能ブロックの示す処理の実行順序が必ずしも定められているわけではなく、自動コード生成部１２によってこの実行順序が新たに規定されることに起因している。すなわち上述のように、制御モデルにはブロックＢ５とブロックＢ３との処理の順序が規定されていないため、これらの処理の実行順序が自動コード生成部１２によって新たに規定される際、適切なものとならなかった場合を図４は示している。
【００５４】
また、図２に示すシステムにおいて、対応情報作成部１６は、上記自動コード生成部１２が制御プログラムを生成するに際して、同自動コード生成部１２の有する情報に基づいて制御モデルと制御プログラムとの対応関係を表す対応情報を作成し、これを対応情報格納部１８へ格納する部分である。この対応情報は、制御モデルのブロックと制御プログラムの実行ポイントとの対応関係を表す実行位置対応情報と、制御モデルのブロック結線（ブロック間の結線が表す変数）やストレージ（ブロックＢ４等、記憶にかかるブロック）と制御プログラムの変数との対応関係を表す変数対応情報とを有している。
【００５５】
図５に、これら実行位置対応情報と変数対応情報とからなる対応情報を例示する。同図５においては、実行位置対応情報として、制御モデルのブロックと、制御プログラムの有するラベルＬ１〜Ｌ５とが対応付けられている。また、変数対応情報として、制御モデルのブロック結線／ストレージと制御プログラムの変数とが対応付けられている。これら対応情報が、図２に示した対応情報格納部１８に格納されることになる。
【００５６】
また、図２に示すシステムにおいて、シミュレーション部（シミュレーション手段）２０は、モデル格納部１０から制御モデルを入力し、その動作をシミュレーションする部分である。
【００５７】
他方、同図２に示すシステムにおいて、プログラム実行部（プログラム実行手段）２２は、プログラム格納部１４から制御プログラムを入力し、これを実行する部分である。なお、この実施形態においては、このプログラム実行部２２としてデバッガ機能付きのコンパイラを利用している。
【００５８】
また、同システムにおいて、ブレークポイント設定部２４は、外部からの入力に基づき制御モデル及び制御プログラムのいずれかに動作の停止箇所を指定するブレークポイントの設定をシミュレーション部２０及びプログラム実行部２２に指示する部分である。このブレークポイントは、制御モデルの各ブロック毎に設定可能とする。また、このブレークポイントは、例えば制御プログラムの上記ラベルＬ１〜Ｌ５を用いて指定される各実行ポイントに設定可能とする。
【００５９】
また、図２に示すシステムにおいて、同期部（同期手段）２６は、上記ブレークポイント設定部２４を通じて制御モデル及び制御プログラムのいずれか一方に、その動作の停止箇所を指定するブレークポイントが設定されたとき、上記対応情報に基づき、他方に対し対応する動作の停止箇所を指定するブレークポイントを設定する機能を有する部分である。すなわちここでは、上記対応情報のうちの実行位置対応情報を用いて、制御モデルのブロックから対応する制御プログラムの実行ポイントを検索することで、又は、制御プログラムの実行ポイントから制御モデルのブロックを検索することで、ブレークポイントを設定する。
【００６０】
更に、この同期部２６は、シミュレーション部２０及びプログラム実行部２２の動作が双方ともブレークポイントにて一旦停止したときに、これらシミュレーション部２０及びプログラム実行部２２の動作結果を比較する比較部（比較手段）を備えている。
【００６１】
また、図２に示すシステムにおいて、表示部（表示手段）２８は、通常の操作案内表示等をはじめ、上記比較部による比較結果により不一致が検出され、制御モデル及び制御プログラムのいずれかに問題があるときなどにこれを可視表示する部分である。また、結果格納部３０には、上記比較部による比較結果が格納される。
【００６２】
ちなみに、この図２に示すシステムにおける上記モデル格納部１０、プログラム格納部１４、対応情報格納部１８、結果格納部３０は、例えばハードディスク装置等の記憶装置によって構成される。また、自動コード生成部１２、対応情報作成部１６、シミュレーション部２０、プログラム実行部２２、ブレークポイント設定部２４、同期部２６は、処理手順に関するプログラムが記録された例えばハードディスク装置やＲＯＭ等の記憶装置とコンピュータとによって構成される。
【００６３】
以下、こうした構成を有するシステム（検査装置）を通じて実行される制御プログラムの検査及びデバッグにかかる処理について詳細に説明する。
本実施形態では、モデル格納部１０に格納された制御モデルをシミュレーションするシミュレーション部２０とプログラム格納部１４に格納された制御プログラムを実行するプログラム実行部２２との各動作結果を同期部２６を通じて同期（関連付け）させる。そして、上述したブレークポイントでこれらシミュレーション部２０とプログラム実行部２２との動作が停止したとき、上記比較部によってシミュレーションの結果とプログラムの実行結果とを比較することで、制御モデルや制御プログラムの異常の有無を検査する。そして、この検査の結果、制御プログラムに問題があるときには、又は、制御モデルが妥当な制御プログラムを生成することができないときには、制御プログラムや制御モデルを修正する。
【００６４】
このように、制御プログラムの実行結果と制御モデルのシミュレーション結果とを関連付けて比較することで、制御モデルが規定する各処理について同制御モデルの有しない実行順序が新たに規定されることがある制御プログラムと、制御モデルとの対応関係を簡易に把握することができるようになる。したがって、モデルベース開発を行う場合にあって、制御プログラムや制御モデルの異常の有無の検査を簡易に行うことができるようになる。
【００６５】
ここでまず、上記ブレークポイント設定部２４及び同期部２６によるブレークポイントの設定にかかる処理について図６を参照して説明する。なお、同図６は、同期部２６によるブレークポイントの設定にかかる処理の手順を示すフローチャートである。
【００６６】
この一連の処理においては、ステップＳ３０１及びステップＳ３０２において、上記ブレークポイント設定部２４を通じて上記シミュレーション部２０及び上記プログラム実行部２２のいずれかからブレークポイントが設定されたか否かを判断する。すなわち、同期部２６では、シミュレーション部２０及びプログラム実行部２２にアクセスすることで、ブレークポイントの設定がなされたか否かを判断する。
【００６７】
そして、ステップＳ３０１においてブレークポイントの設定がなされた旨判断されると、ステップＳ３０３の処理に移行する。このステップＳ３０３では、実行位置対応情報に基づいて制御モデル上に設定されたブレークポイントに該当する制御プログラム上の位置を決定するとともに、この決定された位置をブレークポイントとして制御プログラム上に設定するようにプログラム実行部２２に指示する。
【００６８】
また、ステップＳ３０２においてブレークポイントの設定がなされた旨判断されると、ステップＳ３０４の処理に移行する。このステップＳ３０４では、実行位置対応情報に基づいて制御プログラム上に設定されたブレークポイントに該当する制御モデル上の位置を決定するとともに、この決定された位置をブレークポイントとして制御モデル上に設定するようにシミュレーション部２０に指示する。
【００６９】
そして、ステップＳ３０３、Ｓ３０４の処理が終了した場合やステップＳ３０２にてブレークポイントの設定がなされていない旨判断された場合には、この一連の処理を終了する。なお、この一連の処理を、所定周期で繰り返し実行する代わりに、シミュレーション部２０に制御モデルが取り込まれるとともに、プログラム実行部２２に制御プログラムが取り込まれることをトリガとして行うようにすることがより望ましい。
【００７０】
ちなみに、このブレークポイントは、先の図３に示した制御モデルにおいては、例えばブロックＢ３とブロックＢ５とにそれぞれ設けるようにすればよい。また、最終的な出力となるブロックＢ７にのみ設けるようにしてもよい。
【００７１】
次に、上記シミュレーション部２０による制御モデルのシミュレーションにかかる処理について図７を用いて説明する。なお、同図７は、制御モデルのシミュレーションにかかる処理の手順を示すフローチャートである。
【００７２】
この一連の処理においては、まずステップＳ３１１において、モデル格納部１０に格納されている制御モデルを取り込む。次に、ステップＳ３１２、Ｓ３１３において、制御モデルの所定箇所にブレークポイントを設定する。すなわち、このステップＳ３１２、Ｓ３１３においては、上記ブレークポイント設定部２４の指示によりブレークポイントを設定するか、先の図６に示した処理にて同期部２６の指示によりブレークポイントを設定するかのいずれかの処理を行う。
【００７３】
続くステップＳ３１４においては、上記同期部２６からシミュレーションの実行の指示があったか否かを判断する。そして、ステップＳ３１４にて実行の指示があった旨判断されると、ステップＳ３１５にて制御モデルのシミュレーションを実行する。このシミュレーションは、上記シミュレーション部２０に例えばセンサ信号等に相当する擬似的なデータを与え、同シミュレーション部２０に上記制御モデルに基づきそのデータを処理させるようにして行われる。
【００７４】
また、このシミュレーションは、制御モデルの全ての実行が終了するまで（ステップＳ３１６）、又は、ブレークポイントを検出するまで（ステップＳ３１７）行われる。そして、ステップＳ３１７にてブレークポイントが検出されると、シミュレーションを停止させるとともに、ステップＳ３１８において、上記表示部２８、あるいはシミュレーション部２０自身の備える表示器等の出力装置を通じて外部にシミュレーションを停止している旨を通知する。
【００７５】
このようにブレークポイントにてシミュレーションを停止すると、上記同期部２６からの新たな実行指示（ステップＳ３１４）、又は同期部２６からの異常通知（ステップＳ３１９）に備えて待機することとなる。そして、新たな実行指示があった場合には、ステップＳ３１５以降の処理を行うことで、制御モデルのシミュレーションを再開する。
【００７６】
一方、ステップＳ３１９において同期部２６からの異常通知があった場合にはこの一連の処理を終了する。なお、この際、シミュレーション部２０は異常通知があったときの停止位置の情報を有しているため、これを上記表示部２８や同シミュレーション部２０自身の備える表示器等の出力装置を通じて外部に出力することが望ましい。さらに、同期部２６から異常通知があった場合には、上記結果格納部３０（図２）に異常情報を格納し、ステップＳ３１４にて、同期部２６からの実行指示に備えて待機するように構成してもよい（図７の破線参照）。また、この異常通知が変数についての異常通知である場合、当該シミュレーションによって演算された変数値を変更可能としてもよい。すなわち、再度制御モデルのシミュレーション条件と制御プログラムの実行条件とを等しくすべく同シミュレーションによって演算された変数値を変更してステップＳ３１４にて待機するようにしてもよい。
【００７７】
また、ステップＳ３１６において、全てのシミュレーションが完了した旨判断される場合には、ステップＳ３２０において、上記表示部２８やシミュレーション部２０自身の備える表示器等の出力装置を通じて外部にシミュレーションが完了した旨を通知し、この一連の処理を終了する。
【００７８】
次に、上記プログラム実行部２２による制御プログラムの実行にかかる処理について図８を用いて説明する。なお、同図８は、制御プログラムの実行にかかる処理の手順を示すフローチャートである。
【００７９】
この一連の処理においては、まずステップＳ３３１において、プログラム格納部１４に格納されている制御プログラムを取り込む。次に、ステップＳ３３２、Ｓ３３３において、制御プログラムの所定箇所にブレークポイントを設定する。すなわち、このステップＳ３３２、Ｓ３３３においては、上記ブレークポイント設定部２４の指示によりブレークポイントを設定するか、先の図６に示した処理にて同期部２６の指示によりブレークポイントを設定するかのいずれかの処理を行う。
【００８０】
続くステップＳ３３４においては、上記同期部２６から制御プログラムの実行の指示があったか否かを判断する。そして、ステップＳ３３４にて実行の指示があった旨判断されると、ステップＳ３３５にて制御プログラムを実行する。この制御プログラムの実行も、上記プログラム実行部２２に例えばセンサ信号等に相当する擬似的なデータを与え、同プログラム実行部２２に上記制御プログラムに基づきそのデータを処理させるようにして行われる。
【００８１】
また、このプログラムの実行は、制御プログラムの全てを実行するまで（ステップＳ３３６）、又は、ブレークポイントを検出するまで（ステップＳ３３７）行われる。そして、ステップＳ３３７にてブレークポイントが検出されると、制御プログラムの実行を停止させるとともに、ステップＳ３３８において、上記表示部２８やプログラム実行部２２自身の備える表示器等の出力装置を通じて外部に制御プログラムの実行を停止している旨を通知する。
【００８２】
このようにブレークポイントにて制御プログラムの実行を停止すると、上記同期部２６からの新たな実行指示（ステップＳ３３４）、又は同期部２６からの異常通知（ステップＳ３３９）に備えて待機することとなる。そして、新たな実行指示があった場合には、ステップＳ３３５以降の処理を行うことで、制御プログラムの実行を再開する。
【００８３】
一方、ステップＳ３３９において同期部２６からの異常通知があった場合にはこの一連の処理を終了する。なお、この際、プログラム実行部２２は異常通知のあったときの停止位置の情報を有しているため、これを上記表示部２８や同プログラム実行部２２自身の備える表示器等の出力装置を通じて外部に出力することが望ましい。さらに、同期部２６から異常通知があった場合には、上記結果格納部３０（図２）に異常情報を格納し、ステップＳ３３４にて同期部２６からの実行指示に備えて待機するように構成してもよい（図８の破線参照）。また、異常通知が変数についての異常通知である場合、当該制御プログラムの実行によって演算された変数値を変更可能としてもよい。すなわち、再度制御モデルのシミュレーション条件と制御プログラムの実行条件とを等しくすべく同制御プログラムの実行によって演算された変数値を変更してステップＳ３３４にて待機するようにしてもよい。
【００８４】
また、ステップＳ３３６において、全ての制御プログラムの実行が完了した旨判断される場合には、ステップＳ３４０において、上記表示部２８やプログラム実行部２２自身の備える表示器等の出力装置を通じて外部に制御プログラムの実行が完了した旨を通知し、この一連の処理を終了する。
【００８５】
次に、上記同期部２６により行われる制御モデル及び制御プログラムの異常の有無の検査にかかる処理について図９を用いて説明する。なお、同図９は、この検査にかかる処理の手順を示すフローチャートである。この処理は、先の図６に示した処理が終了したことを前提として、換言すれば、制御モデル及び制御プログラムの双方にブレークポイントが設定されたことを前提として行われる。
【００８６】
この一連の処理においては、まずステップＳ３５１において、制御モデルのシミュレーションを実行するように上記シミュレーション部２０に指示するとともに、制御プログラムを実行するように上記プログラム実行部２２に指示する。これら制御モデルのシミュレーションと制御プログラムの実行は、上記シミュレーション部２０により制御モデルが停止されて且つ、上記プログラム実行部２２により制御プログラムが停止されるまでの間にわたって行われる。なおこの際、制御モデルのシミュレーションと制御プログラムの実行とを同一の条件で行うべく、制御モデル及び制御プログラムへの入力データ（初期値）は同一データとする。
【００８７】
そして、ステップＳ３５２において、制御モデル及び制御プログラムの双方が停止されていると判断され、且つステップＳ３５３においてこれら制御モデル及び制御プログラムの双方が実行完了していないと判断されると、ステップＳ３５４以降の処理において、上記制御モデル及び制御プログラムの異常の有無についての検査を行う。
【００８８】
すなわち、ステップＳ３５４では、上記実行位置対応情報に基づき、制御モデルの停止位置と、制御プログラムの停止位置とが互いに対応する位置となっているか否かを確認する。そして、互いに対応する位置となっていないと判断されると（ステップＳ３５５）、ステップＳ３５６において上記表示部２８を通じて制御モデルと制御プログラムとの停止位置が互いに一致しない旨（「停止位置異常」）を表示する。
【００８９】
一方、ステップＳ３５５において停止位置が一致すると判断されると、ステップＳ３５７の処理に移行する。このステップＳ３５７では、上記変数対応情報に基づき、制御モデル側の当該停止箇所のブロック結線やストレージの値（変数値）と、制御プログラム側の当該停止箇所において保持されている変数値とが互いに対応するものであるか否かを判断する。そして、互いに対応するものでないと判断されると（ステップＳ３５８）、ステップＳ３５９において上記表示部２８を通じて制御モデルのブロック結線やストレージと制御プログラムの変数値とが互いに対応するものでない旨（「変数値異常」）を表示する。
【００９０】
ちなみに、上記制御モデルのブロック結線やストレージの値と制御プログラムの変数値とが互いに対応するものであるか否かは、これら２つの値の差としての許容範囲を予め定めておき、この許容範囲にあるか否かで判断するようにする。例えば、制御モデルのブロック結線やストレージの値と制御プログラムの変数値とが互いに整数演算された値である場合には、両者の一致のみを許容範囲とする。また例えば、制御モデルのブロック結線やストレージの値と制御プログラムの変数値とが互いに浮動小数点型の値である場合には、両者の差の絶対値が所定値以下であることを許容範囲とする。
【００９１】
そして、上記ステップＳ３５８において、変数値が許容範囲にあると判断されたときには、ステップＳ３５１に戻り、制御モデルのシミュレーションと制御プログラムの実行とが再開されることとなる。また、ステップＳ３５３において、制御モデルと制御プログラムとが全て実行されたと判断されると、ステップＳ３６０において、上記表示部２８を通じてその旨（「全て実行完了」）を表示する。
【００９２】
一方、上記ステップＳ３５６、Ｓ３５９、Ｓ３６０の各処理が終了すると、この一連の処理を終了する。なお、上記ステップＳ３５３において制御モデルと制御プログラムとが全て実行されたと判断されたときには、ステップＳ３６０の処理に移行するに先立って、ステップＳ３５７等の処理を行うようにしてもよい。
【００９３】
このように本実施形態では、上記同期部２６（比較部）により制御モデルの停止位置と、制御プログラムの停止位置とが互いに対応する位置となっているか否かを判断するようにした。これにより、制御モデルの指定する複数の処理について、上記自動コード生成部１２によって生成された制御プログラムに新たに実行順序が規定されたとき、これが適切でない場合にはこれを検出することができる。
【００９４】
また、処理順序に誤りがある場合や生成された制御プログラム自体に誤りがある場合には、図９の処理により、変数値の違いを検出することができる。
このように、本実施形態では、制御プログラムのデバッグ作業において問題が検出されたとき、制御モデルの位置及び同制御モデルでの処理状態（ブロック結線やストレージ）との関連付けを自動的に行うことができる。
【００９５】
そして、以上説明した作業、すなわち先の図１に示したステップＳ３の処理にあたる制御プログラムのデバッグを行った結果、制御プログラムが妥当である旨判断されれば、次に、同制御プログラムを例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等に焼き付けて（記憶させて）、これを電子制御装置に搭載することとなる。その後、ステップＳ４（図１）の処理、すなわち同制御プログラムを実装した電子制御装置によって実際の車両でのデバッグ、適合を行い、制御プログラムに異常がある旨判断されるときは、制御プログラムや制御モデルの修正を検討することとなるのは前述した通りである。
【００９６】
以上詳述したように、本実施形態によれば、以下の効果が得られるようになる。
（１）制御プログラムをプログラム実行部２２によって実行することでその異常の有無の検査を行うに際し、これを制御モデルのシミュレーションと同期させるようにすることで、これら制御モデルのシミュレーション状況と制御プログラムの実行状況とを簡易に比較することができるようになる。
【００９７】
（２）対応情報作成部１６の作成する対応情報を用いることで、シミュレーション部２０による制御モデルのシミュレーションの実行位置とプログラム実行部２２による制御プログラムの実行位置とを適切に対応付けることができる。
【００９８】
（３）制御モデル及び制御プログラムのいずれか一方にブレークポイントが設定されたときに、同期部２６により他方にもブレークポイントが自動的に設定されるようにした。このため、例えば、外部からユーザが制御モデル及び制御プログラムのうちのいずれか一方を任意に選択してブレークポイントを設定することで上記同期処理が可能となる。
【００９９】
（４）ブレークポイントを制御モデルの各機能ブロック毎に設定可能としたことで、生成される制御プログラムに新たに実行順序が規定される場合であれ、その異常の有無を、制御モデルと対応させつつ簡易に検査することができるようになる。
【０１００】
（５）制御モデルのシミュレーションの順序と制御プログラムのプログラム実行順序とを比較することで、この実行順序の不一致にかかる異常を自動的に検出することができるようになる。
【０１０１】
（６）比較部によって制御モデルのシミュレーションによって生成される値と制御プログラムの実行にかかる変数値とを比較することで、これらの不一致にかかる異常を自動的に検出することができるようになる。
【０１０２】
（７）変数についての異常通知があったとき、図７のステップＳ３１９及び図８のステップＳ３３９においてそれら変数値の少なくとも一方を変更可能とした場合には、次のような効果も奏される。すなわち、変数異常がある旨判断がなされた場合であれ、再度制御モデルのシミュレーション条件と制御プログラムの実行条件とを等しくすることができ、ひいては異常がある旨判断された箇所から異常の有無の検査を再開することが可能となる。
【０１０３】
（８）比較部による比較結果が不一致のときにこれを表示部２８に出力して可視表示させることで、ユーザ自身が異常がある旨判断された箇所を簡易に把握することができるようになる。
【０１０４】
なお、上記実施形態は、以下のように変更して実施してもよい。
・シミュレーション部２０及びプログラム実行部２２の動作の停止箇所は、上述したものに限らない。例えば制御プログラムをプログラム実行部２２により１行ずつ実行及び停止させつつシミュレーション部２０をこれと同期させてもよい。これは、例えば制御プログラム側に１行ずつブレークポイントを設定するとともに、先の図６に示した処理によって制御モデルのブレークポイントを設定することで行ってもよい。
【０１０５】
・シミュレーション部２０やプログラム実行部２２は、必ずしも制御モデルや制御プログラムに入力データを与えることでシミュレーション及びプログラムの実行を行うものに限らない。例えば制御プログラムの制御対象及び同対象を取り巻く環境をコンピュータ上で擬似的に生成しつつ上記制御モデルや制御プログラムの検査を行うものであってもよい。
【０１０６】
・ブレークポイント設定部２４の機能についてこれを上記シミュレーション部２０自身に備えるようにしてもよい。また、同機能を上記プログラム実行部２２自身に備えるようにしてもよい。
【０１０７】
・上記実施形態では、異常の有無の検査に際して用いられる許容範囲を変数値のデータ型に応じて変更するようにしたが、許容範囲の設定の仕方は任意である。また、必ずしも許容範囲を設定する必要はなく、両者の一致のみを異常の有無の判断基準としてもよい。
【０１０８】
・上記実施形態では、変数についての異常通知があった場合に、図７のステップＳ３１９及び図８のステップＳ３３９においてそれら変数値の少なくとも一方を変更可能とすることについても考慮した。これに代えて、例えば正常時に上記変数値としてあえて異常データを入力して制御プログラムの検査を行うように構成してもよい。
【０１０９】
・制御モデルから自動生成される制御プログラムとしては、Ｃ言語にて記述されるものに限らず、適宜のプログラム言語にて記述される制御プログラムであればよい。この制御プログラムが制御モデルの規定する処理について同制御モデルにおいて規定されない実行順序が新たに規定されることがあるものであるなら、この制御プログラムと制御モデルとを同期させて検査をすることは特に有効である。
【０１１０】
・上記実施形態では、同期部２６が、制御モデルのシミュレーション結果と制御プログラムの実行結果とを比較する比較部を備え、比較結果が不一致のときにこれを表示部２８に出力する構成とした。これに代えて、同期部２６が、制御モデルのシミュレーション結果と制御プログラムの実行結果を受信して比較することなく、そのまま表示部２８に出力する構成としてもよい。また、表示部２８への出力は同期部２６を経由せず、直接シミュレーション部２０及びプログラム実行部２２から表示部２８にて表示してもよい。また、上記同期部２６を経由して、あるいは経由せずに出力される各動作結果を、データファイル等として適宜の記憶装置に格納する構成としてもよい。
【０１１１】
・上記対応情報作成部１６や同期部２６等をコンピュータとソフトウェアにて構成する代わりに、専用のハードウェアにて構成してもよい。
・制御プログラムの検査工程としては、モデルベース開発を用いるとともに、制御モデルのシミュレーションと制御プログラムの実行とを同期させつつこれらの異常の有無を検査する範囲で適宜変更してよい。
【０１１２】
・車載エンジンの制御プログラムの作成に限らず、モデルベース開発を採用して制御プログラムを作成する場合には、本発明の適用は有効である。
【図面の簡単な説明】
【０１１３】
【図１】本実施形態にかかる制御プログラムの作成並びに検査手順を示すフローチャート。
【図２】同実施形態にかかる制御プログラムの生成及び検査を行うシステムの構成を示すブロック図。
【図３】制御モデルを例示するブロック図。
【図４】自動生成される制御プログラムを例示する図。
【図５】上記実施形態にかかる制御モデルと制御プログラムとの対応関係を表す対応情報を例示する図。
【図６】同実施形態におけるブレークポイントの設定にかかる処理の手順を示すフローチャート。
【図７】同実施形態にかかるシミュレーション部による処理の手順を示すフローチャート。
【図８】同実施形態にかかるプログラム実行部による処理の手順を示すフローチャート。
【図９】同実施形態にかかる同期部による処理の手順を示すフローチャート。
【符号の説明】
【０１１４】
１０…モデル格納部、１２…自動コード生成部、１４…プログラム格納部、１６…対応情報作成部、１８…対応情報格納部、２０…シミュレーション部、２２…プログラム実行部、２４…ブレークポイント設定部、２６…同期部（比較部）、２８…表示部、３０…結果格納部。
【図１】
2004280786.tif 000003
【図２】
2004280786.tif 000004
【図３】
2004280786.tif 000005
【図４】
2004280786.tif 000006
【図５】
2004280786.tif 000007
【図６】
2004280786.tif 000008
【図７】
2004280786.tif 000009
【図８】
2004280786.tif 000010
【図９】
2004280786.tif 000011