(57)【特許請求の範囲】
【請求項１】
バス（５）を介して接続された３つ以上のノード（３）を備え、
前記ノードのうちの１つは、クロック信号と、ノードを指定するヘッダ情報を、前記バスに送信するマスタノード（３ａ）であり、
前記ノードのうち、前記マスタノード以外のノードは、前記バスに送信された前記クロック信号に同期して通信動作を行うスレーブノード（３ｂ，３ｃ）であり、
前記スレーブノードは、自身を指定する前記ヘッダ情報を受信すると、そのヘッダ情報に対して送信すべきレスポンスであって、前記ヘッダ情報と共に通信のフレームを成すレスポンスを、前記バスに送信するようになっている、通信システム（１）において、
前記スレーブノードのうちの１つは、
前記マスタノードからの前記クロック信号が途絶えたと判定した場合に、前記クロック信号の前記バスへの送信を、前記マスタノードに代わって実施するクロック送信代行手段（４１，Ｓ１１０〜１３０）と、前記マスタノードからの前記ヘッダ情報が途絶えたと判定した場合に、前記ヘッダ情報の前記バスへの送信を、前記マスタノードに代わって実施するヘッダ送信代行手段（４１，Ｓ１４０〜Ｓ１６０）と、を備えるサブマスタノード（３ｃ）であり、
前記ヘッダ送信代行手段は、前記マスタノードが正常の場合に送信する前記ヘッダ情報のうちの一部であって、重要度が高いフレームのヘッダ情報としてメモリ（４９）に記憶されているヘッダ情報を、前記マスタノードに代わって前記バスに送信すること、
を特徴とする通信システム。
【請求項２】
請求項１に記載の通信システムにおいて、
前記サブマスタノードは、
前記マスタノードが正常な場合に前記バスに流れる前記ヘッダ情報及び前記レスポンスを監視して、同じヘッダ情報に対する前記レスポンス内の情報のうち、フレームの連続性を示すカウンタ情報が更新されている場合に、そのヘッダ情報を、重要度の高いフレームのヘッダ情報として前記メモリに記憶する学習手段（４１，Ｓ２１０〜Ｓ２５０）、
を備えること、を特徴とする通信システム。
【請求項３】
請求項１又は請求項２に記載の通信システムにおいて、
前記サブマスタノードは、
当該サブマスタノードが前記マスタノードに代わって前記クロック信号の送信と前記ヘッダ情報の送信とを実施している場合に動作する手段であって、他の前記スレーブノードが送信した前記レスポンス内のスリープ可否情報を監視し、他の前記スレーブノードの全てがスリープ可能になったと判定した場合に、他のノードに対してスリープモードへの遷移を指示するスリープフレームを送信するスリープ制御手段（４１，Ｓ３１０〜Ｓ３４０）、を備えること、
を特徴とする通信システム。
【請求項４】
請求項１ないし請求項３の何れか１項に記載の通信システムに用いられるサブマスタノード（３ｃ）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードを備えた通信システムに関する。
【背景技術】
【０００２】
通信システムとして、マスタノードが、クロック信号と、ノードを指定するヘッダ情報を、バスに送信し、マスタノード以外のノードであるスレーブノードが、バスに送信されたクロック信号に同期して通信動作を行う、という通信システムがある。この通信システムにおいて、スレーブノードは、自身を指定するヘッダ情報を受信すると、そのヘッダ情報に対して送信すべきレスポンスを、バスに送信する。レスポンスは、ヘッダ情報と共に通信のフレームを成すデータ列である（例えば、特許文献１参照）。
【０００３】
上記通信システムでは、マスタノードに異常が生じて、バスへのクロック信号が途絶えた場合には、通信が成立しなくなる。このため、例えば特許文献１では、スレーブノードの１つを、マスタノードの故障時にマスタノードの代役をするサブマスタノードにしている。具体的には、サブマスタノードが、マスタノードに代わって、クロック信号の送信を行うと共に、ヘッダ情報の送信も行うことで、スレーブノードがヘッダ情報に対してレスポンスを送信する、というポーリング方式の通信を実施可能にしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−３０９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１のサブマスタノードは、マスタノードが正常の場合に送信する全てのヘッダ情報を送信する。このため、サブマスタノードには、マスタノードと同等以上の処理能力を持たせなければならない。よって、サブマスタノードの大型化及び高コスト化を招くこととなり、通信システム全体としても高コスト化を招くこととなる。一般に、スレーブノードは、マスタノードと比較して、処理能力の低い安価な信号処理部を主要部として構成したい、という要望があるが、その要望から乖離することとなる。
【０００６】
そこで、本発明は、マスタノードの故障による通信への影響を最小限にすることと、マスタノードの代役をするサブマスタノードに必要な処理能力を低減することとを、両立させることを目的としている。
【課題を解決するための手段】
【０００７】
第１発明の通信システムは、バスを介して接続された３つ以上のノードを備える。ノードのうちの１つは、クロック信号と、ノードを指定するヘッダ情報を、バスに送信するマスタノードである。ノードのうち、マスタノード以外のノードは、バスに送信されたクロック信号に同期して通信動作を行うスレーブノードである。スレーブノードは、自身を指定するヘッダ情報を受信すると、そのヘッダ情報に対して送信すべきレスポンスであって、ヘッダ情報と共に通信のフレームを成すレスポンスを、バスに送信する。
【０００８】
そして、この通信システムにおいて、スレーブノードのうちの１つは、クロック送信代行手段とヘッダ送信代行手段とを備えるサブマスタノードである。
サブマスタノードにおいて、クロック送信代行手段は、マスタノードからのクロック信号が途絶えたと判定した場合に、クロック信号のバスへの送信を、マスタノードに代わって実施する。そして、ヘッダ送信代行手段は、マスタノードからのヘッダ情報が途絶えたと判定した場合に、ヘッダ情報のバスへの送信を、マスタノードに代わって実施する。但し、ヘッダ送信代行手段は、マスタノードが正常の場合に送信するヘッダ情報のうちの一部であって、重要度が高いフレームのヘッダ情報としてメモリに記憶されているヘッダ情報を、マスタノードに代わってバスに送信する。
【０００９】
この通信システムによれば、マスタノードが故障しても、サブマスタノードがマスタノードに代わってクロック信号の送信とヘッダ情報の送信とを実施することにより、通信への影響を最低限に抑えることができる。サブマスタノードは、マスタノードが正常の場合に送信するヘッダ情報の全てではなく、重要度が高いフレームのヘッダ情報だけをバスに送信するため、サブマスタノードに必要な処理能力を低減させることができる。
【００１０】
よって、マスタノードの故障による通信への影響を最小限にすることと、マスタノードの代役をするサブマスタノードに必要な処理能力を低減することとを、両立させることができる。
【００１１】
なお、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１２】
【図１】実施形態の通信システムを表す構成図である。
【図２】バスで使用する伝送路符号の構成を示す説明図である。
【図３】バスを介して送受信されるフレームの構成を示す説明図である。
【図４】フレームを構成する各情報の内容とサイズを示す説明図である。
【図５】サブマスタの信号処理部が行う代行制御処理を表すフローチャートである。
【図６】サブマスタの信号処理部が行う学習処理を表すフローチャートである。
【図７】記憶済みヘッダテーブルの説明図である。
【図８】重要フレームリストの説明図である。
【図９】サブマスタの信号処理部が行うスリープ制御処理を表すフローチャートである。
【図１０】実施形態の作用を説明する説明図である。
【発明を実施するための形態】
【００１３】
以下に、本発明が適用された実施形態の通信システムについて説明する。
＜全体構成の説明＞
図１に示す実施形態の通信システム１は、車両に搭載される通信システムであり、通信装置としてのノード３を複数備える。そして、複数のノード３は、通信路としてのバス５を介して接続されている。図１では、４つのノード３を図示しているが、ノード３の数は、３あるいは５以上でも良い。
【００１４】
ノード３は、車両におけるボデー系のアプリケーションを実現する電子制御装置（以下、ＥＣＵという）や、車両の状態を検出したり車両の状態を制御したりするために設けられたスイッチやセンサ等の関連機器である。尚、ＥＣＵは、「Electronic Control Unit」の略である。例えば、ノード３のうち、ＥＣＵとしては、パワーウィンドウ、ドアロックを制御するボデーＥＣＵや、ワイパを制御するワイパＥＣＵや、シートを制御するシートＥＣＵや、ライトを制御するライトＥＣＵ等がある。また、ノード３のうち、関連機器としては、ライトスイッチや、ライトセンサや、ワイパスイッチや、レインセンサ等がある。
【００１５】
＜伝送符号の説明＞
バス５は、異なるノード３からハイレベル（以下単に、ハイという）の信号とローレベル（以下単に、ローという）の信号とが同時に出力されると、当該バス５上の信号レベルがローとなるように構成されている。
【００１６】
そして、図２に示すように、バス５に流れる「０」または「１」の伝送路符号としては、ビットの途中で信号レベルがローからハイに変化するＰＷＭ（パルス幅変調）符号が用いられる。この伝送路符号では、ドミナント（この例では０に対応）とレセッシブ（この例では１に対応）との、二値の信号を、２種類のデューティ比で表現する。具体的には、ドミナントの方がレセッシブよりローの比率が大きくなるように設定（この例では、ドミナントが１ビットの２／３の期間、レセッシブが１ビットの１／３の期間）に設定されている。そして、バス５上でドミナントとレセッシブとが衝突した場合には、ドミナントが勝つようになっている。
【００１７】
＜フレームの説明＞
図３に示すように、ノード３間の通信に使用されるフレームは、送信を許可するデータを指定するためのヘッダと、ヘッダによって指定されたデータを送信するための可変長のレスポンスからなる。
【００１８】
ヘッダは、送信を許可するデータのＩＤ（識別子）を示す。図４に示すように、ヘッダは、８ビットであり、ヘッダが示すＩＤは、フレームの種類を示すフレームＩＤでもある。例えば、ヘッダを成す８ビットのうち、７ビットがＩＤとして用いられ、残りの１ビットはパリティビットとして用いられる。
【００１９】
レスポンスは、図３，図４に示すように、ヘッダによって指定されたデータである「ＤＡＴＡ」以外に、４ビットの「ＤＬＣ」と、２ビットの「ＮＭ」と、２ビットの「ＣＴ」と、８ビットの「ＣＲＣ」とを含む。尚、「ＤＡＴＡ」は、０〜１２バイトの範囲で可変である。
【００２０】
「ＤＬＣ」は、レスポンスに含まれる「ＤＡＴＡ」のデータ長を示す情報である。
「ＮＭ」は、ネットワークマネージメントのための情報であり、以下では、ＮＭ情報という。ＮＭ情報は、１ビットのウェイクアップ要求情報と、１ビットのスリープ可否情報とからなる。ウェイクアップ要求情報は、このレスポンスを送信したノード３が、後述のウェイクアップ信号を送信したノード３である場合に、例えば「１」に設定される。スリープ可否情報は、このレスポンスを送信したノード３が、後述のスリープモードに遷移可能か否かを示す情報である。この例において、スリープ可否情報が「０」であることは、スリープ禁止を示し、スリープ可否情報が「１」であることは、スリープ許可を示す。
【００２１】
「ＣＴ」は、フレームの連続性を示すカウンタ情報である。特定のヘッダに対するレスポンスについては、そのヘッダに対するレスポンスが送信される毎に、「ＣＴ」の値が所定のルールで更新される。例えば、あるヘッダに対するレスポンス内の「ＤＡＴＡ」が、重要なデータであって、受信する側でデータ抜けが起こると、実施する制御への影響が大きいデータである場合、そのレスポンスを送信するノード３は、送信時毎に「ＣＴ」の値を「０→１→２→３→０」というように更新する。レスポンスを受信する側において、その「ＣＴ」の値に基づき、データの抜けを検出できるようにするためである。
【００２２】
「ＣＲＣ」は、フレームのエラーをチェックするためのＣＲＣ（Cyclic Redundancy Check）符号である。
尚、各ノード３がどのデータを送信するかは予め定められているため、ヘッダは、レスポンスを送信すべきノードを指定するための情報でもある。ヘッダ（詳しくはヘッダが示すＩＤ）の値は、ノードを指定するヘッダ情報に相当する。
【００２３】
＜ノードの説明＞
各ノード３は、車両のバッテリ電圧を電源として動作する。各ノード３の動作モードとしては、ウェイクアップモードとスリープモードとがある。ウェイクアップモードは、予め割り当てられた全ての機能を実行可能な通常の動作モードである。スリープモードは、消費電力を抑えるために一部の機能を停止した動作モードである。各ノード３は、スリープモードでは、バス５に信号を出力しない。全てのノード３がスリープモードになることで、通信システム１全体がスリープ状態になる。
【００２４】
各ノード３は、スリープモードになっている場合に、自身に定められたウェイクアップ要因が発生すると、ウェイクアップする。つまり、スリープモードからウェイクアップモードに遷移する。そして、ウェイクアップ要因の発生によってウェイクアップしたノード３（後述のマスタノードを除く）は、バス５にウェイクアップ信号を送信し、他のノード３は、ウェイクアップ信号を検知することで、ウェイクアップする。後述のマスタノードはウェイクアップ要因の発生によって後述のクロック信号を送信する。ウェイクアップ信号は、ウェイクアップ要因の発生によって最初にウェイクアップしたノード３が、他のノード３をウェイクアップさせる信号であり、例えば所定時間ローになる信号である。
【００２５】
ここで、図１に示すように、通信システム１では、ノード３のうちの１つ（例えば前述のボデーＥＣＵ）を、マスタノード（以下単に、マスタという）３ａとしており、マスタ３ａ以外のノード３を、スレーブノード（以下単に、スレーブという）３ｂ，３ｃとしている。
【００２６】
更に、スレーブ３ｂ，３ｃのうちの１つであるスレーブ３ｃ（例えば前述のワイパＥＣＵ）を、サブマスタノード（以下単に、サブマスタという）３ｃとしている。サブマスタ３ｃは、通常時はスレーブとして動作する（つまり、他のスレーブ３ｂと同様に動作する）が、マスタ３ａの故障時には、マスタ３ａの代役を果たす。尚、以下の説明において、サブマスタ３ｃを他のスレーブ３ｂと区別しない場合には、サブマスタ３ｃのこともスレーブ３ｃという。
【００２７】
マスタ３ａは、ウェイクアップモードの場合に、予め定められた条件が成立すると、スリープモードに遷移し、バス５に信号を送信しない状態となる。
そして、マスタ３ａは、スリープモードの場合に、自身のウェイクアップ要因あるいは他のノード３からのウェイクアップ信号によってウェイクアップすると、そのウェイクアップ時から第１の規定時間Ｔ１が経過した時点で、バス５へのクロック信号の送信を開始する。本実施形態において、クロック信号は、図２に示した伝送路符号の立ち下がりエッジ（即ち、ビット境界となるエッジ）である。マスタ３ａは、バス５に情報の信号を送信せずに、クロック信号だけを送信する場合には、図２示したレセッシブの信号を繰り返し送信することとなる。
【００２８】
そして、マスタ３ａは、ウェイクアップ時から上記第１の規定時間Ｔ１よりも長い第２の規定時間Ｔ２が経過すると、バス５へのヘッダの送信を開始する。マスタ３ａから送信されるヘッダは複数種類あり、各ヘッダは予め定められたスケジュールで定期的に送信される。尚、マスタ３ａがヘッダを送信している場合には、送信されるヘッダにおける各ビットの境界としての立ち下がりエッジが、スレーブ３ｂ，３ｃにおいてクロック信号として扱われる。その場合、マスタ３ａは、バス５にクロック信号とヘッダ情報（ヘッダの値）との両方を送信していることになる。
【００２９】
スレーブ３ｂ，３ｃも、予め定められた条件が成立するとスリープモードに遷移する。例えば、スレーブ３ｂ，３ｃは、スリープモードへの遷移を指示するスリープフレームを受信した場合や、ヘッダを受信しない連続時間が所定のエラー判定時間Ｔ３以上になった場合に、スリープモードに遷移する。尚、エラー判定時間Ｔ３は、上記第２の規定時間Ｔ２よりも十分に長い。
【００３０】
そして、スレーブ３ｂ，３ｃは、スリープモードの場合に、自身のウェイクアップ要因あるいは他のノード３からのウェイクアップ信号によってウェイクアップすると、バス５に流れる信号の立ち下がりエッジをクロック信号として抽出すると共に、そのクロック信号に同期して通信動作を行う。スレーブ３ｂ，３ｃは、自身を指定するヘッダ（この例では自身が送信すべきデータを指定するヘッダ）を受信すると、そのヘッダに対して送信すべき前述のレスポンスをバス５に送信する。その際に、スレーブ３ｂ，３ｃは、バス５から抽出したクロック信号に同期したタイミングで、受信データの復号化や送信データのＰＷＭ符号への符号化等を行う。
【００３１】
＜マスタの構成＞
図１に示すように、マスタ３ａは、当該マスタ３ａの動作を司る信号処理部２１と、通信回路２３と、を備える。この例では、信号処理部２１は、マイクロコンピュータ（以下、マイコンと言う）によって構成されており、ＣＰＵ２５と、ＣＰＵ２５が実行するプログラムが記憶されたＲＯＭ２６と、ＣＰＵ２５による演算結果が記憶されるＲＡＭ２７と、水晶発振子等を用いて構成された発振回路２８と、を備える。尚、発振回路２８は、信号処理部２１の外に設けられていても良い。
【００３２】
通信回路２３は、発振回路２８からの内部クロックに同期して、前述したクロック信号のバス５への送信を行うと共に、通信動作を行う。クロック信号の周期は、例えば内部クロックの周期と同じである。通信回路２３は、通信動作としては、例えば、信号処理部２１から供給されるデータをＰＷＭ符号に符号化してバス５に送信する送信動作や、バス５上のデータを受信して例えばＮＲＺ（Non Return to Zero）符号に復号し、復号後のデータを信号処理部２１に供給する受信動作を行う。
【００３３】
また、通信回路２３は、前述のウェイクアップ信号を検出すると、自身及び信号処理部２１をウェイクアップさせる（延いては当該マスタ３ａをウェイクアップさせる）機能も有している。尚、通信回路２３の機能は、信号処理部２１に備えられていても良い。
【００３４】
＜スレーブの構成＞
図１に示すように、スレーブ３ｂも、当該スレーブ３ｂの動作を司る信号処理部３１と、通信回路３３と、を備える。この例では、信号処理部３１は、マイコンによって構成されており、ＣＰＵ３５と、ＣＰＵ３５が実行するプログラムが記憶されたＲＯＭ３６と、ＣＰＵ３５による演算結果が記憶されるＲＡＭ３７と、を備える。
【００３５】
通信回路３３は、バス５に流れる信号の立ち下がりエッジを、クロック信号として抽出する機能を有している。そして、通信回路３３は、バス５から抽出したクロック信号に同期して、マスタ３ａの通信回路２３と同様の通信動作（送信動作及び受信動作）を行う。このため、通信回路３３は、マスタ３ａの通信回路２３と同期して通信動作を行うこととなる。
【００３６】
また、通信回路３３は、前述のウェイクアップ信号を検出すると、自身及び信号処理部３１をウェイクアップさせる（延いては当該スレーブ３ｂをウェイクアップさせる）機能も有している。尚、通信回路３３の機能は、信号処理部３１に備えられていても良い。
【００３７】
＜サブマスタの構成＞
図１に示すように、サブマスタ３ｃも、当該サブマスタ３ｃの動作を司る信号処理部４１と、通信回路４３と、を備える。この例では、信号処理部４１は、マイコンによって構成されており、ＣＰＵ４５と、ＣＰＵ４５が実行するプログラムが記憶されたＲＯＭ４６と、ＣＰＵ４５による演算結果が記憶されるＲＡＭ４７と、発振回路４８と、を備える。尚、発振回路４８は、マスタ３ａにおける発振回路２８と同様のものであり、信号処理部４１の外に設けられていても良い。また、スレーブ３ｃは、書き換えが可能な不揮発性のメモリ４９も備える。
【００３８】
通信回路４３の動作モードとしては、スレーブ３ｂの通信回路３３と同じ動作をする通常モードと、マスタ３ａの通信回路２３と同じ動作をする異常時モードとがある。
通信回路４３は、例えば、当該サブマスタ３ｃがウェイクアップした時点からは通常モードで動作する。通信回路４３は、通常モードでは、バス５からクロック信号を抽出すると共に、抽出したクロック信号に同期して、他の通信回路２３，３３と同様の通信動作（送信動作及び受信動作）を行う。
【００３９】
また、通信回路４３は、通常モードの場合に、バス５からクロック信号を抽出することができるか否か（即ち、マスタ３ａがクロック信号を送信しているか否か）を、信号処理部４１に通知するようになっている。信号処理部４１は、その通知に基づいて、マスタ３ａからのクロック信号が途絶えたか否かを判定する。
【００４０】
そして、通信回路４３は、信号処理部４１によってマスタ３ａからのクロック信号が途絶えたと判定された場合には、異常時モードで動作する。通信回路４３は、異常時モードでは、当該サブマスタ３ｃに備えられている発振回路４８からの内部クロックに同期して、バス５へのクロック信号の送信を行うと共に、通信動作を行う。
【００４１】
また、通信回路４３は、前述のウェイクアップ信号を検出すると、自身及び信号処理部４１をウェイクアップさせる（延いては当該サブマスタ３ｃをウェイクアップさせる）機能も有している。尚、通信回路４３の機能は、信号処理部４１に備えられていても良い。
【００４２】
＜サブマスタの信号処理部が行う代行制御処理＞
次に、サブマスタ３ｃの信号処理部４１が行う代行制御処理について、図５を用い説明する。
【００４３】
信号処理部４１は、当該サブマスタ３ｃがウェイクアップすると、図５に示す代行制御処理を開始する。尚、前述したように、ノード３のうち、最初にウェイクアップしたノード３はウェイクアップ信号を送信して他のノード３をウェイクアップさせるため、サブマスタ３ｃがウェイクアップしたなら、正常であればマスタ３ａもウェイクアップする。
【００４４】
図５に示すように、信号処理部４１は、代行制御処理を開始すると、Ｓ１１０にて、当該サブマスタ３ｃがウェイクアップしてからクロック送信待ち時間Ｔａが経過したか否かを判定する。クロック送信待ち時間Ｔａは、前述した第１の規定時間Ｔ１よりも長く、且つ、前述したエラー判定時間Ｔ３よりは短い時間に設定されている。
【００４５】
信号処理部４１は、クロック送信待ち時間Ｔａが経過していないと判定した場合には（Ｓ１１０：ＮＯ）、Ｓ１２０にて、マスタ３ａのクロック送信があるか否かを判定する。つまり、マスタ３ａがバス５にクロック信号を送信しているか否かを判定する。クロック送信とは、クロック信号を送信することである。
【００４６】
そして、信号処理部４１は、マスタ３ａのクロック送信があると判定した場合には（Ｓ１２０：ＹＥＳ）、そのまま当該代行制御処理を終了するが、マスタ３ａのクロック送信がないと判定した場合には（Ｓ１２０：ＮＯ）、Ｓ１１０に戻る。
【００４７】
一方、信号処理部４１は、上記Ｓ１１０にて、クロック送信待ち時間Ｔａが経過したと判定した場合、即ち、当該サブマスタ３ｃがウェイクアップしてからクロック送信待ち時間Ｔａが経過してもマスタ３ａがクロック信号の送信を開始しない場合には、Ｓ１３０に進む。つまり、この場合には、マスタ３ａがクロック信号の送信を開始するはずのタイミングが経過しているのに、マスタ３ａがクロック信号の送信を開始しないことから、マスタ３ａからのクロック信号が途絶えたと判定して、Ｓ１３０に進む。
【００４８】
そして、信号処理部４１は、Ｓ１３０では、クロック送信の代行を開始する。クロック送信の代行とは、マスタ３ａに代わってクロック信号のバス５への送信を実施することである。信号処理部４１は、具体的には、通信回路４３の動作モードを、前述の通常モードから異常時モードに切り替える。
【００４９】
信号処理部４１は、次のＳ１４０にて、上記Ｓ１３０でクロック送信の代行を開始してから、ヘッダ送信待ち時間Ｔｂが経過したか否かを判定する。ヘッダ送信待ち時間Ｔｂは、その時間Ｔｂとクロック送信待ち時間Ｔａとの和の時間（＝Ｔａ＋Ｔｂ）が、前述した第２の規定時間Ｔ２よりも長く、且つ、前述したエラー判定時間Ｔ３よりは短くなるように設定されている。
【００５０】
信号処理部４１は、ヘッダ送信待ち時間Ｔｂが経過していないと判定した場合には（Ｓ１４０：ＮＯ）、Ｓ１５０にて、マスタ３ａのヘッダ送信があったか否かを判定する。つまり、マスタ３ａがバス５にヘッダを送信したか否かを判定する。ヘッダ送信とは、ヘッダを送信することである。例えば、信号処理部４１は、通信回路４３からの信号に基づいて、ヘッダ送信の有無を判定する。
【００５１】
そして、信号処理部４１は、マスタ３ａのヘッダ送信があったと判定した場合には（Ｓ１５０：ＹＥＳ）、そのまま当該代行制御処理を終了するが、マスタ３ａのヘッダ送信がないと判定した場合には（Ｓ１５０：ＮＯ）、Ｓ１４０に戻る。
【００５２】
一方、信号処理部４１は、上記Ｓ１４０にて、ヘッダ送信待ち時間Ｔｂが経過したと判定した場合、即ち、クロック送信の代行を開始してからヘッダ送信待ち時間Ｔｂが経過してもマスタ３ａがヘッダの送信を開始しない場合には、Ｓ１６０に進む。つまり、この場合には、マスタ３ａがヘッダの送信を開始するはずのタイミングが経過しているのに、マスタ３ａがヘッダの送信を開始しないことから、マスタ３ａからのヘッダも途絶えたと判定して、Ｓ１６０に進む。
【００５３】
そして、信号処理部４１は、Ｓ１６０にて、ヘッダ送信の代行を開始し、その後、当該代行制御処理を終了する。ヘッダ送信の代行とは、マスタ３ａに代わってヘッダの定期的な送信を実施することである。信号処理部４１は、Ｓ１６０では、例えば、１つ目のヘッダの送信を実施し、以後は、定期的にヘッダの送信を実施する。
【００５４】
但し、信号処理部４１は、マスタ３ａが正常時に送信するヘッダの全てを送信するのではなく、その全てのヘッダのうち、重要度が高いフレームのヘッダ（以下、重要フレームヘッダともいう）としてメモリ４９に記憶されているヘッダだけを、マスタ３ａに代わって送信する。
【００５５】
＜サブマスタの信号処理部が行う学習処理＞
ここで、一例として、サブマスタ３ｃがマスタ３ａに代わって送信する重要フレームヘッダは、予め選定してメモリ４９やＲＯＭ４６に記憶しておいても良い。その場合、信号処理部４１は、メモリ４９又はＲＯＭ４６内の重要フレームヘッダを、例えばマスタ３ａと同様のスケジュールで送信すれば良い。
【００５６】
一方、本実施形態において、サブマスタ３ｃの信号処理部４１は、マスタ３ａが正常時に送信するヘッダを監視して、重要フレームヘッダを動的に選定するようになっている。そこで、次に、信号処理部４１が重要フレームヘッダを選定するために行う学習処理について説明する。
【００５７】
信号処理部４１は、クロック送信及びヘッダ送信の代行をしていない場合、即ちマスタ３ａが正常な場合において、マスタ３ａからのヘッダとそれに対するレスポンスとを受信する毎に、図６に示す学習処理を行う。
【００５８】
図６に示すように、信号処理部４１は、学習処理を開始すると、Ｓ２１０にて、今回受信したヘッダである受信ヘッダが、記憶済みヘッダテーブルに存在するか否かを判定する。
【００５９】
記憶済みヘッダテーブルは、図７に示すように、マスタ３ａが送信したヘッダの各々と、各ヘッダに対して送信されたレスポンス中のカウンタ情報（前述の「ＣＴ」）とを、対応付けて記録するためのテーブルであり、メモリ４９内の所定領域に記憶される。尚、図７及び後述する図８において、「０ｘ」が先頭に付された２桁の数字は、ヘッダの値を１６進数で例示したものである。
【００６０】
信号処理部４１は、上記Ｓ２１０にて、受信ヘッダが記憶済みヘッダテーブルに存在しないと判定した場合には、Ｓ２２０にて、受信ヘッダと、その受信ヘッダに対して送信されたレスポンス中のカウンタ情報とを、記憶済みヘッダテーブル（図７）に記憶し、その後、当該学習処理を終了する。
【００６１】
また、信号処理部４１は、上記Ｓ２１０にて、受信ヘッダが記憶済みヘッダテーブルに存在すると判定した場合には、Ｓ２３０に進み、受信ヘッダが重要フレームリストに存在するか否かを判定する。
【００６２】
重要フレームリストは、図８に示すように、当該学習処理で選定した重要フレームヘッダを記録するリストであり、メモリ４９内の所定領域に記憶される。
信号処理部４１は、上記Ｓ２３０にて、受信ヘッダが重要フレームリストに存在すると判定した場合には、そのまま当該学習処理を終了するが、受信ヘッダが重要フレームリストに存在しないと判定した場合には、Ｓ２４０に進む。
【００６３】
信号処理部４１は、Ｓ２４０では、受信ヘッダのカウンタ情報と、記憶済みヘッダのカウンタ情報とが同じであるか否かを判定する。
受信ヘッダのカウンタ情報とは、受信ヘッダに対して送信されたレスポンス中のカウンタ情報である。また、記憶済みヘッダのカウンタ情報とは、記憶済みヘッダテーブルに記憶されているカウンタ情報のうち、受信ヘッダと同じヘッダに対して記憶されているカウンタ情報である。つまり、Ｓ２４０では、今回受信したヘッダに対して送信されたレスポンス中のカウンタ情報と、そのヘッダと同じヘッダが前回に送信されたときに送信されたレスポンス中のカウンタ情報とが、同じであるか否かを判定している。
【００６４】
そして、信号処理部４１は、上記Ｓ２４０にて、受信ヘッダのカウンタ情報と記憶済みヘッダのカウンタ情報とが同じであると判定した場合には、そのまま当該学習処理を終了する。
【００６５】
また、信号処理部４１は、上記Ｓ２４０にて、受信ヘッダのカウンタ情報と記憶済みヘッダのカウンタ情報とが同じはないと判定した場合には、受信ヘッダについて、カウンタ情報が更新されたと判断して、Ｓ２５０に進む。そして、信号処理部４１は、Ｓ２５０では、受信ヘッダを、重要フレームヘッダとして、重要フレームリストに記憶し、その後、当該学習処理を終了する。
【００６６】
つまり、信号処理部４１は、マスタ３ａが正常な場合にバス５に流れるヘッダ及びレスポンスを監視して、同じヘッダに対するレスポンス内のカウンタ情報が更新されている場合に、そのヘッダを重要フレームヘッダとしてメモリ４９内の重要フレームリストに記憶している。
【００６７】
そして、信号処理部４１は、前述した図６のＳ１６０でヘッダ送信の代行を開始した場合には、メモリ４９内の重要フレームリストに記憶されているヘッダ（重要フレームヘッダ）を、定期的に送信する。尚、信号処理部４１は、重要フレームリストに記憶されているヘッダを、例えば、マスタ３ａが送信するのと同じスケジュールで送信するが、マスタ３ａとは異なるスケジュール（例えばマスタ３ａによる送信間隔よりも長い送信間隔）で送信するようになっていても良い。
【００６８】
＜サブマスタの信号処理部が行うスリープ制御処理＞
サブマスタ３ｃの信号処理部４１は、クロック送信及びヘッダ送信の代行をしている場合に、図９に示すスリープ制御処理を例えば一定時間毎に開始する。尚、この例では、ヘッダ送信の代行で送信される各ヘッダによって、全てのスレーブ３ｂの各々がレスポンスを送信すべきノードとして指定される。
【００６９】
図９に示すように、信号処理部４１は、スリープ制御処理を開始すると、Ｓ３１０にて、フレームを受信する。受信されるフレームのレスポンスは、当該サブマスタ３ｃが送信したヘッダに対するレスポンスであり、スレーブ３ｂの何れかが送信したレスポンスである。
【００７０】
信号処理部４１は、次のＳ３２０にて、Ｓ３１０で今回受信したフレーム（以下、受信フレームという）のレスポンスに含まれているＮＭ情報のうちのスリープ可否情報が、スリープ許可を示す値（この例では「１」）であるか否かを判定する。そして、信号処理部４１は、スリープ可否情報が「１」であると判定した場合には（Ｓ３２０：ＹＥＳ）、Ｓ３３０に進む。
【００７１】
信号処理部４１は、Ｓ３３０では、当該サブマスタ３ｃ以外の全てのスレーブ３ｂについて、上記Ｓ３２０でのスリープ可否情報の判定を完了したか否かを判定する。そして、信号処理部４１は、このＳ３３０で否定判定（ＮＯと判定）した場合には、Ｓ３１０に戻り、次のフレームの受信を行う。
【００７２】
また、信号処理部４１は、上記Ｓ３３０で肯定判定（ＹＥＳと判定）した場合には、Ｓ３４０に進む。Ｓ３２０の判定により、全てのスレーブ３ｂについて、スリープ可否情報がスリープ許可を示す「１」であると判定した場合には、Ｓ３４０に進むこととなる。
【００７３】
そして、信号処理部４１は、Ｓ３４０では、バス５にスリープフレームを送信する。前述したように、スリープフレームは他のノード３に対してスリープモードへの遷移を指示するフレームである。よって、全てのスレーブ３ｂは、このスリープフレームを受信することで、スリープモードに遷移する。また、信号処理部４１は、次のＳ３５０にて、当該サブマスタ３ｃをスリープモードに遷移させ、その後、当該スリープ制御処理を終了する。
【００７４】
また、信号処理部４１は、上記Ｓ３２０にて、スリープ可否情報が「１」ではないと判定した場合には、そのまま当該スリープ制御処理を終了する。この場合には、スリープモードに遷移できないスレーブ３ｂが存在することから、スリープフレームを送信しない。
【００７５】
このように、信号処理部４１は、スリープ制御処理では、スレーブ３ｂが送信したレスポンス内のスリープ可否情報を監視して、スレーブ３ｂの全てがスリープ可能になったと判定した場合に（Ｓ３３０：ＹＥＳ）、スリープフレームを送信している（Ｓ３４０）。
【００７６】
尚、サブマスタ３ｃが送信するヘッダとして、当該サブマスタ３ｃを指定するヘッダもあり、サブマスタ３ｃもレスポンスを送信するのであれば、上記Ｓ３３０では、当該サブマスタ３ｃについても、上記Ｓ３２０でのスリープ可否情報の判定を完了したか否かを判定するようにしても良い。
【００７７】
＜実施形態の作用＞
図１０に示すように、例えば、時刻ｔ１にて、スレーブ３ｂの何れかが、ウェイクアップ要因の発生によりウェイクアップし、そのウェイクアップしたスレーブ３ｂが、時刻ｔ２にて、ウェイクアップ信号を送信したとする。
【００７８】
ここで、本来ならば、マスタ３ａを含む他の全てのノード３がウェイクアップ信号によってウェイクアップする。そして、マスタ３ａは、クロック信号の送信を開始し、その後、ヘッダの定期的な送信を開始することとなる。
【００７９】
一方、マスタ３ａに異常が生じていて、図１０における点線の枠内に示すように、マスタ３ａがクロック送信とヘッダ送信をできない状態になっていたとする。
その場合には、サブマスタ３ｃが、ウェイクアップしてからクロック送信待ち時間Ｔａが経過した時刻ｔ３になると、マスタ３ａからのクロック信号が途絶えたと判定して、マスタ３ａに代わりクロック信号の送信を開始する（図５のＳ１１０：ＹＥＳ→Ｓ１３０）。更に、サブマスタ３ｃは、クロック信号の送信を開始してからヘッダ送信待ち時間Ｔｂが経過した時刻ｔ４になると、マスタ３ａからのヘッダも途絶えたと判定して、マスタ３ａに代わりヘッダの定期的な送信を開始する（図５のＳ１４０：ＹＥＳ→Ｓ１６０）。
【００８０】
尚、図１０において、「定期」と記載している枠の期間は、サブマスタ３ｃがヘッダを送信し、そのヘッダに対するレスポンスを何れかのノード３が送信している期間である。また、サブマスタ３ｃがウェイクアップ要因により最初にウェイクアップして、ウェイクアップ信号を送信したとしても、結果は同じである。
【００８１】
また、サブマスタ３ｃは、マスタ３ａがクロック信号の送信を開始したことを検出した場合には、クロック信号及びヘッダの送信を停止する。マスタ３ａがクロック信号の送信を開始したことは、例えば、バス５に送信した信号レベルとバス５から受信した信号レベルとの不一致により検出することができる。
【００８２】
＜実施形態の効果＞
この通信システム１によれば、サブマスタ３ｃを備えるため、マスタ３ａが故障しても、サブマスタ３ｃがマスタ３ａに代わってクロック信号の送信とヘッダ情報の送信とを実施することにより、通信への影響を最低限に抑えることができる。そして、サブマスタ３ｃは、マスタ３ａが正常の場合に送信するヘッダの全てではなく、その全てのヘッダのうち、重要フレームヘッダとしてメモリ４９（詳しくはメモリ４９内の重要フレームリスト）に記憶されているヘッダだけを、マスタ３ａに代わって送信する。よって、マスタ３ａの故障による通信への影響を最小限にすることと、マスタ３ａの代役をするサブマスタ３ｃに必要な処理能力を低減することとを、両立させることができる。
【００８３】
また、サブマスタ３ｃの信号処理部４１は、マスタ３ａが正常な場合に、図６の学習処理を行うことにより、バス５に流れるヘッダ及びレスポンスを監視し、同じヘッダに対するレスポンス内のカウンタ情報が更新されている場合に、そのヘッダを重要フレームヘッダとしてメモリ４９に記憶している。レスポンス内のカウンタ情報が更新されるフレームは、そのフレームを構成する「ＤＡＴＡ」が受け側に伝わらなかった場合に、制御に対する影響が大きくなるフレームであり、重要度が高いフレームと考えられるからである。
【００８４】
このため、マスタ３ａに代わってサブマスタ３ｃが送信すべき重要フレームヘッダを、通信システム１の開発時に予め決めておく必要がない。サブマスタ３ｃは、重要フレームヘッダを動的に学習して適切に選択することができるからである。
【００８５】
また、サブマスタ３ｃの信号処理部４１は、クロック送信及びヘッダ送信の代行をしている場合に、図９のスリープ制御処理を行う。このため、マスタ３ａが異常の場合でも、スレーブ３ｂをスリープモードにすることができ、もちろんサブマスタ３ｃ自身もスリープモードに遷移することができる。よって、バッテリ上がりを防止することができる。
【００８６】
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されることなく、種々の形態を採り得る。また、数値も一例であり他の値でも良い。例えば、上記実施形態における１つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を１つの構成要素に統合させたりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を省略してもよい。なお、特許請求の範囲に記載した文言によって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。また、上述した通信システム１及びサブマスタ３ｃの他、サブマスタ３ｃとしてコンピュータを機能させるためのプログラム、このプログラムを記録した媒体、通信復旧方法など、種々の形態で本発明を実現することもできる。
【符号の説明】
【００８７】
１…通信システム、３…ノード、３ａ…マスタノード、３ｂ，３ｃ…スレーブノード、３ｃ…スレーブノードのうちの１つであるサブマスタノード、５…バス、４１…信号処理部、４９…メモリ
【図１】
0006332040.tif 000002
【図２】
0006332040.tif 000003
【図３】
0006332040.tif 000004
【図４】
0006332040.tif 000005
【図５】
0006332040.tif 000006
【図６】
0006332040.tif 000007
【図７】
0006332040.tif 000008
【図８】
0006332040.tif 000009
【図９】
0006332040.tif 000010
【図１０】
0006332040.tif 000011