(57)【要約】【課題】  モデルベース開発において、モデルからソースコードを生成する段階の前に、当該モデルによって表現されるプログラムのマイコンへの実装時におけるマイコンリソース消費量を見積もることができるようにする。【解決手段】  モデルを作成するシステム設計５２の段階、モデルからソースコード、オブジェクトコードを生成するソフト開発５３の段階、当該オブジェクトコードを実際の車両のエンジンＥＣＵに搭載してテストを行うシステムテスト／適合５４の段階を有する、エンジンＥＣＵに搭載されるプログラムの開発工程において、マイコンリソース消費見積もりプログラムが、記憶媒体に記憶されたモデルの各構成要素のブロックのマイコンリソース消費見積もり量の情報に基づいて、当該モデルから生成されるオブジェクトコードのマイコンリソース消費見積もり量を算出し、ディスプレイに表示させる。【選択図】        図１
2005078243.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ（１６）を、
モデルを記憶媒体（１３、１５）から読み出す読出手段（４０５）、および
前記読出手段が読み出したモデルのマイコンリソース消費見積量を、前記記憶媒体（１３、１５）が記憶する前記モデルの構成要素のマイコンリソース消費見積量に基づいて算出する算出手段（４１０〜４６０）、として機能させるためのマイコンリソース消費見積もりプログラム。
【請求項２】
前記算出手段は、前記読出手段が読み出した、変更されたモデルのマイコンリソース消費見積量を、前記記憶媒体が記憶する前記変更前の前記モデルのマイコンリソース消費量および前記記憶媒体が記憶する前記変更されたモデルの当該変更部分の構成要素のマイコンリソース消費見積量に基づいて算出することを特徴とする請求項１に記載のマイコンリソース消費見積もりプログラム。
【請求項３】
前記算出手段が、
前記変更前の前記モデルにおいて前記変更部分に代替される部分のマイコンリソース消費見積量を、前記記憶媒体が記憶する当該代替される部分の構成要素のマイコンリソース消費見積量に基づいて算出する代替部算出手段（４１０、４２０）と、
前記記憶媒体が記憶する前記変更前の前記モデルのマイコンリソース消費量から前記代替部算出手段が算出した当該代替される部分のマイコンリソース消費見積量を減ずる減算手段（４３０）と、
前記記憶媒体が記憶する前記変更されたモデルの当該変更部分の構成要素のマイコンリソース消費見積量に基づいて、当該変更部分のマイコンリソース消費見積量を算出する変更部算出手段（４４０、４５０）と、
前記変更部算出手段が算出したマイコンリソース消費見積量を、前記減算手段が減じた結果の値に加算した値を、前記変更されたモデルのマイコンリソース消費見積量をとする加算手段（４６０）と、を有するようにすることを特徴とする請求項２に記載のマイコンリソース消費見積もりプログラム。
【請求項４】
モデルの構成要素のマイコンリソース消費見積量を記憶する記憶媒体（１３、１５）と、
モデルを前記記憶媒体から読み出す読出手段（４０５）と、
前記受付手段が受け付けた指定に係るモデルのマイコンリソース消費見積量を、前記記憶媒体が記憶する前記モデルの構成要素のマイコンリソース消費見積量に基づいて算出する算出手段（４１０〜４６０）と、を備えたマイコンリソース消費見積もり装置。
【請求項５】
マイコンに実装されるプログラムのために作成されたモデルをソースコードに変換する手順と、前記変換されたソースコードをオブジェクトコードに変換する手順と、を有するプログラム生成方法であって、
モデルをソースコードに変換する手順の前段に、前記作成されたモデルのマイコンリソース消費見積もり量を算出する手順を含むことを特徴とするプログラム生成方法。
【請求項６】
前記作成されたモデルのマイコンリソース消費見積量を算出する手順は、前記記憶媒体が記憶する前記モデルの構成要素のマイコンリソース消費見積もり量に基づいてマイコンリソース消費見積量を算出することを特徴とする請求項５に記載のプログラム生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデルベースのプログラム開発において用いるマイコンリソース消費見積もりプログラム、マイコンリソース消費見積もり装置、およびプログラム生成方法に関するものである。
【背景技術】
【０００２】
従来、例えば自動車のエンジン制御のシステムに用いるプログラム（ソフトウェア）開発の手法として、モデルベース開発が用いられている（例えば特許文献１参照）。図１０に、エンジンＥＣＵに実装するプログラムについてのモデルベース開発の工程を概略的に示す。
【０００３】
まず、開発者等が、エンジンＥＣＵの性能、開発のコンセプト等に基づいて、完成品としてのプログラムに要求される機能を定義する（要求定義５１に対応）。そして、この定義された機能を実現するよう、開発者は仕様書としてのモデル５６を作成する。モデルとは、ソースコードよりも記述が簡易になり、かつ人による可読性が高くなる目的で定められたモデル言語仕様に基づいて作成されるプログラムの一表現形態である。モデルとしては、例えばＳｉｍｕｌｉｎｋ（登録商標）によって作成されるＳｉｍｕｌｉｎｋ（登録商標）モデルがある。
【０００４】
そして、この作成したモデルに基づいてシミュレーションを行う。シミュレーションとは、作成されたモデルからソースコード、オブジェクトコードを生成しないまま、パーソナルコンピュータ等の仮想空間上で、そのモデルによって表現されるプログラムを実行することをいう。その際、当該モデルへの入力データとしては、適宜作成された仮想的なデータを用いる場合が多い。シミュレーションによって、作成したモデルの仕様ミス等が発見されると、それに基づいてモデルの修正を開発者が行う。
【０００５】
このように、モデルの作成、シミュレーションの実施、モデルの修正の段階は、システム設計５２と呼ばれる。
【０００６】
このようにして作成、修正されたモデル５６は、システム設計５２の後に、例えばＣ＋＋のようなプログラミング言語の文法規則に基づいたソースコードに変換される。例えば上記したＳｉｍｕｌｉｎｋ（登録商標）モデルは、Ｍａｔｌａｂ（登録商標）上で動作するＲｅａｌ  Ｔｉｍｅ  Ｗｏｒｋｓｈｏｐ（登録商標：以下ＲＴＷと記す）と呼ばれるソフトウェアに入力されることにより、このＲＴＷが当該Ｓｉｍｕｌｉｎｋ（登録商標）モデルに対応するソースコードを生成する。
【０００７】
また、このようにして生成されたソースコードは、コンパイラ、リンカ等のソフトウェアによってコンパイル、リンクされてオブジェクトコードに変換される。この生成されたオブジェクトコードから、このプログラムがエンジンＥＣＵに実装された場合の、当該エンジンＥＣＵのＲＯＭを占有する量すなわちＲＯＭ消費量、およびこのプログラムがエンジンＥＣＵに実装されて実行される場合のＲＡＭの占有量すなわちＲＡＭ消費量が特定できる。
【０００８】
また、このオブジェクトコードは、パーソナルコンピュータ等の仮想空間で擬似的にテスト実行され（このテストをソフト用シミュレーションと記す）、また実際の車両に搭載されていないエンジンＥＣＵに実装された上でテスト実行される（このテストをソフト用ベンチと記す）。このようにオブジェクトコードをテスト実行することで、そのオブジェクトコードのＣＰＵ処理負荷（ＣＰＵ占有率等）が特定できる。
【０００９】
以上のような、モデルのソースコードへの変換、コンパイル、リンク、ソフト用シミュレーション、ソフト用ベンチの段階は、ソフト開発５３と呼ばれる。
【００１０】
上記の様に生成されたオブジェクトコードは、ソフト開発５３の後、実際の車両に搭載された、あるいは車両の機能を模擬的に実現するハードウェアに搭載されたエンジンＥＣＵに実装された上でテスト実行される。このテストの段階は、システムテスト／適合５４と呼ばれる。
【００１１】
その後、当該エンジンＥＣＵが搭載された車両を実際に走行させる等によって、プログラムの最終評価が行われる。
【００１２】
以上の様なモデルベース開発の工程において、モデルベース開発以前に比べて特徴的であるのは、ソフト開発５３の段階ではソースコードを手作業で作成せず、システム設計５２の段階で作成されたモデル仕様書から自動的に生成される点、およびシステム設計５２の段階で作成されたモデルのシミュレーションを、ソースコード、オブジェクトコードを生成せずとも行うことができる点である。
【００１３】
図１１に、モデルベース開発以前の工程における手戻りの流れを示す。モデルベース開発以前では、システム設計５２で作成するプログラムの仕様を決定し、ソフト開発５３でその仕様に基づいてソースコードを手作業で作成し、このソースコードをコンパイル、リンクしてオブジェクトコードを生成し、このオブジェクトコードについてテスト実行を行い、システムテスト／適合５４でオブジェクトコードを実際の車両等に実装する。
【００１４】
このとき、ソフト開発５３のオブジェクトコード作成時、テスト実行時に特定できるＲＯＭ消費量、ＲＡＭ消費量、ＣＰＵ処理負荷がエンジンＥＣＵの性能によって決まる上限値を超えている場合、開発の工程はシステム設計５２に戻って仕様作成をやり直すことになる。車両用エンジン制御においては、コスト等の制約から、使用されるマイコンが決められ、これにより、ＲＯＭ・ＲＡＭ容量やＣＰＵ処理負荷といったマイコンリソース消費量に厳しい制限がある。また、ソフト開発５３の工程で仕様書に単純な誤記や表現方法のミス等の仕様ミスが含まれていることが判明した場合も、開発工程はシステム設計５２に手戻りする。
【００１５】
また、システムテスト／適合５４の段階において、ソースコードの作成において仕様の解釈が誤っていたことが判明した場合、開発工程はソフト開発５３に手戻りする。
【００１６】
またシステムテスト／適合５４においてそもそもシステムの仕様自体に問題があったことが判明すると、工程はシステム設計５２からやり直される。
【００１７】
図１２に、モデルベース開発の工程における手戻りの流れを示す。図１１の場合に対し、モデルベース開発においては、ソフト開発５３においてソースコードの生成が手作業でなく自動となっているので、仕様としてのモデルの解釈のミスが発生しない。従って、仕様解釈ミスによるシステムテスト／適合５４からソフト開発５３への手戻りが発生しない。
【００１８】
また、システム設計５２の段階で作成されたモデルのシミュレーションを、システム設計５２の段階で行うことができるので、仕様ミスはシステム設計５２の工程内で発見される。従って、仕様ミスによるソフト開発５３からシステム設計５２への手戻りが発生しない。具体的には、「モデルを作成してシミュレーションをし、その結果に基づきモデルを修正する」といった手順の繰り返しのスパイラルによって、完成度の高いモデルを作成することができ、システム開発の後段からの手戻り（モデル修正）を減らすことができる。
【特許文献１】特開平２０００−２０２９１
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかし、上記モデルベース開発においては、システム設計５２の工程で、ＲＯＭ消費量、ＲＡＭ消費量やＣＰＵ処理負荷といったマイコンリソース消費量は特定できないので、依然としてマイコンリソース消費量がその上限を超えることによる手戻り、すなわちソースコード、オブジェクトコード等が生成されるソフト開発５３からシステム設計５２への手戻りは解消しない。
【００２０】
本発明は上記点に鑑み、モデルベース開発において、モデルからソースコードを生成する段階の前に、当該モデルによって表現されるプログラムのマイコンへの実装時におけるマイコンリソース消費量を見積もることができるようにすることを目的とする。
【課題を解決するための手段】
【００２１】
上記目的を達成するための、請求項１に記載の発明は、コンピュータ（１６）を、モデルを記憶媒体（１３、１５）から読み出す読出手段（４０５）、および前記読出手段が読み出したモデルのマイコンリソース消費見積量を、前記記憶媒体（１３、１５）が記憶する前記モデルの構成要素のマイコンリソース消費見積量に基づいて算出する算出手段（４１０〜４６０）、として機能させるためのマイコンリソース消費見積もりプログラムである。
【００２２】
これによって、モデルベース開発において、モデルの構成要素から、そのモデルのマイコンリソース消費見積もり量を算出することができるので、モデルからソースコードを生成する段階の前に、当該モデルによって表現されるプログラムのマイコンへの実装時におけるマイコンリソース消費量を見積もることができるようになる。
【００２３】
なお、算出手段が算出したモデルのマイコンリソース消費見積量を最終的にユーザが確認する方法としては、どのようなものでもよい。例えば、マイコンリソース消費見積もりプログラムは更に、算出手段が算出したモデルのマイコンリソース消費見積量を表示装置に表示させる表示制御手段としてコンピュータを機能させるようになっていてもよいし、あるいは算出手段が算出したモデルのマイコンリソース消費見積量を記憶媒体に記憶させる記憶制御手段としてコンピュータを機能させるようになっていてもよい。
【００２４】
また、請求項２に記載の発明は、請求項１に記載のマイコンリソース消費見積もりプログラムにおいて、前記算出手段は、前記読出手段が読み出した、変更されたモデルのマイコンリソース消費見積量を、前記記憶媒体が記憶する前記変更前の前記モデルのマイコンリソース消費量および前記記憶媒体が記憶する前記変更されたモデルの当該変更部分の構成要素のマイコンリソース消費見積量に基づいて算出することを特徴とする。
【００２５】
これによって、変更後のモデルのマイコンリソース消費見積もり量は、変更前のモデルのマイコンリソース消費量に基づいて算出されるので、変更前のモデルのマイコンリソース消費量に基づかないで算出される場合に比べて、見積もりの正確性が向上する。
【００２６】
また、請求項３に記載の発明は、請求項２に記載のマイコンリソース消費見積もりプログラムにおいて、前記算出手段が、前記変更前の前記モデルにおいて前記変更部分に代替される部分のマイコンリソース消費見積量を、前記記憶媒体が記憶する当該代替される部分の構成要素のマイコンリソース消費見積量に基づいて算出する代替部算出手段（４１０、４２０）と、前記記憶媒体が記憶する前記変更前の前記モデルのマイコンリソース消費量から前記代替部算出手段が算出した当該代替される部分のマイコンリソース消費見積量を減ずる減算手段（４３０）と、前記記憶媒体が記憶する前記変更されたモデルの当該変更部分の構成要素のマイコンリソース消費見積量に基づいて、当該変更部分のマイコンリソース消費見積量を算出する変更部算出手段（４４０、４５０）と、前記変更部算出手段が算出したマイコンリソース消費見積量を、前記減算手段が減じた結果の値に加算した値を、前記変更されたモデルのマイコンリソース消費見積量をとする加算手段（４６０）と、を有するようにすることを特徴とする。
【００２７】
また、請求項４に記載の発明は、モデルの構成要素のマイコンリソース消費見積量を記憶する記憶媒体（１３、１５）と、モデルを前記記憶媒体から読み出す読出手段（４０５）と、前記受付手段が受け付けた指定に係るモデルのマイコンリソース消費見積量を、前記記憶媒体が記憶する前記モデルの構成要素のマイコンリソース消費見積量に基づいて算出する算出手段（４１０〜４６０）と、を備えたマイコンリソース消費見積もり装置である。
【００２８】
これによって、モデルベース開発において、モデルの構成要素から、そのモデルのマイコンリソース消費見積もり量を算出することができるので、モデルからソースコードを生成する段階の前に、当該モデルによって表現されるプログラムのマイコンへの実装時におけるマイコンリソース消費量を見積もることができるようになる。
【００２９】
また、請求項５に記載の発明は、マイコンに実装されるプログラムのために作成されたモデルをソースコードに変換する手順と、前記変換されたソースコードをオブジェクトコードに変換する手順と、を有するプログラム生成方法であって、モデルをソースコードに変換する手順の前段に、前記作成されたモデルのマイコンリソース消費見積もり量を算出する手順を含むことを特徴とするプログラム生成方法である。
【００３０】
これによって、モデルベース開発において、モデルからソースコードを生成する段階の前に、当該モデルによって表現されるプログラムのマイコンへの実装時におけるマイコンリソース消費量を見積もることができるようになる。
【００３１】
また、請求項６に記載の発明は、請求項５に記載のプログラム生成方法において、前記作成されたモデルのマイコンリソース消費見積量を算出する手順は、前記記憶媒体が記憶する前記モデルの構成要素のマイコンリソース消費見積もり量に基づいてマイコンリソース消費見積量を算出することを特徴とする。
【００３２】
これによって、モデルベース開発において、モデルの構成要素から、そのモデルのマイコンリソース消費見積もり量を算出することができるので、モデルからソースコードを生成する段階の前に、当該モデルによって表現されるプログラムのマイコンへの実装時におけるマイコンリソース消費量を見積もることができるようになる。  なお、上記各手段の括弧内の符号は、後述する実施形態に記載の具体的手段、または具体的手段として下記ＣＰＵ１６を機能させるためのソフトウェアの処理との対応関係を示すものである。
【発明を実施するための最良の形態】
【００３３】
図１に、本発明の一実施形態に係る、エンジンＥＣＵに実装するプログラムについてのモデルベース開発の工程を概略的に示す。
【００３４】
まず要求定義５１の段階で、開発者等が、エンジンＥＣＵの性能、開発のコンセプト等に基づいて、完成品としてのプログラムに要求される機能を定義する。
【００３５】
そして、システム設計５２の段階で、この定義された機能を実現するよう、開発者は仕様書としてのモデル５６を作成し、この作成したモデルに基づいてシミュレーションを行う。
【００３６】
ソフト開発５３の段階では、このようにして作成、修正されたモデル５６がソースコードに変換される（マイコンに実装されるプログラムのために作成されたモデルをソースコードに変換する手順に対応する）。またソフト開発５３では、このソースコードはコンパイル、リンクされてオブジェクトコードに変換される（変換されたソースコードをオブジェクトコードに変換する手順に対応する）。
【００３７】
またソフト開発５３では、生成されたオブジェクトコードから、このプログラムがエンジンＥＣＵに実装された場合の、当該エンジンＥＣＵのＲＯＭを占有する量すなわちＲＯＭ消費量、およびこのプログラムがエンジンＥＣＵに実装されて実行される場合のＲＡＭの占有量すなわちＲＡＭ消費量が特定される。
【００３８】
またソフト開発５３では、このオブジェクトコードは、パーソナルコンピュータ等の仮想空間で擬似的にテスト実行され（ソフト用シミュレーション）、また実際の車両に搭載されていないエンジンＥＣＵに実装された上でテスト実行される（ソフト用ベンチ）。このようにオブジェクトコードをテスト実行することで、そのオブジェクトコードのＣＰＵ処理負荷（ＣＰＵ占有率等）が特定される。
【００３９】
システムテスト／適合５４の段階では、上記の様に生成されたオブジェクトコードが、実際の車両、あるいは車両の機能を模擬的に実現するハードウェアに搭載されたエンジンＥＣＵに実装された状態でテスト実行される。
【００４０】
システムテスト／適合５４では、当該エンジンＥＣＵが搭載された車両を実際に走行させる等についての最終評価が行われる。
【００４１】
以上の様な要求定義５１、システム設計５２、ソフト開発５３、システムテスト／適合５４、最終評価５５の順に行われるモデルベース開発の工程の詳細については、以下で説明する部分を除いて、図１０で説明したモデルベース開発の工程と同様である。
【００４２】
図２に、本実施形態に係るパーソナルコンピュータ１の構成を示す。このパーソナルコンピュータ１は、図１において示したモデルベース開発の工程の各段階において用いられるようになっている。このパーソナルコンピュータ１は、ディスプレイ１１、入力装置１２、ＲＡＭ１３、ＲＯＭ１４、ＨＤＤ（ハードディスクドライブ）１５、ＣＰＵ１６等から構成される。
【００４３】
ディスプレイ１１は、ＣＰＵ１６から入力された映像信号を、ユーザに対して映像として表示する。
【００４４】
入力装置１２は、キーボード、マウス等から構成され、ユーザが操作することにより、その操作に応じた信号をＣＰＵ１６に出力する。
【００４５】
ＲＡＭ１３は読み出し、書き込み可能な揮発性メモリであり、ＲＯＭ１４は読み出し専用の不揮発性メモリであり、ＨＤＤ１５は読み出し、書き込み可能な不揮発性メモリである。ＲＯＭ１４、ＨＤＤ１５には、ＣＰＵ１６が読み出して実行するプログラム等があらかじめ記憶されている。またＨＤＤ１５には、後述するような見積もりモデルのテーブル、モデル情報テーブル等の情報が記憶されている。ＲＡＭ１３は、ＣＰＵ１６がＲＯＭ１４、ＨＤＤ１５に記憶されたプログラムを実行する際に、そのプログラムを一時的に保存するための記憶領域として用いられる。
【００４６】
ＣＰＵ１６は、パーソナルコンピュータ１に電源が投入されることによって起動すると、ＲＯＭ１４から所定のブートプログラムを読み出して実行し、このブートプログラムに規定されるオペレーティングシステム（以下ＯＳと記す）その他のプログラムをＨＤＤ１５から読み出して実行することにより、起動処理を行う。起動処理以後電源が遮断されるまで、ＣＰＵ１６は、入力装置１２からの信号、ＯＳによって予め定められたスケジュール等に基づいて、ＨＤＤ１５に記録されている各種プログラムを当該ＯＳ上のプロセスとして実行する。また、上記した起動処理およびプロセスにおいて、ＣＰＵ１６は必要に応じて入力装置１２から信号の入力を受け付け、またディスプレイ１１に映像信号を出力し、またＲＡＭ１３、ＨＤＤ１５に対してデータの読み出し／書き込みの制御を行う。
【００４７】
なお以降は、プログラムを実行することによるＣＰＵ１６の動作を、その実行されるプログラム自体の動作であるとして説明する。
【００４８】
パーソナルコンピュータ１のＣＰＵ１６が実行するプログラムとしては、システム設計５２におけるモデル作成を支援するプログラム（以下モデルエディタと記す）、シミュレーションのためのプログラム（以下シミュレータと記す）、マイコンリソース消費見積もりプログラム、ソフト開発５３において用いられるソースコード生成プログラム、コンパイラ、リンカ、ソフト用シミュレーションプログラム（以下ソフト用シミュレータと記す）等がある。これらのプログラムは、いずれもユーザの入力装置１２の所定の操作に基づいて上記したＯＳ上で起動するようになっている。
【００４９】
モデルエディタは、ユーザが指定した複数のブロックを、ユーザが指定した組み合わせで組み合わせたモデルとしてディスプレイ１１に表示させ、更にそのモデルをＨＤＤ１５に保存するプログラムである。生成されたモデルには、それぞれ名称がユーザの指定によって、あるいは自動的に付与されるようになっており、ＨＤＤ１５にモデルが保存されるとき、そのモデルの名称と共に保存される。ユーザの指定は、入力装置１２によって行われる。
【００５０】
なお、ブロックとは、モデルを構成する要素としての機能単位であり、ブロックの組み合わせによってモデルが構成される。組み合わせとは、機能単位間の入出力の繋がりをいう。ブロックの具体例としては、例えば入力される２つの数値データに対して所定の四則演算を行う四則演算ブロック、２つの入力の値を比較し、その入力の値の大小等に基づいた値を出力する比較ブロック等がある。
【００５１】
また、モデルエディタを用いて作成するモデルは、既にＨＤＤ１５に保存されているモデルに変更を加えることによって作成される場合と、変更する対象のモデルが無いゼロの状態（この状態をスクラッチと記す）から作成する場合の、両方がある。
【００５２】
シミュレータは、モデルエディタがディスプレイ１１に表示した、あるいはＨＤＤ１５に保存したモデルを読み出し、パーソナルコンピュータ１の仮想空間上でそのまま実行するプログラムである。図３に、シミュレータの動作の概念図を示す。パーソナルコンピュータ１のＣＰＵ１６上で動作するシミュレータは、例えばスロットル開度、スロットル通過空気量、インテークマニホールド圧力の値に基づいて燃料噴射時間を決定するプログラムを表現する燃料噴射モデル４０を取得して実行し、実行結果として基本燃料噴射時間の時系列変化のグラフ４１をディスプレイ１１に表示させる。なお、スロットル開度４２、スロットル通過空気量４３、マニホールド圧力４４の時系列に沿った値は、ユーザの指定等によってあらかじめ決定されたものを用いる。
【００５３】
ソースコード生成プログラムは、ユーザがモデルエディタによって作成し、モデルエディタによってディスプレイ１１に表示された、あるいはＨＤＤ１５に保存されたモデルをＣ＋＋等のソースコードに変換し、変換された結果のソースコードをＨＤＤ１５に保存する。
【００５４】
コンパイラ、リンカは、ソースコードを、当該プログラムが実装されるエンジンＥＣＵのマイコンのＣＰＵが直接実行することができるプログラム形態であるオブジェクトコードに変換する。この様にして生成されたオブジェクトコードのファイルサイズが、このプログラムのＲＯＭ消費量となる。
【００５５】
ＲＯＭ消費量とは、作成されたモデルがシステム設計５２、ソフト開発５３、システムテスト／適合５４を経て、最終的にオブジェクトコードに変換され、車両のエンジンＥＣＵ中のマイコンが有するＲＯＭに保存される場合の、そのオブジェクトコードが占有するＲＯＭ中の記憶領域の量をいう。これは、上述の通りソフト開発５３において生成されたオブジェクトコードのサイズとして表れる。
【００５６】
なお、リンカによってオブジェクトコードが生成されるとき、同時にＭａｐファイルがＨＤＤ１５の記憶領域内に生成される。このＭａｐファイルには、同時に生成されたオブジェクトコードのＲＡＭ消費量が記載されている。
【００５７】
ＲＡＭ消費量とは、作成されたモデルがシステム設計５２、ソフト開発５３、システムテスト／適合５４を経て、最終的にオブジェクトコードに変換され、車両のエンジンＥＣＵ中のマイコンが有するＲＯＭに保存され、実行される場合に、そのオブジェクトコードのために割り当てられるＲＡＭ中の記憶領域のサイズをいう。具体的には、当該オブジェクトコードの用いるスタックのサイズと変数のサイズの和である。これは、ソフト開発５３において生成されたオブジェクトコード中に記載された、スタックの大きさ、変数領域の大きさの情報として表れる。
【００５８】
以上の様に、オブジェクトコードの生成時に、オブジェクトコードのサイズおよびＭａｐファイルの内容から、当該プログラムのＲＯＭ消費量、ＲＡＭ消費量が明らかになる。本実施形態においては、リンカが、オブジェクトコードの生成時に、このＲＯＭ消費量および、ＲＡＭ消費量の情報を、当該モデルの名称と共にモデル情報テーブルとしてＨＤＤ１５に保存する。モデル情報テーブルは、モデルの名称、モデルのＲＯＭ消費量、そのモデルのＲＡＭ消費量の情報の組から成るエントリを複数有するデータである。従って、モデル情報テーブルは、変更前のモデルのマイコンリソース消費量の情報を有する。
【００５９】
ソフト用シミュレーションプログラムは、生成されたオブジェクトコードを、パーソナルコンピュータ１の仮想空間上で実行するプログラムである。オブジェクトコードへの入力データとしては、シミュレータと同様、ユーザ指定のものを用いるようになっていてもよい。
【００６０】
マイコンリソース消費見積もりプログラムは、モデルエディタによって作成されたモデルから、そのモデルのマイコンリソース消費量の見積もりを計算するプログラムである。マイコンリソース消費量としては、ＲＯＭ消費量、ＲＡＭ消費量等がある。
【００６１】
図４に、このマイコンリソース消費見積もりプログラムの処理をフローチャートとして示す。このプログラムは、ユーザが入力装置１２を用いてモデルを指定し、更にこのマイコンリソース消費見積もりプログラムを起動する旨の操作を行うことで動作を開始する。なお、このプログラムは、過去に作成されたモデルに変更を施すことで作成されたモデルを主に対象とするものである。
【００６２】
図５に、変更前のモデル４５、変更後のモデル４６の一例を示す。これらのモデル４５、４６は、各種入力に基づいてエンジンの点火のタイミングを決定するためのプログラムを表現するものである。
【００６３】
変更前のモデル４５は、エンジン回転数、圧力等の入力値に基づいて基本進角、すなわち点火するときのシリンダ角の基本値を出力する基本進角ブロック、水温等の入力値に基づいて基本進角の修正値を出力する各種補正ブロック、および基本進角ブロック、各種補正ブロックからの２つの出力に基づいて点火時期を決定して出力する点火時期ブロックを有している。
【００６４】
これに対して、変更後のモデル４６は、上記した基本進角ブロック、各種補正ブロック、点火時期ブロックに加え、エンジン回転数、エンジンの吸気温に基づいて吸気温補正進角量を出力する吸気温補正進角ブロックを有している。また、変更後のモデル４６における点火時期ブロックは、出力する点火時期の決定の元となるものが、基本進角ブロック、各種補正ブロック、および吸気温補正進角ブロックからの３つの出力である点が、変更前のモデル４５の点火時期ブロックと異なる。
【００６５】
また、吸気温補正進角ブロックは、複数の基本ブロックによって構成される。基本ブロックとは、比較、１次元補間、四則演算等の基本的な機能を実現するためのブロックである。複雑な機能を有するブロックは、一般的にこれら基本ブロックの組み合わせによって構成される。
【００６６】
図６に、この吸気温補正進角ブロック中の基本ブロックの構成を示す。吸気温補正進角ブロックは、定数ブロック５６、比較ブロック５７、１次元補間ブロック５８、固定値ブロック５９、および切り替えブロック６０から成る。
【００６７】
定数ブロック５６は、ユーザが設定可能な定数ａを出力する。比較ブロック５７は、エンジン回転数と定数ブロック５６の出力を入力し、これら２つの入力値の大きさを比較し、エンジン回転数の方が大きければ１を出力し、定数ブロック５６の出力の方が大きければ０を出力する。１次元補間ブロック５８は、入力した吸気温の値から、ＨＤＤ１５に格納された、またはＨＤＤ１５からＲＡＭ１３に展開した吸気温と補正値との対応表を用いた１次元補間により、入力した吸気温に基づく補正値を出力する。固定値ブロック５９は、固定値０を出力する。切り替えブロック６０は、比較ブロック５７から入力した値が１なら、１次元補間ブロック５８から入力した値を出力し、比較ブロック５７から入力した値が０なら、固定値ブロック５９から入力した値を出力する。
【００６８】
これによって、吸気温補正進角は、エンジン回転数が定数ａより高ければ、吸気温に基づく補正値を点火時期ブロックに出力し、エンジン回転数が定数ａより低ければ、補正しない旨の値として０値を出力する。
【００６９】
図４のステップ４０５では、指定されたモデルを読み出す。具体的には、モデルエディタによって作成され、ＲＡＭ１３またはＨＤＤ１５に記憶されているモデルを、ユーザの指定に基づいてＲＡＭ１３中の所定の領域にコピーする。
【００７０】
次にステップ４１０では、このモデルについての変更前のモデルの変更対象部分の構成要素を抽出する。なお、変更前のモデルの特定は、指定されたモデルの名称と同一名称のモデルの改変履歴をＨＤＤ１５から読み出し、その改変履歴の最新のモデルを、変更前のモデルとする。変更前のモデルの変更前のモデルの変更対象部分とは、変更前のモデル中のブロックであって、変更後のモデル中の同名称を有するブロックの内容が変更されているもの、あるいは変更後のモデル中に同名のブロックが存在しないものである。なお、ブロックの名称とは、１つのブロック毎に決まる固有の名称であり、同種（例えば同じ四則演算）のブロックであっても異なる名称を有するようになっている。
【００７１】
図５の変更前のモデル４５、変更後のモデル４６の例においては、変更前のモデルの変更対象部分は、点火時期ブロックである。
【００７２】
次にステップ４２０では、当該変更対象部分の構成要素のＲＯＭ消費見積もり量、ＲＡＭ消費見積もり量を見積もりモデルから算出する。見積もりモデルとは、基本ブロック、その基本ブロック当たりのＲＯＭ消費見積もり量、およびその基本ブロック当たりのＲＡＭ消費見積もり量等の情報から成るエントリを複数有するテーブルであり、ＨＤＤ１５にあらかじめ保存されている。図７に、見積もりモデルのテーブルの例を示す。
【００７３】
見積もりモデルテーブルは、基本ブロックの種類、その基本ブロックの種類についての入出力の変数型等の各種情報、その基本ブロックのＲＯＭ消費見積もり量、およびその基本ブロックのＲＡＭ消費見積もり量の情報の組から成るエントリを複数有するデータである。図７の表の先頭行以外の各行が１つのエントリを表し、これら各行中の各列が、それらエントリが有する情報の組の一要素を表している。
【００７４】
例えば、図７中の４行目のエントリは、切り替えブロックのエントリであり、このエントリが含む情報により、切り替えブロックは、入力パラメータが３つあり、そのＲＯＭ消費見積もり量、ＲＡＭ消費見積もり量はそれぞれ７２バイト、０バイトであることがわかる。なお、見積もりモデルテーブル中に含まれる情報は、あらかじめ設定されているものである。
【００７５】
ステップ４２０の処理は、具体的には、見積もりモデルテーブルの情報を参照することで、ステップ４１０で抽出した構成要素のそれぞれについてのＲＯＭ消費見積もり量、ＲＡＭ消費見積もり量を特定し、それぞれの当該構成要素についての総和ａ（ＲＯＭ消費見積もり量、ＲＡＭ消費見積もり量の２値を有する量）を当該変更対象部分の構成要素のＲＯＭ消費見積もり量、ＲＡＭ消費見積もり量とする。
【００７６】
図５の変更前のモデル４５、変更後のモデル４６の例においては、点火時期モデルが含む基本ブロックのそれぞれについてのＲＯＭ消費見積もり量、ＲＡＭ消費見積もり量を、見積もりモデルのテーブルから特定し、それらの総和を総和ａとする。
【００７７】
次にステップ４３０では、当該変更前のモデルの総ＲＯＭ消費量、総ＲＡＭ消費量から、ステップ４２０で算出した総和ａを減算したものを減算値ｂ（２値を有する量）とする。変更前のモデルの総ＲＯＭ消費量、総ＲＡＭ消費量の値は、モデル情報テーブルを読み出すことによって特定する。
【００７８】
図５の変更前のモデル４５、変更後のモデル４６の例においては、ＨＤＤ１５中のモデル情報テーブル中にある、変更前のモデル４５の総ＲＯＭ消費量、総ＲＡＭ消費量を読み出すことによって、この処理を実現する。
【００７９】
次にステップ４４０では、変更後のモデルの変更対象部分の構成要素を抽出する。変更後のモデルの変更対象部分とは、変更後のモデル中のブロックであって、変更前のモデル中の同名称を有するブロックの内容が変更されているもの、あるいは変更前のモデル中に同名のブロックが存在しないものである。
【００８０】
図５の変更前のモデル４５、変更後のモデル４６の例においては、変更前のモデルの変更対象部分は、点火時期ブロックおよび吸気温補正進角ブロックである。
【００８１】
次にステップ４５０では、ステップ４４０で抽出した変更後のモデルの変更対象部分の構成要素のＲＯＭ消費量、ＲＡＭ消費量を見積もりモデルから算出する。具体的には、見積もりモデルのテーブルを参照することで、ステップ４４０で抽出した構成要素のそれぞれについてのＲＯＭ消費見積もり量、ＲＡＭ消費見積もり量を特定し、それぞれの当該構成要素についての総和ｃ（ＲＯＭ消費見積もり量、ＲＡＭ消費見積もり量の２値を有する量）を当該変更対象部分の構成要素のＲＯＭ消費見積もり量、ＲＡＭ消費見積もり量とする。
【００８２】
図５の変更前のモデル４５、変更後のモデル４６の例においては、点火時期モデルおよび吸気温補正進角が含む基本ブロックのそれぞれについてのＲＯＭ消費見積もり量、ＲＡＭ消費見積もり量を、見積もりモデルのテーブルから特定し、それらの総和を総和ｃとする。
【００８３】
次にステップ４６０では、ステップ４３０で算出した減算値ｂに、ステップ４５０で算出した総和ｃを加算し、その加算値ｂ＋ｃ、および変更前のモデルの総消費量すなわちａ＋ｂをディスプレイ１１に表示させる。図８に、ステップ４６０によってディスプレイ１１に表示される情報の一例を示す。図８に示された表の２行２列目の値が変更前のモデルのＲＯＭ消費量、３行２列目の値が変更後のモデルのＲＯＭ消費量、２行３列目の値が変更前のモデルのＲＡＭ消費量、３行３列目の値が変更後のモデルのＲＡＭ消費量を表している。ステップ４６０の後、処理は終了する。
【００８４】
以上のようなマイコンリソース消費見積もりプログラムの処理によってディスプレイ１１が表示する加算値ｂ＋ｃは、［変更前のモデルの総消費量−変更前のモデルの変更対象部分の消費見積もり量＋変更後のモデルの変更対象部分の消費見積もり量ｃ］、すなわち、変更後のモデルの総消費見積もり量となっている。
【００８５】
なお、完全にスクラッチから作成されたモデルの場合には、「変更前のモデル」が存在しないので、その場合、ステップ４１０〜４３０における変更前のモデルの変更対象部分は無しであり、ステップ４４０および４５０における変更後のモデルの変更対象部分とは、当該スクラッチから作成されたモデルの全体である。
【００８６】
上記のようなモデルベース開発の工程における手戻りの流れを図９に示す。本実施形態のモデルベース開発の場合は、モデルからソースコードを生成する前、すなわちソフト開発５３の前の段階で、マイコンリソース消費見積もりプログラムを実行することで、システム設計５２で作成したモデルのマイコンリソース消費量を見積もることができる。従って、図１２の場合のように、ソフト開発５３でＲＯＭ容量オーバー、ＲＡＭ容量オーバー等のマイコンリソース消費量に起因する問題が初めて判明し、それを修正するために開発工程がソフト開発５３からシステム設計５２に手戻りすることがない。
【００８７】
これによって、モデルベース開発において、モデルの構成要素である基本ブロックから、そのモデルのマイコンリソース消費見積もり量を算出することができるので、モデルからソースコードを生成する段階の前に、当該モデルによって表現されるプログラムのエンジンＥＣＵへの実装時におけるマイコンリソース消費量を見積もることができるようになる。更に、変更後のモデルのマイコンリソース消費見積もり量は、変更前のモデルのマイコンリソース消費量に基づいて算出されるので、変更前のモデルのマイコンリソース消費量に基づかないで算出される場合に比べて、見積もりの正確性が向上する。
【００８８】
なお、上記した実施形態のマイコンリソース消費見積もりプログラムにおいては、マイコンリソース消費量のうち、ＲＯＭ消費量とＲＡＭ消費量のみを見積もって表示させているが、必ずしもＲＯＭ消費量とＲＡＭ消費量に限る必要はなく、ＣＰＵ処理負荷を見積もって表示させるようになっていてもよい。
【００８９】
ＣＰＵ処理負荷とは、例えば作成されたモデルがシステム設計５２、ソフト開発５３、システムテスト／適合５４を経て、最終的にオブジェクトコードに変換され、車両のエンジンＥＣＵ中のマイコンが有するＲＯＭに保存され、実行された場合の、ＣＰＵの処理時間の全体に対する、そのオブジェクトコードを実行するためのＣＰＵの処理時間比率、すなわちＣＰＵ占有率である。なお、エンジンＥＣＵの場合、処理はエンジンの回転の１サイクル毎に繰り返されることが通常なので、ＣＰＵ占有率はエンジン回転数によって変化する。
【００９０】
具体的には、図７に示した見積もりモデルのテーブルの各エントリが、各基本ブロックの演算時間（エンジンＥＣＵ中のマイコンにおいて当該ブロックを実行するために要する時間）の情報を含んでおり、リソース消費見積もりプログラムは、これら各ブロックの演算時間に基づいて、所定のエンジン回転数におけるモデルＣＰＵ占有率を見積もる様になっていてもよい。
【００９１】
また、システムテスト／適合５４の段階において、モデルから生成されたオブジェクトコードを実行することにより、実際のＣＰＵ処理負荷が明らかになるので、この時、例えばユーザが入力装置１２を用いてＨＤＤ１５中のモデル情報テーブルにその処理負荷の情報を書き込むことで、マイコンリソース消費見積もりプログラムは、変更されたモデルのＣＰＵ処理負荷見積もり量を、ＨＤＤ１５が記憶する変更前のモデルのＣＰＵ処理負荷およびＨＤＤ１５が記憶する変更されたモデルの当該変更部分の構成要素のＣＰＵ処理負荷に基づいて算出し、表示させることができるようになる。
【００９２】
また、ディスプレイ１１に表示させるＣＰＵ処理負荷としては、上記したような所定のエンジン回転数におけるモデルのＣＰＵ占有率であってもよいが、そのモデルのプログラムを実行するときに、エンジンＥＣＵのＣＰＵにリセットがかかるエンジン回転数（ＣＰＵリセット回転数）をＣＰＵ処理負荷として算出し、表示させるようになっていてもよい。
【００９３】
また、図７に示した、見積もりモデルのテーブルの各エントリは、数値としてＲＡＭ消費量、ＲＯＭ消費量等のマイコンリソース消費量を表しているが、これは数値ではなく式であってもよい。例えば、四則演算ブロックは、ユーザの設定によって入力データ数、四則演算の内容を変えることができる。この場合、四則演算ブロックのマイコンリソース消費見積もり量が、その四則演算ブロックにおいて行われる乗算の回数、除算の回数、加減算の回数の線形関数として表されていてもよい。
【００９４】
また、本実施形態においては、エンジンＥＣＵに搭載するプログラムのマイコンリソース消費見積もり量を算出、表示しているようになっているが、エンジンＥＣＵに用いられるマイコン以外のマイコンに搭載されるプログラムについて、このようなマイコンリソース消費見積もり量を算出してもよい。
【図面の簡単な説明】
【００９５】
【図１】本発明の実施形態に係る、エンジンＥＣＵに実装するプログラムについてのモデルベース開発の工程の概略図である。
【図２】本実施形態に係るパーソナルコンピュータ１の構成を示す図である。
【図３】シミュレータの動作の概念図である。
【図４】マイコンリソース消費見積もりプログラムの処理のフローチャートである。
【図５】変更前のモデル４５、変更後のモデル４６の一例を示す図である。
【図６】吸気温補正進角ブロック中の基本ブロックの構成を示す図である。
【図７】見積もりモデルのテーブルの例を示す図表である。
【図８】図４のステップ４６０によってディスプレイ１１に表示される情報の一例を示す図表である。
【図９】本実施形態におけるモデルベース開発の工程における手戻りの流れを示す図である。
【図１０】従来の、エンジンＥＣＵに実装するプログラムについてのモデルベース開発の工程を概略的に示す図である。
【図１１】モデルベース開発以前の工程における手戻りの流れを示す図である。
【図１２】従来のモデルベース開発の工程における手戻りの流れを示す図である。
【符号の説明】
【００９６】
１…パーソナルコンピュータ、１１…ディスプレイ、１２…入力装置、１３…ＲＡＭ、
１４…ＲＯＭ、１５…ＨＤＤ、１６…ＣＰＵ、４０…燃料噴射モデル、
４１…基本燃料噴射時間の時系列変化のグラフ、４２…スロットル開度、
４３…スロットル通過空気量、４４…マニホールド圧力、４５…変更前のモデル、
４６…変更後のモデル、５１…要求定義、５２…システム設計、５３…ソフト開発、
５４…システムテスト／適合、５５…最終評価、５６…定数ブロック、
５７…比較ブロック、５８…１次元補間ブロック、５９…固定値ブロック、
６０…切り替えブロック。
【図１】
2005078243.tif 000003
【図２】
2005078243.tif 000004
【図３】
2005078243.tif 000005
【図４】
2005078243.tif 000006
【図５】
2005078243.tif 000007
【図６】
2005078243.tif 000008
【図７】
2005078243.tif 000009
【図８】
2005078243.tif 000010
【図９】
2005078243.tif 000011
【図１０】
2005078243.tif 000012
【図１１】
2005078243.tif 000013
【図１２】
2005078243.tif 000014