(57)【要約】      （修正有）【課題】車内ネットワーク内の通信負荷を緩和しつつ、車内ネットワークを経由するデータの信頼性を保証する車載制御装置を提供する。【解決手段】車載制御装置１００ａ、１００ｂは、重要なデータは２以上の通信路３０１、３０２を用いて送信し、重要でないデータはいずれか一部の通信路３０１、３０２を用いて送信する。【選択図】図４
2011229006.tif 000002
【特許請求の範囲】
【請求項１】
車内ネットワークを介して通信する車載制御装置であって、
前記車内ネットワーク内の通信路に接続する通信部を２以上備えるとともに、
前記通信部のうち少なくともいずれかを用いて前記車内ネットワークにデータを送信する制御部と、
前記制御部が前記車内ネットワークに送信するデータが重要であるか否かを判定する判定部と、
を備え、
各前記通信部は、それぞれ異なる通信路に接続し、
前記制御部は、
前記判定部が重要であると判定したデータについては２以上の前記通信部を用いてそのデータを前記車内ネットワークに同報し、
前記判定部が重要でないと判定したデータについては２以上の前記通信部のうちいずれか一部を用いてそのデータを前記車内ネットワークに送信する
ことを特徴とする車載制御装置。
【請求項２】
前記制御部が２以上の前記通信部のうちいずれか一部を用いて前記車内ネットワークにデータを送信した後、前記制御部が前記通信部から送信完了通知を所定時間以上待機しているか否かを検出する送信遅延検出部を備え、
前記制御部は、
前記制御部が前記送信完了通知を所定時間以上待機していることを前記送信遅延検出部が検出すると、２以上の前記通信部のうち前記送信完了通知を待機している前記通信部とは異なる通信部を用いて同じデータを再送する
ことを特徴とする請求項１記載の車載制御装置。
【請求項３】
前記判定部は、
前記制御部が前記車内ネットワークから受信するデータが、２以上の通信路を用いて前記車内ネットワークに同報されたものである場合は、そのデータが重要であるものと判定し、
前記制御部は、
前記通信部のうち少なくともいずれかを用いて前記車内ネットワークからデータを受信し、
前記判定部が重要であると判定したデータについては、２以上の通信路を介して前記車内ネットワークから受信したデータが互いに一致する場合に限りそのデータを正常に受信したものとして取り扱う
ことを特徴とする請求項１または２記載の車載制御装置。
【請求項４】
前記制御部は、
前記車内ネットワークに送信するデータの送信タイミングに応じて前記データを分類し、いずれの前記通信部を用いて前記データを送信するかを前記分類毎に割り当てる
ことを特徴とする請求項１から３のいずれか１項に記載の車載制御装置。
【請求項５】
前記制御部は、
緊急性の高いデータについてはその旨を示す情報を当該データに付与した上で前記車内ネットワークに送信する
ことを特徴とする請求項１から４のいずれか１項に記載の車載制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載制御装置に関するものである。
【背景技術】
【０００２】
近年、自動車の高機能化にともない、自動車を制御するために多くの情報を用いて高度な制御を行うことが要求されるようになってきている。例えばエンジン制御の場合、クランク角センサ信号などの複数の入力信号に基づき、燃料の量、噴射タイミングなどを制御する。エンジン制御装置は、トランスミッション、ブレーキなどの制御をつかさどる各制御装置と車内ネットワークを介して接続され、互いに制御データをやり取りしながら他の制御装置と協調して動作することにより、エンジン制御を実現している。
【０００３】
制御内容が高度化するにつれ、車内ネットワークを経由するデータ量は増加している。自動車制御では、制御遅れの許容範囲を厳守するリアルタイム制御を行う必要があり、したがって車内ネットワークを経由するデータの送信遅延についても同様に許容範囲がある。データ送信が遅延する原因として、車内ネットワークの通信負荷が高くなることが挙げられる。
【０００４】
下記特許文献１では、通信路を２重化して双方の通信路にデータを送信しておき、いずれか一方の通信路に異常や遅れが生じても、もう一方の通信路を介してデータを送信先に届けることができるようにしている。これにより、通信時間やデータの信頼性を保証することを図っている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１５９４８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１に記載の技術では、２重化した通信路の双方からデータを送信しているため、メッセージ数が増大したりメッセージ負荷が上がったりした場合には、いずれの通信路も通信負荷が上がってしまう。
【０００７】
本発明は、上記のような課題を解決するためになされたものであり、車内ネットワーク内の通信負荷を緩和しつつ、車内ネットワークを経由するデータの信頼性を保証する車載制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る車載制御装置は、重要なデータは２以上の通信路を用いて送信し、重要でないデータはいずれか一部の通信路を用いて送信する。
【発明の効果】
【０００９】
本発明に係る車載制御装置によれば、重要でないデータについてはいずれか一部の通信路を用いて送信するので、車内ネットワークの通信負荷を緩和することができる。また重要なデータについては２以上の通信路を用いて送信するので、データの信頼性を保証することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係る車載制御システム１０００の構成図である。
【図２】ＲＡＭ１４０が格納するデータの構成とデータ例を示す図である。
【図３】定常状態において車載制御装置１００ａから車載制御装置１００ｂにデータを送信する際のメッセージの流れを示す図である。
【図４】緊急状態において車載制御装置１００ａから車載制御装置１００ｂにデータを送信する際のメッセージの流れを示す図である。
【図５】通信路Ａ３０１と通信路Ｂ３０２の双方を用いて車載制御装置１００ａから車載制御装置１００ｂにデータを送信する際のメッセージの流れを示す図である。
【図６】通信ミドルウェア１３３がデータを送信するときの動作フローを示す。
【図７】通信ミドルウェア１３３がデータを受信するときの動作フローを示す。
【図８】ステップＳ６０１の詳細フローを示す。
【発明を実施するための形態】
【００１１】
＜実施の形態１＞
図１は、本発明の実施の形態１に係る車載制御システム１０００の構成図である。車載制御システム１０００は、車載制御装置１００ａおよび１００ｂ、通信路Ａ３０１、通信路Ｂ３０２を有する。車載制御装置１００ａおよび１００ｂは、通信路Ａ３０１と通信路Ｂ３０２で構成された２重通信路からなる車内ネットワークを介して接続されている。
【００１２】
本実施形態１では、車内ネットワークで広く用いられているＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を用いて各車載制御装置が通信する例を説明する。車載制御装置１００ａおよび１００ｂは同様の構成を有するため、以下では車載制御装置１００ａについて主に説明する。車載制御装置１００ａおよび１００ｂを総称するときは、車載制御装置１００と呼ぶ。両者を区別するときは、各車載制御装置およびその構成要素にアルファベットの添字を付与する。
【００１３】
なお、図１では２つの車載制御装置１００ａおよび１００ｂを示したが、車載制御装置の個数は任意でよい。
【００１４】
車載制御装置１００は、他の車載制御装置（車載制御装置２００など）と通信しながら車両の制御演算を実行する装置である。車載制御装置１００は、第１通信コントローラ１１１、第２通信コントローラ１１２、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１２０、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１４０を備える。
【００１５】
第１通信コントローラ１１１は通信路Ａ３０１に接続され、通信路Ａ３０１との間で通信データを送受信する。第２通信コントローラ１１２は通信路Ｂ３０２に接続され、通信路Ｂ３０２との間で通信データを送受信する。本実施形態１では、各通信コントローラはＣＡＮを用いて各通信路との間でデータを送受信する。
【００１６】
ＣＰＵ１２０は、メモリ１３０が格納している各プログラムを実行して車載制御装置１００の動作を制御する。以下の説明では、記載の都合上、各プログラムを動作主体として説明する場合があるが、実際に各プログラムを実行するのはＣＰＵ１２０であることを付言しておく。
【００１７】
ＲＯＭ１３０は、第１通信ドライバ１３１、第２通信ドライバ１３２、通信ミドルウェア１３３、アプリケーションプログラム１３４を格納する記憶装置である。
【００１８】
第１通信ドライバ１３１と第２通信ドライバ１３２は、それぞれ第１通信コントローラ１１１の動作と第２通信コントローラ１１２の動作を制御するためのデバイスドライバプログラムである。通信ミドルウェア１３３は、ＣＡＮプロトコル固有の処理などを実装し、アプリケーションプログラム１３４と各通信ドライバの間を仲介するプログラムである。アプリケーションプログラム１３４は、車載制御装置１００が実行する制御動作を実装したプログラムである。
【００１９】
ＲＡＭ１４０は、アプリケーションプログラム１３４が動作上用いるデータを格納する記憶装置である。ＲＡＭ１４０が格納するデータについては、後述の図２で改めて説明する。
【００２０】
本実施形態１における「通信部」は、各通信コントローラが相当する。「制御部」「判定部」「送信遅延検出部」は、ＣＰＵ１２０および各プログラムが相当する。
【００２１】
通信路Ａ３０１は、定常状態において各車載制御装置がデータを送受信するための通信路である。通信路Ｂ３０２は、定常状態では用いられない。通信路Ｂ３０２は、通信路Ａ３０１の通信負荷が高くデータを送信することができない場合に、通信路Ａ３０１の代替経路として用いられる。詳細は後述の図４〜図５で改めて説明する。
【００２２】
図１では、通信路、通信コントローラ、通信ドライバをそれぞれ２つずつ設けた例を示したが、これらの組を３つ以上設けてもよい。
【００２３】
図１において、通信ミドルウェア１３３は、データを送受信するとき、送信用バッファや受信用バッファにデータを一次的に保持することなく、即座に各通信ドライバおよびアプリケーションプログラム１３４との間でデータを授受するものとする。そのため、通信バッファは記載していない。ただし、後述する２重通信用受信バッファ１４３は除く。
【００２４】
図２は、ＲＡＭ１４０が格納するデータの構成とデータ例を示す図である。ＲＡＭ１４０は、メッセージ属性表１４１、メッセージ緊急度表１４２、２重通信用受信バッファ１４３、タイムスタンプバッファ１４４を格納する。各表およびバッファは、ＲＡＭ１４０内に各表およびバッファの値を保持するデータファイル等を格納することにより、構成することができる。
【００２５】
メッセージ属性表１４１は、車内ネットワーク内で送受信されるデータの属性を記述したテーブルであり、メッセージ種別列１４１１、許容待ち時間列１４１２、２重通信要否列１４１３を有する。
【００２６】
メッセージ種別列１４１１の値は、車内ネットワーク内で送受信されるデータが記述するメッセージの種別を示す。例えば、「１０」は燃料噴射を指示するメッセージ、「２０」はセンサ検出値を通知するメッセージ、などのメッセージ種別がこれに相当する。これらの値とメッセージ種別の対応関係は、通信プロトコル上などであらかじめ規定されているものとする。
【００２７】
許容待ち時間列１４１２の値は、メッセージ種別列１４１１の値で識別されるメッセージを通信路に送信してから送信完了するまで通信ミドルウェア１３３が待機することができる許容時間の上限値を示す。通信ミドルウェア１３３は、本列の値を超えて送信完了まで待機させられた場合は、他の通信路を用いて同じデータを再送する。詳細は後述する図４で改めて説明する。
【００２８】
２重通信要否列１４１３の値は、メッセージ種別列１４１１の値で識別されるメッセージを通信路Ａ３０１と通信路Ｂ３０２の双方に送信する必要があるか否かを示す。すなわち本列の値は、メッセージ種別列１４１１の値で識別されるメッセージが重要メッセージであるか否かを示す。本実施形態１では、重要メッセージについては通信路Ａ３０１と通信路Ｂ３０２の双方を用いて送信するものとして取り扱うので、通信ミドルウェア１３３は本列の値に基づき２重送信の要否を判定する。
【００２９】
メッセージ緊急度表１４２は、通信ミドルウェア１３３が車内ネットワークに送信したメッセージの送信完了を待機している状態を保持するテーブルであり、メッセージ種別列１４２１、チェック要否列１４２２、残り待ち時間列１４２３を有する。
【００３０】
メッセージ種別列１４２１の値は、車内ネットワーク内で送受信されるデータが記述するメッセージの種別を示す。本列の値は、メッセージ属性表１４１のメッセージ種別列１４１１に対応する。
【００３１】
チェック要否列１４２２の値は、通信ミドルウェア１３３が残り待ち時間列１４２３の値をチェックする（図８：緊急度チェック）必要があるか否かを示す。
【００３２】
残り待ち時間列１４２３の値は、通信ミドルウェア１３３が車内ネットワークに送信したメッセージの送信完了を待機することができる許容時間の残りを示す。残り待ち時間列１４２３の値は、通信ミドルウェア１３３が例えば１通信サイクル毎に減算するようにしてもよいし、通信コントローラが通信処理を行う毎に自ら減算するようにしてもよい。以下では通信ミドルウェア１３３が減算するものとして説明する。
【００３３】
２重通信用受信バッファ１４３は、通信路Ａ３０１と通信路Ｂ３０２それぞれから受信したメッセージを一時的に保持しておくためのバッファであり、メッセージ種別列１４３１、通信路列１４３２、受信データ列１４３３を有する。
【００３４】
メッセージ種別列１４３１の値は、車内ネットワーク内で送受信されるデータが記述するメッセージの種別を示す。本列の値は、メッセージ属性表１４１のメッセージ種別列１４１１に対応する。通信路列１４３２の値は、メッセージ種別列１４１１の値で識別されるメッセージを通信路Ａ３０１と通信路Ｂ３０２のいずれから受信したかを示す。受信データ列１４３３は、メッセージ種別列１４１１の値で識別されるメッセージそのものを保持する。
【００３５】
タイムスタンプバッファ１４４は、後述の図８で説明する緊急度チェックを前回実行した時刻を保持する。
【００３６】
図２に示した各データのうち、内容が変化しない固定的なデータ（例えばメッセージ属性表１４１）については、ＲＯＭ１３０にあらかじめ格納しておくこともできる。
【００３７】
以上、車載制御システム１０００の構成について説明した。次に、車載制御装置１００ａが車載制御装置１００ｂに宛ててデータを送信する際の各部の動作を説明する。
【００３８】
図３は、定常状態において車載制御装置１００ａから車載制御装置１００ｂにデータを送信する際のメッセージの流れを示す図である。ここでは図２に示すメッセージ種別のうち「メッセージ種別＝２０」のデータを送信する例を示す。以下、図３の各ステップについて説明する。
【００３９】
（図３：ステップＳ３０１）
アプリケーションプログラム１３４ａは、車載制御装置１００ｂに宛てて送信するデータを通信ミドルウェア１３３ａに引き渡す。メッセージ種別には「２０」を指定する。
【００４０】
（図３：ステップＳ３０２）
通信ミドルウェア１３３ａは、メッセージ種別「２０」をキーにしてメッセージ属性表１４１ａを照会する。該当する２重通信要否列１４１３ａの値は「ＮＯ」であるため、通信ミドルウェア１３３ａは、通信路Ａ３０１のみを用いてデータを送信する。通信ミドルウェア１３３ａは、メッセージ緊急度表１４２ａのうちメッセージ種別列１４２１ａの値が「２０」であるデータ行の残り待ち時間列１４２３ａに、許容待ち時間列１４１２ａの値「２０」をセットする。またチェック要否列１４２２ａに「ＹＥＳ」をセットする。通信ミドルウェア１３３ａは、第１通信ドライバ１３１ａにデータを引き渡す。
【００４１】
（図３：ステップＳ３０２：補足）
通信ミドルウェア１３３ａは、残り待ち時間列１４２３ａの値を、例えば１通信サイクル毎または送信処理を行う毎に減算する。本図は定常状態のメッセージフローであるため、残り待ち時間列１４２３ａの値が０になる前に、第１通信ドライバ１３１ａがデータを送信完了することを想定している。
【００４２】
（図３：ステップＳ３０３）
第１通信ドライバ１３１ａは、第１通信コントローラ１１１ａを用いて、通信路Ａ３０１にデータを送信する。第１通信コントローラ１１１ａは、送信を完了すると、第１通信ドライバ１３１ａを介して通信ミドルウェア１３３ａにその旨を通知する。通信ミドルウェア１３３ａは、第１通信ドライバ１３１ａから、通信路Ａ３０１にデータを送信完了した旨の通知を受け取ると、メッセージ種別列１４２１ａの値が「２０」であるデータ行の残り待ち時間列１４２３ａを初期化するとともに、チェック要否列１４２２ａに「ＮＯ」をセットする。
【００４３】
（図３：ステップＳ３０４〜Ｓ３０５）
車載制御装置１００ｂの第１通信ドライバ１３１ｂは、車載制御装置１００ａが送信したデータを受信し、通信ミドルウェア１３３ｂに引き渡す。
【００４４】
（図３：ステップＳ３０６）
車載制御装置１００ｂの通信ミドルウェア１３３ｂは、メッセージ種別「２０」をキーにしてメッセージ属性表１４１ｂを照会する。該当する２重通信要否列１４１３ｂの値は「ＮＯ」であるため、通信ミドルウェア１３３ｂは、通信路Ｂ３０２からのデータ受信を待機せずに、受信したデータをアプリケーションプログラム１３４ｂへ引き渡す。
【００４５】
図４は、緊急状態において車載制御装置１００ａから車載制御装置１００ｂにデータを送信する際のメッセージの流れを示す図である。緊急状態とは、残り待ち時間列１４２３の値が０になった状態、すなわち当該データを即座に送信完了しなければならない状態のことをいう。ここでは図３と同様に「メッセージ種別＝２０」のデータを送信する例を示す。以下、図４の各ステップについて説明する。
【００４６】
（図４：ステップＳ４０１〜Ｓ４０２）
これらのステップは、図３のステップＳ３０１〜Ｓ３０２と同様である。
【００４７】
（図４：ステップＳ４０３）
第１通信ドライバ１３１ａは、通信路Ａ３０１にデータを送信することを試みる。ここでは通信路Ａ３０１の通信負荷が高く、送信を完了することができないものとする。通信ミドルウェア１３３ａは、残り待ち時間列１４２３の値が０になった時点で、第１通信ドライバ１３１ａに依頼した送信要求をキャンセルし、第２通信ドライバ１３２ａにデータを引き渡す。通信ミドルウェア１３３ａは、メッセージ種別列１４２１ａの値が「２０」であるデータ行の残り待ち時間列１４２３ａを初期化するとともに、チェック要否列１４２２ａに「ＮＯ」をセットする。
【００４８】
（図４：ステップＳ４０４）
第２通信ドライバ１３２ａは、通信路Ｂ３０２にデータを送信する。通信路Ｂ３０２は定常状態では用いられない通信路であるため、第２通信ドライバ１３２ａが送信完了することができるか否かをチェックする必要はない。そのため通信ミドルウェア１３３ａは、通信路Ｂ３０２を用いてデータを送信する場合は、チェック要否列１４２２の値および残り待ち時間列１４２３の値をセットしない。
【００４９】
（図４：ステップＳ４０５〜Ｓ４０７）
これらのステップは、第２通信ドライバ１３２ｂが通信路Ｂ３０２からデータを受信する点を除いて、図３のステップＳ３０４〜Ｓ３０６と同様である。
【００５０】
図５は、通信路Ａ３０１と通信路Ｂ３０２の双方を用いて車載制御装置１００ａから車載制御装置１００ｂにデータを送信する際のメッセージの流れを示す図である。ここでは図２に示すメッセージ種別のうち「メッセージ種別＝１０」のデータを送信する例を示す。以下、図５の各ステップについて説明する。
【００５１】
（図５：ステップＳ５０１）
アプリケーションプログラム１３４ａは、車載制御装置１００ｂに宛てて送信するデータを通信ミドルウェア１３３ａに引き渡す。メッセージ種別には「１０」を指定する。
【００５２】
（図５：ステップＳ５０２〜Ｓ５０３）
通信ミドルウェア１３３ａは、メッセージ種別「１０」をキーにしてメッセージ属性表１４１ａを照会する。該当する２重通信要否列１４１３ａの値は「ＹＥＳ」であるため、通信ミドルウェア１３３ａは、通信路Ａ３０１と通信路Ｂ３０２の双方を用いてデータを送信する。通信ミドルウェア１３３ａは、第１通信ドライバ１３１ａと第２通信ドライバ１３２ａにデータを引き渡す。２つの通信路を用いてデータを送信する場合、通信ミドルウェア１３３ａは、各通信ドライバがデータを送信完了することができるか否かをチェックしない。そのため通信ミドルウェア１３３ａは、チェック要否列１４２２の値および残り待ち時間列１４２３の値をセットしない。
【００５３】
（図５：ステップＳ５０４〜Ｓ５０５）
ここでは、通信路Ａ３０１の通信負荷が高く、即座にデータを送出することができない情況を想定する。そのため第１通信ドライバ１３１ａよりも先に、第２通信ドライバ１３２ａがデータの送信を開始する。ステップＳ５０４〜Ｓ５０５は、図４のステップＳ４０４〜Ｓ４０５と同様である。
【００５４】
（図５：ステップＳ５０６）
車載制御装置１００ｂの通信ミドルウェア１３３ｂは、メッセージ種別「１０」をキーにしてメッセージ属性表１４１ｂを照会する。該当する２重通信要否列１４１３ｂの値は「ＹＥＳ」であるため、通信ミドルウェア１３３ｂは、通信路Ｂ３０２から受信したデータを、２重通信用受信バッファ１４３ｂ内の該当する受信データ列１４３３ｂに反映する。ここでは通信路Ｂ３０２から受信したデータを反映するため、本ステップ後、２重通信用受信バッファ１４３ｂは図５（ｂ）に示す状態になる。
【００５５】
（図５：ステップＳ５０６：補足）
本ステップの時点では、通信路Ａ３０１に対応する受信データ列１４３３ｂの値「０ｘ００」と、通信路Ｂ３０２に対応する受信データ列１４３３ｂの値「０ｘ２２」とが一致しない。そのため通信ミドルウェア１３３ｂは、受信したデータをアプリケーションプログラム１３４ｂに引き渡さずに留めておく。
【００５６】
（図５：ステップＳ５０７〜Ｓ５０８）
本ステップの時点で、通信路Ａ３０１の通信負荷が下がり、第１通信ドライバ１３１ａがデータの送信を開始したものとする。ステップＳ５０７〜Ｓ５０８は、図３のステップＳ３０３〜Ｓ３０４と同様である。
【００５７】
（図５：ステップＳ５０９）
通信ミドルウェア１３３ｂは、メッセージ種別「１０」をキーにしてメッセージ属性表１４１ｂを照会する。該当する２重通信要否列１４１３ｂの値は「ＹＥＳ」であるため、通信ミドルウェア１３３ｂは、通信路Ｂ３０２から受信したデータを、２重通信用受信バッファ１４３ｂ内の該当する受信データ列１４３３ｂに反映する。ここでは通信路Ａ３０１から受信したデータを反映するため、本ステップ後、２重通信用受信バッファ１４３は図５（ｃ）に示す状態になる。
【００５８】
（図５：ステップＳ５１０）
通信ミドルウェア１３３ｂは、通信路Ａ３０１に対応する受信データ列１４３３ｂの値「０ｘ２２」と、通信路Ｂ３０２に対応する受信データ列１４３３ｂの値「０ｘ２２」とが一致したことを確認する。通信ミドルウェア１３３ｂは、受信したデータをアプリケーションプログラム１３４ｂに引き渡す。
【００５９】
図６は、通信ミドルウェア１３３がデータを送信するときの動作フローを示す。以下、図６の各ステップについて説明する。
【００６０】
（図６：ステップＳ６００）
アプリケーションプログラム１３４は、メッセージ種別を指定して、送信すべきデータを通信ミドルウェア１３３に引き渡す。通信ミドルウェア１３３は、アプリケーションプログラム１３４からデータ送信要求を受け取ると、本動作フローを開始する。
【００６１】
（図６：ステップＳ６０１）
通信ミドルウェア１３３は、残り待ち時間列１４２３の値が０になっているデータがあるか否かをチェックする（緊急度チェック）。本ステップの詳細は後述の図８で改めて説明する。
【００６２】
（図６：ステップＳ６０２）
通信ミドルウェア１３３は、メッセージ種別の値をキーにしてメッセージ属性表１４１を照会し、当該データを通信路Ａ３０１と通信路Ｂ３０２の双方を用いて送信する必要があるか否かを確認する。２重送信する必要がある場合はステップＳ６０６へ進み、２重送信する必要がない場合はステップＳ６０３へ進む。
【００６３】
（図６：ステップＳ６０３）
通信ミドルウェア１３３は、第１通信ドライバ１３１に対し、データを通信路Ａ３０１へ送信するよう要求する。以後通信ミドルウェア１３３は、第１通信ドライバ１３１が通信路Ａ３０１にデータを送信完了するのを待機する。
【００６４】
（図６：ステップＳ６０４〜Ｓ６０５）
通信ミドルウェア１３３は、メッセージ緊急度表１４２のチェック要否列１４２２のうち、当該データのメッセージ種別に該当する値を「ＹＥＳ」にセットする。また、残り待ち時間列１４２３のうち当該データのメッセージ種別に該当する値に、メッセージ属性表１４１の許容待ち時間１４１２のうち当該データのメッセージ種別に該当する値をセットする。
【００６５】
（図６：ステップＳ６０６〜Ｓ６０７）
通信ミドルウェア１３３は、第１通信ドライバ１３１に対し、データを通信路Ａ３０１へ送信するよう要求するとともに、第２通信ドライバ１３２に対し、データを通信路Ｂ３０２へ送信するよう要求する。
【００６６】
（図６：ステップＳ６０６〜Ｓ６０７：補足）
図５のステップＳ５０２〜Ｓ５０３で説明したように、データを２重送信する場合は、メッセージ緊急度表１４２を更新する必要はない。
【００６７】
図７は、通信ミドルウェア１３３がデータを受信するときの動作フローを示す。以下、図７の各ステップについて説明する。
【００６８】
（図７：ステップＳ７００）
通信ミドルウェア１３３は、第１通信ドライバ１３１または第２通信ドライバ１３２からデータを受け取ると、本動作フローを開始する。
【００６９】
（図７：ステップＳ７０１）
通信ミドルウェア１３３は、メッセージ種別の値をキーにしてメッセージ属性表１４１を照会し、当該データが通信路Ａ３０１と通信路Ｂ３０２の双方を用いて送信されたものであるか否かを確認する。２重送信されたものである場合はステップＳ７０３へ進み、２重送信されたものでない場合はステップＳ７０２へ進む。
【００７０】
（図７：ステップＳ７０２）
通信ミドルウェア１３３は、受信したデータをアプリケーションプログラム１３４に引き渡す。
【００７１】
（図７：ステップＳ７０３）
通信ミドルウェア１３３は、受信した通信路に対応する２重通信用受信バッファ１４３の受信データ列１４３３に、受信したデータを反映する。
【００７２】
（図７：ステップＳ７０４）
通信ミドルウェア１３３は、ステップＳ７０３で２重通信用受信バッファ１４３の受信データ列１４３３に反映した受信データが、もう一方の通信路の受信データ列１４３３と一致するか否かを判定する。一致する場合はステップＳ７０５へ進み、一致しない場合は本動作フローを終了して以後の受信を待つ。
【００７３】
（図７：ステップＳ７０５）
通信ミドルウェア１３３は、ステップＳ７０３で受信したデータを、アプリケーションプログラム１３４に引き渡す。
【００７４】
図８は、ステップＳ６０１の詳細フローを示す。以下、図８の各ステップについて説明する。
【００７５】
（図８：ステップＳ８０１）
通信ミドルウェア１３３は、プログラム中で確保したローカル変数「ｔｉｍｅ」に、本ステップを実行する時点のタイムスタンプを格納する。
【００７６】
（図８：ステップＳ８０２）
通信ミドルウェア１３３は、プログラム中で確保したローカル変数「ｐｒｅ＿ｔｉｍｅ」に、タイムスタンプバッファ１４４が保持しているタイムスタンプ値を格納する。
【００７７】
（図８：ステップＳ８０３）
通信ミドルウェア１３３は、プログラム中で確保したローカル変数「ｐａｓｔ＿ｔｉｍｅ」に、ローカル変数「ｔｉｍｅ」とローカル変数「ｐｒｅ＿ｔｉｍｅ」の差分を格納する。本ステップは、本動作フローを前回実行してからの経過時間を算出する意義がある。
【００７８】
（図８：ステップＳ８０４）
通信ミドルウェア１３３は、ローカル変数「ｔｉｍｅ」の値を用いて、タイムスタンプバッファ１４４を更新する。本ステップは、タイムスタンプバッファ１４４に、本動作フローを実行する時点の時刻を格納する意義がある。
【００７９】
（図８：ステップＳ８０５）
通信ミドルウェア１３３は、メッセージ緊急度表１４２のチェック要否列１４２２の値が「ＹＥＳ」になっている全てのメッセージ種別について、以下のステップを実行する。
【００８０】
（図８：ステップＳ８０６）
通信ミドルウェア１３３は、メッセージ緊急度表１４２の残り待ち時間列１４２３の値がローカル変数「ｐａｓｔ＿ｔｉｍｅ」より大きいか否かをチェックする。本ステップは許容待ち時間に到達するまで通信ミドルウェア１３３が待機したか否かをチェックする意義がある。残り待ち時間列１４２３の値が「ｐａｓｔ＿ｔｉｍｅ」より大きい場合はステップＳ８０７へ進み、それ以外であればステップＳ８０８へ進む。
【００８１】
（図８：ステップＳ８０７）
通信ミドルウェア１３３は、残り待ち時間列１４２３の値から、ローカル変数「ｐａｓｔ＿ｔｉｍｅ」の値を減算し、新たな値をセットする。通信ミドルウェア１３３は、本ステップ完了後は本動作フローを終了する。
【００８２】
（図８：ステップＳ８０８〜Ｓ８０９）
通信ミドルウェア１３３は、第１通信ドライバ１３１に対し、先に依頼したデータ送信要求を取り消すよう要求する。通信ミドルウェア１３３は、第２通信ドライバ１３２に対し、データを通信路Ｂ３０２へ送信するよう要求する。
【００８３】
（図８：ステップＳ８１０〜Ｓ８１１）
通信ミドルウェア１３３は、メッセージ緊急度表１４２のチェック要否列１４２２の値を「ＮＯ」にセットし、残り待ち時間列１４２３の値を初期化する。
【００８４】
（図８：補足）
通信ミドルウェア１３３は、緊急度チェック処理（Ｓ６０１）のほか、各通信ドライバがデータを送信完了したときも、メッセージ緊急度表１４２のチェック要否列１４２２の値を「ＮＯ」にセットする。
【００８５】
以上、車載制御装置１００ａが車載制御装置１００ｂに宛ててデータを送信する際の各部の動作を説明した。
【００８６】
＜実施の形態１：まとめ＞
以上のように、本実施の形態１に係る車載制御装置１００は、２重通信要否列１４１３の値が「ＹＥＳ」になっている重要データについては、通信路Ａ３０１と通信路Ｂ３０２の双方を用いて車内ネットワークに送信する。これにより、いずれかの通信路に障害などが発生したとしても、重要データを送信先へ届けることができる可能性が高まり、車載制御システム１０００の信頼性を上げることができる。
【００８７】
また、本実施の形態１に係る車載制御装置１００は、２重通信要否列１４１３の値が「ＮＯ」になっている重要データについては、通信路Ａ３０１のみを用いて車内ネットワークに送信する。これにより、重要度の高くないデータを２重送信して車内ネットワークの通信負荷を高めてしまうような事態を回避することができる。すなわち、車内ネットワークの通信負荷を抑えつつ、重要データの信頼性を上げることができる。
【００８８】
また、本実施の形態１に係る車載制御装置１００は、通信路Ａ３０１にデータを送信してから送信完了するまで、許容待ち時間列１４１２の値以上に待機した場合は、通信路Ａ３０１を用いた送信をキャンセルし、通信路Ｂ３０２を用いて送信する。これにより、通信路Ａ３０１の通信負荷が高いなどの原因でデータを送信することができないときは、通信路Ｂ３０２を代替通信路として用いることができるので、送信遅延時間を所定範囲内に収めることができる。
【００８９】
また、本実施の形態１に係る車載制御装置１００は、通信路Ａ３０１と通信路Ｂ３０２の双方を用いて送信されたデータを受信したときは、双方の通信路を介して受信したデータが一致した場合のみ、アプリケーションプログラム１３４にそのデータを引き渡す。これにより、２重送信された重要データの信頼性を高めることができる。
【００９０】
＜実施の形態２＞
実施の形態１では、通信路Ａ３０１の混雑状況などに応じて、いずれの通信路を用いてデータを送信するかを使い分ける例を示した。本発明の実施の形態２では、これに代えてデータの用途に合わせて通信路を固定的に割り当てる例を説明する。その他の構成は実施形態１と同様である。
【００９１】
一般に、車内ネットワークの通信負荷が上がる要因となるのは、不定期に発生するイベントによって車内ネットワークに送信されるデータである。不定期に発生するデータのデータ量が多いと、車内ネットワークの通信負荷が上がり、送信遅延を引き起こす可能性があるので、車内ネットワークの通信容量を大き目に設定しておくなどして送信遅延を引き起こさない工夫が必要となる。
【００９２】
これに対し、定期的に車内ネットワークに送信されるデータは、通信負荷に与える影響を予測し易い。そのため、車内ネットワークを流れるデータが定常データのみである方が車載制御システム１０００としては好ましい。
【００９３】
そこで本実施の形態２では、メッセージ種別、特に送信タイミングの観点でデータを分類し、メッセージ種別毎に通信路を固定的に割り当てる。例えば、メッセージ種別の値が「１０」「２０」「３０」のデータについては通信路Ａ３０１を固定的に割り当てるとともに、メッセージ種別の値が「４０」「５０」「６０」のデータについては通信路Ｂ３０２を固定的に割り当てる。
【００９４】
これにより、例えば定常的に送信されるデータについては通信路Ａ３０１を固定的に用いて送信し、常に安定した通信負荷の下で確実にデータを送信先へ届けることができる。また、突発的に発生するデータについては通信路Ｂ３０２を固定的に用いて送信し、通信路Ａ３０１の通信負荷に影響を与えないようにすることができる。
【００９５】
さらには、上記のようにメッセージ種別に応じて固定的に通信路を割り当てた上で、他方の通信路を代替通信路として用いることもできる。例えば定常的に送信されるデータに通信路Ａ３０１を割り当てた場合、通信路Ｂ３０２は定常的に送信されるデータの代替通信路として用いることもできる。突発的に発生するデータについても同様である。
【００９６】
＜実施の形態２：まとめ＞
以上のように、本実施の形態２に係る車載制御装置１００は、メッセージ種別、特に送信タイミングに基づいてデータを分類し、いずれの通信路を用いてデータを送信するかを固定的に割り当てる。これにより、各通信路の通信負荷を予測しやすくなるので、車内ネットワークの安定性を高めることが容易になる。例えば、定常的なデータを送信する通信路については、最大通信負荷は同時に送信されるデータの平均的な通信負荷の総和となることが予測されるので、それに合わせて通信帯域を設定しておけば、安定的にデータを送信することができる。
【００９７】
また、本実施の形態２に係る車載制御装置１００によれば、突発的に発生するデータを送信する通信路については、常時高い通信負荷がかかるわけではないので、通信性能があまり高くない安価なネットワークを採用することができる。これにより、車内ネットワークのコストを下げることができる。
【００９８】
＜実施の形態３＞
以上の実施の形態１〜２において、優先度の低いメッセージ種別のデータは、通信路の通信負荷が高いような場合には、送信を待たされる場合がある。本発明の実施の形態３では、このようなメッセージ種別のデータを緊急に送信する必要がある場合に備え、緊急メッセージ用のメッセージ種別を設ける。
【００９９】
例えば、メッセージ属性表１４１内に、「メッセージ種別１４１１＝００」を新たに定義する。アプリケーションプログラム１３４は、優先度の低いメッセージ種別のデータを緊急に送信する必要がある場合は、そのメッセージ種別に代えて「メッセージ種別＝００」を用いる。通信ミドルウェア１３３は、「メッセージ種別＝００」のデータを他のメッセージ種別に優先して、車内ネットワークに送信する。
【０１００】
通信プロトコルとしてＣＡＮを用いる場合は、メッセージＩＤ、データ長、データを１つの通信データ内に格納する必要がある。もし１つの緊急メッセージの中に全てのメッセージが入らない場合は、同一のメッセージ種別（００）を用いて複数回にメッセージを分割して送信するようにしてもよい。または、複数の緊急メッセージ種別（例えば、「００」と「０１」）をあらかじめ定義しておき、緊急メッセージを複数のメッセージに分割し、それぞれ異なる緊急メッセージ種別を付与して連続的に送信するようにしてもよい。
【０１０１】
＜実施の形態３：まとめ＞
以上のように、本実施の形態３に係る車載制御装置１００では、緊急に送信する必要があるメッセージ種別をあらかじめ定義しておき、優先度の低いメッセージ種別であっても緊急メッセージ種別を付与して即座に車内ネットワークへ送信することができる。
【０１０２】
＜実施の形態４＞
以上の実施形態１〜３では、異なる通信路で同じプロトコル（ＣＡＮ）を用いたが、各通信路で異なるプロトコルを使用してもよい。例えば、以下のような例が考えられる。
【０１０３】
（通信プロトコルの組み合わせ：例１）
通信路Ａ３０１ではＦｌｅｘＲａｙを用い、通信路Ｂ３０２ではＣＡＮを用いる。
【０１０４】
（通信プロトコルの組み合わせ：例２）
通信路Ａ３０１では高速ＣＡＮ（５００Ｋｂｐｓ）を用い、通信路Ｂ３０２では低速のシングルワイヤーＣＡＮを用いる。
【０１０５】
（通信プロトコルの組み合わせ：例３）
通信路Ａ３０１ではＣＡＮを用い、通信路Ｂ３０２ではＦｌｅｘＲａｙを用いる。緊急メッセージについては、固定スロットやダイナミックスロットを割り当てる。
【０１０６】
＜実施の形態５＞
以上の実施の形態１〜４において、通信ミドルウェア１３３は、メッセージ種別の値に基づき当該データが２重送信を要する重要データであるか否かを判定しているが、その他の判定手法を用いることもできる。例えば、データサイズが所定サイズ未満のデータは重要度が小さいと判定する、などの手法が考えられる。
【０１０７】
以上の実施の形態１〜４において、通信ミドルウェア１３３が２重送信の要否などの通信制御を行っている例を説明したが、その他のプログラム、例えばアプリケーションプログラム１３４などが通信制御を行うようにしてもよい。
【符号の説明】
【０１０８】
１００ａおよび１００ｂ：車載制御装置、１１１：第１通信コントローラ、１１２：第２通信コントローラ、１２０：ＣＰＵ、１３０：ＲＯＭ、１３１：第１通信ドライバ、１３２：第２通信ドライバ、１３３：通信ミドルウェア、１３４：アプリケーションプログラム、１４０：ＲＡＭ、１４１：メッセージ属性表、１４１１：メッセージ種別列、１４１２：許容待ち時間列、１４１３：２重通信要否列、１４２：メッセージ緊急度表、１４２１：メッセージ種別列、１４２２：チェック要否列、１４２３：残り待ち時間列、１４３：２重通信用受信バッファ、１４３１：メッセージ種別列、１４３２：通信路列、１４３３：受信データ列、１４４：タイムスタンプバッファ、３０１：通信路Ａ、３０２：通信路Ｂ、１０００：車載制御システム。
【図１】
2011229006.tif 000003
【図２】
2011229006.tif 000004
【図３】
2011229006.tif 000005
【図４】
2011229006.tif 000006
【図５】
2011229006.tif 000007
【図６】
2011229006.tif 000008
【図７】
2011229006.tif 000009
【図８】
2011229006.tif 000010