(57)【要約】【課題】制御ソフトウェアを複数部署で開発する際に、品質保証の完了したソフトウェアの一部に新たなソフトウェアを追加することで品質が低下することを防止すること。【解決手段】各Ｉ／Ｏを制御するソフトウェアのうち、追加コンポーネントのアクセスにより影響を受けるコンポーネント群の中間に位置するインターフェースを削除し、最終演算値あるいは目標値設定のインターフェースのみを残すことにより、応答時間遅延の原因となるタイマへのアクセス、割込み応答処理の追加、あるいは、周辺回路の状態遷移に依存する入出力処理への追加ソフトウェアからのアクセスを制限する。【選択図】図１
2009080566.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムと、制御対象ハードウェアの信号と前記アプリケーションプログラムで扱うデータとの間の入出力処理を行うデバイスドライバとの間のデータの共通仕様を定義したインターフェース情報に基づいて、前記アプリケーションプログラムと前記デバイスドライバを結合して車両制御用プログラムを生成するプログラム生成方法であって、
前記アプリケーションプログラム、前記デバイスドライバ及び前記インターフェース情報を入力し、前記インターフェース情報の一部を削除し、前記アプリケーションプログラム、前記デバイスドライバ及び前記削除部によって削除された残りのインターフェース情報を出力する第１のステップと、
前記アプリケーションプログラムとは異なる新たなアプリケーションプログラムを入力し、前記第１の処理で出力された前記アプリケーションプログラム、前記デバイスドライバ、及び前記新たなアプリケーションプログラムとを、前記残りのインターフェース情報を用いて結合する第２のステップと、
を有するプログラム生成方法。
【請求項２】
アプリケーションプログラムと、制御対象の自動車部品の信号と前記アプリケーションプログラムで扱うデータとの間の入出力処理を行うデバイスドライバとの間のデータの共通仕様を定義したインターフェース情報に基づいて、前記アプリケーションプログラムと前記デバイスドライバを結合して車両制御用プログラムを生成するプログラム生成装置であって、
前記アプリケーションプログラム、前記デバイスドライバ及び前記インターフェース情報を入力する入力部と、
前記インターフェース情報の一部を削除する削除部と、
前記アプリケーションプログラム、前記デバイスドライバ及び前記削除部によって削除された残りのインターフェース情報を出力する出力部と、
を有する車両制御用プログラム生成装置。
【請求項３】
アプリケーションプログラムと当該アプリケーションが制御する自動車部品との間のデータ入出力処理を行うデバイスドライバとを有し、前記自動車部品の制御をコンピュータに実行させるための車両制御用プログラムであって、
前記アプリケーションプログラム同士、前記デバイスドライバ同士、または前記アプリケーションプログラムと前記デバイスドライバとの間のデータの共通仕様を定義したインターフェース情報に基づいて、前記アプリケーションプログラムと前記デバイスドライバを結合して生成され、
前記自動車部品の目標制御量であって前記デバイスドライバの入力パラメータとは異なる目標制御量を出力する第１のアプリケーションプログラムと、前記第１のアプリケーションプログラムから出力された前記目標制御量を前記デバイスドライバの入力パラメータに変換して出力する第２のアプリケーションプログラムとを有し、
前記デバイスドライバは、前記第２のアプリケーションプログラムから出力された入力パラメータに基づいて前記自動車部品に対して制御信号を出力し、前記第１のアプリケーションプログラムは、所定の前記デバイスドライバへの情報が除かれた前記インターフェース情報を用いて作成されている車両制御用プログラム。
【請求項４】
アプリケーションプログラムと、制御対象の自動車部品の信号と前記アプリケーションプログラムで扱うデータとの間の入出力処理を行うデバイスドライバと、前記アプリケーションプログラムと前記デバイスドライバとの間のデータの共通仕様を定義したインターフェース情報を有する補助データとを有し、前記補助データに基づいて前記アプリケーションプログラムと前記ドライバを結合して成る車両制御用プログラムであって、
前記補助データは、所定の前記デバイスドライバにアクセスする前記アプリケーションプログラムの開発時には、前記所定のデバイスドライバと前記アプリケーションプログラムとの間の前記インターフェース情報を含むとともに、前記所定のデバイスドライバにアクセスする新たなアプリケーションプログラムの開発時には、前記インターフェース情報が削除されている車両制御用プログラム。
【請求項５】
アプリケーションプログラムと、制御対象の自動車部品の信号と前記アプリケーションプログラムで扱うデータとの間の入出力処理を行うデバイスドライバとを有し、前記アプリケーションプログラムと前記デバイスドライバとの間のデータの共通仕様を定義したインターフェース情報に基づいて、前記アプリケーションプログラムと前記デバイスドライバを結合して成る車両制御用プログラムであって、
前記アプリケーションプログラム、前記デバイスドライバ及び情報の一部が削除された前記インターフェース情報を有し、前記削除されたインターフェース情報に関係する前記アプリケーションプログラムと前記デバイスドライバとの結合時に警告を表示するように構成されている車両制御用プログラム。
【請求項６】
アプリケーションプログラムと当該アプリケーションが制御する自動車部品との間のデータ入出力処理を行うデバイスドライバとを有し、前記アプリケーションプログラム同士、前記ドライバ同士、または前記アプリケーションプログラムと前記ドライバとの間のデータの共通仕様を定義したインターフェース情報に基づいて前記アプリケーションプログラムと前記ドライバを結合して生成された車両制御用プログラムを記憶し、当該車両制御用プログラムに従って前記自動車部品を制御する自動車用制御装置であって、
前記自動車部品の目標制御量であって、前記セバイスドライバの入力パラメータとは異なる目標制御量を出力する第１のアプリケーションプログラムと、前記第１のアプリケーションプログラムから出力された前記目標制御量を前記ドライバの入力パラメータに変換して出力する第２のアプリケーションプログラムと、前記第２のアプリケーションプログラムから出力された入力パラメータに基づいて前記自動車部品に対して制御信号を出力するデバイスドライバを有し、前記第１のアプリケーションプログラムは、所定の前記デバイスドライバへの情報が除かれた前記インターフェース情報を用いて作成された車両制御用プログラムに従って前記自動車部品を制御することを特徴とする自動車用制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車用制御装置を構成するマイクロコンピュータに実行させるための車両制御用プログラムおよびプログラム生成方法およびプログラム生成装置および自動車用制御装置に係り、特に、アプリケーションプログラムと当該アプリケーションが制御する自動車部品との間のデータ入出力処理を行うデバイスドライバとを有する車両制御用プログラム、プログラム生成方法、プログラム生成装置、自動車用制御装置に関する。
【背景技術】
【０００２】
自動車エンジン制御などを行う制御装置として、中央演算装置、ＲＯＭ、ＲＡＭ、入出力信号処理装置などを内蔵したマイクロコントローラ（以下マイコンと表記）が用いられている。マイコンに搭載されるソフトウェアは、目的とする制御動作が行えるように、一般的には、制御処理を行うアプリケーションプログラムと、アプリケーションプログラムが制御する自動車部品（デバイス）に対してデータの入出力を行うデバイスドライバ、オペレーティングシステム（ＯＳ）などによって構成されている。
【０００３】
近年、ソフトウェアの規模の増大に伴い、個別の制御システムについてアプリケーションプログラムと、デバイスドライバと呼ばれるデバイス制御プログラムとを全て開発することが困難になっており、ソフトウェアを小さな単位の部品として構成し、これを再利用する手法や、これらを階層化し、変更箇所を局所化するなどの手法が採用されている。
【０００４】
階層化、部品化の手法により、デバイス制御プログラムをマイコンや電子回路を専門とする組織で開発し、アプリケーションプログラムを車両制御を専門とする組織それぞれ別々に開発し、両者を統合する組織で全ての制御ユニットとソフトウェアをとり纏めるといった複数の組織で並行に開発する開発プロセスの採用が可能となっている。
【０００５】
従来技術として、エンジン制御プログラムにオブジェクト指向設計されたプログラム適用し、デバイスドライバを三階層化することにより、デバイスの変更を局所化することで、ハードウェアの変更に伴うソフトウェアの開発工数の低減を図ったものがある（例えば、実施形態１）。
【０００６】
また、要求仕様が異なる多様なアプリケーションプログラムに対して共通のプラットフォームプログラムを再利用するための手法として、中間層を設けてアプリケーションプログラム毎の差異を吸収する手法、データ形式や提供タイミングに基いて橋渡しを行う中間層を設ける手法が知られている（例えば、実施形態２）。
【０００７】
【特許文献１】特開２０００−９７１０２号公報
【特許文献２】特開２００４−１９２５４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
プログラムを機能単位毎に分割するモジュール化の手法においては、モジュール間のインタフェースの形式を定め、各モジュールのインタフェースを明確に定義し、必要に応じてコンポーネント間の接続を行うことにより、ソフトウェアを構築する。このとき、接続するモジュール間のインタフェースの形式が合致していれば、モジュールを自由に組み合わせることが可能であり、モジュールの再利用が促進できる。このため、モジュールのインタフェースは、可能な限りオープンにするべく作成される。
【０００９】
しかしながら、複数の組織でソフトウェアの一部をそれぞれ担当し、各組織で開発、品質保証まで担当する場合には、品質保証の完了したモジュールに対し、他組織が作成したソフトウェアから、そのモジュールあるいはそのモジュールが利用している他のモジュールへのアクセスが自由になされると、モジュールの動作が意図せず変わってしまうことがある。このことにより、品質保証が維持できず、システムとしての品質の低下と修正、検証に要する開発期間の増大とを招くことになる。
【００１０】
特に、自動車などの制御に好適なリアルタイム制御を実現するためには、演算、入出力処理などの各処理の内容が正しいこととともに、各処理が最適なタイミングで行われる必要があり、数マイクロ秒の遅延も許されない場合も多い。
【００１１】
このような応答性が要求される信号制御は、マイコン上のソフトウェアだけでなく、マイコン内蔵あるいはマイコンに外付けされるタイマと信号出力装置の組み合わせで実現されることが多く、タイマの状態に依存した操作や、その順序によって所望の動作が得られなくなる。
【００１２】
また、予期せぬ追加アプリケーション処理が、応答性の要求される割込み処理や、割込み優先度のより高い処理として追加されることにより、所定の応答すべき出力が遅延し、アプリケーションプログラム追加前に保証した最悪応答時間を増大させる結果となり得る。
【００１３】
本発明は前記解決しようとする課題に鑑みてなされたものであって、その目的とするところは、制御ソフトウェアを複数部署で開発する際に、品質保証の完了したコンポーネントへ悪影響を及ぼすコンポーネントの追加を制限し、機能追加時に既存ソフトウェア部品の動作を損ねることなく新機能の追加を可能することである。
【課題を解決するための手段】
【００１４】
前記目的を達成するべく、本発明によるプログラム生成方法は、アプリケーションプログラムと、制御対象ハードウェアの信号と前記アプリケーションプログラムで扱うデータとの間の入出力処理を行うデバイスドライバとの間のデータの共通仕様を定義したインターフェース情報に基づいて、前記アプリケーションプログラムと前記デバイスドライバを結合して車両制御用プログラムを生成するプログラム生成方法であって、前記アプリケーションプログラム、前記デバイスドライバ及び前記インターフェース情報を入力し、前記インターフェース情報の一部を削除し、前記アプリケーションプログラム、前記デバイスドライバ及び前記削除部によって削除された残りのインターフェース情報を出力する第１のステップと、前記アプリケーションプログラムとは異なる新たなアプリケーションプログラムを入力し、前記第１の処理で出力された前記アプリケーションプログラム、前記デバイスドライバ、及び前記新たなアプリケーションプログラムとを、前記残りのインターフェース情報を用いて結合する第２のステップとを有する。
【００１５】
また、本発明によるプログラム生成装置は、アプリケーションプログラムと、制御対象の自動車部品の信号と前記アプリケーションプログラムで扱うデータとの間の入出力処理を行うデバイスドライバとの間のデータの共通仕様を定義したインターフェース情報に基づいて、前記アプリケーションプログラムと前記デバイスドライバを結合して車両制御用プログラムを生成するプログラム生成装置であって、前記アプリケーションプログラム、前記デバイスドライバ及び前記インターフェース情報を入力する入力部と、前記インターフェース情報の一部を削除する削除部と、前記アプリケーションプログラム、前記デバイスドライバ及び前記削除部によって削除された残りのインターフェース情報を出力する出力部とを有する。
【００１６】
更に、本発明による車両制御用プログラムは、アプリケーションプログラムと当該アプリケーションが制御する自動車部品との間のデータ入出力処理を行うデバイスドライバとを有し、前記自動車部品の制御をコンピュータに実行させるための車両制御用プログラムであって、前記アプリケーションプログラム同士、前記デバイスドライバ同士、または前記アプリケーションプログラムと前記デバイスドライバとの間のデータの共通仕様を定義したインターフェース情報に基づいて、前記アプリケーションプログラムと前記デバイスドライバを結合して生成され、前記自動車部品の目標制御量であって前記デバイスドライバの入力パラメータとは異なる目標制御量を出力する第１のアプリケーションプログラムと、前記第１のアプリケーションプログラムから出力された前記目標制御量を前記デバイスドライバの入力パラメータに変換して出力する第２のアプリケーションプログラムとを有し、前記デバイスドライバは、前記第２のアプリケーションプログラムから出力された入力パラメータに基づいて前記自動車部品に対して制御信号を出力し、前記第１のアプリケーションプログラムは、所定の前記デバイスドライバへの情報が除かれた前記インターフェース情報を用いて作成されている。
【００１７】
更にまた、本発明による車両制御用プログラムは、アプリケーションプログラムと、制御対象の自動車部品の信号と前記アプリケーションプログラムで扱うデータとの間の入出力処理を行うデバイスドライバと、前記アプリケーションプログラムと前記デバイスドライバとの間のデータの共通仕様を定義したインターフェース情報を有する補助データとを有し、前記補助データに基づいて前記アプリケーションプログラムと前記デバイスドライバを結合して成る車両制御用プログラムであって、前記補助データは、所定の前記デバイスドライバにアクセスする前記アプリケーションプログラムの開発時には、前記所定のデバイスドライバと前記アプリケーションプログラムとの間の前記インターフェース情報を含むとともに、前記所定のデバイスドライバにアクセスする新たなアプリケーションプログラムの開発時には、前記インターフェース情報が削除されている。
【００１８】
更にまた、本発明による車両制御用プログラムは、アプリケーションプログラムと、制御対象の自動車部品の信号と前記アプリケーションプログラムで扱うデータとの間の入出力処理を行うデバイスドライバとを有し、前記アプリケーションプログラムと前記デバイスドライバとの間のデータの共通仕様を定義したインターフェース情報に基づいて、前記アプリケーションプログラムと前記デバイスドライバを結合して成る車両制御用プログラムであって、前記アプリケーションプログラム、前記デバイスドライバ及び情報の一部が削除された前記インターフェース情報を有し、前記削除されたインターフェース情報に関係する前記アプリケーションプログラムと前記デバイスドライバとの結合時に警告を表示するように構成されている。
【００１９】
更にまた、本発明による自動車用制御装置は、アプリケーションプログラムと当該アプリケーションが制御する自動車部品との間のデータ入出力処理を行うデバイスドライバとを有し、前記アプリケーションプログラム同士、前記ドライバ同士、または前記アプリケーションプログラムと前記ドライバとの間のデータの共通仕様を定義したインターフェース情報に基づいて前記アプリケーションプログラムと前記ドライバを結合して生成された車両制御用プログラムを記憶し、当該車両制御用プログラムに従って前記自動車部品を制御する自動車用制御装置であって、前記自動車部品の目標制御量であって、前記ドライバの入力パラメータとは異なる目標制御量を出力する第１のアプリケーションプログラムと、前記第１のアプリケーションプログラムから出力された前記目標制御量を前記ドライバの入力パラメータに変換して出力する第２のアプリケーションプログラムと、前記第２のアプリケーションプログラムから出力された入力パラメータに基づいて前記自動車部品に対して制御信号を出力するデバイスドライバを有し、前記第１のアプリケーションプログラムは、所定の前記デバイスドライバへの情報が除かれた前記インターフェース情報を用いて作成された車両制御用プログラムに従って前記自動車部品を制御することを特徴としている。
【発明の効果】
【００２０】
各Ｉ／Ｏを制御するソフトウェアのうち、追加コンポーネントのアクセスにより影響を受けるコンポーネント群の中間に位置するインターフェースを削除し、最終演算値あるいは目標値設定のインターフェースのみを残すことにより、応答時間遅延の原因となるタイマへのアクセス、割込み応答処理の追加、あるいは、周辺回路の状態遷移に依存する入出力処理への追加ソフトウェアからのアクセスを制限することが行われる。このようにして作成したソフトウェアは、各部署で検証した品質保証をもとに、システムの品質保証を行うことができ、組み合わせによる品質低下とそれに伴う開発期間の増大を防止できる。
【発明を実施するための最良の形態】
【００２１】
本発明の実施形態を、図を参照して説明する。
図１は、本発明の対象とする制御システムの一つである自動車エンジン制御システムの構成を示している。コントロールユニット２０１は、中央演算装置（ＣＰＵ）２０２、割込みコントローラ２０３、タイマ・パルスコントローラ２０４、ＡＤ変換器２０５、読み出し専用メモリ（ＲＯＭ）２０６、揮発性読み書きメモリ（ＲＡＭ）２０７、バス２０８、入出力ポート２０９などから構成され、電源装置２１０から電源の供給を受ける。
【００２２】
なお、符号２０２〜２１０の各要素は、一つの素子上に内蔵される場合と、別素子を用いて接続される場合があるが、その相違は、本発明に特に影響しないので、その構成は問わない。
【００２３】
コントロールユニット２０１には制御対象であるエアフローセンサ２２１、電制スロットル２２２、インジェクタ２２３、点火プラグ２２４、空燃比センサ２２５、クランク角センサ２２６などのセンサや、アクチュエータ２３０が入出力ポート２０９を介して接続され、コントロールユニット２０１がこれらの制御を行う。制御は、ＣＰＵ２０２をはじめとする構成要素から入出力ポート２０９のレジスタへの読み書きにより行われる。制御の方法を記述したソフトウェアはコントロールユニット２０１上のＲＯＭ２０６およびＲＡＭ２０７に搭載される。
【００２４】
図２は、コントロールユニット２０１が実行するソフトウェアの構成図である。ソフトウェアは、大きく分けて、アプリケーションプログラム３０１と、オペレーティングシステム３０２と、デバイスドライバ３０３に分類される。
【００２５】
アプリケーションプログラム３０１は、アプリケーションプログラムインターフェイス（ＡＰＩ）３０５を通してオペレーティングシステム３０２やデバイスドライバ３０３と情報や処理の受け渡しを行う。接続されるハードウェアによらずＡＰＩ３０５を標準化することにより、ハードウェアが変更されても、その影響がアプリケーションプログラム３０１へ及ぶことを避けることができる。オペレーティングシステム３０２、デバイスドライバ３０３は、マイコン３０４の入出力ポートなどのハードウェアインターフェイス（ＨＷＩ）３０６を通してこれらの制御を行う。
【００２６】
図３は、図２に示すソフトウェアの構成の詳細である。本実施形態では、制御ソフトウェアを部品化し、下記の階層に配置する。
【００２７】
制御ロジックを記述するのがアプリケーション部１２３である。ここでは、ハードウェアやマイコンに依存しない制御ロジックや演算処理、情報処理を行う。アプリケーション１０１、１０２と、アプリケーション同士の入力インターフェース１０５、出力インターフェース１０３、１０４とで指定された接続関係に基づき接続するのが部品接続部１２４である。
【００２８】
ハードウェア１２８に関連する処理を行うのがプラットフォーム１１０であり、アプリケーション部１２３とのインターフェースがプラットフォームＩ／Ｆ１２５である。
【００２９】
プラットフォーム１１０の内部は、結合済みソフトウェア部品１１１と、単体ソフトウェア部品１１７、１２１とに分類する。そして、プラットフォームＩ／Ｆ１２５は、プラットフォーム１１０が有する結合済みソフトウェア部品１１１のための出力インターフェース１０７、入力インターフェース１０８と、単体ソフトウェア部品１１７のための入力インターフェース１０９とを有する。
【００３０】
結合済みソフトウェア部品１１１は、検証を終えたなどの理由により、動作の変更を行わないソウトウェア部品であり、部品の内部処理として、検証済みアプリケーション処理部１１２、１１３、信号変換処理部１１５、１１６、入力デバイス制御部１１９、出力デバイス制御部１２０を有し、追加されるソフトウェア部品から内部処理に到達するインターフェースを削除して到達できないよう構成したものである。
【００３１】
単体ソフトウェア部品１１７、１２１は、以下の構成である。単体ソフトウェア部品１１７により具現されて信号変換部１２６に属する信号変換部品１１７ａは入力インターフェース１１４を有し、もう一つの単体ソフト部品１２１により具現されて入出力制御部１２７に属する出力デバイス制御部品１２１ａも入力インターフェース１１８を有する。
【００３２】
入力デバイス制御部１１９、出力デバイス制御部１２０および出力デバイス制御部品１２１ａは、ハードウェア１２８にアクセスし、マイコン上あるいはマイコン外付けの入出力デバイスを駆動する。
【００３３】
上述したように、所定のソフトウェア部品を結合済みソフトウェア部品として纏め、各ソフトウェア部品毎の入出力インターフェースを削除することにより、検証後の工程で追加されるソフトウェアによる誤動作を防止できる。
【００３４】
以下では、点火制御を例にとって各コンポーネントの構成と動作について説明する。
点火制御は、自動車エンジンの各気筒に配置された点火プラグへ印加する電圧電流のオン・オフを制御することで行う。図４は、その機器構成を示している。制御対象であるエンジン７０１は、ピストン７０２の上下によってクランク軸７０１Ａが回転する。クランク軸７０１Ａの回転位置を検出するのがクランク角センサ７０４である。クランク角センサ７０４は、回転プレート７０５の円周上に配置した歯に対して磁気センサやホールＩＣ７０６を用いることにより、エンジン７０１の回転位置（クランク軸７０１Ａの回転位置）を検出する。
【００３５】
クランク角センサ７０４が出力するセンサ信号は、ＥＣＵ７０７上の入力回路７０９を介してマイコン７１０の端子に入力され、マイコン内部のタイマ７１２を介してマイコン７１０上で動作するソフトウェアに取り込まれる。
【００３６】
また、一般に、エンジン７０１の燃焼室７０１Ｂではピストン７０２が圧縮上死点付近に達したタイミングで点火を行う。点火は点火プラグ７０３に一定時間に亘って電流（電圧）を印加し、その電流を遮断することによりイグニッションコイル（図示省略）を介して高電圧を発生させることにより行う。電圧の印加はマイコン７１０上のソフトウェアからの出力指示によりタイマ７１１を介して駆動回路７０８によって実際の駆動電流が出力される。この電流を印加開始する時期を通電時期と呼び、電流を遮断する時期を点火時期と呼ぶ。
【００３７】
図５は、点火信号を出力するためのソフトウェアの処理タイミングを時系列に示したものであり、図６は、この一連の処理順序を行うハードウェアおよびソフトウェアの実行順序を記述したものである。
【００３８】
クランク角センサ７０４の検出信号Ｓｃの立ち上がりを検出し（ステップ５０１）、その数や周期などをもとに回転数やエンジン回転位置を検出する（ステップ５０２）。吸気上死点ＩＴＤＣを点火信号算出のための基準位置として用いるために、時点ｔ０〜ｔ１まで基準位置を待つ（ステップ５０３）。時点ｔ１で吸気上死点ＩＴＤＣを検出すると、時点ｔ１を基準として出力目標値を算出する（ステップ５０４）。出力目標値は、通電時間Ｔｃと点火タイミングＴｉの組である。通電時間Ｔｃはイグニッションコイルに印加する電流であることから時間で指定され、点火タイミングＴｉは、エンジンシリンダ内のピストン７０２の位置に依存するため、クランク角度で指定する場合が多い。
【００３９】
クランク角度はエンジン回転数を元に時間に換算する必要があり、通電開始時期換算で、タイマに設定すべき時間単位に換算する（ステップ５０５）。これらをもとに通電開始時期設定にてタイマ値に換算された通電、点火時期をマイコン７１０のレジスタに設定する（ステップ５０６）。設定される値は、通電用コンペアマッチ値Ｃｃと、点火用コンペアマッチ値Ｃｉである。タイマ内部では定時周期で更新されるタイマカウンタＣｔとコンペアマッチ値Ｃｃ、Ｃｉが一致する時点で、割込みが発生する。
【００４０】
例えば、時刻ｔ２で通電用コンペアマッチが発生すると、通電開始時期到達をソフトウェアで検知し（ステップ５０７）、通電開始処理ルーチンを起動する（ステップ５０８）。通電開始処理の時点ｔ３で、実際に出力端子からパルスが出力される。次に、エンジンの回転変動などに対応するための点火時期の補正処理（ステップ５０９）を行った後に、点火時期を設定する（ステップ５１０）。その後、時点ｔ４で、タイマカウンタＣｔと点火用コンペアマッチ値Ｃｉが一致すると、割り込みが発生し、点火時期到達を検知すると（ステップ５１１）、点火処理ルーチンを呼出し（ステップ５１２）、時点ｔ５で通電停止することで、点火する。
【００４１】
これらのうち時点ｔ３−ｔ２が通電開始時期の遅延時間（ジッタ）、時点ｔ５−ｔ４が点火時期の遅延時間となる。また、時点ｔ１〜ｔ２間により上位の割り込みが発生し通電時期演算が間に合わない場合には所望の出力が得られないことになるため、クランク角センサの入力から点火パルスの出力までの動作を検証する必要がある。
【００４２】
上記の処理のうち、ステップ５０３〜５０４、ステップ５０７〜５０８およびステップ５１１〜５１２は、実行時に遅延が発生すると、点火のための出力パルスに影響が現れる部分である。これらの各モジュールの動作は、タイマユニットや割り込みコントローラなどのハードウェアと、マイコン７１０上で動作するソフトウェアの協調動作により実現している。
【００４３】
マイコン割り込みコントローラの構成を、図７を参照して説明する。マイコン７１０に内蔵されたパルス入力部９０５、ＡＤ変換器９０６、タイマ９０７、通信部９０８などの内蔵モジュール９０２の生成する割り込み要因が割り込みコントローラ９０３に入力される。これらの割り込み要因は、割り込み優先レベル設定レジスタ９０９に設定された割り込み要因毎の優先度にしたがって最も優先度の高いものが選択される。選択された優先レベルは、中央処理装置９０４内のステータスレジスタ９１１の示す現在の割り込みレベルと比較器９１０で比較され、優先順位がより高ければ、中央処理装置９０４に割り込みが伝達される。
【００４４】
上述のステップ５０７〜５０８での各ハードウェアやソフトウェアのモジュールの動作の詳細を、図８を参照して説明する。
【００４５】
ステップ８０７でタイマに設定した通電時期の到来を表すコンペアマッチがマイコン上のハードウェアであるタイマユニット８０２で発生する。これを受けた割り込みコントローラ８０３は優先度判定を行い（ステップ８０８）、優先度が高ければ割り込みを発生し（ステップ８０９）、割り込み処理部８０４にて受け付ける。
【００４６】
ここでは、スタック退避（ステップ８１０）、割り込み関連レジスタの処理など後処理（ステップ８１１）を行った上で、オペレーティングシステムへのイベント発生を通知し（ステップ８１２）、スタックを復帰する（ステップ８１３）。
【００４７】
オペレーティングシステムは、ステップ８１２で通知したイベントに基づき優先度を判定した上で（ステップ８１４）、スケジューリングを行い（ステップ８１５）、最も優先度の高い処理に実行権限を渡す。
【００４８】
スケジューリングされた入出力制御部８０５は、経過時間をタイマユニット８０２のインプットキャプチャレジスタを参照して経過時間を計測し（ステップ８１６）、点火パラメータ演算アプリケーションプログラム８０６の通電時間補正演算を呼び出す（ステップ８１７）。算出された通電時間に基づき通電開始処理を行い（ステップ８１８）、出力時間を設定するタイマのレジスタを更新し（ステップ８１９）、出力であるＯＮ波形出力を行う（ステップ８２０）。これに基づき、タイマユニット８０２は点火プラグへの信号を出力する。
【００４９】
これら一連の点火制御のソフトウェアをエンジン制御システムとして構成した例を、図９に示す。アプリケーションの移植性、ハードウェア変更時のソフトウェア変更の局所化を実現するために階層化した構造となっている。検証済みのアプリケーションとしてエンジン回転数検出処理部６−１１と点火パルス計算処理部６−１２があり、未検証のアプリケーションとしてバルブ開度制御部６−２が混在する例である。
【００５０】
アプリケーション部ではエンジンの制御を主として物理量をモデルとした演算を行い、その演算処理はコンポーネントとして部品化する。
【００５１】
６−１は、トルク指令演算を行う追加アプリケーションであり、エンジン回転数検出処理部６−１１で検出したエンジン回転数を入力し、点火パルス計算処理部６−１２に点火時期と通電時間を出力する。６−２は、未検証デバイスであるバルブの制御を行うアプリケーションである。
【００５２】
これらのアプリケーション部品はパラメータの受け渡しなどを行う部品接続部６−６を介して接続する。アプリケーション部品とプラットフォームソフトウェア２７は、標準Ｉ／Ｏインターフェース６−２０を介して接続する。標準Ｉ／Ｏインターフェース６−２０は、エンジン回転数を示すアプリケーション量インターフェース６−７、点火指令アプリケーション量インターフェース６−８と、駆動パルス信号量インターフェース６−９を持つ。
【００５３】
標準Ｉ／Ｏインターフェース６−２０以下がプラットフォームソフトウェア６−２１である。プラットフォームソフトウェア６−２は結合済み入出力制御部６−１０とバルブ開度・駆動量変換部６−１８、駆動パルス制御６−１９からなる。
【００５４】
結合済み入出力制御部６−１０は、エンジン回転数検出処理部６−１１、ノイズフィルタ６−１３、パルス入力制御部６−１５、点火パルス計算処理部６−１２、時間変換部６−１４、パルス出力制御部６−１６、割り込み優先度制御部６−１７を内部に持つ。
【００５５】
パルス入力制御部６−１５では、マイコン内蔵あるいは外付けのパルス入力器とそのタイマの制御を行い、パルス出力制御部６−１６、６−１９はパルス出力器とそのタイマの制御を行う。
【００５６】
割り込み優先度は、パルス入力器、パルス出力器、タイマ、ソフトウェア処理などによる割り込みの優先度制御部６−１７を保持し、割り込みコントローラの設定レジスタに設定するものである。
【００５７】
以上のように、構成することで、上記の遅延を引き起こす虞れのあるアプリケーションの追加を排除できる。
【００５８】
前述のクランク角センサ７０４と点火パルス出力のように、複数のセンサやアクチュエータの連携による動作のタイミングを保証したプラットフォーム上に、新たなアプリケーションプログラムを追加した場合に、当該センサやアクチュエータの動作に関連する動作を損ねていないことを保証するためには、当該センサ、アクチュエータに関連するデバイスにアクセスしていないことや、当該処理を許容時間以上に待たせる上位優先度の処理が存在しないことが必要である。
【００５９】
従って、アクセス許可インターフェースからクランク角センサ７０４と点火パルス出力に関わるコンポーネントのインターフェースを削除し、さらにこれらのコンポーネントが実行する優先度よりも低い優先度のコンポーネントのみを追加可能であることを指定すれば動作を保証することができる。
【００６０】
図１０は、温度センサの検知を一つのアナログデジタル（ＡＤ）変換器を用いて測定するために用いられる方法を示している。測定対象は、水温センサ１８１２と、吸気温センサ１８１３である。
【００６１】
検知に用いるＡＤ変換器１８０９は、一つのチャネルのみであるため、マルチプレクサ１８１１を用いて入力信号を適宜切り替えることにより、二つのセンサの入力を得る。マルチプレクサ１８１１の制御を行うのはデジタル出力部１８１０であり、この出力値に応じてチャネルを切り替える。ソフトウェア上でＡＤ変換器１８０９の変換開始の指定や結果の取得処理を行うのがＡＤ変換器制御部１８０７であり、デジタル出力制御部１８０８で出力処理を行う。二つのセンサの入力を適切に切り替えるのがマルチプレクサ制御部１８０６であり、両者の測定電圧の正規化などを行うのが電圧変換部１８０４，１８０５である。
【００６２】
この構成によってアプリケーションプログラムである水温算出部１８０２と吸気温算出部１８０３は、移植性の高いソフトウェアコンポーネントとすることができる。
【００６３】
ところが、この構成で吸気温算出のアプリケーションが変更された場合、その制御の影響が両者で共有しているマルチプレクサ制御部１８０６、ＡＤ変換器制御部１８０７、デジタル出力制御部１８０８にまで及ぶこととなる。
【００６４】
このように、デバイスを共有した入出力制御では、共有しているうち一つでも保護対象のインターフェースが存在する場合には、影響を及ぼす他のインターフェースも保護対象とする必要がある場合がある。
【００６５】
図１１は、前述のアクセス保護されたインターフェースを生成する装置の構成を示している。インターフェース生成装置１００３は、不具合の原因となり得るインターフェースのリストと対象となるコンポーネントを入力すると、アクセス許可されたインターフェースのみを持つプラットフォームソフトウェアを出力する。
【００６６】
出力されたプラットフォームソフトウェアは、追加アプリケーションから許可されないインターフェースへのアクセスを試みても構築時にコンパイルエラーなどの警告が出ることにより保護するものである。
【００６７】
インターフェース生成装置１００３は、開発用のパーソナルコンピュータやワークステーションで構成することが考えられ、その入出力する情報、ここでは、コンポーネントソフトウェア本体１００１、コンポーネントソフトウェアインターフェース１００２、１００８、ソフトウェアコンポーネント本体１００５、ソフトウェアコンポーネントインターフェース１００６、アクセス不許可Ｉ／Ｆ情報１００４は、ハードディスクやメモリなどの記憶装置やネットワークなどから得る電子ファイルとし、その変換手順は、パーソナルコンピュータやワークステーションで実行可能なプログラムとして備えることができる。
【００６８】
コンポーネントソフトウェアの本体１００１は、Ｃ言語などのプログラミング言語のソースコードや機械語によるオブジェクトコードの形態のファイルであり、コンポーネントソフトウェアインターフェースに必要な情報を記述したファイルである。例えば、Ｃ言語などのプログラミング言語によるヘッダファイルソースコードや、ＣＳＶ（カンマ区切りテキスト）、ＸＭＬ（構造化テキスト）、ＤＢ（データベースファイル）など形式のファイルである。
【００６９】
アクセス不許可Ｉ／Ｆ情報１００４は、所定のＩ／Ｆをアクセス不許可とするための情報を記述したものであり、ＣＳＶ（カンマ区切りテキスト）、ＸＭＬ（構造化テキスト）、ＤＢ（データベースファイル）など形式のファイルである。
【００７０】
これらをもとに、ソフトウェアコンポーネント本体１００５と、公開用Ｉ／Ｆのみに限定したソフトウェアコンポーネントインターフェース１００６を出力する。
【００７１】
これらに追加してソフトウェアコンポーネントインターフェース１００６で公開するＩ／Ｆのみを使用するコンポーネントソフトウェア本体１００７およびコンポーネントソフトウェアインターフェース１００８を追加し、システム構成装置１００９を用いて開発対象ソフトウェア１０１０を得る。システム構成装置１００９は、一般のＣ言語のコンパイラ・リンカであっても良い。
【００７２】
図１２は、インターフェース生成装置１００３の処理アルゴリズムを示している。
アクセス不許可ファイル、コンポーネントファイルを読み込み（ステップ１１０１、１１０２）、コンポーネントファイルに記載のコンポーネントを選定し（ステップ１１０４）、各コンポーネントに対して公開用Ｉ／Ｆを作成する（ステップ１１０５）。各コンポーネント内のＩ／Ｆ宣言を切り出す（ステップ１１０６）。Ｉ／Ｆ宣言（ステップ１１０６）はＣ言語の関数プロトタイプ宣言や変数の宣言などである。切り出した各Ｉ／Ｆについて、許可Ｉ／Ｆであるか判定する（ステップ１１０８）。判定結果が許可であれば公開用Ｉ／Ｆファイルに当該Ｉ／Ｆの前記宣言を出力し（ステップ１１０９）、不許可であれば当該ファイルを保護対象ファイルリストへ追加する（ステップ１１１０）。
【００７３】
全てのコンポーネントの全てのＩ／Ｆについて上記処理が終了したら、保護対象リストに記載のコンポーネントをコンパイル・リンクしたファイルと公開用Ｉ／Ｆファイルとを出力する（ステップ１１１１）。
【００７４】
図１３は、ステップ１１０８の許可Ｉ／Ｆ判定の詳細を記述したものである。この許可Ｉ／Ｆ判定は、各対象Ｉ／Ｆについてアクセス許可あるいは不許可を判定するものである。対象Ｉ／ＦがアプリケーションＩ／Ｆであれば（ステップ１２０１肯定）、アクセス許可する（ステップ１２０８）。対象Ｉ／Ｆが許可Ｉ／Ｆリストに存在しない場合には（ステップ１２０２否定）、アクセス不許可である（ステップ１２０９）。存在する場合で（ステップ１２０２肯定）、割込みレベル条件が存在し（ステップ１２０３肯定）、当該Ｉ／Ｆの割込みレベルが許可レベルよりも高い場合には（ステップ１２０４肯定）、アクセス不許可である（ステップ１２０９）。当該Ｉ／Ｆが共有デバイスリスト中に存在し（ステップ１２０５肯定）、当該共有デバイスリスト中の全てのＩ／Ｆが許可リスト中に存在すれば（ステップ１２０６、１２０７）、アクセス許可であり（ステップ１２０８）、一つでも許可しないものが含まれていれば、アクセス不許可である（ステップ１２０９）。
【００７５】
以上の方法によるインターフェース生成装置を用いることで、アクセス許可インターフェースのみを持つソフトウェアを得ることができる。
【００７６】
図１４は、図９に示す構成のソフトウェアのインターフェースの全てをアクセス許可した場合のアクセス許可情報の例を示している。ここでは、各インターフェースについて、入出力、種別、名称、関数名、パラメータ詳細などを指定する。これを元に、図１２、図１３に示されている処理手順によって図１０に示す構成を持つインターフェース生成装置１００３によって得られる公開用ソフトウェアコンポーネントインターフェース１００６の例を図１７に示している。このインターフェースは、図１４に記載の各インターフェースをＣ言語の関数で実装した関数宣言を得ることができる。
【００７７】
図１５は、前述した点火制御を追加アプリケーションの悪影響から保護するためのインターフェース許可情報のリストを示している。これによって得られる公開インターフェース情報を図１８に示している。
【００７８】
図１６は、図１１に示したマルチプレクサによる共有デバイスのアクセス保護の指定例である。これによって得られた許可インターフェース情報を図１９に示している。この許可インターフェース情報では、共有デバイスリストに保護対象が存在するためにアプリケーションＩ／Ｆのみが公開されている。
【図面の簡単な説明】
【００７９】
【図１】本発明の対象とする制御システムの一つである自動車エンジン制御システムの構成を示すブロック図。
【図２】コントロールユニットが実行するソフトウェアの構成図。
【図３】本発明による車両制御用プログラムのソフトウェア結合方式を示すブロック図。
【図４】自動車エンジンの点火制御の構成を示すブロック図。
【図５】点火信号を出力するためのソフトウェアの処理タイミングを時系列に示したタイミングチャート。
【図６】点火信号を出力するためのソフトウェアの実行順序を記述したフローチャート。
【図７】割込みコントローラの構成を示すブロック図。
【図８】各ハードウェアとソフトウェアのモジュールの動作の詳細を示すシーケンス図。
【図９】一連の点火制御のソフトウェアをエンジン制御システムとして構成した例を示すブロック図。
【図１０】温度センサの検知を一つのアナログデジタル（ＡＤ）変換器を用いて測定するブロック図。
【図１１】アクセス保護されたインターフェースを生成する装置の構成を示すブロック図。
【図１２】インターフェース生成装置の処理フローを示すフローチャート。
【図１３】許可インターフェース判定のフローチャート。
【図１４】インターフェース記述例を示す表図。
【図１５】インターフェース記述例を示す表図。
【図１６】インターフェース記述例を示す表図。
【図１７】ソースコードを示すリスト図。
【図１８】ソースコードを示すリスト図。
【図１９】ソースコードを示すリスト図。
【符号の説明】
【００８０】
１１０  プラットフォーム
１１１  結合済みソフトウェア部品
１１７、１２１  単体ソフトウェア部品
１２３  アプリケーション部
１２４  部品接続部
１２５  プラットフォームＩ／Ｆ
２０１  コントロールユニット
３０１  アプリケーションプログラム
３０２  オペレーティングシステム
３０３  デバイスドライバ
【図１】
2009080566.tif 000003
【図２】
2009080566.tif 000004
【図３】
2009080566.tif 000005
【図４】
2009080566.tif 000006
【図５】
2009080566.tif 000007
【図６】
2009080566.tif 000008
【図７】
2009080566.tif 000009
【図８】
2009080566.tif 000010
【図９】
2009080566.tif 000011
【図１０】
2009080566.tif 000012
【図１１】
2009080566.tif 000013
【図１２】
2009080566.tif 000014
【図１３】
2009080566.tif 000015
【図１４】
2009080566.tif 000016
【図１５】
2009080566.tif 000017
【図１６】
2009080566.tif 000018
【図１７】
2009080566.tif 000019
【図１８】
2009080566.tif 000020
【図１９】
2009080566.tif 000021