(57)【要約】【課題】通信データ保護のために必要な演算負荷の増加を抑制【解決手段】ＥＣＵ１１は、データ配列指示値を算出し、データ配列指示値に基づいて、通信フレームに格納される第１〜８データの配列順を示すデータ配列テーブルを更新する。ＥＣＵ１１は、データ配列指示値をＥＣＵ１２へ送信し、データ配列テーブルが示す配列順に基づいて、通信フレームに格納される第１〜８データを配列した通信フレームを作成して送信する。ＥＣＵ１２は、受信したデータ配列指示値に基づいてデータ配列テーブルを更新する。ＥＣＵ１２は、今回受信した通信フレームにおける第１〜８データの値と、前回受信した通信フレームにおける第１〜８データの値との差の絶対値（受信値差）が破棄判定値以上であるものがあるか否かを判断し、受信値差が破棄判定値以上であるものがある場合に、今回受信した通信フレームを破棄する。【選択図】図１
2015201723.tif 000002
【特許請求の範囲】
【請求項１】
車両に搭載され、互いにデータ通信可能に接続された第１電子制御装置（１１）と第２電子制御装置（１２）とを備える通信システム（１）であって、
前記第１電子制御装置は、
前記第１電子制御装置が前記第２電子制御装置へ送信する通信フレームに格納される複数の格納データの配列順を決定するための配列決定用情報を、予め設定された情報決定条件に基づいて決定する情報決定手段（Ｓ３０）と、
前記情報決定手段が決定した前記配列決定用情報に基づいて、前記通信フレームにおける複数の前記格納データの配列順を示す送信用配列順を決定する配列順決定手段（Ｓ６０〜Ｓ９０）と、
前記情報決定手段が決定した前記配列決定用情報を前記第２電子制御装置へ送信する情報送信手段（Ｓ４０〜Ｓ５０）と、
前記配列順決定手段が決定した前記送信用配列順に基づいて、前記通信フレームに格納される複数の格納データを配列した前記通信フレームを作成して送信するフレーム送信手段（Ｓ１１０〜Ｓ１６０）とを備え、
前記第２電子制御装置は、
前記第１電子制御装置から前記配列決定用情報を受信すると、受信した前記配列決定用情報に基づいて、前記第１電子制御装置から受信した前記通信フレームにおける前記送信用配列順を特定する配列順特定手段（Ｓ２３０〜Ｓ２６０）と、
前記第１電子制御装置から今回受信した前記通信フレームにおける複数の前記格納データのうち予め設定された判定用格納データの値と、前記第１電子制御装置から前回受信した前記通信フレームの前記判定用格納データの値との差が大きいことを示す予め設定された破棄判定条件が成立したか否かを判断する破棄判断手段（Ｓ３３０）と、
前記破棄判定条件が成立したと前記破棄判断手段が判断した場合に、前記第１電子制御装置から今回受信した前記通信フレームを破棄する破棄手段（Ｓ３４０）とを備える
ことを特徴とする通信システム。
【請求項２】
前記判定用格納データは、前記車両のエンジン回転数、車速、吸入空気量、アクセル開度、電子スロットル開度、吸気温度、エンジン水温、空燃比およびエンジントルクの何れか１つを示す情報である
ことを特徴とする請求項１に記載の通信システム。
【請求項３】
前記情報決定手段は、
前記情報送信手段が前記配列決定用情報を送信してから、前記フレーム送信手段が前記通信フレームを、複数回となるように予め設定された判定回数以上送信した場合に、新たな前記配列決定用情報を決定する
ことを特徴とする請求項１または請求項２に記載の通信システム。
【請求項４】
前記第１電子制御装置の前記配列順決定手段は、前記配列決定用情報と前記送信用配列順との対応関係を予め設定した対応関係情報に基づいて、前記送信用配列順を決定し、
前記第２電子制御装置の前記配列順特定手段は、前記対応関係情報に基づいて、前記送信用配列順を特定する
ことを特徴とする請求項１〜請求項３の何れか１項に記載の通信システム。
【請求項５】
前記第１電子制御装置の前記配列順決定手段は、前記配列決定用情報を入力変数として入力することにより前記送信用配列順を示す情報を出力する配列算出用関数に基づいて、前記送信用配列順を決定し、
前記第２電子制御装置の前記配列順特定手段は、前記配列算出用関数に基づいて、前記送信用配列順を特定する
ことを特徴とする請求項１〜請求項３の何れか１項に記載の通信システム。
【請求項６】
請求項１〜請求項５の何れか１項に記載の通信システムにおいて、前記第１電子制御装置として使用される電子制御装置であって、
前記第１電子制御装置が前記第２電子制御装置へ送信する通信フレームに格納される複数の格納データの配列順を決定するための配列決定用情報を、予め設定された情報決定条件に基づいて決定する情報決定手段と、
前記情報決定手段が決定した前記配列決定用情報に基づいて、前記通信フレームにおける複数の前記格納データの配列順を示す送信用配列順を決定する配列順決定手段と、
前記情報決定手段が決定した前記配列決定用情報を前記第２電子制御装置へ送信する情報送信手段と、
前記配列順決定手段が決定した前記送信用配列順に基づいて、前記通信フレームに格納される複数の格納データを配列した前記通信フレームを作成して送信するフレーム送信手段とを備える
ことを特徴とする電子制御装置。
【請求項７】
請求項１〜請求項５の何れか１項に記載の通信システムにおいて、前記第２電子制御装置として使用される電子制御装置であって、
前記第１電子制御装置から前記配列決定用情報を受信すると、受信した前記配列決定用情報に基づいて、前記第１電子制御装置から受信した前記通信フレームにおける前記送信用配列順を特定する配列順特定手段と、
前記第１電子制御装置から今回受信した前記通信フレームにおける複数の前記格納データのうち予め設定された判定用格納データの値と、前記第１電子制御装置から前回受信した前記通信フレームの前記判定用格納データの値との差が大きいことを示す予め設定された破棄判定条件が成立したか否かを判断する破棄判断手段と、
前記破棄判定条件が成立したと前記破棄判断手段が判断した場合に、前記第１電子制御装置から今回受信した前記通信フレームを破棄する破棄手段とを備える
ことを特徴とする電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の電子制御装置間でデータを送受信する通信システムおよび電子制御装置に関する。
【背景技術】
【０００２】
従来、車両に搭載された複数の電子制御装置間で送受信されるデータを保護するために、メッセージ認証コードを生成し、通信データとメッセージ認証コードを暗号化して送信する技術が知られている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−４８３７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上記特許文献１に記載の技術では、送受信されるデータの暗号化および復号化と、メッセージ認証コードによる検証を行う必要があるため、電子制御装置における演算負荷が増加してしまうという問題があった。
【０００５】
本発明は、こうした問題に鑑みてなされたものであり、通信データ保護のために必要な演算負荷の増加を抑制することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するためになされた本発明の通信システムは、車両に搭載され、互いにデータ通信可能に接続された第１電子制御装置と第２電子制御装置とを備える。
第１電子制御装置は、情報決定手段と、配列順決定手段と、情報送信手段と、フレーム送信手段とを備える。
【０００７】
情報決定手段は、第１電子制御装置が第２電子制御装置へ送信する通信フレームに格納される複数の格納データの配列順を決定するための配列決定用情報を、予め設定された情報決定条件に基づいて決定する。また配列順決定手段は、情報決定手段が決定した配列決定用情報に基づいて、通信フレームにおける複数の格納データの配列順を示す送信用配列順を決定する。そして情報送信手段は、情報決定手段が決定した配列決定用情報を第２電子制御装置へ送信する。またフレーム送信手段は、配列順決定手段が決定した送信用配列順に基づいて、通信フレームに格納される複数の格納データを配列した通信フレームを作成して送信する。
【０００８】
第２電子制御装置は、配列順特定手段と、破棄判断手段と、破棄手段とを備える。
配列順特定手段は、第１電子制御装置から配列決定用情報を受信すると、受信した配列決定用情報に基づいて、第１電子制御装置から受信した通信フレームにおける送信用配列順を特定する。また破棄判断手段は、第１電子制御装置から今回受信した通信フレームにおける複数の格納データのうち予め設定された判定用格納データの値と、第１電子制御装置から前回受信した通信フレームの判定用格納データの値との差が大きいことを示す予め設定された破棄判定条件が成立したか否かを判断する。そして破棄手段は、破棄判定条件が成立したと破棄判断手段が判断した場合に、第１電子制御装置から今回受信した通信フレームを破棄する。
【０００９】
このように構成された本発明の通信システムでは、第１電子制御装置が、複数の格納データを送信用配列順に配列した通信フレームを作成して第２電子制御装置へ送信する。このため、この送信用配列順を特定するための情報を取得していない非正規の装置（以下、非正規装置という）は、第１電子制御装置からの通信フレームを受信しても、上記送信用配列順を特定できず、受信した通信フレームに格納されているデータの内容を識別することが困難となる。
【００１０】
また、第１電子制御装置は配列決定用情報を第２電子制御装置へ送信し、第２電子制御装置は、受信した配列決定用情報に基づいて、送信用配列順を特定する。このため、第２電子制御装置は、第１電子制御装置からの通信フレームを受信すると、特定した上記送信用配列順に基づいて、受信した通信フレームに格納されているデータの内容を識別することができる。
【００１１】
さらに、本発明の通信システムでは、上記の非正規装置が第２電子制御装置へ通信フレームを送信しても、非正規装置が送信する通信フレームにおける複数の格納データの配列順と、第２電子制御装置が配列決定用情報に基づいて特定した上記送信用配列順とが異なる可能性が高い。すなわち、第２電子制御装置が非正規装置から通信フレームを受信した場合に、非正規装置から受信した通信フレームにおける判定用格納データの格納位置と、第２電子制御装置が特定した送信用配列順に基づいて特定される判定用格納データの格納位置とが異なる可能性が高い。
【００１２】
そして本発明の通信システムでは、第２電子制御装置が、今回受信した通信フレームと前回受信した通信フレームとで判定用格納データの値の差が大きいか否かを破棄判定条件に基づいて判断する。この判断結果に基づいて、今回受信した通信フレームと前回受信した通信フレームとで判定用格納データの値の差が大きい場合に、第２電子制御装置は、今回受信した通信フレームを破棄する。このため、第２電子制御装置が非正規装置から通信フレームを受信した場合には、上記破棄判定条件が成立し、非正規装置からの通信フレームを破棄する可能性が高くなる。
【００１３】
以上より、本発明の通信システムは、通信フレームに格納されているデータの内容を、送信用配列順を特定するための情報を取得することができる正規の装置に対して識別可能とする一方、非正規装置に対して識別困難とすることができる。さらに本発明の通信システムは、非正規装置からの通信フレームを破棄判定条件に基づいて判断することが可能である。そして、本発明の通信システムは、上記のように第１電子制御装置と第２電子制御装置との間で送受信される通信データを保護するために、通信フレームに格納されているデータを暗号化することなく平文として送信している。このため、本発明の通信システムによれば、通信データ保護のために必要な演算負荷の増加を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】車両用通信システム１の構成を示すブロック図である。
【図２】通信フレームの構造を示す図である。
【図３】送信処理を示すフローチャートである。
【図４】データ配列テーブルの更新方法を説明する図である。
【図５】第１〜８データの処理方法を説明する図である。
【図６】受信処理を示すフローチャートである。
【図７】車両用通信システム１の動作を示す第１のシーケンス図である。
【図８】車両用通信システム１の動作を示す第２のシーケンス図である。
【図９】対応関係テーブルを示す図である。
【発明を実施するための形態】
【００１５】
以下に本発明の実施形態を図面とともに説明する。
車両用通信システム１は、図１に示すように、電子制御装置（Electronic Control Unit）１１，１２，１３（以下、ＥＣＵ１１，１２，１３という）と、外部装置１４とを備える。
【００１６】
ＥＣＵ１１，１２，１３は、車両に搭載され、車両に搭載されている通信線１５を介して互いにデータ通信可能に接続されており、ＣＡＮ（Controller  Area  Network）通信プロトコルに従ってデータの送受信を行う。また通信線１５には、外部装置１４を通信線１５に対して着脱可能とするためのコネクタ１６が設けられている。
【００１７】
ＥＣＵ１１，１２，１３は、ＣＡＮ通信部２１と、制御部２２とを備える。
ＣＡＮ通信部２１は、通信線１５に接続された通信装置との間で、ＣＡＮ通信プロトコルに基づいて通信フレームの送受信を行う。
【００１８】
制御部２２は、ＣＰＵ、ＲＯＭ、ＲＡＭ、Ｉ／Ｏ及びこれらの構成を接続するバスラインなどからなる周知のマイクロコンピュータを中心に構成され、車両を制御するための各種処理を実行する。
【００１９】
なおＥＣＵ１１，１２，１３としては、具体的には、エンジン制御を行うエンジンＥＣＵ、ブレーキ制御を行うブレーキＥＣＵ、ステアリング制御を行うステアリングＥＣＵ、サスペンション制御を行うサスペンションＥＣＵ、ライトのオン／オフを制御するＥＣＵ等、種々の電子制御装置を挙げることができる。
【００２０】
外部装置１４は、ＣＡＮ通信部３１と、制御部３２とを備える。
ＣＡＮ通信部３１は、通信線１５に接続された通信装置との間で、ＣＡＮ通信プロトコルに基づいて通信フレームの送受信を行う。
【００２１】
制御部３２は、ＣＰＵ、ＲＯＭ、ＲＡＭ、Ｉ／Ｏ及びこれらの構成を接続するバスラインなどからなる周知のマイクロコンピュータを中心に構成され、ＥＣＵ１１，１２，１３との間で通信を行うことにより、車両状態の診断等を行うための各種処理を実行する。
【００２２】
また、ＣＡＮ通信部２１，３１によって送受信が行われる通信フレームは、図２に示すように、スタートオブフレーム（ＳＯＦ）、アービトレーションフィールド、コントロールフィールド、データフィールド、ＣＲＣフィールド、ＡＣＫフィールドおよびエンドオブフレーム（ＥＯＦ）により構成されている。なお、アービトレーションフィールドは、１１ビットまたは２９ビットのアイデンティファイア（ＩＤ）と１ビットのＲＴＲビットで構成される。以下、ＩＤが１１ビットである通信フレームを標準通信フレームといい、ＩＤが２９ビットである通信フレームを拡張通信フレームという。
【００２３】
また、ＣＡＮ通信で使用する１１ビットのアイデンティファイア（ＩＤ）をＣＡＮＩＤという。ＣＡＮＩＤは、通信フレームに含まれるデータの内容、通信フレームの送信元、および通信フレームの送信先等に基づいて予め設定されている。そして、ＥＣＵ１１，１２，１３および外部装置１４のそれぞれについて、送信する通信フレームに付与する送信ＣＡＮＩＤと、受信対象となる通信フレームを識別するための受信ＣＡＮＩＤとが予め設定される。
【００２４】
データフィールドは、それぞれ８ビット（すなわち１バイト）の第１データ、第２データ、第３データ、第４データ、第５データ、第６データ、第７データおよび第８データで構成される。
【００２５】
このように構成された車両用通信システム１において、ＥＣＵ１１，１２，１３および外部装置１４は、後述の送信処理と受信処理を実行する。
まず、ＥＣＵ１１，１２，１３および外部装置１４の制御部２２，３２が実行する送信処理の手順を説明する。送信処理は、ＥＣＵ１１，１２，１３および外部装置１４の動作中に繰り返し実行される処理である。以下、ＥＣＵ１１，１２，１３および外部装置１４を代表して、ＥＣＵ１１の送信処理を説明する。
【００２６】
送信処理は、ＥＣＵ１１に設定されている複数の送信ＣＡＮＩＤ毎に設けられている。そして制御部２２は、送信ＣＡＮＩＤ毎に設けられた複数の送信処理をそれぞれ互いに独立に実行する。
【００２７】
この送信処理が実行されると、制御部２２は、図３に示すように、まずＳ１０にて、当該送信処理に対応する送信ＣＡＮＩＤのデータ配列指示値（後述）を前回送信してから、対応する送信ＣＡＮＩＤが付与された通信フレームを予め設定された送信判定回数（本実施形態では例えば４回）以上送信したか否かを判断する。ここで、対応する送信ＣＡＮＩＤが設定された通信フレームを送信判定回数以上送信した場合には（Ｓ１０：ＹＥＳ）、Ｓ３０に移行する。
【００２８】
一方、対応する送信ＣＡＮＩＤが設定された通信フレームを送信判定回数以上送信していない場合には（Ｓ１０：ＮＯ）、Ｓ２０にて、当該送信処理に対応する送信ＣＡＮＩＤのデータ配列指示値を前回送信してから予め設定された送信判定時間（本実施形態では例えば４０ｍｓ）以上経過したか否かを判断する。ここで、送信判定時間以上経過した場合には（Ｓ２０：ＹＥＳ）、Ｓ３０に移行する。
【００２９】
そしてＳ３０に移行すると、データ配列指示値を算出する。具体的には、まず、ＥＣＵ１１，１２，１３の何れか１つが備えているカレンダ付時計（不図示）から、現時点における年月日と時刻を示すカレンダ情報を取得する。そして、データ配列指示値を算出するために予め設定された指示値算出用関数に、取得したカレンダ情報を入力変数として入力することで指示値算出用関数から出力される値を、データ配列指示値とする。
【００３０】
さらにＳ４０にて、データ配列指示値を送信するための通信フレーム（以下、指示値送信用フレームという）を作成する。具体的には、まず、拡張通信フレームのアービトレーションフィールドを構成する２９ビットのＩＤのうち、１１ビットに、当該送信処理に対応する送信ＣＡＮＩＤを格納し、残りのビットにデータ配列指示値を格納する。さらに、データフィールドの第１〜８データに、指示値送信用フレーム用に予め設定された固定値（本実施形態では、例えば０ｘＦＦ）を格納する。これ以外は、通常の通信フレームの作成と同様である。
【００３１】
そしてＳ５０にて、Ｓ４０で作成した指示値送信用フレームをＣＡＮ通信部２１から送信する。
その後Ｓ６０にて、データフィールドを構成する第１〜８データの何れか１つを指示するためのデータ指示値ｉを１に設定する。なお、データ指示値ｉが１，２，３，４，５，６，７，８である場合にはそれぞれ、第１，２，３，４，５，６，７，８データを指示しているとする。
【００３２】
さらにＳ７０にて、データフィールドを構成する第１〜８データのうちデータ指示値ｉで指示されるデータ（以下、第ｉデータという）について、当該送信処理に対応する送信ＣＡＮＩＤのデータ配列テーブルを更新する。
【００３３】
データ配列テーブルは、制御部２２のＲＡＭ内に、送信ＣＡＮＩＤ毎および受信ＣＡＮＩＤ毎に設けられる。そして、データ配列テーブルには、第１〜８データのそれぞれについて、互いに異なる１〜８までの値が設定される。なおデータ配列テーブルには、初期値として、第ｉデータに対してｉが設定されている（ｉ＝１，２，３，・・・，８）。
【００３４】
Ｓ７０では、具体的には、まず、第１〜８データのデータ配列を算出するために予め設定されたデータ配列算出用関数に、当該送信処理に対応する送信ＣＡＮＩＤと、Ｓ３０で算出されたデータ配列指示値と、データ指示値ｉとを入力変数として入力する。そして、データ配列算出用関数から出力される値を、第ｉデータの配列順として、データ配列テーブルを更新する。すなわち、データ配列指示値をＮａ、データ配列算出用関数をＦ、第ｉデータの配列順をｋ（ｋ＝１，２，３，・・・，８）と表記すると、下式（１）に示す関係が成り立つ。
【００３５】
ｋ  ＝  Ｆ（ＣＡＮＩＤ，Ｎａ，ｉ）  ・・・（１）
本実施形態では、データ配列算出用関数はハッシュ関数であり、１〜８のデータ指示値ｉの入力に対して、１〜８のうちで互いに異なる値を出力するように予め設定されている。
【００３６】
例えば、図４に示すように、データ配列テーブルには、初期値として、第１，２，３，４，５，６，７，８データに対してそれぞれ、１，２，３，４，５，６，７，８の配列順が設定されている（テーブルＴＢ０を参照）。次に、データ配列指示値としてＤ１が算出されると、データ配列テーブルには、第１，２，３，４，５，６，７，８データに対してそれぞれ、４，１，２，６，３，８，５，７の配列順が設定される（テーブルＴＢ１を参照）。さらに、データ配列指示値としてＤ２が算出されると、データ配列テーブルには、第１，２，３，４，５，６，７，８データに対してそれぞれ、３，７，８，２，６，１，４，５の配列順が設定される（テーブルＴＢ２を参照）。
【００３７】
そして、Ｓ７０の処理が終了すると、図３に示すように、Ｓ８０にて、データ指示値ｉをインクリメント（１加算）し、Ｓ９０にて、データ指示値ｉがデータフィールドのデータ総数（本実施形態では８）を超えているか否かを判断する。ここで、データ指示値ｉがデータフィールドのデータ総数以下である場合には（Ｓ９０：ＮＯ）、Ｓ７０に移行して、上述の処理を繰り返す。一方、データ指示値ｉがデータフィールドのデータ総数を超えている場合には（Ｓ９０：ＹＥＳ）、送信処理を一旦終了する。
【００３８】
またＳ２０にて、送信判定時間以上経過していない場合には（Ｓ２０：ＮＯ）、Ｓ１００にて、当該送信処理に対応する送信ＣＡＮＩＤを付与した通信フレームを送信するために予め設定されたフレーム送信条件が成立したか否かを判断する。このフレーム送信条件は、例えば、対応する送信ＣＡＮＩＤが付与された通信フレームを前回送信してから予め設定されたフレーム送信周期が経過することである。ここで、フレーム送信条件が成立していない場合には（Ｓ１００：ＮＯ）、送信処理を一旦終了する。
【００３９】
一方、フレーム送信条件が成立した場合には（Ｓ１００：ＹＥＳ）、Ｓ１１０にて、データ指示値ｉを１に設定する。さらにＳ１２０にて、第ｉデータについて通信フレーム内での配列順を設定する。具体的には、まず、対応する送信ＣＡＮＩＤのデータ配列テーブルを参照して、第ｉデータの配列順ｋを特定する。そして、対応する送信ＣＡＮＩＤが付与された通信フレームの第ｉデータとするためのデータが格納されている第ｉ送信データ格納領域からデータを抽出し、抽出したデータを第ｋ送信フレーム格納領域に格納する。なお、第ｉ送信データ格納領域（ｉ＝１，２，３，・・・，８）および第ｋ送信フレーム格納領域（ｋ＝１，２，３，・・・，８）は、制御部２２のＲＡＭに設けられている。
【００４０】
例えば、図４のデータ配列テーブルＴＢ１に示すように、第１，２，３，４，５，６，７，８データに対してそれぞれ、４，１，２，６，３，８，５，７の配列順が設定されているとする。この場合には、図５に示すように、第１，２，３，４，５，６，７，８送信データ格納領域に格納されているデータがそれぞれ、第４，１，２，６，３，８，５，７送信フレーム格納領域に格納される。
【００４１】
なお、データフィールドの第１，２，３，４，５，６，７，８データのうち少なくとも１つは、エンジン回転数、車速、吸入空気量、アクセル開度、電子スロットル開度、吸気温度、エンジン水温、空燃比およびエンジントルクのように、短期間（例えば、上記フレーム送信周期）で急激に値が大きく変化しない情報を含む。
【００４２】
そして、Ｓ１２０の処理が終了すると、図３に示すように、Ｓ１３０にて、データ指示値ｉをインクリメントし、Ｓ１４０にて、データ指示値ｉがデータフィールドのデータ総数（本実施形態では８）を超えているか否かを判断する。ここで、データ指示値ｉがデータフィールドのデータ総数以下である場合には（Ｓ１４０：ＮＯ）、Ｓ１２０に移行して、上述の処理を繰り返す。一方、データ指示値ｉがデータフィールドのデータ総数を超えている場合には（Ｓ１４０：ＹＥＳ）、Ｓ１５０にて、通信フレームを作成する。具体的には、まず、標準通信フレームのアービトレーションフィールドを構成する１１ビットに、当該送信処理に対応する送信ＣＡＮＩＤを格納する。さらに、データフィールドの第１，２，３，４，５，６，７，８データにそれぞれ、第１，２，３，４，５，６，７，８送信フレーム格納領域に格納されているデータを格納する（図５を参照）。これ以外は、通常の通信フレームの作成と同様である。
【００４３】
その後Ｓ１６０にて、Ｓ１５０で作成した通信フレームをＣＡＮ通信部２１から送信し、送信処理を一旦終了する。
次に、ＥＣＵ１１，１２，１３および外部装置１４の制御部２２，３２が実行する受信処理の手順を説明する。受信処理は、ＥＣＵ１１，１２，１３および外部装置１４の動作中に繰り返し実行される処理である。以下、ＥＣＵ１１，１２，１３および外部装置１４を代表して、ＥＣＵ１１の受信処理を説明する。
【００４４】
受信処理は、ＥＣＵ１１に設定されている複数の受信ＣＡＮＩＤ毎に設けられている。そして制御部２２は、受信ＣＡＮＩＤ毎に設けられた複数の受信処理をそれぞれ互いに独立に実行する。
【００４５】
この受信処理が実行されると、制御部２２は、図６に示すように、まずＳ２１０にて、当該受信処理に対応する受信ＣＡＮＩＤが付与された通信フレームを受信したか否かを判断する。ここで、通信フレームを受信していない場合には（Ｓ２１０：ＮＯ）、受信処理を一旦終了する。一方、通信フレームを受信した場合には（Ｓ２１０：ＹＥＳ）、Ｓ２２０にて、受信した通信フレームのアービトレーションフィールドにデータ配列指示値が格納されているか否かを判断する。
【００４６】
ここで、データ配列指示値が格納されている場合には（Ｓ２２０：ＹＥＳ）、Ｓ２３０にて、データ指示値ｉを１に設定する。さらにＳ２４０にて、データフィールドを構成する第ｉデータについて、当該受信処理に対応する受信ＣＡＮＩＤのデータ配列テーブルを更新する。具体的には、まず、上記のデータ配列算出用関数に、当該受信処理に対応する受信ＣＡＮＩＤと、受信した通信フレームのアービトレーションフィールドに格納されていたデータ配列指示値と、データ指示値ｉとを入力変数として入力する。そして、データ配列算出用関数から出力される値を、第ｉデータの配列順として、データ配列テーブルを更新する。
【００４７】
そして、Ｓ２４０の処理が終了すると、Ｓ２５０にて、データ指示値ｉをインクリメントし、Ｓ２６０にて、データ指示値ｉがデータフィールドのデータ総数（本実施形態では８）を超えているか否かを判断する。ここで、データ指示値ｉがデータフィールドのデータ総数以下である場合には（Ｓ２６０：ＮＯ）、Ｓ２４０に移行して、上述の処理を繰り返す。一方、データ指示値ｉがデータフィールドのデータ総数を超えている場合には（Ｓ２６０：ＹＥＳ）、受信処理を一旦終了する。
【００４８】
またＳ２２０にて、データ配列指示値が格納されていない場合には（Ｓ２２０：ＮＯ）、Ｓ２７０にて、受信した通信フレームのＣＲＣ（Cyclic Redundancy Check）の結果に基づいて、通信フレームを正常に受信したか否かを判断する。ここで、通信フレームを正常に受信していないと判断した場合には（Ｓ２７０：ＮＯ）、Ｓ２８０にて、受信した通信フレームを破棄して、受信処理を一旦終了する。
【００４９】
一方、通信フレームを正常に受信したと判断した場合には（Ｓ２７０：ＹＥＳ）、Ｓ２９０にて、データ指示値ｉを１に設定する。さらにＳ３００にて、受信した通信フレームにおけるデータフィールドの第ｉデータを、対応する送信ＣＡＮＩＤのデータ配列テーブルに基づいて特定される受信フレーム格納領域に格納する。なお、受信フレーム格納領域は、第１，２，３，４，５，６，７，８受信フレーム格納領域で構成されており、制御部２２のＲＡＭに設けられている。
【００５０】
Ｓ３００では、具体的には、まず、対応する送信ＣＡＮＩＤのデータ配列テーブルを参照して、第ｉデータの配列順ｋを特定する。そして、受信した通信フレームにおけるデータフィールドの第ｋデータを、第ｉ受信フレーム格納領域に格納する。
【００５１】
例えば、図４のデータ配列テーブルＴＢ１に示すように、第１，２，３，４，５，６，７，８データに対してそれぞれ、４，１，２，６，３，８，５，７の配列順が設定されているとする。この場合には、図５に示すように、受信した通信フレームにおけるデータフィールドの第１，２，３，４，５，６，７，８データはそれぞれ、第２，３，５，１，７，４，８，６受信フレーム格納領域に格納される。
【００５２】
そして、Ｓ３００の処理が終了すると、Ｓ３１０にて、データ指示値ｉをインクリメントし、Ｓ３２０にて、データ指示値ｉがデータフィールドのデータ総数（本実施形態では８）を超えているか否かを判断する。ここで、データ指示値ｉがデータフィールドのデータ総数以下である場合には（Ｓ３２０：ＮＯ）、Ｓ３００に移行して、上述の処理を繰り返す。一方、データ指示値ｉがデータフィールドのデータ総数を超えている場合には（Ｓ３２０：ＹＥＳ）、Ｓ３３０にて、データフィールドの第１〜８データについて、前回受信した値（以下、前回受信値という）と、今回受信した値（以下、今回受信値という）との差の絶対値（以下、受信値差という）が、予め設定された破棄判定値以上であるものがあるか否かを判断する。具体的には、第１，２，３，４，５，６，７，８受信フレーム格納領域に格納された値をそれぞれ、第１，２，３，４，５，６，７，８受信データ格納領域に格納された値とを比較し、これらの差の絶対値が破棄判定値以上であるか否かを判断する。なお、第ｊ受信データ格納領域（ｊ＝１，２，３，・・・，８）は制御部２２のＲＡＭに設けられている。
【００５３】
ここで、第１〜８データについて、受信値差が破棄判定値以上であるものが１つ以上ある場合には（Ｓ３３０：ＹＥＳ）、前回受信値と今回受信値との間に整合性が無いと判定し、Ｓ３４０にて、受信した通信フレームを破棄して、受信処理を一旦終了する。
【００５４】
一方、第１〜８データの全てについて、受信値差が破棄判定値未満である場合には（Ｓ３３０：ＮＯ）、前回受信値と今回受信値との間に整合性があると判定し、Ｓ３５０にて、第１，２，３，４，５，６，７，８受信フレーム格納領域に格納されるデータをそれぞれ、第１，２，３，４，５，６，７，８受信データ格納領域に格納し（図５を参照）、受信処理を一旦終了する。
【００５５】
次に、このように構成された車両用通信システム１の動作の具体例を説明する。
図７に示すように、まず、ＥＣＵ１１が、値が例えば１００であるＣＡＮＩＤ（以下、ＣＡＮＩＤ１００と表記する）に対応するデータ配列指示値としてＤ１を算出する（以下、値がＤ１であるデータ配列指示値をデータ配列指示値Ｄ１と表記する）。そしてＥＣＵ１１は、ＣＡＮＩＤ１００とデータ配列指示値Ｄ１とが格納された指示値送信用フレームＦ０１を送信し（処理Ｐ０１を参照）、算出したデータ配列指示値Ｄ１に基づいて、データ配列テーブルを更新する（処理Ｐ０２を参照）。
【００５６】
ＣＡＮＩＤ１００が受信ＣＡＮＩＤとして設定されているＥＣＵ１２は、指示値送信用フレームＦ０１を受信すると（処理Ｐ０３を参照）、受信した指示値送信用フレームＦ０１に格納されているデータ配列指示値Ｄ１に基づいて、データ配列テーブルを更新する（処理Ｐ０４を参照）。
【００５７】
その後にＥＣＵ１１が、ＣＡＮＩＤ１００と、ＣＡＮＩＤ１００に対応するデータ配列テーブルに基づいて配列順が変更された第１〜８データとが格納された通信フレームＦ０２を送信する（処理Ｐ０５を参照）。ＥＣＵ１２は、通信フレームＦ０２を受信すると（処理Ｐ０６を参照）、ＣＡＮＩＤ１００に対応するデータ配列テーブルに基づいて、通信フレームＦ０２における第１〜８データの配列順を元に戻し、前回受信値と今回受信値との差に基づいて、第１〜８データの整合性を判定する。ここで、前回受信値と今回受信値との間に整合性があると判定され、受信したデータをＥＣＵ１２に格納する。
【００５８】
さらにＥＣＵ１１は、ＣＡＮＩＤ１００と、ＣＡＮＩＤ１００に対応するデータ配列テーブルに基づいて配列順が変更された第１〜８データとが格納された通信フレームＦ０３を送信する（処理Ｐ０７を参照）。ＥＣＵ１２は、通信フレームＦ０３を受信すると（処理Ｐ０８を参照）、第１〜８データについて、前回受信値と今回受信値との間に整合性があると判定され、受信したデータをＥＣＵ１２に格納する。
【００５９】
次に、ＥＣＵ１２が、値が例えば２００であるＣＡＮＩＤ（以下、ＣＡＮＩＤ２００と表記する）に対応するデータ配列指示値としてＤ２を算出する（以下、値がＤ２であるデータ配列指示値をデータ配列指示値Ｄ２と表記する）。そしてＥＣＵ１２は、ＣＡＮＩＤ２００とデータ配列指示値Ｄ２とが格納された指示値送信用フレームＦ０４を送信し（処理Ｐ０９を参照）、算出したデータ配列指示値Ｄ２に基づいて、データ配列テーブルを更新する（処理Ｐ１０を参照）。
【００６０】
ＣＡＮＩＤ２００が受信ＣＡＮＩＤとして設定されているＥＣＵ１１は、指示値送信用フレームＦ０４を受信すると（処理Ｐ１１を参照）、受信した指示値送信用フレームＦ０４に格納されているデータ配列指示値Ｄ２に基づいて、データ配列テーブルを更新する（処理Ｐ１２を参照）。
【００６１】
その後にＥＣＵ１２が、ＣＡＮＩＤ２００と、ＣＡＮＩＤ２００に対応するデータ配列テーブルに基づいて配列順が変更された第１〜８データとが格納された通信フレームＦ０５を送信する（処理Ｐ１３を参照）。ＥＣＵ１１は、通信フレームＦ０５を受信すると（処理Ｐ１４を参照）、ＣＡＮＩＤ２００に対応するデータ配列テーブルに基づいて、通信フレームＦ０５における第１〜８データの配列順を元に戻し、前回受信値と今回受信値との差に基づいて、第１〜８データの整合性を判定する。ここで、前回受信値と今回受信値との間に整合性があると判定され、受信したデータをＥＣＵ１１に格納する。
【００６２】
さらにＥＣＵ１２は、ＣＡＮＩＤ２００と、ＣＡＮＩＤ２００に対応するデータ配列テーブルに基づいて配列順が変更された第１〜８データとが格納された通信フレームＦ０６を送信する（処理Ｐ１５を参照）。ＥＣＵ１１は、通信フレームＦ０６を受信すると（処理Ｐ１６を参照）、第１〜８データの整合性判定を行う。ここで、前回受信値と今回受信値との間に整合性があると判定され、受信したデータをＥＣＵ１１に格納する。
【００６３】
また図８に示すように、ＥＣＵ１２が通信フレームＦ０３を受信した後に（処理Ｐ０８を参照）、ＥＣＵ１１が、ＣＡＮＩＤ１００に対応するデータ配列指示値としてＤ３を算出するとする（以下、値がＤ３であるデータ配列指示値をデータ配列指示値Ｄ３と表記する）。そしてＥＣＵ１１は、ＣＡＮＩＤ１００とデータ配列指示値Ｄ３とが格納された指示値送信用フレームＦ２１を送信し（処理Ｐ２１を参照）、算出したデータ配列指示値Ｄ３に基づいて、データ配列テーブルを更新する（処理Ｐ２２を参照）。
【００６４】
ＣＡＮＩＤ１００が受信ＣＡＮＩＤとして設定されているＥＣＵ１２は、指示値送信用フレームＦ２１を受信すると（処理Ｐ２３を参照）、受信した指示値送信用フレームＦ２１に格納されているデータ配列指示値Ｄ３に基づいて、データ配列テーブルを更新する（処理Ｐ２４を参照）。
【００６５】
その後、コネクタ１６を介して通信線１５に接続された非正規装置が、ＣＡＮＩＤ１００が格納された通信フレームＦ２２を送信したとする（処理Ｐ２５を参照）。
ＣＡＮＩＤ１００が受信ＣＡＮＩＤとして設定されているＥＣＵ１２は、通信フレームＦ２２を受信すると（処理Ｐ２６を参照）、ＣＡＮＩＤ１００に対応するデータ配列テーブルに基づいて、通信フレームＦ２２における第１〜８データの配列順を元に戻し、前回受信値と今回受信値との差に基づいて、第１〜８データの整合性を判定する（処理Ｐ２７を参照）。ここで、前回受信値と今回受信値との間に整合性がないと判定され、上記の非正規装置から受信した通信フレームＦ２２は破棄される。
【００６６】
その後にＥＣＵ１２が、ＣＡＮＩＤ１００と、ＣＡＮＩＤ１００に対応するデータ配列テーブルに基づいて配列順が変更された第１〜８データとが格納された通信フレームＦ２３を送信する（処理Ｐ２８を参照）。ＥＣＵ１２は、通信フレームＦ２３を受信すると（処理Ｐ２９を参照）、ＣＡＮＩＤ１００に対応するデータ配列テーブルに基づいて、通信フレームＦ２３における第１〜８データの配列順を元に戻し、前回受信値と今回受信値との差に基づいて、第１〜８データの整合性を判定する。ここで、前回受信値と今回受信値との間に整合性があると判定され、受信したデータをＥＣＵ１２に格納する。
【００６７】
このように構成された車両用通信システム１は、車両に搭載され、互いにデータ通信可能に接続されたＥＣＵ１１とＥＣＵ１２とを備える。
ＥＣＵ１１は、ＥＣＵ１１がＥＣＵ１２へ送信する通信フレームに格納される第１〜８データの配列順を決定するためのデータ配列指示値を、指示値算出用関数にカレンダ情報を入力変数として入力することで算出する（Ｓ３０）。またＥＣＵ１１は、算出したデータ配列指示値に基づいて、通信フレームに格納される第１〜８データの配列順を示すデータ配列テーブルを更新する（Ｓ６０〜Ｓ９０）。そしてＥＣＵ１１は、算出したデータ配列指示値をＥＣＵ１２へ送信する（Ｓ４０〜Ｓ５０）。またＥＣＵ１１は、更新されたデータ配列テーブルが示す配列順に基づいて、通信フレームに格納される第１〜８データを配列した通信フレームを作成して送信する（Ｓ１１０〜Ｓ１６０）。
【００６８】
ＥＣＵ１２は、ＥＣＵ１１からデータ配列指示値を受信すると、受信したデータ配列指示値に基づいて、データ配列テーブルを更新する（Ｓ２３０〜Ｓ２６０）。またＥＣＵ１２は、ＥＣＵ１１から今回受信した通信フレームにおける第１〜８データの値と、ＥＣＵ１１から前回受信した通信フレームにおける第１〜８データの値との差の絶対値（受信値差）が破棄判定値以上であるものがあるか否かを判断する（Ｓ３３０）。そしてＥＣＵ１２は、第１〜８データについて受信値差が破棄判定値以上であるものが１つ以上ある場合に（Ｓ３３０：ＹＥＳ）、ＥＣＵ１１から今回受信した通信フレームを破棄する（Ｓ３４０）。
【００６９】
このように構成された車両用通信システム１では、ＥＣＵ１１が、第１〜８データを、データ配列テーブルが示す配列順に配列した通信フレームを作成してＥＣＵ１２へ送信する。このため、データ配列テーブルが示す配列順を特定するための情報を取得していない非正規装置は、ＥＣＵ１１からの通信フレームを受信しても、データ配列テーブルが示す配列順を特定できず、受信した通信フレームに格納されているデータの内容を識別することが困難となる。
【００７０】
また、ＥＣＵ１１はデータ配列指示値をＥＣＵ１２へ送信し、ＥＣＵ１２は、受信したデータ配列指示値に基づいて、データ配列テーブルを更新する。このため、ＥＣＵ１２は、ＥＣＵ１１からの通信フレームを受信すると、更新したデータ配列テーブルに基づいて、受信した通信フレームに格納されているデータの内容を識別することができる。
【００７１】
さらに車両用通信システム１では、上記の非正規装置がＥＣＵ１２へ通信フレームを送信しても、非正規装置が送信する通信フレームにおける第１〜８データの配列順と、ＥＣＵ１２がデータ配列指示値に基づいて更新したデータ配列テーブルが示す配列順とが異なる可能性が高い。すなわち、ＥＣＵ１２が非正規装置から通信フレームを受信した場合に、非正規装置から受信した通信フレームにおける第１〜８データの格納位置と、ＥＣＵ１２が更新したデータ配列テーブルが示す配列順に基づいて特定される第１〜８データの格納位置とが異なる可能性が高い。
【００７２】
そして車両用通信システム１では、ＥＣＵ１２が、今回受信した通信フレームと前回受信した通信フレームとで第１〜８データの値の差が大きいか否かを破棄判定値に基づいて判断する。この判断結果に基づいて、今回受信した通信フレームと前回受信した通信フレームとで第１〜８データの値の差が大きい場合に、ＥＣＵ１２は、今回受信した通信フレームを破棄する。このため、ＥＣＵ１２が非正規装置から通信フレームを受信した場合には、第１〜８データについて受信値差が破棄判定値以上となり、非正規装置からの通信フレームを破棄する可能性が高くなる。
【００７３】
以上より車両用通信システム１は、通信フレームに格納されているデータの内容を、データ配列指示値を取得することができる正規の装置に対して識別可能とする一方、非正規装置に対して識別困難とすることができる。さらに車両用通信システム１は、非正規装置からの通信フレームを破棄判定値に基づいて判断することが可能である。そして車両用通信システム１は、上記のようにＥＣＵ１１とＥＣＵ１２との間で送受信される通信フレームを保護するために、通信フレームに格納されているデータを暗号化することなく平文として送信している。このため、車両用通信システム１によれば、通信データ保護のために必要な演算負荷の増加を抑制することができる。
【００７４】
また車両用通信システム１では、第１〜８データのうち少なくとも１つは、エンジン回転数、車速、吸入空気量、アクセル開度、電子スロットル開度、吸気温度、エンジン水温、空燃比およびエンジントルクの何れか１つを示す情報である。これらの情報は、連続性を有する制御変数であり、通信フレームの送信周期の間で連続性が保持される。このため、今回受信した通信フレームと前回受信した通信フレームとでデータの値の差が大きいか否かを判断するために好適である。さらに、上記差が大きいか否かを判断するためのデータを通信フレームのデータフィールドに別途格納する必要がなくなるため、通信フレームのデータフィールドを有効に利用することができる。
【００７５】
また車両用通信システム１では、指示値送信用フレームを送信してから通信フレームを送信判定回数以上送信した場合に（Ｓ１０：ＹＥＳ）、新たなデータ配列指示値を算出する（Ｓ３０）。これにより、通信フレームを送信する毎に指示値送信用フレームを送信する必要がなくなり、データ配列指示値を算出したり指示値送信用フレームを送信したりするための処理負荷を低減することができる。
【００７６】
また車両用通信システム１では、ＥＣＵ１１は、データ配列指示値を入力変数として入力することにより配列順を示す情報を出力するデータ配列算出用関数に基づいて、第１〜８データの配列順を決定する（Ｓ７０）。またＥＣＵ１２は、上記データ配列算出用関数に基づいて、第１〜８データの配列順を特定する。これにより、複数のデータ配列指示値のそれぞれについて、データ配列指示値と配列順との対応関係を示す情報をＥＣＵ１１，１２に記憶する必要がなくなり、ＥＣＵ１１，１２が備える記憶装置の記憶容量の増大を抑制することができる。
【００７７】
以上説明した実施形態において、車両用通信システム１は本発明における通信システム、ＥＣＵ１１は本発明における第１電子制御装置、ＥＣＵ１２は本発明における第２電子制御装置である。
【００７８】
また、Ｓ３０の処理は本発明における情報決定手段、Ｓ６０〜Ｓ９０の処理は本発明における配列順決定手段、Ｓ４０〜Ｓ５０の処理は本発明における情報送信手段、Ｓ１１０〜Ｓ１６０の処理は本発明におけるフレーム送信手段である。
【００７９】
また、Ｓ２３０〜Ｓ２６０の処理は本発明における配列順特定手段、Ｓ３３０の処理は本発明における破棄判断手段、Ｓ３４０の処理は本発明における破棄手段である。
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採ることができる。
【００８０】
例えば上記実施形態では、車両用通信システム１が３台のＥＣＵを備えるものを示したが、２台または４台以上のＥＣＵを備えるようにしてもよい。
また上記実施形態では、カレンダ情報を使用してデータ配列指示値を算出するものを示した。これにより、データ配列指示値を算出するための元値が循環した値とならないため、過去に使用したのと同一の元値を用いてデータ配列指示値を算出することがなくなる。なお、循環した値とならない元値として、車両の積算走行距離を示す情報を用いるようにしてもよい。
【００８１】
また上記実施形態では、指示値送信用フレームにおけるデータフィールドの第１〜８データに指示値送信用フレーム用の固定値（本実施形態では０ｘＦＦ）を格納するものを示した。しかし、指示値送信用フレームのデータフィールドに、通常の通信フレームに格納するデータを格納するようにしてもよい。この場合に、指示値送信用フレームのデータフィールドに格納されるデータの配列順は、この指示値送信用フレームに格納されているデータ配列指示値に対応したものではなく、前回のデータ配列指示値に対応したものである。
【００８２】
また上記実施形態では、データ配列算出用関数にデータ配列指示値を入力することにより第１〜８データの配列順を決定するものを示した。しかし、図９に示すように、複数のデータ配列指示値のそれぞれについてデータ配列指示値と配列順との対応関係を示す対応関係テーブルを、ＥＣＵ１１，１２，１３および外部装置１４に予め記憶しておくようにしてもよい。これにより、算出したデータ配列指示値に基づいて対応関係テーブルを参照することで容易に配列順を決定することができ、さらに、受信したデータ配列指示値に基づいて対応関係テーブルを参照することで容易に配列順を特定することができる。このため、配列順を決定または特定するための処理負荷を低減することができる。
【００８３】
また、図９に示す対応関係テーブルはデータ配列指示値と配列順との対応関係を示しているが、対応関係テーブルがデータ位置情報と配列順との対応関係を示すようにしてもよい。この場合には、データ配列指示値とデータ位置情報とを関係付ける関数演算を行うことによりデータ位置情報を算出した後に、算出したデータ位置情報に基づいて対応関係テーブルを参照する。
【００８４】
また上記実施形態では、受信値差が破棄判定値以上である場合に（Ｓ３３０：ＹＥＳ）、通信フレームを破棄して（Ｓ３４０）、受信処理を一旦終了するものを示した。しかし、受信値差が破棄判定値以上である場合に（Ｓ３３０：ＹＥＳ）、通信フレームを破棄し（Ｓ３４０）、さらに、通信フレームを破棄した旨を示す破棄通知を、他のＥＣＵに送信するようにしてもよい。これにより、ユーザインタフェースを備えた他のＥＣＵ置を介して車両の乗員へ通知したり、無線通信機能を備えた他のＥＣＵを介してサービスセンターへ車両状態を通知したりすることが可能となる。
【００８５】
また上記実施形態では、第１〜８データの全てについて受信値差が破棄判定値以上であるか否かを判断するものを示したが、第１〜８データのうちの少なくとも１つについて受信値差が破棄判定値以上であるか否かを判断するようにしてもよい。
【００８６】
また上記実施形態では、ＣＡＮ通信プロトコルに基づいて通信を行うものを示したが、これに限定されるものではなく、例えばＦｌｅｘＲａｙ（登録商標）等の他の通信プロトコルに基づいて通信を行う場合であっても本発明を適用可能である。
【符号の説明】
【００８７】
１…車両用通信システム、１１，１２，１３…ＥＣＵ
【図１】
2015201723.tif 000003
【図２】
2015201723.tif 000004
【図３】
2015201723.tif 000005
【図４】
2015201723.tif 000006
【図５】
2015201723.tif 000007
【図６】
2015201723.tif 000008
【図７】
2015201723.tif 000009
【図８】
2015201723.tif 000010
【図９】
2015201723.tif 000011