(57)【要約】【課題】各制御装置の処理の内容を固定せず、いずれの制御装置でも他の制御装置で行なっていた演算処理を代替して行なうことができ、且つ適切なフェールセーフ処理を実行することができる制御装置、制御システム、制御方法及びコンピュータプログラムを提供する。【解決手段】各データに対するフェールセーフ（Ｆ／Ｓ）処理を定義したＦ／Ｓテーブル８１を記憶しておき、ＥＣＵ１ａでも実行可能なアプリケーションＢ１０６ｂの機能を実行するＥＣＵ１ｂでは、通信ドライバ９３ｂから得たデータがＦ／Ｓ処理を要する場合、フェールセーフ処理後のデータをデータ群２１ｂに記憶し、アプリケーションＢ１０６ｂへ渡す。【選択図】図２
2012048390.tif 000002
【特許請求の範囲】
【請求項１】
一又は複数のアプリケーションプログラム、ハードウェアからデータを取得するドライバプログラム、並びに、前記アプリケーションプログラムに基づく処理及びドライバプログラムに基づく処理の間を仲介する処理を他の装置と共通して実行するための共通プログラムを実行するプロセッサを備え、前記ハードウェア又は前記他の装置に接続されるハードウェアを制御する制御装置において、
前記プロセッサは、
前記ドライバプログラムに基づき取得したデータに対するフェールセーフ処理を前記共通プログラムに基づき実行し、
前記アプリケーションプログラムに基づく処理によるデータ要求に対し、フェールセーフ処理後のデータを前記共通プログラムに基づき譲渡するようにしてあること
を特徴とする制御装置。
【請求項２】
前記ドライバプログラムに基づき取得されるデータ、又は前記アプリケーションプログラムに基づく処理対象となるデータに対するフェールセーフ処理を予め定義したテーブルを備え、
前記共通プログラムを実行するプロセッサは、
前記ドライバプログラムに基づき取得されたデータに、前記テーブルで定義されたフェールセーフ処理を実行し、実行後のデータを記憶する
ことを特徴とする請求項１に記載の制御装置。
【請求項３】
前記テーブルには更に、各データの取得タイミングが定義されてあり、
前記共通プログラムを実行するプロセッサは、
前記テーブルの取得タイミングに基づき、ドライバプログラムの処理により取得されたデータを取得し、
取得したデータに前記テーブルに定義されたフェールセーフ処理を実行して譲渡する
ことを特徴とする請求項２に記載の制御装置。
【請求項４】
一又は複数のアプリケーションプログラム、ハードウェアからデータを取得するドライバプログラム、並びに、前記アプリケーションプログラムに基づく処理及びドライバプログラムに基づく処理の間を仲介する処理を他の装置と共通して実行するための共通プログラムを実行するプロセッサを備える装置を複数含み、各装置が接続されるハードウェア又は他の装置に接続されるハードウェアを制御する制御システムにおいて、
各装置のプロセッサによって前記ドライバプログラムに基づき取得されるデータ、又は前記アプリケーションプログラムに基づく処理対象となるデータに対するフェールセーフ処理を、各装置及び実行されるアプリケーションプログラムに応じて予め定義してあるテーブルを備え、
各装置のプロセッサは、
前記テーブルを参照して前記ドライバプログラムに基づき入力されたデータに対するフェールセーフ処理を前記共通プログラムに基づき実行し、
前記アプリケーションプログラムに基づく処理によるデータ要求に対し、フェールセーフ処理後のデータを前記共通プログラムに基づき譲渡するようにしてあること
を特徴とする制御システム。
【請求項５】
一又は複数のアプリケーションプログラム、ハードウェアからデータを取得するドライバプログラム、並びに、前記アプリケーションプログラムに基づく処理及びドライバプログラムに基づく処理の間を仲介する処理を他の装置と共通して実行するための共通プログラムを実行するプロセッサを備える装置を複数含むシステムにて、各装置が接続されるハードウェア又は他の装置に接続されるハードウェアを制御する制御方法において、
各装置のプロセッサは、
前記ドライバプログラムに基づき入力されたデータに対するフェールセーフ処理を前記共通プログラムに基づき実行し、
前記アプリケーションプログラムに基づく処理によるデータ要求に対し、フェールセーフ処理後のデータを前記共通プログラムに基づき譲渡する
ことを特徴とする制御方法。
【請求項６】
コンピュータに、一又は複数のアプリケーションプログラム、及びハードウェアからデータを取得するドライバプログラムに基づく処理の間を仲介する処理を実行させるためのコンピュータプログラムにおいて、
前記コンピュータに、
前記ドライバプログラムに基づき取得されたデータに対するフェールセーフ処理、及び
前記アプリケーションプログラムに基づく処理によるデータ要求に対し、フェールセーフ処理後のデータを譲渡する処理
を実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の制御装置間でデータを相互に送受信し、連携して制御対象に対する処理を行なう制御システムに関する。特に、各制御装置の処理の内容を固定せず、いずれの制御装置でも他の制御装置で行なっていた処理を代替して行なうことができ、且つフェールセーフ処理を適切に行なうことができる制御システム、該制御システムに含まれる制御装置、制御方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
近年では、種々の制御を行なう制御装置に通信機能を備えさせて複数接続し、各制御装置に夫々機能を割り振って相互にデータを交換し、連携して多様な処理を行なわせるシステムが各分野で利用されている。例えば、車両に配される車載ＬＡＮ（Local Area Network）の分野では、ＥＣＵ（電子制御装置；Electronic Control Unit）は通信機能を有し、各ＥＣＵに夫々特定の処理を行なわせて相互にデータを交換することにより、システムとして多様な機能を実現させている。
【０００３】
複数の制御装置が相互に連携して多様な処理を行なわせる場合、各制御装置の機能を特化させるよりも、各制御装置が同様の機能を実現することが可能な構成とし、設定に応じて相互に代替して処理を行なうことができるようにすることもできる。具体的には、各制御装置に特定の機能を実現させるための各制御用アプリケーションプログラムから共通機能を分離し、共通機能をプラットフォームとなるプログラムで実現するように構成する。共通機能としては例えば、制御用アプリケーションプログラムの実行に用いられるデータの記憶、更新及び送受信、並びに相互の時間同期の処理等がある。
【０００４】
特許文献１には、各アプリケーションプログラムから、同一のデータ管理機能及び時間同期機能を分離し、各制御装置が共通して備える分散制御プラットフォームプログラムに分離したデータ管理機能及び時間同期機能を配置させる構成が開示されている。
【０００５】
このような構成により、通信仕様の定義が変化した場合にはプラットフォームのプログラムを改変し、全制御装置に改変後のプラットフォームのプログラムを実行させればよい。この場合、各制御用アプリケーションプログラムの内容を変更する必要がなく、プログラムの再利用性が高くなる。また、制御装置毎に送受信するデータを定義することなく、データの定義を共通化しておくことによって送受信されるデータ量を削減することも可能である。
【０００６】
また、各制御装置の物理的配置などの制限、又は制御装置の故障等に応じて一の制御装置の機能を他の制御装置でも実現させることができる柔軟なシステム構成が求められる場合がある。この場合、上述のように各制御アプリケーションプログラムで実現される機能とプラットフォームの機能とが分離される構成により、一の制御装置が実行していた制御アプリケーションプログラムを他の制御装置に実行させるようにすることで機能を再配置することができる。また、一の制御装置が記憶して用いていたデータを共通のプラットフォームの機能により他の制御装置にも共通して記憶される構成とすることにより、容易に再配置が可能となる。
【０００７】
例えば、各制御装置の物理的な接続構成は夫々異なる。１つの制御装置にはセンサが直接接続されており、当該１つの制御装置は、プラットフォームプログラムにてセンサからデータを取得する場合、入力インタフェースからドライバプログラムを介して直接的に得る。当該１つの制御装置の処理を他の制御装置にて代替する場合、センサを他の制御装置に接続し直すことはないので、他の制御装置は、プラットフォームプログラムにて１つの制御装置が直接的に得たデータを通信経由で得る構成となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−２２０３２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
物理的な接続構成が異なるが、プラットフォームプログラムにて、共通にデータを記憶することにより、センサからの情報に基づく処理を実現するアプリケーションプログラムは、データを入力インタフェースから取得するのか、通信経由で取得するのかに関係なく処理を行なうことができ、再配置が容易に可能である。
【００１０】
しかしながら、プラットフォームプログラムがデータを取得できないといった異常処理についても、物理的な接続構成によって異なる。つまり、１つの制御装置にはセンサが直接接続されており、通信経由にて他の制御装置が当該１つの制御装置の処理を代替する場合に通信が途絶したときのフェールセーフ処理は、１つの制御装置がデータをセンサから得られない場合のフェールセーフ処理とは異なる。
【００１１】
いずれかの機能をプラットフォームプログラムにて分離して共通化した従来の技術では、フェールセーフ処理の機能については考慮されていなかった。勿論、アプリケーションプログラムにて配置される装置によって異なるフェールセーフ処理を実現する場合、プラットフォームプログラムにて共通機能を分離する利点が失われる。一方で、物理層即ちドライバプログラムにて通信エラーが起こった場合のデータに対し、フェールセーフ処理を行なう構成も想定し得るが、アプリケーションよりの処理をもドライバプログラムにて含める構成とすると、ドライバプログラムの再利用性が低下する。
【００１２】
本発明は斯かる事情に鑑みてなされたものであり、プラットフォームプログラムを実行するプログラム層にてフェールセーフ処理の機能を実現させることにより、各制御装置の処理の内容を固定せず、いずれの制御装置でも他の制御装置で行なっていた演算処理を代替して行なうことができ、且つフェールセーフ処理を適切に行なうことができる制御装置、該制御装置を含む制御システム、制御方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
第１発明に係る制御装置は、一又は複数のアプリケーションプログラム、ハードウェアからデータを取得するドライバプログラム、並びに、前記アプリケーションプログラムに基づく処理及びドライバプログラムに基づく処理の間を仲介する処理を他の装置と共通して実行するための共通プログラムを実行するプロセッサを備え、前記ハードウェア又は前記他の装置に接続されるハードウェアを制御する制御装置において、前記プロセッサは、前記ドライバプログラムに基づき取得したデータに対するフェールセーフ処理を前記共通プログラムに基づき実行し、前記アプリケーションプログラムに基づく処理によるデータ要求に対し、フェールセーフ処理後のデータを前記共通プログラムに基づき譲渡するようにしてあることを特徴とする。
【００１４】
第２発明に係る制御装置は、前記ドライバプログラムに基づき取得されるデータ、又は前記アプリケーションプログラムに基づく処理対象となるデータに対するフェールセーフ処理を予め定義したテーブルを備え、前記共通プログラムを実行するプロセッサは、前記ドライバプログラムに基づき取得されたデータに、前記テーブルで定義されたフェールセーフ処理を実行し、実行後のデータを記憶することを特徴とする。
【００１５】
第３発明に係る制御装置は、前記テーブルには更に、各データの取得タイミングが定義されてあり、前記共通プログラムを実行するプロセッサは、前記テーブルの取得タイミングに基づき、ドライバプログラムの処理により取得されたデータを取得し、取得したデータに前記テーブルに定義されたフェールセーフ処理を実行して譲渡することを特徴とする。
【００１６】
第４発明に係る制御システムは、一又は複数のアプリケーションプログラム、ハードウェアからデータを取得するドライバプログラム、並びに、前記アプリケーションプログラムに基づく処理及びドライバプログラムに基づく処理の間を仲介する処理を他の装置と共通して実行するための共通プログラムを実行するプロセッサを備える装置を複数含み、各装置が接続されるハードウェア又は他の装置に接続されるハードウェアを制御する制御システムにおいて、各装置のプロセッサによって前記ドライバプログラムに基づき取得されるデータ、又は前記アプリケーションプログラムに基づく処理対象となるデータに対するフェールセーフ処理を、各装置及び実行されるアプリケーションプログラムに応じて予め定義してあるテーブルを備え、各装置のプロセッサは、前記テーブルを参照して前記ドライバプログラムに基づき入力されたデータに対するフェールセーフ処理を前記共通プログラムに基づき実行し、前記アプリケーションプログラムに基づく処理によるデータ要求に対し、フェールセーフ処理後のデータを前記共通プログラムに基づき譲渡するようにしてあることを特徴とする。
【００１７】
第５発明に係る制御方法は、一又は複数のアプリケーションプログラム、ハードウェアからデータを取得するドライバプログラム、並びに、前記アプリケーションプログラムに基づく処理及びドライバプログラムに基づく処理の間を仲介する処理を他の装置と共通して実行するための共通プログラムを実行するプロセッサを備える装置を複数含むシステムにて、各装置が接続されるハードウェア又は他の装置に接続されるハードウェアを制御する制御方法において、各装置のプロセッサは、前記ドライバプログラムに基づき入力されたデータに対するフェールセーフ処理を前記共通プログラムに基づき実行し、前記アプリケーションプログラムに基づく処理によるデータ要求に対し、フェールセーフ処理後のデータを前記共通プログラムに基づき譲渡することを特徴とする。
【００１８】
第６発明に係るコンピュータプログラムは、コンピュータに、一又は複数のアプリケーションプログラム、及びハードウェアからデータを取得するドライバプログラムに基づく処理の間を仲介する処理を実行させるためのコンピュータプログラムにおいて、前記コンピュータに、前記ドライバプログラムに基づき取得されたデータに対するフェールセーフ処理、及び前記アプリケーションプログラムに基づく処理によるデータ要求に対し、フェールセーフ処理後のデータを譲渡する処理を実行させることを特徴とする。
【００１９】
本発明では、種々の演算を実現するアプリケーションプログラム、並びに各装置内蔵されるハードウェア又は接続されるハードウェアからデータを入力するドライバプログラムとは別個であり、且つアプリケーションプログラム及びドライバプログラムの間のデータの入出力の仲介を他の装置と共通して実現する共通プログラムに基づき、プロセッサにより入力データに対するフェールセーフ処理が実行され、フェールセーフ処理後のデータがアプリケーションプログラムに基づく処理へ渡される。つまり、フェールセーフ処理は、アプリケーションプログラムからも、ドライバプログラムからも分離される。これにより、アプリケーションプログラムにハードウェア構成依存のフェールセーフ処理を含む必要が無くなる。また、ドライバプログラムにもアプリケーションプログラムの構成依存のフェールセーフ処理を含める必要がなくなる。
【００２０】
本発明では、複数の装置の内のいずれに、異なるアプリケーションプログラムの何れが実行されるかに応じて、入力される各データに対して行なうべきフェールセーフ処理の内容を予めテーブルに定義してある。共通プログラムを実行することにより、テーブルに定義されたフェールセーフ処理を実行し、フェールセーフ後のデータをアプリケーションプログラムに基づく処理へ渡される。これにより、アプリケーションプログラムも、ドライバプログラムも、フェールセーフ処理から独立して構成できる。テーブルにてシステム構成に応じた定義をしておくことにより、テーブル内を変更すれば柔軟に多様なシステムに適応させることも可能である。
【００２１】
本発明では、各データのフェールセーフ処理を定義するテーブルに更に、各データのドライバプログラムに基づく処理からの取得タイミングが定義される。これにより、各データの内容に適したタイミングで取得されたデータに、更に適切なフェールセーフ処理を実行することも可能となる。
【発明の効果】
【００２２】
本発明による場合、アプリケーションプログラムから、ハードウェア構成依存のフェールセーフ処理をなくし、ドライバプログラムにもアプリケーションプログラムの構成依存のフェールセーフ処理を含める必要がなくすことが可能となる。これにより、アプリケーションプログラム及びドライバプログラムの独立性、再利用性を向上させ、各制御装置の処理の内容を固定せず、いずれの制御装置でも他の制御装置で行なっていた演算処理を代替して行なうことができる。また、各装置にて共通に実行される共通プログラムにて、フェールセーフ処理を実行し、各アプリケーションプログラムがいずれの装置にて実行されるかに応じたフェールセーフ処理の内容は、変更可能なテーブルにて定義することにより、各アプリケーションプログラム及びドライバプログラムの再利用性を向上しつつ、システムの構成に応じた適切なフェールセーフ処理が実現される。
【図面の簡単な説明】
【００２３】
【図１】実施の形態１における制御システム及び制御システムを構成するＥＣＵの内部構成を示すブロック図である。
【図２】実施の形態１におけるＥＣＵのＣＰＵが夫々実現する機能を概念的に説明する機能ブロック図である。
【図３】実施の形態１におけるＥＣＵのＲＯＭに記憶されているＦ／Ｓテーブルの内容例を示す説明図である。
【図４】実施の形態１におけるＥＣＵのＣＰＵが実行する処理手順の一例を示すフローチャートである。
【図５】ＣＰＵのプラットフォームの機能による入力処理の手順の一例を示すフローチャートである。
【図６】ＣＰＵのプラットフォームの機能によるアプリケーションからの呼び出しに対する処理手順の一例を示すフローチャートである。
【図７】実施の形態２におけるＥＣＵのＲＯＭに記憶されているＦ／Ｓテーブルの内容例を示す説明図である。
【図８】実施の形態２におけるＣＰＵのプラットフォームの機能によるアプリケーションからの呼び出しに対する処理手順の一例を示すフローチャートである。
【図９】実施の形態３におけるＥＣＵのＲＯＭに記憶されているＦ／Ｓテーブルの内容例を示す説明図である。
【図１０】実施の形態３における一方のＥＣＵでのデータの内容とデータＩＤとの対応関係を示す説明図である。
【図１１】実施の形態３における他方のＥＣＵでのデータの内容とデータＩＤとの対応関係を示す説明図である。
【図１２】実施の形態３におけるＥＣＵのＲＯＭに記憶されているＦ／Ｓテーブルの他の内容例を示す説明図である。
【発明を実施するための形態】
【００２４】
以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。
なお、以下の実施の形態では本発明を車載機器を制御する制御システムの例を挙げて説明する。
【００２５】
（実施の形態１）
図１は、実施の形態１における制御システム、及び制御システムを構成するＥＣＵ１ａ，１ｂの内部構成を示すブロック図である。制御システムは、ＥＣＵ１ａ，１ｂと、通信線２と、センサ（スイッチ）３１，３２と、アクチュエータ４とを含む。制御システムはＥＣＵ１ａ，ＥＣＵ１ｂの他に、更に複数のＥＣＵを含んで構成されてよい。
【００２６】
ＥＣＵ１ａ及びＥＣＵ１ｂは通信線２にバス型に接続されており、相互に通信が可能である。ＥＣＵ１ａには、センサ３１，３２、及びアクチュエータ４が接続されている。
【００２７】
ＥＣＵ１ａは、ＣＰＵ（Central Processing Unit）１０ａと、ＲＯＭ（Read Only Memory）１１ａと、ＲＡＭ（Random Access Memory）１２ａと、通信部１３ａと、入出力部１４ａとを備える。ＥＣＵ１ａの構成とＥＣＵ１ｂの内部構成とは同様であるので、以下ＥＣＵ１ａについて詳細を説明し、ＥＣＵ１ｂについては詳細な説明を省略する。
【００２８】
ＣＰＵ１０ａは、図示しない車両のバッテリー、オルタネータ等の電力供給装置から電力の供給を受け、ＲＯＭ１１ａに記憶されている各プログラムに基づき各構成部の動作を制御する。ＣＰＵ１０ａはＭＰＵ（Micro Processing Unit）に代替されてもよい。
【００２９】
ＲＯＭ１１ａは、マスクＲＯＭ、フラッシュメモリ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable and Programmable ROM）、ＥＥＰＲＯＭ（Electrically EPROM）等の不揮発性メモリを利用する。ＲＯＭ１１ａには、ＣＰＵ１０ａが読み出して実行するアプリケーションプログラムＡ１５ａ、アプリケーションプログラムＢ１６ａ、プラットフォームプログラム１８ａ、及びドライバプログラム１９ａが記憶されている。ＲＯＭ１１ａには他に、制御システム全体の構成に対応する構成情報（コンフィグレーション情報）が記憶されている。構成情報は例えば、ＲＡＭ１２ａに記憶されるデータ群２１ａの構成の定義情報などを含む。データ群２１ａの構成とは、どのようなデータ（変数名）がどのような「型」でどのような順に記憶されているかなどの定義である。
【００３０】
ＲＯＭ１１ａに記憶されているアプリケーションプログラムＡ１５ａ及びアプリケーションプログラムＢ１６ａは夫々、センサ３１，３２又は他のＥＣＵ１ｂから得たデータに対する演算処理、又は判定処理等をＣＰＵ１０ａに実行させるプログラムである。プラットフォームプログラム１８ａは、後述する各ＥＣＵ１ａ及びＥＣＵ１ｂでの共通処理をＣＰＵ１０ａに実行させるプログラムである。また、プラットフォームプログラム１８ａは、後述するフェールセーフ（以下、Ｆ／Ｓと記載）処理を実行させる。ドライバプログラム１９ａは、通信部１３ａ及び入出力部１４ａなどのハードウェアの制御を実現するためのプログラムである。
【００３１】
ＲＡＭ１２ａは、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）等の揮発性メモリを利用する。ＲＡＭ１２ａには、ＣＰＵ１０ａの処理の過程で発生する各種情報が記憶される。また、ＲＡＭ１２ａには後述するように、センサ３１、３２から入力された信号が表す測定値等のデータ、他のＥＣＵ１ｂから送信されて受信したデータ等のデータ群２１ａが記憶される。
【００３２】
通信部１３ａは、トランシーバを含み通信線２を介した他のＥＣＵ１ａとの通信を実現する。ＣＰＵ１０ａのドライバプログラム１９ａに基づくネットワークコントローラ機能と通信部１３ａのトランシーバの機能とにより通信が実現される。実施の形態１では、通信プロトコルはＣＡＮ（Control Area Network）とするが、他のプロトコルでもよい。
【００３３】
入出力部１４ａは、ＥＣＵ１ａに接続されるセンサ３１、センサ３２及びアクチュエータ４とのインタフェースである。入出力部１４ａは、センサ３１又はセンサ３２にて得られる状態信号を入力してＣＰＵ１０ａへ出力する。例えばセンサ３１は運転席ドアの開閉状態を検知するセンサ（スイッチ）であり、入出力部１４ａは開（０）閉（１）を示す状態信号を入力し、ＣＰＵ１０ａは入出力部１４ａにより運転席ドアの開閉状態を認識することができる。また、入出力部１４ａは、ＣＰＵ１０ａからのアクチュエータ４を制御するための制御信号をアクチュエータ４へ出力する。入出力部１４ａはＡ／Ｄ変換機能、又はＤ／Ａ変換機能を有していてもよい。
【００３４】
このように構成されるＥＣＵ１ａのＣＰＵ１０ａは、センサ３１，３２から得られる状態信号から得られるデータに対し、アプリケーションプログラムＡ１５ａ又はアプリケーションプログラムＢ１６ａに基づく処理を行なう。処理の結果、アクチュエータ４を動作すべき場合、ＣＰＵ１０ａは制御信号を入出力部１４ａから出力する。例えば実施の形態１では、アプリケーションプログラムＢ１６ａは、車室内のイルミネーション制御を実行させるためのプログラムであって、センサ３１，３２が夫々運転席のドア及び助手席のドアの開閉を検知する機能を有するドアセンサであるとする。アプリケーションプログラム１６ａに基づき、ＣＰＵ１０ａはセンサ３１，３２のいずれか一方でもドアが開いたことを検知した場合に室内灯を点灯させる信号を出力するなどのイルミネーション制御を行なう。
【００３５】
ＥＣＵ１ｂの内部構成は、ＥＣＵ１ａと同様である。ＥＣＵ１ｂのＲＯＭ１１ｂには、ＥＣＵ１ａにおけるプラットフォームプログラム１８ａと同一のプラットフォームプログラム１８ｂが記憶されており、ＣＰＵ１０ｂは共通する処理を行なうようにしてあるが、記憶されているアプリケーションプログラム及びドライバプログラム１９ｂは内容が異なっても良い。ただし、ＥＣＵ１ｂのＲＯＭ１１ｂに記憶されているアプリケーションプログラムＢ１６ｂは、ＥＣＵ１ａのＲＯＭ１１ａに記憶されてあるアプリケーションプログラムＢ１６ａと同一である。したがって、ＥＣＵ１ｂのＣＰＵ１０ｂは、ＥＣＵ１ａのＣＰＵ１０ａが実行するイルミネーション制御を代替して行なうことが可能である。
【００３６】
図２は、実施の形態１におけるＥＣＵ１ａ，１ｂのＣＰＵ１０ａ，１０ｂが夫々実現する機能を概念的に説明する機能ブロック図である。なお以下の説明では、上述したＥＣＵ１ａのアプリケーションプログラムＢ１６ａに基づくイルミネーション制御の機能を、ＥＣＵ１ｂに配置して行なう構成とする。
【００３７】
ＥＣＵ１ａのＣＰＵ１０ａは、ＲＯＭ１１ａに記憶してあるアプリケーションプログラムＡ１５ａを読み出して実行することにより、アプリケーションＡ１０５として機能する。なおＣＰＵ１０ａのアプリケーションプログラム１６ａに基づくアプリケーションＢ１０６ａの機能は、本実施の形態では実現しない（破線）。
【００３８】
また、ＥＣＵ１ａのＣＰＵ１０ａは、ＲＯＭ１１ａに記憶してあるプラットフォームプログラム１８ａに基づき、アプリケーションＡ１０５からの命令に基づくデータの読み書き、又はデータの送受信等の共通する処理を行なうプラットフォーム１０８ａとして機能する。例えば、ＣＰＵ１０ａはプラットフォーム１０８ａの機能により、後述の入力ドライバ９１からの通知を受けてデータを入力した場合、ＲＡＭ１２ａのデータ群２１ａへの書き込みを行なう。
【００３９】
更にＥＣＵ１ａのＣＰＵ１０ａは、ＲＯＭ１１ａに記憶してあるドライバプログラム１９ａに基づき、入力ドライバ９１、出力ドライバ９２及び通信ドライバ９３ａの機能を夫々実現する。ＣＰＵ１０ａは入力ドライバ９１の機能により、入出力部１４ａを介してセンサ３１，３２からの信号を読み取り、プラットフォーム１０８ａへ通知する。ＣＰＵ１０ａは出力ドライバ９２の機能により、プラットフォーム１０８ａから与えられた制御データを入出力部１４ａを介して出力先のアクチュエータ４へ出力する。ＣＰＵ１０ａは通信ドライバ９３ａの機能により通信部１３ａでデータを受信した場合にこれを検知し、プラットフォーム１０８ａへ通知し、プラットフォーム１０８ａにより与えられたデータを通信部１３ａから送信する制御を行なう。
【００４０】
一方、ＥＣＵ１ｂでは、ＣＰＵ１０ｂはＲＯＭ１１ｂに記憶してあるアプリケーションプログラムＢ１６ａを読み出して実行することにより、アプリケーションＢ１０６ｂとして機能する。更にＣＰＵ１０ｂは、ＲＯＭ１１ｂのアプリケーションプログラムＣ１７ａに基づきアプリケーションＣ１０７として機能する。
【００４１】
またＣＰＵ１０ｂは、ＥＣＵ１ａと同様に、ＲＯＭ１１ｂに記憶してあるプラットフォームプログラム１８ｂに基づき、プラットフォーム１０８ｂとして機能し、通信ドライバ９３ｂからの通知を受けて受信したデータをＲＡＭ１２ｂのデータ群２１ｂへ書き込みを行ない、データ群２１ｂから読み出したデータを通信ドライバ９３ａへ渡して送信させるなどの処理を行なう。なおＣＰＵ１０ｂは、プラットフォームプログラム１８ｂに基づき、Ｆ／Ｓテーブル８１を参照して必要な場合にＦ／Ｓ処理を行なう。Ｆ／Ｓテーブル８１及びＦ／Ｓ処理については後述にて詳細を説明する。
【００４２】
ＣＰＵ１０ｂは、ＥＣＵ１ａ同様にドライバプログラム１９ｂに基づき、少なくとも通信ドライバ９３ｂの機能を実現する。ＣＰＵ１０ｂは通信ドライバ９３ｂの機能により、通信部１３ｂにてデータを受信した場合にこれを検知し、プラットフォーム１０８ｂへ通知する。また通信ドライバ９３ｂの機能により、ＣＰＵ１０ｂは通信部１３ｂにおける通信エラーが発生した場合、通信エラーに対応する特殊な値のデータをプラットフォーム１０８ｂへ通知するなどの通信ドライバ９３ｂとしてのＦ／Ｓ機能を有する。なお、図示は省略しているがＣＰＵ１０ｂは入力ドライバ又は出力ドライバの機能をも実現し、入出力部１４ｂを介したセンサ又はアクチュエータへのデータの入出力を行なってもよい。
【００４３】
このように構成される制御システムにて、ＥＣＵ１ａのＣＰＵ１０ａはアプリケーションＡ１０５の機能を実現し、ＥＣＵ１ｂのＣＰＵ１０ｂはアプリケーションＢ１０６ｂ及びアプリケーションＣ１０７の機能を実現し、車載機器を制御する機能、詳細には車両のドア、イルミネーション等の制御を全体として実現する。
【００４４】
そして、プラットフォーム１０８ａ，１０８ｂの機能により、車室内のイルミネーション制御を実現するアプリケーションＢ１０６ａ（１０６ｂ）をＥＣＵ１ａにて実行するように構成しても、ＥＣＵ１ｂにて実行するように構成してもよい。ＣＰＵ１０ａ及びＣＰＵ１０ｂは夫々、プラットフォーム１０８ａ及びプラットフォーム１０８ｂの機能により共通してデータの記憶・更新、及び送受信を行なう。このとき、ＣＰＵ１０ａ及びＣＰＵ１０ｂは、夫々センサ３１，３２から取得したデータ、算出した算出値又は制御値等のデータを、夫々データ群２１ａ及びデータ群２１ｂに記憶すると共に、データ群２１ａ及びデータ群２１ｂの内容が同期されるように相互に送受信し、受信したデータを記憶する。これにより、例えばＥＣＵ１ｂのＣＰＵ１０ｂは、ＥＣＵ１ａのＣＰＵ１０ａが実行していたアプリケーションプログラムＢ１６ａと同一内容のアプリケーションプログラムＢ１６ｂを実行し、用いるデータをプラットフォーム１０８ｂによりデータ群２１ｂから取得できるから、同一のアプリケーションＢ１０６ａの機能を代替して実現することが可能である。
【００４５】
ただし、ＥＣＵ１ａとＥＣＵ１ｂとでは物理的構成が異なるので、データ群２１へ記憶するデータの入手方法が異なり、それに伴ってデータに対するＦ／Ｓ処理も異なる。そこで本実施の形態１における制御システムでは、プラットフォーム１０８ａ及びプラットフォーム１０８ｂの機能により、Ｆ／Ｓ処理の違いを吸収し、同一のアプリケーションプログラムＢ１６ａ，１６ｂを異なるＥＣＵ１ａ及びＥＣＵ１ｂで適切に実行できるようにする。
【００４６】
例えば、ＥＣＵ１ａにてイルミネーション制御を実現すべくＣＰＵ１０ａがアプリケーションＢ１０６ａとして機能する（破線）場合、ＣＰＵ１０ａは運転席ドアの開閉及び助手席ドアの開閉の状態を示すデータを入力ドライバ９１によりセンサ３１及びセンサ３２から“直接的に入力”する。一方、本実施の形態１における構成のようにＥＣＵ１ｂにてイルミネーション制御を実現すべくＥＣＵ１ｂのＣＰＵ１０ｂがアプリケーションＢ１０６ｂとして機能する（実線）場合、ＣＰＵ１０ｂは運転席ドアの開閉及び助手席ドアの開閉の状態を示すデータはＥＣＵ１ａにてセンサ３１及びセンサ３２から入力されたデータを、通信線２経由で通信ドライバ９３ｂにより“受信”する。受信の場合は通信エラーの発生の可能性があるため、ＥＣＵ１ｂでは受信できない場合にＦ／Ｓ処理を行なう必要がある。運転席ドアの開閉及び助手席ドアの開閉の状態を示すデータの値を特定の値に設定するなどのＦ／Ｓ処理は通信ドライバ９３ａにて実行するが、本実施の形態１における制御システムでは、ＥＣＵ１ｂのＣＰＵ１０ｂがプラットフォーム１０８ｂの機能により、アプリケーションＢ１０６ａ、１０６ｂの配置に応じてアプリケーションＢ１０６ａ又は１０６ｂに対応したＦ／Ｓ処理を行なう。
【００４７】
Ｆ／Ｓ処理の内容はプラットフォームプログラム１８ｂに含まれており、プラットフォーム１０８ｂにて実行する。ただし、いずれのデータに対し、いずれのＦ／Ｓ処理を行なうかは、Ｆ／Ｓテーブル８１に定義してＲＯＭ１１ｂに記憶しておき、プラットフォーム１０８ｂとして機能するＣＰＵ１０ｂは、これを参照して適切なＦ／Ｓ処理を行なう。
【００４８】
図３は、実施の形態１におけるＥＣＵ１ｂのＲＯＭ１１ｂに記憶されているＦ／Ｓテーブル８１の内容例を示す説明図である。Ｆ／Ｓテーブル８１は、アプリケーションの配置毎に、各データに対し、いずれのＦ／Ｓ処理を実行すべきかを定義する。
【００４９】
図３に示す例では、アプリケーションＡ１０５がＥＣＵ１ａに配置される場合、運転席ドアの開閉の状態のデータに対してＦ／Ｓ処理は「なし」であり、助手席ドアの開閉の状態に対してもＦ／Ｓ処理は「なし」である。アプリケーションＢ１０６ａがＥＣＵ１ａに配置される場合は、運転席ドアの開閉の状態のデータに対してＦ／Ｓ処理は「なし」であり、助手席ドアの開閉の状態に対してもＦ／Ｓ処理は「なし」である。一方、アプリケーションＢ１０６ｂがＥＣＵ１ｂに配置される場合、運転席ドアの開閉の状態のデータに対し、プラットフォーム１０８ｂは「処理１−１」のＦ／Ｓ処理を実行すべきであり、助手席ドアの開閉の状態に対しては「処理１−２」のＦ／Ｓ処理を実行すべきである。
【００５０】
プラットフォーム１０８ｂとして機能するＣＰＵ１０ｂは、通信ドライバ９３ｂが運転席ドアの開閉の状態を示すデータを受信する場合に通信エラーが発生し、エラーを通知したとき、これを検知してＦ／Ｓテーブル８１に基づき「処理１−１」のＦ／Ｓ処理を行なう。同様に、ＣＰＵ１０ｂは、助手席ドアの開閉の状態を示すデータを受信する場合に通信エラーが発生したことを検知したときは、Ｆ／Ｓテーブル８１に基づき「処理１−２」のＦ／Ｓ処理を行なう。ＣＰＵ１０ｂはプラットフォーム１０８ｂとしての機能により、Ｆ／Ｓ処理を行なった後のデータをアプリケーションＢ１０６ｂへ渡す。
【００５１】
図４は、実施の形態１におけるＥＣＵ１ｂのＣＰＵ１０ｂが実行する処理手順の一例を示すフローチャートである。図４のフローチャートに示す処理手順はメイン処理である。
【００５２】
ＣＰＵ１０ｂは、起動して初期化処理を行なう（ステップＳ１）。初期化処理とは、例えばＣＰＵ１０ｂが、ＲＡＭ１２ｂにデータ群２１ｂ用の領域を確保し、与えられている構成情報により、データ群２１ｂを構築するか、又は自身が読み出して実行すべきアプリケーションプログラムＢ１６ｂ、アプリケーションプログラムＣ１７ｂを与えられた構成情報により特定し、実際に実行するなどの処理が含まれる。また、初期化処理には、各ハードウェアのエラーチェック、例えば他のＥＣＵ１ａと通信を開始して通信エラーチェック等を含んでもよい。勿論、プラットフォームプログラム１８ｂ及びドライバプログラム１９ｂを夫々読み出して実行する処理も行なっておく。構成情報とは、ＥＣＵ１ａにてアプリケーションプログラムＡ１５ａを読み出して実行し、ＥＣＵ１ｂにてアプリケーションプログラムＢ１６ｂを読み出して実行するなどの定義、データ群２１ａにおける各データのＩＤ及び各データの容量などの定義が含まれる。
【００５３】
次にＣＰＵ１０ｂはまず、入力ドライバ又は通信ドライバ９３ｂの機能により入力処理を行なう（ステップＳ２）。ＣＰＵ１０ｂは、プラットフォーム１０８ｂの機能により、入力ドライバによって入力されたデータ、又は通信ドライバ９３ｂによって得られたデータをデータ群２１ｂに記憶する入力処理を行なう（ステップＳ３）。
【００５４】
図５は、ＣＰＵ１０ｂのプラットフォーム１０８ｂの機能による入力処理の手順の一例を示すフローチャートである。
【００５５】
ＣＰＵ１０ｂは、プラットフォーム１０８ｂの機能により、入力ドライバ又は通信ドライバ９３ｂからデータを全て取得したか否かを判断する（ステップＳ３１）。ＣＰＵ１０ｂは、全てを取得していないと判断した場合（Ｓ３１：ＮＯ）、入力ドライバ又は通信ドライバ９３ｂからデータを取得する（ステップＳ３２）。ＣＰＵ１０ｂは、取得したデータをＲＡＭ１２ｂのデータ群２１ｂへ記憶し（ステップＳ３３）、処理をステップＳ３１へ戻す。
【００５６】
ＣＰＵ１０ｂは、入力ドライバ又は通信ドライバ９３ｂからデータを全て取得したと判断した場合（Ｓ３１：ＹＥＳ）、記憶部１１ｂに記憶してあるＦ／Ｓテーブル８１を参照し（ステップＳ３４）、取得したデータに対し、Ｆ／Ｓ処理が必要なデータが有るか否かを判断する（ステップＳ３５）。ステップＳ３５にて具体的にはＣＰＵ１０ｂは、入力ドライバ又は通信ドライバ９３ｂから取得したデータの値が、Ｆ／Ｓ処理が必要であることを示す特定の値である場合、Ｆ／Ｓ処理が必要なデータであると判断する。
【００５７】
ＣＰＵ１０ｂは、ステップＳ３５にてＦ／Ｓ処理が必要なデータが無いと判断した場合（Ｓ３５：ＮＯ）、そのまま図４のフローチャートのステップＳ４へ処理を戻す。
【００５８】
ＣＰＵ１０ｂは、ステップＳ３５にてＦ／Ｓ処理が必要なデータが有ると判断した場合（Ｓ３５：ＹＥＳ）、Ｆ／Ｓ処理が必要なデータを入力ドライバ又は通信ドライバ９３ｂから取得して記憶してあるデータ群２１ｂから読み出す（ステップＳ３６）。ＣＰＵ１０ｂは、読み出したデータに対し、Ｆ／Ｓテーブル８１にて定義されている当該データに対するＦ／Ｓ処理を実行し（ステップＳ３７）、Ｆ／Ｓ処理後のデータをデータ群２１ｂへ記憶し（ステップＳ３８）、図４のフローチャートのステップＳ４へ処理を戻す。
【００５９】
図４に戻り、説明を続ける。
ＣＰＵ１０ｂは、実行されるアプリケーションＢ１０６ｂ又はアプリケーションＣ１０７の機能により、各種演算処理を行なう（ステップＳ４）。このときＣＰＵ１０ｂは、アプリケーションＢ１０６ｂ及びアプリケーションＣ１０７の機能により、プラットフォーム１０８ｂを呼び出し、データ群２１ｂからデータを取得する。これに対し、プラットフォーム１０８ｂでは、データの取得の要求に対する処理を行なう。
【００６０】
図６は、ＣＰＵ１０ｂのプラットフォーム１０８ｂの機能によるアプリケーションからの呼び出しに対する処理手順の一例を示すフローチャートである。
【００６１】
ＣＰＵ１０ｂは、プラットフォーム１０８ｂの機能により、Ｆ／Ｓテーブル８１を参照し、アプリケーションＢ１０６ｂ又はアプリケーションＣ１０７から取得が要求されるデータがＦ／Ｓ処理が必要なデータであるか否かを判断する（ステップＳ４１）。ＣＰＵ１０ｂは、Ｆ／Ｓ処理が必要なデータであると判断した場合（Ｓ４１：ＹＥＳ）、記憶してあるデータ群２１ｂからＦ／Ｓ処理後のデータを読み出し（ステップＳ４２）、読み出したデータをアプリケーションＢ１０６ｂ又はアプリケーションＣ１０７へ渡し（ステップＳ４３）、処理を終了する。
【００６２】
ＣＰＵ１０ｂは、Ｆ／Ｓ処理が必要なデータでないと判断した場合（Ｓ４１：ＮＯ）、データ群２１ｂからそのままデータを読み出し（ステップＳ４４）、読み出したデータをアプリケーションＢ１０６ｂ又はアプリケーションＣ１０７へ渡し（Ｓ４３）、処理を終了する。
【００６３】
図４に戻り、説明を続ける。
ＣＰＵ１０ｂはステップＳ４にて、アプリケーションＢ１０６ｂ又はアプリケーションＣ１０７の機能により、プラットフォーム１０８ｂを呼び出してデータを取得した後に演算処理を行なうが、演算処理後のデータは、プラットフォーム１０８ｂ経由にてデータを出力する。
【００６４】
ＣＰＵ１０ｂは、プラットフォーム１０８ｂの機能により、アプリケーションＢ１０６ｂ及びアプリケーションＣ１０７から出力されるデータをデータ群２１ｂへ記録する出力処理を行なう（ステップＳ５）。
【００６５】
次にＣＰＵ１０ｂは、出力ドライバ及び通信ドライバ９３ｂの機能により、制御用のデータ又は演算処理用のデータ等のデータを出力する出力処理を行なう（ステップＳ６）。ＣＰＵ１０ｂは、例えば５ｍｓ（ミリ秒）経過したか否かを判断し（ステップＳ７）、経過していないと判断した場合（Ｓ７：ＮＯ）、処理をステップＳ７へ戻して５ｍｓが経過するまで待機する。ＣＰＵ１０ｂは、５ｍｓ経過したと判断した場合（Ｓ７：ＹＥＳ）、処理をステップＳ２へ戻し、５ｍｓの周期でステップＳ２からステップＳ６までの処理を反復的に実行する。
【００６６】
このように、実施の形態１ではプラットフォーム１０８ｂの機能により、Ｆ／Ｓ処理を行なう構成とした。これにより、アプリケーションプログラム１６ａとアプリケーションプログラム１６ｂとの間で、ＥＣＵ１ａにて実行されるか、又はＥＣＵ１ｂにて実行されるかによってＦ／Ｓ処理を異ならしめるために内容を変更する必要がない。通信ドライバ９３ａ及び通信ドライバ９３ｂでも、アプリケーションプログラム１６ａ又はアプリケーションプログラム１６ｂに対応するＦ／Ｓ処理を含む必要がない。また、プラットフォーム１０８ｂ及びプラットフォーム１０８ｂの機能も、同一のプラットフォームプログラム１８ａ、プラットフォームプログラム１８ｂにて、Ｆ／Ｓテーブル８１を参照させることによって夫々の構成の違いに応じたＦ／Ｓ処理を行なうことができる。したがって、アプリケーションプログラム１６ａ（同一内容のアプリケーションプログラム１６ｂ）の再利用性、及び、ドライバプログラムの再利用性を向上させることができ、且つ、ＥＣＵ１ａ又はＥＣＵ１ｂのいずれにて処理が行なわれるかに応じた適切なＦ／Ｓ処理が実行される。なお、Ｆ／Ｓテーブル８１の内容を変更することにより、多様なシステムに柔軟に適応させることも可能である。
【００６７】
（実施の形態２）
実施の形態２では、Ｆ／Ｓテーブル８１に更に、各データの取得タイミングの情報が含まれる。
【００６８】
実施の形態２における制御システムの構成は、Ｆ／Ｓテーブル８１の内容の詳細及びそれに基づくＥＣＵ１ｂのＣＰＵ１０ｂの処理の詳細以外は、実施の形態１における構成と同様である。したがって、以下実施の形態２の説明では、実施の形態１の制御システムの構成と共通する構成については同一の符号を付し、各構成の詳細な説明を省略する。
【００６９】
図７は、実施の形態２におけるＥＣＵ１ｂのＲＯＭ１１ｂに記憶されているＦ／Ｓテーブルの内容例を示す説明図である。実施の形態２では、図７に示すように、Ｆ／Ｓテーブル８１に各データの取得タイミングの定義が追加されている。なお、図７に示すＦ／Ｓテーブル８１では、アプリケーションＢ１０６ａがＥＣＵ１ａに配置される場合のＦ／Ｓ処理及び取得タイミングを省略している。
【００７０】
図７に示すように、アプリケーションＡ１０５がＥＣＵ１ａに配置される場合、運転席ドアの開閉の状態のデータに対してＦ／Ｓ処理は「なし」であって、当該データの取得タイミングは定期である。同様に、助手席ドアの開閉の状態のデータに対してＦ／Ｓ処理は「なし」であって、当該データの取得タイミングも定期である。アプリケーションＢ１０６ｂがＥＣＵ１ｂに配置される場合、運転席ドアの開閉の状態のデータの取得タイミングは「定期」であって、プラットフォーム１０８ｂは当該データに対し、Ｆ／Ｓ処理をすべき場合は「処理１−１」のＦ／Ｓ処理を実行すべきである。助手席ドアの開閉の状態のデータの取得タイミングは「イベント」であって、当該データに対し、Ｆ／Ｓ処理をすべき場合はプラットフォーム１０８ｂは「処理１−２」の処理を行なうべきである。
【００７１】
図７に示したＦ／Ｓテーブル８１に基づくプラットフォーム１０８ｂの機能について、詳細を説明する。実施の形態２におけるＥＣＵ１ｂのＣＰＵ１０ｂは、メインの処理として実施の形態１の図４のフローチャートに示した処理を実行し、プラットフォーム１０８ｂの機能による入力処理も図５のフローチャートに示した処理を実行する。つまりＣＰＵ１０ｂは、プラットフォーム１０８ｂの機能によって５ｍｓが経過する都度、入力ドライバ又は通信ドライバ９３ｂから入力されたデータをデータ群２１ｂに記憶する処理を基本的に行なう。一方、ＣＰＵ１０ｂがアプリケーションＢ１０６ｂ又はアプリケーションＣ１０７の機能によってプラットフォーム１０８ｂを呼び出してデータを取得しようとした場合、ＣＰＵ１０ｂは、プラットフォーム１０８ｂの機能として、データの取得タイミングに応じてデータを取得してアプリケーションＢ１０６ｂ又はアプリケーションＣ１０７へ渡す。
【００７２】
図８は、実施の形態２におけるＣＰＵ１０ｂのプラットフォーム１０８ｂの機能によるアプリケーションからの呼び出しに対する処理手順の一例を示すフローチャートである。図８のフローチャートに示す処理手順の内、実施の形態１の図６のフローチャートに示した処理手順と共通する手順については同一のステップ番号を付して詳細な説明を省略する。
【００７３】
ＣＰＵ１０ｂは、プラットフォーム１０８ｂの機能により、アプリケーションＢ１０６ｂ又はアプリケーションＣ１０７からデータ取得のために呼び出された場合、Ｆ／Ｓテーブル８１を参照して取得が要求されるデータの取得タイミングが「定期」であるか「イベント」であるかを判断する（ステップＳ４５）。ＣＰＵ１０ｂは、「定期」であると判断した場合（Ｓ４５：定期）、Ｆ／Ｓ処理の要否を判断し（Ｓ４１）、判断結果に応じてデータ群２１ｂから読み出したデータをアプリケーションＢ１０６ｂ又はアプリケーションＣ１０７へ渡し（Ｓ４３）、処理を終了する。
【００７４】
ＣＰＵ１０ｂは、ステップＳ４５にて「イベント」であると判断した場合（Ｓ４５：イベント）、その時点で入力ドライバ又は通信ドライバ９３ｂにて入力されたデータをドライバから取得する（ステップＳ４６）。ＣＰＵ１０ｂは、取得したデータについてＦ／Ｓテーブル８１を参照し、Ｆ／Ｓ処理が必要なデータであるか否かを判断する（ステップＳ４７）。ＣＰＵ１０ｂは、Ｆ／Ｓ処理が必要であると判断した場合（Ｓ４７：ＹＥＳ）、取得したデータに対してＦ／Ｓテーブル８１にて定義されている当該データに対するＦ／Ｓ処理を実行し（ステップＳ４８）、Ｆ／Ｓ処理後のデータをアプリケーションＢ１０６ｂ又はアプリケーションＣ１０７へ渡し（ステップＳ４９）、処理を終了する。
【００７５】
ＣＰＵ１０ｂは、Ｆ／Ｓ処理が必要でないと判断した場合（Ｓ４７：ＮＯ）、取得したデータをそのままアプリケーションＢ１０６ｂ又はアプリケーションＣ１０７へ渡し（ステップＳ５０）、処理を終了する。
【００７６】
このように、実施の形態２では各データの取得タイミングについてもＦ／Ｓテーブル８１に定義しておき、プラットフォーム１０８ｂの機能にて取得タイミングに応じてＦ／Ｓ処理を行なう構成とする。これにより、例えば５ｍｓという間隔では内容が古いと判断されるようなデータについては、リアルタイムにドライバから取得したデータに対して処理を行なうことができ、適切な処理を行なうことが可能となる。
【００７７】
（実施の形態３）
実施の形態３では、Ｆ／Ｓテーブル８１に定義される各データにデータＩＤを割り振り、データ群２１ｂにおける各データとデータＩＤとを紐付けておき、アプリケーションからの取得要求はデータＩＤのみで行なう構成とする。
【００７８】
実施の形態３における制御システムの構成は、Ｆ／Ｓテーブル８１の内容の詳細以外は、実施の形態１における構成と同様である。したがって、以下実施の形態３の説明では、実施の形態１の制御システムの構成と共通する構成については同一の符号を付し、各構成の詳細な説明を省略する。
【００７９】
図９は、実施の形態３におけるＥＣＵ１ｂのＲＯＭ１１ｂに記憶されているＦ／Ｓテーブル８１の内容例を示す説明図である。実施の形態３では、図９に示すように、Ｆ／Ｓテーブル８１に各データのデータＩＤの定義が追加されている。なお、図９に示すＦ／Ｓテーブル８１では、アプリケーションＢ１０６ａがＥＣＵ１ａに配置される場合のＦ／Ｓ処理及びデータＩＤの定義を省略している。
【００８０】
図９に示すように、アプリケーションＡ１０５から「ＩＤ＿Ｄ＿ＤＯＯＲ」（運転席ドアの開閉の状態）の取得を要求された場合、プラットフォーム１０８ｂは「ＩＤ＿Ｄ＿ＤＯＯＲ」のＩＤを持つデータをデータ群２１ｂから読み出してアプリケーションＡ１０５へ渡す。このときＦ／Ｓ処理は「なし」である。同様にしてアプリケーションＡ１０５から「ＩＤ＿Ｐ＿ＤＯＯＲ」（助手席ドアの開閉の状態）の取得を要求された場合、プラットフォーム１０８ｂは「ＩＤ＿Ｐ＿ＤＯＯＲ」のＩＤを持つデータをデータ群２１ｂから読み出してアプリケーションＡ１０５へ渡す。このときＦ／Ｓ処理は「なし」である。また、アプリケーションＢ１０６ｂがＥＣＵ１ｂに配置される場合、アプリケーションＢ１０６ｂから「ＩＤ＿Ｄ＿ＤＯＯＲ」の取得を要求された場合、プラットフォーム１０８ｂは「ＩＤ＿Ｄ＿ＤＯＯＲ」のＩＤを持つデータをデータ群２１ｂから読み出してアプリケーションＢ１０６ｂへ渡す。このときＦ／Ｓ処理をすべき場合、「処理１−１」のＦ／Ｓ処理を実行する。アプリケーションＢ１０６ｂから「ＩＤ＿Ｐ＿ＤＯＯＲ」の取得を要求された場合、プラットフォーム１０８ｂは「ＩＤ＿Ｐ＿ＤＯＯＲ」のＩＤを持つデータをデータ群２１ｂから読み出してアプリケーションＢ１０６ｂへ渡す。このときＦ／Ｓ処理をすべき場合、「処理１−１」のＦ／Ｓ処理を実行する。
【００８１】
このように、各データにはデータＩＤを割り振るが、ＥＣＵ１ａ及びＥＣＵ１ｂとではデータＩＤと、データ群２１ａ又はデータ群２１ｂにおけるデータの実体との対応が異なる。
【００８２】
図１０は、実施の形態３における一方のＥＣＵ１ａでのデータの内容とデータＩＤとの対応関係を示す説明図である。図１０には、ＥＣＵ１ａでのデータ群２１ａにおけるデータの内容と、データ群２１ａにて定義されている変数名と、データＩＤとの対応が示されている。ＥＣＵ１ａではＲＯＭ１１ａに図１０に示す対応関係を記憶しておき、プラットフォーム１０８ａとしてのＣＰＵ１０ａが、指定されたデータＩＤに基づきデータ群２１ａにおける実データを扱う。
【００８３】
図１０に示すように、ＥＣＵ１ａでは、入力ドライバ９１によって直接的に入力されるセンサ３１からの運転席ドアの開閉のデータ（Val_D_door_Sw_in）に、データＩＤ「ＩＤ＿Ｄ＿ＤＯＯＲ」が紐付けられている。同様に、ＥＣＵ１ａでは、入力ドライバ９１によって直接的に入力されるセンサ３２からの助手席ドアの開閉のデータ（Val_P_door_Sw_in）に、データＩＤ「ＩＤ＿Ｐ＿ＤＯＯＲ」が紐付けられている。したがって、ＥＣＵ１ａではアプリケーションＡ１０５が「ＩＤ＿Ｄ＿ＤＯＯＲ」のデータの取得を要求した場合、ＣＰＵ１０ａはプラットフォーム１０８ａの機能により、データ群２１ａから変数Val_D_door_Sw_inのデータを読み出してアプリケーションＡ１０５へ渡す。
【００８４】
図１１は、実施の形態３における他方のＥＣＵ１ｂでのデータの内容とデータＩＤとの対応関係を示す説明図である。図１１には、ＥＣＵ１ｂでのデータ群２１ａにおけるデータの内容と、データ群２１ｂにて定義されている変数名と、データＩＤとの対応が示されている。ＥＣＵ１ｂではＲＯＭ１１ｂに図１１に示す対応関係を記憶しておき、プラットフォーム１０８ｂとしてのＣＰＵ１０ｂが、指定されたデータＩＤに基づきデータ群２１ｂにおける実データを扱う。
【００８５】
図１１に示すように、ＥＣＵ１ｂでは、通信ドライバ９３ｂによってＥＣＵ１ａからＣＡＮ通信で受信した運転席ドアの開閉のデータ（Val_D_door_Can_Rcv）、及びそれに対して「処理１−１」のＦ／Ｓ処理がなされたデータ（Val_D_door_Can_Rcv_fs）に、データＩＤ「ＩＤ＿Ｄ＿ＤＯＯＲ」が紐付けられている。同様に、ＥＣＵ１ｂでは、通信ドライバ９３ｂによってＥＣＵ１ａからＣＡＮ通信で受信した助手席ドアの開閉のデータ（Val_P_door_Can_Rcv）、及びそれに対して「処理１−１」のＦ／Ｓ処理がなされたデータ（Val_P_door_Can_Rcv_fs）に、データＩＤ「ＩＤ＿Ｐ＿ＤＯＯＲ」が紐付けられている。したがって、ＥＣＵ１ｂではアプリケーションＢ１０６ｂが「ＩＤ＿Ｄ＿ＤＯＯＲ」のデータの取得を要求した場合、ＣＰＵ１０ｂはプラットフォーム１０８ｂの機能により、データ群２１ａから変数Val_D_door_Can_Rcvのデータ又はＦ／Ｓ処理後の変数Val_D_door_Can_Rcv_fsのデータを読み出してアプリケーションＢ１０６ｂへ渡す。
【００８６】
図１０及び図１１に示したように、実施の形態３では、データＩＤとデータ群２１ａ又はデータ群２１ｂにおけるデータの実体との紐付けの情報をＥＣＵ１ａとＥＣＵ１ｂとで変え、プラットフォーム１０８ａ又はプラットフォーム１０８ｂにて扱うように記憶しておく。これにより、アプリケーションプログラム１６ａとアプリケーションプログラム１６ｂとの間で、ＥＣＵ１ａにて実行されるか、又はＥＣＵ１ｂにて実行されるかによってデータの読み出し即ち変数の指定の仕方、並びにＦ／Ｓ処理を異ならしめるために内容を変更する必要がない。
【００８７】
また、Ｆ／Ｓテーブル８１にて、データＩＤを複合データに対して割り振っておいてもよい。各ＥＣＵ１ａ又はＥＣＵ１ｂの機能によっては、複数のデータの値の「ＯＲ」又は「ＡＮＤ」等の結果（複合データ）に対する演算処理を行なう場合がある。このときのＦ／Ｓ処理についても、入力ドライバにて入力されるデータであるのか、通信ドライバによって受信したデータであるのかによって異なるから、複合データに対するＦ／Ｓ処理を予め定義しておき、複合データにデータＩＤを割り振ってアプリケーションからはデータＩＤのみで取得要求ができるようにする。
【００８８】
図１２は、実施の形態３におけるＥＣＵ１ｂのＲＯＭ１１ｂに記憶されているＦ／Ｓテーブル８１の他の内容例を示す説明図である。図１２に示すように、Ｆ／Ｓテーブル８１に複合データと、当該複合データに対するＦ／Ｓ処理の要否、実行すべきＦ／Ｓ処理の内容、及び複合データに割り振られたデータＩＤとが定義されている。図１２に示すＦ／Ｓテーブル８１では、アプリケーションＢがＥＣＵ１ａに配置される場合の内容を省略している。
【００８９】
図１２に示すように、ドア開閉のデータとして、運転席ドア又は助手席ドアのいずれかの開閉、即ち、運転席ドアの開閉と助手席ドアの開閉との「ＯＲ」の情報が定義されている。いずれかのドアが「開」であれば室内ランプを点灯させるといったイルミネーション制御に用いられる。図１２では、ドア開閉のデータにはデータＩＤ「ＩＤ＿ＤＰ＿ＤＯＯＲ」が割り振られており、アプリケーションＡがＥＣＵ１ａに配置される場合、当該複合データに対してＦ／Ｓ処理は「なし」であり、アプリケーションＢ１０６ｂがＥＣＵ１ｂに配置される場合、当該複合データに対してＦ／Ｓ処理をすべき場合は「処理１−３」のＦ／Ｓ処理を実行すべきであることが定義されている。
【００９０】
このＦ／Ｓテーブル８１に基づきＥＣＵ１ｂのＣＰＵ１０ｂは、複合データについていずれか一方のデータがＦ／Ｓ処理が必要なデータである場合、Ｆ／Ｓ処理「処理１−３」を実行した後のデータをデータ群２１ｂに記憶しておき、アプリケーションＢ１０６ｂから取得要求がされたときに「処理１−３」処理後のデータを渡す。
【００９１】
このように、予め複合データについてもＦ／Ｓテーブル８１に含めて定義しておき、プラットフォーム１０８ｂの機能により複合データに対するＦ／Ｓ処理を実行してことにより、アプリケーション側又はドライバ側で複合データに対するＦ／Ｓ処理を定義して実行する必要がない。したがって、アプリケーションプログラム１６ａ（同一内容のアプリケーションプログラム１６ｂ）の再利用性、及び、ドライバプログラムの再利用性を向上させることができ、且つ、各データに対して適切なＦ／Ｓ処理が実行される。
【００９２】
実施の形態１乃至３では、本発明は車両に搭載されるＥＣＵに適用される例を示した。しかしながら本発明はこれに限らず、通信手段を備えて相互にデータを送受信して連携により制御を行なうコンピュータ装置に適用することができる。
【００９３】
なお、上述のように開示された本実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９４】
１ａ，１ｂ  ＥＣＵ
１０ａ，１０ｂ  ＣＰＵ
１０５  アプリケーションＡ
１０６ａ，１０６ｂ  アプリケーションＢ
１０７  アプリケーションＣ
１０８ａ，１０８ｂ  プラットフォーム
８１  Ｆ／Ｓテーブル
１５ａ  アプリケーションプログラムＡ
１６ａ  アプリケーションプログラムＢ
１６ｂ  アプリケーションプログラムＢ
１７ｂ  アプリケーションプログラムＣ
１８ａ，１８ｂ  プラットフォームプログラム
【図１】
2012048390.tif 000003
【図２】
2012048390.tif 000004
【図３】
2012048390.tif 000005
【図４】
2012048390.tif 000006
【図５】
2012048390.tif 000007
【図６】
2012048390.tif 000008
【図７】
2012048390.tif 000009
【図８】
2012048390.tif 000010
【図９】
2012048390.tif 000011
【図１０】
2012048390.tif 000012
【図１１】
2012048390.tif 000013
【図１２】
2012048390.tif 000014