(57)【要約】      （修正有）【課題】バスの使用効率の低下を抑制しつつ、耐障害性を向上するシステムを提供する。【解決手段】ＣＡＮシステム９００は、第１のノード９１と第２のノード９２を備える。第１のノードは、ＣＡＮバス９０を介したフレームの受信に失敗したときに自ノードがエラーパッシブ状態となっている場合、フレームの再送を要求する再送要求フレームを送信する。第２のノードは、ＣＡＮバスに対して送信されたフレームを記憶部に格納し、第１のノードから送信された再送要求フレームで再送が要求されたフレームを記憶部から取得し、第１のノードに再送する。【選択図】図１６
2014086812.tif 000002
【特許請求の範囲】
【請求項１】
ＣＡＮ（Controller Area Network）バスを介してフレームを相互に送受信する、第１のノード及び第２のノードを含む複数のノードを備えたＣＡＮシステムであって、
前記第１のノードは、
自ノードの、前記ＣＡＮバスに対するフレーム送受信のエラー回数をカウントするエラーカウンタと、
前記ＣＡＮバスを介したフレームの受信に失敗したときに、前記エラーカウンタのカウント値が所定の閾値を超えて、自ノードがエラーパッシブ状態となっているか否かを判断するエラー管理部と、
前記エラー管理部によって前記フレームの受信に失敗したときに自ノードがエラーパッシブ状態であると判断された場合、当該フレームの再送を要求する再送要求フレームを送信する再送要求部を有し、
前記第２のノードは、
前記フレームが格納される記憶部と、
前記ＣＡＮバスに対して送信されたフレームを前記記憶部に格納する記録制御部と、
前記第１のノードから送信された再送要求フレームで再送が要求されたフレームを前記記憶部から取得し、当該第１のノードに再送する再送制御部と、を有する、
ＣＡＮシステム。
【請求項２】
前記複数のノードのそれぞれは、前記エラーカウンタ、前記エラー管理部、前記再送要求部、前記記憶部、前記記録制御部、及び前記再送制御部を有し、前記第１のノード及び前記第２のノードとして機能し、
前記記録制御部は、自ノードが前記ＣＡＮバスに対して送信したフレームを前記記憶部に格納し、
前記再送制御部は、前記再送要求フレームで再送が要求されたフレームが前記記憶部に格納されている場合、当該フレームを前記第１のノードに再送する、
請求項１に記載のＣＡＮシステム。
【請求項３】
前記再送制御部は、前記再送要求フレームで再送が要求されたフレームが前記記憶部に格納されていない場合、所定の送信抑止時間の間、フレームの送信を抑止する、
請求項２に記載のＣＡＮシステム。
【請求項４】
前記再送制御部は、前記再送要求フレームの受信後にフレームを送信可能となったときから所定の遅延時間の経過後に前記再送要求フレームで再送が要求されたフレームを再送する、
請求項２に記載のＣＡＮシステム。
【請求項５】
前記複数のノードは、前記第１のノードを複数含み、
前記記録制御部は、前記第１のノードから前記ＣＡＮバスに対して送信されたフレームを前記記憶部に格納し、
前記再送制御部は、前記再送要求フレームで再送が要求されたフレームを、当該フレームを送信した第１のノードに代わって、当該再送要求フレームを送信した第１のノードに再送する、
請求項１に記載のＣＡＮシステム。
【請求項６】
前記第１のノードは、さらに、前記フレームを送信する送信制御部を有し、
前記送信制御部は、他の第１のノードから前記再送要求フレームが送信された場合、所定の送信抑止時間の間、フレームの送信を抑止する、
請求項５に記載のＣＡＮシステム。
【請求項７】
前記再送制御部は、前記再送要求フレームの受信後にフレームを送信可能となったときから所定の遅延時間の経過後に前記再送要求フレームで再送が要求されたフレームを再送する、
請求項５に記載のＣＡＮシステム。
【請求項８】
前記第１のノード及び前記第２のノードのそれぞれは、さらに、自ノードが送信又は受信したフレーム数をカウントするフレームカウンタを有し、
前記記録制御部は、前記ＣＡＮバスに対して送信されたフレームを前記フレームカウンタのカウンタ値と対応付けて前記記憶部に格納し、
前記再送要求部は、前記フレームカウンタのカウンタ値に基づいて、前記再送を要求するフレームを特定する特定情報を生成し、生成した特定情報を前記再送要求フレームに含めて送信し、
前記再送制御部は、前記再送要求フレームに含まれる特定情報に基づいて、前記記憶部に格納されたフレームから、当該再送要求フレームで再送が要求されたフレームを特定する、
請求項１に記載のＣＡＮシステム。
【請求項９】
前記特定情報は、前記再送要求フレームを送信するときにおける前記フレームカウンタのカウンタ値と、前記受信に失敗したフレームが送信されたときにおける前記フレームカウンタのカウンタ値の差分値であり、
前記再送制御部は、前記フレームカウンタのカウンタ値と、前記再送要求フレームに含まれる差分値に基づいて、前記受信に失敗したフレームが送信されたときにおける前記フレームカウンタのカウンタ値を算出し、算出したカウンタ値と対応付けられたフレームを、当該再送要求フレームで再送が要求されたフレームとして特定する、
請求項８に記載のＣＡＮシステム。
【請求項１０】
前記特定情報は、前記再送要求フレームのＩＤとして、前記再送要求フレームに含められる、
請求項８に記載のＣＡＮシステム。
【請求項１１】
複数のノードとの間で、ＣＡＮ（Controller Area Network）バスを介してフレームを相互に送受信するノードであって、
前記フレームが格納される記憶部と、
前記ＣＡＮバスに対して送信されたフレームを前記記憶部に格納する記録制御部と、
他のノードが前記ＣＡＮバスを介したフレームの受信に失敗したときにエラーパッシブ状態である場合に送信する再送要求フレームの受信に応じて、当該再送要求フレームで再送が要求されたフレームを前記記憶部から取得し、当該他のノードに再送する再送制御部と、
を備えたノード。
【請求項１２】
複数のノードとの間で、ＣＡＮ（Controller Area Network）バスを介してフレームを相互に送受信するノードであって、
自ノードの、前記ＣＡＮバスに対するフレーム送受信のエラー回数をカウントするエラーカウンタと、
前記ＣＡＮバスを介したフレームの受信に失敗したときに、前記エラーカウンタのカウント値が所定の閾値を超えて、自ノードがエラーパッシブ状態となっているか否かを判断するエラー管理部と、
前記エラー管理部によって前記フレームの受信に失敗したときに自ノードがエラーパッシブ状態であると判断された場合、前記ＣＡＮバスに対して送信されたフレームを保持する他のノードに対して、当該フレームの再送を要求する再送要求フレームを送信する再送要求部と、
を備えたノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＡＮシステム及びノードに関し、例えば複数のノード間でＣＡＮ（Controller Area Network）バスを介してフレームを相互に送受信する技術に好適に利用できるものである。
【背景技術】
【０００２】
近年、機能安全が注目を浴びており、フォルトトレラントな機能が主に車載用途で要求されている。車載系の主要ネットワークであるＣＡＮでは、エラーによる自動再送送信仕様を有する。しかしながら、ＣＡＮによる通信主体となるノードの状態として、受信エラー通知不可の状態（エラーパッシブ状態）が存在する。そのため、ノードがエラーパッシブ状態のときに、そのノードにおいて通信障害によってメッセージの受信エラーが発生してしまった場合、メッセージを取りこぼしたままとなってしまう。
【０００３】
このような問題に対して、特許文献１には、ＣＡＮシステムにおいて、受信メッセージの取りこぼしを軽減するための技術が開示されている。特許文献１に開示のＣＡＮシステムでは、再送対象に設定されたメッセージが必ず再送されるようにしている。これによって、エラーパッシブ状態のノードに送信したメッセージが正常に受信されていない場合も、取りこぼしを軽減することができるようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１４７５９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示の技術では、メッセージを常に再送するようにしているため、バスの使用効率が低下してしまうという問題が生じる。その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００６】
一実施の形態によれば、ＣＡＮシステムは、第１のノードと第２のノードを備える。第１のノードは、ＣＡＮバスを介したフレームの受信に失敗したときに自ノードがエラーパッシブ状態となっている場合、フレームの再送を要求する再送要求フレームを送信する。第２のノードは、ＣＡＮバスに対して送信されたフレームを記憶部に格納し、第１のノードから送信された再送要求フレームで再送が要求されたフレームを記憶部から取得し、第１のノードに再送する。
【発明の効果】
【０００７】
前記一実施の形態によれば、バスの使用効率の低下を抑制しつつ、耐障害性を向上することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係るＣＡＮシステムの構成図である。
【図２】実施の形態１に係るＣＡＮシステムの動作概要を説明するための構成図である。
【図３】実施の形態１に係るノードの構成図である。
【図４】実施の形態１に係るノードの受信エラー検出時の動作を示すフローチャートである。
【図５】実施の形態１に係るノードの再送要求フレーム受信時の動作を示すフローチャートである。
【図６】実施の形態１に係るＣＡＮシステムの再送要求フレーム競合時の動作を示す概念図である。
【図７】実施の形態１に係るＣＡＮシステムの再送要求フレーム競合時の動作を示すタイムチャートである。
【図８】実施の形態１に係るＣＡＮシステムの再送フレームと他の送信フレームの同時送信時の動作を示すタイムチャートである。
【図９】実施の形態１に係るＣＡＮシステムの再送要求発生時のフレーム処理動作を示すタイムチャートである。
【図１０】実施の形態２に係るＣＡＮシステムの構成図である。
【図１１】実施の形態２に係るＣＡＮシステムの動作概要を説明するための構成図である。
【図１２】実施の形態２に係る一般ノードの構成図である。
【図１３】実施の形態２に係る過去フレームサーバノードの構成図である。
【図１４】実施の形態３に係るＣＡＮシステムの再送フレームと他の送信フレームの同時送信時の動作を示すタイムチャートである。
【図１５】実施の形態３に係るＣＡＮシステムの再送要求発生時のフレーム処理動作を示すタイムチャートである。
【図１６】実施の形態の概要構成となるＣＡＮシステムの構成図である。
【発明を実施するための形態】
【０００９】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１０】
＜実施の形態１＞
実施の形態１について説明する。まず、図１を参照して、実施の形態１に係るＣＡＮシステム１０００の構成について説明する。図１は、実施の形態１に係るＣＡＮシステム１０００の構成図である。
【００１１】
ＣＡＮシステム１０００は、例えば、ボディ系ノード１０１、安全系ノード１０２、情報系ノード１０３、エンジン系ノード１０４、及びシャーシ系ノード１０５等を有する。ノード１０１〜１０５のそれぞれは、ＣＡＮバス９０によって相互に接続されており、ＣＡＮバス９０によって任意のフレームを相互に送受信することができる。ＣＡＮシステム１０００は、自動車内に構築される。
【００１２】
ボディ系ノード１０１は、他のノードから受信したフレームに基づいて、ヘッドランプ、ミラー、エアコン、及びドア等のボディ系の装置の制御を行う。安全系ノード１０２は、他のノードから受信したフレームに基づいて、センサ及びエアバック等の安全系の装置の制御を行う。情報系ノード１０３は、他のノードから受信したフレームに基づいて、カーオーディオ、カーラジオ及びカーテレビ等の情報系の装置の制御を行う。エンジン系ノード１０４は、他のノードから受信したフレームに基づいて、エンジン及びＡＴ（Automatic Transmission）等のエンジン系の装置の制御を行う。シャーシ系ノード１０５は、他のノードから受信したフレームに基づいて、ステアリング及びブレーキ等のシャーシ系の装置の制御を行う。また、ノード１０１〜１０５のそれぞれは、必要に応じて、任意のフレームを他のノードに送信する。以下、ノード１０１〜１０５のそれぞれを、総じて「ノード１００」とも呼ぶ。また、ＣＡＮシステム１０００におけるノードの種類は、上述したボディ系、安全系、情報系、エンジン系、及びシャーシ系に限られず、異なる種類のノードを有していてもよい。
【００１３】
また、ノード１０１〜１０５のうち、少なくともいずれか１つのノードは、複数の同一種類のノードと、ＣＡＮバス９０とを接続するゲートウェイ（バスブリッジ）ノードであってもよい。例えば、ボディ系のゲートウェイノードは、それぞれがボディ系の装置の制御を行う複数のボディ系ノードとＬＩＮ（Local Interconnect Network）バスによって接続される。すなわち、ゲートウェイノードは、同一種類のノードと、ＣＡＮバス９０上の他のノードとの間で、フレームを送受信する。
【００１４】
続いて、図２を参照して、実施の形態１に係るＣＡＮシステム１０００の動作概要について説明する。図２は、実施の形態１に係るＣＡＮシステム１０００の動作概要を説明するための構成図である。
【００１５】
ノード１００のそれぞれは、フレームカウンタ１１０及び送信記録ＦＩＦＯ１２０を有している。フレームカウンタ１１０は、ＣＡＮバス９０上に現れたフレームを数えるフリーランニングカウンタである。送信記録ＦＩＦＯ１２０は、自ノードの送信済みフレームを保管するためのストレージである。
【００１６】
ノード１００のそれぞれは、自ノード／他ノードのどちらが送信したかに関わらず、ＣＡＮバス９０上に現れたフレームの送信又は受信が完了したときに、フレームカウンタ１１０をカウントアップする。ノード１００のそれぞれは、自ノードがフレームを送信し終わり、それによるフレームカウンタ１１０のカウントアップを終えたタイミングで、フレームカウンタ１１０のフレームカウンタ値とともに、送信したフレームを送信記録ＦＩＦＯ１２０に格納する。
【００１７】
ノード１００のそれぞれは、自ノードがエラーパッシブ状態のときにフレームの受信エラーが発生した場合、そのフレームの再送を要求する再送要求フレームを送信する。この再送要求フレームは、その時点のフレームカウンタ１１０のフレームカウンタ値に基づいて、再送を要求するフレームの送信時のフレームカウンタ１１０のフレームカウンタ値を特定可能とする情報が含められる。
【００１８】
ノード１００のそれぞれは、再送要求フレームを受信した場合、その再送要求フレームの情報によって特定されるフレームカウンタ値に基づいて、送信記録ＦＩＦＯ１２０に格納されるフレームの中から、再送が要求されたフレームを特定する。ノード１００のそれぞれは、再送要求フレームで再送が要求されたフレームが送信記録ＦＩＦＯ１２０に存在する場合、そのフレーム（再送フレーム）を再送する。また、ノード１００のそれぞれは、再送要求フレームで再送が要求されたフレームが送信記録ＦＩＦＯ１２０に存在しない場合には、所定の時間の間、自フレームからのフレームの送信を抑止して、再送フレームを再送するノードにバス使用権を譲る。
【００１９】
続いて、図３を参照して、実施の形態１に係るノード１００の構成について説明する。図３は、実施の形態１に係るノード１００の構成図である。
【００２０】
ノード１００は、ＣＡＮコントローラＬＳＩ（Large Scale Integration）１０及びバストランシーバ２０を有する。ＣＡＮコントローラＬＳＩ１０は、ＣＡＮコントローラモジュール１、ＣＰＵ（Central Processing Unit）２１、及び他周辺モジュール２２、及びを有する。ＣＡＮコントローラモジュール１、ＣＰＵ２１、及び他周辺モジュール２２のそれぞれは、ローカルバス２３を介して相互に接続されている。
【００２１】
ＣＡＮコントローラモジュール１は、ビットストリーム制御部２、メッセージハンドラ３、メッセージバッファメモリ４、フレームカウンタ５、送信記録制御部６、及び送信記録ＦＩＦＯ（First In First Out）７、エラー管理部８、及び再送要求送信制御部９を有する。
【００２２】
ＣＡＮコントローラモジュール１は、ローカルバス２３を介して、ＣＰＵ２１からアクセスされる。ＣＡＮコントローラモジュール１は、バストランシーバ２０を介して、ＣＡＮバス９０に接続されている。ＣＡＮコントローラモジュール１は、他のノード１００との間でフレームを送受信する。
【００２３】
ビットストリーム制御部２は、メッセージハンドラ３から出力された送信フレーム４０を受け取る。ビットストリーム制御部２は、受け取った送信フレーム４０に基づいて、ＣＲＣ（Cyclic Redundancy Check）を算出する。ビットストリーム制御部２は、ＣＡＮプロトコルのフレームフォーマットに従って、算出したＣＲＣを送信フレーム４０に付加する。ビットストリーム制御部２は、ＣＲＣが付加された送信フレームに、ＣＡＮプロトコルで定められたビットスタッフィングに基づいてスタッフビットを挿入する。つまり、同一論理値が連続した５ビットの次に、その論理値とは反転した論理値をとるスタッフビットが挿入される。ビットストリーム制御部２は、スタッフビットを挿入した送信フレームをビットストリーム形式で、送信信号線（TxD）３０を介してバストランシーバ２０に出力する。
【００２４】
また、ビットストリーム制御部２は、バストランシーバ２０から受信信号線（RxD）３１を介して出力された受信フレームをビットストリーム形式で受け取る。ビットストリーム制御部２は、受け取った受信フレームからＣＡＮプロトコルで定義されたスタッフビットを除去する。ビットストリーム制御部２は、スタッフビットを除去した受信フレームに基づいてＣＲＣチェックを行う。ビットストリーム制御部２は、ＣＲＣチェック後、受信フレームからＣＲＣを除去する。ビットストリーム制御部２は、ＣＲＣを除去した受信フレーム４１をメッセージハンドラ３に出力する。
【００２５】
また、ビットストリーム制御部２は、受信フレームの受信エラー（受信失敗）を検出した場合、エラー発生信号４５をエラー管理部８に出力する。エラー発生信号４５は、受信エラーの発生を通知する信号である。受信エラーは、例えば、前述のＣＲＣチェックにおいて検出されるＣＲＣエラー、スタッフエラー、及びフォームエラー等が該当する。
【００２６】
また、ビットストリーム制御部２は、送信フレームの出力（送信フレームの送信）が完了したとき、又は、受信フレームの受け取り（受信フレームの受信）が完了したときに、エンドオブフレーム信号４２をフレームカウンタ５に出力する。エンドオブフレーム信号４２は、フレームの送信完了又は受信完了を通知する信号となる。具体的には、ビットストリーム制御部２は、受信フレームがデータフレーム又はリモートフレームである場合、受信フレームのＥＯＦ（エンドオブフレーム）を観測し、その最終ビットを観測し終えた際にエンドオブフレーム信号をフレームカウンタ５に出力する。ビットストリーム制御部２は、受信フレームがアクティブエラーフレームである場合、受信フレームのエラーデミリタを観測し、その最終ビットを観測し終えた際にエンドオブフレーム信号４２をフレームカウンタ５に出力する。このように、ビットストリーム制御部２は、自ノードによってＣＡＮバス９０上に送信されたフレームか、他ノードによってＣＡＮバス９０上に送信されたフレームかに関わらず、ＣＡＮバス９０上へのフレームの送信完了に応じて、エンドオブフレーム信号４２をフレームカウンタ５に出力する。
【００２７】
また、ビットストリーム制御部２は、送信フレームの送信を完了した際には、エンドオブフレーム信号４２を出力した直後に、送信フレームの送信完了を通知する送信完了信号４４を送信記録制御部６に出力する。
【００２８】
メッセージハンドラ３は、メッセージバッファメモリ４の送信バッファに格納された送信フレーム４０を取得してビットストリーム制御部２に出力する。この際、メッセージハンドラ３は、その送信フレーム４０を送信記録制御部６にも出力する。また、メッセージハンドラ３は、ビットストリーム制御部２から出力された受信フレーム４１をメッセージバッファメモリ４の受信バッファに格納する。
【００２９】
メッセージバッファメモリ４は、受信バッファ及び送信バッファを有する。送信バッファは、他のノード１００に送信する送信フレームが格納される。受信バッファは、他のノード１００から受信した受信フレームが格納される。メッセージバッファメモリ４は、受信バッファ及び送信バッファを構成するための任意の記憶装置を含む。記憶装置は、例えば、レジスタ及びメモリ等である。送信フレーム及び受信フレームのそれぞれは、ＣＡＮ仕様に基づき、ＩＤが含まれるアービトレーションフィールド、データ長コード（ＤＬＣ）が含まれるコントロールフィールド、任意のデータが含まれるデータフィールド等を有する。
【００３０】
フレームカウンタ５は、ＣＡＮバス９０に対して送信されたフレーム数をカウントする。フレームカウンタ５は、フレームカウンタ１１０に相当する。フレームカウンタ５は、ビットストリーム制御部２からのエンドオブフレーム信号４２の出力に応じて、その内部に保持するフレームカウンタ値４３をインクリメントする。フレームカウンタ５は、フレームカウンタ値４３を保持するための任意の記憶装置を含む。フレームカウンタ５は、フレームカウンタ値４３を送信記録制御部６及び再送要求送信制御部９に出力する。
【００３１】
送信記録制御部６は、ビットストリーム制御部２からの送信完了信号４４の出力に応じて、フレームカウンタ５から出力されたフレームカウンタ値４３と、メッセージハンドラ３から出力された送信フレーム４０と、送信イネーブルビットのそれぞれを関連付けて、送信記録ＦＩＦＯ７に格納する。これによって、ＣＡＮバス９０上に送信された送信フレームは、その送信に応じてインクリメントされた後のフレームカウンタ値４３と一意に紐付けられることになる。また、このように、送信フレーム４０を送信記録ＦＩＦＯ７に保持しておくことで、後述するように、再送が要求された送信フレーム４０を特定して再送することが可能となる。
【００３２】
また、この際には、送信イネーブルビットの値は、「１」が設定される。送信イネーブルビットは、再送の有効／無効を示す情報となる。送信イネーブルビットが「１」である場合、それと関連付けられた送信フレームは再送され、送信イネーブルビットが「０」である場合は、それと関連付けられた送信フレームは再送が抑止される。送信フレームを再送した場合に、それに関連付けられた送信イネーブルビットの値が「０」に更新される。また、送信フレームがアクティブエラーフレームである場合、受け側のノードでフレーム受信に応じた装置制御が不要であるため、必ずしも再送する必要はない。そのため、送信フレームがアクティブエラーフレームである場合、それと関連付けて格納する送信イネーブルビットの値には、最初から「０」が設定される。
【００３３】
送信記録ＦＩＦＯ７は、上述の通り、フレームカウンタ値、送信イネーブルビット、及び送信フレームが送信記録制御部６によって格納される。送信記録ＦＩＦＯ７は、送信記録ＦＩＦＯ１２０に相当する。送信記録ＦＩＦＯ７は、フレームカウンタ値、送信イネーブルビット、及び送信フレームを、それぞれが関連付けられた単位毎にＦＩＦＯ形式で格納する。送信記録ＦＩＦＯ７は、フレームカウンタ値、送信イネーブルビット、及び送信フレームを保持するための任意の記憶装置を含む。
【００３４】
エラー管理部８は、自ノードの、ＣＡＮバス９０に対するフレーム送受信のエラー回数をカウントするエラーカウンタ１１を内蔵しており、自ノード１００の状態を管理する。エラー管理部８は、ＣＡＮ仕様に従って、自ノード１００においてエラーが発生した場合に、エラーカウンタ１１のカウンタ値をカウントアップする。そして、エラーカウンタ１１のカウンタ値が所定の閾値を超えた場合、エラー管理部８は、自ノード１００の状態を「エラーパッシブ状態」に遷移させる。エラーパッシブ状態では、前述の通り、ＣＡＮ仕様上では、他のノード１００からの再送要求に応じたフレームの再送が抑止される。
【００３５】
また、エラー管理部８は、ビットストリーム制御部２からのエラー発生信号４５の出力に応じて、自ノード１００の状態が「エラーパッシブ状態」となっているか否かを判断する。具体的には、エラー管理部８は、エラーカウンタ１１のカウンタ値が所定の閾値を超えている場合、自ノード１００の状態が「エラーパッシブ状態」であると判断する。エラー管理部８は、自ノード１００の状態が「エラーパッシブ状態」であると判断した場合、受信フレームの再送要求を指示する再送要求トリガ信号４６を再送要求送信制御部９に出力する。
【００３６】
具体的には、エラー管理部８は、エラーカウンタ１１として、送信エラーと受信エラーをそれぞれカウントする送信エラーカウンタと受信エラーカウンタを備える。すなわち、図３では、１つのエラーカウンタ１１のみを図示しているが、厳密には、エラー管理部８は、送信エラーカウンタと受信エラーカウンタの２つのエラーカウンタ１１を有する。送信エラーカウンタと受信エラーカウンタのカウントアップおよびカウントダウンのタイミングおよびカウント数は、ＣＡＮプロトコルの規格を参照されたいが、概して、送信エラーカウンタは、送信エラーを検出したときにはカウントアップし、正常送信できたときにはカウントダウンする。同様に、受信エラーカウンタは、受信エラーを検出したときにはカウントアップし、正常受信できたときにはカウントダウンする。
【００３７】
エラー管理部８は、その受信エラーカウンタのカウント値（ＲＥＣ）と、送信エラーカウンタのカウント値（ＴＥＣ）に応じて、自ノード１００の状態を、エラーアクティブ状態、エラーパッシブ状態、バスオフ状態の３つのエラー状態間で遷移する。エラーアクティブ状態は、バス上の通信に正常に参加できる状態であり、エラーパッシブ状態は、エラーアクティブ状態よりエラーを起こしやすい状態である。エラーパッシブ状態にあるノード１００は、エラーアクティブ状態のノード１００と比べ、連続送信時の制限と、エラー通知の制限が設けられている。また、バスオフ状態は、エラーパッシブ状態よりさらにエラーを起こしやすい状態であり、この状態にあるノード１００は、送受信すべての動作が禁止され、ＣＡＮバス９０上の通信に参加できない。
【００３８】
上述した３つのエラー状態の遷移は、送信エラーカウンタと受信エラーカウンタのカウント値に基づいてなされる。送信エラーカウンタのカウント値ＴＥＣと受信エラーカウンタのカウント値ＲＥＣが共に０〜１２７であるときには、該ノード１００はエラーアクティブ状態にあり、ＴＥＣとＲＥＣのいずれか一方が１２８〜２５５であるときには、該ノード１００はエラーパッシブ状態になる。また、ＲＥＣに関わらず、ＴＥＣが２５６以上になったときには、該ノード１００はバスオフ状態になり、ＣＡＮバス９０上の通信から切り離される。
【００３９】
ＣＡＮでは、このようにして、エラーを起しやすい程度に応じたエラー状態を規定し、エラー状態に応じた制限を当該ノード９０の送受信動作に加えることにより、エラーを起こしやすいノード９０による通信の妨害を回避する。
【００４０】
再送要求送信制御部９は、エラー管理部８からの再送要求トリガ信号４６の出力に応じて、再送要求フレームのデータとなる再送要求フレーム送信データ４７をビットストリーム制御部２に送信する。これによって、後述するように、ビットストリーム制御部２によって再送要求フレームが他のノード１００に送信される。
【００４１】
ＣＰＵ２１は、ローカルバス２３を介して、他周辺モジュール２２に対して、ノード１００に含まれる装置の制御を指示する制御指示データを出力することによって、ノード１００に含まれる装置を制御する。具体的には、ＣＰＵ２１は、ローカルバス２３を介して、他のノード１００から受信した受信フレームをメッセージバッファメモリ４の受信バッファから取得する。ＣＰＵ２１は、他のノード１００から受信した受信フレームの内容に基づいて、ノード１００に含まれる装置を制御する。また、ＣＰＵ２１は、他のノード１００に送信する送信フレームを生成し、ローカルバス２３を介してメッセージバッファメモリ４の送信バッファに格納する。
【００４２】
他周辺モジュール２２は、ＣＰＵ１１から出力された制御指示データに基づいて、ノード１００に含まれる装置を制御する。例えば、ノード１００が装置としてミラーを制御するボディ系ノード１０１である場合、他周辺モジュール２２は、ミラーを駆動するアクチュエータ等が該当する。
【００４３】
バストランシーバ２０は、ビットストリーム制御部２から送信信号線３０を介して出力された送信フレームを、ＣＡＮバス９０を介して他のノード１００に送信する。バストランシーバ２０は、ＣＡＮバス９０を介して他のノード１００から受信した受信フレームを、受信信号線３１を介してビットストリーム制御部２に出力する。
【００４４】
続いて、図４を参照して、実施の形態１に係るノード１００の受信エラー検出時の動作について説明する。図４は、実施の形態１に係るノード１００の受信エラー検出時の動作を示すフローチャートである。
【００４５】
ビットストリーム制御部２は、バストランシーバ２０を介して受信フレームを受信したときに（Ｓ１）、その受信フレームの受信に失敗したか否かを判断する（Ｓ２）。すなわち、ビットストリーム制御部２は、前述の通り、受信フレームに基づいて、ＣＲＣエラー、スタッフエラー、及びフォームエラー等の受信エラーが発生しているか否かを判断する。
【００４６】
受信フレームの受信に失敗したと判断した場合（Ｓ２：Ｙｅｓ）、ビットストリーム制御部２は、エラー発生信号４５をエラー管理部８に出力する。エラー管理部８は、ビットストリーム制御部２からのエラー発生信号４５の出力に応じて、自ノード１００の状態が「エラーパッシブ状態」であるか否かを判断する（Ｓ３）。自ノード１００の状態が「エラーパッシブ状態」であると判断した場合（Ｓ３：Ｙｅｓ）、エラー管理部８は、再送要求トリガ信号４６を再送要求送信制御部９に出力する。
【００４７】
再送要求送信制御部９は、エラー管理部８からの再送要求トリガ信号４６の出力に応じて、フレームカウンタ５から出力されたフレームカウンタ値４３をキャプチャし（Ｓ４）、再送要求フレーム送信データ４７をビットストリーム制御部２に送信する。この再送要求フレーム送信データ４７は、再送要求フレームのＩＤが含まれている。なお、フレームカウンタ値４３をキャプチャは、受信に失敗した受信フレームの受信によるフレームカウンタ１１０のカウントアップを終えたタイミングで行う。例えば、ビットストリーム制御部２が、エンドオブフレーム信号４２を出力した後に、エラー発生信号４５を出力するようにすればよい。
【００４８】
ビットストリーム制御部２は、再送要求送信制御部９からの再送要求フレーム送信データ４７の出力に応じて、再送要求フレームを生成する。この再送要求フレームのＩＤには、再送要求フレーム送信データ４７に含まれる再送要求のＩＤが設定される。ビットストリーム制御部２は、生成した再送要求フレームを送信フレームとして、バストランシーバ２０を介して送信開始する（Ｓ５）。
【００４９】
再送要求フレームが競合負けせずに、そのＩＤ部分を送出できた場合（Ｓ６：Ｙｅｓ）、ビットストリーム制御部２は、再送要求フレーム送信開始信号４８を再送要求送信制御部９に出力する。この場合、いわゆるＣＡＮプロトコルにおける「アービトレーション負け」が発生せずに、再送要求フレームのＩＤが設定されたアービトレーションフィールドの送信が完了し、再送要求フレームの送信が継続されていることになる。なお、再送要求フレーム送信開始信号４８は、競合負けせずに再送要求フレームの送信が開始されていることを通知する信号となる。
【００５０】
なお、再送要求フレームが競合負けして、そのＩＤ部分を送出でなかった場合（Ｓ６：Ｎｏ）には、その競合で勝った他のノード１００からの受信フレームの受信完了後に、再度、再送要求フレームの送信を開始することになる（Ｓ５）。
【００５１】
再送要求送信制御部９は、ビットストリーム制御部２からの再送要求フレーム送信開始信号４８の出力に応じて、現在のフレームカウンタ値１８と、ステップＳ４でキャップチャしたフレームカウンタ値１８との差分値を算出する。この差分値は、現在のフレームカウンタ値１８から、キャプチャしたフレームカウンタ値１８を減算した値となる。再送要求送信制御部９は、算出した差分値を、追加的に、再送要求フレーム送信データ４７としてビットストリーム制御部２に出力する。ビットストリーム制御部２は、再送要求送信制御部９から出力された再送要求フレーム送信データ４７の差分値を、再送要求フレームのデータとして、バストランシーバ２０を介して送信する（Ｓ７）。すなわち、差分値は、例えば、再送要求フレームのデータフィールドに設定される。このように、ビットストリーム制御部２は、再送要求送信制御部９から順次送信されるＩＤと差分値から再送要求フレームのビットストリームを生成しつつ送信する。
【００５２】
続いて、図５を参照して、実施の形態１に係るノード１００の再送要求フレーム受信時の動作について説明する。図５は、実施の形態１に係るノード１００の再送要求フレーム受信時の動作を示すフローチャートである。
【００５３】
ビットストリーム制御部２は、バストランシーバ２０を介して受信フレームを受信した場合（Ｓ１１）、その受信フレーム４１をメッセージハンドラ３に出力する。メッセージハンドラ３は、ビットストリーム制御部２から出力された受信フレーム４１が再送要求フレームであるか否かを判定する（Ｓ１２）。具体的には、メッセージハンドラ３は、受信フレーム４１のＩＤが再送要求フレームのＩＤである場合に、受信フレーム４１が再送要求フレームであると判断する。
【００５４】
受信フレーム４１が再送要求フレームである場合（Ｓ１２：Ｙｅｓ）、再送要求受信信号４９及び再送要求フレーム差分値５０を送信記録制御部６に出力する。再送要求受信信号４９は、再送要求フレームを受信したことを通知する信号である。再送要求フレーム差分値５０は、その再送要求フレームに含まれている差分値である。
【００５５】
送信記録制御部６は、メッセージハンドラ３からの再送要求受信信号４９の出力に応じて、再送要求フレームの受信によるカウントアップ前のフレームカウンタ値４３から、メッセージハンドラ３から出力された再送要求フレーム差分値５０を減算した値を算出する（Ｓ１３）。送信記録制御部６は、フレームカウンタ値４３から再送要求フレーム差分値５０を減算した値を、送信記録ＦＩＦＯ７に格納されているフレームカウンタ値から検索する（Ｓ１４）。
【００５６】
検索した値が送信記録ＦＩＦＯ７にフレームカウンタ値として格納されている場合（Ｓ１４：Ｙｅｓ）、送信記録制御部６は、そのフレームカウンタ値と関連付けられた送信イネーブルビットが「１」であるか否かを判断する（Ｓ１５）。送信イネーブルビットが「１」である場合（Ｓ１５：Ｙｅｓ）、送信記録制御部６は、それらのフレームカウンタ値及び送信イネーブルビットと関連付けられた送信フレームを送信記録ＦＩＦＯ７から読み出す（Ｓ１６）。送信記録制御部６は、読み出した送信フレームを再送フレーム５１としてメッセージハンドラ３に出力する。それと共に、送信記録制御部６は、再送フレーム検索結果信号５２として、「再送フレーム送信」を意味するコマンドをメッセージハンドラ３に出力する。
【００５７】
メッセージハンドラ３は、送信記録制御部６からのそれらのデータの出力に応じて、送信記録制御部６から出力された再送フレーム５１を、送信フレーム４０としてビットストリーム制御部２に出力する。この場合、メッセージハンドラ３は、メッセージバッファメモリ４の送信バッファに格納される送信データの送信は後回しにする。そして、ビットストリーム制御部２は、メッセージハンドラ３から送信フレーム４０として出力された再送フレームを、バストランシーバ２０を介して送信する（Ｓ１７）。
【００５８】
一方、ステップＳ１４において検索した値が送信記録ＦＩＦＯ７にフレームカウンタ値として格納されていない場合（Ｓ１４：Ｎｏ）、又は、送信イネーブルビットが「０」である場合（Ｓ１５：Ｎｏ）、送信記録制御部６は、再送フレーム検索結果信号５２として、「再送フレーム送信不要」を意味するコマンドをメッセージハンドラ３に出力する。
【００５９】
メッセージハンドラ３は、送信記録制御部６からの「再送フレーム送信不要」の再送フレーム検索結果信号５２の出力に応じて、所定の一定期間（一定時間）の間、アイドル状態を保ち、送信フレームの送信を抑止する（Ｓ１８）。これによって、他のノード１００が再送フレームを送信できるようにする。また、メッセージハンドラ３は、この一定期間の間に受信フレームを受信した場合には、その受信フレームは、自ノード１００には不要な再送フレームであるため、メッセージバッファメモリ４への格納対象から除外し、重複受信を回避する。すなわち、この一定時間として、例えば、再送フレームの送信が完了するまでの時間を定めるようにすればよい。
【００６０】
なお、再送要求フレームが再送を要求するフレームが、アクティブエラーフレームである場合、及び、他のノード１００のアクティブエラーフラグ等をトリガとして既に再送されたフレームである場合には、送信記録ＦＩＦＯ７に格納された該当フレームの送信イネーブルビットは「０」とされているため、再送は行われない。
【００６１】
続いて、図６〜図８を参照して、実施の形態１に係るＣＡＮシステム１０００の再送要求フレーム競合時の動作について説明する。図６は、実施の形態１に係るＣＡＮシステム１０００の再送要求フレーム競合時の動作を示す概念図である。図７は、実施の形態１に係るＣＡＮシステム１０００の再送要求フレーム競合時の動作を示すタイムチャートである。図８は、実施の形態１に係るＣＡＮシステム１０００の再送フレームと他の送信フレームの同時送信時の動作を示すタイムチャートである。
【００６２】
以下、ＣＡＮシステム１０００において、前述のノード１００として動作するノードＡ、Ｂ、Ｚが存在する場合について説明する。また、ノードＡが送信フレームを送信したが、エラーパッシブ状態のノードＺが、その送信フレームの受信フレームとしての受信に失敗した場合について説明する。
【００６３】
この場合、ノードＺは、その送信フレームの再送を要求する再送要求フレームの送信を開始する。ここで、他のノードＢから、再送要求フレームと同じタイミングで、その再送要求フレームよりも重要度の高い送信フレームの送信が開始されたものとする（図７のＴ０）。ここで、重要度の高い送信フレームとは、例えば、シャーシ系ノード１０５に対してブレーキの制御を指示するフレームや、安全系ノード１０２に対してエアバックの作動を指示するフレームのように即時性が要求されるフレームが該当する。重要度の高いフレームには、他の重要度の低いフレームのＩＤ（低優先ＩＤ）よりも、優先度が高いＩＤ（高優先ＩＤ）が割り当てられる。例えば、重要度の高いフレームには、再送要求フレームのＩＤよりも、優先度が高いＩＤが割り当てられる。
【００６４】
これによれば、図６及び図７に示すように、再送要求フレームと、それよりも優先度の高い送信フレームが競合した場合には、ＣＡＮ仕様に基づいて再送要求フレームがアービトレーションロスト（アービトレーション負け）となり、ノードＺによる再送要求フレームの送信は中断され、ノードＢによる高優先ＩＤの送信フレームの送信が行われる。このように、再送要求フレームに低優先ＩＤを割り当てておけば、高優先ＩＤを割り当てた重要度の高い送信フレームの送信が阻害されることはない。なお、ノードＺによる再送要求フレームの送信開始タイミングよりも、ノードＢによる送信フレームの送信開始タイミングの方が早い場合には、当然に、ＣＡＮ仕様に基づいて、ノードＢによる送信フレームの送信が行われる。
【００６５】
そして、ノードＢによる送信フレームの送信終了後、他に優先度の高い送信フレームとの競合が無ければ、ノードＺによる再送要求フレームの送信が行われる（図７のＴ１）。このとき、２つ前のフレームの再送を要求することになるため、再送要求フレームに設定される差分値には、「１」が設定される（前述の通り、送信記録ＦＩＦＯに記録されるフレームは、そのフレームの送信によるカウントアップ後のフレームカウンタ値と関連付けられることになるため、Ｎ個前に送信されたフレームの再送を要求する場合、差分値は、（Ｎ−１）となる）。ノードＡは、この再送要求フレームの受信に応じて、ノードＺが受信に失敗した送信フレームを再送する（図７のＴ２）。
【００６６】
ここで、ノードＺによる再送要求フレームの送信中に、ノードＢにおいて、さらに高優先ＩＤの送信フレームがキューイングされたものとする（図８のＴ１'）。ここで、図７の「Ｔ１」は、図８の「Ｔ１」と同一の時間を示しており、図７の「Ｔ２」は、図８の「Ｔ２」と同一の時間を示している。しかしながら、この場合、ノードＢも、再送要求フレームを受信しており、ノードＢの送信記録ＦＩＦＯに再送要求フレームで要求されるフレームは無いため、ノードＢは自ノードがその再送要求フレームに応じた再送フレームの送信主体ではないと判断している。この場合には、前述の通り、ノードＢは、一定期間の間、送信フレームの送信を抑制する。これにより、ノードＺによる再送要求フレームの送信が終了したときに、ノードＢにおいて優先度の高い送信フレームが保持されていても、ノードＢとノードＡのうち、ノードＡのみから再送フレームの送信が開始されるため、ノードＡによる再送フレームの送信が行われる（図８のＴ２）。そして、ノードＡによる再送フレームの送信終了後、ノードＢによる送信フレームの送信が行われる（図８のＴ３）。
【００６７】
このように、本実施の形態１によれば、どのような競合状態であるかに関わらず、再送要求フレームの次に必ず再送フレームが送信される。すなわち、これによれば、ノードＺは、受信に失敗してしまい、再送を要求したフレームが、いつ送信されるのかを把握することができる。そのため、ノードＺは、フレームの受信エラーが発生した場合であっても、フレームの本来の送信順序に通りに、フレームの内容に従った装置の制御を行うことが可能である。
【００６８】
次に、図９を参照して、その動作について説明する。図９は、実施の形態１に係るＣＡＮシステム１０００の再送要求発生時のフレーム処理動作を示すタイムチャートである。ここで、図９において、ノードＺは、ボディ系ノード１０１であり、ノードＡ、Ｂは、ボディ系ノード１０１であるノードＺに、ボディ系の制御を指示する送信フレームを送信するノードであるものとして説明する。
【００６９】
ノードＡが、ボディ系の装置の制御を指示する送信フレームＡを送信したが（Ｔ１０）、エラーパッシブ状態のノードＺが、その送信フレームの受信フレームとしての受信に失敗したものとする。この場合、ノードＺは、その送信フレームの再送を要求する再送要求フレームの送信を開始する（Ｔ１１）。ここで、他のノードＢから、再送要求フレームと同じタイミングで、ボディ系の装置の制御を指示する送信フレームＢの送信が開始されたものとする。ここで、このノードＢから送信が開始された送信フレームのＩＤは、ノードＺから送信が開始された再送要求フレームのＩＤよりも優先度が高いものとする。
【００７０】
この場合、再送要求フレームがアービトレーション負けとなるため、ノードＺは、再送要求フレームの送信を中断する。そして、ノードＢによって送信フレームＢが送信される。ノードＺは、ノードＢから送信された送信フレームＢを受信し、受信フレームＢとしてメッセージバッファメモリ４の受信バッファに格納する。このとき、ノードＡからの送信フレームＡを追い越して、ノードＢからの送信フレームＢがノードＺによって受信されたことになる。そのため、ノードＡからの送信フレームＡよりも先にノードＢからの送信フレームＢを処理してしまうと、装置制御に不整合が生じてしまうおそれがある。そのため、ノードＺのＣＰＵ２１は、メッセージバッファメモリ４の受信バッファに格納された受信フレームＢの処理を抑止する。
【００７１】
ノードＺは、ノードＢによる送信フレームＢの送信終了後、再度、再送要求フレームの送信を開始する（Ｔ１２）。他に優先度の高い送信フレームとの競合が無ければ、再送要求フレームが送信される。ノードＡは、この再送要求フレームの受信に応じて、ノードＺが受信に失敗した送信フレームＡを、再送フレームとして再送する（Ｔ１３）。ノードＺは、ノードＡから送信された送信フレームＡを受信し、受信フレームＡとしてメッセージバッファメモリ４の受信バッファに格納する。このとき、ノードＢにおいて、そのノードＡから送信される送信フレームＡよりも優先度の高い送信フレームＣがメッセージバッファメモリ４の送信バッファに格納されていたとしても、その送信フレームＣの送信は抑止される。そのため、ノードＺは、再送要求フレームの送信後にノードＡから受信した再送フレームが、Ｔ１０〜Ｔ１１で受信に失敗した送信フレームＡであると判断することができる。すなわち、ノードＺは、ノードＡから受信した再送フレームが、ノードＢから送信された送信フレームＢの１つ前に送信された送信フレームＡであると判断することができる。
【００７２】
そのため、ノードＺのＣＰＵ２１は、メッセージバッファメモリ４に格納された受信フレームのうち、ノードＡから受信した受信フレームＡを先に処理し（Ｔ１４）、その後、ノードＢから受信した受信フレームＢを処理することで（Ｔ１５）、装置制御の整合性を保つことが可能となる。例えば、ノードＺのＣＰＵ２１は、受信フレームＡに基づいて装置を制御した後に、受信フレームＢに基づいて装置を制御する。また、ノードＺがゲートウェイノードである場合には、ノードＺは、受信フレームＡを対象となるノードに転送した後に、受信フレームＢを対象となるノードに転送する。
【００７３】
以上に説明したように、本実施の形態１では、ノード１００は、フレームの受信に失敗したときに、エラーカウンタ１１が所定の閾値を超えており、自ノード１００がエラーパッシブ状態であると判断した場合には、そのフレームの再送を要求する再送要求フレームを送信するようにしている。また、ノード１００は、ＣＡＮバス９０に対して送信されたフレームを送信記録ＦＩＦＯ７に格納するとともに、再送要求フレームで再送が要求されたフレームを送信記録ＦＩＦＯ７から取得し、再送するようにしている。
【００７４】
これによれば、ノード１００がフレームの受信に失敗した場合のみに、そのフレームの再送が要求されるため、バスの使用効率の低下を抑制することができる。また、ＣＡＮの使用上、受信エラー通知不可となるエラーパッシブ状態となっている場合にも、フレームの受信に失敗した場合にフレームの再送を要求されるようになるため、耐障害性を向上することができる。
【００７５】
また、本実施の形態１では、再送要求フレームを受信に失敗したフレームの直後に送信できない場合を考慮して、再送要求フレーム内には、何フレーム前のフレームの再送を要求しているかを示す情報（差分値）が埋め込まれている。そして、再送要求フレームを受けたノード１００は、この「何フレーム前か」を示す情報に基づいて、受信に失敗したフレームを特定可能としている。これによって、再送要求フレームを受信に失敗したフレームの直後に送信できない場合でも、受信に失敗したフレームを特定して再送することを可能としている。
【００７６】
＜実施の形態２＞
続いて、実施の形態２について説明する。まず、図１０を参照して、実施の形態２に係るＣＡＮシステム１０００の構成について説明する。図１０は、実施の形態２に係るＣＡＮシステム１０００の構成図である。以下、実施の形態１と同様の内容については、適宜、その説明を省略する。
【００７７】
ＣＡＮシステム１０００は、実施の形態１と比較して、さらに、過去フレームサーバノード１０９を有している。過去フレームサーバノード１０９は、ＣＡＮバス９０上に現れたフレームを保管するとともに、ノード１０１〜１０５のそれぞれからの再送要求に応じて保管したフレームのうち、再送要求されたフレームを再送する。また、ノード１０１〜１０５のそれぞれは、実施の形態１とは異なり、エラーパッシブ状態のノードからの再送要求に応じてフレームを再送する機能は有していない。以下、このようなノード１０１〜１０５を、「一般ノード１０８」とも呼ぶ。すなわち、実施の形態２では、エラーパッシブ状態でフレームの受信に失敗したノードからの再送要求に応じたフレームの再送機能が過去フレームサーバノード１０９に集約されている。ただし、一般ノード１０１〜１０５は、ＣＡＮ仕様による通常のフレーム再送機能（エラーパッシブ状態でないノードからの再送要求）は、当然に有するようにしてもよい。
【００７８】
続いて、図１１を参照して、実施の形態２に係るＣＡＮシステム１０００の動作概要について説明する。図１１は、実施の形態２に係るＣＡＮシステム１０００の動作概要を説明するための構成図である。
【００７９】
一般ノード１０８のそれぞれは、フレームカウンタ１１０を有している。それに対して、過去フレームサーバノード１０９は、フレームカウンタ１１０及び過去フレーム記録ＦＩＦＯ１３０を有している。実施の形態２では、過去フレーム記録ＦＩＦＯ１３０は、過去フレームサーバノード１０９において、自ノード１０９／他ノード１０８のどちらが送信したフレームに関わらず、ＣＡＮバス９０上に現れたフレームを保管するためのストレージとして機能する。
【００８０】
一般ノード１０８及び過去フレームサーバノード１０９は、自ノード／他ノードのどちらが送信したかに関わらず、ＣＡＮバス９０上に現れたフレームの送信又は受信が完了したときに、フレームカウンタ１１０をカウントアップする。過去フレームサーバノード１０９は、一般ノード１０８のフレームが送信し終わり、それによるフレームカウンタ１１０のカウントアップを終えたタイミングで、フレームカウンタ１１０のフレームカウンタ値とともに、送信又は受信したフレームを過去フレーム記録ＦＩＦＯ１３０に格納する。
【００８１】
一般ノード１０８のそれぞれは、自ノードがエラーパッシブ状態のときにフレームの受信エラーが発生した場合、そのフレームの再送を要求する再送要求フレームを送信する。この再送要求フレームは、その時点のフレームカウンタ１１０のフレームカウンタ値に基づいて、その再送要求対象のフレームの送信時のフレームカウンタ１１０のフレームカウンタ値を特定可能とする情報が含められる。
【００８２】
過去フレームサーバノード１０９は、再送要求フレームを受信した場合、その再送要求フレームの情報によって特定されるフレームカウンタ値に基づいて、過去フレーム記録ＦＩＦＯ１３０に格納されるフレームの中から、再送が要求されたフレームを特定し、そのフレームを再送する。また、一般ノード１０８のそれぞれは、他のノード１０８から再送要求フレームを受信した場合には、所定の時間の間、自フレームからのフレームの送信を抑止して、フレームを再送する過去フレームサーバノード１０９にバス使用権を譲る。
【００８３】
続いて、図１２を参照して、実施の形態２に係る一般ノード１０８の構成について説明する。図１２は、実施の形態２に係る一般ノード１０８の構成図である。
【００８４】
本実施の形態２に係る一般ノード１０８は、実施の形態１に係るノード１００と比較して、送信記録制御部６及び送信記録ＦＩＦＯ７を有していない。
【００８５】
本実施の形態２では、送信記録制御部６及び送信記録ＦＩＦＯ７を有していないため、実施の形態１において、メッセージハンドラ３が、一定期間の間、送信フレームの送信を抑止するか否かを判断していた再送フレーム検索結果信号５２が存在しない。そのため、本実施の形態２では、メッセージハンドラ３は、再送要求フレームを受信したことによる、ビットストリーム制御部２からの再送要求フレームの出力に応じて、一定期間の間、アイドル状態を保ち、送信フレーム４０の送信を抑止するようにする。
【００８６】
なお、受信エラー検出時の動作については、図４を参照して説明した実施の形態１に係る受信エラー検出時の動作と同様であるため、その説明を省略する。
【００８７】
続いて、図１３を参照して、実施の形態２に係る過去フレームサーバノード１０９の構成について説明する。図１３は、実施の形態２に係る過去フレームサーバノード１０９の構成図である。
【００８８】
過去フレームサーバノード１０９は、実施の形態１に係るノード１００と比較して、送信記録制御部６に代えて過去フレーム記録制御部１２を有し、送信記録ＦＩＦＯ７に代えて過去フレーム記録ＦＩＦＯ１３を有する。また、過去フレームサーバノード１０９は、実施の形態１に係るノード１００と比較して、送信記録制御部６の動作トリガとなっていた送信完了信号４４が廃止され、その代わりにエンドオブフレーム信号４２が過去フレーム記録制御部１２にも動作トリガとして出力されるようになっている。また、ビットストリーム制御部２は、バストランシーバ２０を介して受信した受信フレーム４１を過去フレーム記録制御部１２にも出力する。
【００８９】
そして、過去フレーム記録制御部１２は、送信記録制御部６が送信完了信号４４の出力に応じて実行していた動作を、エンドオブフレーム信号４２の出力に応じて実行する。ただし、過去フレーム記録制御部１２が過去フレーム記録ＦＩＦＯへの格納対象とするフレームは、送信フレーム４０のみならず、受信フレーム４１も対象となる。これによって、自ノード１０９が送信した送信フレーム４０のみならず、他ノード１０８から受信した受信フレーム４１も過去フレーム記録ＦＩＦＯ１３に記録されることになる。
【００９０】
ここで、フレームの送信又は受信に応じてインクリメントされた後のフレームカウンタ値４３と、そのフレームとが関連付けられて過去フレーム記録ＦＩＦＯ１３に格納されるようにするために、過去フレーム記録制御部１２に出力されるエンドオブフレーム信号４２は、フレームカウンタ５に出力されるに出力されるエンドオブフレーム信号４２よりも一次遅れとなるようにする。また、送信フレーム４０及び受信フレーム４１のうち、最後に過去フレーム記録制御部１２に出力されたフレームが過去フレーム記録ＦＩＦＯ１３に格納されるようにすることで、そのときに送信又は受信したフレームが格納されるようにする。
【００９１】
このように、過去フレーム記録ＦＩＦＯ１３は、実施の形態１に係る送信記録ＦＩＦＯ７と比較して、自ノード１０９が送信した送信フレーム４０のみならず、他ノード１０８が送信した受信フレーム４１も格納される。過去フレーム記録ＦＩＦＯ１３は、過去フレーム記録ＦＩＦＯ１３０に相当する。
【００９２】
なお、実施の形態２に係る過去フレームサーバノード１０９の再送要求フレーム受信時の動作については、原則、図５を参照して説明した実施の形態１に係るノード１００の再送要求フレーム受信時の動作と同様であるため、その説明を省略する。ただし、本実施の形態２では、再送要求フレームに応じて、再送フレームを再送するノードは、過去フレームサーバノード１０９のみである。そのため、実施の形態１において再送フレーム送信時の競合を防止するために、ステップＳ１８で行っていた一定時間の送信フレームの抑止は、過去フレームサーバノード１０９において実行する必要はない。
【００９３】
以上に説明したように、本実施の形態２では、一般ノード１０８は、フレームの受信に失敗したときに、エラーカウンタ１１が所定の閾値を超えており、自ノード１０８がエラーパッシブ状態であると判断した場合には、そのフレームの再送を要求する再送要求フレームを送信するようにしている。また、過去フレームサーバノード１０９は、ＣＡＮバス９０に対して送信されたフレームを過去フレーム記録ＦＩＦＯ１３に格納するとともに、再送要求フレームで再送が要求されたフレームを過去フレーム記録ＦＩＦＯ１３から取得し、再送するようにしている。
【００９４】
これによれば、一般ノード１０８がフレームの受信に失敗した場合のみに、そのフレームの再送が要求されるため、バスの使用効率の低下を抑制することができる。また、ＣＡＮの使用上、受信エラー通知不可となるエラーパッシブ状態となっている場合にも、フレームの受信に失敗した場合にフレームの再送を要求されるようになるため、耐障害性を向上することができる。
【００９５】
また、本実施の形態２では、一般ノード１０８が送信記録ＦＩＦＯ７を備える必要がないため、その分のコストを削減することができる。
【００９６】
＜実施の形態３＞
続いて、実施の形態３について説明する。まず、図８を参照して、実施の形態３で解決しようとする内容について説明する。
【００９７】
上述した実施の形態１では、図８で説明したように、ノード１００のそれぞれは、再送要求フレームを受信したときに、自ノード１００が再送フレームの送信主体でない場合は、一定時間の間、送信フレームの送信を抑制している。また、これによって、再送要求フレームを送信したノード１００は、再送要求フレームの次に送信されるフレームを、再送フレームとして特定することができ、送信順序に従ったフレームの処理が可能となる。
【００９８】
しかしながら、このようにした場合には、図８に示すように、再送フレームと他の送信フレームが同時に送信開始されたときには、他の送信フレームのＩＤが高優先ＩＤであっても、その送信が抑止されることになる。そのため、即時性が要求される送信フレームの処理が遅延してしまうという問題がある。
【００９９】
以下、実施の形態３では、このような問題を解決するために、高優先度のフレームの処理の即時性を保証しつつ、再送フレームの特定も可能とする技術について説明する。
【０１００】
実施の形態３に係るＣＡＮシステム１０００の構成については、図１を参照して説明した実施の形態１に係るＣＡＮシステム１０００の構成と同様であるため、その説明を省略する。また、実施の形態３に係るＣＡＮシステム１０００の動作概要についても、図１１を参照して説明した実施の形態１に係るＣＡＮシステム１０００の動作概要と同様であるため、その説明を省略する。
【０１０１】
ここで、実施の形態３に係るノード１００の構成は、図３を参照して説明した、実施の形態１に係るノード１００の構成と同様であるが、以下の点で、その動作が異なる。その他、実施の形態１と同様の内容については、適宜、その説明を省略する。
【０１０２】
本実施の形態３では、メッセージハンドラ３は、自ノードが再送フレームの再送するノードでない場合であっても、一定時間の間の送信フレームの送信抑制を行わないようにする。すなわち、メッセージハンドラ３は、送信記録制御部６から「再送フレーム送信不要」の再送フレーム検索結果信号５２が出力された場合、再送フレームの送信は行わないが、一定期間の送信抑止も実施しない。
【０１０３】
また、本実施の形態３では、ビットストリーム制御部２は、送信フレーム４０が再送フレームである場合、１ビット分の時間を遅らせて、送信フレーム（再送フレーム）の送信を開始する。これによれば、再送フレームと他の送信フレームの送信が開始される場合、再送フレームよりも、他の送信フレームが常に先に送信開始されることになる。そのため、再送フレームよりも、他の送信フレームが優先的にＣＡＮバス９０上に送信されることになるため、再送フレームが送信されるときに、高優先ＩＤの送信フレームの送信が抑止されることがなくなる。また、再送要求フレームを送信したノードは、１ビット分、時間が遅れて送信された送信フレームを、再送フレームとして特定することができるため、送信順序に従ったフレームの処理も可能となる。
【０１０４】
続いて、図１４を参照して、実施の形態３に係るＣＡＮシステム１０００の再送フレームと他の送信フレームの同時送信時の動作を示すタイムチャートである。図１４は、実施の形態３に係るＣＡＮシステム１０００の再送フレームと他の送信フレームの同時送信時の動作を示すタイムチャートである。
【０１０５】
以下、図８と同様に、ＣＡＮシステム１０００において、前述のノード１００として動作するノードＡ、Ｂ、Ｚが存在する場合について説明する。また、ノードＡが送信フレームを送信したが、エラーパッシブ状態のノードＺが、その送信フレームの受信フレームとしての受信に失敗した場合について説明する。
【０１０６】
そして、図８と同様に、ノードＺによる再送要求フレームの送信中に、ノードＢにおいて、さらに高優先ＩＤの送信フレームがキューイングされたものとする（図１４のＴ１'）。この場合、ノードＢも、再送要求フレームを受信しているが、本実施の形態３では、ノードＢによる送信フレームの送信の抑制は行われない。また、ノードＡは、ノードＺからの再送要求フレームに応じた再送フレームの送信を、次に送信フレームが送信可能となったタイミング（Ｔ２）から、１ビット分の時間遅延したタイミングから開始する（Ｔ２'）。
【０１０７】
そのため、先に送信が開始されたノードＢからの送信フレームが送信され、ノードＡからの再送フレームの送信は行われない。そして、ノードＢからの送信フレームの送信終了後、次に送信フレームが送信可能となったタイミング（Ｔ３）において他のノードからの送信フレームの送信が無ければ、そのタイミングから１ビット分の時間遅延したタイミングで、ノードＡによる再送フレームの送信が行われる（Ｔ３'）。
【０１０８】
このように、本実施の形態３で、ノード１００が再送フレームの送信主体でない場合であっても、送信フレームの送信を抑制しないようにしている。また、再送要求を受けたノード１００は、再送フレームを１ビット分の時間遅延したタイミングから送信開始するようにしている。そのため、再送フレームの送信主体でないノードにおいて、再送フレームの送信までに送信フレームがキューイングされた場合、その送信フレームを優先的に送信することができる。
【０１０９】
したがって、高優先ＩＤが割り当てられたフレームのように、即時性が要求される送信フレームの処理を遅延させることがない。また、再送フレームは、送信フレームを送信可能となったタイミングから１ビット遅延したタイミングで送信されるようになっている。これによれば、ノードＺは、受信に失敗してしまい、再送を要求したフレームが、いつ送信されるのかを把握することができる。すなわち、送信フレームを送信可能となったタイミングから１ビット遅延したタイミングで送信が開始された送信フレームを、再送フレームとして特定することが可能となる。そのため、ノードＺは、フレームの受信エラーが発生した場合であっても、フレームの本来の送信順序に通りに、フレームの内容に従った装置の制御を行うことが可能である。
【０１１０】
次に、図１５を参照して、その動作について説明する。図１５は、実施の形態３に係るＣＡＮシステム１０００の再送要求発生時のフレーム処理動作を示すタイムチャートである。ここで、図１５において、ノードＺは、ボディ系ノード１０１であり、ノードＡ、Ｂは、ボディ系ノード１０１であるノードＺに、ボディ系の制御を指示する送信フレームを送信するノードであるものとして説明する。また、ノードＢは、ボディ系ノード１０１（ノードＺ）以外のノードに対する送信フレームも送信するものとする。
【０１１１】
ノードＡが、ボディ系の装置の制御を指示する送信フレームＡを送信したが、エラーパッシブ状態のノードＺが、その送信フレームＡの受信に失敗した時点から説明を開始する。この場合、ノードＺは、その送信フレームＡの再送を要求する再送要求フレームの送信を開始する（Ｔ２０）。ここで、他のノードＢから、再送要求フレームと同じタイミングで、ボディ系の装置の制御を指示する送信フレームＢの送信が開始されたものとする。ここで、このノードＢから送信された送信フレームのＩＤは、ノードＺから送信された再送要求フレームのＩＤよりも優先度が高いものとする。
【０１１２】
この場合、再送要求フレームは、アービトレーション負けとなるため、ノードＺは、再送要求フレームの送信を中断する。そして、ノードＢによって送信フレームが送信される。ノードＺは、ノードＢから送信された送信フレームＢを受信し、受信フレームＢとしてメッセージバッファメモリ４の受信バッファに格納する。このとき、ノードＡからの送信フレームＡを追い越して、ノードＢからの送信フレームＢがノードＺによって受信されたことになる。そのため、ノードＡからの送信フレームＡよりも先にノードＢからの送信フレームＢを処理してしまうと、装置制御に不整合が生じてしまうおそれがある。そのため、ノードＺのＣＰＵ２１は、メッセージバッファメモリ４の受信バッファに格納された受信フレームＢの処理を抑止する。
【０１１３】
ここで、再送要求フレームの送信中に、ノードＢにおいて、ボディ系以外のノードを送信対象とした高優先度の送信フレームＣがメッセージバッファメモリ４の送信バッファに格納されたものとする。この場合、ノードＢは、再送要求フレームの送信終了後に、送信フレームＣを送信する（Ｔ２２）。また、ノードＡは、再送要求フレームの受信に応じて、そのタイミング（Ｔ２２）から１ビット分の時間遅延したタイミングで、再送フレームの送信を開始しようとする。しかし、先にノードＢからの送信フレームＣの送信が開始されているため、再送フレームの送信は行われない（Ｔ２２'）。ノードＺは、ノードＢから送信された送信フレームＣを受信し、受信フレームＣとしてメッセージバッファメモリ４の受信バッファに格納する。しかし、ノードＺのＣＰＵ２１は、受信フレームＣのＩＤがボディ系の送信フレームでないと判断し、その受信フレームＣは破棄して処理を実行しない。
【０１１４】
そして、ノードＡは、送信フレームＣの送信終了後のタイミング（Ｔ２３）で、他のフレームからの送信が無ければ、再送フレームを送信する（Ｔ２３'）。ノードＺは、ノードＡから送信された再送フレームである送信フレームＡを受信し、受信フレームＡとしてメッセージバッファメモリ４の受信バッファに格納する。このとき、ノードＺは、送信フレームの送信が可能となったタイミング（Ｔ２３）から１ビット分の時間遅延したタイミング（Ｔ２３'）で送信された再送フレームが、Ｔ２０の前に受信に失敗した送信フレームＡであると判断することができる。すなわち、ノードＺは、１ビット遅れのＴ２３'から受信した送信フレームＡが、Ｔ２０の前に受信に失敗した送信フレームＡであると判断することができる。
【０１１５】
そのため、ノードＺのＣＰＵ２１は、メッセージバッファメモリ４に格納された送信フレームのうち、ノードＡから受信した受信フレームＡを先に処理し（Ｔ２４）、その後、ノードＢから受信した受信フレームＢを処理することで（Ｔ２５）、装置制御の整合性を保つことが可能となる。
【０１１６】
なお、本実施の形態３では、その技術を実施の形態１に係るノード１００に適用する場合について説明したが、実施の形態２に係る過去フレームサーバノード１０９に適用するようにしてもよい。すなわち、本実施の形態３として、実施の形態１に係るノード１００のビットストリーム制御部２及びメッセージハンドラ３の動作を変更した実施形態について例示したが、実施の形態２に係る過去フレームサーバノード１０９のビットストリーム制御部２及びメッセージハンドラ３の動作を同様に変更することによっても実施可能である。
【０１１７】
以上に説明したように、本実施の形態３では、ノード１００は、再送要求フレームの受信後にフレームを送信可能となったときから所定の遅延時間の経過後に再送要求フレームで再送が要求されたフレームを再送するようにしている。これによれば、再送を要求したノード１００において、再送フレームを特定し、装置制御の整合性を保つことが可能となる。
【０１１８】
＜他の実施の形態＞
上述した実施の形態１〜３では、再送要求フレームを受信したノードにおいて、再送対象のフレームを特定可能とするために、フレームカウンタ５のフレームカウンタ値の差分値を再送要求フレームのデータフィールドに含めるようにしているが、これに限られない。フレームカウンタ値の差分値を、再送要求フレームのＩＤで示すようにしてもよい。再送要求フレームのＩＤは、フレームカウンタ値の差分値がとり得る値のそれぞれに応じて、任意に予め定めるようにしてよい。例えば、フレームカウンタ値の差分値が「１」である場合は、ＩＤを「１Ｆ」とし、レームカウンタ値の差分値が「２」である場合は、ＩＤを「２Ｆ」とする等してよい。
【０１１９】
これによれば、再送要求フレームのデータフィールドを省略して、再送要求フレームの長さを極力短くすることができる。そのため、ＣＡＮバス９０上において送受信さえるデータ量を低減することができ、ＣＡＮバス９０上における通信効率を向上することができる。
【０１２０】
＜実施の形態の概要構成＞
上記実施の形態は、次に説明する概要構成として捉えることができる。図１６を参照して、実施の形態の概要構成について説明する。図１６は、実施の形態に係るＣＡＮシステム１０００の概要構成となるＣＡＮシステム９００の構成図である。
【０１２１】
ＣＡＮシステム９００は、第１のノード９１及び第２のノード９２を有する。第１のノード９１と第２のノード９２は、ＣＡＮバスを介してフレームを相互に送受信する。
【０１２２】
第１のノード９１は、ＣＡＮ仕様に基づいたエラーカウンタ９１１、エラー管理部９１２、及び再送要求部９１３を有する。エラーカウンタ９１１は、エラーカウンタ１１に対応する。
【０１２３】
エラー管理部９１２は、ＣＡＮバス９０を介したフレームの受信に失敗したときに、エラーカウンタ１１が所定の閾値を超えて、自ノードがエラーパッシブ状態となっているか否かを判断する。エラー管理部９１２は、エラー管理部８に対応する。
【０１２４】
再送要求部９１３は、エラー管理部９１２によってフレームの受信に失敗したときに自ノードがエラーパッシブ状態であると判断された場合、フレームの再送を要求する再送要求フレームを送信する。再送要求部９１３は、再送要求送信制御部９に対応する。
【０１２５】
第２のノード９２は、記憶部９２１、記録制御部９２２、及び再送制御部９２３を有する。
【０１２６】
記憶部９２１は、フレームが格納される。記憶部９２１は、送信記録ＦＩＦＯ７及び過去フレーム記録ＦＩＦＯ１３に対応する。
【０１２７】
記録制御部９２２は、ＣＡＮバス９０に対して送信されたフレームを記憶部９２１に格納する。記録制御部９２２は、送信記録制御部６及び過去フレーム記録制御部１２に対応する。
【０１２８】
再送制御部９２３は、第１のノード９１から送信された再送要求フレームで再送が要求されたフレームを記憶部９２１から取得し、第１のノード９１に再送する。再送制御部９２３は、メッセージハンドラ３に対応する。
【０１２９】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【０１３０】
本実施の形態では、再送要求フレームにおいて、再送対象のフレームを特定可能とする情報としてフレームカウンタ５のフレームカウンタ値の差分値を利用する場合について例示したが、フレームカウンタ５のフレームカウンタ値に基づいて再送対象のフレームが特定可能となる情報であれば、これに限られない。例えば、再送対象のフレームを特定可能とする情報として、受信エラー発生時のフレームカウンタ５のフレームカウンタ値４３をそのまま再送要求フレームに含めるようにしてもよい。この場合、ステップＳ１３における算出は不要となる。また、送信記録制御部６又は過去フレーム記録制御部１２は、ステップＳ１４において再送要求フレームに含まれるフレームカウンタ値をメッセージハンドラ３から取得し、そのフレームカウンタ値を送信記録ＦＩＦＯ７又は過去フレーム記録ＦＩＦＯ１３から検索するようにすればよい。
【０１３１】
本実施の形態では、送信フレームと、その送信フレームの送信完了によるカウントアップ後のフレームカウンタ５のフレームカウンタ値とを紐付けて管理することで、再送対象の送信フレームを特定可能としているが、これに限られない。例えば、送信フレームと、その送信フレームの送信完了によるカウントアップ前のフレームカウンタ５のフレームカウンタ値とを紐付けて管理するようにしてもよい。なお、この場合は、ステップＳ４において、受信に失敗した受信フレームの受信によるフレームカウンタ１１０のカウントアップ前のフレームカウンタ値４３をキャプチャする必要がある。
【０１３２】
本実施の形態３では、再送フレームを送信開始する遅延時間を、１ビット分の時間としたが、この時間に限られない。再送フレームを送信開始する遅延時間として、任意の時間を予め定めるようにしてもよい。例えば、ビットストリーム制御部２は、再送フレームを２ビット分の時間遅延させて送信するようにしてもよい。
【０１３３】
本発明の実施の形態にかかるノード１００、１０８、１０９は、上述の実施の形態の機能を実現するプログラムを、ノード（コンピュータ）又はノードが有するＣＰＵ（Central Processing Unit）が実行することによっても、構成することが可能である。
【０１３４】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１３５】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載され得る。
【０１３６】
（付記１）第１のノード及び第２のノードを含む複数のノードの間で、ＣＡＮ（Controller Area Network）バスを介してフレームを相互に送受信するＣＡＮ通信方法であって、
前記第２のノードが、前記ＣＡＮバスに対して送信されたフレームを記憶部に格納し、
前記第１のノードが、前記ＣＡＮバスを介したフレームの受信に失敗したときに、自ノードの、前記ＣＡＮバスに対するフレーム送受信のエラー回数をカウントするエラーカウンタのカウント値が所定の閾値を超えて、自ノードがエラーパッシブ状態となっているか否かを判断し、
前記第１のノードが、前記フレームの受信に失敗したときに自ノードがエラーパッシブ状態であると判断した場合、当該フレームの再送を要求する再送要求フレームを送信し、
前記第２のノードが、前記第１のノードから送信された再送要求フレームで再送が要求されたフレームを前記記憶部から取得し、当該第１のノードに再送する、
ＣＡＮ通信方法。
【０１３７】
（付記２）複数のノードとの間で、ＣＡＮ（Controller Area Network）バスを介してフレームを相互に送受信するノードを制御するための制御プログラムであって、
前記ＣＡＮバスに対して送信されたフレームを記憶部に格納する処理と、
他のノードが前記ＣＡＮバスを介したフレームの受信に失敗したときにエラーパッシブ状態である場合に送信する再送要求フレームの受信に応じて、当該再送要求フレームで再送が要求されたフレームを前記記憶部から取得し、当該他のノードに再送する処理と、
をノードに実行させる制御プログラム。
【０１３８】
（付記３）複数のノードとの間で、ＣＡＮ（Controller Area Network）バスを介してフレームを相互に送受信するノードを制御するための制御プログラムであって、
前記ＣＡＮバスを介したフレームの受信に失敗したときに、自ノードの、前記ＣＡＮバスに対するフレーム送受信のエラー回数をカウントするエラーカウンタのカウント値が所定の閾値を超えて、自ノードがエラーパッシブ状態となっているか否かを判断する処理と、
前記フレームの受信に失敗したときに自ノードがエラーパッシブ状態であると判断した場合、前記ＣＡＮバスに対して送信されたフレームを保持する他のノードに対して、当該フレームの再送を要求する再送要求フレームを送信する処理と、
をノードに実行させる制御プログラム。
【符号の説明】
【０１３９】
１  ＣＡＮコントローラモジュール
２  ビットストリーム制御部
３  エラー管理部
４  再送要求送信制御部
５  メッセージハンドラ
６  メッセージバッファメモリ
７、１１０  フレームカウンタ
８  送信記録制御部
９、１２０  送信記録ＦＩＦＯ
１０  ＣＡＮコントローラＬＳＩ
１１  エラーカウンタ
１２  過去フレーム記録制御部
１３、１３０  過去フレーム記録ＦＩＦＯ
２０  バストランシーバ
２１  ＣＰＵ
２２  他周辺モジュール
２３  ローカルバス
３０  送信信号線
３１  受信信号線
４０  送信フレーム
４１  受信フレーム
４２  エンドオブフレーム信号
４３  フレームカウンタ値
４４  送信完了信号
４５  エラー発生信号
４６  再送要求トリガ信号
４７  再送要求フレーム送信データ
４８  再送要求フレーム送信開始信号
４９  再送要求受信信号
５０  再送要求フレーム差分値
５１  再送フレーム
５２  再送フレーム検索結果信号
９０  ＣＡＮバス
９１  第１のノード
９２  第２のノード
１００  ノード
１０１  ボディ系ノード
１０２  安全系ノード
１０３  情報系ノード
１０４  エンジン系ノード
１０５  シャーシ系ノード
１０８  一般ノード
１０９  過去フレームサーバノード
９１１  エラーカウンタ
９１２  エラー管理部
９１３  再送要求部
９２１  記憶部
９２２  記録制御部
９２３  再送制御部
１０００  ＣＡＮシステム
【図１】
2014086812.tif 000003
【図２】
2014086812.tif 000004
【図３】
2014086812.tif 000005
【図４】
2014086812.tif 000006
【図５】
2014086812.tif 000007
【図６】
2014086812.tif 000008
【図７】
2014086812.tif 000009
【図８】
2014086812.tif 000010
【図９】
2014086812.tif 000011
【図１０】
2014086812.tif 000012
【図１１】
2014086812.tif 000013
【図１２】
2014086812.tif 000014
【図１３】
2014086812.tif 000015
【図１４】
2014086812.tif 000016
【図１５】
2014086812.tif 000017
【図１６】
2014086812.tif 000018