(57)【要約】【課題】プログラムを修正することなく特定のセンサに処理を実行させることができる。【解決手段】車両用制御装置は、ネットワークと通信するネットワークインタフェースを有し、ソフトウエアが動作し、ソフトウエアから受信する命令に含まれる情報に基づき、命令の転送先である転送先デバイスを特定し、命令に少なくとも転送先デバイスのネットワークにおける識別子であるネットワークアドレスを付してネットワークインタフェースに出力するデータ仲介部を備える。【選択図】図２
2020204935.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークと通信するネットワークインタフェースを有し、ソフトウエアが動作する車両用制御装置であって、
前記ソフトウエアから受信する命令に含まれる情報に基づき、前記命令の転送先である転送先デバイスを特定し、前記命令に少なくとも前記転送先デバイスの前記ネットワークにおける識別子であるネットワークアドレスを付して前記ネットワークインタフェースに出力するデータ仲介部を備える車両用制御装置。
【請求項２】
請求項１に記載の車両用制御装置において、
前記データ仲介部は、オペレーティングシステムよりも上位の処理権限を有するハイパーバイザに含まれる車両用制御装置。
【請求項３】
請求項１に記載の車両用制御装置において、
前記命令を実行するデバイスの名称と転送先の前記ネットワークアドレスとの対応を示す仲介情報が格納される記憶領域をさらに備え、
前記命令には、前記命令を実行するデバイスの名称が含まれ、
前記データ仲介部は、前記記憶領域に格納される前記仲介情報を用いて前記ネットワークアドレスを特定する車両用制御装置。
【請求項４】
請求項３に記載の車両用制御装置において、
前記車両用制御装置は、前記ネットワークを介さずにセンサと接続され、
前記仲介情報は、転送の要否を示す転送フラグ、およびバッファ読込の要否を示す読込フラグを含む複数のレコードを有し、
前記記憶領域は、処理結果が一時的に保存される命令用バッファを有し、
前記データ仲介部は、前記命令に含まれる少なくとも前記命令を実行するデバイスの名称を用いて前記仲介情報の前記複数のレコードから１つの前記レコードを特定し、特定した前記レコードにおける前記転送フラグの値、および前記読込フラグの値に基づき、前記命令を前記ネットワークインタフェースに出力する第１の選択肢、前記命令を前記センサに出力する第２の選択肢、および前記命令用バッファから前記処理結果を読み出す第３の選択肢、からいずれか１つの選択肢を選択する車両用制御装置。
【請求項５】
請求項１に記載の車両用制御装置において、
前記データ仲介部は、前記命令を出力したプログラムの識別子である命令識別符号を前記命令に付して前記ネットワークインタフェースに出力し、前記ネットワークインタフェースから受信する処理結果に含まれる前記命令識別符号に基づき、前記処理結果に含まれるデータを送信するプログラムを決定する車両用制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両用制御装置に関する。
【背景技術】
【０００２】
車載向けアプリケーションの多様化や高性能化に伴い、車載ソフトウエアの開発コストは増加している。自動運転や先進運転支援システムは、センサデバイスから得た情報を即座に計算し、結果を出力するために車載にて制御を行う。この計算には画像処理、ベクトル解析、および並列演算などの、従来の組み込みハードウエアでは行わなかった処理が求められている。従来の車載ＥＣＵは、前述した高度な計算を行うにはＣＰＵの計算能力やメモリ容量等の面において非力である。そのため、エンタープライズ向けハードウエアで用いられてきたマルチコアを有するＥＣＵや大容量メモリを有するＥＣＵなどの高性能ＥＣＵが台頭してきている。
【０００３】
車載ＥＣＵ環境において、前述した高性能ＥＣＵが台頭する一方、従来から用いられてきた組み込み分野特有のさまざまなセンサデバイス、チップデバイスも車載向けアプリケーションでは求められる。これらのデバイスも高性能化、多様化が進んでいる。以上の背景を踏まえ、自動車では高性能ＥＣＵとセンサデバイスを有するＥＣＵとをネットワークで複数接続し、高度な処理を高性能なＥＣＵに統合して処理を行うことで演算性能を高める傾向がある。
【０００４】
特許文献１には、車両に搭載された車載機器を制御するために、第１の電子制御装置と第２の電子制御装置とが連携した処理を行う車両用制御システムであって、前記第１の電子制御装置と前記第２の電子制御装置とは、それぞれ、連携処理を行うための連携処理用アプリケーションプログラムを有するとともに、それら連携処理用アプリケーションプログラムを協調して実行させるためのベーシックソフトウエアとしての役割を果たす、所定の役割分担の下に協調して動作する第１ＯＳプログラムと第２ＯＳプログラムとをそれぞれ有しており、前記第２の電子制御装置が保有する第２ＯＳプログラムは、分担する役割が異なる複数の中から選定されたものであり、前記第１の電子制御装置が保有する第１ＯＳプログラムは、分担する役割を変更可能に構成され、それにより、分担する役割が異なる複数の中のいずれの第２ＯＳプログラムとも協調した動作を行うことが可能であって、前記第１の電子制御装置は、前記第２の電子制御装置から、前記第２ＯＳプログラムが分担する役割についての情報を取得する取得部（Ｓ１００）と、前記取得部により取得した、前記第２ＯＳプログラムが分担する役割を示す情報に基づき、当該第２ＯＳプログラムと協調して動作することができるように、第１ＯＳプログラムの分担する役割を決定する決定部と、を備える車両用制御システムが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−１２８３０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載されている発明では、センサが接続される装置の変更に伴うプログラムの修正が避けられない。
【課題を解決するための手段】
【０００７】
本発明の第１の態様による車両用制御装置は、ネットワークと通信するネットワークインタフェースを有し、ソフトウエアが動作する車両用制御装置であって、前記ソフトウエアから受信する命令に含まれる情報に基づき、前記命令の転送先である転送先デバイスを特定し、前記命令に少なくとも前記転送先デバイスの前記ネットワークにおける識別子であるネットワークアドレスを付して前記ネットワークインタフェースに出力するデータ仲介部を備える。
【発明の効果】
【０００８】
本発明によれば、プログラムを修正することなく特定のセンサに処理を実行させることができる。
【図面の簡単な説明】
【０００９】
【図１】車両用制御装置の動作概要図
【図２】車両用制御装置の構成図
【図３】命令および処理結果の模式図
【図４】仲介情報テーブルの一例を示す図
【図５】デバイステーブルの一例を示す図
【図６】車載デバイスの構成
【図７】データ仲介部が実行する命令処理を示すフローチャート
【図８】図７のＳ４１０の詳細を示すフローチャート
【図９】処理結果受信処理を示すフローチャート
【図１０】図８のＳ４１１に示すセンサ処理の詳細を示すフローチャート
【図１１】図８のＳ４１３に示すバッファアクセス処理の詳細を示すフローチャート
【図１２】図１１のＳ７０６に示すバッファポインタ書換処理の詳細を示すフローチャート
【図１３】命令を車載デバイスのセンサが処理する場合のタイミングチャート
【図１４】命令を車両用制御装置のセンサが処理する場合のタイミングチャート
【図１５】命令を命令用バッファを用いて処理する場合のタイミングチャート
【発明を実施するための形態】
【００１０】
―実施の形態―
以下、図１〜図１５を参照して、車両用制御装置の実施の形態を説明する。
【００１１】
図１は、本発明に係る車両用制御装置１０１の動作概要図である。車両用制御装置１０１は、車両１００に搭載される。車両１００には、車両用制御装置１０１と１または複数の車載デバイス１０２が搭載される。車両用制御装置１０１および車載デバイス１０２は、通信ネットワーク１０３により接続される。車両用制御装置１０１は、車載デバイス１０２に命令１０４ｃを送信すると、車載デバイス１０２は受信した命令１０４ｃに従い処理を実行する。そして車載デバイス１０２は処理を実行した結果である処理結果１０５ｃを車両用制御装置１０１に送信する。
【００１２】
図２は、車両用制御装置１０１の構成図である。図２にはハードウエア構成と機能構成が混在している。車両用制御装置１０１は、ハードウエア構成として、メモリ２０３、記憶装置２０４、ＣＰＵ２０５、ネットワークインタフェース２０６、およびセンサ２０７を備える。ただし図２では、「ネットワークインタフェース」を「ネットワークＩＦ」と表記している。メモリ２０３は、ＣＰＵ２０５が実行するプログラムおよびＣＰＵ２０５によって参照されるデータ等を格納するいわゆる主記憶装置である。
【００１３】
ＣＰＵ２０５は、不図示のＲＯＭに格納されたプログラムをメモリ２０３に展開して実行することによって種々の機能を実現するプロセッサである。記憶装置２０４は、ＣＰＵ２０５が実行するプログラムおよびＣＰＵ２０５によって参照されるデータ等を格納する、たとえばハードディスクドライブ等のいわゆる補助記憶装置である。ネットワークインタフェース２０６は、通信ネットワーク１０３に接続され、車載デバイス１０２と通信可能である。
【００１４】
車両用制御装置１０１は、その機能としてアプリケーション２００、オペレーティングシステム２０１、およびハイパーバイザ２０２を備える。なお図２ではアプリケーション２００、オペレーティングシステム２０１、およびハイパーバイザ２０２は全て１つのみ記載しているが、車両用制御装置１０１は複数のアプリケーション２００およびオペレーティングシステム２０１を備えてもよい。アプリケーション２００、オペレーティングシステム２０１、およびハイパーバイザ２０２は、ＣＰＵ２０５により実現される。なお以下では、「アプリケーション」を「アプリ」、「オペレーティングシステム」を「ＯＳ」と呼ぶこともある。また、アプリ２００およびＯＳ２０１をまとめて「ソフトウエア」とも呼ぶ。
【００１５】
ハイパーバイザ２０２はＯＳ２０１を管理し、ＯＳ２０１はアプリ２００を管理する。換言すると、ハイパーバイザ２０２はＯＳ２０１よりもハードウエア寄りの存在であり、動作やデータへのアクセスにおいて上位の処理権限を有する。
【００１６】
オペレーティングシステム２０１やアプリケーション２００は、命令１０４ａをハイパーバイザ２０２に出力する。ハイパーバイザ２０２は、受信した命令１０４ａを後述するように命令１０４ｃまたは命令１０４ｅに書き換えてネットワークインタフェース２０６またはセンサ２０７に出力する。ハイパーバイザ２０２は、ネットワークインタフェース２０６またはセンサ２０７から処理結果１０５ｃまたは処理結果１０５ｅを受信すると、後述するように処理結果１０５ａに書き換えてオペレーティングシステム２０１やアプリケーション２００に出力する。
【００１７】
ハイパーバイザ２０２は、データ仲介部２０８と、公知の構成であるデバイスエミュレータ２１２とを備える。デバイスエミュレータ２１２の構成および動作は公知なので説明を省略する。データ仲介部２０８は、デバイス特定部２１４と、命令変換部２１５と、命令受信部２１６と、命令送信部２１７と、記憶領域２０９とを備える。記憶領域２０９には、仲介情報テーブル２１０および命令用バッファ２１１が格納される。記憶領域２０９は、メモリ２０３または記憶装置２０４により実現される。デバイスエミュレータ２１２、デバイス特定部２１４、命令変換部２１５、命令受信部２１６、および命令送信部２１７は、ＣＰＵ２０５により実現される。図２の構成を一旦中断し、先に命令１０４および処理結果１０５の構成を説明する。
【００１８】
（命令と処理結果の構成）
図３を参照して命令１０４ａ、命令１０４ｂ、命令１０４ｃ、命令１０４ｅ、処理結果１０５ａ、処理結果１０５ｂ、処理結果１０５ｃ、および処理結果１０５ｅの構成を説明する。ここでは処理結果１０５ａ、処理結果１０５ｂ、処理結果１０５ｃ、および処理結果１０５ｅについて特に説明しないが、処理結果１０５ａの構成は命令１０４ａと同様であり、処理結果１０５ｂの構成は命令１０４ｂと同様であり、処理結果１０５ｃの構成は命令１０４ｃと同様であり、処理結果１０５ｅの構成は命令１０４ｅと同様である。たとえば、ある命令１０４ａに対応する処理結果１０５ａは、データ１４０３の値のみが異なる。命令１０４ｂと処理結果１０５ｂの関係、および命令１０４ｃと処理結果１０５ｃの関係も同様である。
【００１９】
なお以下では、命令１０４ａ、命令１０４ｂ、命令１０４ｃ、命令１０４ｄ、および命令１０４ｅをまとめて「命令１０４」とも呼ぶ。また、処理結果１０５ａ、処理結果１０５ｂ、処理結果１０５ｃ、処理結果１０５ｄ、および処理結果１０５ｅをまとめて「処理結果１０５」とも呼ぶ。
【００２０】
図３（ａ）はアプリ２００やＯＳ２０１が出力する命令１０４ａの構成を示す模式図、図３（ｂ）はデータ仲介部２０８による処理過程の命令１０４ｂの構成を示す模式図、図３（ｃ）はハイパーバイザ２０２が出力する命令１０４ｃの構成を示す模式図、図３（ｄ）はハイパーバイザ２０２が出力する命令１０４ｅの構成を示す模式図である。命令１０４ａは、メモリアドレス１４００と、デバイス名１４０１と、制御名１４０２と、データ１４０３とから構成される。命令１０４ｂは、命令１０４ａの構成にネットワークアドレス１４０４が追加されている。命令１０４ｃは、命令１０４ｂの構成にさらに、命令識別番号１４０５が追加されている。
【００２１】
命令識別番号１４０５は、命令送信部２１７から命令１０４ｃおよび命令１０４ｅを送信する際に命令を識別するためのＩＤである。この命令識別番号１４０５は、命令受信部２１６で処理結果１０５を受信した際にも処理結果１０５を識別することに利用できる。データ仲介部２０８は、命令１０４ａを受信した際に、その命令１０４ａを出力したプログラムを特定可能であり、そのプログラムの特定するための識別子が命令識別番号１４０５である。図２に戻って説明を続ける。
【００２２】
デバイス特定部２１４は、仲介情報テーブル２１０のデバイス名１２００、エミュレートフラグ１２０１を元に命令１０４がエミュレートを必要とするかを判断する。またデバイス特定部２１４は、オペレーティングシステム２０１およびアプリケーション２００から発行された命令１０４ａを受け取る。デバイス特定部２１４は、命令１０４ａをどのデバイスが処理するかを特定し、特定したデバイスの名称を命令変換部２１５に伝達する。命令変換部２１５は、デバイス特定部２１４が命令１０４ａを処理するデバイスを特定すると、必要に応じて命令１０４をデバイステーブル２１０ｂを参照してネットワークアドレス１４０４を命令１０４ａに付加する。
【００２３】
命令送信部２１７は、命令１０４ｂを受信すると命令１０４ｃを作成してネットワークＩＦ２０６に出力する。命令送信部２１７は、命令１０４ａを受信すると、命令１０４ｅを作成してセンサ２０７に出力するか、命令用バッファ２１１を参照して命令受信部２１６に必要な情報を出力する。命令１０４ｃを受信したネットワークＩＦ２０６およびセンサ２０７は、後述するように処理結果１０５ｃおよび処理結果１０５ｅを命令受信部２１６に送信する。ただし命令用バッファ２１１に処理能力を付加し、命令送信部２１７が命令用バッファ２１１に命令１０４ａを送信して、命令用バッファ２１１に処理結果１０５ｅを作成させ、さらに処理結果１０５ｅを命令受信部２１６に送信させてもよい。
【００２４】
命令送信部２１７だけでなく、デバイス特定部２１４および命令変換部２１５の動作も加えると、次のように言い換えることができる。すなわち、データ仲介部２０８は、命令１０４ａに含まれるデバイス名１４０１を用いて仲介情報テーブル２１０ａから１つのレコードを特定し、特定したレコードにおける転送フラグ１２１０の値、およびバッファ読込フラグ１２０７の値に基づき、命令１０４の処理を次の３つのいずれかに決定する。その３つの選択肢とは、命令１０４をネットワークインタフェース２０６に出力する第１の選択肢、命令を車両用制御装置１０１に備えられるセンサ２０７に出力する第２の選択肢、および命令用バッファ２１１から処理結果を読み出す第３の選択肢の３つである。
【００２５】
命令受信部２１６は、命令送信部２１７からハイパーバイザ２０２の外部に出力された命令１０４ｃが処理された結果である処理結果１０５ｃを受信する。記憶領域２０９に格納される命令用バッファ２１１は、オペレーティングシステム２０１やアプリケーション２００から発行された命令１０４のうち、処理結果を一時的に保存することを可能とするバッファである。
【００２６】
（仲介情報テーブル２１０ａ）
図４は、仲介情報テーブル２１０ａの一例を示す図である。仲介情報テーブル２１０ａは、複数のレコードを含む。各レコードは、ＩＤ１２０８、デバイス名１２００、エミュレートフラグ１２０１、エミュレートデバイス１２０２、アドレス変換フラグ１２０３、実メモリアドレス１２０４、変換アドレス１２０５、転送フラグ１２１０、転送情報ポインタ１２１１、バッファ書き込みフラグ１２０６、バッファ意読み込みフラグ１２０７、およびバッファポインタ１２０９から構成されている。
【００２７】
ＩＤ１２０８は、テーブル内のレコードを一意に特定する識別子である。デバイス名１２００は、命令１０４ａを実行するデバイスの識別子である。エミュレートフラグ１２０１は、命令１０４ａがデバイスエミュレーションを必要とするか否かを表す符号である。エミュレートフラグ１２０１の値は、「１」はエミュレートが必要であることを示し、「０」はエミュレートが不要であることを示す。エミュレートフラグ１２０１の値が「１」の場合は、エミュレートデバイス１２０２にはエミュレートするデバイスの識別子を表す。
【００２８】
アドレス変換フラグ１２０３はメモリアドレス変換が必要か否かを示す。実メモリアドレス１２０４は、命令１０４ａが利用するメモリのアドレスであり、メモリアドレス変換が必要であれば、変換アドレス１２０５にアドレス変換する。
【００２９】
転送フラグ１２１０は命令１０４ａの転送を必要とするか否かを示し、「１」であれば転送情報ポインタ１２１１で指定されたポインタにアクセスする。転送情報ポインタ１２１１はデバイステーブル２１０ｂのＩＤ１３００を指している。バッファ書込フラグ１２０６は、処理結果１０５ｃのデータ１４０３を命令用バッファ２１１に書き込みを行うか否かを示す。バッファ読み込みフラグ１２０７は、命令１０４ａが命令用バッファ２１１からデータ１４０３を読み込むかを示している。バッファポインタ１２０９は命令用バッファ２１１から読み込みおよび書き込みを行うメモリアドレスを示している。
【００３０】
（デバイステーブル２１０ｂ）
図５は、デバイステーブル２１０ｂの一例を示す図である。デバイステーブル２１０ｂは複数のレコードを含み、各レコードは、ＩＤ１３００、デバイスアドレス１３０１、およびネットワークアドレス１３０２を含む。ＩＤ１３００はデバイステーブル２１０ｂの識別子であり、仲介情報テーブル２１０ａの転送情報ポインタ１２１１の値と対応する。デバイスアドレス１３０１は、転送先のデバイスの名称を示す。ネットワークアドレス１３０２は、デバイスアドレス１３０１で示されるデバイスそのもの、またはそのデバイスが格納されＥＣＵのネットワークアドレスである。なお本実施の形態では特に説明しないが、仲介情報テーブル２１０ａおよびデバイステーブル２１０ｂに格納される情報は更新されることもある。
【００３１】
（車載デバイス１０２）
図６は、車載デバイス１０２の構成図である。車載デバイス３００は、車両用制御装置１０１と同様にＣＰＵ３０３、記憶装置３０４、メモリ３０１、ネットワークインタフェース３０２、およびセンサ３０５を備える。ネットワークインタフェース３０２は、通信ネットワーク１０３に接続され、車両用制御装置１０１と通信する。メモリ３０１は、ＣＰＵ３０３が実行するプログラムおよびＣＰＵ３０３によって参照されるデータ等を格納するいわゆる主記憶装置である。ＣＰＵ３０３は、記憶装置３０４に格納されたプログラムをメモリ３０１に展開して実行することによって後述する命令仲介部３０６を含む種々の機能を実現するプロセッサである。
【００３２】
記憶装置３０４は、ＣＰＵ３０３が実行するプログラムおよびＣＰＵ３０３によって参照されるデータ等を格納する、たとえばハードディスクドライブ等のいわゆる補助記憶装置である。車載デバイス３００は命令仲介部３０６を有する。命令仲介部３０６は、車両用制御装置１０１から転送された命令１０４ｃの少なくともデータ１４０３を指令されたセンサ３０５に転送し処理結果１０５ｄを得る。そして命令仲介部３０６は、処理結果１０５ｄを用いて処理結果１０５ｃを作成して車両用制御装置１０１に転送する。
【００３３】
図７は、データ仲介部２０８が実行する命令処理を示すフローチャートである。アプリケーション２００やオペレーティングシステム２０１から命令１０４が発行されると、図７に示す処理が開始される。
【００３４】
まず、ハイパーバイザ２０２は、ＯＳが発行された命令１０４ａをフックしてＯＳから命令１０４ａを受信する（Ｓ４０１）。ハイパーバイザ２０２は、この命令１０４ａをデータ仲介部２０８のデバイス特定部２１４に転送する（Ｓ４０２）。デバイス特定部２１４は、転送された命令１０４ａのメモリアドレス１４００およびデバイス名１４０１を読み取る。次にデバイス特定部２１４は、記憶領域２０９の仲介情報テーブル２１０を参照し、命令１０４ａからメモリアドレス１４００とデバイス名１４０１に該当するレコードを特定し（Ｓ４０３）、そのレコードのエミュレートフラグ１２０１を読み取る。
【００３５】
デバイス特定部２１４は、エミュレートフラグ１２０１が「１」の場合は（Ｓ４０４：ＹＥＳ）、その命令１０４ａをハイパーバイザ２０２の既存機能であるデバイスエミュレータ２１２に転送する（Ｓ４０５）。デバイスエミュレータ２１２は命令１０４ａを解釈して演算を行い、命令１０４ａを出力するのでデバイス特定部２１４が受信する（Ｓ４０６）。
【００３６】
エミュレートフラグ１２０１が「０」の場合（Ｓ４０４：ＮＯ）、およびＳ４０６の次に、デバイス特定部２１４はその命令１０４ａを命令変換部２１５に転送する（Ｓ４０７）。命令１０４ａを受信した命令変換部２１５は、仲介情報テーブル２１０を参照し、命令１０４ａからメモリアドレス１４００とデバイス名１４０１に該当するレコードを特定する。命令変換部２１５は、該当するレコードの転送フラグ１２１０を確認し、フラグが「１」であれば（Ｓ４０８：ＹＥＳ）、ネットワーク転送処理（Ｓ４１０）を開始する。ネットワーク転送処理（Ｓ４１０）の詳細は図８を参照して詳述する。
【００３７】
命令変換部２１５は、転送フラグ１２１０が「０」であれば（Ｓ４０８：ＮＯ）、バッファ読込フラグ１２０７を確認し、フラグが「０」であれば（Ｓ４０９：ＹＥＳ）、車両１００に搭載されるセンサ２０７に処理を実行させるセンサ処理（Ｓ４１１）を実行させる。命令変換部２１５は、バッファ読込フラグ１２０７が「１」であれば（Ｓ４０９：ＮＯ）、命令用バッファ２１１を用いるバッファ処理（Ｓ４１３）を実行させる。センサ処理（Ｓ４１１）の詳細は図１０を参照して詳述する。バッファ処理（Ｓ４１３）の詳細は図１１を参照して詳述する。Ｓ４１０、Ｓ４１１、およびＳ４１３のそれぞれの処理が完了すると図９に詳細を示すＳ４１４を実行する。
【００３８】
（ネットワーク転送処理）
図８は、図７のＳ４１０に示すネットワーク転送処理の詳細を示すフローチャートである。Ｓ５０１では命令変換部２１５は、特定した仲介情報テーブル２１０ａのレコードにおける転送情報ポインタ１２１１を参照し、デバイステーブル２１０ｂのネットワークアドレス１３０２を読み取る。そして命令変換部２１５は、読み取ったネットワークアドレス１３０２をネットワークアドレス１４０４として命令１０４ａに付加する。これにより命令１０４ａが命令１０４ｂとなる。以上がＳ５０１の処理である。
【００３９】
さらに命令変換部２１５は、アドレス変換フラグ１２０３が「１」の場合は、変換アドレス１２０５を用いて命令１０４ｂに含まれるメモリアドレス１４００の値を書き換えて、命令１０４ｂを命令送信部２１７に転送する（Ｓ５０２）。なおアドレス変換フラグ１２０３が「０」の場合は、命令変換部２１５はメモリアドレス１４００の値を書き換えずに命令１０４ｂを命令送信部２１７に転送する。
【００４０】
命令１０４ｂを受け取った命令送信部２１７は、命令１０４ｂを区別するためのＩＤ１４０５を付加して命令１０４ｃを生成する。そして命令送信部２１７は、命令受信部２１６に付加したＩＤ１４０５を通知する（Ｓ５１３）。次に仲介情報テーブル２１０のバッファ読み込みフラグ１２０７を参照する。バッファ読込フラグ１２０７が０であれば、ネットワークインタフェース２０６に命令１０４ｃを転送する。ネットワークインタフェース２０６に転送された命令１０４は、ネットワークインタフェース２０６から指定された車載デバイス１０２に転送される（Ｓ５０３）。
【００４１】
車載デバイス１０２は、ネットワークインタフェース３０２で命令１０４ｃを受信すると、命令仲介部３０６を介して、命令１０４ｃによって指定されたセンサ３０５に命令１０４ｃを転送する（Ｓ５０４、Ｓ５０５）。ただし命令仲介部３０６は、センサ３０５が命令１０４ｃを解釈可能なように、命令１０４ｄに変換してから転送してもよい。命令１０４ｄとは、センサ３０５が解釈可能なように命令１０４ｃを適宜修正したものである。センサ３０５は命令を実行して（Ｓ５０６）、処理結果ｄを命令仲介部３０６に送信する。命令仲介部３０６は受信した実行結果を用いて処理結果ｃを生成して車両用制御装置１０１に送信する（Ｓ５０７、Ｓ５０８）。処理結果ｃは、命令１０４ｃのデータ１４０３のみを書き換えたものである。
【００４２】
車両用制御装置１０１がネットワークインタフェース２０６で処理結果１０５を受信すると、ネットワークインタフェース２０６は割り込みを発行する。ハイパーバイザ２０２は割り込みを検知するとその割り込みをフックし、命令受信部２１６に転送する。命令受信部２１６は、処理結果１０５ｃを受信すると（Ｓ５１２）、まず命令送信部２１７で付加したＩＤ１４０５を確認し、命令送信部２１７から通知されたＩＤであればそのＩＤ１４０５を取り除く。これにより処理結果ｃが処理結果ｂとなる。
【００４３】
次に命令受信部２１６は、仲介情報テーブル２１０のバッファ書込フラグ１２０６を参照する。このフラグが「１」であれば（Ｓ５１０：ＹＥＳ）、命令受信部２１６は処理結果１０５ｃをバッファポインタ１２０９が指定するアドレスに格納する。命令受信部２１６は、バッファ書込フラグ１２０６が「０」であれば（Ｓ５１０：ＮＯ）、処理結果１０５を命令変換部２１５に転送する。以上がネットワーク転送処理の説明である。図７に示したように、図８に示す処理が終了すると図９に示す処理が開始される。
【００４４】
（処理結果受信処理）
図９は、処理結果受信処理を示すフローチャートである。命令変換部２１５は、処理結果１０５ｂを受信すると（Ｓ８０１）、この処理結果１０５ｂは付加情報、すなわちネットワークアドレス１４０４を含むか否かを判断する。命令変換部２１５は、処理結果１０５ｂが付加情報であるネットワークアドレス１４０４を含むと判断する場合は（Ｓ８０２：ＹＥＳ）、処理結果１０５ｂからネットワークアドレス１４０４を除去して（Ｓ８０３）、Ｓ８０４に進む。命令変換部２１５は、処理結果１０５ｂが付加情報を含まないと判断する場合は（Ｓ８０２：ＮＯ）、Ｓ８０４に進む。
【００４５】
Ｓ８０４では、命令変換部２１５は仲介情報テーブル２１０を参照し、該当するレコードをデバイス名１２００から特定する。そして命令変換部２１５は、該当する行の変換アドレス１２０５から実メモリアドレス１２０４にメモリのアドレスを変換する。そして命令変換部２１５は、処理結果１０５ｂからネットワークアドレス１４０４を取いた処理結果ａをデバイス特定部２１４に転送する。以上がＳ８０４の処理である。
【００４６】
続くＳ８０５ではデバイス特定部２１４は、処理結果ａを受信すると、デバイス名１４０１を参照して仲介情報テーブル２１０の該当するレコードを特定する。そしてデバイス特定部２１４は、特定したレコードにおけるエミュレートフラグ１２０１が「１」の場合は（Ｓ８０５：ＹＥＳ）、処理結果ａをデバイスエミュレータ２１２に転送してデバイスエミュレーションを行う（Ｓ８０６）。その後、デバイスエミュレータ２１２から返却された処理結果ａは、オペレーティングシステム２０１およびアプリケーション２００に出力される（Ｓ８０７、Ｓ８０８）。デバイス特定部２１４は、特定したレコードにおけるエミュレートフラグ１２０１が「０」の場合は（Ｓ８０５：ＮＯ）、受信した処理結果ａをそのままオペレーティングシステム２０１およびアプリケーション２００に出力する（Ｓ８０８）。
【００４７】
（センサ処理）
図１０は、図７のＳ４１１に示すセンサ処理の詳細を示すフローチャートである。ただし図１０では、図８と同一の処理には同一のステップ番号を付して説明を省略する。
【００４８】
まず、命令変換部２１５が、命令１０４ａを命令送信部２１７に転送する（Ｓ５０２ａ）。命令１０４ａを受け取った命令送信部２１７は、命令１０４ａを区別するためのＩＤ１４０５を付加して命令１０４ｅを生成する。そして命令送信部２１７は、命令受信部２１６に付加したＩＤ１４０５を通知する（Ｓ５１３ａ）。そして命令送信部２１７は、センサ２０７に命令１０４ａを転送する（Ｓ６０３）。センサ２０７は、命令１０４ｅを受信したら実行し、処理結果１０５ｅを命令受信部２１６に転送する（Ｓ６０４）。これ以後の処理は図８と同様なので説明を省略する。
【００４９】
（バッファアクセス処理）
図１１は、図８のＳ４１３に示すバッファアクセス処理の詳細を示すフローチャートである。ただし図１１では、図７および図８と同一の処理には同一のステップ番号を付して説明を省略する。
【００５０】
図１１の始めの２つの処理であるＳ５０２ａおよびＳ５１３ａは図１０と同様なので説明を省略する。Ｓ７０３では命令送信部２１７は、仲介情報テーブル２１０のバッファポインタ１２０９に記載されたアドレスの命令用バッファ２１１にアクセスする。そして命令送信部２１７は、そのアドレスに格納されている値を命令１０４ｅのデータ１４０３に書き込んで、命令１０４ｅを処理結果１０４ｅとする（Ｓ７０４）。命令送信部２１７は、処理結果１０４ｅを命令受信部２１６に出力し、命令受信部２１６は命令送信部２１７から処理結果１０４ｅを受信する（Ｓ５１２ａ）。命令送信部２１７は、バッファポインタを書き換えて（Ｓ７０６）、図１１に示す処理を終了する。ただしバッファポインタの書換処理は図１２で詳述する。
【００５１】
（バッファポインタ書換処理）
図１２は、図１１のＳ７０６に示すバッファポインタ書換処理の詳細を示すフローチャートである。まず命令送信部２１７は、命令１０４ｅのデバイス名１４０１を参照して、仲介情報テーブル２１０ａから命令１０４ｅの対象となるレコードを特定する（Ｓ９０１）。次に命令送信部２１７は、Ｓ９０１において特定したレコードからバッファポインタ１２０９の値を読み込む（Ｓ９０２）。そして命令送信部２１７は、読み込んだポインタ値をインクリメントする。メモリのアドレス番地の長さはシステムごとに固定された既知の値である。命令送信部２１７は、読み込んだポインタ値にメモリのアドレス番地の長さに相当する値、たとえば３２ビットを足すことでポインタ値をインクリメントする。
【００５２】
次に命令送信部２１７は、インクリメントしたポインタ値のアドレスに、次の値が格納されているか否かを判断する。命令送信部２１７は、次の値が格納されていると判断する場合は（Ｓ９０４：ＹＥＳ）、バッファポインタ１２０９の値をＳ９０３でインクリメントした値に書き換える（Ｓ９０５）。命令送信部２１７は、次の値が格納されていないと判断する場合は（Ｓ９０４：ＮＯ）、バッファ読込フラグ１２０７の値を「０」に、バッファポインタ１２０９の値を「−」に書き換える（Ｓ９０６）。Ｓ９０５またはＳ９０６の処理を実行すると、命令送信部２１７は図１２に示す処理を終了する。
【００５３】
（タイミングチャート）
図１３は、命令１０４ａを車載デバイス１０２のセンサ３０５が処理する場合のタイミングチャートである。図１３ではＯＳ２０２が出力する命令１０４ａは、デバイス特定部２１４を経由して到達した命令変換部２１５においてネットワークアドレス１４０４が付加されて命令１０４ｂとなる。命令１０４ｂは、命令送信部２１７において命令識別番号１４０５が付加されて命令１０４ｃとなる。命令１０４ｃはネットワークアドレス１４０４で指定される車載デバイス１０２に送信され、命令仲介部３０６により命令１０４ｄに変換されてセンサ３０５で解釈される。
【００５４】
センサ３０５が出力する処理結果１０５ｄは命令仲介部３０６により処理結果１０５ｃに変換されて車両用制御装置１０１に送信される。車両用制御装置１０１の命令受信部２１６は、受信した処理結果１０５ｃから命令識別番号１４０５を削除して処理結果１０５ｂを作成し、作成した処理結果１０５ｂを命令変換部２１５に送信する。命令変換部２１５は、受信した処理結果１０５ｂからネットワークアドレス１４０４を削除して処理結果１０５ａを作成し、作成した処理結果１０５ａをデバイス特定部２１４を介してＯＳ２０２に出力する。
【００５５】
図１４は、命令１０４ａを車両用制御装置１０１のセンサ２０７が処理する場合のタイミングチャートである。図１４ではＯＳ２０２が出力する命令１０４ａは、デバイス特定部２１４および命令変換部２１５を経由して命令送信部２１７に到達する。命令送信部２１７は命令１０４ａに命令識別番号１４０５を付加して命令１０４ｅを作成し、命令１０４ｅを同じ車両用制御装置１０１に備えられるセンサ２０７に出力する。センサ２０７は受信した命令１０４ｅを解釈して実行して処理結果１０５ｅを生成し、処理結果１０５ｅを命令受信部２１６に出力する。命令受信部２１６は、受信した処理結果１０５ｅから命令識別番号１４０５を削除して処理結果１０５ａを作成し、命令変換部２１５およびデバイス特定部２１４を経由してＯＳ２０２に出力する。
【００５６】
図１５は、命令１０４ａを命令用バッファ２１１を用いて処理する場合のタイミングチャートである。図１５ではＯＳ２０２が出力する命令１０４ａは、デバイス特定部２１４および命令変換部２１５を経由して命令送信部２１７に到達する。命令送信部２１７は命令用バッファ２１１を参照してデータを取得し、命令受信部２１６に取得したデータおよび命令１０４ａを提供する。命令送信部２１７は、受信する命令１０４ａのデータ１４０３を別途受信したデータに書き換えることで処理結果１０５ａを作成する。処理結果１０５ａは、命令変換部２１５およびデバイス特定部２１４を経由してＯＳ２０２に出力される。
【００５７】
上述した実施の形態によれば、次の作用効果が得られる。
（１）車両用制御装置１０１は、通信ネットワーク１０３と通信するネットワークインタフェース２０６を有する。車両用制御装置１０１では、アプリケーション２００やオペレーティングシステム２０１などのソフトウエアが動作する。データ仲介部２０８は、ソフトウエアから受信する命令１０４ａに含まれる情報に基づき、デバイス特定部２１４が命令の転送先である転送先デバイスを特定し、命令変換部２１５が命令１０４ａに少なくとも転送先デバイスの通信ネットワーク１０３における識別子であるネットワークアドレス１４０４を付してネットワークインタフェース２０６に出力する。そのため、アプリケーション２００およびオペレーティングシステム２０１を修正することなく、通信ネットワーク１０３を介して接続された車載デバイス１０２が備えるセンサ３０５に命令１０４ａを処理させることができる。すなわちアプリケーション２００およびオペレーティングシステム２０１からは、あたかも車両用制御装置１０１に該当するセンサ３０５が存在して、処理が行われた場合と同様の効果が得られる。
【００５８】
具体的には、車両用制御装置１０１が備えないセンサに依存した特定のソフトウエアでも、通信ネットワーク１０３に接続されたいずれかの車載デバイス１０２にそのセンサが接続されていれば、高性能ＥＣＵにソフトウエアを統合できる。つまり、特定の古いセンサに依存した古いアプリケーションでも同機能を持つ新しいセンサを利用した制御が可能である。換言すると、新しいセンサに依存した新しいアプリケーションでも古いセンサでも制御することができる。
【００５９】
（２）データ仲介部２０８は、オペレーティングシステム２０１よりも上位の処理権限を有するハイパーバイザ２０２に含まれる。アプリケーション２００だけでなくオペレーティングシステム２０１にも手を加えることなく、簡便に過去の資産を利用できる。
【００６０】
（３）車両用制御装置１０１は、命令１０４ａを実行するデバイスの名称と転送先の前記ネットワークアドレスとの対応を示す仲介情報テーブル２１０ａおよびデバイステーブル２１０ｂが格納される記憶領域２０９をさらに備える。命令１０４ａには、命令を実行するデバイスの名称であるデバイス名１４０１が含まれる。データ仲介部２０８は、記憶領域２０９に格納される仲介情報テーブル２１０ａおよびデバイステーブル２１０ｂを用いてネットワークアドレス１４０４を特定する。そのため、転送先のネットワークアドレス１４０４を簡便に特定できる。
【００６１】
（４）車両用制御装置１０１は、通信ネットワーク１０３を介さずにセンサ２０７と接続される。仲介情報テーブル２１０ａは、転送の要否を示す転送フラグ１２１０、およびバッファ読込の要否を示すバッファ読込フラグ１２０７を含む複数のレコードを有する。記憶領域２０９は、処理結果が一時的に保存される命令用バッファ２１１を有する。データ仲介部２０８は、命令１０４ａに含まれるデバイス名１４０１を用いて仲介情報テーブル２１０ａから１つのレコードを特定し、特定したレコードにおける転送フラグ１２１０の値、およびバッファ読込フラグ１２０７の値に基づき、命令１０４の処理を次の３つのいずれかに決定する。その３つの選択肢とは、命令１０４をネットワークインタフェース２０６に出力する第１の選択肢、命令を車両用制御装置１０１に備えられるセンサ２０７に出力する第２の選択肢、および命令用バッファ２１１から処理結果を読み出す第３の選択肢の３つである。そのためデータ仲介部２０８は、命令１０４ａの処理に、通信ネットワーク１０３を介して接続された車載デバイス１０２が備えるセンサ３０５だけでなく、車両用制御装置１０１に搭載されるセンサ２０７やバッファの値も利用できる。
【００６２】
（５）データ仲介部２０８は、命令１０４ａを出力したプログラムの識別子である命令識別番号１４０５を命令１０４ｂに付してネットワークインタフェース２０６に出力する。データ仲介部２０８は、ネットワークインタフェース２０６から受信する処理結果１０５ｃに含まれる命令識別番号１４０５に基づき、処理結果１０５ｃに含まれるデータ１４０３を送信するプログラムを決定する。そのため、処理結果１０５を命令１０４ａを出力したプログラムに届けることができる。
【００６３】
（変形例１）
データ仲介部２０８は、ハイパーバイザ２０２の代わりにＯＳ２０１に備えられてもよい。
【００６４】
（変形例２）
仲介情報テーブル２１０ａとデバイステーブル２１０ｂとが一体に構成されてもよい。この場合には、両者をあわせたものを、たとえば「仲介情報」と呼ぶこともできる。
【００６５】
（変形例３）
上述した実施の形態では、デバイス特定部２１４は命令１０４ａに含まれるデバイス名１４０１だけを参照して仲介情報テーブル２１０ａのレコードを特定した。しかしデバイス特定部２１４は、デバイス名１４０１とメモリアドレス１４００の組合せにより対象とするレコードを特定してもよい。
【００６６】
上述した各実施の形態および変形例において、機能ブロックの構成は一例に過ぎない。別々の機能ブロックとして示したいくつかの機能構成を一体に構成してもよいし、１つの機能ブロック図で表した構成を２以上の機能に分割してもよい。また各機能ブロックが有する機能の一部を他の機能ブロックが備える構成としてもよい。
【００６７】
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【００６８】
１０１…車両用制御装置
１０２…車載デバイス
１０３…通信ネットワーク
１０４、１０４ａ〜１０４ｄ…命令
１０５、１０５ａ〜１０５ｄ…処理結果
２００…アプリケーション
２０１…オペレーティングシステム
２０２…ハイパーバイザ
２０６…ネットワークインタフェース
２０７…センサ
２０８…データ仲介部
２０９…記憶領域
２１０…仲介情報テーブル
２１１…命令用バッファ
２１４…デバイス特定部
２１５…命令変換部
２１６…命令受信部
２１７…命令送信部
３０５…センサ
３０６…命令仲介部
１２００…デバイス名
１２０３…アドレス変換フラグ
１２０７…バッファ読込フラグ
１２０９…バッファポインタ
１２１０…転送フラグ
１４０１…デバイス名
１４０２…制御名
１４０３…データ
１４０４…ネットワークアドレス
【図１】
2020204935.tif 000003
【図２】
2020204935.tif 000004
【図３】
2020204935.tif 000005
【図４】
2020204935.tif 000006
【図５】
2020204935.tif 000007
【図６】
2020204935.tif 000008
【図７】
2020204935.tif 000009
【図８】
2020204935.tif 000010
【図９】
2020204935.tif 000011
【図１０】
2020204935.tif 000012
【図１１】
2020204935.tif 000013
【図１２】
2020204935.tif 000014
【図１３】
2020204935.tif 000015
【図１４】
2020204935.tif 000016
【図１５】
2020204935.tif 000017