(57)【要約】【課題】制御モデル及びその制御モデルをもとに作成される制御プログラムの両方又は一方を検査する検査装置において、検査をより精密に行えるようにする。【解決手段】モデル格納部１０に格納された制御モデルが有する演算処理ブロック（以下、演算処理Ｂ）を、その演算処理Ｂと同じ処理を表し、かつ演算処理の途中結果の出力箇所が定義された検査ブロックに、検査ブロック置換部１２が置換する。対応情報作成部２０は、制御モデルをもとに作成され、ＥＣＵ３２において実行されるプログラムと、制御モデルとの関連付けを行う。具体的に、演算モデルにおいて途中結果が得られる箇所と、ＥＣＵ３２において、演算処理の途中結果が格納されるメモリ領域とを関連付けする。比較部３４は、演算モデルにおいて得られる途中結果と、プログラムの実行において得られる途中結果とを比較することで、より細かい検査を行う。【選択図】図１
2008310513.tif 000002
【特許請求の範囲】
【請求項１】
制御対象の制御を実現するための各演算処理と、その各演算処理の実行結果のデータ（以下、モデル側演算結果データと言う）の流れとが記述されることでその制御対象の制御仕様を表す制御モデルの模擬実行を行うモデル実行手段と、
前記制御モデルがプログラム言語で表された制御プログラムをコンピュータに実行させるプログラム実行手段と、
前記制御モデルの模擬実行によりその制御モデル内においてやりとりされる前記モデル側演算結果データと、前記制御プログラムにおいてそのモデル側演算結果データに対応して記述されると共にその制御プログラムの実行に際し扱われるデータ（以下、プログラム側演算結果データと言う）とを比較する比較手段と、
前記比較手段による前記モデル側演算結果データと前記プログラム側演算結果データとの比較結果に基づき、前記制御モデル及び前記制御プログラムの両方又は一方の異常を検査する検査手段とを備えた検査装置において、
前記比較手段は、
前記制御モデルにおいて前記演算処理の途中で扱われるデータ（以下、モデル側演算途中データと言う）と、そのモデル側演算途中データに対応するデータであって、前記制御プログラムのうちその演算処理に相当する部分のプログラムの実行途中に扱われるデータ（以下、プログラム側演算途中データと言う）とを比較する途中データ比較手段を備え、
前記検査手段は、
前記途中データ比較手段による前記モデル側演算途中データと前記プログラム側演算途中データとの比較結果にも基づき、前記制御モデル及び前記制御プログラムの両方又は一方の異常を検査することを特徴とする検査装置。
【請求項２】
請求項１に記載の検査装置において、
前記コンピュータには、少なくとも前記プログラム側演算途中データを個別に格納しておくためのメモリが備えられ、
前記制御モデルにおいて前記モデル側演算途中データが現れる箇所と、前記コンピュータのメモリの領域のうちそのモデル側演算途中データに対応する前記プログラム側演算途中データが格納されるメモリ領域とを関連付けする途中データ照合手段を備え、
前記途中データ比較手段は、
前記演算処理に係るモデル側演算途中データと、前記途中データ照合手段により、そのモデル側演算途中データが現れる前記制御モデル中の箇所と関連付けがなされた前記コンピュータのメモリ領域に格納されたデータと、を比較することを特徴とする検査装置。
【請求項３】
請求項２に記載の検査装置において、
前記制御モデルにおいて前記モデル側演算途中データが現れる箇所と、そのモデル側演算途中データに対応する前記プログラム側演算途中データが格納される前記コンピュータのメモリ領域とを関連付けるために前記途中データ照合手段が参照する情報が、前記コンピュータの仕様に応じて複数種類記憶されていることを特徴とする検査装置。
【請求項４】
請求項１ないし請求項３の何れか１項に記載の検査装置において、
前記コンピュータには、少なくとも前記プログラム側演算結果データを個別に格納しておくためのメモリが備えられ、
前記制御モデルにおいて前記モデル側演算結果データが現れる箇所と、前記コンピュータのメモリの領域のうちそのモデル側演算結果データに対応する前記プログラム側演算結果データが格納されるメモリ領域とを関連付けする結果データ照合手段を備え、
前記比較手段は、
前記演算処理に係るモデル側演算結果データと、前記結果データ照合手段により、そのモデル側演算結果データが現れる前記制御モデル中の箇所と関連付けがなされた前記コンピュータのメモリ領域に格納されたデータと、を比較することを特徴とする検査装置。
【請求項５】
請求項４に記載の検査装置において、
前記制御モデルにおいて前記モデル側演算結果データが現れる箇所と、そのモデル側演算結果データに対応する前記プログラム側演算結果データが格納される前記コンピュータのメモリ領域とを関連付けるために前記結果データ照合手段が参照する情報が、前記コンピュータの仕様に応じて複数種類記憶されていることを特徴とする検査装置。
【請求項６】
請求項２又は請求項３に記載の検査装置において、
前記制御モデルにおいて前記モデル側演算途中データが現れる箇所と、そのモデル側演算途中データに対応するプログラム側演算途中データが格納される前記コンピュータのメモリ領域との関連を表す情報が、関連付情報として外部に出力されるように構成されていることを特徴とする検査装置。
【請求項７】
請求項４又は請求項５に記載の検査装置において、
前記制御モデルにおいて前記モデル側演算結果データが現れる箇所と、そのモデル側演算結果データに対応する前記プログラム側演算結果データが格納される前記コンピュータのメモリ領域との関連を表す情報が、関連付情報として外部に出力されるように構成されていることを特徴とする検査装置。
【請求項８】
請求項６又は請求項７に記載の検査装置において、
前記関連付情報は、人がその内容を認識可能な形式で外部に出力されることを特徴とする検査装置。
【請求項９】
請求項１ないし請求項８の何れか１項に記載の検査装置において、
前記制御モデルから、前記コンピュータが実行する前記制御プログラムを前記制御モデルから生成すると共に、その制御モデルとその制御プログラムとの互いに対応する位置の関係を表す情報（以下、同期情報と言う）を生成するプログラム生成手段を備え、
前記比較手段は、前記制御モデルと前記制御プログラムとにおいて、前記同期情報により互いに対応付けがなされている位置において取得できる前記モデル側演算結果データと前記プログラム側演算結果データとを比較することを特徴とする検査装置。
【請求項１０】
請求項９に記載の検査装置において、
前記途中データ比較手段は、前記制御モデルと前記制御プログラムとにおいて、前記同期情報により互いに対応付けがなされている位置において取得できる前記モデル側演算途中データと前記プログラム側演算途中データとを比較することを特徴とする検査装置。
【請求項１１】
請求項９又は請求項１０に記載の検査装置において、
前記制御モデル及び前記制御プログラムの少なくとも何れかにおいて、異常の検査のための検査箇所を指定する検査箇所指定手段を備え、
前記プログラム生成手段は、前記検査箇所指定手段により指定された検査箇所についての前記同期情報を生成するようになっていることを特徴とする検査装置。
【請求項１２】
請求項９ないし請求項１１の何れか１項に記載の検査装置において、
前記プログラム生成手段は、前記制御プログラムのリスト中に、前記同期情報を表すコメント文を付加することを特徴とする検査装置。
【請求項１３】
請求項９ないし請求項１２の何れか１項に記載の検査装置において、
前記プログラム生成手段は、前記同期情報を、人がその内容を認識不可能な形式で生成することを特徴とする検査装置。
【請求項１４】
請求項９ないし請求項１３の何れか１項に記載の検査装置において、
前記制御モデルの記述仕様は複数種類あり、
前記プログラム生成手段は、記述仕様が、前記複数種類の記述仕様の何れかである制御モデルについて、その制御モデルから前記制御プログラムを生成すると共に、前記同期情報を生成することを特徴とする検査装置。
【請求項１５】
請求項１ないし請求項１４の何れか１項に記載の検査装置において、
前記制御モデルにおいて、前記演算処理はモデル化されて記述され、
前記演算処理のモデル（以下、演算処理モデルと言う）を、その演算処理モデルと同じ処理を表し、かつ演算処理の途中のデータの出力箇所（以下、途中データ出力箇所と言う）が定義された別のモデル（以下、途中データ取得用モデルと言う）に置換する置換手段を備え、
前記途中データ比較手段は、前記モデル側演算途中データを、前記途中データ取得用モデルにおける前記途中データ出力箇所を参照して取得できるようになっていることを特徴とする検査装置。
【請求項１６】
請求項１５に記載の検査装置において、
前記制御モデルにおける前記演算処理モデルのうち、前記途中データ取得用モデルへの置換対象とする演算処理モデルを指定する置換モデル指定手段を備え、
前記置換手段は、前記置換モデル指定手段により指定された演算処理モデルを、前記途中データ取得用モデルに置換することを特徴とする検査装置。
【請求項１７】
請求項１６に記載の検査装置において、
前記置換モデル指定手段は、前記制御モデルにおける前記演算処理モデルのうち、前記途中データ取得用モデルへの置換対象とする演算処理モデルを、使用者の入力に基づき指定することを特徴とする検査装置。
【請求項１８】
請求項１５ないし請求項１７の何れか１項に記載の検査装置において、
前記制御モデルを記憶装置に記憶する記憶制御手段を備え、
その記憶制御手段は、その制御モデルにおける前記演算処理モデルが前記途中データ取得用モデルに置換された新たな制御モデルを、使用者の入力により指示された識別情報を付して前記記憶装置に記憶するようになっていることを特徴とする検査装置。
【請求項１９】
請求項１ないし請求項１８の何れか１項に記載の検査装置において、
前記制御モデルの記述仕様は複数種類あり、
前記モデル実行手段は、記述仕様が、前記複数種類の記述仕様の何れかである制御モデルの模擬実行を行うことを特徴とする検査装置。
【請求項２０】
制御対象の制御を実現するための各演算処理と、その各演算処理の実行結果のデータ（以下、モデル側演算結果データと言う）の流れとが記述されることでその制御対象の制御仕様を表す制御モデルの模擬実行を行うモデル実行手段と
前記制御モデルがプログラム言語で表された制御プログラムをコンピュータに実行させるプログラム実行手段と、
前記制御モデルの模擬実行によりその制御モデル内においてやりとりされる前記モデル側演算結果データと、前記制御プログラムにおいてそのモデル側演算結果データに対応して記述され、その制御プログラムの実行に際し扱われるプログラム側演算結果データとを比較する比較手段と、
前記比較手段による前記モデル側演算結果データと前記プログラム側演算結果データとの比較結果に基づき、前記制御モデル及び前記制御プログラムの両方又は一方の異常を検査する検査手段とを備えた検査装置に用いられ、前記コンピュータ又は他のコンピュータ（以下、各種コンピュータと言う）を前記比較手段及び前記検査手段のそれぞれとして機能させるプログラムであって、
前記各種コンピュータを、さらに、
前記制御モデルの模擬実行において前記演算処理の途中で扱われるデータ（以下、モデル側演算途中データと言う）と、そのモデル側演算途中データに対応するデータであって、前記制御プログラムのうちその演算処理に相当する部分のプログラムの実行において扱われるデータ（以下、プログラム側演算途中データと言う）とを比較する途中データ比較手段と、
前記モデル側演算途中データと前記プログラム側演算途中データとの比較結果にも基づき、前記制御モデル及び前記制御プログラムの両方又は一方の異常を検査する途中データ検査手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御仕様をモデル形式で記述した制御モデル及びその制御モデルをもとに作成される制御プログラムの検査に用いられる検査装置に関する。
【背景技術】
【０００２】
従来、例えば車両を制御する電子制御装置に実装する制御プログラムの開発においては、一例として、以下のような方法が採られている。
（１）制御仕様をモデル形式で記述する（制御モデルを作成する）。制御モデルは、例えば、所定の演算処理を表す演算ブロック、及び演算ブロック間を接続する結線などから構成される。結線は、例えば演算ブロックの演算処理結果の流れを示すものである。
（２）制御モデルをコンピュータ上でシミュレーションし、異常があるか否か、制御仕様を満たすか否かなどを検証すると共に、適宜制御モデルの修正を行う。
（３）修正後の制御モデルを、例えばプログラム生成装置を用いてプログラム言語に変換する。つまり、制御プログラムを作成する。尚、プログラム生成装置については、例えば特開２００３−２９６１１１号公報に記載されている。
（４）制御モデルをもとに作成された制御プログラムを実行し、異常の有無を検査すると共に、適宜、その制御プログラムの修正を行う。
（５）さらに、修正後の制御プログラムを電子制御装置に実装し、適合性等を検証すると共に、適宜その制御プログラムの修正を行う。電子制御装置は、実車に搭載されていても良い。つまり、実車にて適合性等の検証を行っても良い。
【０００３】
尚、上記（４）、（５）において、制御モデルを修正しても良い（上記（２）に戻っても良い）。
制御モデルの構築自体は、制御プログラムの作成よりも簡易に行うことができるため、上記のような開発方法を採用することで、制御プログラム開発の効率化を図ることができる。
【０００４】
一方で、上記のような開発方法を採用して開発の効率化を図ったとしても、制御モデル及び制御プログラムのデバッグ（検証及び修正を行うこと）は必要であり、このデバッグに多大な工数を要することが多々ある。特に、近年では、制御の高度化・複雑化に伴い制御モデル及び制御プログラムのボリュームも増加し、デバッグの工数増大の問題は顕著になっている。加えて、上記のように、制御モデルをコンピュータ上でシミュレーションしたり、制御プログラムを電子制御装置に実装したりしてデバッグを行う場合、制御モデル及び制御プログラムの何れか一方に何らかの問題が発見されたときに、その問題の箇所と対応する箇所を、他方において特定することが極めて困難となってしまい、デバッグの工数がますます増大してしまうおそれがある。
【０００５】
そこで、本願出願人は、制御モデル及びその制御モデルをもとに作成される制御プログラムを、その両者の対応をとりつつ実行することで、その制御モデル及び制御プログラムの検査を容易に行うことができるようにした検査装置を考えた（特許文献１参照）。
【０００６】
特許文献１の検査装置は、制御モデルから制御プログラムを作成すると共に、その作成の際に、その両者の対応関係を表す情報を予め作成しておく。
検査に際しては、検査装置が、使用者の入力に基づき制御モデル或いは制御プログラムに検査ポイントを設定する。検査ポイントは、演算ブロック単位（或いは演算ブロックを表すひとかたまりのプログラム単位）で設定することができる。
【０００７】
そして例えば、検査装置は、制御モデルを構成する演算ブロックのうち、所定の演算ブロックに検査ポイントを設定すると、その制御モデルをもとに作成された制御プログラムのうち、その所定の演算ブロックを表すプログラムの部分にも検査ポイントを設定する。そして、制御モデルにおける検査ポイントでの演算結果と、制御プログラムにおける検査ポイントでの演算結果とを比較し、制御モデル及び制御プログラムの異常の有無を検査する。
【０００８】
制御モデルと制御プログラムとの間において、対応する検査ポイントでは同じ演算結果が得られることが前提であり、両者の演算結果が異なっていれば、制御モデル或いは制御プログラムに異常があることが分かる。
【特許文献１】特開２００５−２０２９２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、上記特許文献１の検査装置では、前述のように、演算ブロック単位で検査ポイントを設定できるようになっているが、検査の自由度という点では、なお改善の余地を残すものとなっている。
【００１０】
具体的に、演算ブロックにおいては、例えば数値（定数や変数）が１つ又は複数個与えられると共に、その与えられた数値をもとに演算が実行されるが、この演算は、複数個或いは複数種類の加・減・乗・除算から構成されるのが一般的である。つまり、演算ブロックでは、与えられた数値をもとに加・減・乗・除算が１回又は複数回実行され、最終的な実行結果が、その演算ブロックにおける演算結果として出力される場合がある。
【００１１】
このため、例えば演算ブロックの演算結果に異常が認められた場合、その演算の前提となる数値の入力の時点で異常がなかったか否か、或いは入力された数値をもとに実行される加・減・乗・除算等に異常がなかったか否か、が検証できることがより好ましい。検査をより精密に行うことができれば、異常の箇所或いは原因の特定がよりし易くなるためである。
【００１２】
本発明は、このような点に鑑みなされたものであり、制御モデル及びその制御モデルをもとに作成される制御プログラムの両方又は一方を検査する検査装置において、検査をより精密に行えるようにすることを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するためになされた請求項１に記載の検査装置は、制御対象の制御を実現するための各演算処理と、その各演算処理の実行結果のデータ（以下、モデル側演算結果データと言う）の流れとが記述されることでその制御対象の制御仕様を表す制御モデルの模擬実行を行うモデル実行手段と、制御モデルがプログラム言語で表された制御プログラムをコンピュータに実行させるプログラム実行手段と、制御モデルの模擬実行によりその制御モデル内においてやりとりされるモデル側演算結果データと、制御プログラムにおいてそのモデル側演算結果データに対応して記述されると共にその制御プログラムの実行に際し扱われるデータ（以下、プログラム側演算結果データと言う）とを比較する比較手段と、比較手段によるモデル側演算結果データとプログラム側演算結果データとの比較結果に基づき、制御モデル及び制御プログラムの両方又は一方の異常を検査する検査手段とを備えている。
【００１４】
そして、比較手段は、制御モデルにおいて演算処理の途中で扱われるデータ（以下、モデル側演算途中データと言う）と、そのモデル側演算途中データに対応するデータであって、制御プログラムのうちその演算処理に相当する部分のプログラムの実行途中に扱われるデータ（以下、プログラム側演算途中データと言う）とを比較する途中データ比較手段を備えており、検査手段は、途中データ比較手段によるモデル側演算途中データとプログラム側演算途中データとの比較結果にも基づき、制御モデル及び制御プログラムの両方又は一方の異常を検査するようになっている。
【００１５】
この請求項１の検査装置では、演算処理の実行結果データ（モデル側演算結果データ及びプログラム側演算結果データ）を検査するのみならず、演算処理の途中のデータ（モデル側演算途中データ及びプログラム側演算途中データ）も検査する。このため、検査対象がより細かくなって、検査をより精密に行えるようになる。また、演算処理の途中のデータを検査することで、異常が生じた場合のその異常の原因をより精密に特定することができる。これによれば、異常に対する対処が簡単となる。つまり、制御モデルや制御プログラムのデバッグがし易くなって、デバッグ工数を削減できるようになる。
【００１６】
ところで、制御プログラムにおいては、計算途中の個々の計算結果のデータが定義されない場合も多々ある。そこで、請求項２のように構成すると良い。
請求項２の検査装置は、請求項１の検査装置において、コンピュータには、少なくともプログラム側演算途中データを個別に格納しておくためのメモリが備えられ、制御モデルにおいてモデル側演算途中データが現れる箇所と、コンピュータのメモリの領域のうちそのモデル側演算途中データに対応するプログラム側演算途中データが格納されるメモリ領域とを関連付けする途中データ照合手段を備えている。
【００１７】
そして、途中データ比較手段は、演算処理に係るモデル側演算途中データと、途中データ照合手段により、そのモデル側演算途中データが現れる制御モデル中の箇所と関連付けがなされたコンピュータのメモリ領域に格納されたデータと、を比較するようになっている。
【００１８】
つまり、比較手段は、制御プログラムにおいてプログラム側演算途中データが定義されていない場合でも、そのプログラム側演算途中データが格納されるメモリから、そのプログラム実行途中データが取得できる。このため、演算処理の途中のデータを確実に比較できるようになる。
【００１９】
ところで、制御プログラムの実行に際し、その制御プログラムにおいてプログラム側演算途中データが定義されるようにその制御プログラムを一旦変更・修正する方法も考えられるが、この場合、変更・修正のための工数が発生してしまう。また、実装に際し、制御プログラムを変更・修正前のものに戻すと、検査時の制御プログラムと実際に実装される際の制御プログラムとが異なってしまうこととなるため、好ましくない。
【００２０】
この点、請求項２の検査装置によれば、そのように制御プログラムを変更・修正することなく、精密な検査を実現できるようになる。
次に、請求項３の検査装置は、請求項２の検査装置において、制御モデルにおいてモデル側演算途中データが現れる箇所と、そのモデル側演算途中データに対応するプログラム側演算途中データが格納されるコンピュータのメモリ領域とを関連付けるために途中データ照合手段が参照する情報が、コンピュータの仕様に応じて複数種類記憶されている。
【００２１】
例えば、コンピュータの仕様によっては、データをメモリに格納する際のルールが異なったりする場合がある。
この点、請求項３の検査装置では、そのようなルールの違いにも対応し得る。つまり、途中データ照合手段は、複数種類のコンピュータのそれぞれに応じて、上記の関連付けを行うことができる。このため、汎用性が広がる。
【００２２】
次に、請求項４の検査装置は、請求項１〜３の検査装置において、コンピュータには、少なくともプログラム側演算結果データを個別に格納しておくためのメモリが備えられ、制御モデルにおいてモデル側演算結果データが現れる箇所と、コンピュータのメモリの領域のうちそのモデル側演算結果データに対応するプログラム側演算結果データが格納されるメモリ領域とを関連付けする結果データ照合手段を備えている。
【００２３】
そして、比較手段は、演算処理に係るモデル側演算結果データと、結果データ照合手段により、そのモデル側演算結果データが現れる制御モデル中の箇所と関連付けがなされたコンピュータのメモリ領域に格納されたデータと、を比較するようになっている。
【００２４】
つまり、演算処理の実行結果データ（モデル側演算結果データ及びプログラム側演算結果データ）も、比較手段がメモリから取得する。尚、プログラム側演算結果データは、請求項１にも記載したように、制御プログラム中に記述される（定義される）ものであるが、この場合は、制御プログラムの実行によってそのプログラム側演算結果データは必ず現れる（このため取得が可能である）。この請求項４の装置では、そのプログラム側演算結果データもメモリから取得するため、より確実にモデル側演算結果データとの比較ができるようになる。また、そのプログラム演算結果データをメモリに格納する時点、或いはメモリから取得する時点で異常が生じてデータ内容が書き換わってないか否か、というような点も検査し得るようになり、検査精度を向上させることができる。
【００２５】
次に、請求項５の検査装置は、請求項４の検査装置において、制御モデルにおいてモデル側演算結果データが現れる箇所と、そのモデル側演算結果データに対応するプログラム側演算結果データが格納されるコンピュータのメモリ領域とを関連付けるために結果データ照合手段が参照する情報が、コンピュータの仕様に応じて複数種類記憶されていることを特徴としている。
【００２６】
これによれば、請求項３について述べた効果と同じ効果を得ることができる。
次に、請求項６の検査装置は、請求項２、３の検査装置において、制御モデルにおいてモデル側演算途中データが現れる箇所と、そのモデル側演算途中データに対応するプログラム側演算途中データが格納されるコンピュータのメモリ領域との関連を表す情報が、関連付情報として外部に出力されるように構成されていることを特徴としている。
【００２７】
また、請求項７の検査装置は、請求項４、５の検査装置において、制御モデルにおいてモデル側演算結果データが現れる箇所と、そのモデル側演算結果データに対応するプログラム側演算結果データが格納されるコンピュータのメモリ領域との関連を表す情報が、関連付情報として外部に出力されるように構成されていることを特徴としている。
【００２８】
これによれば、例えば検査装置の使用者が、その出力された関連付情報を利用できるようになる。例えば、その関連付情報を他の装置でも利用できるようになる。そして、関連付情報を他の装置において利用することで、検査の効率を上げることができる。
【００２９】
ここで特に、請求項６、７の検査装置では、請求項８のように構成すると良い。
請求項８の装置では、関連付情報は、人がその内容を認識可能な形式で外部に出力されるようになっている。
【００３０】
これによれば、例えば検査装置の使用者が、関連付情報の内容を理解できるようになって、その関連付情報を利用し易くなるという効果を得ることができる。
ところで、請求項１〜８の検査装置では、請求項９のように構成すると、より検査の効率を上げることができる。
【００３１】
請求項９の検査装置では、コンピュータが実行する制御プログラムを制御モデルから生成すると共に、その制御モデルとその制御プログラムとの互いに対応する位置の関係を表す情報（以下、同期情報と言う）を生成するプログラム生成手段を備えている。
【００３２】
そして、比較手段は、制御モデルと制御プログラムとにおいて、同期情報により互いに対応付けがなされている位置において取得できるモデル側演算結果データとプログラム側演算結果データとを比較する。
【００３３】
これによれば、制御モデルと制御プログラムとにおいて、対応付けがなされる位置を、検査したい範囲や検査の目的等に応じていかようにもすることができる。そして例えば、比較手段が、全く無作為に演算処理の実行結果データ（モデル側演算結果データ及びプログラム側演算結果データ）を比較することを防止することができる。尚、制御モデルと制御プログラムとにおいて、全体としてまんべんなく対応付けがなされても良いし、所定の領域に集中して対応付けがなされても良い。この請求項９の装置によれば、所望の位置における演算処理の実行結果データを比較するようにして、検査の効率化を図ることができる。
【００３４】
また尚、プログラム生成手段は、同期情報を、制御プログラムと共に生成しても良い（例えば同じファイルとして生成しても良い）し、全く別に生成しても良い（別ファイルとして生成しても良い）。
【００３５】
次に、請求項１０の検査装置は、請求項９に記載の検査装置において、途中データ比較手段は、制御モデルと制御プログラムとにおいて、同期情報により互いに対応付けがなされている位置において取得できるモデル側演算途中データとプログラム側演算途中データとを比較する。
【００３６】
これによれば、比較手段が、全く無作為に演算処理の途中のデータ（モデル側演算途中データ及びプログラム側演算途中データ）を比較することを防止することができ、請求項９と同じ効果を得ることができる。
【００３７】
そして、請求項９、１０では、具体的に、請求項１１のように構成すれば良い。
請求項１１の検査装置は、制御モデル及び制御プログラムの少なくとも何れかにおいて、異常の検査のための検査箇所を指定する検査箇所指定手段を備え、プログラム生成手段は、検査箇所指定手段により指定された検査箇所についての同期情報を生成するようになっている。
【００３８】
具体的に、検査箇所指定手段により検査箇所が指定され、その検査箇所についての同期情報が生成されるため、請求項９、１０の検査の効率化を図ることができるという効果をより確実に得ることができる。尚、検査箇所指定手段は、使用者の入力に基づき検査箇所を指定しても良いし、自動的に検査箇所を指定しても良いことは勿論である。
【００３９】
次に、請求項１２の検査装置は、請求項９〜１１の検査装置において、プログラム生成手段は、制御プログラムのリスト中に、同期情報を表すコメント文を付加する。
制御プログラム中に同期情報を付して例えば表示装置に表示すれば、制御プログラム及びその制御プログラムと制御モデルとの互いに対応する位置の情報が一目瞭然であり、使用者にとって分かりやすいものとなる。尚、コメント文は、制御プログラムのリスト中において、制御プログラムの本文の周辺に記述されるようにしても良いし、制御プログラムの本文とは隔離して記述されるようにしても良い。後者によれば、制御プログラムの本文及びコメント文の可読性が向上する。
【００４０】
次に、請求項１３の検査装置では、請求項９〜１２の検査装置において、プログラム生成手段は、同期情報を、人がその内容を認識不可能な形式で生成する。
これによれば、同期情報が、例えば第三者に不要に知られてしまうことを防止することができる。
【００４１】
次に、請求項１４の検査装置は、請求項９〜１３の検査装置において、制御モデルの記述仕様は複数種類あり、プログラム生成手段は、記述仕様が、複数種類の記述仕様の何れかである制御モデルについて、その制御モデルから制御プログラムを生成すると共に、同期情報を生成する。
【００４２】
つまり、プログラム生成手段は、記述仕様が異なる複数種類の制御モデルにつて、制御プログラム及び同期情報を生成する。制御モデルの記述仕様は、例えば制御モデルを作成するためのアプリケーションによって異なるのが一般的である。
【００４３】
この点、請求項１４の検査装置では、プログラム生成手段は、記述仕様が異なる複数種類の制御モデルのそれぞれに対応して、制御プログラム及び同期情報を生成することができるため、汎用性が広がる。
【００４４】
次に、請求項１５の検査装置は、請求項１〜１４の検査装置において、演算処理のモデル（以下、演算処理モデルと言う）を、その演算処理モデルと同じ処理を表し、かつ演算処理の途中のデータの出力箇所（以下、途中データ出力箇所と言う）が定義された別のモデル（以下、途中データ取得用モデルと言う）に置換する置換手段を備えている。
【００４５】
そして、途中データ比較手段は、モデル側演算途中データを、途中データ取得用モデルにおける途中データ出力箇所を参照して取得できるようになっている。
尚、演算処理モデルとは、例えば演算処理を実現するものを概念的に表したものであり、例えば所定の演算処理を実現するように定義されたブロック、シンボル、等である。このような演算処理モデルでは、与えられた数値をもとに所定の演算処理が実現されると共に、演算処理の実行結果が出力される。このような演算処理モデルを、途中データ出力箇所が定義された途中データ取得用モデルに置換することで、その演算処理の途中のデータが容易に取得できるようになる。このため、その演算処理の途中のデータを容易に検査できるようになる。
【００４６】
次に、請求項１６の検査装置は、請求項１５の検査装置において、制御モデルにおける演算処理モデルのうち、途中データ取得用モデルへの置換対象とする演算処理モデルを指定する置換モデル指定手段を備え、置換手段は、置換モデル指定手段により指定された演算処理モデルを、途中データ取得用モデルに置換するようになっている。
【００４７】
これによれば、制御モデルにおける演算処理モデルのうち、所望の演算処理モデルを、途中データ取得用モデルに置換することができる。例えば、とりわけ演算処理がより複雑な演算処理モデルが、途中データ取得用モデルに置換されるようにすることができる。このため、例えばその演算処理がより複雑な演算処理モデルについて、より詳細な検査を簡単に行うことができるようになる。請求項１６の検査装置では、このようにして、検査の効率を向上させることができる。
【００４８】
次に、請求項１６の検査装置では、請求項１７のように構成するとより好ましい。
請求項１７の検査装置は、請求項１６の検査装置において、置換モデル指定手段は、制御モデルにおける演算処理モデルのうち、途中データ取得用モデルへの置換対象とする演算処理モデルを、使用者の入力に基づき指定する。
【００４９】
つまり、検査装置の使用者が、置換対象の演算処理モデルを指定できるようになっている。これによれば、使用者の使い勝手が向上し、好ましい。
次に、請求項１８の検査装置は、請求項１５〜１７の検査装置において、制御モデルを記憶装置に記憶する記憶制御手段を備え、その記憶制御手段は、その制御モデルにおける演算処理モデルが途中データ取得用モデルに置換された新たな制御モデルを、使用者の入力により指示された識別情報を付して記憶装置に記憶するようになっている。
【００５０】
この場合において、記憶制御手段が新たな制御モデルに識別情報（例えばモデル名）を付すと共に、その識別情報で良いか否かの許可が使用者の入力により得られて時点ではじめて、その新たな制御モデルがその識別情報で記憶されるようにしても良い。また、使用者が、識別情報を直接入力したり、記憶制御手段により付された識別情報を修正したりするように構成しても良い。この請求項１８の装置によれば、使用者の使い勝手が向上する。
【００５１】
次に、請求項１９の検査装置は、請求項１〜１８の検査装置において、制御モデルの記述仕様は複数種類あり、モデル実行手段は、記述仕様が、複数種類の記述仕様の何れかである制御モデルの模擬実行を行う。
【００５２】
請求項１４にて前述したように、制御モデルの記述仕様は、例えば制御モデルを作成するためのアプリケーションによって異なるのが一般的である。
この点、請求項１９の検査装置では、モデル実行手段は、記述仕様が異なる複数種類の制御モデルのそれぞれに対応して、その制御モデルの模擬実行を行うことができるため、汎用性が広がる。
【００５３】
次に、請求項２０の発明は、制御対象の制御を実現するための各演算処理と、その各演算処理の実行結果のデータ（以下、モデル側演算結果データと言う）の流れとが記述されることでその制御対象の制御仕様を表す制御モデルの模擬実行を行うモデル実行手段と、制御モデルがプログラム言語で表された制御プログラムをコンピュータに実行させるプログラム実行手段と、制御モデルの模擬実行によりその制御モデル内においてやりとりされるモデル側演算結果データと、制御プログラムにおいてそのモデル側演算結果データに対応して記述され、その制御プログラムの実行に際し扱われるプログラム側演算結果データとを比較する比較手段と、比較手段によるモデル側演算結果データとプログラム側演算結果データとの比較結果に基づき、制御モデル及び制御プログラムの両方又は一方の異常を検査する検査手段とを備えた検査装置に用いられ、コンピュータ又は他のコンピュータ（以下、各種コンピュータと言う）を比較手段及び検査手段のそれぞれとして機能させるプログラムである。
【００５４】
そして、そのプログラムは、各種コンピュータを、さらに、制御モデルの模擬実行において演算処理の途中で扱われるデータ（以下、モデル側演算途中データと言う）と、そのモデル側演算途中データに対応するデータであって、制御プログラムのうちその演算処理に相当する部分のプログラムの実行において扱われるデータ（以下、プログラム側演算途中データと言う）とを比較する途中データ比較手段と、モデル側演算途中データとプログラム側演算途中データとの比較結果にも基づき、制御モデル及び制御プログラムの両方又は一方の異常を検査する途中データ検査手段として機能させる。
【００５５】
このようなプログラムであれば、どのようなコンピュータでも利用でき、また、コンピュータにおいて、既存の機能に容易に追加することができ、汎用性が広がる。尚、例えば上述した各手段、具体的に、モデル実行手段、プログラム実行手段、途中データ照合手段、結果データ照合手段、プログラム生成手段、検査箇所指定手段、置換手段、置換モデル指定手段、及び記憶制御手段のそれぞれとしてコンピュータを機能させるプログラムを設けても良いことは勿論である。
【発明を実施するための最良の形態】
【００５６】
以下に、本発明の実施形態を図面に基づき説明する。
まず、前提として、制御プログラムの開発手順の概要について説明する。尚、この開発手順については、背景技術の欄にも同じ内容を記載している。
（１）まず、開発者が、車両に搭載する電子制御装置の性能や開発のコンセプト等に基づいて、実現したい仕様（以下、要求仕様と記載する）を定義すると共に、例えば所定のアプリケーションソフト等を用いて、その要求仕様を表す制御モデルを構築する。
（２）次に、その構築した制御モデルのシミュレーションを例えばコンピュータ上で実行し、その制御モデルが妥当な機能や性能を有するものであるか否かを検証する。また、その検証結果に基づき、適宜、制御モデルを修正する。
（３）次に、制御モデルから、その制御モデルを表す制御プログラムを生成する。尚、この際、制御モデルから制御プログラムを自動生成するプログラム生成装置が一般的に用いられる。
（４）制御プログラムをコンピュータに実行させ、その制御プログラムの異常の有無を検査したり、制御プログラムが制御モデルと同じ機能・性能を有するか否かを検査したりする。そして、制御プログラムに異常がある場合、適宜修正する。
（５）さらに、制御プログラムを実装した電子制御装置を車両に搭載し、実際の車両でデバッグ（検査及び修正）、及び適合検査を行う。
【００５７】
この一連の手順は、制御プログラムが妥当と判断されるまで繰り返し行われる。
ここで、図１は、上記のような開発手順において、制御プログラムの生成、及びその制御プログラム、制御モデルの検査に用いられる本発明が適用された検査装置１の概略構成を表すブロック図である。
【００５８】
図１に示すように、この検査装置１にはまず、モデル格納部１０が設けられている。このモデル格納部１０には、開発者により構築されると共に検証がなされた制御モデルが格納される。
【００５９】
図２は、モデル格納部１０に格納される制御モデルの一例を表したものである。
図２の制御モデルは、所定の演算処理を表す演算処理ブロックＢ１〜Ｂ１０、及びそのＢ１〜Ｂ１０を接続することでデータの流れを示す結線とから構成されている。尚、以下、演算処理ブロックＢ１〜Ｂ１０を記載する場合、「演算処理ブロック」の文言を省略し、単にＢ１，Ｂ２・・・Ｂ１０というように記載する。
【００６０】
Ｂ１〜Ｂ３は、それぞれ、演算処理として変数の読込み処理を表す演算処理ブロックである。具体的に、Ｂ１は、変数Ａ（ｒａｍＡ）を読み込む。Ｂ２は、変数Ｂ（ｒａｍＢ）を読み込む。Ｂ３は、変数Ｃ（ｒａｍＣ）を読み込む。
【００６１】
そして、Ｂ１〜Ｂ３は、それぞれ、前述の結線により、Ｂ４と接続されている。つまり、Ｂ１〜Ｂ３により読み込まれた変数Ａ〜Ｃは、Ｂ４に入力される。
Ｂ４は、入力された数値に基づき演算処理を行う演算処理ブロックである。
【００６２】
変数Ａは、Ｂ４において乗算（「×」）が定義されたポート１に入力され、変数Ｂは、同Ｂ４の除算（「÷」）が定義されたポート２に入力され、変数Ｃは、同Ｂ４の乗算（「×」）が定義されたポート３に入力される。そして、Ｂ４は、変数Ａ÷変数Ｂ×変数Ｃという演算処理を実現する。
【００６３】
Ｂ５は、定数Ｘを出力する演算処理ブロックである。
次に、Ｂ７は、２つの数値の大小を比較する演算処理を行う演算処理ブロックである。Ｂ７のポート１にはＢ４の演算処理結果が入力され、Ｂ７のポート２にはＢ５の定数Ｘが入力される。Ｂ７は、ポート１≧ポート２という演算処理を実行し、真なら（比較式が成立したならば）、トリガ信号をＢ９に出力し、偽なら（比較式が成立しないなら）、トリガ信号を出力しないようになっている。
【００６４】
Ｂ６は、変数Ｄ（ｒａｍＤ）を読み込んで出力する演算処理ブロックである。
Ｂ８は、定数Ｙを出力する演算処理ブロックである。
Ｂ９は、入力される数値を、トリガ信号に応じて切り換えて出力する演算処理ブロックである。Ｂ９のポート１には、Ｂ６の変数Ｄが入力され、同Ｂ９のポート２には、Ｂ８の定数Ｘが入力される。そして、Ｂ９は、Ｂ７からのトリガ信号が入力されている間、つまり、変数Ａ÷変数Ｂ×変数Ｃ≧定数Ｘが成立しているならば、Ｂ６から入力される変数Ｄを出力し、一方、変数Ａ÷変数Ｂ×変数Ｃ≧定数Ｘが成立していないならば、Ｂ８からの定数Ｙを出力するようになっている。
【００６５】
Ｂ１０には、Ｂ９からの数値が入力される。そして、そのＢ１０は、Ｂ９から入力された値を変数Ｅ（ｒａｍＥ）として書き込む演算処理ブロックである。
図１に戻り、検査ブロック置換部１２は、制御モデルが有するＢ１〜Ｂ１０のような演算処理ブロックを、データの出力箇所をより細かく定義した検査ブロックに置換する機能を有する。図３に、検査ブロックの一例を示す。
【００６６】
図３の検査ブロックは、図２のＢ４に対応するものである。
具体的に、図３に示す検査ブロックは、図２のＢ４と同じ処理を表すと共に、データの出力箇所がより細かく定義されている。この点について説明すると、図３の検査ブロックは、Ｂ４と異なり、ポート１〜３のそれぞれに対応して、データの出力箇所（検査ポイント）が定義されている。
【００６７】
各検査ポイントの定義は以下のようなものである。
検査ポイント１では、少なくともポート１の入力値が取得できる。検査ポイント２では、少なくともポート２の入力値及びポート１÷ポート２の結果が取得できる。検査ポイント３では、少なくともポート３の入力値及び（ポート１÷ポート２）×ポート３の結果が取得できる。
【００６８】
次に、図４は、検査ブロック置換部１２が実行する処理を表すフローチャートである。
この処理は、演算処理ブロックを検査ブロックに置換する処理であり、まず、Ｓ１１０で、モデル格納部１０に格納された制御モデルを読み込む。
【００６９】
次に、Ｓ１２０に移行し、ライブラリ格納部１２ａ（図１参照）から、検査ブロックライブラリを読み込む。検査ブロックライブラリは、図３のような検査ブロックを複数種類記憶したデータベースであり、ライブラリ格納部１２ａは、その検査ブロックライブラリの格納場所である。
【００７０】
次に、Ｓ１３０に進み、制御モデルの演算処理ブロックが、検査ブロックに置換可能か否かを判定する。具体的に、演算処理ブロックと置換可能な検査ブロックが、ライブラリ格納部１２ａに格納されているか否かを判定する。ここでは、制御モデルに含まれる複数の演算処理ブロックのそれぞれについて順番に判定する趣旨であるが、まず、制御モデルに含まれる演算処理ブロックのうち、所定の１個目の演算処理ブロックについて判定する。尚、判定する順番は、どのような順番でも良い。例えば、制御モデルにおいて一番左に配置された演算処理ブロックを１個目とし、一番右に配置された演算処理ブロックを最後とするような順番でも良い。また、左右を逆にしても良いし、上下で順番を定めても良い。また、各演算処理のデータの流れに沿った順番にしても良い。
【００７１】
Ｓ１３０で、検査ブロックに置換可能でないと判定すると（Ｓ１３０：ＮＯ）、Ｓ１６０に移行する。
一方、Ｓ１３０で、検査ブロックに置換可能であると判定すると（Ｓ１３０：ＹＥＳ）、Ｓ１４０に移行し、その置換可能と判定された演算処理ブロックを、置換可能な検査ブロックに置換する。そして次に、Ｓ１５０に進む。
【００７２】
Ｓ１５０では、置き換えられた側の古い演算処理ブロックとつながりのあった周辺の演算処理ブロックと、置き換えた新規の検査ブロックとの結線の位置を調整する。そして次に、Ｓ１６０に進む。
【００７３】
Ｓ１６０では、今回の演算処理ブロックは、制御モデルの含まれる演算処理ブロックのうち、Ｓ１３０の判定対象の最後の演算処理ブロックか否かを判定する。
Ｓ１６０で、判定対象の最後の演算処理ブロックであると判定すると（Ｓ１６０：ＹＥＳ）、全ての演算処理ブロックについて置換可能か否かを判定したと判断して、Ｓ１７０に移行し、現在の制御モデルをモデル格納部１０に保存する。この際、もともと格納されていた変更前の制御モデルとは別名で（異なる識別情報を付して）保存するようにするが、保存の際、その別名で良いか否かの許可を求める情報を、図１の後述する表示部３６に表示し、使用者の入力により許可されることによって初めて、その別名で保存する。
【００７４】
一方、Ｓ１６０で、判定対象の最後の演算処理ブロックでないと判定すると（Ｓ１６０：ＮＯ）、Ｓ１８０に進み、次の演算処理ブロックを選択する。そして、再びＳ１３０に戻る。Ｓ１８０から移行したＳ１３０では、そのＳ１８０で選択された演算処理ブロックについて、検査ブロックに置換可能か否かを判定する。後の処理については、前述した通りである。
【００７５】
図１に戻り、自動コード生成部１４は、モデル格納部１０に格納された制御モデルに基づいて、その制御モデルが例えばＣ言語にて記述された制御プログラム（ソースプログラム）を自動生成する。また、この自動コード生成部１４は、制御モデルとその制御モデルをもとに作成したソースプログラムとの互いに対応する位置の関係を表す情報（以下、同期情報と記載する）を生成する。この同期情報は、ソースプログラムのリスト中においてコメントとして生成される（記述される）。
【００７６】
図５は、自動コード生成部１４により自動生成されたソースプログラムの一例である。図５のソースプログラムは、図２の制御モデルに対応する。尚、…（１）〜…（１５）の符号は、説明の便宜上付したものであり、ソースプログラムを構成するものではない。
【００７７】
図５のソースプログラムにおいて、（１）〜（３）、（６）、（１１）、（１４）はコメントであり、それ以外の（４）、（５）、（７）〜（１０）、（１２）、（１３）、（１５）はプログラム本文である。コメントは、制御モデルの所定の位置を示すと共に（以下、コメントが指示する制御モデル中の位置をコメント指示モデル位置と記載する）、ソースプログラムにおける所定の位置に記載される。そして、例えばそのコメントの後の列のプログラム本文が、コメント指示モデル位置と対応している。さらに、コメント指示モデル位置は、制御モデル中の検査箇所を示すものでもある。後述するが、これにより、コメント指示モデル位置におけるデータが取得され得るようになる。そして、取得されたそのデータと制御プログラムの実行得結果とが比較される。
【００７８】
また、ソースプログラムが例えば表示部３６に表示される際、コメントは、本実施形態では、使用者が認識不可能なように表示される。例えば暗号表示される。尚、使用者が認識可能なように表示しても良いことは勿論である。
【００７９】
例えば、ソースプログラムの（４）の列、具体的に、「ｒａｍＡ／ｒａｍＢ＊ｒａｍＣ≧ｃｏｎｓｔＸが真ならば（或いは偽ならば）」という内容を表す列は、制御モデルのＢ１〜Ｂ５、Ｂ７、及びＢ９におおよそ対応する。尚、１ないし複数のプログラム列が１ないし複数の演算処理ブロックと対応すると共に、その切り分けを明確に記載することは難しいため、上記のように、おおよそ対応する、と表現している。
【００８０】
そして、（１）のコメントは、例えばその後に記載された（４）のプログラムと、制御モデルのＢ９（Ｓｗｉｔｃｈ）とがおおよそ対応することを表し、（２）のコメントは、（４）のプログラムと、Ｂ７（ｃｏｍｐａｒｅ）、Ｂ４（Ｐｒｏｄｕｃｔ）、Ｂ５（Ｃｏｎｓｔａｎｔ）とがおおよそ対応することを表し、（３）のコメントは、（４）のプログラムと、Ｂ１（Ｒｅａｄ）、Ｂ２（Ｒｅａｄ１）、Ｂ３（Ｒｅａｄ２）とがおおよそ対応することを表す。また、コメント（１）〜（３）は、そのコメントで示す制御モデル中の位置が検査箇所であることを表す。
【００８１】
次に、（６）のコメントは、（７）のプログラムと、Ｂ６（Ｒｅａｄ３）とがおおよそ対応することを表すと共に、制御モデルのＢ６の位置が検査箇所であることを表す。
次に、（１１）のコメントは、（１２）のプログラムと、Ｂ８（Ｃｏｎｓｔａｎｔ１）とがおおよそ対応することを表すと共に、制御モデルのＢ８の位置が検査箇所であることを表す。
【００８２】
次に、（１４）のコメントは、（１５）のプログラムと、Ｂ１０（Ｗｒｉｔｅ）とがおおよそ対応することを表すと共に、制御モデルのＢ１０の位置が検査箇所であることを表す。
【００８３】
次に、図６は、図２のＢ４を図３の検査ブロックに置換した制御モデルに対応するソースプログラムの一例である。図６において、…〈１〉〜…〈１７〉の符号は、説明の便宜上付したものであり、ソースプログラムを構成するものではない。
【００８４】
図６のソースプログラムにおいて、図５と異なる点は、〈４〉、〈５〉のコメントが記述されている点である。このコメントは、置換後のＢ４（つまり、図３の検査ブロック）の各検査ポイントと、図５のソースプログラムにおける〈６〉のプログラムとを対応づけるものである。また、置換後のＢ４の各検査ポイントが、検査箇所であることを表す。
【００８５】
図１に戻り、自動コード生成部１４により自動生成されたソースプログラムは、プログラム格納部１６に格納される。
実行形式変換部１８は、プログラム格納部１６に格納されたソースプログラムを、コンピュータが実行可能な形式のプログラム（以下、実行形式プログラムと記載する）に変換する（コンパイルする）。
【００８６】
そして、本実施形態において、プログラム格納部１６に格納されたソースプログラムが実行形式変換部１８によりコンパイルされて生成された実行形式プログラムが、既存のＲＴＯＳ及び実行形式プログラムとは別に作成された既存の制御プログラムと結合されてＲＯＭ等に焼き付けられ、電子制御装置（以下、ＥＣＵと記載する）３２に実装される。
【００８７】
このＲＯＭ等に焼き付けられたプログラム或いはＥＣＵ３２に実装されるプログラムについても、例えば請求項２０のプログラムに相当する。
対応情報作成部２０は、実行形式変換部１８がソースプログラムから実行形式プログラムを生成するに際して、ソースプログラムの実行位置、ひいては制御モデルの実行位置と、ＥＣＵ３２のコンピュータにおける実行形式プログラムの実行位置との対応関係を表す対応情報を作成する機能を有する。本実施形態では、具体的に、制御モデルの実行位置と、その制御モデルの実行位置で取得できるデータに対応するデータであって、ＥＣＵ３２のマイコンで扱われるデータが格納されるそのマイコンにおけるメモリ領域との対応関係を表す情報が対応情報として生成される。つまり、制御モデルの実行位置と、マイコンのメモリ領域とが対応付けられる。それぞれで取得できるデータを互いに比較するためである。対応情報作成部２０により作成された対応情報は、対応情報格納部２２に格納される。また、対応情報は、使用者が認識可能なように、表示部３６に表示される。
【００８８】
次に、図７は、対応情報作成部２０が実行する対応情報の作成処理を表すフローチャートである。対応情報については、図８に一例を示しており、後述する。
この処理では、まずＳ２１０で、図８にも示した対応情報表を格納するためのファイルを作成する。言い換えると、対応情報表を格納する領域を確保する。対応情報表を格納する領域は、対応情報格納部２２において確保される。
【００８９】
次に、Ｓ２２０に移行し、自動コード生成部１４により生成されたソースプログラムを読み込む。このソースプログラムには、図５及び図６で説明したように、コメントが付加されている。
【００９０】
次に、Ｓ２３０に移行し、ソースプログラム中のコメントに記述された演算処理ブロックが検査対象の演算処理ブロックか否かを判定する。尚、コメントは、プログラム列の上から順番に参照される。また、何れの演算処理ブロックを検査対象とするかは予め定められている。この点において、特に図示しないが、検査対象の演算処理ブロックを定めるロジックは、請求項１１の検査箇所指定手段に相当している。
【００９１】
Ｓ２３０で、検査対象の演算処理ブロックであると判定すると（Ｓ２３０：ＹＥＳ）、Ｓ２４０に移行し、コメントにおいて、中間監視箇所が指示されているか否かを判定する。この中間監視箇所は、図３の例では検査ポイント１〜３に対応するものである。つまり、Ｓ２４０では、コメント指示モデル位置が、演算処理ブロックの途中データの出力箇所（検査ポイント１〜３）を示しているか否かを判定する。具体的に、図６のソースプログラムにおいて、〈３〉〜〈５〉のコメントのうち、「ｒｅａｄ」、「ｒｅａｄ１」、「ｒｅａｄ２」が中間監視箇所を指示していることに相当する。
【００９２】
つまり、「ｒｅａｄ」は、ｒｅａｄの入力結果（検査ポイント１のデータ）を指示し、「ｒｅａｄ１」は、ｒｅａｄ１の入力結果（検査ポイント２のデータ）を指示し、「ｒｅａｄ２」は、ｒｅａｄ２の入力結果（検査ポイント３のデータ）を指示している。
【００９３】
また、〈４〉のコメントのうち、「ｒｅａｄ」が中間監視箇所を指示していることに相当する。「ｒｅａｄ」は、検査ポイント１のデータのうち特にｒａｍＡを指示する。
また、〈５〉のコメントのうち、「ｒｅａｄ/ｒｅａｄ1」が中間監視箇所を指示していることに相当する。「ｒｅａｄ/ｒｅａｄ1」は、検査ポイント２のデータのうち特にｒａｍＡ/ｒａｍＢを指示する。尚、〈３〉〜〈５〉において、Ｐｒｏｄｕｃｔは、Ｂ４を指示する。
【００９４】
Ｓ２４０で、中間監視箇所が指示されていると判定すると（Ｓ２４０：ＹＥＳ）、Ｓ２５０に移行し、実行形式変換部１８とやりとりして、中間監視箇所に対応する、実行形式プログラムにおける実行位置（具体的に、中間監視箇所に対応する命令が格納されるアドレス）の情報と、中間監視箇所のデータに対応するデータであって、実行形式プログラムの実行で得られるデータが格納されるレジスタの情報とをその実行形式変換部１８から取得する。尚、レジスタの情報の他、ＲＡＭのアドレスの情報が取得されても良い。また、実行形式プログラムの実行で得られるデータについて、データ名が定義されている場合には、例えばそのデータ名を取得する。
【００９５】
次に、Ｓ２６０に進み、Ｓ２５０で取得した情報を、対応情報表ファイルに追加する。
つまり、制御モデルにおける中間監視箇所と、その中間監視箇所に対応する所定の命令の格納アドレス及び所定のデータの格納レジスタとの対応関係を表す情報を、対応情報として対応情報表ファイルに追加する。
【００９６】
そして、再びＳ２４０に戻り、他に中間監視箇所があるか否かを判定する。このようにして、コメントで指示される演算処理ブロック中の、同じくコメントで指示される中間監視箇所について対応情報を取得する。
【００９７】
ここで、Ｓ２４０で中間監視箇所がないと判定すると（Ｓ２４０：ＮＯ）、Ｓ２７０に移行し、その中間監視箇所が属する演算処理ブロックの出力を監視する監視箇所を選択する。
【００９８】
次に、Ｓ２８０に進み、その出力に係る監視箇所について、上述のような対応情報を取得する。ここでは、Ｓ２５０と同様に、実行形式変換部１８とやりとりして取得する。
次に、Ｓ２９０に進み、Ｓ２８０で取得した対応情報を対応情報表ファイルに追加する。そして次に、Ｓ３００に進む。
【００９９】
ここで、Ｓ２５０及びＳ２６０では、演算処理モデルの途中の結果が取得できる中間監視箇所について対応情報を取得する趣旨であり、Ｓ２７０〜Ｓ２９０では、演算処理モデルの最終的な結果が取得できる箇所について対応情報を取得する趣旨である。
【０１００】
次に、Ｓ２３０で、制御プログラム中のコメントに記載された演算処理ブロックが検査対象の演算処理ブロックでないと判定すると（Ｓ２３０：ＮＯ）、Ｓ３００に移行する。
Ｓ３００では、今回対象とする演算処理ブロックが最後の演算処理ブロックか否か、言い換えると、コメントにより記述された演算処理ブロックが他にあるか否かを判定する。つまり、Ｓ２３０から移行したＳ３００では、検査対象でないと判定した各演算処理ブロックの他に、コメントにより記述された演算処理ブロックがあるか否かを判定し、Ｓ２９０から移行したＳ３００では、全ての中間監視箇所の対応情報を取得し終わった各演算処理ブロックの他に、コメントにより記述された演算処理ブロックがあるか否かを判定する。
【０１０１】
Ｓ３００で、最後の演算処理ブロックである（他に演算処理ブロックはない）と判定すると（Ｓ３００：ＹＥＳ）、Ｓ３１０に移行し、対応情報表ファイルを保存すると共に閉じる。つまり、対応情報表ファイルの編集を終了する。そしてその後、当該処理を終了する。
【０１０２】
一方、Ｓ３００で最後の演算処理ブロックでない（他に演算処理ブロックがある）と判定すると（Ｓ３００：ＮＯ）、Ｓ３２０に移行し、その他の演算処理ブロックに移行する。そして、再びＳ２３０に戻る。
【０１０３】
以上のようにして、検査対象の演算処理ブロックについて、及びその演算処理ブロックにおける中間監視箇所について、対応情報を取得する。
次に、図８は、図７の処理により作成される対応情報表である。
【０１０４】
図８において、ブロックの列の記述は、それぞれ、図２（及び図３）の制御モデルにおける演算処理ブロックを示す。
アドレスの列の記述は、それぞれ、ＥＣＵ３２の図示しないマイコンにおいて、命令文が格納されるアドレスを示す。命令文は、その左のブロックの列で指示される箇所の処理を実現するためのものである。
【０１０５】
レジスタ又は変数の列の記述は、それぞれ、ＥＣＵ３２の図示しないマイコンにおいて、データが格納されるレジスタ名、又は実行形式プログラムにおいて定義される変数名を示すものである。レジスタ名、及び変数名は、左端のブロックの列で指示される箇所において取得できるデータと対応する。例えば、制御モデルにおけるｒｅａｄの箇所のデータ（変数Ａ）と、マイコンにおけるレジスタｒｅｇａに格納されたデータとは、同じ演算処理で得られるデータであり、比較対象となる。
【０１０６】
図１に戻り、シミュレーション部２６は、モデル格納部１０に格納されている制御モデルのシミュレーションを実行する機能を有する。
プログラム実行管理部３０は、ＥＣＵ３２と例えばバス接続されて、ＥＣＵ３２の動作（実行形式変換部１８により作成された実行形式プログラムの実行）を管理する機能を有する。
【０１０７】
検査区間設定部２４は、シミュレーション部２６及びプログラム実行管理部３０のいずれか一方に対して、検査区間の設定を指示する部分である。本実施形態では、設定された検査区間において、データが比較（検査）される。
【０１０８】
また、同期部２８は、この検査区間設定部２４を通じて検査区間の設定が指示された側の他方に対して、上記対応情報格納部２２に格納されている対応情報に基づきその対応する（関連する）検査区間の設定を指示する部分である。同期部２８のこのような機能により、シミュレーション部２６を通じてシミュレーションされる制御モデルとプログラム実行管理部３０を通じてその動作が管理されつつＥＣＵ３２により実行される制御プログラムとの検査区間、及び検査位置の関連付けが行われるようになる。
【０１０９】
信号生成部４０は、車両制御において用いられる各種センサ信号を擬似的に生成して、これをＥＣＵ３２に与える部分である。尚、この信号生成部４０では、上記各種センサ信号を擬似的に生成してＥＣＵ３２に与えた後、その制御プログラムによる実行結果を取り込みつつ、次にＥＣＵ３２に与えるべき擬似信号を生成するといった処理を繰り返し実行することとなる。この信号生成部４０は、例えば車両そのものであってもよい。
【０１１０】
比較部３４は、シミュレーション部２６による制御モデルのシミュレーションの実行結果と、プログラム実行管理部３０を介したＥＣＵ３２による制御プログラムの実行結果とを、逐次比較し、その制御モデル及び制御プログラムの異常の有無を判断する部分である。この比較部３４による比較結果は、表示部３６に表示されると共に、結果格納部３８に対して逐次格納（蓄積）される。
【０１１１】
以上説明した各要素（ブロック１０〜４０）は、シミュレーションプログラムやＥＣＵ３２とのインターフェースプログラム、さらには同期部２８による同期化等の処理を行うプログラムが搭載された１乃至複数台のマイクロコンピュータ等によって構成されている。
【０１１２】
以上、各要素について説明した。
次に、本実施形態の検査装置１が制御モデル及び制御プログラムの検査を行う際の流れについて簡単に説明する。
【０１１３】
まず、検査装置１において、モデル格納部１０には、先の図２に例示した制御モデル、或いは図２のＢ４を図３に示す検査ブロックに置き換えた制御モデルが予め格納されており、また対応情報格納部２２には、図８に例示した対応情報が予め格納されている。尚、以下、図２のＢ４を図３に示す検査ブロックに置換した制御モデル（以下、置換後制御モデルと記載する）を扱うものとして説明する。
【０１１４】
この置換後制御モデルに対応するかたちで置換後制御モデルから自動生成された制御プログラムが、ＲＴＯＳや既存の制御プログラム共々、ＥＣＵ３２に予め実装されている。
そして、例えば使用者の入力によりその実装された制御プログラムの検査（デバッグ）の開始が指令されると、シミュレーション部２６は、モデル格納部１０から置換後制御モデルを取り込み、その取り込んだ置換後制御モデルのシミュレーションを実行する。
【０１１５】
一方、ＥＣＵ３２は、プログラム実行管理部３０からの指令に基づき、自身に実装された制御プログラムを実行する。この制御プログラムの実行に際しては、信号生成部４０によって生成された擬似的な各種センサ信号、例えば水温信号、ノック信号、吸気温信号、スロットル信号、カム角信号、クランク角信号、車速信号、等々の擬似信号が、上記ＥＣＵ３２に与えられる。またこの際、プログラム実行管理部３０は、制御プログラムによる演算結果を適宜取り込むなどして、その制御プログラムの実行にかかる挙動をモニタ（監視）する。
【０１１６】
また、対応情報作成部２０にて作成される対応情報（図８参照）に基づき、置換後制御モデルのシミュレーションあるいは制御プログラムの実行にかかる処理の中間監視箇所を併せて設定可能としている。詳しくは、外部からの入力（例えば使用者の入力）に基づき、検査区間設定部２４がシミュレーション部２６及びプログラム実行管理部３０のいずれか一方に中間監視箇所の設定を指示する。
【０１１７】
そして、その指示があった場合、シミュレーション部２６或いはプログラム実行管理部３０では、置換後制御モデル或いはＥＣＵ３２に実装されている制御プログラムに対して中間監視箇所を設定する。そしてこのとき、同期部２８は、シミュレーション部２６及びプログラム実行管理部３０のいずれから中間監視箇所が設定されたかを検出し、対応情報（図８参照）に基づいて他方にも中間監視箇所の設定を指示する。
【０１１８】
尚、中間監視箇所においてそれぞれ採取された数値（データ）は、予め用意されたデータファイルに出力される。そして、こうしてデータファイルに蓄積された各数値が、後に例えば比較部３４により比較されると共に、置換後制御モデルや制御プログラムの異常の有無が判断されることとなる。
【０１１９】
次に、同期部２８による中間監視箇所の設定に係る処理について説明する。ここで念のため再度説明すると、中間監視箇所は、演算処理の途中データが取得できる箇所である。以下、中間監視箇所の例に取り説明するが、演算処理の最終結果が取得できる箇所についても同様である。この処理は所定周期で繰り返し実行される。尚、この処理は、特許文献１に既に開示された周知の処理である。
【０１２０】
この処理では、同期部２８は、まず、シミュレーション部２６及びプログラム実行管理部３０のいずれから中間監視箇所が設定されたかを検出する。この検出のステップは、同期部２８がシミュレーション部２６やプログラム実行管理部３０にアクセスすることで行われる。また、中間監視箇所は、設定可能な箇所であれば、任意に設定が可能である。例えば、中間監視箇所は、設定可能な箇所であれば、自動的に設定されても良いし、使用者の入力に基づき設定されても良い。
【０１２１】
そして、先に、シミュレーション部２６により中間監視箇所が設定されたと判定すると、同期部２８は、対応情報格納部２２に格納された対応情報に基づき置換後制御モデル上に設定された中間監視箇所に対応するポイントを特定し、これを中間監視箇所としてＥＣＵ３２に実装された制御プログラム上に設定するようにプログラム実行管理部３０に指示する。
【０１２２】
また一方、先に、プログラム実行管理部３０により中間監視箇所が設定されたと判定すると、同期部２８は、対応情報に基づきＥＣＵ３２に実装されている制御プログラム上に設定された中間監視箇所に対応するポイントを特定し、これを中間監視箇所として置換後制御モデル上に設定するようにシミュレーション部２６に指示する。
【０１２３】
尚、シミュレーション部２６及びプログラム実行管理部３０のいずれからも中間監視箇所が設定されていない旨を検出すると、一連の処理を終了する。
次に、置換後制御モデルのシミュレーションの実行態様及び制御プログラムの実行態様について説明する。
【０１２４】
まず、シミュレーション部２６による置換後制御モデルのシミュレーションの実行にかかる処理について説明する。
シミュレーション部２６は、まず、モデル格納部１０に格納されている置換後制御モデルを取り込む。そして、同期部２８から、シミュレーションの実行の指示があると、シミュレーション部２６は、その取り込んだ置換後制御モデルのシミュレーションを実行する。尚、このシミュレーションは、信号生成部４０からＥＣＵ３２に与えられるセンサ信号等に相当する擬似的なデータをプログラム実行管理部３０及び同期部２８を介してシミュレーション部２６にも与え、同シミュレーション部２６に置換後制御モデルを通じてそれらのデータを処理させるようにして行われる。
【０１２５】
また、このシミュレーションの実行は、外部からの停止指示或いはシミュレーションの完了が確認されるまで行われる。例えば、外部からの停止指示があった、或いはシミュレーションが完了したと判断されると、例えばシミュレーション部２６が備える図示しない表示器等を通じて外部にシミュレーションが完了した旨を通知し、この一連の処理を終了することとなる。
【０１２６】
また、比較部３４により「数値」や「実行位置」に異常がある旨の判断がなされると、同期部２８からの異常通知に従ってこの一連の処理を終了することとなる。この際、シミュレーション部２６は異常通知があった時の実行位置（停止位置）の情報を保持しており、この場合も、同シミュレーション部２６が備える図示しない表示器等を通じてその情報を外部に通知する。
【０１２７】
次に、プログラム実行管理部３０を通じたＥＣＵ３２に実装されている制御プログラムの実行にかかる処理について説明する。
プログラム実行管理部３０は、まず、ＥＣＵ３２に実装されている制御プログラムを取り込む。そして、同期部２８から、制御プログラムの実行の指示があると、プログラム実行管理部３０は、その取り込んだ制御プログラムを実行するようにＥＣＵ３２に指示する。
【０１２８】
そして、ＥＣＵ３２は、この指示に従って、自身に実装されている制御プログラムを実行する。尚、この制御プログラムの実行も、信号生成部４０によって生成されたセンサ信号等に相当する擬似的データをＥＣＵ３２に与えるようにして行われる。
【０１２９】
またこの際、プログラム実行管理部３０を通じて、ＥＣＵ３２による制御プログラムの実行の挙動がモニタ（監視）される。
この制御プログラムの実行は、外部からの停止指示或いは制御プログラムの実行の完了が確認されるまで行われる。例えば、外部からの停止指示があった、或いは制御プログラムの実行が完了したと判断されると、例えばプログラム実行管理部３０が備える図示しない表示器等を通じて外部に制御プログラムの実行が完了した旨を通知し、この一連の処理を終了することとなる。
【０１３０】
また、比較部３４により「数値」や「実行位置」に異常がある旨の判断がなされると、同期部２８からの異常通知に従ってこの一連の処理を終了することとなる。この際、プログラム実行管理部３０は異常通知のあった時の実行位置（停止位置）の情報を保持しており、この場合も、プログラム実行管理部３０が備える図示しない表示器等を通じてその情報を外部に通知する。
【０１３１】
ここで、置換後制御モデルのシミュレーションの実行及び制御プログラムの実行についてのそれぞれ同一の実行範囲での実行結果は、シミュレーション部２６及びプログラム実行管理部３０から比較部３４へ出力される。尚、これまでの説明からも明らかなように、これら置換後制御モデルのシミュレーションの実行と制御プログラムの実行とは、同期部２８によってそれら各実行範囲及び実行箇所（中間監視箇所）が関連付けされている。
【０１３２】
比較部３４では、これら実行結果を入力し、それらを逐次比較することで、置換後制御モデルや制御プログラムの異常の有無を検査する。また、比較部３４は、その比較結果を表示部３６及び結果格納部３８へ併せて出力する。
【０１３３】
以上説明したように、本実施形態の検査装置１では、制御モデルと制御プログラムとにおいて、所定の演算処理の途中結果を監視するための中間監視箇所を設定して、その演算処理の途中の結果をも比較し、制御モデル及び制御プログラムの異常を検査するようにしている。具体的に、検査装置１は、制御モデルにおける演算処理ブロックを、途中結果の出力箇所が定義された検査ブロックに置換する。また、ＥＣＵ３２のマイコンにおける制御プログラムの実行に際し、演算処理の途中結果が格納されるメモリ領域（レジスタ）の情報を取得する。そして、その演算処理ブロック又は演算処理ブロックの途中結果の出力箇所と、途中結果が格納されるメモリ領域（レジスタ）とを関連付けることで、途中結果を比較できるようにしている。
【０１３４】
演算処理の途中の結果も比較するため、検査をより細かくできるようになって、異常が生じた際、その異常の原因をより精密に特定することができるようになる。また、上述のように、途中結果が格納されるメモリ領域（レジスタ）の情報を取得して、そのメモリ領域（レジスタ）からデータを取得するため、確実である。
【０１３５】
また、演算処理ブロックと置換する検査ブロックは、予め、ライブラリ格納部１２ａに格納されている。予め、所望の検査ブロックをライブラリ格納部１２ａに格納しておくことで、所望の演算処理ブロックを置換対象とすることができる。言い換えると、所望の演算処理ブロックについて、その中間監視箇所を検査対象とすることができる。これによれば、使い勝手が向上する。また、検査の効率化を図ることができる。
【０１３６】
さらに、検査箇所は予め定められており、例えば演算処理ブロックの中間監視箇所のうちその予め定められた検査箇所について、制御モデル及び実行形式プログラムにおける対応情報が生成される。このため、例えば、特に検査すべき検査箇所について、データが比較されるようになって、検査効率が向上する。
【０１３７】
尚、本実施形態において、シミュレーション部２６がモデル実行手段に相当し、プログラム実行管理部３０がプログラム実行手段に相当し、対応情報作成部２０が途中データ照合手段及び結果データ照合手段に相当し、自動コード生成部１４がプログラム生成手段に相当し、同期部２８及び比較部３４が比較手段及び途中データ比較手段に相当し、検査ブロック置換部１２が置換手段に相当し、ライブラリ格納部１２ａ及びＳ１３０の処理が置換モデル指定手段に相当し、Ｓ１７０の処理が記憶制御手段に相当している。
【０１３８】
以上、本発明の一実施形態について説明したが、本発明は実施形態に限定されるものではなく、本発明の技術範囲内において種々の形態をとることができる。
例えば、上記実施形態において、制御モデルの記述仕様は、どのようなものであっても良い。この場合、制御モデルの各仕様に対応できるようにするための情報を、予め記憶しておくようにすれば良い。
【０１３９】
また、制御プログラムの実行主体は、ＥＣＵ３２に限らず、どのようなコンピュータでも良い。この場合も、各種コンピュータに対応できるようにするための情報を、予め記憶しておくようにすれば良い。
【０１４０】
また、上記実施形態において、制御モデルとその制御モデルをもとに作成したソースプログラムとの互いに対応する位置の関係を表す同期情報は、ソースプログラムのリスト中においてコメントとして付加されるようになっているが、同期情報が、ソースプログラムとは別に生成されても良い。例えば、別ファイルとして生成されても良い。
【０１４１】
また、上記実施形態において、ライブラリ格納部１２ａに格納する検査ブロックを、使用者が選択しても良い。また、使用者の選択によらず、自動で、所定の検査ブロックがライブラリ格納部１２ａに格納されるようにしても良い。
【０１４２】
また、上記実施形態において、Ｓ１７０で、演算処理ブロックを検査ブロックに置換した新たな制御モデルを、置換前の古い制御モデルと置き換えてモデル格納部１０に格納しても良い。また、その新たな制御モデルを、モデル格納部１０とは異なる格納領域に格納するようにしても良い。
【０１４３】
また、置換後の新たな制御モデルに付す識別情報（モデル名など）は、使用者が直接入力しても良いし、検査装置１側から与えられた識別情報を使用者が修正するようにしても良い。
【０１４４】
また、上記実施形態において、同期情報または対応情報は、検査装置１が作成したものを使用せず、人が作成したものを与えても良い。
【図面の簡単な説明】
【０１４５】
【図１】本実施形態の検査装置１の構成を表すブロック図である。
【図２】制御モデルの一例を表す図面である。
【図３】制御モデルの演算処理ブロックと置換するための検査ブロックの一例を表す図面である。
【図４】検査ブロック置換部１２が実行する処理を表すフローチャートである。
【図５】制御プログラム（ソースプログラム）の一例である（その１）。
【図６】制御プログラム（ソースプログラム）の一例である（その２）。
【図７】対応情報作成部２０が実行する処理を表すフローチャートである。
【図８】対応情報表である。
【符号の説明】
【０１４６】
１…検査装置
１０…モデル格納部
１２…検査ブロック置換部
１２ａ…ライブラリ格納部
１４…自動コード生成部
１６…プログラム格納部
１８…実行形式変換部
２０…対応情報作成部
２２…対応情報格納部
２４…検査区間設定部
２６…シミュレーション部
２８…同期部
３０…プログラム実行管理部
３２…ＥＣＵ
３４…比較部
３６…表示部
３８…結果格納部
４０…信号生成部。
【図１】
2008310513.tif 000003
【図２】
2008310513.tif 000004
【図３】
2008310513.tif 000005
【図４】
2008310513.tif 000006
【図５】
2008310513.tif 000007
【図６】
2008310513.tif 000008
【図７】
2008310513.tif 000009
【図８】
2008310513.tif 000010