"複数のノードが接続されるネットワークにおいてメッセージを送受信する通信装置であって、同期メッセージを受信した際に同期メッセージと他のメッセージとの衝突を判定する衝突判定手段と、同期時刻を推定する同期時刻推定手段と、を備え、前記衝突判定手段で同期メッセージの他メッセージとの衝突を判定した場合に前記同期時刻推定手段で推定した同期時刻に基づいて同期を取ることを特徴とする通信装置。前記同期時刻推定手段は、衝突が無かったときに受信した今回の同期メッセージに基づく同期時刻と衝突が無かったときに受信した過去の同期メッセージに基づく同期時刻との差を前記今回の同期メッセージと前記過去の同期メッセージとの間の同期メッセージの受信回数で除算して同期メッセージの送信周期を推定し、前記今回の同期メッセージに基づく同期時刻に前記推定した同期メッセージの送信周期を加算した時刻を次回の同期時刻として推定することを特徴とする請求項1に記載の通信装置。複数のノードが接続されるネットワークにおいてメッセージを送受信する通信方法であって、同期メッセージを受信した際に同期メッセージと他のメッセージとの衝突を判定する衝突判定ステップと、同期時刻を推定する同期時刻推定ステップと、を含み、前記衝突判定ステップで同期メッセージの他メッセージとの衝突を判定した場合に前記同期時刻推定ステップで推定した同期時刻に基づいて同期を取ることを特徴とする通信方法。前記同期時刻推定ステップは、衝突が無かったときに受信した今回の同期メッセージに基づく同期時刻と衝突が無かったときに受信した過去の同期メッセージに基づく同期時刻との差を前記今回の同期メッセージと前記過去の同期メッセージとの間の同期メッセージの受信回数で除算して同期メッセージの送信周期を推定し、前記今回の同期メッセージに基づく同期時刻に前記推定した同期メッセージの送信周期を加算した時刻を次回の同期時刻として推定することを特徴とする請求項3に記載の通信方法。上記のようなイベントドリブン型ネットワークにおいてスケジュールに従って周期的にメッセージを送信することが考えられている。図11に示すように、ある送信ノードで一定の周期毎に送信要求を出してメッセージmを送信するときに、その送信要求が出される周期的な時刻においてバス上に他のノードからメッセージが送信されていない場合、正しい周期的な時刻にメッセージmがバスに送信され、正しい周期となる。しかし、その周期的な時刻においてバス上に他のノードからメッセージc,dが送信されている場合、メッセージmが衝突し、遅延した時刻にメッセージmがバスに送信されるため、誤った周期となる。このような周期的なメッセージmを同期信号として利用して同期を取る場合、メッセージmが遅延すると、同期時刻がずれ、同期が取れない。また、特許文献1には衝突した場合に送信時間帯をずらす方法が開示されているが、同期信号の送信時間帯をずらすことはできないので、同期信号が衝突した場合には適用できない。そこで、本発明は、同期信号が衝突した場合でも同期を取ることができる通信装置及び通信方法を提供することを課題とする。本発明に係る通信装置は、複数のノードが接続されるネットワークにおいてメッセージを送受信する通信装置であって、同期メッセージを受信した際に同期メッセージと他のメッセージとの衝突を判定する衝突判定手段と、同期時刻を推定する同期時刻推定手段とを備え、衝突判定手段で同期メッセージの他メッセージとの衝突を判定した場合に同期時刻推定手段で推定した同期時刻に基づいて同期を取ることを特徴とする。この通信装置では、衝突判定手段によってネットワーク上で同期メッセージが他のメッセージと衝突したか否かを判定する。同期メッセージが衝突した場合、受信ノードでは同期メッセージを受信する時刻が遅延するので、同期メッセージの受信時刻で精度良く同期が取れない。そこで、通信装置では、同期時刻推定手段によって同期時刻を推定しておき、同期メッセージが他メッセージと衝突した場合にはその推定した同期時刻に基づいて同期を取る。このように、通信装置では、同期メッセージが他メッセージと衝突した場合には推定した同期時刻を用いることにより、衝突の影響を受けずに同期を取ることができる。本発明の上記通信装置では、同期時刻推定手段は、衝突が無かったときに受信した今回の同期メッセージに基づく同期時刻と衝突が無かったときに受信した過去の同期メッセージに基づく同期時刻との差を今回の同期メッセージと過去の同期メッセージとの間の同期メッセージの受信回数で除算して同期メッセージの送信周期を推定し、今回の同期メッセージに基づく同期時刻に推定した同期メッセージの送信周期を加算した時刻を次回の同期時刻として推定する。通信装置では、このような算出方法で次回の同期時刻を算出することにより、次回の同期時刻を高精度かつ簡単に推定できる。本発明に係る通信方法は、複数のノードが接続されるネットワークにおいてメッセージを送受信する通信方法であって、同期メッセージを受信した際に同期メッセージと他のメッセージとの衝突を判定する衝突判定ステップと、同期時刻を推定する同期時刻推定ステップとを含み、衝突判定ステップで同期メッセージの他メッセージとの衝突を判定した場合に同期時刻推定ステップで推定した同期時刻に基づいて同期を取ることを特徴とする。本発明の上記通信方法では、同期時刻推定ステップは、衝突が無かったときに受信した今回の同期メッセージに基づく同期時刻と衝突が無かったときに受信した過去の同期メッセージに基づく同期時刻との差を今回の同期メッセージと過去の同期メッセージとの間の同期メッセージの受信回数で除算して同期メッセージの送信周期を推定し、今回の同期メッセージに基づく同期時刻に推定した同期メッセージの送信周期を加算した時刻を次回の同期時刻として推定する。上記した各通信方法は、上記の各通信装置と同様の作用効果を有している。本発明によれば、同期メッセージ同期信号が他メッセージと衝突した場合には推定した同期時刻を用いることにより、衝突の影響を受けずに同期を取ることができる。以下、図面を参照して、本発明に係る通信装置及び通信方法の実施の形態を説明する。なお、各図において同一又は相当する要素については同一の符号を付し、重複する説明を省略する。本実施の形態では、本発明に係る通信装置を、車両に搭載されるCAN通信システムを構成する各ノード通信機能に適用する。本実施の形態に係るCAN通信システムは、CAN通信プロトコルに基づいてメッセージを送受信する車載LANLocalAreaNetworkであり、CANバスに複数のノードECUが接続されている。特に、本実施の形態では、イベントドリブン通信のCANにおいて、ソフトウェアで擬似的なタイムトリガ通信を実現する処理について詳細に説明する。図1~図7を参照して、本実施の形態に係るCAN通信システム1について説明する。図1は、本実施の形態に係るCAN通信システムの構成図である。図2は、ノード間のメッセージの送受信の説明図である。図3は、本実施の形態に係るCAN通信システムにおいてノード間のメッセージの送受信の一般的な特徴の説明図である。図4は、本実施の形態に係るCAN通信システムにおいて自ノードからメッセージを送信する場合の衝突判定方法の説明図である。図5は、本実施の形態に係るCAN通信システムにおいて自ノードでメッセージを受信する場合の衝突判定方法の説明図である。図6は、本実施の形態に係るCAN通信システムにおける同期メッセージの一例である。図7は、本発明に係るCAN通信システムにおける同期時刻の推定方法の説明図である。CAN通信システム1は、多数のノードECU2からなり、各ノード2がバス3に接続されている。ソフトウェアでタイムトリガ通信を行う場合、CAN通信システム1では、任意のノード2から一定の周期で送信されるメッセージを他のノード2で同期メッセージ同期信号として受信し、同期メッセージを送信したノード2では同期メッセージの送信時刻で同期を取り、同期メッセージを受信したノード2では同期メッセージの受信時刻で同期を取る。特に、他のメッセージと衝突して同期メッセージが遅延すると誤った時刻で同期が取られるので、CAN通信システム1では、受信ノード2で同期メッセージが他のメッセージと衝突するかを判定するとともに次の同期時刻を推定しておき、同期メッセージが衝突した場合には推定した同期時刻で同期を取る。ちなみに、CAN通信システム1では、イベントドリブン通信でもメッセージを送信するので、同期メッセージが他のメッセージと衝突する場合がある。なお、同期メッセージについては、ノード2個々でそれぞれ設定でき、CAN通信システム1の全てのノード2が同じメッセージを同期メッセージとする場合もあるし、各ノード2が異なるメッセージを同期メッセージとする場合もある。本実施の形態では、例えば、図6に示すように、ノードAが送信するメッセージSyncを全てのノードで同期メッセージとし、ノードAではメッセージSyncを送信した時刻を同期時刻とし、他のノードB,,ノードNではメッセージSyncを受信した時刻を同期時刻とする。図2を参照して、ノード間のメッセージの送受信について説明しておく。自ノードでは、図2aに示すように、メッセージmを送信すると、他のノードAでそのメッセージmを受信する。また、自ノードでは、図2bに示すように、ノードAからメッセージmを送信すると、そのメッセージmを受信する。特に、タイムトリガ通信の場合、各ノードでは、同期時刻を基準にして予め設定された送信メッセージのスケジュールに従ってメッセージを送信する。図3を参照して、CANにおけるノードの一般的な特徴について説明しておく。図3aに示すように、自ノードでメッセージmを送信する場合、自ノードでは、通信コントローラにメッセージmをセットした時刻Tt1を測定できる。タイムトリガ通信の場合、この時刻Tt1は、同期時刻を基準にして予め設定されたスケジュールに従った時刻である。また、自ノードでは、メッセージmの送信完了の時刻Tt2バスがビジー状態からアイドル状態に切り替わった時刻を測定できる。しかし、自ノードでは、メッセージmが通信コントローラからバスに送信される実際の時刻Tt3は不明である。例えば、ノードAからメッセージnが送信されており、バスがメッセージnでビジー状態の場合にはメッセージmはメッセージnと衝突し、時刻Tt3は時刻Tt1から遅れる。また、図3bに示すように、自ノードがノードAからのメッセージmを受信する場合、自ノードでは、通信コントローラでメッセージmを受信した受信完了の時刻Tr1を測定できる。また、自ノードでは、バスがビジー状態になっている時間Tiを計測できる。この際、バスに何かのメッセージが送信されていることは判るが、どのメッセージが送信されているかは判らない。しかし、自ノードでは、メッセージmがノードAの通信コントローラにセットされた時刻Tr2は不明である。例えば、ノードBからメッセージnが送信されており、バスがメッセージnでビジー状態の場合にはメッセージmはメッセージnと衝突し、メッセージmは時刻Tr2から遅れてバスに送信される。それでは、ノード2ECUにおける通信機能について説明する。各ノード2では、イベントドリブン通信を行うとともに、ソフトウェアによってタイムトリガ通信を行う。タイムトリガ通信を行う場合、ノード2では、他のノード2からの同期メッセージを受信した場合、同期メッセージが他のメッセージと衝突したかを判定する。同期メッセージが他のメッセージと衝突していない場合、同期メッセージの受信時刻を同期時刻としてスケジュールに従って送信メッセージを送信する。同期メッセージが他のメッセージと衝突した場合、ノード2では、推定した同期時刻を基準にしてスケジュールに従って送信メッセージを送信する。ノード2は、ハードウェアの通信コントローラ20と、ソフトウェアで処理される受信部21、衝突判定部22、タイミング制御部23タイミング予測部24、送信制御部25とで構成される。なお、本実施の形態では、衝突判定部22が特許請求の範囲に記載する衝突判定手段に相当し、タイミング予測部24が特許請求の範囲に記載する同期時刻推定手段に相当する。通信コントローラ20では、バス3の状態ビジー状態/アイドル状態を監視し、その状態を衝突判定部22に提供する。また、通信コントローラ20では、バス3に自ノードが必要なメッセージが送信されている場合にはそのメッセージを受信し、受信したメッセージを受信部21に渡す。また、通信コントローラ20では、タイミング制御部23から送信するメッセージがセットされると、バス3がアイドル状態の場合には直ちにメッセージをバス3に送信し、バス3が他のメッセージでビジー状態の場合に他のメッセージの送信完了後にメッセージを送信する。受信部21では、通信コントローラ20からメッセージを受け取ると、メッセージから必要なデータを取り出す。また、受信部21では、通信コントローラ20からメッセージを受け取ると、そのメッセージの受信完了時刻をタイミング予測部24に提供する。衝突判定部22では、通信コントローラ20からメッセージを送信した場合、送信したメッセージが他のメッセージと衝突したか否かを判定する。また、衝突判定部22では、通信コントローラ20でメッセージ特に、同期メッセージを受信した場合、受信したメッセージが他のメッセージと衝突したか否かを判定する。図4を参照して、送信メッセージの衝突の判定方法について説明する。図4aに示すように、自ノードから送信するメッセージmを通信コントローラ20にセットしたときに、ノードAからメッセージnが既に送信されており、バスがメッセージnでビジー状態の場合、メッセージmがメッセージnと衝突し、メッセージmの送信が遅延する。この場合、メッセージnの送信完了後に、メッセージmがバスに送信されるので、メッセージmの送信開始から送信完了迄の時間が長くなる。そこで、図4bに示すように、衝突判定部22では、ポーリング処理によってメッセージmの送信開始から送信完了迄の時間Ti1を測定する。そして、衝突判定部22では、メッセージmの送信開始から送信完了迄の時間Ti1とメッセージmの送信に必要な時間Ti2とを比較することによって衝突の有無を判定する。送信開始から送信完了迄の時間Ti1がメッセージmの送信時間Ti2よりも長い場合には衝突していると判定し、送信開始から送信完了迄の時間Ti1がメッセージmの送信時間Ti2と同じ長さ同程度の長さの場合には衝突していないと判定する。図5を参照して、受信メッセージの衝突の判定方法について説明する。図5aに示すように、自ノードが受信するノードAのメッセージmがノードAの通信コントローラ20にセットされたときに、ノードBからメッセージnが送信されており、バスがメッセージnでビジー状態の場合、メッセージmがメッセージnと衝突し、メッセージmの送信が遅延する。この場合、メッセージnの送信完了後に、メッセージmがバスに送信されるので、バスのビジー状態が長くなる。そこで、図5bに示すように、衝突判定部22では、ポーリング処理によってバスでのビジー状態になってから受信完了迄の時間Ti3を測定する。そして、衝突判定部22では、バスでのビジー状態になってから受信完了迄の時間Ti3とメッセージmの受信に必要な時間Ti4とを比較することによって衝突の有無を判定する。ビジー状態になってから受信完了迄の時間Ti3がメッセージmの受信時間Ti4よりも長い場合には衝突していると判定し、ビジー状態になってから受信完了迄の時間Ti3がメッセージmの受信時間Ti4と同じ長さ同程度の長さの場合には衝突していないと判定する。タイミング制御部23では、同期時刻を基準として自ノードの送信メッセージのスケジュールに従って送信メッセージの送信タイミングを設定し、送信タイミング送信時刻に応じて送信メッセージを通信コントローラ20にセットする。タイミング制御部23は、タイミング予測部24と送信制御部25からなる。タイミング予測部24では、衝突判定部22で同期メッセージの衝突が無いと判定した場合、次回の同期時刻を推定しておく。また、タイミング予測部24では、衝突判定部22で同期メッセージの衝突が無いと判定した場合、その同期メッセージの受信時刻を同期時刻とし、同期時刻を基準として自ノードの送信メッセージのスケジュールに従ってメッセージの送信タイミングを設定する。また、タイミング予測部24では、衝突判定部22で同期メッセージの衝突が有ると判定した場合、推定されている同期時刻を用いて、推定同期時刻を基準として自ノードの送信メッセージのスケジュールに従ってメッセージの送信タイミングを設定する。図7を参照して、同期時刻の推定方法を説明する。図7の例では、ノードCにおいて、ノードAから一定周期で送信される同期メッセージSyncを利用して同期を取る場合である。この例の場合、過去に送信された同期メッセージS1は他のメッセージとの衝突がなくノードCで遅延なく受信され、次の同期メッセージS2はノードBから送信されたデータメッセージD1と衝突してノードCで遅延して受信され、最新で送信された同期メッセージS3は他のメッセージとの衝突がなくノードCで遅延なく受信された。ここで、過去の同期メッセージS1の受信時刻が真であったときの同期時刻を同期時刻履歴と呼ぶ。また、今回最新の同期メッセージS3の受信時刻が真であったときの同期時刻を同期時刻と呼ぶ。なお、同期メッセージS2の受信時刻は遅延しているので、同期時刻としては偽である。同期メッセージS2の受信時刻は偽であるので、過去の同期メッセージS1の受信時刻と同期メッセージS2の受信時刻との差は同期メッセージの正しい送信周期でなく、同期メッセージS2の受信時刻と今回の同期メッセージS3の受信時刻との差も同期メッセージの正しい送信周期でない。しかし、過去の同期メッセージS1の受信時刻と今回の同期メッセージS3の受信時刻は共に真であるので、過去の同期メッセージS1の受信時刻同期時刻履歴と今回の同期メッセージS3の受信時刻同期時刻との差は、2回分の正しい送信周期である。したがって、同期時刻と同期時刻履歴との差をその間の同期メッセージの受信回数周期の個数で除算することよって、同期メッセージの正しい送信周期を推定できる。さらに、この正しい送信周期に同期時刻今回の真の受信時刻を加算することによって、次回の同期メッセージS4の同期時刻を推定できる。そこで、タイミング予測部24では、同期時刻同期時刻―同期時刻履歴÷同期メッセージの受信回数を算出することによって次の同期時刻を推定する。このために、タイミング予測部24では、衝突判定部22で同期メッセージの衝突が無いと判定した場合、その同期メッセージの受信時刻を同期時刻履歴と記憶しておくとともに、同期メッセージの受信回数に1を設定しておく。また、タイミング予測部24では、衝突判定部22で同期メッセージの衝突が有ると判定した場合、同期メッセージの受信回数として前回値に1を加算しておく。送信制御部25では、タイミング予測部24で送信メッセージの送信タイミングを設定すると、その送信タイミング送信時刻になると送信メッセージを通信コントローラ20にセットする。図1~図7を参照して、CAN通信システム1のノード2におけるタイムトリガ通信の動作について説明する。ここでは、図8のフローチャートに沿ってメッセージ送信時の衝突判定処理を説明し、図9のフローチャートに沿ってメッセージ受信時の衝突判定処理を説明し、図10のフローチャートに沿って同期信号の推定処理を説明する。メッセージ送信時の衝突判定処理について説明する。ノード2のタイミング制御部23では、同期時刻を基準にして自ノードの送信メッセージのスケジュールに従ってメッセージの送信時刻を設定し、送信時刻になると通信コントローラ20に送信メッセージをセットするS10。このとき、ノード2の衝突判定部22では、非アイドル検出回数に0を設定するS11。非アイドル検出回数は、ポーリングによってバス3の非アイドル状態ビジー状態が検出された回数を示す。衝突判定部22では、通信コントローラ20で監視されているバス3の状態ビジー/アイドルに基づいて、バス状態がビジーかあるいはアイドルかを判定するS12。S12の判定にてビジーと判定した場合、衝突判定部22では、非アイドル検出回数の前回値に1を加算するS13。そして、衝突判定部22では、ポーリング周期が経過したか否かを判定し、ポーリング周期が経過するまで待つS14。S14にてポーリング周期が経過したと判定した場合、S12に戻って、衝突判定部22では、上記と同様に、バス状態がビジーかあるいはアイドルかを判定するS12。ここでは、自ノードがメッセージの送信開始から送信完了バス3の状態がアイドルへ切り替わる迄の時間が、非アイドル検出回数として測定される。S12の判定にてアイドルと判定した場合、衝突判定部22では、非アイドル回数がn回未満か否かを判定するS15。このn回は、メッセージの送信時間より少し長い時間に相当する非アイドル検出回数であり、ポーリング周期とメッセージの送信時間によって変わる。S15にて非アイドル回数がn回未満と判定した場合、衝突判定部22では、送信メッセージが他のメッセージと衝突していないと判定し、戻り値として衝突無しを設定するS16。S15にて非アイドル回数がn回以上と判定した場合、衝突判定部22では、送信メッセージが他のメッセージと衝突したと判定し、戻り値として衝突有りを設定するS17。メッセージ受信時の衝突判定処理について説明する。衝突判定部22では、ポーリング周期が経過したか否かを判定し、ポーリング周期が経過するまで待つS20。S20にてポーリング周期が経過したと判定した場合、衝突判定部22では、通信コントローラ20でメッセージ例えば、同期メッセージを受信したか否かを判定するS21。S21にてメッセージを受信していないと判定した場合、非アイドル検出回数を判定することなく、衝突判定部22では、通信コントローラ20で監視されているバス3の状態ビジー/アイドルに基づいて、バス状態がビジーかあるいはアイドルかを判定するS25。S25の判定にてアイドルと判定した場合、衝突判定部22では、非アイドル検出回数に0を設定しS26、S20に戻る。一方、S25の判定にてビジーと判定した場合、衝突判定部22では、非アイドル検出回数の前回値に1を加算しS27、S20に戻る。ここでは、バス3の状態がビジーになってからメッセージの受信完了バス3の状態がアイドルへ切り替わる迄の時間が、非アイドル検出回数として測定される。S21にてメッセージを受信したと判定した場合メッセージ受信完了、衝突判定部22では、非アイドル回数がn回未満か否かを判定するS22。このn回は、メッセージの受信時間より少し長い時間に相当する非アイドル検出回数であり、ポーリング周期とメッセージの受信時間によって変わる。S22にて非アイドル回数がn回未満と判定した場合、衝突判定部22では、受信メッセージが他のメッセージと衝突していないと判定しS23、上記で説明したS25に移行する。S22にて非アイドル回数がn回以上と判定した場合、衝突判定部22では、受信メッセージが他のメッセージと衝突したと判定しS24、上記で説明したS25に移行する。タイミング制御部23では、同期メッセージを受信し、同期メッセージが他のメッセージと衝突していないと判定した場合には同期メッセージの受信時刻を同期時刻として用い、同期メッセージが他のメッセージと衝突したと判定した場合には推定されている同期時刻を同期時刻として用いる。そして、タイミング制御部23では、その同期時刻を基準にして自ノードの送信メッセージのスケジュールに従ってメッセージの送信時刻を設定する。同期信号の推定処理について説明する。同期メッセージを受信する毎に、タイミング予測部24では、今回の同期メッセージが衝突無しの場合、前回までに設定されている同期時刻履歴と同期メッセージ受信回数を用いて、今回の同期時刻今回の同期時刻-同期時刻履歴÷同期メッセージ受信回数によって次回の同期時刻を推定するS30。そして、タイミング予測部24では、同期メッセージの受信時刻が真かあるいは偽かを判定するS31。同期メッセージの受信時刻が真と判定した場合衝突判定部22で同期メッセージが衝突無しと判定している場合、タイミング予測部24では、同期メッセージの受信回数として1を設定しS32、同期時刻履歴に受信した同期メッセージの受信時刻同期時刻を設定するS33。同期メッセージの受信時刻が偽と判定した場合衝突判定部22で同期メッセージが衝突有りと判定している場合、タイミング予測部24では、同期メッセージ受信回数の前回値に1を加算するS34。このCAN通信システム1の各ノード2によれば、同期メッセージが他メッセージと衝突した場合には推定した同期時刻を用いることにより、衝突の影響を受けずに、推定した同期時刻で同期を取ることができる。その結果、CAN通信システム1全体として、同期が取れ、各ノード2でスケジュールに従ってメッセージを送信することによってタイムトリガ通信でのメッセージの衝突がなくなる。また、CAN通信システム1の各ノード2によれば、同期時刻同期時刻-同期時刻履歴÷同期メッセージ受信回数によって次回の同期時刻を算出することにより、次回の同期時刻を高精度かつ簡単に推定できる。なお、CANは、イベントドリブン通信であるので、メッセージ同士の衝突とそれによる通信遅延が発生する。そのため、クリティカルなシステムでは、その最悪のケースを見込んで、バスに流す通信データ総量メッセージ総数を制限する必要が出てくる。CAN通信システム1では、イベントドリブン通信の上でFlexRayのようなタイムトリガ通信をソフトウェア的に実現することにより、メッセージの衝突を軽減もしくは発生させないようにできる。それによって、通信データ総量を制限することなく、理論的には、通信帯域の100まで増やすことができる。これによって、ネットワークを経由したノードECU間の協調制御の精度を上げたり、新たな機能通信データを追加することができるため、製品としての付加価値を高めることができる。以上、本発明に係る実施の形態について説明したが、本発明は上記実施の形態に限定されることなく様々な形態で実施される。例えば、本実施の形態では車両に搭載されるCAN通信システムに適用したが、車両以外のCANにも適用可能であり、CAN以外のネットワークにも適用可能である。また、本実施の形態では同期時刻の推定方法の一例を示したが、他の方法で同期時刻を推定してもよい。また、本実施の形態ではメッセージの衝突の判定方法の一例を示したが、他の方法で衝突を判定してもよい。"