(57)【特許請求の範囲】
【請求項１】
複数のノードが接続されるネットワークにおいてメッセージを送受信する通信装置であって、
同期メッセージを受信した際に同期メッセージと他のメッセージとの衝突を判定する衝突判定手段と、
同期時刻を推定する同期時刻推定手段と、
を備え、
前記衝突判定手段で同期メッセージの他メッセージとの衝突を判定した場合に前記同期時刻推定手段で推定した同期時刻に基づいて同期を取り、
前記同期時刻推定手段は、衝突が無かったときに受信した今回の同期メッセージに基づく同期時刻と衝突が無かったときに受信した過去の同期メッセージに基づく同期時刻との差を前記今回の同期メッセージと前記過去の同期メッセージとの間の同期メッセージの受信回数で除算して同期メッセージの送信周期を推定し、前記今回の同期メッセージに基づく同期時刻に前記推定した同期メッセージの送信周期を加算した時刻を次回の同期時刻として推定することを特徴とする通信装置。
【請求項２】
複数のノードが接続されるネットワークにおいてメッセージを送受信する通信方法であって、
同期メッセージを受信した際に同期メッセージと他のメッセージとの衝突を判定する衝突判定ステップと、
同期時刻を推定する同期時刻推定ステップと、
を含み、
前記衝突判定ステップで同期メッセージの他メッセージとの衝突を判定した場合に前記同期時刻推定ステップで推定した同期時刻に基づいて同期を取り、
前記同期時刻推定ステップは、衝突が無かったときに受信した今回の同期メッセージに基づく同期時刻と衝突が無かったときに受信した過去の同期メッセージに基づく同期時刻との差を前記今回の同期メッセージと前記過去の同期メッセージとの間の同期メッセージの受信回数で除算して同期メッセージの送信周期を推定し、前記今回の同期メッセージに基づく同期時刻に前記推定した同期メッセージの送信周期を加算した時刻を次回の同期時刻として推定することを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードが接続されるネットワークにおいてメッセージを送受信する通信装置及び通信方法に関する。
【背景技術】
【０００２】
複数のノード（例えば、車載のＥＣＵ[Electronic Control Unit]）間をバスを介してネットワークを構築し、このネットワークにおいてノード間でメッセージを送受信する通信システムが開発されている。例えば、ＣＡＮ[Controller Area Network]等にようにイベントドリブン型ネットワークにメッセージを送受信する場合、各ノードからランダムにメッセージが送信するので、バスでメッセージ同士が衝突することがある。このようにメッセージ同士が衝突する場合、イベントドリブン型ネットワークでは、アービトレーションによって優先度順にメッセージを送信する。また、特許文献１には、無線通信装置がデータ衝突通知を受信した場合にデータ送信を行う時間帯を前回の時間帯と異なる時間帯に設定する方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２０２９０号公報
【特許文献２】特開２００６−４９９７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のようなイベントドリブン型ネットワークにおいてスケジュールに従って周期的にメッセージを送信することが考えられている。図１１に示すように、ある送信ノードで一定の周期毎に送信要求を出してメッセージｍを送信するときに、その送信要求が出される周期的な時刻においてバス上に他のノードからメッセージが送信されていない場合、正しい周期的な時刻にメッセージｍがバスに送信され、正しい周期となる。しかし、その周期的な時刻においてバス上に他のノードからメッセージｃ，ｄが送信されている場合、メッセージｍが衝突し、遅延した時刻にメッセージｍがバスに送信されるため、誤った周期となる。このような周期的なメッセージｍを同期信号として利用して同期を取る場合、メッセージｍが遅延すると、同期時刻がずれ、同期が取れない。また、特許文献１には衝突した場合に送信時間帯をずらす方法が開示されているが、同期信号の送信時間帯をずらすことはできないので、同期信号が衝突した場合には適用できない。
【０００５】
そこで、本発明は、同期信号が衝突した場合でも同期を取ることができる通信装置及び通信方法を提供することを課題とする。
【課題を解決するための手段】
【０００６】
本発明に係る通信装置は、複数のノードが接続されるネットワークにおいてメッセージを送受信する通信装置であって、同期メッセージを受信した際に同期メッセージと他のメッセージとの衝突を判定する衝突判定手段と、同期時刻を推定する同期時刻推定手段とを備え、衝突判定手段で同期メッセージの他メッセージとの衝突を判定した場合に同期時刻推定手段で推定した同期時刻に基づいて同期を取ることを特徴とする。
【０００７】
この通信装置では、衝突判定手段によってネットワーク上で同期メッセージが他のメッセージと衝突したか否かを判定する。同期メッセージが衝突した場合、受信ノードでは同期メッセージを受信する時刻が遅延するので、同期メッセージの受信時刻で精度良く同期が取れない。そこで、通信装置では、同期時刻推定手段によって同期時刻を推定しておき、同期メッセージが他メッセージと衝突した場合にはその推定した同期時刻に基づいて同期を取る。このように、通信装置では、同期メッセージが他メッセージと衝突した場合には推定した同期時刻を用いることにより、衝突の影響を受けずに同期を取ることができる。
【０００８】
本発明の上記通信装置では、同期時刻推定手段は、衝突が無かったときに受信した今回の同期メッセージに基づく同期時刻と衝突が無かったときに受信した過去の同期メッセージに基づく同期時刻との差を今回の同期メッセージと過去の同期メッセージとの間の同期メッセージの受信回数で除算して同期メッセージの送信周期を推定し、今回の同期メッセージに基づく同期時刻に推定した同期メッセージの送信周期を加算した時刻を次回の同期時刻として推定する。通信装置では、このような算出方法で次回の同期時刻を算出することにより、次回の同期時刻を高精度かつ簡単に推定できる。
【０００９】
本発明に係る通信方法は、複数のノードが接続されるネットワークにおいてメッセージを送受信する通信方法であって、同期メッセージを受信した際に同期メッセージと他のメッセージとの衝突を判定する衝突判定ステップと、同期時刻を推定する同期時刻推定ステップとを含み、衝突判定ステップで同期メッセージの他メッセージとの衝突を判定した場合に同期時刻推定ステップで推定した同期時刻に基づいて同期を取ることを特徴とする。
【００１０】
本発明の上記通信方法では、同期時刻推定ステップは、衝突が無かったときに受信した今回の同期メッセージに基づく同期時刻と衝突が無かったときに受信した過去の同期メッセージに基づく同期時刻との差を今回の同期メッセージと過去の同期メッセージとの間の同期メッセージの受信回数で除算して同期メッセージの送信周期を推定し、今回の同期メッセージに基づく同期時刻に推定した同期メッセージの送信周期を加算した時刻を次回の同期時刻として推定する。
【００１１】
上記した各通信方法は、上記の各通信装置と同様の作用効果を有している。
【発明の効果】
【００１２】
本発明によれば、同期メッセージ（同期信号）が他メッセージと衝突した場合には推定した同期時刻を用いることにより、衝突の影響を受けずに同期を取ることができる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態に係るＣＡＮ通信システムの構成図である。
【図２】ノード間のメッセージの送受信の説明図であり、（ａ）が自ノードからメッセージを送信する場合であり、（ｂ）が自ノードでメッセージを受信する場合である。
【図３】本実施の形態に係るＣＡＮ通信システムにおいてノード間のメッセージの送受信の一般的な特徴の説明図であり、（ａ）が自ノードからメッセージを送信する場合であり、（ｂ）が自ノードでメッセージを受信する場合である。
【図４】本実施の形態に係るＣＡＮ通信システムにおいて自ノードからメッセージを送信する場合の衝突判定方法の説明図であり、（ａ）が衝突が発生する場合の説明図であり、（ｂ）が衝突判定方法の説明図である。
【図５】本実施の形態に係るＣＡＮ通信システムにおいて自ノードでメッセージを受信する場合の衝突判定方法の説明図であり、（ａ）が衝突が発生する場合の説明図であり、（ｂ）が衝突判定方法の説明図である。
【図６】本実施の形態に係るＣＡＮ通信システムにおける同期メッセージの一例である。
【図７】本発明に係るＣＡＮ通信システムにおける同期時刻の推定方法の説明図である。
【図８】本実施の形態に係るメッセージを送信する場合の衝突判定処理の流れを示すフローチャートである。
【図９】本実施の形態に係るメッセージを受信する場合の衝突判定処理の流れを示すフローチャートである。
【図１０】本実施の形態に係る同期時刻推定処理の流れを示すフローチャートである。
【図１１】衝突による周期メッセージの遅延の一例である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、本発明に係る通信装置及び通信方法の実施の形態を説明する。なお、各図において同一又は相当する要素については同一の符号を付し、重複する説明を省略する。
【００１５】
本実施の形態では、本発明に係る通信装置を、車両に搭載されるＣＡＮ通信システムを構成する各ノード（通信機能）に適用する。本実施の形態に係るＣＡＮ通信システムは、ＣＡＮ通信プロトコルに基づいてメッセージを送受信する車載ＬＡＮ[Local Area Network]であり、ＣＡＮバスに複数のノード（ＥＣＵ）が接続されている。特に、本実施の形態では、イベントドリブン通信のＣＡＮにおいて、ソフトウェアで擬似的なタイムトリガ通信を実現する処理について詳細に説明する。
【００１６】
図１〜図７を参照して、本実施の形態に係るＣＡＮ通信システム１について説明する。図１は、本実施の形態に係るＣＡＮ通信システムの構成図である。図２は、ノード間のメッセージの送受信の説明図である。図３は、本実施の形態に係るＣＡＮ通信システムにおいてノード間のメッセージの送受信の一般的な特徴の説明図である。図４は、本実施の形態に係るＣＡＮ通信システムにおいて自ノードからメッセージを送信する場合の衝突判定方法の説明図である。図５は、本実施の形態に係るＣＡＮ通信システムにおいて自ノードでメッセージを受信する場合の衝突判定方法の説明図である。図６は、本実施の形態に係るＣＡＮ通信システムにおける同期メッセージの一例である。図７は、本発明に係るＣＡＮ通信システムにおける同期時刻の推定方法の説明図である。
【００１７】
ＣＡＮ通信システム１は、多数のノード（ＥＣＵ）２からなり、各ノード２がバス３に接続されている。ソフトウェアでタイムトリガ通信を行う場合、ＣＡＮ通信システム１では、任意のノード２から一定の周期で送信されるメッセージを他のノード２で同期メッセージ（同期信号）として受信し、同期メッセージを送信したノード２では同期メッセージの送信時刻で同期を取り、同期メッセージを受信したノード２では同期メッセージの受信時刻で同期を取る。特に、他のメッセージと衝突して同期メッセージが遅延すると誤った時刻で同期が取られるので、ＣＡＮ通信システム１では、受信ノード２で同期メッセージが他のメッセージと衝突するかを判定するとともに次の同期時刻を推定しておき、同期メッセージが衝突した場合には推定した同期時刻で同期を取る。ちなみに、ＣＡＮ通信システム１では、イベントドリブン通信でもメッセージを送信するので、同期メッセージが他のメッセージと衝突する場合がある。
【００１８】
なお、同期メッセージについては、ノード２個々でそれぞれ設定でき、ＣＡＮ通信システム１の全てのノード２が同じメッセージを同期メッセージとする場合もあるし、各ノード２が異なるメッセージを同期メッセージとする場合もある。本実施の形態では、例えば、図６に示すように、ノードＡが送信するメッセージ（Ｓｙｎｃ）を全てのノードで同期メッセージとし、ノードＡではメッセージ（Ｓｙｎｃ）を送信した時刻を同期時刻とし、他のノードＢ，・・・，ノードＮではメッセージ（Ｓｙｎｃ）を受信した時刻を同期時刻とする。
【００１９】
図２を参照して、ノード間のメッセージの送受信について説明しておく。自ノードでは、図２（ａ）に示すように、メッセージｍを送信すると、他のノードＡでそのメッセージｍを受信する。また、自ノードでは、図２（ｂ）に示すように、ノードＡからメッセージｍを送信すると、そのメッセージｍを受信する。特に、タイムトリガ通信の場合、各ノードでは、同期時刻を基準にして予め設定された送信メッセージのスケジュールに従ってメッセージを送信する。
【００２０】
図３を参照して、ＣＡＮにおけるノードの一般的な特徴について説明しておく。図３（ａ）に示すように、自ノードでメッセージｍを送信する場合、自ノードでは、通信コントローラにメッセージｍをセットした時刻Ｔｔ１を測定できる。タイムトリガ通信の場合、この時刻Ｔｔ１は、同期時刻を基準にして予め設定されたスケジュールに従った時刻である。また、自ノードでは、メッセージｍの送信完了の時刻Ｔｔ２（バスがビジー状態からアイドル状態に切り替わった時刻）を測定できる。しかし、自ノードでは、メッセージｍが通信コントローラからバスに送信される実際の時刻Ｔｔ３は不明である。例えば、ノードＡからメッセージｎが送信されており、バスがメッセージｎでビジー状態の場合にはメッセージｍはメッセージｎと衝突し、時刻Ｔｔ３は時刻Ｔｔ１から遅れる。
【００２１】
また、図３（ｂ）に示すように、自ノードがノードＡからのメッセージｍを受信する場合、自ノードでは、通信コントローラでメッセージｍを受信した受信完了の時刻Ｔｒ１を測定できる。また、自ノードでは、バスがビジー状態になっている時間Ｔｉを計測できる。この際、バスに何かのメッセージが送信されていることは判るが、どのメッセージが送信されているかは判らない。しかし、自ノードでは、メッセージｍがノードＡの通信コントローラにセットされた時刻Ｔｒ２は不明である。例えば、ノードＢからメッセージｎが送信されており、バスがメッセージｎでビジー状態の場合にはメッセージｍはメッセージｎと衝突し、メッセージｍは時刻Ｔｒ２から遅れてバスに送信される。
【００２２】
それでは、ノード２（ＥＣＵ）における通信機能について説明する。各ノード２では、イベントドリブン通信を行うとともに、ソフトウェアによってタイムトリガ通信を行う。タイムトリガ通信を行う場合、ノード２では、他のノード２からの同期メッセージを受信した場合、同期メッセージが他のメッセージと衝突したかを判定する。同期メッセージが他のメッセージと衝突していない場合、同期メッセージの受信時刻を同期時刻としてスケジュールに従って送信メッセージを送信する。同期メッセージが他のメッセージと衝突した場合、ノード２では、推定した同期時刻を基準にしてスケジュールに従って送信メッセージを送信する。
【００２３】
ノード２は、ハードウェアの通信コントローラ２０と、ソフトウェアで処理される受信部２１、衝突判定部２２、タイミング制御部２３（タイミング予測部２４、送信制御部２５）とで構成される。なお、本実施の形態では、衝突判定部２２が特許請求の範囲に記載する衝突判定手段に相当し、タイミング予測部２４が特許請求の範囲に記載する同期時刻推定手段に相当する。
【００２４】
通信コントローラ２０では、バス３の状態（ビジー状態／アイドル状態）を監視し、その状態を衝突判定部２２に提供する。また、通信コントローラ２０では、バス３に自ノードが必要なメッセージが送信されている場合にはそのメッセージを受信し、受信したメッセージを受信部２１に渡す。また、通信コントローラ２０では、タイミング制御部２３から送信するメッセージがセットされると、バス３がアイドル状態の場合には直ちにメッセージをバス３に送信し、バス３が他のメッセージでビジー状態の場合に他のメッセージの送信完了後にメッセージを送信する。
【００２５】
受信部２１では、通信コントローラ２０からメッセージを受け取ると、メッセージから必要なデータを取り出す。また、受信部２１では、通信コントローラ２０からメッセージを受け取ると、そのメッセージの受信完了時刻をタイミング予測部２４に提供する。
【００２６】
衝突判定部２２では、通信コントローラ２０からメッセージを送信した場合、送信したメッセージが他のメッセージと衝突したか否かを判定する。また、衝突判定部２２では、通信コントローラ２０でメッセージ（特に、同期メッセージ）を受信した場合、受信したメッセージが他のメッセージと衝突したか否かを判定する。
【００２７】
図４を参照して、送信メッセージの衝突の判定方法について説明する。図４（ａ）に示すように、自ノードから送信するメッセージｍを通信コントローラ２０にセットしたときに、ノードＡからメッセージｎが既に送信されており、バスがメッセージｎでビジー状態の場合、メッセージｍがメッセージｎと衝突し、メッセージｍの送信が遅延する。この場合、メッセージｎの送信完了後に、メッセージｍがバスに送信されるので、メッセージｍの送信開始から送信完了迄の時間が長くなる。そこで、図４（ｂ）に示すように、衝突判定部２２では、ポーリング処理によってメッセージｍの送信開始から送信完了迄の時間Ｔｉ１を測定する。そして、衝突判定部２２では、メッセージｍの送信開始から送信完了迄の時間Ｔｉ１とメッセージｍの送信に必要な時間Ｔｉ２とを比較することによって衝突の有無を判定する。送信開始から送信完了迄の時間Ｔｉ１がメッセージｍの送信時間Ｔｉ２よりも長い場合には衝突していると判定し、送信開始から送信完了迄の時間Ｔｉ１がメッセージｍの送信時間Ｔｉ２と同じ長さ（同程度の長さ）の場合には衝突していないと判定する。
【００２８】
図５を参照して、受信メッセージの衝突の判定方法について説明する。図５（ａ）に示すように、自ノードが受信するノードＡのメッセージｍがノードＡの通信コントローラ２０にセットされたときに、ノードＢからメッセージｎが送信されており、バスがメッセージｎでビジー状態の場合、メッセージｍがメッセージｎと衝突し、メッセージｍの送信が遅延する。この場合、メッセージｎの送信完了後に、メッセージｍがバスに送信されるので、バスのビジー状態が長くなる。そこで、図５（ｂ）に示すように、衝突判定部２２では、ポーリング処理によってバスでのビジー状態になってから受信完了迄の時間Ｔｉ３を測定する。そして、衝突判定部２２では、バスでのビジー状態になってから受信完了迄の時間Ｔｉ３とメッセージｍの受信に必要な時間Ｔｉ４とを比較することによって衝突の有無を判定する。ビジー状態になってから受信完了迄の時間Ｔｉ３がメッセージｍの受信時間Ｔｉ４よりも長い場合には衝突していると判定し、ビジー状態になってから受信完了迄の時間Ｔｉ３がメッセージｍの受信時間Ｔｉ４と同じ長さ（同程度の長さ）の場合には衝突していないと判定する。
【００２９】
タイミング制御部２３では、同期時刻を基準として自ノードの送信メッセージのスケジュールに従って送信メッセージの送信タイミングを設定し、送信タイミング（送信時刻）に応じて送信メッセージを通信コントローラ２０にセットする。タイミング制御部２３は、タイミング予測部２４と送信制御部２５からなる。
【００３０】
タイミング予測部２４では、衝突判定部２２で同期メッセージの衝突が無いと判定した場合、次回の同期時刻を推定しておく。また、タイミング予測部２４では、衝突判定部２２で同期メッセージの衝突が無いと判定した場合、その同期メッセージの受信時刻を同期時刻とし、同期時刻を基準として自ノードの送信メッセージのスケジュールに従ってメッセージの送信タイミングを設定する。また、タイミング予測部２４では、衝突判定部２２で同期メッセージの衝突が有ると判定した場合、推定されている同期時刻を用いて、推定同期時刻を基準として自ノードの送信メッセージのスケジュールに従ってメッセージの送信タイミングを設定する。
【００３１】
図７を参照して、同期時刻の推定方法を説明する。図７の例では、ノードＣにおいて、ノードＡから一定周期で送信される同期メッセージ（Ｓｙｎｃ）を利用して同期を取る場合である。この例の場合、過去に送信された同期メッセージＳ１は他のメッセージとの衝突がなくノードＣで遅延なく受信され、次の同期メッセージＳ２はノードＢから送信されたデータメッセージＤ１と衝突してノードＣで遅延して受信され、最新で送信された同期メッセージＳ３は他のメッセージとの衝突がなくノードＣで遅延なく受信された。
【００３２】
ここで、過去の同期メッセージＳ１の受信時刻が真であったときの同期時刻を「同期時刻履歴」と呼ぶ。また、今回（最新）の同期メッセージＳ３の受信時刻が真であったときの同期時刻を「同期時刻」と呼ぶ。なお、同期メッセージＳ２の受信時刻は遅延しているので、同期時刻としては偽である。
【００３３】
同期メッセージＳ２の受信時刻は偽であるので、過去の同期メッセージＳ１の受信時刻と同期メッセージＳ２の受信時刻との差は同期メッセージの正しい送信周期でなく、同期メッセージＳ２の受信時刻と今回の同期メッセージＳ３の受信時刻との差も同期メッセージの正しい送信周期でない。しかし、過去の同期メッセージＳ１の受信時刻と今回の同期メッセージＳ３の受信時刻は共に真であるので、過去の同期メッセージＳ１の受信時刻（同期時刻履歴）と今回の同期メッセージＳ３の受信時刻（同期時刻）との差は、２回分の正しい送信周期である。したがって、同期時刻と同期時刻履歴との差をその間の同期メッセージの受信回数（周期の個数）で除算することよって、同期メッセージの正しい送信周期を推定できる。さらに、この正しい送信周期に同期時刻（今回の真の受信時刻）を加算することによって、次回の同期メッセージＳ４の同期時刻を推定できる。
【００３４】
そこで、タイミング予測部２４では、同期時刻＋（（同期時刻―同期時刻履歴）÷同期メッセージの受信回数）を算出することによって次の同期時刻を推定する。このために、タイミング予測部２４では、衝突判定部２２で同期メッセージの衝突が無いと判定した場合、その同期メッセージの受信時刻を同期時刻履歴と記憶しておくとともに、同期メッセージの受信回数に１を設定しておく。また、タイミング予測部２４では、衝突判定部２２で同期メッセージの衝突が有ると判定した場合、同期メッセージの受信回数として前回値に１を加算しておく。
【００３５】
送信制御部２５では、タイミング予測部２４で送信メッセージの送信タイミングを設定すると、その送信タイミング（送信時刻）になると送信メッセージを通信コントローラ２０にセットする。
【００３６】
図１〜図７を参照して、ＣＡＮ通信システム１のノード２におけるタイムトリガ通信の動作について説明する。ここでは、図８のフローチャートに沿ってメッセージ送信時の衝突判定処理を説明し、図９のフローチャートに沿ってメッセージ受信時の衝突判定処理を説明し、図１０のフローチャートに沿って同期信号の推定処理を説明する。
【００３７】
メッセージ送信時の衝突判定処理について説明する。ノード２のタイミング制御部２３では、同期時刻を基準にして自ノードの送信メッセージのスケジュールに従ってメッセージの送信時刻を設定し、送信時刻になると通信コントローラ２０に送信メッセージをセットする（Ｓ１０）。このとき、ノード２の衝突判定部２２では、非アイドル検出回数に０を設定する（Ｓ１１）。非アイドル検出回数は、ポーリングによってバス３の非アイドル状態（ビジー状態）が検出された回数を示す。
【００３８】
衝突判定部２２では、通信コントローラ２０で監視されているバス３の状態（ビジー／アイドル）に基づいて、バス状態がビジーかあるいはアイドルかを判定する（Ｓ１２）。Ｓ１２の判定にてビジーと判定した場合、衝突判定部２２では、非アイドル検出回数の前回値に１を加算する（Ｓ１３）。そして、衝突判定部２２では、ポーリング周期が経過したか否かを判定し、ポーリング周期が経過するまで待つ（Ｓ１４）。Ｓ１４にてポーリング周期が経過したと判定した場合、Ｓ１２に戻って、衝突判定部２２では、上記と同様に、バス状態がビジーかあるいはアイドルかを判定する（Ｓ１２）。ここでは、自ノードがメッセージの送信開始から送信完了（バス３の状態がアイドルへ切り替わる）迄の時間が、非アイドル検出回数として測定される。
【００３９】
Ｓ１２の判定にてアイドルと判定した場合、衝突判定部２２では、非アイドル回数がｎ回未満か否かを判定する（Ｓ１５）。このｎ回は、メッセージの送信時間より少し長い時間に相当する非アイドル検出回数であり、ポーリング周期とメッセージの送信時間によって変わる。Ｓ１５にて非アイドル回数がｎ回未満と判定した場合、衝突判定部２２では、送信メッセージが他のメッセージと衝突していないと判定し、戻り値として衝突無しを設定する（Ｓ１６）。Ｓ１５にて非アイドル回数がｎ回以上と判定した場合、衝突判定部２２では、送信メッセージが他のメッセージと衝突したと判定し、戻り値として衝突有りを設定する（Ｓ１７）。
【００４０】
メッセージ受信時の衝突判定処理について説明する。衝突判定部２２では、ポーリング周期が経過したか否かを判定し、ポーリング周期が経過するまで待つ（Ｓ２０）。Ｓ２０にてポーリング周期が経過したと判定した場合、衝突判定部２２では、通信コントローラ２０でメッセージ（例えば、同期メッセージ）を受信したか否かを判定する（Ｓ２１）。
【００４１】
Ｓ２１にてメッセージを受信していないと判定した場合、非アイドル検出回数を判定することなく、衝突判定部２２では、通信コントローラ２０で監視されているバス３の状態（ビジー／アイドル）に基づいて、バス状態がビジーかあるいはアイドルかを判定する（Ｓ２５）。Ｓ２５の判定にてアイドルと判定した場合、衝突判定部２２では、非アイドル検出回数に０を設定し（Ｓ２６）、Ｓ２０に戻る。一方、Ｓ２５の判定にてビジーと判定した場合、衝突判定部２２では、非アイドル検出回数の前回値に１を加算し（Ｓ２７）、Ｓ２０に戻る。ここでは、バス３の状態がビジーになってからメッセージの受信完了（バス３の状態がアイドルへ切り替わる）迄の時間が、非アイドル検出回数として測定される。
【００４２】
Ｓ２１にてメッセージを受信したと判定した場合（メッセージ受信完了）、衝突判定部２２では、非アイドル回数がｎ回未満か否かを判定する（Ｓ２２）。このｎ回は、メッセージの受信時間より少し長い時間に相当する非アイドル検出回数であり、ポーリング周期とメッセージの受信時間によって変わる。Ｓ２２にて非アイドル回数がｎ回未満と判定した場合、衝突判定部２２では、受信メッセージが他のメッセージと衝突していないと判定し（Ｓ２３）、上記で説明したＳ２５に移行する。Ｓ２２にて非アイドル回数がｎ回以上と判定した場合、衝突判定部２２では、受信メッセージが他のメッセージと衝突したと判定し（Ｓ２４）、上記で説明したＳ２５に移行する。
【００４３】
タイミング制御部２３では、同期メッセージを受信し、同期メッセージが他のメッセージと衝突していないと判定した場合には同期メッセージの受信時刻を同期時刻として用い、同期メッセージが他のメッセージと衝突したと判定した場合には推定されている同期時刻を同期時刻として用いる。そして、タイミング制御部２３では、その同期時刻を基準にして自ノードの送信メッセージのスケジュールに従ってメッセージの送信時刻を設定する。
【００４４】
同期信号の推定処理について説明する。同期メッセージを受信する毎に、タイミング予測部２４では、今回の同期メッセージが衝突無しの場合、前回までに設定されている同期時刻履歴と同期メッセージ受信回数を用いて、今回の同期時刻＋（（今回の同期時刻−同期時刻履歴）÷同期メッセージ受信回数）によって次回の同期時刻を推定する（Ｓ３０）。そして、タイミング予測部２４では、同期メッセージの受信時刻が真かあるいは偽かを判定する（Ｓ３１）。同期メッセージの受信時刻が真と判定した場合（衝突判定部２２で同期メッセージが衝突無しと判定している場合）、タイミング予測部２４では、同期メッセージの受信回数として１を設定し（Ｓ３２）、同期時刻履歴に受信した同期メッセージの受信時刻（同期時刻）を設定する（Ｓ３３）。同期メッセージの受信時刻が偽と判定した場合（衝突判定部２２で同期メッセージが衝突有りと判定している場合）、タイミング予測部２４では、同期メッセージ受信回数の前回値に１を加算する（Ｓ３４）。
【００４５】
このＣＡＮ通信システム１の各ノード２によれば、同期メッセージが他メッセージと衝突した場合には推定した同期時刻を用いることにより、衝突の影響を受けずに、推定した同期時刻で同期を取ることができる。その結果、ＣＡＮ通信システム１全体として、同期が取れ、各ノード２でスケジュールに従ってメッセージを送信することによってタイムトリガ通信でのメッセージの衝突がなくなる。また、ＣＡＮ通信システム１の各ノード２によれば、同期時刻＋（（同期時刻−同期時刻履歴）÷同期メッセージ受信回数）によって次回の同期時刻を算出することにより、次回の同期時刻を高精度かつ簡単に推定できる。
【００４６】
なお、ＣＡＮは、イベントドリブン通信であるので、メッセージ同士の衝突とそれによる通信遅延が発生する。そのため、クリティカルなシステムでは、その最悪のケースを見込んで、バスに流す通信データ総量（メッセージ総数）を制限する必要が出てくる。ＣＡＮ通信システム１では、イベントドリブン通信の上でＦｌｅｘＲａｙのようなタイムトリガ通信をソフトウェア的に実現することにより、メッセージの衝突を軽減もしくは発生させないようにできる。それによって、通信データ総量を制限することなく、理論的には、通信帯域の１００％まで増やすことができる。これによって、ネットワークを経由したノード（ＥＣＵ）間の協調制御の精度を上げたり、新たな機能（通信データ）を追加することができるため、製品としての付加価値を高めることができる。
【００４７】
以上、本発明に係る実施の形態について説明したが、本発明は上記実施の形態に限定されることなく様々な形態で実施される。
【００４８】
例えば、本実施の形態では車両に搭載されるＣＡＮ通信システムに適用したが、車両以外のＣＡＮにも適用可能であり、ＣＡＮ以外のネットワークにも適用可能である。
【００４９】
また、本実施の形態では同期時刻の推定方法の一例を示したが、他の方法で同期時刻を推定してもよい。また、本実施の形態ではメッセージの衝突の判定方法の一例を示したが、他の方法で衝突を判定してもよい。
【符号の説明】
【００５０】
１…ＣＡＮ通信システム、２…ノード、３…バス、２０…通信コントローラ、２１…受信部、２２…衝突判定部、２３…タイミング制御部、２４…タイミング予測部、２５…送信制御部。
【図１】
0005734802.tif 000002
【図２】
0005734802.tif 000003
【図３】
0005734802.tif 000004
【図４】
0005734802.tif 000005
【図５】
0005734802.tif 000006
【図６】
0005734802.tif 000007
【図７】
0005734802.tif 000008
【図８】
0005734802.tif 000009
【図９】
0005734802.tif 000010
【図１０】
0005734802.tif 000011
【図１１】
0005734802.tif 000012