(57)【特許請求の範囲】
【請求項１】
３つ以上の通信装置が共通の通信線で接続され、一の通信装置が送信したメッセージを他の複数の通信装置が受信する通信システムにおいて、
各通信装置に対して一又は複数の送信権利が予め割り当てられ、該送信権利毎に定められた順序で前記３つ以上の通信装置が巡回的にメッセージの送信を行うようにしてあり、
前記通信装置は、
各送信権利に係るメッセージ受信の成否をそれぞれ示す複数の受信成否情報、及び、他の通信装置へ送信すべきデータを含むメッセージを生成して送信するメッセージ送信手段と、
他の通信装置から受信したメッセージに含まれる受信成否情報に応じてメッセージの再送信を行うメッセージ再送信手段と、
起動後の所定サイクルに亘ってメッセージの送信を行わず、前記所定サイクルの間に他の通信装置からメッセージを受信した場合には該メッセージに同期して以降のメッセージ送信を行い、前記所定サイクルの間に他の通信装置からメッセージを受信しない場合にはメッセージ送信を行って、他の通信装置とのメッセージ送受信を開始する通信開始手段と
を有すること
を特徴とする通信システム。
【請求項２】
前記通信装置は、メッセージ送信までの待機時間を計時する計時手段を有し、
前記通信装置の通信開始手段は、メッセージ送信を行った場合又は前記所定サイクルの間に他の通信装置から異常なメッセージを受信した場合に、割り当てられた送信権利に応じた待機時間を前記計時手段にて計時した後、メッセージの送信を行うようにしてあり、
複数の前記通信装置が、前記計時手段にてそれぞれ異なる待機時間を計時するようにしてあること
を特徴とする請求項１に記載の通信システム。
【請求項３】
３つ以上の通信装置が共通の通信線で接続され、一の通信装置が送信したメッセージを他の複数の通信装置が受信する通信システムにおいて、
各通信装置に対して一又は複数の送信権利が予め割り当てられ、該送信権利毎に定められた順序で前記３つ以上の通信装置が巡回的にメッセージの送信を行うようにしてあり、
前記通信装置は、
各送信権利に係るメッセージ受信の成否をそれぞれ示す複数の受信成否情報、及び、他の通信装置へ送信すべきデータを含むメッセージを生成して送信するメッセージ送信手段と、
他の通信装置から受信したメッセージに含まれる受信成否情報に応じてメッセージの再送信を行うメッセージ再送信手段と、
メッセージ送信までの待機時間を計時する計時手段と、
所定サイクルの間に他の通信装置からメッセージを受信しない場合に、割り当てられた送信権利に応じた待機時間を前記計時手段にて計時した後、メッセージ送信を再開する通信再開手段と
を有し、
複数の前記通信装置が、前記計時手段にてそれぞれ異なる待機時間を計時するようにしてあること
を特徴とする通信システム。
【請求項４】
３つ以上の通信装置が共通の通信線で接続され、一の通信装置が送信したメッセージを他の複数の通信装置が受信する通信システムにおいて、
各通信装置に対して一又は複数の送信権利が予め割り当てられ、該送信権利毎に定められた順序で前記３つ以上の通信装置が巡回的にメッセージの送信を行うようにしてあり、
前記通信装置は、
各送信権利に係るメッセージ受信の成否をそれぞれ示す複数の受信成否情報、及び、他の通信装置へ送信すべきデータを含むメッセージを生成して送信するメッセージ送信手段と、
他の通信装置から受信したメッセージに含まれる受信成否情報に応じてメッセージの再送信を行うメッセージ再送信手段と、
メッセージ送信の停止を要求するメッセージを送信する通信停止要求送信手段と、
他の通信装置から通信処理の停止を要求するメッセージを受信する通信停止要求受信手段と、
所定サイクルに亘って、複数の他の通信装置から前記通信停止要求受信手段が通信処理の停止を要求するメッセージを受信した場合に、メッセージ送信を停止する通信停止制御手段と
を有すること
を特徴とする通信システム。
【請求項５】
前記通信装置のメッセージ送信手段は、自らの一の送信権利に係る前回のメッセージ送信から今回のメッセージ送信までの１サイクル間に送信される他の送信権利に係るメッセージの受信の成否を、前記受信成否情報として送信するメッセージに含ませるようにしてあること
を特徴とする請求項１乃至請求項４のいずれか１つに記載の通信システム。
【請求項６】
各通信装置は、一の通信権利に係るメッセージの送信が所定時間に亘って行われない場合、次の通信権利に係るメッセージの送信又は受信を行うようにしてあること
を特徴とする請求項１乃至請求項５のいずれか１つに記載の通信システム。
【請求項７】
前記通信装置のメッセージ送信手段は、送信権利を識別するための識別情報を含むメッセージを生成して送信するようにしてあり、
各通信装置は、受信したメッセージの前記識別情報に基づいて、メッセージ送受信の同期を行うようにしてあること
を特徴とする請求項１乃至請求項６のいずれか１つに記載の通信システム。
【請求項８】
前記通信装置のメッセージ送信手段は、前記識別情報の誤りを検出又は訂正するための情報を含むメッセージを生成して送信するようにしてあること
を特徴とする請求項７に記載の通信システム。
【請求項９】
前記通信装置は、メッセージの送受信に係るエラーの発生数を計数するエラーカウンタを有し、
前記通信装置のメッセージ送信手段は、前記エラーカウンタが計数したエラー発生数が所定値を超えた場合に、メッセージ送信の頻度を低減するようにしてあること
を特徴とする請求項１乃至請求項８のいずれか１つに記載の通信システム。
【請求項１０】
共通の通信線を介して２つ以上の他の装置との間でメッセージの送受信を行う通信装置において、
一又は複数の送信権利が予め割り当てられており、
他の装置に割り当てられた送信権利を含む各送信権利に係るメッセージ受信の成否をそれぞれ示す複数の受信成否情報、及び、他の装置へ送信すべきデータを含むメッセージを生成して送信するメッセージ送信手段と、
他の装置から受信したメッセージに含まれる受信成否情報に応じてメッセージの再送信を行うメッセージ再送信手段と、
起動後の所定サイクルに亘ってメッセージの送信を行わず、前記所定サイクルの間に他の装置からメッセージを受信した場合には該メッセージに同期して以降のメッセージ送信を行い、前記所定サイクルの間に他の装置からメッセージを受信しない場合にはメッセージ送信を行って、他の装置とのメッセージ送受信を開始する通信開始手段と
を備え、
前記メッセージ送信手段及び前記メッセージ再送信手段は、割り当てられた送信権利に定められた順序で、前記他の装置との間で巡回的にメッセージの送信を行うようにしてあること
を特徴とする通信装置。
【請求項１１】
共通の通信線を介して２つ以上の他の装置との間でメッセージの送受信を行う通信装置において、
一又は複数の送信権利が予め割り当てられており、
他の装置に割り当てられた送信権利を含む各送信権利に係るメッセージ受信の成否をそれぞれ示す複数の受信成否情報、及び、他の装置へ送信すべきデータを含むメッセージを生成して送信するメッセージ送信手段と、
他の装置から受信したメッセージに含まれる受信成否情報に応じてメッセージの再送信を行うメッセージ再送信手段と、
メッセージ送信の停止を要求するメッセージを送信する通信停止要求送信手段と、
他の装置から通信処理の停止を要求するメッセージを受信する通信停止要求受信手段と、
所定サイクルに亘って、複数の他の装置から前記通信停止要求受信手段が通信処理の停止を要求するメッセージを受信した場合に、メッセージ送信を停止する通信停止制御手段と
を備え、
前記メッセージ送信手段及び前記メッセージ再送信手段は、割り当てられた送信権利に定められた順序で、前記他の装置との間で巡回的にメッセージの送信を行うようにしてあること
を特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車輌に搭載されたＥＣＵ（Electronic Control Unit）などの複数の通信装置が、共通の通信線（バス）を介してデータの送受信を行う通信システム及び通信装置に関する。
【背景技術】
【０００２】
従来、車輌には複数の電子機器が搭載されて種々の処理を行っている。これらの電子機器の動作を制御するために車輌には複数のＥＣＵが搭載されている。また、複数のＥＣＵを協調して動作させるために、各ＥＣＵをネットワークを介して相互に接続し、データの送受信を行って複数のＥＣＵが情報を共有することが行われており、この場合に通信規約としてＣＡＮ（Controller Area Network）（非特許文献１、非特許文献２参照）が広く採用されている。
【０００３】
ＣＡＮの規約では、作動信号を伝送するツイストペアケーブルからなるバスに複数のＥＣＵが接続され、各ＥＣＵは作動信号によって表されるデジタルデータを送受信する。また、ＣＡＮはシリアル通信のプロトコルであり、ＣＡＮバスに接続されている複数のＥＣＵのうちの一のＥＣＵのみがデータを送信することができ、他のＥＣＵは一のＥＣＵがデータの送信を終了するまで待機するように制御される。また、複数のＥＣＵが同時的にデータの送信を行った場合には、データに付されたＩＤを基に調停が行われ、優先度の高いデータの送信を行うように制御される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ＩＳＯ  １１８９８−１：２００３  Road vehicles--Controller area network（CAN）--Part1：Data link layer and physical signaling
【非特許文献２】ＩＳＯ  １１５１９−１：１９９４  Road vehicles--Low-speed serial data communication--Part1：General and definitions
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年では、車輌にて行われる電子制御の高機能化に伴って、車輌に搭載されるＥＣＵが高機能化されると共に、搭載数が増加しており、ＥＣＵ間で送受信されるデータ量及び送受信の発生頻度が増大している。このため従来のＣＡＮのプロトコルに従う通信システムの通信速度（１Ｍｂｐｓ程度）では、送受信できるデータ量が十分とはいえず、現状の車載の通信システムは通信容量の限界に達しつつある。
【０００６】
これに対して、通信速度の高速化を実現する通信プロトコルとしてＦｌｅｘＲａｙなどのプロトコルが提案されている。このような別のプロトコルを採用することで通信速度の高速化が実現できるが、既存の通信システム全体をＣＡＮプロトコルから別のプロトコルへ変更することは、装置の開発コスト及びシステムの信頼性等の面で負担が大きい。
【０００７】
そこで、従来のＣＡＮによる通信システムに対して、高速通信が要求される箇所から徐々にＣＡＮと互換性のある高速な上位プロトコルへ変更していくことができる仕組みを作ることが求められ、これにより上記の開発コスト及び信頼性等に係る問題をできるだけ取り除くことが可能となる。
【０００８】
従来のＣＡＮプロトコルにおいて通信速度の向上を制限していた要因には、複数のＥＣＵが同時的にデータを送信した場合に行われる調停処理（アービトレーション）に必要な処理時間が挙げられる。例えばアービトレーションを行うためには、各通信装置は、バスに対して自らの送信データに係る信号を出力した後、他の通信装置が出力する信号との衝突によるバス上の信号の変化の有無を検出するが、他の通信装置が出力する信号の伝搬遅延などを考慮して、ある程度の待機時間後に信号検出を行う必要ある。このときの待機時間が通信速度向上の妨げとなる。
【０００９】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、ＣＡＮのプロトコルをベースに、アービトレーションの処理時間などの速度向上に係る制限要因を解消して、バスに接続された複数の通信装置が行うデータの送受信を高速化することができる通信システム及び通信装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明に係る通信システムは、３つ以上の通信装置が共通の通信線で接続され、一の通信装置が送信したメッセージを他の複数の通信装置が受信する通信システムにおいて、各通信装置に対して一又は複数の送信権利が予め割り当てられ、該送信権利毎に定められた順序で前記３つ以上の通信装置が巡回的にメッセージの送信を行うようにしてあり、前記通信装置は、各送信権利に係るメッセージ受信の成否をそれぞれ示す複数の受信成否情報、及び、他の通信装置へ送信すべきデータを含むメッセージを生成して送信するメッセージ送信手段と、他の通信装置から受信したメッセージに含まれる受信成否情報に応じてメッセージの再送信を行うメッセージ再送信手段と、起動後の所定サイクルに亘ってメッセージの送信を行わず、前記所定サイクルの間に他の通信装置からメッセージを受信した場合には該メッセージに同期して以降のメッセージ送信を行い、前記所定サイクルの間に他の通信装置からメッセージを受信しない場合にはメッセージ送信を行って、他の通信装置とのメッセージ送受信を開始する通信開始手段とを有することを特徴とする。
【００１１】
また、本発明に係る通信システムは、前記通信装置が、メッセージ送信までの待機時間を計時する計時手段を有し、前記通信装置の通信開始手段は、メッセージ送信を行った場合又は前記所定サイクルの間に他の通信装置から異常なメッセージを受信した場合に、割
り当てられた送信権利に応じた待機時間を前記計時手段にて計時した後、メッセージの送信を行うようにしてあり、複数の前記通信装置が、前記計時手段にてそれぞれ異なる待機時間を計時するようにしてあることを特徴とする。
【００１２】
また、本発明に係る通信システムは、３つ以上の通信装置が共通の通信線で接続され、一の通信装置が送信したメッセージを他の複数の通信装置が受信する通信システムにおいて、各通信装置に対して一又は複数の送信権利が予め割り当てられ、該送信権利毎に定められた順序で前記３つ以上の通信装置が巡回的にメッセージの送信を行うようにしてあり、前記通信装置は、各送信権利に係るメッセージ受信の成否をそれぞれ示す複数の受信成否情報、及び、他の通信装置へ送信すべきデータを含むメッセージを生成して送信するメッセージ送信手段と、他の通信装置から受信したメッセージに含まれる受信成否情報に応じてメッセージの再送信を行うメッセージ再送信手段と、メッセージ送信までの待機時間を計時する計時手段と、所定サイクルの間に他の通信装置からメッセージを受信しない場合に、割り当てられた送信権利に応じた待機時間を前記計時手段にて計時した後、メッセージ送信を再開する通信再開手段とを有し、複数の前記通信装置が、前記計時手段にてそれぞれ異なる待機時間を計時するようにしてあることを特徴とする。
【００１３】
また、本発明に係る通信システムは、３つ以上の通信装置が共通の通信線で接続され、一の通信装置が送信したメッセージを他の複数の通信装置が受信する通信システムにおいて、各通信装置に対して一又は複数の送信権利が予め割り当てられ、該送信権利毎に定められた順序で前記３つ以上の通信装置が巡回的にメッセージの送信を行うようにしてあり、前記通信装置は、各送信権利に係るメッセージ受信の成否をそれぞれ示す複数の受信成否情報、及び、他の通信装置へ送信すべきデータを含むメッセージを生成して送信するメッセージ送信手段と、他の通信装置から受信したメッセージに含まれる受信成否情報に応じてメッセージの再送信を行うメッセージ再送信手段と、メッセージ送信の停止を要求するメッセージを送信する通信停止要求送信手段と、他の通信装置から通信処理の停止を要求するメッセージを受信する通信停止要求受信手段と、所定サイクルに亘って、複数の他の通信装置から前記通信停止要求受信手段が通信処理の停止を要求するメッセージを受信した場合に、メッセージ送信を停止する通信停止制御手段とを有することを特徴とする。
【００１４】
また、本発明に係る通信システムは、前記通信装置のメッセージ送信手段が、自らの一の送信権利に係る前回のメッセージ送信から今回のメッセージ送信までの１サイクル間に送信される他の送信権利に係るメッセージの受信の成否を、前記受信成否情報として送信するメッセージに含ませるようにしてあることを特徴とする。
【００１５】
また、本発明に係る通信システムは、各通信装置が、一の通信権利に係るメッセージの送信が所定時間に亘って行われない場合、次の通信権利に係るメッセージの送信又は受信を行うようにしてあることを特徴とする。
【００１６】
また、本発明に係る通信システムは、前記通信装置のメッセージ送信手段は、送信権利を識別するための識別情報を含むメッセージを生成して送信するようにしてあり、各通信装置は、受信したメッセージの前記識別情報に基づいて、メッセージ送受信の同期を行うようにしてあることを特徴とする。
【００１７】
また、本発明に係る通信システムは、前記通信装置のメッセージ送信手段は、前記識別情報の誤りを検出又は訂正するための情報を含むメッセージを生成して送信するようにしてあることを特徴とする。
【００１８】
また、本発明に係る通信システムは、前記通信装置は、メッセージの送受信に係るエラーの発生数を計数するエラーカウンタを有し、前記通信装置のメッセージ送信手段は、前記エラーカウンタが計数したエラー発生数が所定値を超えた場合に、メッセージ送信の頻度を低減するようにしてあることを特徴とする。
【００１９】
また、本発明に係る通信装置は、共通の通信線を介して２つ以上の他の装置との間でメッセージの送受信を行う通信装置において、一又は複数の送信権利が予め割り当てられており、他の装置に割り当てられた送信権利を含む各送信権利に係るメッセージ受信の成否をそれぞれ示す複数の受信成否情報、及び、他の装置へ送信すべきデータを含むメッセージを生成して送信するメッセージ送信手段と、他の装置から受信したメッセージに含まれる受信成否情報に応じてメッセージの再送信を行うメッセージ再送信手段と、起動後の所定サイクルに亘ってメッセージの送信を行わず、前記所定サイクルの間に他の装置からメ
ッセージを受信した場合には該メッセージに同期して以降のメッセージ送信を行い、前記所定サイクルの間に他の装置からメッセージを受信しない場合にはメッセージ送信を行って、他の装置とのメッセージ送受信を開始する通信開始手段とを備え、前記メッセージ送信手段及び前記メッセージ再送信手段は、割り当てられた送信権利に定められた順序で、前記他の装置との間で巡回的にメッセージの送信を行うようにしてあることを特徴とする。
【００２０】
また、本発明に係る通信装置は、共通の通信線を介して２つ以上の他の装置との間でメッセージの送受信を行う通信装置において、一又は複数の送信権利が予め割り当てられており、他の装置に割り当てられた送信権利を含む各送信権利に係るメッセージ受信の成否をそれぞれ示す複数の受信成否情報、及び、他の装置へ送信すべきデータを含むメッセージを生成して送信するメッセージ送信手段と、他の装置から受信したメッセージに含まれる受信成否情報に応じてメッセージの再送信を行うメッセージ再送信手段と、メッセージ送信の停止を要求するメッセージを送信する通信停止要求送信手段と、他の装置から通信処理の停止を要求するメッセージを受信する通信停止要求受信手段と、所定サイクルに亘って、複数の他の装置から前記通信停止要求受信手段が通信処理の停止を要求するメッセージを受信した場合に、メッセージ送信を停止する通信停止制御手段とを備え、前記メッセージ送信手段及び前記メッセージ再送信手段は、割り当てられた送信権利に定められた順序で、前記他の装置との間で巡回的にメッセージの送信を行うようにしてあることを特徴とする。
【００２１】
本発明においては、複数の通信装置が共通の通信線（バス）で接続されたネットワーク構成において、各通信装置に予め一又は複数の送信権利（以下、スロットという）を割り当て、各通信装置が自らのスロットにて予め定められた順序で巡回的にメッセージの送信を行う構成とする。これにより、複数の通信装置が予め定められた順序でバスを時分割に利用してデータの送信を行う構成となるため、従来のＣＡＮプロトコルのように複数の通信装置が同時的にデータ送信を行うことがなく、アービトレーションを行う必要がない。よって、アービトレーションに要する時間の制約がなくなり、通信速度を高速化することが可能となる。
また各通信装置は、一のスロットに係るメッセージ送信を行う場合に、他のスロットに係るメッセージ受信の成否をそれぞれ示す複数の受信成否情報と、他の通信装置へ送信すべきデータとを含むメッセージを作成して送信する。なお他の通信装置へ送信すべきデータがない場合には、受信成否情報を含んでデータを含まないメッセージを作成して送信してもよい。受信成否情報及びデータを含むメッセージを送信する構成とすることによって、各通信装置は、自らに与えられたスロットを有効に活用して他の通信装置へメッセージ受信の成否を知らせることができ、且つ、自らが有するデータを他の通信装置へ与えることができる。
一の通信装置が送信したメッセージは、バスに接続された他の全ての通信装置にて受信される。メッセージを受信した各通信装置は、メッセージに含まれるデータを取得することができると共に、メッセージに含まれる受信成否情報から以前に自らが送信したメッセージが正しく受信されたか否かを判断することができる。よって各通信装置は、一のスロットに係る前回のメッセージ送信からこのスロットに係る次のメッセージ送信までの間の１サイクル間に受信したメッセージに含まれる受信成否情報を調べ、前回に送信したメッセージが正しく受信されていない場合には、同一スロットに係る次の送信の機会が与えられた際にメッセージの再送信を行うことができる。
これにより、従来のＣＡＮプロトコルのようなアービトレーションを行うことなく、メッセージ送信を衝突させることなく複数の通信装置が効率よくメッセージ送信を巡回的に行うことができ、何らかの不具合によってメッセージが正しく受信されなかった場合であっても確実にメッセージを再送信することができる。
【００２２】
また、本発明においては、各通信装置が作成するメッセージには、一の送信権利に係る前回のメッセージ送信から今回のメッセージ送信までの１サイクル間に送受信される他のスロットに係るメッセージ受信の成否を受信成否情報として含ませる。即ち、通信システム中のスロット総数分の受信成否情報が１サイクル分の情報としてメッセージに含まれる（ただし、自らのスロットについての受信成否情報については省略することもでき、この場合にはスロットの総数−１の情報がメッセージに含まれる）。このように１サイクル分の受信成否情報を各通信装置が送信し、他の通信装置から送信された受信成否情報を１サイクル間受信することによって、各通信装置は、バスを共有する他の全ての通信装置にて自らの送信メッセージが正しく受信されたか否かを知ることができる。
【００２３】
また、本発明においては、一のスロットに係るメッセージの送信順に至った後、このスロットに係るメッセージ送信がなされない場合、このスロットが割り当てられた通信装置の処理が何らかの理由（例えば故障などの不具合又はスリープモード等）によって停止していることが推定される。そこで各通信装置は、一のスロットに係るメッセージ送信が所定時間に亘って行われない場合、このスロットに係るメッセージ送受信の処理を省略して、次のスロットに係るメッセージ送受信の処理を行う。これにより、メッセージの送受信が行われない期間を可能な限り短くすることができ、通信速度の高速化に寄与することができる。また通信システムにオプション装備を追加するためなどで予備のスロットを設けた場合であっても、オプション装備が追加されていない状態では予備のスロットに係る処理を省略することができる。
【００２４】
また、本発明においては、各通信装置が作成するメッセージには、スロットを識別するための識別情報（例えばスロット番号）を含める。本通信システムに参加する複数の通信装置は、バスを時分割で共用するために、バスを使用中のスロットがいずれであるかを把握し、同期してメッセージ送信を行う必要がある。そこで各通信装置は、受信したメッセージに含まれるスロット番号の受信タイミングに合わせて、メッセージ送受信に係る処理の同期を行う。これにより複数の通信装置が同期して処理を行うことができ、確実にメッセージ送受信を行うことができる。
【００２５】
また、本発明においては、各通信装置が作成するメッセージには、スロット番号などの識別情報と共に、この識別情報の誤り検出又は訂正を行うための情報を含む。従来のＣＡＮプロトコルにおいても、メッセージ全体の誤り検出のための情報（ＣＲＣ（Cyclic Redundancy Check）シーケンス）がメッセージに含まれていたが、これとは別にスロット番号などのみの誤り検出又は訂正のための情報をメッセージに含める。本通信システムでは、バスを時分割で利用して複数の通信装置が巡回的にメッセージ送信を行うために、送信されたメッセージがいずれのスロットに係るものであるかを判断することは重要な処理であり、この判断に用いることができるスロット番号などの識別情報に誤りが発生すると、メッセージの送信順序などに破綻をきたす虞がある。よって、識別情報の誤り検出又は訂正のための情報をメッセージに含むことで、巡回的なメッセージの送受信を確実に行うことが可能となる。またメッセージ全体で誤りを検出した場合であっても、誤りが識別情報にて生じたか否かを判断できるため、その後のメッセージ再送信に係る処理などを容易に行うことができる。
【００２６】
また、本発明においては、メッセージ送受信の際に発生したエラーの数を各通信装置がエラーカウンタにてカウントする。エラーの発生数が多い場合には、通信装置の故障などが生じている虞があるため、カウントしたエラーの発生数が所定値を超えた場合に、通信装置はメッセージ送信の頻度を低減する。メッセージ送信の頻度低減は、例えば巡回的に与えられる自らの送信順に至った場合であっても、数サイクルに１度のみメッセージの送信を行うなどの方法で実現できる。更に、メッセージ送信の頻度を低減した後にもエラーが発生し、エラーカウンタの値が上限値を超えた場合には、通信装置のメッセージ送信を停止してもよい。
このように、エラー発生数に応じたメッセージ送信の制御を行うことによって、故障などが生じた通信装置が送信するメッセージが他の通信装置の処理に悪影響を与えることを防止することができ、通信システムの信頼性を向上できる。
【００２７】
また、本発明においては、バスを共有する複数の通信装置は処理（特に、スロットに係る処理）を同期させて行う必要がある。電源投入又はスリープ状態からの復帰等によって通信システムが起動された直後は、複数の通信装置は同期がとれていない状態であるため、各通信装置は、まず起動後に他の通信装置との同期を確立した後、通信処理を開始する。
このときに各通信装置は、起動直後の所定サイクルの間は他の通信装置からのメッセージ受信に徹し、所定サイクルの間にメッセージを受信した場合には、既に通信を開始した他の通信装置が存在すると判断できるため、この通信装置に同期すべく、受信メッセージに同期して以降のメッセージ送信を行い、通信処理を開始する。所定サイクルの間にメッセージを受信しない場合には、既に通信を開始した他の通信装置が存在しないと判断できるため、自らがメッセージ送信を行って通信処理を開始する。
これにより、通信システムの起動後に複数の通信装置が同期して通信処理を開始することができる。
【００２８】
ただし、所定サイクルの間にメッセージを受信していないと判断して複数の通信装置が同時的にメッセージ送信を開始する可能性があり、このような場合にはバス上で複数のメッセージが衝突し、他の通信装置は正常なメッセージを受信することができない。そこで本発明においては、各通信装置が計時手段を有し、メッセージ送信を行った場合又は異常なメッセージを受信した場合に、自らに割り当てられたスロットに応じた待機時間を計時手段によって計時した後、メッセージの送信を行う。
各通信装置に割り当てられたスロットに応じた待機時間とすることにより、通信システムの複数の通信装置はそれぞれ異なる時間を計時手段により計時することとなる。よって、メッセージの衝突が発生した後、最も短い待機時間が設定された通信装置が次のメッセージ送信を単独で行うこととなり、他の通信装置はこのメッセージを正常に受信して同期することができる。
【００２９】
また、通信システムが起動されて通信装置間の同期が確立した後、通信の不具合などによって一又は複数の通信装置に同期のズレが生じる可能性がある。そこで本発明においては、各通信装置が計時手段を有し、２サイクルなどの所定サイクルに亘って他の通信装置からメッセージを受信しない場合に、自らに割り当てられたスロットに応じた待機時間を計時手段によって計時した後、メッセージの送信を行う。
各通信装置に割り当てられたスロットに応じた待機時間とすることにより、通信システムの複数の通信装置はそれぞれ異なる時間を計時手段により計時することとなる。よって、同期にズレが生じることによって複数の通信装置が送信するメッセージが衝突し、各通信装置が他の通信装置からのメッセージを受信しない状態となった場合であっても、最も短い待機時間が設定された通信装置が次のメッセージ送信を単独で行うこととなり、他の通信装置はこのメッセージを正常に受信して同期することができる。
【００３０】
また、本発明においては、通信システムがスリープモードなどの省電力動作状態へ移行する場合、各通信装置は、メッセージ送信を停止する要求（スリープ要求）を他の通信装置へ送信すると共に、他の通信装置からのスリープ要求を受信する。その後、所定サイクルに亘って、通信システム内の複数の通信装置からスリープ要求を受信した場合に、各通信装置はメッセージの送信を停止してスリープモードへ遷移する。これにより、通信システム中の複数の通信装置がスリープモードへの移行準備を整えた後、これら複数の通信装置が揃ってスリープモードへ移行することができる。
【発明の効果】
【００３１】
本発明による場合は、バスに接続された複数の通信装置にスロットを割り当て、各通信装置が予め定められた順序で巡回的にメッセージ送信を行い、一のスロットに係るメッセージ送信を行う場合には、他のスロットに係るメッセージ受信の成否を示す受信成否情報、及び、他の通信装置へ送信すべきデータを含むメッセージを作成して送信し、メッセージを受信した場合には、このメッセージに含まれる受信成否情報に応じた再送信処理を行う構成とすることにより、従来のＣＡＮプロトコルのアービトレーションを行う必要がなくなるため、バス接続された複数の通信機器間の通信速度を高速化することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明に係る通信システム及び通信装置のハードウェア構成を示すブロック図である。
【図２】本発明に係る通信装置の機能構成を示すブロック図である。
【図３】本発明に係る通信システムの通信プロトコルの概要を説明するための模式図である。
【図４】本発明に係る通信システムの通信プロトコルで用いるメッセージの構成を示す模式図である。
【図５】本発明に係る通信システムが行う応答処理を説明するための模式図である。
【図６】本発明に係る通信システムが行う応答処理を説明するための模式図である。
【図７】アクションポイントオフセット時間、アイドルスロット時間及び最大送信スロット時間を説明するための模式図である。
【図８】スロット管理手段によるスロット管理の基本動作を説明するための模式図である。
【図９】スロット管理手段によるスロット管理の基本動作を説明するための模式図である。
【図１０】スロット管理手段によるスロットカウンタの同期処理を説明するためのタイミングチャートである。
【図１１】プロトコル制御手段によるメッセージ送信の成否判定を説明するための模式図である。
【図１２】プロトコル制御手段によるメッセージ再送信処理を説明するための模式図である。
【図１３】プロトコル制御手段によるメッセージ再送信処理を説明するための模式図である。
【図１４】本発明に係る通信システムにて検出される通信エラーの一覧を示す図表である。
【図１５】エラーカウンタの変動条件を示す図表である。
【図１６】エラー制御手段の動作を説明するための状態遷移図である。
【図１７】ＥＣＵの通信制御処理に係る動作を説明するための状態遷移図である。
【図１８】初期状態におけるＥＣＵの処理手順を示すフローチャートである。
【図１９】同期準備状態におけるＥＣＵの処理手順を示すフローチャートである。
【図２０】同期準備状態におけるＥＣＵの処理手順を示すフローチャートである。
【図２１】同期待ち状態におけるＥＣＵの処理手順を示すフローチャートである。
【図２２】同期状態におけるＥＣＵの処理手順を示すフローチャートである。
【図２３】同期状態におけるＥＣＵの処理手順を示すフローチャートである。
【図２４】スリープ準備状態におけるＥＣＵの処理手順を示すフローチャートである。
【図２５】バスオフ状態におけるＥＣＵの処理手順を示すフローチャートである。
【図２６】バススリープ状態におけるＥＣＵの処理手順を示すフローチャートである。
【図２７】スタートアップシーケンスの処理例を示すタイミングチャートである。
【図２８】スタートアップシーケンスの処理例を示すタイミングチャートである。
【図２９】スタートアップシーケンスの処理例を示すタイミングチャートである。
【図３０】再同期シーケンスの処理例を示すタイミングチャートである。
【図３１】再同期シーケンスの処理例を示すタイミングチャートである。
【図３２】変形例に係る通信システムのメッセージ構成を示す模式図である。
【発明を実施するための形態】
【００３３】
以下、本発明をその実施の形態を示す図面に基づき具体的に説明する。
＜通信システムの構成＞
図１は、本発明に係る通信システム及び通信装置のハードウェア構成を示すブロック図である。図において１はＥＣＵ（通信装置）であり、図示しない車輌の適所に複数のＥＣＵ１が配設され、各ＥＣＵ１は、車輌に搭載された種々の電子機器の制御又はセンサによる車輌の走行状態の検知等の処理をそれぞれ行っている。また複数のＥＣＵ１は、車輌内に敷設された共通の通信線（バス）５に接続され、バス５を介してメッセージの送受信を行うことができる。
【００３４】
バス５は、従来のＣＡＮプロトコルにて用いられるバスと同様の構成であり、作動信号を伝送するツイストペアケーブルで構成されている。バス５上にて伝送される信号は、論理ビットの”０”に対応する優性値の”ドミナント”と、論理ビットの”１”に対応する劣性値の”レセシブ”で表される。ただし本発明に係る通信システムにおいては、ドミナント及びレセシブの信号値は必ずしも優性値及び劣性値として扱われるわけではないが、従来のＣＡＮプロトコルとの互換性を保つために同じ信号値が用いられる。
【００３５】
通信システムの構成要素である各ＥＣＵ１は、車輌の走行状態などを検出するセンサに接続されてこのセンサから入力される信号を取得する入力部１２、車輌に搭載された制御対象となる電子機器（図示は省略する）に接続されて制御信号などを出力する出力部１３、制御に必要なプログラム及びデータ等を記憶する記憶部１４、ＥＣＵ１内の各部へ電力を供給する電源回路１５、及びバス５に接続されてデータの送受信を行う通信部１６等と、ＥＣＵ１内の各部の動作を制御する制御部１１とを備えている。なお、図１においては１つのＥＣＵ１のみ詳細な内部構成を示し、他のＥＣＵ１は同様の構成であるため詳細な内部構成の図示を省略してある。
【００３６】
ＥＣＵ１の入力部１２は、例えば車輌の車速、加速度、エンジンの温度又はハンドルの操舵角等を検出する各種のセンサが接続され、センサからの検出値が信号として入力されている。入力部１２は、センサが検出した検出値を取得して記憶部１４に記憶すると共に、制御部１１へセンサからの検出値の取得完了を通知する。出力部１３には、車輌のエンジン又はブレーキ等の各種装置を電子的に制御するための電子機器に接続され、制御部１１の制御に応じて出力部１３は各種装置の動作を制御する制御信号を出力する。なお、ＥＣＵ１によっては入力部１２又は出力部１３のいずれか一方のみを備える構成であってもよい。
【００３７】
記憶部１４は、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）又はフラッシュメモリ等のデータ書き換え可能な不揮発性のメモリ素子により構成されている。記憶部１４には、制御部１１にて実行されるプログラム及びデータ等が予め記憶されており、ＥＣＵ１の電源投入時にＥＣＵ１が記憶部１４からこれらのプログラム及びデータ等を読み出して処理を開始する。また記憶部１４は、制御部１１の処理過程で発生する各種のデータ、センサが検出した検出値、通信により他のＥＣＵ１へ送信するデータ、及び他のＥＣＵ１から受信したデータ等を記憶する。なお、記憶部１４は、所謂ＲＯＭとＲＡＭ（Random Access Memory）とが別に設けられる構成であってもよい。
【００３８】
電源回路１５は、車輌のオルタネータ又はバッテリ等の電力供給源（図示は省略する）に接続され、電力供給源からの電力を各部に適した電圧又は電流に調整した後に、各部へ供給する。
【００３９】
通信部１６は、バス５に接続されており、制御部１１の制御に従って記憶部１４から送信用のデータを読み出し、このデータに所定の情報を付与したメッセージを作成してバス５へ出力することによって、メッセージの送信を行う。通信部１６は、他のＥＣＵ１から送信されたメッセージを受信し、受信したメッセージから必要なデータを抽出して記憶部１４に記憶し、受信完了を制御部１１へ通知する。また通信部１６は、通信に係る種々の制御処理を行っており、例えば他のＥＣＵ１と同期してバス５を時分割で利用してメッセージ送受信を行うための制御処理、他のＥＣＵ１からのメッセージ受信の成否を判断する処理、他のＥＣＵ１からのメッセージ受信に対する応答を行う処理、又は、他のＥＣＵ１から受信したメッセージの内容に応じて自らのメッセージの再送信を行う処理等の種々の処理を行っている。ＥＣＵ１が行うメッセージの送受信処理の詳細は後述する。
【００４０】
制御部１１は、入力部１２に入力された信号などに基づく情報及びバス５を介して他のＥＣＵ１から受信した情報等を取得し、取得した情報を基に演算を行って制御信号を生成し、出力部１３から制御信号を出力することによって、車輌に搭載された電子機器の制御を行う。このとき制御部１１は、入力部１２に入力されるセンサなどからの情報又は演算結果等を他のＥＣＵ１と共有する必要がある場合、これらの情報をデータとして含むメッセージを生成し、通信部１６にて他のＥＣＵ１へ送信する。
【００４１】
＜通信装置の機能構成＞
図２は、本発明に係る通信装置の機能構成を示すブロック図であり、ＥＣＵ１の制御部１１及び通信部１６にて実現される通信機能に係る構成を示したものである。ＥＣＵ１の機能は、アプリケーション層、プロトコル制御層及び物理層の３つに分けることができる。アプリケーション層は、一又は複数のアプリケーションソフトウェア（以下、アプリケーションという）１０１で構成される。プロトコル制御層は、プロトコル制御手段１０２、エラー制御手段１０３、メッセージ生成手段１０４、スロット管理手段１０５及びビットサンプリング手段１０６等を含んでいる。また物理層は、バスドライバ１０７などで構成される。
【００４２】
物理層は、バス５との物理的な接続及びバス５に対する電気信号の授受に係る層であり、ＯＳＩ（Open Systems Interconnection）参照モデルの物理層に相当する。物理層のバスドライバ１０７は、プロトコル制御層から与えられる送信メッセージの値（ドミナント／レセシブ）に対応した信号をバス５に対して出力すると共に、バス５の信号レベルを検出してドミナント／レセシブの値に変換し、プロトコル制御層へ与える。バスドライバ１０７は、通信部１６に設けられている。
【００４３】
アプリケーション層は、車輌に搭載された電子機器の制御に係る具体的なサービスを提供する層であり、ＯＳＩ参照モデルのアプリケーション層に相当する。アプリケーション層の各アプリケーション１０１は、予め定められたＡＰＩ（Application Programming Interface）を利用してプロトコル制御層との情報交換を行う。アプリケーション１０１は、記憶部１４に記憶されたプログラム及びデータを制御部１１が実行することによって実現するものである。
【００４４】
本実施の形態に係るＥＣＵ１の物理層のバスドライバ１０７及びアプリケーション層のアプリケーション１０１は、従来のＣＡＮプロトコルが備えるものと略同じ構成とすることができる。本発明に係る通信装置と、従来のＣＡＮプロトコルの通信装置とは、プロトコル制御層の構成が異なり、通信プロトコルが異なる。ただし本発明に係る通信装置の通信プロトコルは、従来のＣＡＮプロトコルをベースとして改良を加えたものである。
【００４５】
本発明に係る通信システムの通信プロトコルは、図１に示すような複数の通信装置が共通の通信線に接続されるバス接続のネットワークで用いることが好適である。ただしその他の構成のネットワークで用いることも可能であり、例えばゲートウェイを中心に複数の通信装置がスター接続された構成のネットワークであっても、ゲートウェイ及び通信装置の間で行う通信処理を本発明の通信プロトコルにて行うことができる。また本発明の通信プロトコルでは、通信を行う複数の通信装置にマスター／スレーブなどの上下関係はなく、全ての通信装置が対等の関係で通信を行う。
【００４６】
従来のＣＡＮプロトコルでは、バスに対して複数の通信装置が同時的にメッセージ送信を行った場合、メッセージに含まれるＩＤ（IDentifier）の優先度に応じた調停処理（アービトレーション）が各通信装置にて行われ、最も優先度が高いメッセージの送信が行われる。これに対して本発明の通信プロトコルでは、上記のアービトレーションは行わない。本発明の通信プロトコルでは、バス５に接続された複数のＥＣＵ１が巡回的にメッセージ送信を行う（即ち、予め定められた順序で周期的にメッセージ送信を行う）ことによって、バス５を時分割で利用し、メッセージ送信が衝突することを回避する。
【００４７】
＜通信プロトコル概要＞
図３は、本発明に係る通信システムの通信プロトコルの概要を説明するための模式図である。なお以下の説明においては、バス５に４つのＥＣＵ１が接続された構成を想定し、４つのＥＣＵ１をそれぞれ１ａ〜１ｄの符号にて区別する。本発明の通信プロトコルでは、通信に参加するＥＣＵ１ａ〜１ｄに対して予め（静的に）一又は複数のスロット（スロット番号）が割り当てられている。スロットは、巡回的にメッセージ送信を行う際の送信権利を示すものであり、スロット番号が小さいほど送信順が先となる。なおスロット番号の重複は認められず、１つのスロット番号につき１つのＥＣＵ１ａ〜１ｄのみが送信を行うことができる。
【００４８】
例えば図３（ａ）に示すように、ＥＣＵ１ａにはスロット１及びスロット５が割り当てられ、ＥＣＵ１ｂにはスロット２が割り当てられ、ＥＣＵ１ｃにはスロット３及びスロット６が割り当てられ、ＥＣＵ１ｄにはスロット４が割り当てられている。また各ＥＣＵ１ａ〜１ｄには、ネットワーク中の総スロット数、及び、１のスロットに係る１回のメッセージ送信にてバス５を利用できる最大時間（１スロット時間という）等の共通情報が予め与えられている。
【００４９】
各ＥＣＵ１ａ〜１ｄは、総スロット数×１スロット時間を１サイクルとして、番号の小さいスロットが割り当てられたＥＣＵ１ａ〜１ｄから順にメッセージ送信を行う。例えば図３（ｂ）に示すように、スロット１が割り当てられたＥＣＵ１ａがメッセージ（図中ではＭｓｇと略記する）Ａを１番目に送信し、スロット２が割り当てられたＥＣＵ１ｂがメッセージＢを２番目に送信し、スロット３が割り当てられたＥＣＵ１ｃがメッセージＣを３番目に送信し、スロット４が割り当てられたＥＣＵ１ｄがメッセージＤを４番目に送信する。その後、スロット５が割り当てられたＥＣＵ１ａがメッセージＥを５番目に送信し、スロット６が割り当てられたＥＣＵ１ｃがメッセージＦを６番目に送信する。番号が最大のスロットに係るメッセージ送信の終了により１サイクルが終了し、次のサイクルにてスロット１が割り当てられたＥＣＵ１ａがメッセージＧを送信する。
【００５０】
このように、バス５に接続された複数のＥＣＵ１ａ〜１ｄが同期してスロット番号に応じた巡回的なメッセージ送信を行うことによって、バス５上にて複数のメッセージが衝突することがないため、従来のＣＡＮプロトコルのアービトレーションを各ＥＣＵ１ａ〜１ｄが行う必要はない。このため、従来のＣＡＮプロトコルではメッセージを送信する際、通信装置はメッセージをバスに出力した後に、バス上の信号変化の有無をビット毎に検出する必要があるが、本発明の通信プロトコルではこのようなビット毎の検出処理を行う必要がなく、通信速度を高速化することができる。上記のようなスロットによるメッセージ送受信の制御は、各ＥＣＵ１ａ〜１ｄのプロトコル制御手段１０２及びスロット管理手段１０５等によって行われる。
【００５１】
いずれかのＥＣＵ１ａ〜１ｄから送信されたメッセージは、バス５に接続された他の全てのＥＣＵ１ａ〜１ｄにて受信可能である。メッセージを受信した他のＥＣＵ１ａ〜１ｄは、メッセージの送信元のＥＣＵ１ａ〜１ｄに対してメッセージを正しく受信したか否かの応答（いわゆる、ＡＣＫ（ACKnowledgement）／ＮＡＫ（Negative AcKnowledgement）の送信）を行う必要がある。従来のＣＡＮプロトコルではメッセージに含まれる１ビットのＡＣＫスロットを利用して応答を行っており、メッセージ送信元の通信装置はＡＣＫスロット期間に信号変化の有無を検出することで、メッセージが正しく受信されたか否かを判断することができる。
【００５２】
本発明の通信プロトコルでは、上述のようにメッセージ送信の際にビット毎の信号変化を検出しないため、従来のＣＡＮプロトコルとは異なる方法でメッセージ受信の応答を行う。このため本発明の通信プロトコルでは、ＥＣＵ１ａ〜１ｄの間で送受信するメッセージの構成を、従来のＣＡＮプロトコルのメッセージ構成に対していくつかの点で拡張したものとしている。
【００５３】
＜メッセージ生成＞
次に、ＥＣＵ１のプロトコル制御層に含まれるメッセージ生成手段１０４の動作を説明する。図４は、本発明に係る通信システムの通信プロトコルで用いるメッセージの構成を示す模式図であり、ＥＣＵ１のメッセージ生成手段１０４にて生成されるものである。本発明の通信プロトコルでは、データフレーム及びＡＣＫフレームの２種のメッセージを用いる。本発明の通信プロトコルのデータフレームは、従来のＣＡＮプロトコルのデータフレームに相当し、本プロトコルのＡＣＫフレームは、従来のＣＡＮプロトコルにおいて相当するものはない。データフレームは、他のＥＣＵ１へのデータの送信と、データ受信の成否に係る応答とを行うためのものである。ＡＣＫフレームは、他のＥＣＵ１へ送信すべきデータが存在しない場合に用いられるほか、通信システムのスタートアップ及びスリープを行う際に用いられる。
【００５４】
本通信プロトコルのデータフレームは、ＳＯＦ（Start Of Frame）、ＩＤフィールド、コントロールフィールド、スリープビット、エラーアクティブビット（図４においてはＥＡと略記する）、ＡＣＫフィールド、スロット番号フィールド（図４においてはスロットと略記する）、データフィールド、ＣＲＣ（Cyclic Redundancy Check）フィールド、及びＥＯＦ（End Of Frame）で構成されている。またＡＣＫフレームは、データフレームからデータフィールドを除いた構成である。なお、ＳＯＦ、コントロールフィールド、データフィールド、ＥＯＦ及びＩＦＳについては、従来のＣＡＮプロトコルのものと同じものである。
【００５５】
ＳＯＦは、従来のＣＡＮプロトコルのデータフレームに設けられたＳＯＦと同じものである。メッセージの開始を表すビットであり、１ビットのドミナントである。通信システムの各ＥＣＵ１は、バス５上のＳＯＦを検出することによって、メッセージ受信を同期して行う。
【００５６】
ＩＤフィールドは、従来のＣＡＮプロトコルのデータフレームに設けられたアービトレーションフィールドと同じ構成であるが、上述のように本発明の通信プロトコルではアービトレーションを行わないため、このフィールドの値は単にメッセージのＩＤとして用いられる。ＩＤフィールドは、ＩＤデータ及びＲＴＲ（Remote Transmission Request）ビットを含んでいる。ＩＤデータは、メッセージの種類を示し、標準フォーマットでは１１ビットであり、拡張フォーマットでは２９ビットである。ＲＴＲは、１ビットのデータであり、従来のＣＡＮプロトコルと同様のものである。
【００５７】
コントロールフィールドは、従来のＣＡＮプロトコルのコントロールフィールドと同じものであり、標準フォーマット又は拡張フォーマットを区別するためのＩＤＥ（IDentifier Extension）ビット、及びデータフレームのデータ長を示す４ビットのＤＬＣ（データ長コード）等の情報が含まれている。なお各ＥＣＵ１ａ〜１ｄによるデータフレームとＡＣＫフレームとの識別には、ＩＤフィールドのＩＤデータを用いており、ＩＤデータ＝１として正常受信するフレームをＡＣＫフレームとする（ただしこのＩＤデータの値は一例であって、その他の値を用いてもよい）。また各ＥＣＵ１ａ〜１ｄは、ＡＣＫフレームにおいてＤＬＣ＝０に設定して送信を行い、ＡＣＫフレームを受信したＥＣＵ１ａ〜１ｄは、ＩＤデータ＝１のフレームを受信した場合には、受信フレームがＤＬＣ≠０であっても、ＤＬＣ＝０とみなして受信処理を行う。
【００５８】
スリープビットは、通信システムのスリープに係る処理に用いられる１ビットの情報であり、ＡＣＫフレームのみで利用される。スリープビットがドミナントに設定されている場合は通常の動作が行われ、スリープビットがレセシブに設定された場合はＡＣＫフレームがスリープ要求として受信され、スリープに係る処理が開始される。なおデータフレームにおいては、スリープビットは常にドミナントに設定される。
【００５９】
エラーアクティブビットは、１ビットの情報であり、通信処理に係るエラーが発生した場合にエラーの状態を通知するためのものである。エラーアクティブビットがドミナントに設定された場合、エラーの状態はエラーアクティブであり、エラーアクティブビットがレセシブに設定された場合、エラーの状態はエラーパッシブである（エラーアクティブ及びエラーパッシブ等の詳細は後述する）。
【００６０】
ＡＣＫフィールドは、通信システムにおける総スロット数に等しいビット数の情報であり、各ビットに１つのスロットが対応付けられ、１サイクル分のメッセージ受信の成否情報が設定される。例えば総スロット数が１６の場合、ＡＣＫフィールドは１６ビットの情報であり、１ビット目にスロット１の受信成否情報が設定され、２ビット目にスロット２の受信成否情報が設定され、…、１６ビット目にスロット１６の受信成否情報が設定される。なおＡＣＫフィールドの各ビットの値は、レセシブが受信成功（ＡＣＫ）に対応し、ドミナントが受信失敗（ＮＡＫ）に対応する。
【００６１】
ただし、本発明の通信システムは、従来のＣＡＮプロトコルのアービトレーション及びＡＣＫビット等の機能が必要ないため、ドミナントがＡＣＫに対応し、レセシブがＮＡＫに対応する構成とすることもできる。即ち、ＡＣＫフィールドのＡＣＫ及びＮＡＫと、レセシブ及びドミナントとの組み合わせは、通信システム内で統一されていれば、特に限定されるものではなく、いずれの組み合わせであってもよい。
【００６２】
スロット番号は、このメッセージ送信が行われたスロットの番号が設定され、通信システムの各ＥＣＵ１が同期補正（詳細は後述する）を行うために用いられる。スロット番号のデータサイズは、総スロット数により規定され、例えば総スロット数が１６であればスロット番号は４ビットの情報となる。
【００６３】
データフィールドは、従来のＣＡＮプロトコルのデータフレームに設けられたデータフィールドと同じである。データフィールドは０〜８バイトのデータで構成されており、ＭＳＢ（Most Significant Bit）ファーストで送信される。各ＥＣＵ１は、他のＥＣＵ１へ送信すべき任意のデータをこのデータフィールドに収めて送信する。
【００６４】
ＣＲＣフィールドは、１５ビットのＣＲＣシーケンスと、１ビットのＣＲＣデリミタ（区切り用のビット）とで構成されており、受信したメッセージの誤り検出を行うためのものである。ＣＲＣシーケンスは、ＳＯＦからデータフィールドまでの値について予め定められた生成多項式を用いた演算を行うことにより取得することができる。なお、演算に用いる生成多項式は、従来のＣＡＮプロトコルで用いられるものと同じであってよい。メッセージを受信したＥＣＵ１は、受信したメッセージについて生成多項式により算出される値と、受信したメッセージのＣＲＣシーケンスの値とを比較することによって誤り検出を行うことができ、２つの値が一致しない場合は誤りが生じていると判断する。ＣＲＣデリミタは、従来のＣＡＮプロトコルにおいては１ビットのレセシブであったが、本発明の通信プロトコルにおいては１ビットのレセシブ及び１ビットのドミナントの計２ビットとする。なお、ＣＲＣシーケンスの長さを１５ビットとしたが、これに限るものではなく、１４ビット以下又は１６ビット以上としてもよい。
【００６５】
ＥＯＦは、従来のＣＡＮプロトコルのデータフレームに設けられたＥＯＦと同じである。データフレームの終了を表すビットであり、７ビットのレセシブである。
【００６６】
以上に説明したデータフレーム及びＡＣＫフレームは、ＥＣＵ１のメッセージ生成手段１０４が、プロトコル制御手段１０２の制御に応じて生成する。メッセージ生成手段１０４は、生成したメッセージをビットサンプリング手段１０６を介してバスドライバ１０７へ与えることによって、バス５へメッセージを出力し、バス５に接続された他の全てのＥＣＵ１に対するメッセージ送信を行う。また、メッセージ生成手段１０４は、ビットサンプリング手段１０６から与えられるサンプリング結果、即ち受信メッセージから、図４に示した各フィールドのデータを抽出してプロトコル制御手段１０２へ与える。
【００６７】
図５及び図６は、本発明に係る通信システムが行う応答処理を説明するための模式図である。図５には通信システム内のメッセージ送信の一例を示し、図６には各メッセージに含まれるＡＣＫフィールドの内容を示してある。なお、図５及び図６に示す例は、図３（ａ）に示した通信システムの構成（４つのＥＣＵ１ａ〜１ｄが６つのスロットを利用してメッセージ送信を行う構成）を前提としたものである。
【００６８】
図５に示すように、通信システムの各ＥＣＵ１ａ〜１ｄが起動して通信が開始されると、スロット１が割り当てられたＥＣＵ１ａからメッセージの送信が開始され、スロットの番号順に複数のＥＣＵ１ａ〜１ｄがメッセージ送信を行う。図示の例では、スロット１が割り当てられたＥＣＵ１ａがメッセージＡを送信し、スロット２が割り当てられたＥＣＵ１ｂがメッセージＢを送信し、スロット３が割り当てられたＥＣＵ１ｃがメッセージＣを送信し、スロット４が割り当てられたＥＣＵ１ｄがメッセージＤを送信し、スロット５が割り当てられたＥＣＵ１ａがメッセージＥを送信し、スロット６が割り当てられたＥＣＵ１ｃがメッセージＦを送信して、１サイクルが終了する。次のサイクルでは、スロット１が割り当てられたＥＣＵ１ａがメッセージＧを送信し、スロット２が割り当てられたＥＣＵ１ｂがメッセージＨを送信し、スロット３が割り当てられたＥＣＵ１ｃがメッセージＩを送信し、同様の処理が繰り返される。
【００６９】
図６に示すように、各ＥＣＵ１ａ〜１ｄが送信するメッセージには、ＡＣＫフィールドとして６ビット（＝スロット数）の情報（ＡＣＫ１〜ＡＣＫ６）が含まれており、スロット１〜スロット６に対するメッセージ受信の成否がそれぞれＡＣＫ１〜ＡＣＫ６に１ビットのレセシブ（ＡＣＫ）又はドミナント（ＮＡＫ）として設定される。また各ＥＣＵ１ａ〜１ｄは、自らに割り当てられたスロットに対するＡＣＫフィールドのビットには、ＡＣＫを設定してメッセージ送信を行う。
【００７０】
通信システムが通信を開始した直後は、各ＥＣＵ１ａ〜１ｄによるメッセージの送受信が未だ行われておらず、各ＥＣＵ１ａ〜１ｄはメッセージを受信していない。このように、通信開始直後の１サイクルにおいて、各ＥＣＵ１ａ〜１ｄは、メッセージ送受信が行われていないスロットに係るＡＣＫフィールドのビットには、ＡＣＫを設定してメッセージ送信を行う。
【００７１】
通信開始後の１サイクル目のスロット１に係る通信において、ＥＣＵ１ａは、自らに割り当てられたスロット１及びスロット５に対応するＡＣＫ１及びＡＣＫ５にＡＣＫを設定すると共に、メッセージの送受信が行われていないスロット２〜４、６に対応するＡＣＫ２〜４、６にＡＣＫを設定したメッセージＡを作成して送信する。
【００７２】
次いで、１サイクル目のスロット２に係る通信において、ＥＣＵ１ｂは、スロット１に係る通信にて送信されたメッセージＡに関する受信の成否（ＡＣＫ／ＮＡＫ）をＡＣＫ１に設定し、自らに割り当てられたスロット２に対応するＡＣＫ２にＡＣＫを設定し、メッセージの送受信が行われていないスロット３〜スロット６に対応するＡＣＫ３〜ＡＣＫ６にＡＣＫを設定したメッセージＢを生成して送信する。
【００７３】
次いで、１サイクル目のスロット３に係る通信において、ＥＣＵ１ｃは、スロット１及びスロット２に係る通信にて送信されたメッセージＡ及びＢに関する受信の成否をＡＣＫ１及びＡＣＫ２に設定し、自らに割り当てられたスロット３及びスロット６に対応するＡＣＫ３及びＡＣＫ６にＡＣＫを設定し、メッセージの送受信が行われていないスロット４及びスロット５にＡＣＫを設定したメッセージＣを生成して送信する。
【００７４】
同様にして、１サイクル目のスロット４に係るＥＣＵ１ｄのメッセージＤの送信、スロット５に係るＥＣＵ１ａのメッセージＥの送信、及びスロット６に係るＥＣＵ１ｃのメッセージＦの送信が行われる。１サイクルのメッセージ送受信が終了した場合、各ＥＣＵ１ａ〜１ｄは少なくとも１回のメッセージ送信を行っており、ＥＣＵ１ａは、１サイクル目のスロット１にて送信したメッセージＡが他のＥＣＵ１ｂ〜１ｄにて正しく受信されたか否かを、他のＥＣＵ１ｂ〜１ｄからのメッセージＢ、Ｃ、Ｄ、ＦのＡＣＫフィールドを調べ、全てメッセージのＡＣＫ１にＡＣＫが設定されているか否かで判断することができる。
【００７５】
ＥＣＵ１ａは、全てのメッセージのＡＣＫ１がＡＣＫに設定されている場合、スロット１にて送信したメッセージＡが全てのＥＣＵ１ｂ〜１ｄにて正常に受信されていると判断し、次のサイクルのスロット１では別データのメッセージＧを送信する。これに対してＥＣＵ１ａは、いずれかのＡＣＫ１がＮＡＫに設定されている場合、スロット１にて送信したメッセージＡが正常に受信されていないと判断し、次のサイクルのスロット１ではメッセージＡを再送信する。図６に示す例では、メッセージＡが他の全てのＥＣＵ１ｂ〜１ｄにて正常に受信されたものとしてある。
【００７６】
２サイクル目のスロット１に係る通信において、ＥＣＵ１ａは、１サイクル目のスロット２〜４、６に係るメッセージＢ〜Ｄ、Ｆに関する受信の成否をＡＣＫ２〜４、６に設定し、自らに割り当てられたスロット１及びスロット５に対応するＡＣＫ１及びＡＣＫ５にＡＣＫを設定したメッセージＧを生成して送信する。
【００７７】
同様にして、ＥＣＵ１ｂは、１サイクル目のスロット３から２サイクル目のスロット１までの１サイクルの間に受信したメッセージのＡＣＫフィールドを調べることによって、１サイクル目のスロット２にて自らが送信したメッセージＢが他のＥＣＵ１ａ、１ｃ、１ｄにて正しく受信されたか否かを判断することができる。２サイクル目のスロット２に係る通信において、ＥＣＵ１ｂは、メッセージＢが正しく受信されている場合、図６に示すように新たなメッセージＨを作成して送信し、メッセージＢが正しく受信されていない場合にはメッセージＢの再送信を行う。
【００７８】
同様にして、ＥＣＵ１ｃは、１サイクル目のスロット４から２サイクル目のスロット２までの１サイクルの間に受信したメッセージのＡＣＫフィールドを調べることによって、１サイクル目のスロット３にて自らが送信したメッセージＣが他のＥＣＵ１ａ、１ｂ、１ｄにて正しく受信されたか否かを判断することができる。２サイクル目のスロット３に係る通信において、ＥＣＵ１ｃは、メッセージＣが正しく受信されている場合、図６に示すように新たなメッセージＩを作成して送信し、メッセージＣが正しく受信されていない場合にはメッセージＣの再送信を行う。
【００７９】
このように、各ＥＣＵ１ａ〜１ｄは、他のＥＣＵ１ａ〜１ｄへ送信すべきデータ（データフィールド）と、他のＥＣＵ１ａ〜１ｄからのメッセージ受信の成否を示す情報（ＡＣＫフィールド）とを含むメッセージを作成し、自らに割り当てられたスロットにてこのメッセージを全てのＥＣＵ１ａ〜１ｄへ送信する。これにより、各ＥＣＵ１ａ〜１ｄは、１サイクルの間に全てのＥＣＵ１ａ〜１ｄからのメッセージを受信することができ、各メッセージに含まれるＡＣＫフィールドを調べることによって、前回に送信したメッセージが他の全てのＥＣＵ１ａ〜１ｄにて正しく受信されたか否かを判断でき、このメッセージを再送信すべきか否かを判断することができる。なお各ＥＣＵ１ａ〜１ｄは、自らに割り当てられたスロットにて、他のＥＣＵ１ａ〜１ｄへ送信すべきデータがない場合には、ＡＣＫフレームを送信すればよい。
【００８０】
従来のＣＡＮプロトコルでは、通信システムに含まれる各通信装置が、バス上に出力されたメッセージに含まれるＡＣＫスロットに対する書き込み（レセシブからドミナントへ変化させる処理）を行うことによって、メッセージ送信元の通信装置がメッセージ受信の成否を判断することができる。本発明は、上述のようなメッセージ受信に対する応答を各ＥＣＵ１ａ〜１ｄのプロトコル制御層にて行うことによって、従来のＣＡＮプロトコルと同等のエラー検出を通信システムが行うことを可能としたものである。アプリケーション層の各アプリケーション１０１は、従来のＣＡＮプロトコルであるか本発明の通信プロトコルであるかにかかわらず、同様の方法で通信に係る処理を行うことができ、アプリケーション１０１の開発者はいずれのプロトコルであるかを意識することなく開発を行うことができる。
【００８１】
＜ビットサンプリング＞
次に、ＥＣＵ１のプロトコル制御層に含まれるビットサンプリング手段１０６の動作を説明する。本発明の通信システムでは、従来のＣＡＮプロトコルと同様に、バス５上の信号はドミナント又はレセシブの論理値で表される２値信号として扱われる。ビットサンプリング手段１０６は、バス５上の信号を周期的にサンプリングして得られた２値のデータ（即ちメッセージ）をメッセージ生成手段１０４及びスロット生成手段１０５へ与え、これらの手段を介してプロトコル制御手段１０２へ与える。
【００８２】
また共通のバス５に接続された複数のＥＣＵ１がメッセージ受信を行う場合、全てのＥＣＵ１が同期して受信処理を行う必要がある。ビットサンプリング手段１０６は、バス５上の信号変化に応じて他のＥＣＵ１との同期を取る処理も行っている。ビットサンプリング手段１０６による同期の方法は、ハード同期及び再同期の２種がある。
【００８３】
ハード同期では、バス５上の信号が所定期間以上に亘ってレセシブの場合にメッセージの送受信が行われていない状態であるとビットサンプリング手段１０６が判断した後、バス５上の信号がレセシブからドミナントへ変化したタイミング（メッセージのＳＯＦのタイミング）に対して同期が行われる。ビットサンプリング手段１０６は、ＳＯＦの信号変化のエッジを同期点としてバス５上の信号値のサンプリングを行う。ビットサンプリング手段１０６によるハード同期は、従来のＣＡＮプロトコルにて行われるものと同様の処理である。
【００８４】
再同期では、ハード同期を行うビット以外のビットの変化に応じて、ビットサンプリング手段１０６が同期の補正を行う。ビットサンプリング手段１０６は、自らが想定する信号変化の位置と、実際にバス５上にて検出した信号変化の位置とを比較して誤差を算出し、この誤差を打ち消すべくサンプリングのタイミングを補正する。なお従来のＣＡＮプロトコルにおいては再同期をメッセージの送信及び受信の両方で行っていたが、本発明の通信プロトコルでは、メッセージ送信時にバス５の信号レベルの検出を行わないため、再同期の処理はメッセージの受信時にのみ行う。
【００８５】
＜スロット管理＞
次に、ＥＣＵ１のプロトコル制御層に含まれるスロット管理手段１０５の動作を説明する。ＥＣＵ１のスロット管理手段１０５は、上述のように複数のＥＣＵ１が巡回的にメッセージの送信を行うために、予め各ＥＣＵ１に割り当てられるスロットの管理を行っている。本発明の通信プロトコルでは、ある時点においてメッセージ送信が許可されているのがいずれのスロットであるかを複数のＥＣＵ１が共通して知る必要があり、スロット管理手段１０５は、メッセージ送信に係るスロットを共通して知るための管理処理、即ちスロットの同期処理を行っている。またスロット管理手段１０５は、あるスロットについてメッセージ送信が全く行われていない場合などに、このスロットを飛ばして次のスロットに係るメッセージの送受信を行うなどのスロット管理を行っている。
【００８６】
本発明の通信プロトコルでは、あるスロットについてメッセージ送信が行われていないことを検出した場合に、各ＥＣＵ１は、このスロットのメッセージ受信処理を行うことなく、次のスロットの処理へ移行することによって、不具合などによってメッセージ送信を行っていないＥＣＵ１に係るメッセージ送受信処理を省略し、メッセージ送信を行うことができるＥＣＵ１のみで通信を行う。
【００８７】
これにより、通信システム中に故障などが生じたＥＣＵ１が含まれ、このＥＣＵ１がメッセージ送信を行うことができない状態であっても、このＥＣＵ１に係るスロットの処理を省略することで通信システム中の他のＥＣＵ１は相互にメッセージの送受信を行うことができる。また通信システムにオプションのＥＣＵ１を追加するために予備のスロットを設け、オプション装備が追加されていない状態であっても、予備のスロットに係る処理を省略することができる。
【００８８】
上記の処理を実現するために、各ＥＣＵ１のスロット管理手段１０５は、メッセージ送信可能な１スロット時間に対して、アクションポイントオフセット時間、アイドルスロット時間及び最大送信スロット時間が予め設定されており、これら所定時間を基準として他のＥＣＵ１に割り当てられたスロットに係るメッセージ送信が行われていないことを判定し、このスロットに係るメッセージ受信処理を省略する処理を行う。図７は、アクションポイントオフセット時間、アイドルスロット時間及び最大送信スロット時間を説明するための模式図である。
【００８９】
各ＥＣＵ１は、自らに割り当てられたスロットの開始時点に達した場合、予め定められたアクションポイントオフセット時間を待機した後で、メッセージの送信を開始する。スロット中におけるメッセージ送信の開始時点をアクションポイントといい、スロットの開始時点からアクションポイントまでの時間がアクションポイントオフセット時間である。
【００９０】
各ＥＣＵ１は、他のＥＣＵ１に割り当てられたスロットの開始時点に達した後、アイドルスロット時間が経過してもこのスロットに係るメッセージ送信がなされなかった場合に、このスロットが割り当てられたＥＣＵ１は何らかの要因でメッセージ送信を行わない状態であるとみなし、次のスロットに係る通信処理に遷移する。
【００９１】
また各ＥＣＵ１は、自らに割り当てられたスロットの開始時点から最大送信スロット時間が経過するまでの間にメッセージの送信を行う。各ＥＣＵ１が送信するメッセージは可変長であってよいが、最大送信スロット時間を超えてメッセージ送信を行うことはできない。これにより、ＥＣＵ１が故障などによって異常なメッセージ送信を行い続ける状態となった場合であっても、最大送信スロット時間に達した後はメッセージ送信が停止され、次のスロットに係る通信処理に遷移する。
【００９２】
これら所定時間は、下記の条件を満たすように、通信システムの設計段階などにおいて予め設定する。
アイドルスロット時間＞アクションポイントオフセット時間＋フレーム検出確認時間＋ＲＴＴ±α
最大送信スロット時間＞１フレームの最大送信時間＋アクションポイントオフセット時間±α
【００９３】
なお上記の条件において、ＲＴＴ（Round Trip Time）とは２つのＥＣＵ間をメッセージが往復するのに要する時間である。またフレーム検出確認時間とは、一のＥＣＵ１から送信されたメッセージが他のＥＣＵ１に到達した後、他のＥＣＵ１がメッセージの受信を認識するまでに要する時間であり、ＥＣＵ１の通信部１６の内部遅延時間及び信号変化の検出に要する時間等を含むものである。またαは、複数のＥＣＵ１間におけるクロック誤差の累積分を許容するマージンである。
【００９４】
図８及び図９は、スロット管理手段１０５によるスロット管理の基本動作を説明するための模式図であり、図８にはスロット管理に用いられる信号のタイミングチャートを示し、図９には各信号の定義を図表として示す。各ＥＣＵ１は、内部に発振器を備え、この発振器が出力する内部の動作クロックがSample_clockであり（図８においては動作クロックの立ち上がり（又は立ち下がりであってもよい）エッジのみを図示してある）、ＥＣＵ１内の各部（各手段）はこの動作クロックに基づいて処理を行っている。なお、共通のバス５に接続された複数のＥＣＵ１は、略同じ周波数の動作クロックで動作している。またビットサンプリング手段１０６による受信メッセージのサンプリングポイントを示す信号がSample_pointである。
【００９５】
スロット管理手段１０５は、ビットカウンタ（Slot_bit_cnt）及びスロットカウンタ（Slot_cnt）の２つのカウンタを有している。ビットカウンタは、送受信するメッセージの何ビット目を処理中であるかを示すカウンタである。ビットカウンタは、ビットサンプリング手段１０６のサンプリングポイント毎にカウントアップされる（Sample_pointの値が１（ハイレベル）に変化したことを検出してカウントアップされる。図中の矢印（１）参照。）。
【００９６】
スロット管理手段１０５のスロットカウンタは、現時点にてメッセージ送信を行う権利を有するスロットを示すカウンタである。スロットカウンタは、Slot_cnt_enaがハイレベルであり、且つ、ビットカウンタが所定値（図８において所定値は２）を超えた場合に、カウントアップされる（図中の矢印（２）参照）。またスロットカウンタは、Slot_cnt_enaがハイレベルであり、且つ、１サイクルあたりのスロット数を超えた場合に、値が初期化される。
【００９７】
スロットカウンタの値が変化した場合に、信号Slot_cnt_pointが１クロック間のハイレベルとなり（図中の（３）参照）、この信号によってスロットの変化がＥＣＵ１内の各手段に通知される。また、信号Slot_acpointはスロットにおけるアクションポイントを示しており、スロット開始から予め定められたアクションポイントオフセット時間（Slot_acpoint_bit）が経過した場合（図８の例では、アクションポイントオフセット時間は１であり、ビットカウンタの値が１に変化したタイミング）に、信号Slot_acpointが１クロック間のハイレベルとなる（図中の矢印（４）参照）。
【００９８】
信号Slot_wrcnt及び信号Slot_wrcnt_cmdは、スロット管理手段１０５の外部から入力される信号であり、後述の同期処理などに利用される。信号Slot_wrcntは、正常に受信したメッセージに含まれるスロット番号などをプロトコル制御手段１０２がスロット管理手段１０５へ与えるためのものである。また信号Slot_wrcnt_cmdは、信号Slot_wrcntにて指定したスロット番号をスロット管理手段１０５が書き込む（内部へ取り込む）タイミングを指示するためのものである。
【００９９】
スロット管理手段１０５は、上記の複数の信号及びビットカウンタの値に応じてスロットカウンタの値をカウントアップ又は初期化することによって、現時点でメッセージ送信を行うことができるスロット番号を管理している。また共通のバス５に接続された複数のＥＣＵ１では、各スロット管理手段１０５がスロット番号を共有する必要があり、スロット管理手段１０５はメッセージ受信の際にスロットカウンタの同期処理を行っている。
【０１００】
図１０は、スロット管理手段１０５によるスロットカウンタの同期処理を説明するためのタイミングチャートである。なお、図１０に示す信号は、図８及び図９に示したものと同じものであり、信号Slot_cnt_ena_qは信号Slot_cnt_enaを１クロック分遅らせた信号である。図中の破線（１）で示すタイミングにてビットカウントが所定値に達したため、スロット管理手段１０５は、スロットカウンタをスロット１からスロット２へインクリメントする。その後、他のＥＣＵ１からのメッセージ受信が開始され、スロット管理手段１０５は、このタイミングで信号Slot_cnt_enaをハイレベルからローレベルに変化させ、スロットカウンタの値が固定される（図中の矢印（２）参照）。
【０１０１】
メッセージの受信処理が正常に終了した場合、プロトコル制御手段１０２から信号Slot_wrcnt_cmdにより受信終了が通知される。このとき正常に受信したメッセージに含まれるスロット番号がプロトコル制御手段１０２からスロット管理手段１０５に信号Slot_wrcntとして与えられており、信号Slot_wrcnt_cmdによる受信終了の通知のタイミングに応じて、スロット管理手段１０５は、与えられたスロット番号を取り込んでスロットカウンタに設定する（図中の矢印（３）参照）。これにより、スロットカウンタの同期が行われる。
【０１０２】
またスロット管理手段１０５は、信号Slot_wrcnt_cmdによる受信終了の通知が与えられた後、信号Slot_cnt_enaをハイレベルに変化させ、スロットカウンタの更新を許可する。信号Slot_cnt_ena_qがローレベルからハイレベルへ変化することによって、ビットカウントの値が初期化され（図中の矢印（４）参照）、次のサンプリングポイントにてスロットカウンタの値がインクリメントされる（図中の矢印（５）参照）。
【０１０３】
なお、各ＥＣＵ１のスロット管理手段１０５は、メッセージの受信を行う都度、上記のような同期処理を行っている。ただし、メッセージ送信を行うＥＣＵ１のスロット管理手段１０５では同期処理は行われない。
【０１０４】
＜プロトコル制御＞
次に、ＥＣＵ１のプロトコル制御層に含まれるプロトコル制御手段１０２の動作を説明する。上述のように、本発明の通信プロトコルでは、共通のバス５に接続された複数のＥＣＵ１がスロット番号及びスロット時間を同期させて、各ＥＣＵ１が自らに割り当てられたスロット番号の送信順に至った場合にメッセージ送信を行うことで、メッセージの衝突を回避する構成である。プロトコル制御手段１０２は、図３、図５及び図６等に示したようなスロット番号に応じたメッセージの送受信処理、送信メッセージ中のＡＣＫフィールドにＡＣＫ又はＮＡＫを設定する処理、及び受信したメッセージ中のＡＣＫフィールドの値に応じてメッセージを再送信する処理等を行っている。更にプロトコル制御手段１０２は、通信システムの起動時などに複数のＥＣＵ１が同期をとって通信を開始するための処理（スタートアップシーケンス）、何らかの通信障害などによって複数のＥＣＵ１間の同期にずれが生じた場合の再同期処理（再同期シーケンス）、及び、通信システムの動作を停止する場合の処理（スリープシーケンス）等を行っている。
【０１０５】
本通信システムの各ＥＣＵ１は、電源投入などによって起動された後、バス５を共有する他のＥＣＵ１との間でスロットを同期させるための処理を、スタートアップシーケンスとしてプロトコル制御手段１０２が実行する。スタートアップシーケンスでは、まず、バス５上の信号の有無を調べることによって、既に他のＥＣＵ１による通信が開始されているか否かを判断し、通信が開始されていないと判断した場合、プロトコル制御手段１０２は自らのメッセージ送信を開始することによって、他のＥＣＵ１の起動を促す。また既に通信が開始されていると判断した場合には、プロトコル制御手段１０２は、他のＥＣＵ１からのメッセージ受信を行って、受信したメッセージに含まれるスロット番号に同期して以降の通信処理を行う。
【０１０６】
ただし、通信が開始されていないと複数のＥＣＵ１が判断した場合には、これら複数のＥＣＵ１によるメッセージ送信が衝突する可能性がある。このような場合、衝突したメッセージを受信した他のＥＣＵ１は、このメッセージをスロット１のものとみなして次のスロット以降の通信処理を行い、以降の通信処理において異常を検出したＥＣＵ１が処理を補正することによって更なるメッセージ衝突の発生を抑制する。
【０１０７】
また、通信システムにおいてメッセージの送受信が正常に開始された後は、上述のようにメッセージ受信の際にスロットの同期を各ＥＣＵ１が行うことによって、通信システム中の複数のＥＣＵ１によるメッセージ送受信の同期は保たれるが、何らかの通信障害などによってスロット番号にズレが生じる可能性がある。本通信システムの各ＥＣＵ１は、このようなズレが生じた場合であっても通信処理を継続し、以降の通信処理において異常を検出したＥＣＵ１が再同期の処理を行う。各ＥＣＵ１のプロトコル制御手段１０２は、自らが送信したスロットから２サイクル後のスロットまでの間に正常に受信したメッセージが存在しない場合に、通信異常が発生していると判断し、再同期シーケンスを実行する。
【０１０８】
また、通信システムの動作を停止して低消費電力状態（スリープモード）とする場合、通信システムの各ＥＣＵ１は他のＥＣＵ１との間でスリープモードへ移行することに対する合意を得た後に、スリープモードへの移行を行う必要がある。各ＥＣＵ１がスリープモードへ移行するか否かの判断はアプリケーション層のアプリケーション１０１が行い、アプリケーション１０１からプロトコル制御層のプロトコル制御手段１０２へスリープ要求が与えられた際に、プロトコル制御手段１０２がスリープモード移行の合意を得るための処理を行う。具体的には、スリープ要求が与えられたプロトコル制御手段１０２は、スリープビットにレセシブを設定したＡＣＫフレームの送信を行うことで他のＥＣＵ１に対してスリープモードへ移行することを通知する。その後、プロトコル制御手段１０２は、他のＥＣＵ１に係る全てのスロットについてスリープビットがレセシブに設定されたＡＣＫフレームを所定サイクル分受信した場合に、スリープモード移行の合意が得られたと判断して、スリープモードへ移行する。即ち、本通信システムでは、全てのＥＣＵ１がスリープモードに移行すると判断し、各ＥＣＵ１が送信するＡＣＫフレームの全てにてスリープビットがレセシブに設定された場合に、全てのＥＣＵ１がスリープモードへ移行する。これに対して、少なくとも１つのＥＣＵ１がスリープモードに移行しないと判断し、このＥＣＵ１がスリープビットをレセシブに設定したＡＣＫフレームを送信しない場合には、通信システム中のＥＣＵ１がスリープモードへ移行することはない。スリープモードへ移行したＥＣＵ１は、ビットサンプリング手段１０６によるビットサンプリングのサンプリング周波数を低減するなどの方法によって、消費電力を低減し、他のＥＣＵ１が送信したメッセージがバス５上に検出された場合に起動（ウェイクアップ）する。
【０１０９】
各ＥＣＵ１のプロトコル制御手段１０２は、上記のスタートアップシーケンス、再同期シーケンス及びスリープシーケンス等の例外的な処理を行う以外は、図３、図５及び図６等に示すように、スロット番号に応じたメッセージの送受信処理、送信メッセージ中のＡＣＫフィールドにＡＣＫ又はＮＡＫを設定する処理、及び受信したメッセージ中のＡＣＫフィールドの値に応じてメッセージを再送信する処理等を行っている。各ＥＣＵ１のプロトコル制御手段１０２は、自らのメッセージ送信の完了後から１サイクルの間に、他のＥＣＵ１からＮＡＫの応答を含むメッセージを受信せず、且つ、少なくとも他の１つのＥＣＵ１からＡＣＫの応答を含むメッセージを受信した場合に、自ら送信したメッセージが正常に受信されたと判断し、新たなメッセージ送信を行う。これに対してプロトコル制御手段１０２は、他のＥＣＵ１からＮＡＫの応答を含むメッセージを１つ以上受信するか、又は、ＡＣＫの応答を含むメッセージを全く受信しない場合に、自ら送信したメッセージが正常に受信されなかったと判断し、メッセージの再送信を行う。またプロトコル制御手段１０２は、他のＥＣＵ１からＡＣＫ／ＮＡＫを判別できないような異常なメッセージを受信した場合にも、自ら送信したメッセージが正常に受信されなかったと判断し、メッセージの再送信を行う。
【０１１０】
図１１は、プロトコル制御手段１０２によるメッセージ送信の成否判定を説明するための模式図である。なお、図１１においては、６つのＥＣＵ１に１つずつのスロットが割り当てられた通信システムにて、スロット１が割り当てられたＥＣＵ１がメッセージ送信の成否判定を行う場合を示してあり、スロット２〜スロット６の期間に受信したメッセージのＡＣＫフィールドに含まれるスロット１に係るＡＣＫ／ＮＡＫの応答結果を示してある。
【０１１１】
スロット１が割り当てられたＥＣＵ１のプロトコル制御手段１０２は、自送信後のスロット２〜スロット６の期間に受信したメッセージに含まれるＡＣＫフィールドのＡＣＫ１の値をそれぞれ調べ、全てのメッセージについてＡＣＫが設定されていた場合には、自らのメッセージ送信が成功したと判断する（図１１のケース１参照）。また少なくとも１つのＥＣＵ１から受信したメッセージにＡＣＫが設定され、その他のＥＣＵ１からのメッセージを受信しない場合についても、プロトコル制御手段１０２は、自らのメッセージ送信が成功したと判断する（図１１のケース２参照）。
【０１１２】
これに対して、スロット２〜スロット６の期間に受信したメッセージにＮＡＫが設定されているものが１つでも存在する場合には、プロトコル制御手段１０２は、自らのメッセージ送信が失敗したと判断し（図１１のケース３参照）、メッセージの再送信を行う。またスロット２〜スロット６の期間にメッセージを全く受信しない場合にも、プロトコル制御手段１０２は、自らのメッセージ送信が失敗したと判断し（図１１のケース４参照）、メッセージの再送信を行う。また、スロット２〜スロット６の期間に、ＡＣＫ／ＮＡＫを判断できない異常なメッセージを受信した場合、プロトコル制御手段１０２は、自らのメッセージ送信が失敗したと判断し（図１１のケース５参照）、メッセージの再送信を行う。
【０１１３】
図１２及び図１３は、プロトコル制御手段１０２によるメッセージ再送信処理を説明するための模式図である。なお、図１２及び図１３においては、通信の１サイクルが６スロットで構成される通信システムにおいて、バス５上にて送受信される３サイクル分のメッセージを時系列で示してある。
【０１１４】
まず、図１２に示す例では、１番目のサイクル（サイクル１）のスロット１〜スロット６と、２番目のサイクル（サイクル２）のスロット１〜スロット２とにおいて、メッセージＡ〜メッセージＨが正しく送受信され、メッセージＢ〜メッセージＩのＡＣＫフィールドは全てのビットにＡＣＫが設定されている。サイクル２のスロット３にて送信されたメッセージＩが受信側の（全ての）ＥＣＵ１にて正しく受信されなかった場合、その後のサイクル２のスロット４〜スロット６と、３番目のサイクル（サイクル３）のスロット１〜スロット２とにおいて送信されるメッセージＪ〜メッセージＮのＡＣＫフィールドには、スロット３に対応するビットにＮＡＫが設定される。スロット３が割り当てられたＥＣＵ１は、メッセージＪ〜メッセージＮに設定されたＮＡＫに対応して、サイクル３のスロット３にてメッセージＩの再送信を行う。
【０１１５】
次に、図１３に示す例では、サイクル１のスロット１〜スロット６と、サイクル２のスロット１〜スロット２とにおいて、メッセージＡ〜メッセージＨが正しく送受信され、メッセージＢ〜メッセージＩのＡＣＫフィールドは全てのビットにＡＣＫが設定されている。サイクル２のスロット３にて送信されたメッセージＩが、ＡＣＫフィールドの各ビットがＡＣＫであるかＮＡＫであるか判別不可能な異常メッセージとして受信側の（全ての）ＥＣＵ１にて受信された場合、その後のサイクル２のスロット４〜スロット６と、サイクル３のスロット１〜スロット３とにおいて、各ＥＣＵ１はメッセージＩのＡＣＫフィールドによる受信成否の判断が行えなかったため、メッセージＤ〜メッセージＩの再送信を行う。
【０１１６】
このように、通信システムの各ＥＣＵ１が、送信するメッセージのＡＣＫフィールドに他のＥＣＵ１からのメッセージ受信の成否を設定すると共に、受信したメッセージのＡＣＫフィールドに設定されたＡＣＫ／ＮＡＫに応じてメッセージの再送信を行う構成とすることによって、通信システムの全てのＥＣＵ１が確実にメッセージを受信できる。
【０１１７】
＜エラー制御＞
図１４は、本発明に係る通信システムにて検出される通信エラーの一覧を示す図表である。本発明の通信プロトコルでは、従来のＣＡＮプロトコルと同様のスタッフエラー、ＣＲＣエラー、フォームエラー及びＡＣＫエラーを検出するが、従来のＣＡＮプロトコルで検出されたビットエラーの検出は行わない。なお本発明の通信プロトコルのＡＣＫエラーは、従来のＣＡＮプロトコルのＡＣＫエラーとは検出方法などが異なるものである。
【０１１８】
本発明の通信プロトコルでは、従来のＣＡＮプロトコルと同様に、メッセージのＳＯＦからＣＲＣフィールドのＣＲＣシーケンスまでを送信する際に、同一の信号レベルが５ビット連続する場合には次のビットに１ビットの反転データを付加する処理を行う。この処理をビットスタッフといい、スタッフエラーは、受信したメッセージのＳＯＦからＣＲＣシーケンスまでに同一の信号レベルが６ビット連続している場合に検出されるエラーである。
【０１１９】
ＣＲＣエラーは、受信したメッセージに含まれるＣＲＣシーケンスの値と、受信したメッセージから算出したＣＲＣの値とが異なる場合に検出されるエラーである。フォームエラーは、ドミナント又はレセシブのいずれかに値が固定されたビット（ＣＲＣデリミタ及びＥＯＦ）について、受信メッセージのこのビットの値が定められた固定値と異なる場合に検出されるエラーである。
【０１２０】
ＡＣＫエラーは、受信したメッセージのＡＣＫフィールドに含まれるいずれかのビットがＮＡＫに設定されていた場合に検出されるエラーである。従来のＣＡＮプロトコルでは、メッセージ中の１ビットのＡＣＫスロットがレセシブの場合にＡＣＫエラーを検出しており、通信システム中の少なくとも１つの通信装置にてメッセージが受信されればＡＣＫスロットがドミナントに設定されるため、送信側の通信装置は受信側のいずれの通信装置がメッセージを正常に受信し、いずれの通信装置がメッセージを正常に受信していないかを確認することはできない。これに対して本発明の通信プロトコルでは、メッセージ中のＡＣＫフィールドには各ＥＣＵ１に割り当てられるスロット毎にＡＣＫビットが設けられているため、送信側のＥＣＵ１は、自らのメッセージ送信後の１サイクルにて受信したメッセージのＡＣＫフィールドを調べることによって、他のＥＣＵ１がメッセージを正常に受信したか否かを個別に判断することができる。
【０１２１】
また、従来のＣＡＮプロトコルでは、各通信装置はバスに信号を送信した後にバスの信号レベルを検出する処理を行っており、このときに送信した信号の信号レベルと検出した信号レベルとが一致しない場合にビットエラーを検出していた。本発明の通信プロトコルでは、各ＥＣＵ１は信号送信後にバス５の信号レベルを検出しないため、このビットエラーについては検出しない。
【０１２２】
通信システムの各ＥＣＵ１は、他のＥＣＵ１からのメッセージを受信した際に上記のエラー検出を行い、いずれかのエラーを検出した場合には、エラー検出後の１サイクル期間内に自らが送信するメッセージに含まれるＡＣＫフィールドの対応するビットにＮＡＫを設定して送信を行う。
【０１２３】
次に、ＥＣＵ１のプロトコル制御層に含まれるエラー制御手段１０３の動作を説明する。従来のＣＡＮプロトコルでは、エラーが多発して故障などの疑いがある通信装置は、メッセージ送受信の処理を停止して通信システム全体に悪影響を与えることを防止する機能が備えられており、本発明の通信プロトコルについても同様の機能を備えている。このようなエラーに関する制御処理は、各ＥＣＵ１のエラー制御手段１０３にて行われる。
【０１２４】
エラー制御手段１０３は、エラーの発生数をカウントするために２つのカウンタ、ＴＥＣ（Transmit Error Counter、送信エラーカウンタ）及びＲＥＣ（Receive Error Counter、受信エラーカウンタ）を有している。図１５は、エラーカウンタの変動条件を示す図表である。各ＥＣＵ１は、自らのメッセージ送信後の１サイクル間に、受信メッセージ中のＡＣＫフィールドに含まれる自送信に係るビットの値を調べることによって、他の全てのＥＣＵ１から自送信のメッセージに対するＮＡＫが与えられていた場合に、ＴＥＣの値に８を加算する。反対に、各ＥＣＵ１は、他の全てのＥＣＵ１から自送信のメッセージに対するＡＣＫが与えられ、メッセージ送信に成功した場合には、ＴＥＣの値から１を減算する（ただしＴＥＣ＝０の場合は変動なし）。
【０１２５】
各ＥＣＵ１は、受信したメッセージにてフォームエラー、ＣＲＣエラー又はスタッフエラーを検出した場合に、ＲＥＣの値に１を加算する。また各ＥＣＵ１は、受信したメッセージに何らかのエラーを検出し、このメッセージに対する応答としてＮＡＫを設定する判定をしたが、その後に他のＥＣＵ１から受信したメッセージから、自らがＮＡＫと判定したメッセージが他のＥＣＵ１でＡＣＫと判定されていた場合、ＲＥＣの値に８を加算する。
【０１２６】
反対に、各ＥＣＵ１は、一のメッセージを受信した後の１サイクルにおいて更に受信した他のメッセージに含まれるＡＣＫフィールドを調べることによって、当該一のメッセージが他のＥＣＵ１によっても正常に受信されたか否かを調べ、他の全てのＥＣＵ１にて正常受信されていた場合に、ＲＥＣの値を減算する。このとき各ＥＣＵ１は、１≦ＲＥＣ≦１２７であればＲＥＣの値から１を減算し、ＲＥＣ＞１２７であればＲＥＣの値を１１９〜１２７に設定する（ただしＲＥＣ＝０の場合は変動なし）。
【０１２７】
また各ＥＣＵ１は、所定数以上のエラーが検出されてメッセージの送信を停止した状態（バスオフ状態、後述する）から復帰した場合に、ＴＥＣ及びＲＥＣの値を０にクリアする。
【０１２８】
図１６は、エラー制御手段１０３の動作を説明するための状態遷移図である。エラー制御手段１０３は、ＴＥＣ及びＲＥＣの２つのカウンタの値に応じて、ＥＣＵ１のエラー制御に係る状態を管理している。エラー制御手段１０３がこれらの状態をプロトコル制御手段１０２へ通知することによって、プロトコル制御手段１０２はエラーの状態に適したメッセージ送受信の処理を行うことができる。エラー制御に係る状態は、エラーアクティブ状態、エラーパッシブ状態及びバスオフ状態の３状態であり、ＥＣＵ１の起動直後の状態（即ち初期状態）はエラーアクティブ状態である。またＴＥＣ及びＲＥＣの値は、ＥＣＵ１の起動時に０にクリアされている。
【０１２９】
エラーアクティブ状態は、ＥＣＵ１の通常動作状態であり、ＥＣＵ１がメッセージの送受信を制限なく行うことができる状態である。エラーアクティブ状態のＥＣＵ１が送信するメッセージは、エラーアクティブビットがドミナントに設定される。エラーアクティブ状態にて、ＴＥＣの値が１２７を超えるか、又は、ＲＥＣの値が１２７を超えた場合、エラー制御手段１０３は、エラーアクティブ状態からエラーパッシブ状態への遷移を行う。
【０１３０】
エラーパッシブ状態は、エラーカウンタの値が一定値を超えたため、メッセージ送信が制限された状態である。エラーアクティブ状態のＥＣＵ１は、割り当てられた１つのスロットに関するメッセージ送信を２サイクルに１回のみ行うように、メッセージ送信が制限される。これにより、故障などの疑いがあるＥＣＵ１のメッセージ送信が、他のＥＣＵ１のメッセージ送受信の妨げとなることが抑制される。
【０１３１】
またエラーパッシブ状態のＥＣＵ１が送信するメッセージは、エラーアクティブビットがレセシブに設定される。エラーアクティブビットがレセシブに設定されたメッセージを受信したＥＣＵ１は、このメッセージのＡＣＫフィールドにＮＡＫが設定されていた場合であっても、このＮＡＫの応答を無視して（メッセージの受信失敗とみなさずに）処理を行う。エラーアクティブフラグがレセシブに設定されたメッセージであっても、ＡＣＫフィールドにＡＣＫが設定されたメッセージであれば、このメッセージを受信したＥＣＵ１は、通常のＡＣＫが設定されたメッセージを受信した場合と同様の処理を行えばよい。即ち、本発明の通信プロトコルでは、メッセージ中のエラーアクティブビットをレセシブに設定し、ＡＣＫフィールドをＮＡＫに設定することによって、このメッセージを従来のＣＡＮプロトコルのエラーフレーム（パッシブエラーフラグ）の代替として利用している。
【０１３２】
エラーパッシブ状態にて、ＴＥＣ及びＲＥＣの値が共に１２７以下となった場合、エラー制御手段１０３は、エラーパッシブ状態からエラーアクティブ状態への遷移を行う。またエラーパッシブ状態にて、ＴＥＣの値が２５５を超えた場合、エラー制御手段１０３は、エラーパッシブ状態からバスオフ状態への遷移を行う。
【０１３３】
バスオフ状態は、エラーカウンタの値が更に増加して一定値を超えたため、ＥＣＵ１が故障などの異常状態に至ったものとみなして、メッセージの送受信が禁じられた状態である。このためバスオフ状態のＥＣＵ１は、バスオフ状態が解除される所定の条件が満たされるまで、一切のメッセージ送受信を行うことができない。バスオフ状態のＥＣＵ１は、アプリケーション１０１からプロトコル制御手段１０２に対するバスオフクリアの要求が与えられた場合（バスオフクリア条件が成立した場合）、エラー制御手段１０３は、バスオフ状態からエラーアクティブ状態への遷移を行うと共に、ＴＥＣ及びＲＥＣの値をクリアする。
【０１３４】
本発明の各ＥＣＵ１が上述のエラー制御処理を行うことによって、従来のＣＡＮプロトコルと同等のエラー制御が実現できる。
【０１３５】
＜プロトコル制御詳細＞
次に、本発明の通信プロトコルによる制御処理の詳細を状態遷移図に従って説明する。図１７は、ＥＣＵ１の通信制御処理に係る動作を説明するための状態遷移図である。なお、以下の説明において、”Ｘ”は通信処理のスタートアップに用いるカウンタの値を示し、スロットカウンタの更新に伴ってカウンタＸの値を減じ、カウンタＸの値が０になった場合にＥＣＵ１がメッセージの再送信を行う。なおカウンタＸは、メッセージ送信までの待機時間を計時する計時手段に相当する。また、”Ｎ”は１サイクルのスロット数を示し、”ｉ”は各ＥＣＵ１に割り当てられたスロット番号のうちの最小番号を示す。
【０１３６】
本発明の通信プロトコルにおいて、各ＥＣＵ１は、初期状態、初期異常状態、同期準備状態、同期待ち状態、同期状態、スリープ準備状態、バススリープ状態及びバスオフ状態の８つの動作状態を遷移して、通信制御処理を行っている。初期状態は、ＥＣＵ１が通信を開始する前の状態であり、機器の電源投入後（パワーオンリセット後）又はリセット信号入力後等にＥＣＵ１はこの状態となる。初期状態においてＥＣＵ１は、外部の機器からの入力によって又は予め記憶したデータを読み出すことによって、通信を行うために必要な情報（スロット数及びスロット番号等）を取得して初期設定を完了した後、他のＥＣＵ１との通信の同期を行うべく同期準備状態へ遷移する。ただしＥＣＵ１は、初期状態において異常が発生した場合又は初期設定に失敗した場合等には、初期状態から初期異常状態へ遷移し、初期異常状態で待機する。
【０１３７】
図１８は、初期状態におけるＥＣＵ１の処理手順を示すフローチャートである。なお、図１８〜図２６に示すフローチャートにおいては、リセット信号が入力された場合に初期状態へ遷移する処理、及び、バスオフ条件が成立した場合にバスオフ状態へ遷移する処理等の例外的な処理は図示を省略してある。また図１８〜図２６のフローチャートに示す処理は、ＥＣＵ１のプロトコル制御層のプロトコル制御手段１０２にて行われる処理である。
【０１３８】
初期状態に遷移したＥＣＵ１は、まず、スロット数及びスロット番号等の情報を取得して初期設定を行う（ステップＳ１）。次いでＥＣＵ１は、初期設定にて異常が発生したか否かを判定し（ステップＳ２）、異常が発生した場合には（Ｓ２：ＹＥＳ）、初期異常状態へ遷移指定（ステップＳ３）、処理を終了する。異常が発生せずに初期設定を完了した場合（Ｓ２：ＮＯ）、ＥＣＵ１は、カウンタＸの値を（３Ｎ）に設定し（ステップＳ４）、スロットカウントの動作を開始して（ステップＳ５）、同期準備状態へ遷移し（ステップＳ６）、初期状態の処理を終了する。
【０１３９】
同期準備状態は、他のＥＣＵ１が既にメッセージの送信を行っているか否かを確認するための状態であり、最大で２サイクルの間、メッセージの受信に徹する。ＥＣＵ１は、バス５上にメッセージが送信されているか否かを調べ、他のＥＣＵ１が送信したメッセージを検出した場合には、このメッセージに同期すべく受信処理を行う。即ち、ＥＣＵ１は、メッセージを正常に受信した場合には、同期状態へ遷移して、このメッセージに同期して以降の処理を行う。またＥＣＵ１は、メッセージを正常に受信できなかった場合（異常なメッセージを受信した場合）には、同期待ち状態へ遷移して、正常なメッセージの受信を待つべくカウンタ”Ｘ”の再設定を行う。また他のＥＣＵ１がメッセージ送信を開始しておらず、２サイクルの間にバス５上のメッセージが検出されなかった場合（カウンタ”Ｘ”が０になった場合）、ＥＣＵ１は自らがメッセージ送信を開始すべく、同期待ち状態へ遷移し、同期待ち状態にてＡＣＫフレームの送信を行う。
【０１４０】
図１９及び図２０は、同期準備状態におけるＥＣＵ１の処理手順を示すフローチャートであり、同期準備状態においてＥＣＵ１は図１９及び図２０に示す処理を繰り返し行っている。同期準備状態のＥＣＵ１は、スロットカウンタの値を調べることによって、スロットが更新されたか否か（スロット番号が変化したか否か）を判定し（ステップＳ１１）、スロットが更新されていない場合には（Ｓ１１：ＮＯ）、スロットが更新されるまで待機する。スロットが更新された場合（Ｓ１１：ＹＥＳ）、ＥＣＵ１は、カウンタＸの値から１を減算し（ステップＳ１２）、カウンタＸの値が０であるか否かを更に判定する（ステップＳ１３）。カウンタＸの値が０の場合（Ｓ１３：ＹＥＳ）、即ちメッセージを受信することなくカウンタＸの値が０に達した場合、ＥＣＵ１は、同期待ち状態へ遷移し（ステップＳ１４）、同期準備状態の処理を終了する。（ＥＣＵ１は、同期待ち状態へ遷移後にＡＣＫフレームの送信を行う。）
【０１４１】
また、カウンタＸの値が０でない場合（Ｓ１３：ＮＯ）、ＥＣＵ１は、正常なメッセージを受信したか否かを判定する（ステップＳ１７）。正常なメッセージを受信していない場合（Ｓ１７：ＮＯ）、ＥＣＵ１は、異常なメッセージを受信したか否かを更に判定する（ステップＳ２０）。異常なメッセージを受信していない場合（Ｓ２０：ＮＯ）、即ち他のＥＣＵ１からのメッセージを全く受信していない場合には、ＥＣＵ１は、処理を終了する（ただし図示の処理は同期準備状態において繰り返し行われており、ステップＳ１１へＥＣＵ１の処理が戻る）。
【０１４２】
正常なメッセージを受信した場合（Ｓ１７：ＹＥＳ）、ＥＣＵ１は、カウンタＸの値を（２Ｎ）に設定し（ステップＳ１８）、同期状態へ遷移して（ステップＳ１９）、同期準備状態の処理を終了する。また異常なメッセージを受信した場合（Ｓ２０：ＹＥＳ）、ＥＣＵ１は、カウンタＸの値が（Ｎ＋ｉ−２）より大きいか否かを更に判定する（ステップＳ２１）。カウンタＸの値が（Ｎ＋ｉー２）より大きい場合（Ｓ２１：ＹＥＳ）、ＥＣＵ１は、カウンタＸの値に（２Ｎ＋ｉ−２）を設定し（ステップＳ２２）、同期待ち状態へ遷移して（ステップＳ２３）、同期準備状態の処理を終了する。またカウンタＸの値が（Ｎ＋ｉ−２）以下の場合（Ｓ２１：ＮＯ）、ＥＣＵ１は、カウンタＸの値に（Ｎ＋ｉ−２）を設定し（ステップＳ２４）、同期待ち状態へ遷移して（ステップＳ２３）、処理を終了する。
【０１４３】
同期待ち状態は、他のＥＣＵ１からのメッセージ受信を待つ状態であり、他のＥＣＵ１からのメッセージを正常に受信した場合に、ＥＣＵ１は受信したメッセージに同期して処理を開始し、同期状態へ遷移する。同期待ち状態において、異常なメッセージを受信した場合、ＥＣＵ１は、このメッセージの再送信を待つ。また同期待ち状態において、他のＥＣＵ１からのメッセージを全く受信しなかった場合（カウンタ”Ｘ”が０になった場合）、ＥＣＵ１は、ＡＣＫフレームを送信する。また同期準備状態にてカウンタＸの値が０となって同期待ち状態へ遷移した場合、ＥＣＵ１は、まずＡＣＫフレームの送信を行う。
【０１４４】
図２１は、同期待ち状態におけるＥＣＵ１の処理手順を示すフローチャートである。同期待ち状態に遷移したＥＣＵ１は、まず、カウンタＸの値が０であるか否かを調べ（ステップＳ３０）、これにより同期準備状態にてカウンタＸの値が０となって同期待ち状態へ遷移したか否かを判断する。カウンタＸの値が０の場合（Ｓ３０：ＹＥＳ）、ＥＣＵ１は、カウンタＸの値に（２Ｎ＋ｉ−２）を設定し（ステップＳ３４）、ＡＣＫフレームを送信して（ステップＳ３５）、ステップＳ３１へ処理を進める。またカウンタＸの値が０でない場合（Ｓ３０：ＮＯ）、ＥＣＵ１は、ステップＳ３１へ処理を進める。
【０１４５】
ステップＳ３１にて、同期待ち状態のＥＣＵ１は、スロットカウンタの値を調べることによって、スロットが更新されたか否かを判定し（ステップＳ３１）、スロットが更新されていない場合には（Ｓ３１：ＮＯ）、スロットが更新されるまで待機する。スロットが更新された場合（Ｓ３１：ＹＥＳ）、ＥＣＵ１は、カウンタＸの値から１を減算し（ステップＳ３２）、カウンタＸの値が０であるか否かを更に判定する（ステップＳ３３）。カウンタＸの値が０の場合（Ｓ３３：ＹＥＳ）、ＥＣＵ１は、カウンタＸの値に（２Ｎ＋ｉ−２）を設定し（ステップＳ３４）、ＡＣＫフレームを送信して（ステップ３５）、ステップＳ３１へ処理を戻す。
【０１４６】
また、カウンタＸの値が０でない場合（Ｓ３３：ＮＯ）、ＥＣＵ１は、正常なメッセージを受信したか否かを判定する（ステップＳ３６）。正常なメッセージを受信していない場合（Ｓ３６：ＮＯ）、ＥＣＵ１は、異常なメッセージを受信したか否かを更に判定する（ステップＳ３９）。異常なメッセージを受信していない場合（Ｓ３９：ＮＯ）、ＥＣＵ１は、ステップＳ３１へ処理を戻す。
【０１４７】
正常なメッセージを受信した場合（Ｓ３６：ＹＥＳ）、ＥＣＵ１は、カウンタＸの値を（２Ｎ）に設定し（ステップＳ３７）、同期状態へ遷移して（ステップＳ３８）、同期待ち状態の処理を終了する。また異常なメッセージを受信した場合（Ｓ３９：ＹＥＳ）、ＥＣＵ１は、カウンタＸの値に（Ｎ＋ｉ−２）を設定し（ステップＳ４０）、ステップＳ３１へ処理を戻す。
【０１４８】
同期状態は、少なくとも１つの他のＥＣＵ１と同期がとれた状態であり、ＥＣＵ１は、自らに割り当てられたスロットにてメッセージ（データフレーム又はＡＣＫフレーム）の送信を行う。また同期状態は、ＴＥＣ及びＲＥＣの値に応じてエラーアクティブ状態又はエラーパッシブ状態の２つの内部状態を持ち、エラーパッシブ状態ではメッセージ送信が２サイクルに１度に制限される。ＥＣＵ１は、通常動作状態においてはこの同期状態で動作している。またＥＣＵ１は、２サイクルの間に他の全てのＥＣＵ１から全くメッセージを受信しなかった場合には、ＡＣＫフレームを送信して、同期待ち状態へ遷移する。アプリケーション層のアプリケーション１０１からスリープ要求が与えられた場合には、ＥＣＵ１は、スリープ遷移状態へ遷移する。その他、ＥＣＵ１は、リセット信号の入力に応じて初期状態へ遷移し、バスオフ条件の成立に応じてバスオフ状態へ遷移する。
【０１４９】
図２２及び図２３は、同期状態におけるＥＣＵ１の処理手順を示すフローチャートであり、同期状態においてＥＣＵ１は図２２及び図２３に示す処理を繰り返し行っている。同期状態のＥＣＵ１は、アプリケーション１０１からのスリープ指示が与えられたか否かを判定し（ステップＳ５１）、スリープ指示が与えられた場合には（Ｓ５１：ＹＥＳ）、スリープ準備状態へ遷移して（ステップＳ５２）、同期状態の処理を終了する。
【０１５０】
アプリケーション１０１からのスリープ指示が与えられていない場合（Ｓ５１：ＮＯ）、ＥＣＵ１は、自らに割り当てられたスロットのアクションポイントに達したか否かを判定する（ステップＳ５３）。アクションポイントに達した場合（Ｓ５３：ＹＥＳ）、ＥＣＵ１は、自らのエラー状態がエラーパッシブ状態であるか否かを更に判定する（ステップＳ５４）。エラー状態がエラーパッシブ状態の場合（Ｓ５４：ＹＥＳ）、メッセージの送信が２サイクルに１度に制限されるため、ＥＣＵ１は、自らがメッセージを送信できるサイクルであるか否かを更に判定する（ステップＳ５５）。メッセージ送信できるサイクルでないと判定した場合（Ｓ５５：ＮＯ）、ＥＣＵ１は、処理を終了する（ただし図示の処理は同期状態において繰り返し行われており、ステップＳ５１へＥＣＵ１の処理が戻る）。
【０１５１】
エラー状態がエラーパッシブ状態でない場合（Ｓ５４：ＮＯ）、即ちエラー状態がエラーアクティブの場合、又は、エラー状態がエラーパッシブ状態であってもメッセージ送信できるサイクルの場合（Ｓ５５：ＹＥＳ）、ＥＣＵ１は、他のＥＣＵ１へ送信すべきデータが存在するか否かを調べる（ステップＳ５６）。ＥＣＵ１は、他のＥＣＵ１へ送信すべきデータが存在する場合（Ｓ５６：ＹＥＳ）、このデータを含むデータフレームを生成して送信し（ステップＳ５７）、処理を終了する。またＥＣＵ１は、他のＥＣＵ１へ送信すべきデータが存在しない場合（Ｓ５６：ＮＯ）、ＡＣＫフレームを生成して送信し（ステップＳ５８）、処理を終了する。
【０１５２】
また自らに割り当てられたスロットのアクションポイントに達していない場合（Ｓ５３：ＮＯ）、ＥＣＵ１は、スロットカウンタの値を調べることによって、スロットが更新されたか否かを判定する（ステップＳ５９）。スロットが更新されていない場合（Ｓ５９：ＮＯ）、ＥＣＵ１は、ステップＳ５１へ処理を戻し、スリープ指示が与えられるか、アクションポイントに達するか、又は、スロットが更新されるまで、ステップＳ５１、Ｓ５３及びＳ５９の判定を繰り返し行う。
【０１５３】
スロットが更新された場合（Ｓ５９：ＹＥＳ）、ＥＣＵ１は、カウンタＸの値から１を減算し（ステップＳ６０）、カウンタＸの値が０であるか否かを更に判定する（ステップＳ６１）。カウンタＸの値が０の場合（Ｓ６１：ＹＥＳ）、ＥＣＵ１は、カウンタＸの値に（２Ｎ＋ｉ−２）を設定し（ステップＳ６２）、ＡＣＫフレームを送信して（ステップ６３）、同期待ち状態へ遷移し（ステップＳ６４）、同期状態の処理を終了する。また、カウンタＸの値が０でない場合（Ｓ６１：ＮＯ）、ＥＣＵ１は、正常なメッセージを受信したか否かを判定する（ステップＳ６５）。正常なメッセージを受信した場合（Ｓ６５：ＹＥＳ）、ＥＣＵ１は、カウンタＸの値に（２Ｎ）を設定し（ステップＳ６６）、処理を終了する。また正常なメッセージを受信しない場合（Ｓ６５：ＮＯ）、即ち異常なメッセージを受信した場合又はメッセージを受信しない場合には、ＥＣＵ１は、処理を終了する。
【０１５４】
スリープ準備状態では、アプリケーション１０１からのスリープ要求が与えられて、他のＥＣＵ１との間でスリープの合意が得られた場合、又は、アプリケーション１０１からスリープ要求がキャンセルされた場合、ＥＣＵ１は他の状態への遷移を行う。スリープ準備状態において、ＥＣＵ１は、データフレームの送信を行うことはできず、スリープビットをレセシブに設定したＡＣＫフレームの送信のみを行う。ＥＣＵ１は、他のＥＣＵ１からスリープビットがレセシブに設定されたＡＣＫフレームをＭ（予め定められた定数）サイクルに亘って受信した場合に、バススリープ状態へ遷移する。またＥＣＵ１は、アプリケーション１０１からスリープ要求のキャンセルが与えられた場合に、同期状態へ遷移する。
【０１５５】
図２４は、スリープ準備状態におけるＥＣＵ１の処理手順を示すフローチャートである。なお、図示の処理では、ＥＣＵ１がスリープ準備カウンタを用いて処理を行うが、このカウンタは初期設定などの際に値が０に初期化される。スリープ準備状態へ遷移したＥＣＵ１は、まず、アプリケーション１０１からのスリープ要求がキャンセルされたか否かを判定し（ステップＳ７１）、スリープ要求がキャンセルされていない場合には（Ｓ７１：ＮＯ）、他のＥＣＵからＡＣＫフレームを１サイクル受信したか否かを更に判定する（ステップＳ７４）。ＡＣＫフレームを１サイクル受信していない場合（Ｓ７４：ＮＯ）、ＥＣＵ１は、ステップＳ７１へ処理を戻し、スリープ要求がキャンセルされるか、又は、ＡＣＫフレームを１サイクル受信するまで、ステップＳ７１及びＳ７４の判定を繰り返し行う。
【０１５６】
アプリケーション１０１によってスリープ要求がキャンセルされた場合（Ｓ７１：ＹＥＳ）、ＥＣＵ１は、スリープ準備カウンタの値に０を設定し（ステップＳ７２）、同期状態へ遷移して（ステップＳ７３）、スリープ準備状態の処理を終了する。
【０１５７】
またＡＣＫフレームを１サイクル受信した場合（Ｓ７４：ＹＥＳ）、ＥＣＵ１は、スリープ準備カウンタの値をインクリメントし（ステップＳ７５）、スリープ準備カウンタの値が予め設定されたＭに達したか否かを判定する（ステップＳ７６）。スリープ準備カウンタの値がＭに達していない場合（Ｓ７６：ＮＯ）、ＥＣＵ１は、ステップＳ７１へ処理を戻し、上述の処理を繰り返し行う。スリープ準備カウンタの値がＭに達した場合（Ｓ７６：ＹＥＳ）、ＥＣＵ１は、スリープ準備カウンタの値に０を設定する（ステップＳ７７）。次いでＥＣＵ１は、ビットサンプリング手段１０６による通常のサンプリングを禁止し（ステップＳ７８）、即ちビットサンプリング手段１０６によるサンプリングの周波数を低減するなどの省電力化設定をおこない、バススリープ状態へ遷移し（ステップＳ７９）、スリープ準備状態の処理を終了する。
【０１５８】
バスオフ状態は、他の全ての状態においてＴＥＣ＞２５５のバスオフ条件が成立した場合に遷移する状態であり、バスオフ条件がクリアされるまで待機する。バスオフ条件がクリアされた場合、ＥＣＵ１は、初期状態へ遷移する。
【０１５９】
図２５は、バスオフ状態におけるＥＣＵ１の処理手順を示すフローチャートである。ＴＥＣ＞２５５のバスオフ条件が成立することによって、他の状態からバスオフ状態へ遷移したＥＣＵ１は、バスオフ条件がクリアされたか（バスオフ条件が不成立の状態となったか）否かを判定し（ステップＳ８１）、バスオフ条件がクリアされていない場合には（Ｓ８１：ＮＯ）、バスオフ条件がクリアされるまで待機する。バスオフ条件がクリアされた場合（Ｓ８１：ＹＥＳ）、ＥＣＵ１は、初期状態へ遷移し（ステップＳ８２）、バスオフ状態の処理を終了する。
【０１６０】
バススリープ状態は、通信システム内で他のＥＣＵ１とのスリープに関する合意が成立し、サンプリングの周波数を低減するなどの低消費電力状態でＥＣＵ１がバス５の監視を行う状態である。バススリープ状態において、ＥＣＵ１は、メッセージの送信は行わず、バス５上のドミナント（ウェイクアップ要求）を検出した場合、又は、アプリケーション１０１からスリープ要求のキャンセルが与えられた場合に、サンプリングの周波数を通常のものへ戻すなどの低消費電力状態からの復帰処理を行い、初期状態へ遷移する。
【０１６１】
図２６は、バススリープ状態におけるＥＣＵ１の処理手順を示すフローチャートである。バススリープ状態へ遷移したＥＣＵ１は、アプリケーション１０１からのウェイクアップ要求が与えられたか否かを判定し（ステップＳ９１）、ウェイクアップ要求が与えられていない場合には（Ｓ９１：ＮＯ）、バス５上にドミナントの信号が検出されたか否かを更に判定する（ステップＳ９２）。ドミナントの信号が検出されない場合（Ｓ９２：ＮＯ）、ＥＣＵ１は、ステップＳ９１へ処理を戻し、ウェイクアップ要求が与えられるか又はドミナントの信号が検出されるまで判定処理を繰り返す。
【０１６２】
アプリケーション１０１からウェイクアップ要求が与えられた場合（Ｓ９１：ＹＥＳ）、又は、バス５上にドミナントの信号が検出された場合（Ｓ９２：ＹＥＳ）、ＥＣＵ１は、初期状態へ遷移して（ステップＳ９３）、バススリープ状態の処理を終了する。
【０１６３】
＜スタートアップシーケンス＞
次に、本発明に係る通信システムの各ＥＣＵ１が行うスタートアップシーケンスについて、いくつかの例を示して説明する。本発明の通信システムの各ＥＣＵ１は、起動して初期状態から同期準備状態へ遷移した後で、既にメッセージの送信を開始した他のＥＣＵ１が存在するか否かを判断するために、３サイクル期間に亘ってメッセージ受信のみを行う。この期間中に他のＥＣＵ１から正常なメッセージを受信した場合、ＥＣＵ１は受信したメッセージに含まれるスロット番号に同期し、同期状態へ遷移して通常のメッセージ送受信を行う。この期間中に異常なメッセージを受信した場合、ＥＣＵ１は、異常なメッセージを受信したスロットをサイクルにおける１番目のスロット（スロット１）とし、同期待ち状態へ遷移し、タイマとして用いるカウンタＸに値を設定して、以降のサイクルでのメッセージ再送信を待つ。この期間中に他のＥＣＵ１からのメッセージを受信しなかった場合、ＥＣＵ１は、ＡＣＫフレームを送信してカウンタＸに値を設定すると共に、自らがメッセージ送信を行ったスロットをスロット１として同期待ち状態へ遷移し、他のＥＣＵ１からの応答を待つ。
【０１６４】
図２７〜図２９は、スタートアップシーケンスの処理例を示すタイミングチャートである。なお、図示の例は、１サイクルが４スロットであり、スロット１〜４がＥＣＵ１ａ〜１ｄにそれぞれ１つずつ割り当てられた通信システムにおけるスタートアップシーケンスである。また各図においては、送信メッセージ（Ｍｓｇの文字列が記載された長方形）、動作状態（破線の長円形）、スロットカウンタの値（SC=）及びカウンタＸの値（X=）をＥＣＵ１ａ〜１ｄ毎に図示してある。
【０１６５】
図２７に示す例は、スタートアップシーケンスが正常に行われた例である。スロット２が割り当てられたＥＣＵ１ｂは、同期待ち状態において、カウンタＸ＝０のタイミングでメッセージＡを送信する。このメッセージＡは他のＥＣＵ１ａ、１ｃ及び１ｄにて正常に受信され、ＥＣＵ１ａ、１ｃ及び１ｄのスロットカウンタはメッセージＡに含まれるスロット番号（スロット２）に同期して更新されると共に、ＥＣＵ１ａ、１ｃ及び１ｄは同期状態へ遷移する。
【０１６６】
次のスロット（スロット３）にてＥＣＵ１ｃがメッセージＢを送信し、このメッセージＢを正常に受信したＥＣＵ１ｂは、メッセージＢに含まれるスロット番号（スロット３）に同期してスロットカウンタを更新し、同期待ち状態から同期状態へ遷移する。これにより全てのＥＣＵ１ａ〜１ｄは、スロットカウンタの値が同期した状態で、以降のメッセージＣ〜Ｋの送信を巡回的に行うことができる。
【０１６７】
図２８に示す例は、スタートアップシーケンスにおいてＥＣＵ１ａ及び１ｂが同時的にメッセージを送信し、２つのメッセージがバス５上で衝突した場合の例である。同期待ち状態の２つのＥＣＵ１ａ及び１ｂにてカウンタＸの値が共に０となってメッセージＡ及びＢが同時的に送信された場合、メッセージを送信したＥＣＵ１ａ及び１ｂは、送信メッセージのチェックを行わないため、メッセージＡ及びＢが衝突したことを知ることはなく、それぞれカウンタＸの値を（２Ｎ＋ｉ−２）に設定する（即ち、ＥＣＵ１ａはカウンタＸの値を７に設定し、ＥＣＵ１ｂはカウンタＸの値を８に設定する）。またメッセージの送信を行ったＥＣＵ１ａ及び１ｂは、メッセージを送信のタイミングをスロット１とみなしてスロットカウンタを設定するため、次のスロットは共にスロット２となる。
【０１６８】
また、衝突したメッセージＡ及びＢを受信した同期準備状態のＥＣＵ１ｃ及び１ｄでは、受信したメッセージが異常なメッセージであると判断し、メッセージを受信したサイクルをサイクル１とみなしてスロットカウンタの値を設定すると共に、それぞれカウンタＸの値を（２Ｎ＋ｉ−２）に設定して（即ち、ＥＣＵ１ｃはカウンタＸの値を９に設定し、ＥＣＵ１ｄはカウンタＸの値を１０に設定して）、同期待ち状態へ遷移する。
【０１６９】
このように、４つのＥＣＵ１ａ〜１ｄが、割り当てられたスロット番号に応じて異なる値をカウンタＸに設定することによって、その後に最も早くカウンタＸの値が０となったＥＣＵ１ａのみがメッセージＣの送信を行うことができる。メッセージＣは他のＥＣＵ１ｂ〜１ｄに正常に受信され、ＥＣＵ１ｂ〜１ｄは、それぞれが有するスロットカウンタの値を、メッセージＣに含まれるスロット番号（スロット１）に同期させ、同期状態へ遷移する。その後、次のスロット２にてＥＣＵ１ｂがメッセージＤを送信し、他のＥＣＵ１ａ、１ｃ及び１ｄにてメッセージＤが正常に受信され、同期待ち状態のＥＣＵ１ａはメッセージＤに含まれるスロット番号（スロット２）にスロットカウンタを同期させて、同期状態へ遷移する。
【０１７０】
図２９に示す例は、スタートアップシーケンスにおいてＥＣＵ１ａ及び１ｂが同時的にメッセージを送信し、２つのメッセージがバス５上で衝突した場合の別の例である。上述の図２８に示す例と同様に、同時的にメッセージを送信したＥＣＵ１ａ及び１ｂは、それぞれカウンタＸの値を（２Ｎ＋ｉ−２）に設定し（即ち、ＥＣＵ１ａはカウンタＸの値を７に設定し、ＥＣＵ１ｂはカウンタＸの値を８に設定し）、メッセージを送信のタイミングをスロット１とみなしてスロットカウンタを設定する。
【０１７１】
また、衝突したメッセージＡ及びＢを同期待ち状態のＥＣＵ１ｃ及び１ｄが受信した場合、ＥＣＵ１ｃ及び１ｄは受信メッセージが異常なメッセージであると判断し、メッセージを受信したサイクルをサイクル１とみなしてスロットカウンタの値を設定すると共に、それぞれカウンタＸの値を（Ｎ＋ｉ−２）に設定する（即ち、ＥＣＵ１ｃはカウンタＸの値を５に設定し、ＥＣＵ１ｄはカウンタＸの値を６に設定する）。
【０１７２】
このように、異常なメッセージを受信したＥＣＵ１ｃ及び１ｄでは、同期準備状態であるか又は同期待ち状態であるかに応じてカウンタＸが（２Ｎ＋ｉ−２）又は（Ｎ＋ｉ−２）に設定される。即ち、同期待ち状態で異常なメッセージを受信した場合には、同期準備状態で異常なメッセージを受信した場合より、カウンタＸが小さな値に設定される。このため、その後にはＥＣＵ１ｃのカウンタＸの値が先に０となり、ＥＣＵ１ｃがメッセージＣを送信する。メッセージＣは他のＥＣＵ１ａ、１ｂ及び１ｄに正常に受信され、ＥＣＵ１ａ、１ｂ及び１ｄは、それぞれが有するスロットカウンタの値を、メッセージＣに含まれるスロット番号（スロット３）に同期させ、同期状態へ遷移する。その後、次のスロット２にてＥＣＵ１ｄがメッセージＤを送信し、他のＥＣＵ１ａ〜１ｃにてメッセージＤが正常に受信され、同期待ち状態のＥＣＵ１ｃはメッセージＤに含まれるスロット番号（スロット４）にスロットカウンタを同期させて、同期状態へ遷移する。
【０１７３】
以上のように、スタートアップシーケンスにてメッセージの衝突が生じた場合であっても、通信システム中の各ＥＣＵ１ａ〜１ｄにてカウンタＸがそれぞれ異なる値に設定され、最も小さい値が設定されたＥＣＵ１ａ〜１ｄから次のメッセージ送信を開始することによって、全てのＥＣＵ１ａ〜１ｄが同期して通信を開始することができる。
【０１７４】
＜再同期シーケンス＞
次に、本発明に係る通信システムの各ＥＣＵ１が行う再同期シーケンスについて、いくつかの例を示して説明する。再同期シーケンスは、通信システムの各ＥＣＵ１がスタートアップシーケンスを終えて同期した通信を開始した後、何らかの通信不具合などによってＥＣＵ１間の同期がとれない状態となった場合に、各ＥＣＵ１の判断によってスタートアップシーケンスを再度行うものである。各ＥＣＵ１は、自らがメッセージ送信を行ったスロットから２サイクル後の同スロットまでの間に、他のＥＣＵ１から正常に受信するメッセージがなかった場合、同期待ち状態へ遷移して再同期を行う。
【０１７５】
図３０〜図３１は、再同期シーケンスの処理例を示すタイミングチャートである。なお、図示の例は、図２７〜図２９と同様に、１サイクルが４スロットであり、スロット１〜４がＥＣＵ１ａ〜１ｄにそれぞれ１つずつ割り当てられた通信システムにおける再同期シーケンスである。また各図においては、送信メッセージ（Ｍｓｇの文字列が記載された長方形）、動作状態（破線の長円形）、スロットカウンタの値（SC=）及びカウンタＸの値（X=）をＥＣＵ１ａ〜１ｄ毎に図示してある。ただし、ＥＣＵ１ａ〜１ｄが同期状態の場合のカウンタＸの値は図示を省略する。
【０１７６】
図３０に示す例は、１つのＥＣＵ１ｂにて他のＥＣＵ１ａ、１ｃ及び１ｄとの同期ズレが生じ、ＥＣＵ１ａ及びＥＣＵ１ｂが同時的にメッセージＡ及びＢを送信した場合である。ＥＣＵ１ａ、１ｃ及び１ｄのスロットカウンタがスロット１のタイミングにて、ＥＣＵ１ｂのスロットカウンタがスロット２となり、ＥＣＵ１ａ及び１ｂが同時的にメッセージＡ及びＢを送信した場合、他のＥＣＵ１ｃ及び１ｄでは異常なメッセージが受信される。次のスロットにおいて、ＥＣＵ１ａ、１ｃ及び１ｄのスロットカウンタはスロット２であるが、ＥＣＵ１ｂのスロットカウンタはスロット２であるため、ＥＣＵ１ｂのメッセージ送信は行われない。
【０１７７】
その後、ＥＣＵ１ａ、１ｃ及び１ｄのスロットカウンタがスロット３のタイミングにて、ＥＣＵ１ｃがメッセージＣを送信する。これにより、メッセージＣを正常に受信したＥＣＵ１ｂは、メッセージＣに含まれるスロット番号にスロットカウンタを同期させるため、全てのＥＣＵ１ａ〜１ｄが同期した状態へ復帰することができる。
【０１７８】
図３１に示す例は、全てのＥＣＵ１ａ〜１ｄの同期にズレが生じ、全てのＥＣＵ１ａ〜１ｄが同時的にメッセージＡ〜Ｄを送信した場合である。全てのＥＣＵ１ａ〜１ｄが同時的にメッセージＡ〜Ｄを送信した場合、次のサイクルに至るまでの間はメッセージ送信が行われることはなく、１サイクル後に全てのＥＣＵ１ａ〜１ｄが同時的にメッセージＥ〜Ｈを送信する。更に１サイクル後には、同様にして全てのＥＣＵ１ａ〜１ｄが同時的にメッセージＩ〜Ｌを送信する。
【０１７９】
各ＥＣＵ１ａ〜１ｄは、このように２サイクル期間に亘って他のＥＣＵ１ａ〜１ｄからのメッセージを受信しない場合、カウンタＸの値を（２Ｎ＋ｉ−２）にそれぞれ設定して、同期待ち状態へ遷移する。このとき各ＥＣＵ１ａ〜１ｄのカウンタＸは、割り当てられたスロットに応じてそれぞれ異なる値に設定され、カウンタＸに最も小さい値が設定されたＥＣＵ１ａからメッセージ送信を行うことによって、全てのＥＣＵ１ａ〜１ｄのスロットカウンタを同期させることができ、巡回的なメッセージ送信を再開することができる。
【０１８０】
以上の構成の本発明に係る通信システムにおいては、複数のＥＣＵ１が共通のバス５で接続されたネットワーク構成にて、各ＥＣＵ１に予め一又は複数のスロット（送信権利）を割り当てておき、スロット毎に定められた順序で複数のＥＣＵ１が巡回的にメッセージの送信を行う構成とすることにより、複数のＥＣＵ１が同時的にメッセージ送信を行うことがないため、従来のＣＡＮプロトコルのようなアービトレーションを行う必要がなく、通信速度を高速化することが可能となる。
【０１８１】
また各ＥＣＵ１は、一のスロットに係るメッセージ送信を行う場合に、他のＥＣＵ１へ送信すべきデータと共に、他のスロットの係るメッセージ受信の成否をそれぞれ示す情報を含めたメッセージを作成して送信する構成とすることにより、自らに割り当てられたスロットを有効に活用して他のＥＣＵ１へメッセージ受信の成否を知らせることができ、且つ、自らが有するデータを他のＥＣＵ１へ与えることができる。
【０１８２】
一のＥＣＵ１が送信したメッセージは、バス５に接続された他の全てのＥＣＵ１にて受信され、メッセージを受信したＥＣＵ１は、このメッセージのデータフィールドから必要なデータを取得することができると共に、メッセージのＡＣＫフィールドから以前に自らが送信したメッセージが正しく受信されたか否かを判断することができる。よって各ＥＣＵ１は、一のスロットに係る前回のメッセージ送信から次のメッセージ送信までの１サイクルの間に受信したメッセージに含まれるＡＣＫフィールドの情報を調べ、前回のメッセージが他のＥＣＵ１にて正しく受信されていなかった場合には、次のスロットにてメッセージの再送信を行うことができる。
【０１８３】
これにより、メッセージ送信の衝突を生じることなく複数のＥＣＵ１が効率よくメッセージ送信を巡回的に行うことができ、何らかの不具合によってメッセージが正しく受信されなかった場合であっても、確実にメッセージの再送信を行うことができる。
【０１８４】
また、ＥＣＵ１が作成して送信するメッセージには、１サイクル分のスロットに係るメッセージ受信の成否情報をＡＣＫフィールドに含む構成とすることにより、各通信装置は、１サイクルに亘って受信したメッセージのＡＣＫフィールドをそれぞれ調べることによって、バス５を共有する他の全ての通信装置にて自らの送信メッセージが正しく受信されたか否かを知ることができる。
【０１８５】
また、一のスロットについて全くメッセージ送信がなされない場合、通信システムの各ＥＣＵ１は、このスロットに係るメッセージ受信処理を省略して、次のスロットに係る処理を行う構成とすることにより、このスロットが割り当てられたＥＣＵ１が何らかの理由でメッセージ送信を停止している場合に、サイクル中のメッセージ送受信が行われない時間を可能な限り短くすることができ、通信速度の高速化に寄与することができる。
【０１８６】
また、各ＥＣＵ１が作成して送信するメッセージには、いずれのスロットにて送信されたメッセージであるかを識別するためにスロット番号の情報を含め、各ＥＣＵ１は受信したメッセージのスロット番号により通信処理の同期を行う構成とすることにより、通信システム中の複数のＥＣＵ１がスロットを同期して確実にメッセージの送受信を行うことができる。
【０１８７】
また、各ＥＣＵ１がＴＥＣ及びＲＥＣのエラーカウンタを有してメッセージ送受信に係るエラーの発生数をカウントし、エラー発生数が所定数を超えた場合、各ＥＣＵ１はメッセージ送信を２サイクルに１回に低減する構成とすることにより、故障などが生じた可能性が高いＥＣＵ１のメッセージ送信が他のＥＣＵ１の処理に悪影響を与えることを防止でき、通信システムの信頼性を向上できる。
【０１８８】
また、起動後などに行うスタートアップシーケンスでは、各ＥＣＵ１は、駆動直後の３サイクルの間は他のＥＣＵ１からのメッセージ受信に徹し、３サイクルの間にメッセージを受信した場合には、受信メッセージのスロットに同期して処理を開始し、３サイクルの間にメッセージを受信しない場合には、自らがメッセージ（ＡＣＫフレーム）の送信を行う構成とすることにより、通信システムの複数のＥＣＵ１が起動後に確実に同期して通信処理を開始することができる。
【０１８９】
またスタートアップシーケンスにおいて、各ＥＣＵ１は、メッセージ送信後及び異常なメッセージの受信後に、自らに割り当てられたスロット番号に応じてカウンタＸの値を設定し、カウンタＸをデクリメントして０に達した場合にメッセージ送信を行う構成とすることにより、通信システムの複数のＥＣＵ１がそれぞれ異なる値をカウンタＸに設定することができ、最も小さい値が設定されたＥＣＵ１が次のメッセージ送信を単独で行うことができるため、このメッセージを他のＥＣＵ１が受信して同期を行うことができる。
【０１９０】
またスタートアップシーケンスを完了して同期が確立された後の不具合（同期ズレ）に対して、各ＥＣＵ１は、２サイクルの間に他のＥＣＵ１からのメッセージを全く受信しなかった場合、自らに割り当てられたスロット番号に応じてカウンタＸの値を設定し、スタートアップシーケンスと同様の処理により再同期を行う構成とすることにより、通信の不具合などによって複数の通信装置に同期ズレが生じ、複数の通信装置が同時的にメッセージ送信を行った場合であっても、複数の通信装置の再同期を確実に行うことができる。
【０１９１】
また通信システムをスリープモードへ移行する場合、各ＥＣＵ１がスリープビットをレセシブに設定したＡＣＫフレームをスリープ要求として送受信し、１サイクルの間に全てのスロットについてスリープ要求を受信した場合に各ＥＣＵ１がそれぞれメッセージ送信を停止してスリープモード（バススリープ状態）へ移行する構成とすることにより、バス５に接続された全てのＥＣＵ１の間でスリープモードへ移行することに対する合意を取った後に各ＥＣＵ１がスリープモードへ移行することができる。
【０１９２】
このように、本発明の通信システムは、従来のＣＡＮプロトコルが有する機能と略同じ機能を有しており、これらを各ＥＣＵ１のプロトコル制御層にて実現しているため、従来のＣＡＮプロトコルに対応して作られたアプリケーションをそのまま利用する（又は、アプリケーションに対して少ない修正を行って利用する）ことが可能である。加えて、本発明の通信システムは、従来のＣＡＮプロトコルのようなアービトレーションを行う必要がなく、メッセージ送信時にビット毎の信号レベル検出を行う必要がないため、従来のＣＡＮプロトコルにおける高速化に対する阻害要因がなくなり、従来のＣＡＮプロトコルよりも高速なメッセージ送受信を実現することができる。
【０１９３】
なお本実施の形態においては、各ＥＣＵ１に対するスロットの割り当てを静的に行う構成としたが、これに限るものではなく、通信システムの起動後などの何らかのタイミングにて各ＥＣＵ１に対するスロットの割り当てを動的に行う構成としてもよい。また、１つのＥＣＵ１に対して複数のスロットを割り当て可能としたが、これに限るものではなく、１つのＥＣＵ１に対して１つのスロットのみを割り当てる構成としてもよい。また、本発明の通信システムは、車輌に搭載されるものに限らず、その他の種々のシステムに適用することができる。
【０１９４】
（変形例）
また、ＥＣＵ１が送受信するメッセージの構成は、図４に示したものに限らず、例えば以下の変形例に示すような他の構成であってもよい。図３２は、変形例に係る通信システムのメッセージ構成を示す模式図である。なお本図においては、データフレームの構成のみを図示し、ＡＣＫフレームについては同様の構成（データフレームからデータフィールドを除いた構成）であるため、図示を省略する。
【０１９５】
変形例のデータフレームは、図４に示したデータフレームに対して、スロット番号とデータフィールドとの間にスロット番号用ＣＲＣ（図３２において単にＣＲＣと記載する）を追加した構成である。図示は省略するがＡＣＫフレームは、スロット番号とＣＲＣフィールドとの間にスロット番号用ＣＲＣを追加する。スロット番号用ＣＲＣは、受信したメッセージに含まれるスロット番号の誤り検出を行うためのものであり、スロット番号の値について予め定められた生成多項式を用いた演算を行うことにより取得する。メッセージを受信したＥＣＵ１は、受信したメッセージに含まれるスロット番号から生成多項式により算出される値と、受信したメッセージのスロット番号用ＣＲＣの値とを比較することによって、誤り検出を行うことができ、２つの値が一致しない場合は誤りが生じていると判断する。
【０１９６】
このように、ＥＣＵ１が送受信するメッセージ中にスロット番号の誤りを検出するためのスロット番号用ＣＲＣを設けることによって、ＣＲＣフィールドに基づく誤り検出にて誤りが検出された場合に、ＥＣＵ１は誤りがスロット番号に含まれるか否かを更に調べることができる。これにより各ＥＣＵ１は、誤りが含まれるメッセージを受信した場合であっても、スロット番号に誤りが含まれていなければ、受信したメッセージのスロット番号による通信の同期処理を行うことができるため、複数のＥＣＵ１による巡回的なメッセージ送受信をより円滑に行うことが可能となる。
【０１９７】
なお、上述の変形例においては、スロット番号の誤りを検出するスロット番号用ＣＲＣをメッセージ中に設ける構成としたが、これに限るものではなく、スロット番号の誤りを訂正することができるデータをメッセージ中に設ける構成としてもよい。
【符号の説明】
【０１９８】
１、１ａ〜１ｄ  ＥＣＵ（通信装置）
５  バス（通信線）
１１  制御部
１２  入力部
１３  出力部
１４  記憶部
１５  電源回路
１６  通信部
１０１  アプリケーション
１０２  プロトコル制御手段（メッセージ送信手段、メッセージ再送信手段、通信開始手段、通信再開手段、通信停止要求送信手段、通信停止要求受信手段、通信停止制御手段）
１０３  エラー制御手段
１０４  メッセージ生成手段
１０５  スロット管理手段
１０６  ビットサンプリング手段
１０７  バスドライバ
【図１】
0005717240.tif 000002
【図２】
0005717240.tif 000003
【図３】
0005717240.tif 000004
【図４】
0005717240.tif 000005
【図５】
0005717240.tif 000006
【図６】
0005717240.tif 000007
【図７】
0005717240.tif 000008
【図８】
0005717240.tif 000009
【図９】
0005717240.tif 000010
【図１０】
0005717240.tif 000011
【図１１】
0005717240.tif 000012
【図１２】
0005717240.tif 000013
【図１３】
0005717240.tif 000014
【図１４】
0005717240.tif 000015
【図１５】
0005717240.tif 000016
【図１６】
0005717240.tif 000017
【図１７】
0005717240.tif 000018
【図１８】
0005717240.tif 000019
【図１９】
0005717240.tif 000020
【図２０】
0005717240.tif 000021
【図２１】
0005717240.tif 000022
【図２２】
0005717240.tif 000023
【図２３】
0005717240.tif 000024
【図２４】
0005717240.tif 000025
【図２５】
0005717240.tif 000026
【図２６】
0005717240.tif 000027
【図２７】
0005717240.tif 000028
【図２８】
0005717240.tif 000029
【図２９】
0005717240.tif 000030
【図３０】
0005717240.tif 000031
【図３１】
0005717240.tif 000032
【図３２】
0005717240.tif 000033