(57)【要約】【課題】従来よりも低コストで構成可能であり、低消費電力で通信を行うことができる通信システムを提供する。【解決手段】マスタ１と複数のスレーブ２とが通信用配線３を介してリング状に接続され調歩同期方式により通信を行うもので、各ノードを通信用配線３に対してデータの送受信が双方向に可能となるように構成し、マスタ１とスレーブ２との間で行う通常モードでの通信は一方向で行う。リング状のネットワークトポロジを採用することで通信システムを低コストで構成でき、調歩同期方式を採用することで各ノードが省電力で通信を行うことができる。非通常モードにおいて、各ノードは双方向通信が可能であり、このため、何れかのノードに故障が発生した場合は、通信方向を変化させてマスタ１とスレーブ２とが通信を継続することが可能となる。【選択図】図１
2015149541.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のマスタノードと１つ以上のスレーブノードとが通信用配線を介してリング状に接続され、前記マスタノードと前記スレーブノードとの間で調歩同期方式により通信を行うことを特徴とする通信システム。
【請求項２】
前記各ノードは、前記通信用配線に対してデータの送受信が双方向に可能となるように構成されており、
前記マスタノードと前記スレーブノードとの間で行う通信には、少なくとも、通常の通信である通常モードと、前記通常の通信以外の目的で通信する非通常モードとがあり、
前記通常モードでの通信は、一方向で行うことを特徴とする請求項１記載の通信システム。
【請求項３】
前記マスタノードが１つに対して、前記スレーブノードが複数接続されており、
前記非通常モードの１つは、前記スレーブノードの機能が正常か否かをチェックする目的で通信する故障検出モードであり、
前記マスタノードは、前記通常モードにおいて、コマンドを送信した後、所定期間内に前記スレーブノードからのレスポンス又はコマンドを受信せずに、少なくとも１回以上タイムアウトすると、前記故障検出モードにおける通信を開始することを特徴とする請求項２記載の通信システム。
【請求項４】
前記マスタノードは、前記故障検出モードにおいて、各スレーブノードにレスポンスを返信させる故障検出コマンドを送信し、
各スレーブノードは、前記故障検出コマンドを受信すると、前記マスタノードに対するレスポンス又はコマンドを、前記故障検出コマンドを受信した通信用配線側に送信し、
前記マスタノードは、前記故障検出コマンドの送信に対して最初にレスポンス又はコマンドを受信せずに、少なくとも１回以上タイムアウトしたスレーブノードに故障が発生していると判定することを特徴とする請求項３記載の通信システム。
【請求項５】
前記マスタノードは、故障が発生しているスレーブノード（以下、故障ノードと称す）を特定すると、通信を前記非通常モードの１つである故障回避モードに切り替え、
前記故障回避モードでは、前記マスタノードは、前記通常モードでの通信で使用するコマンドを故障回避コマンドとして送信すると共に、
自身から一方向に前記故障ノードより１つ手前側に接続されているスレーブノードまでは、前記故障回避コマンドを前記一方向側に送信し、また、自身から他方向に前記故障ノードより１つ手前側に接続されているスレーブノードまでは、前記故障回避コマンドを前記他方向側に送信し、
前記故障回避コマンドを受信したスレーブノードは、当該コマンドに対するレスポンス又はコマンドを、前記コマンドを受信した通信用配線側に送信することを特徴とする請求項４記載の通信システム。
【請求項６】
前記マスタノードが１つに対して、前記スレーブノードが複数接続されており、
前記非通常モードの１つは、前記通信用配線上に接続されているスレーブノードの数を判定する目的で通信するノード数検出モードであり、
前記マスタノードは、前記ノード数検出モードにおいて、各スレーブノードにレスポンスを返信させるノード数検出コマンドを送信し、
各スレーブノードは、前記ノード数検出コマンドを受信すると、前記マスタノードに対するレスポンス又はコマンドを送信し、
前記マスタノードは、前記ノード数検出コマンドの送信に対するレスポンスを受信しなかったという結果を得るとスレーブノードの数を判定することを特徴とする請求項２から５の何れか一項に記載の通信システム。
【請求項７】
前記マスタノードは、前記通常モードにおける通信の方向を、所定の条件が成立したタイミングで逆方向に切り換えることを特徴とする請求項２から６の何れか一項に記載の通信システム。
【請求項８】
前記マスタノードは、現在の通常モードにおける通信の方向を記憶しており、次回に電源が投入されると、前記通信の方向を切り換えることを特徴とする請求項７記載の通信システム。
【請求項９】
前記マスタノードは、現在の通常モードにおける通信の方向を記憶しており、自身がリセットされると、前記通信の方向を切り換えることを特徴とする請求項７又は８記載の通信システム。
【請求項１０】
前記マスタノードは、前記通常モードにおけるコマンドの送信回数をカウントし、前記送信回数が所定値に達すると、前記通信の方向を切り換えることを特徴とする請求項７から９の何れか一項に記載の通信システム。
【請求項１１】
前記マスタノードは、所定の条件が成立すると、他のスレーブノードを指定してマスタ権を移行するためのマスタ移行コマンドを送信して、自身はスレーブノードとなるように機能を切り替え、
前記マスタ移行コマンドにより指定されたスレーブノードは、前記コマンドを受信すると、自身をマスタノードとするように機能を切り替えることを特徴とする請求項２から１０の何れか一項に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つ以上のマスタノードと１つ以上のスレーブノードとが通信用配線を介してリング状に接続され、前記マスタノードと前記スレーブノードとの間で通信を行う通信システムに関する。
【背景技術】
【０００２】
近年、自動車における情報化の進展により、車両にはより多くのＥＣＵ(Electric Control Unit)及びセンサ・アクチュエータが搭載されるようになっている。これに伴うワイヤハーネスの増加により、ＥＣＵ間相互及びＥＣＵ−センサ・アクチュエータ間、センサ・アクチュエータ相互間の信号線を通信化し、ワイヤハーネスを削減する要求がある。現在、これらの要求を満たす通信方式としてＣＡＮ（登録商標）やＬＩＮ（登録商標）といったプロトコルが用いられているが、通信速度が０．５Ｍｂｐｓ以下と低速であり、高速な通信の需要に応えることができない。この理由は、バス型の通信トポロジを採用しているため寄生容量や反射の影響が大きく、通信速度が高速になると信号波形が歪んでしまうからである。
【０００３】
寄生容量や反射の影響を最小限にするには配線の分岐をなくす必要がある。そのため、複数のノード間で高速な通信を行うためには、１対１の構成を組み合わせたトポロジを採用する必要がある。このような通信形態の１つとして、複数の通信ノードを数珠繋ぎにして環状のトポロジをなすリング型がある。リング型では交換機が不要であることから、スター型よりもコストを低下させることができ、また、送信元にデータが戻ってくるため、受信確認が容易であるというメリットがある。
【０００４】
このトポロジの例として、Serial WireRingがある（非特許文献１参照）。Serial WireRingでは、１つのマスタノードと複数のスレーブノードとが環状に接続されており、スレーブ側がＣＤＲ（Clock Data Recovery）を行うことからクロック線を設けず通信を行うことができる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Serial WireRing-High-Speed Interchip Interface，Thorsten Huck,Andreas Rohatschek,Dieter Thoss,and Stoyan Todorov,Robert Bosh GmbH,SAE International,Published 04/16/2012
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、Serial WireRingでは常にＣＤＲにより同期をとるため、通信用配線上に常に信号が存在する必要があり、消費電力が大きくなってしまう。
本発明は上記事情に鑑みてなされたものであり、その目的は、従来よりも低コストで構成可能であり、低消費電力で通信を行うことができる通信システムを提供することにある。
【課題を解決するための手段】
【０００７】
請求項１記載の通信システムによれば、１つ以上のマスタノードと１つ以上のスレーブノードとが通信用配線を介してリング状に接続され、マスタノードとスレーブノードとの間で調歩同期方式により通信を行う。すなわち、リング状のネットワークトポロジを採用することでシステムを低コストで構成でき、調歩同期方式を採用することで各ノードが省電力で通信を行うことができる。
【０００８】
請求項２記載の通信システムによれば、各ノードは、通信用配線に対してデータの送受信が双方向に可能となるように構成されている。そして、マスタノードとスレーブノードとの間で行う通信には、少なくとも通常の通信である通常モードと通常の通信以外の目的で通信する非通常モードとがあり、通常モードでの通信は一方向で行う。非通常モードでの通信は双方向に行うことが可能であり、この非通信モードには、故障検出モードと故障回避モードといったモードを含む。これにより、例えば何れかのノードに故障が発生した場合は非通常モードにて双方向に通信を行い、マスタノードとスレーブノードとが通信を継続することが可能となる。
【０００９】
請求項３記載の通信システムによれば、非通常モードの１つに、スレーブノードの機能が正常か否かをチェックする目的で通信する故障検出モードがあり、マスタノードは、通常モードでコマンドを送信した後、所定期間内に前記スレーブノードからのレスポンス又はコマンドを受信せずに、１回以上タイムアウトすると、故障検出モードにおける通信を開始する。すなわちこの場合、何れかのスレーブノードに故障が発生していると考えられるので、マスタノードは故障検出モードでの通信を開始して故障が発生しているスレーブノードを特定する。
【００１０】
請求項４記載の通信システムによれば、マスタノードは故障検出モードにおいて、各スレーブノードにレスポンスを返信させるため故障検出コマンドを送信する。各スレーブノードは、それぞれ故障検出コマンドを受信すると、マスタノードに対するレスポンス又はコマンドを、故障検出コマンドを受信した通信用配線側に送信する。そして、マスタノードは、故障検出コマンドの送信に対して最初にレスポンス又はコマンドを受信せずに、１回以上タイムアウトしたスレーブノードに故障が発生していると判定する。これにより、マスタノードは故障が発生しているスレーブノードを特定できる。
【００１１】
請求項５記載の通信システムによれば、マスタノードは、故障が発生しているスレーブノード（故障ノード）を特定すると、非通常モードの１つである故障回避モードに切り替える。故障回避モードでは、マスタノードは、通常モードでの通信で使用するコマンドを故障回避コマンドとして送信すると共に、自身から一方向に故障ノードより１つ手前側に接続されているスレーブノードまでは、故障回避コマンドを前記一方向側に送信する。また、自身から他方向に故障ノードより１つ手前側に接続されているスレーブノードまでは、故障回避コマンドを前記他方向側に送信する。そして、故障回避コマンドを受信したスレーブノードは、当該コマンドに対するレスポンス又はコマンドを、コマンドを受信した通信用配線側に送信する。
【００１２】
これにより、リング状のネットワークトポロジにおいて何れかのスレーブノードに故障が発生しても、マスタノードは、その故障ノードの両側に位置する各スレーブノードまで各方向より通信を行うことができる。したがって、故障ノードを回避して通信を継続することができる。
【図面の簡単な説明】
【００１３】
【図１】第１実施形態であり、通信システムの構成を示す図
【図２】通信システムを車載カメラに適用した場合を示す図
【図３】通信ノードの構成例を示す機能ブロック図
【図４】通常の通信において、コマンドを受信したスレーブがレスポンスを送信する一例を示す図
【図５】図４と同じケースを異なる形態で表した図
【図６】通信フレームの一構成例を示す図
【図７】スレーブ側の動作フローチャート
【図８】スレーブＸに故障が発生した場合の図４相当図
【図９】非通常モードのうち、故障検出モードの動作例（その１）を示す図５相当図
【図１０】非通常モードのうち、故障検出モードの動作例（その２）を示す図５相当図
【図１１】非通常モードのうち、故障回避モードで通信を行う場合を示す図４相当図
【図１２】図１１と同じケースを異なる形態で表した図
【図１３】変形例を示す図７相当図
【図１４】２つのノード間で受信確認を行う処理手順を示すシーケンス図
【図１５】第２実施形態を示す図５相当図
【図１６】第３実施形態を示す（ａ）図１相当図、（ｂ）図５相当図
【図１７】マスタ、スレーブ間の通信処理手順を示すシーケンス図
【図１８】第４実施形態を示す図１相当図（その１）
【図１９】図１相当図（その２）
【図２０】ノードＸ，Ｙ間の通信処理手順を示すシーケンス図
【発明を実施するための形態】
【００１４】
（第１実施形態）
図１に示すように、本実施形態の通信システムは、例えば１つのマスタノード１と、複数のスレーブノード２（１，２，…，Ｎ）とを、通信用配線３によりリング状に接続して（デイジーチェーン接続）構成されている。このような通信システムの具体的な適用例は、例えば図２に示すように、車両に搭載した複数のカメラ（スレーブノード）で車両周辺の画像を撮像し、その画像データを車載ＬＡＮ等により伝送して車室内に配置されている例えばＬＣＤ等のディスプレイ（マスタノード）に表示させるようなシステムである。
【００１５】
各通信ノードは、図３に示すように、演算部４，通信制御部５，受信器６及び７，送信器８及び９を備えており、リング状の通信ネットワークにおいて双方向通信が可能に構成されている。受信器６及送信器８は通信用配線３Ｕ側に接続され、受信器７及送信器９は通信用配線３Ｄ側に接続されている。演算部４は例えばマイクロコンピュータで構成され、当該ノードがマスタであれば、各スレーブに対して送信するコマンドを生成し、通信制御部５を介して通信用配線３に送信する。また、送信したコマンドに対応してスレーブが返信したレスポンスを、通信制御部５を介して受信する。
【００１６】
一方、当該ノードがスレーブであれば、演算部４は受信したコマンドに応じて必要な演算を行い、レスポンスを生成すると通信制御部５を介して送信する。通信制御部５は、演算が不要なコマンドを演算部４に受け渡すことなく処理する。
【００１７】
受信器６は、当該ノードの上流側に位置するノードより通信用配線３Ｕを介して送信されたデータを受信し、送信器８は通信用配線３Ｕを介して上流側に位置するノードにデータを送信する。また、受信器７は、当該ノードの下流側に位置するノードより通信用配線３Ｄを介して送信されたデータを受信し、送信器９は通信用配線３Ｄを介して下流側に位置するノードにデータを送信する。通信制御部５は、受信器６及び７，送信器８及び９を介したデータパスの切り換えを制御する。
【００１８】
次に、本実施形態の作用について説明する。通常の通信を行う場合（通常モード）、図４及び図５に示すように、マスタ１は、常に一方向にコマンドを送信する。例えば、スレーブ２（Ｘ，Ｎ）に対してレスポンスを要求するコマンドＡを、スレーブ２（１）方向に送信する。スレーブ２（１）は、このコマンドＡを受信器６で受信し、自身宛てのコマンドでないと判断すると、コマンドＡをそのまま送信器９より下流側に送信する。
【００１９】
スレーブ２（Ｘ）がコマンドＡを同様に受信すると、自身宛てのコマンドであるため、コマンドＡにレスポンスＸを付加して下流側に送信する。また、スレーブ２（Ｎ）がコマンドＡを受信すると、やはり自身宛てのコマンドであるため、レスポンスＸが付加されたコマンドＡに、更にレスポンスＮを付加して下流側のマスタ１に送信する。マスタ１は、レスポンスＮ及びＸが付加されたコマンドＡを受信し、レスポンスＮ及びＸを正しく受信したことを確認すると次のコマンドを送信する。
【００２０】
この場合に伝送される通信フレームは、調歩同期方式で通信を行うため、例えば図６（ａ）に示すように、スタートパターン，ヘッダ，コマンド，ＣＲＣ，ストップパターンで構成されている。
スタートパターン：通信フレームの開始を示すビット列。受信ノードはスタート
パターンを利用して通信の同期をとる（プリアンブル）。
ヘッダ：通信フレームがコマンド，レスポンスの何れなのかを示すビット列。
コマンド：コマンドを示すビット列。送信先スレーブのアドレスも含まれる。
ＣＲＣ：Cyclic Redundancy Check，誤り検出用コード。
ストップパターン：通信フレームの終了を示すビット列。
また、スタートパターンの前に、ビット同期を行うため、データ値「０，１」を繰り返す（０１０１０１…）プリアンブルを別途配置しても良い（図６（ｄ）参照）。
【００２１】
尚、スレーブ２がレスポンスを返す場合は、図６（ｂ）に示すようにコマンドの後にレスポンスを挿入する場合と、図６（ｃ）に示すようにコマンドを削除してレスポンスのみ送信する場合とがある。尚、前者の場合、ヘッダは「コマンド＋レスポンス」を示している。
【００２２】
スレーブ２は、図７に示すように、コマンド又はレスポンスを受信するまで待機しており（Ｓ１）、コマンドを受信するとＣＲＣに基づき受信結果が正しいか否かを判断する（Ｓ２）。受信結果が正しければ（ＹＥＳ）そのコマンドに基づき実行すべき動作があるか否かを判断し（Ｓ３）、受信結果が正しくなければ（ＮＯ）受信できなかったことをマスタ１に通知するレスポンスを受信信号が向かう方向へ送信する（Ｓ１０）。
【００２３】
ステップＳ３において、自身が当該コマンドの内容を実行すべきであれば（ＹＥＳ）その内容を実行し（Ｓ４）、当該コマンドの内容を実行する必要が無ければ（ＮＯ）受信信号（コマンド又はレスポンス）が向う方向へ（下流側に位置するノードへ）受信信号を送信する（Ｓ１１）。ステップＳ３では受信信号にエラーフラグが含まれるかどうかのチェックも行われ、エラーフラグが含まれる場合には、受信信号（コマンド又はレスポンス）が向う方向へ（下流側に位置するノードへ）受信信号を送信する（Ｓ１１）。
【００２４】
ステップＳ４を実行すると、自身が送信する通信フレームにレスポンスを追加する必要があるか否かを判断し（Ｓ５）、追加する必要があれば（ＹＥＳ）その送信方向を受信信号の内容に応じて判断する（Ｓ６）。そして、受信信号が来た方向であればレスポンスを送信すると共に（Ｓ７）、受信信号自体は、受信信号が向う方向へ送信する（Ｓ８）。一方、ステップＳ６において、送信方向が受信信号が向かう方向であれば当該方向にコマンド及びレスポンスを送信する（Ｓ１２）。その後、ステップＳ１に戻る。
【００２５】
図４に示す通常の通信を行っている場合に、例えばスレーブ２（Ｘ）に故障が発生したものとする。すると、図８に示すように、マスタ１が送信したコマンドを含む通信フレームはスレーブ２（Ｘ）において途絶するため、レスポンスはマスタ１に返信されない。このとき、マスタ１では、コマンドの送信に対するレスポンスの返信が一定期間内になかったことで「タイムアウト」となり、スレーブ２の何れかに故障が発生したことを認識できる。
【００２６】
タイムアウトは通信エラーでも同様に発生するため、「タイムアウト」の回数が少ない場合、マスタ１は通信エラーと認識し、同じ信号を再送する。「タイムアウト」の回数が規定値を超えた場合、マスタ１は非通常モードの１つである故障検出モードに移行し、スレーブ２の「故障箇所診断」を開始する。「故障箇所診断」は、図９に示すように、マスタ１が各スレーブ２（１〜Ｎ）を個別に指定して、レスポンスを返信させるための故障検出コマンドＢ（１〜Ｎ）を送信して行う。例えばコマンドＢ１はスレーブ２（１）にレスポンス（１）を返信させるコマンドであり、コマンドＢ２はスレーブ２（２）にレスポンス（２）を返信させるコマンドである。この場合、スレーブ２がレスポンスを返信する方向はコマンド（受信信号）の来た方向（上流側）である（Ｓ７）。また、自身宛てのコマンドＢを受信したスレーブ２は、そのコマンドＢを含む通信フレームを自身の下流側には流さない。
【００２７】
このように、マスタ１がコマンドＢを順次送信すると、コマンドＢＸの送信に対してはレスポンスＸが返らずタイムアウトになり、マスタ１はスレーブ２（Ｘ）に故障が発生していることを特定できる。但し、この場合厳密には、スレーブ２（Ｘ）に故障が発生している場合と、スレーブ２（Ｘ−１）とスレーブ２（Ｘ）との間の通信用配線３が断線等している場合とが考えられる。そこで、マスタ１が反対方向からもコマンドＢ，を順次送信，或いは当初からコマンドＢＸを送信し、レスポンスＸが返信されなければスレーブ２（Ｘ）の故障、レスポンスＸが返信されれば上記通信用配線３の故障と切り分けることができる。
【００２８】
また、「故障箇所診断」は、図１０に示すように故障検出コマンドＣを用いて行うことができる。コマンドＣは、当該コマンドを受信したスレーブ２が何れもレスポンスを返すコマンドである。スレーブ２（１）は、コマンドＣを受信すると、そのコマンドＣを次のスレーブ２（２）に送信し、レスポンス２（１）をマスタ１側に送信する。スレーブ２（２）も、コマンドＣを受信すると、そのコマンドＣを次のスレーブ２（３）に送信し、レスポンス２（２）を、スレーブ２（１）を介してマスタ１側に送信する。このようにコマンドＣを用いれば、マスタ１側の処理負担が軽減される。
【００２９】
マスタ１は、上記のようにしてスレーブ２の故障発生箇所を特定すると、非通常モードの１つである故障回避モードに移行し、スレーブ２（Ｘ）を回避して他のスレーブ２との通信を行う。図１１に示すように、例えばマスタ１から見て、故障したスレーブ２（Ｘ）の１つ手前側にあるスレーブ２（Ｘ−１）にレスポンスを要求する場合は「故障回避モード」のコマンドＤ（故障回避コマンド）を送信する。スレーブ２（１）からスレーブ２（Ｘ−２）（図示せず）の各ノードは、コマンドＤをそれぞれ下流側のノードに送信する。
【００３０】
そして、スレーブ２（Ｘ−１）がコマンドＤを受信すると、コマンドＤにレスポンス（Ｘ−１）を付加して、スレーブ２（Ｘ−２）側に送信する。スレーブ２（Ｘ−２）は、レスポンス（Ｘ−１）を受信すると、そのまま上流側のスレーブ２（Ｘ−３）側に受信した信号を変更を加えず送信する。以上のように各スレーブ２が順次レスポンス（Ｘ−１）を上流側に送信することで、最終的にマスタ１がレスポンス（Ｘ−１）を受信する（図１１，図１２参照）。
【００３１】
また、マスタ１は、スレーブ２（Ｘ＋１）にレスポンスを要求する場合は、図９に関し故障原因の切り分けについて述べた場合と同様に、「故障回避モード」のコマンドを逆方向から送信し、レスポンス（Ｘ＋１）を遡行させて受信する。これにより、マスタ１は、故障したスレーブ２（Ｘ）を除く全てのスレーブ２からレスポンスを得ることができる。
【００３２】
以上のように本実施形態によれば、マスタ１と複数のスレーブ２とが通信用配線３を介してリング状に接続され調歩同期方式により通信を行うもので、各ノードを通信用配線３に対してデータの送受信が双方向に可能となるように構成し、マスタ１とスレーブ２との間で行う通常モードでの通信は一方向で行う。すなわち、リング状のネットワークトポロジを採用することで通信システムを低コストで構成でき、調歩同期方式を採用することで各ノードが省電力で通信を行うことができる。そして、各ノードは双方向通信が可能であるから、例えば何れかのノードに故障が発生した場合は、通信方向を変化させてマスタ１とスレーブ２とが通信を継続することが可能になる。
【００３３】
そして、マスタ１は、通常モードでコマンドＡを送信した後、所定期間内に対応するスレーブ２からのレスポンスを受信せずに、少なくとも１回以上タイムアウトすると故障箇所を診断するための通信を開始して、故障が発生しているスレーブ２を特定する。この場合、マスタ１は故障検出モードにおいて、自身の次に接続されているスレーブ２（１）から始めて、順次個別のスレーブ２を指定してレスポンスを返信させる故障検出コマンドＢを順次送信する。または、マスタ１は、全てのスレーブ２に順次コマンドを受信させて順次レスポンスを返信させる故障検出コマンドＣを送信する。
【００３４】
各スレーブ２は、それぞれ自身が指定されたコマンドＢ又はコマンドＣを受信すると、マスタ１に対するレスポンスを、コマンドＢ又はＣを受信した通信用配線３側に送信する。そして、マスタ１は、コマンドＢ又はＣの送信に対して最初にタイムアウトしたスレーブ２に故障が発生していると判定する。これにより、マスタ１は故障が発生しているスレーブ２を特定できる。
【００３５】
更に、マスタ１は、故障が発生しているスレーブ２（故障ノード）を特定すると故障回避モードに切り替え、通常モードでの通信で使用するコマンドを故障回避コマンドＤとして送信すると共に、自身から一方向に故障ノード２（Ｘ）より１つ手前側に接続されているスレーブ２（Ｘ−１）まではコマンドＤを一方向側に送信する。また、自身から他方向に故障ノード２（Ｘ）より１つ手前側に接続されているスレーブ２（Ｘ＋１）までは、コマンドＤを他方向側に送信する。
【００３６】
そして、コマンドＤを受信したスレーブ２は、当該コマンドＤに対するレスポンスを、コマンドＤを受信した側の通信用配線３に送信する。これにより、リング状のネットワークトポロジにおいて何れかのスレーブ２に故障が発生しても、マスタ１は、その故障ノードの両側に位置する各スレーブ２まで各方向より通信を行うことができる。したがって、故障ノードを回避して通信を継続することができる。
【００３７】
ところで、通信ノード数が多いシステムで上記のような故障検出を行う場合、マスタ１がタイムアウトするまでの時間が大きくなることから、再送にかかる時間がかかってしまう。そこで、マスタ１がタイムアウトする頻度を減らすため、各ノード間で受信確認を用いた再送を行ってもよい。この場合のスレーブ２の動作は以下のようになる。
【００３８】
スレーブ２は、図１３に示すようにステップＳ３において「ＮＯ」と判断すると、自身の１つ前のノードに通信フレームの再送を要求する（Ｓ２０）。また、ステップＳ８，Ｓ１１及びＳ１２を実行するとステップＳ９に移行して受信確認を受領するまで待機し、受信確認を受領するとステップＳ１に戻る。また、所定のタイムアウト期間が経過するまで受信確認を受領しなかった場合、又は他のノードから再送要求があった場合は通信フレームを再送信してから（Ｓ１３）ステップＳ９に戻る。
【００３９】
ここで、ステップＳ９の処理につき図１４を参照して説明する。送信側のノードＸから受信側のノードＹに通信信号（コマンド，レスポンス，コマンド＋レスポンス）を送信すると、ノードＹは、前述のようにＣＲＣをチェックし、受信内容に問題が無ければノードＸに受信確認を送信する。一方、受信内容に問題があれば再送要求を送信する。ノードＸは、受信確認を受信すると送信完了とみなして待機状態に移行する。
【００４０】
また、ノードＸが一定時間内に受信確認を受信しなかった場合はノードXがタイムアウトとなり、ノードＸは上記通信信号を再送信する。更に、ノードＸが再送要求を受信した場合も、通信信号を再送信する。尚、ノードXのタイムアウト時間Ｔoutは、以下を満たす必要がある。
Ｔout＝Ｔ１×２＋Ｔ２＋Ｔ３
Ｔ１：ノードＸ，Ｙ間の通信に要する遅延時間
Ｔ２：ノードＸ，Ｙが通信信号を送信するのにかかる最大時間
Ｔ３：ノードＹが信号を正しく受信できたことを確認し、受信確認を送信するまでの時間
また、再送を行ったことにより、同じコマンドを複数回受信する可能性がある。これを回避するために、コマンドに再送回数を付加してもよい。
【００４１】
（第２実施形態）
以下、第１実施形態と同一部分には同一符号を付して説明を省略し、異なる部分について説明する。第２実施形態では、マスタ１が、通信用配線３に接続されているスレーブ２の数を予め把握していない場合に、スレーブ２の数を判別するため「ノード数検出モード（非通常モード）」においてコマンドＥを送信する。尚、この手法は、実質的に図９に示した故障箇所診断と同じものである。
【００４２】
すなわち図１５に示すように、マスタ１が各スレーブ２（１〜Ｎ）を個別に指定して、レスポンスを返信させるためのノード数検出コマンドＥ（１〜Ｎ）を送信する。例えばコマンドＥ１はスレーブ２（１）にレスポンス（１）を返信させるコマンドであり、コマンドＥ２はスレーブ２（２）にレスポンス（２）を返信させるコマンドである。
【００４３】
スレーブ２の数がＮであれば、コマンドＥ（Ｎ＋１）を送信してもレスポンス（Ｎ＋１）を返すスレーブ２が無いので、マスタ１はレスポンス（Ｎ＋１）が付加されていないコマンドＥ（Ｎ＋１）の通信フレームを受信する。したがって、マスタ１は、例えばコマンドＥの送信回数をカウントすればスレーブ２の数がＮであることを判別できる。尚この場合、コマンドＢ，Ｃを用いて同じ様に判別を行っても良い。
【００４４】
以上のように、第２実施形態によれば、マスタ１は、ノード数検出モードにおいて、自身の次に接続されているスレーブ２（１）から始めて、順次個別のスレーブ２を指定してレスポンスを返信させるコマンドＥを順次送信する。各スレーブ２は、それぞれ自身が指定されたコマンドＥを受信すると、マスタ１に対するレスポンスを送信し、マスタ１は、コマンドＥの送信に対して、レスポンスが付加されていない通信フレームを受信すると（レスポンスを受信しなかったという結果を得ると）、スレーブ２の数を判定する。したがって、通信用配線３に接続されているスレーブ２の数が不明である場合でも、マスタ１は自動的にスレーブ２の数を判定できる。
【００４５】
（第３実施形態）
第３実施形態では、マスタ１は、通常モードにおけるネットワーク上の通信方向を所定の条件が成立（例えば、電源投入時やリセット解除後，コマンドの送信回数が所定値等）すると切り換える（図１６（方向Ａ，Ｂ）参照）。このため、スレーブ２にコマンドを送信する。例えば図１７に示すように、現在の通信方向が「Ａ」である場合、マスタ１は、その情報を不揮発性のメモリ（例えばフラッシュＲＯＭやＥＥＰＲＯＭ等）に記憶しておく。そして、例えばリセット動作が行われると、マスタ１は通信方向を切換えるためのコマンドＦを通信方向Ａでスレーブ２に送信する。
【００４６】
スレーブ２は、コマンドＦを受信すると、自身のレスポンスを付加して下流側のスレーブ２に送信する。コマンドＦを受信したスレーブ２は、以降の通信方向が「Ａ，Ｂ」の何れでもコマンドを受信可能となる状態（双方向受信動作）で待機する。全てのスレーブ２によりレスポンスが付加されたコマンドＦの通信フレームを受信すると、マスタ１は、通常モードのコマンド（例えばコマンドＡ）を通信方向Ｂで送信する。そして、スレーブ２が前記コマンドを通信方向Ｂで受信すると、それ以降の通信方向が「Ｂ」に確定する。
【００４７】
尚、スレーブ２は、電源投入時やリセット解除後には、やはり上記の「双方向受信動作」で待機し、マスタ１が最初にコマンドを送信した方向で同様に通信方向を確定させる。また、マスタ１は、コマンドＦを送信してから、全てのスレーブ２によりレスポンスが付加されたコマンドＦの通信フレームを受信するまでにタイムアウト時間Ｔ１を設定し、タイムアウト時間Ｔ１内に前記通信フレームを受信すれば、通信方向を確定させる動作を行う。タイムアウト時間Ｔ１内に前記通信フレームを受信できなければ、コマンドＦを再送信する。
ここで、タイムアウト時間Ｔ１は、少なくとも、マスタ１がコマンドＦを送信してから、前記通信フレームを受信するまでに要する時間Ｔ２よりも長く設定する必要がある（Ｔ１＞Ｔ２）。
【００４８】
以上のように第３実施形態によれば、マスタ１は、通常モードにおける通信の方向を、所定の条件が成立したタイミングで逆方向に切り換える。例えば、現在の通常モードにおける通信の方向を記憶して、次回に電源が投入されたり、自身がリセットされたり、通常モードにおけるコマンドの送信回数をカウントし、前記送信回数が所定値に達すると通信方向を切り換えるようにした。これにより、マスタ１及びスレーブ２が双方の通信機能を極力均等に使用するようにして、ノードの寿命を延ばすことができる。
【００４９】
（第４実施形態）
第４実施形態は、図１８，図１９に示すように、マスタ１とスレーブ２とが入れ替わる場合を示す。例えば、それまでノードＸがマスタ１であったものが、マスタ権をそれまでスレーブ２（Ｙ）であったノードＹに譲渡することで、ノードＹがマスタ１に、ノードＸがスレーブ２（Ｘ）になる。前提として、これらのノードＸ，Ｙは、マスタとしての機能，スレーブとして機能の何れも実行可能となるようにソフトウェア及びハードウェアが予め用意されている。
【００５０】
図２０に示すように、最初に、ノードＹがマスタ権のリクエストをノードＸ（現在のマスタ１）に送信する場合と、上記のリクエストなしに、ノードＸがノードＹにマスタ権を譲渡する場合とがある。ノードＹがマスタ権のリクエストを送信する場合は、例えば通信が行われていない期間に、ノードＹが上記リクエストを自身の下流側に位置するスレーブ２に送信してマスタ１まで転送させるなどする。
【００５１】
ノードＸが、ノードＹをマスタに指定するためのマスタ移行コマンドＧを送信し、ノードＹがコマンドＧを受信すると、レスポンスＹ（コマンドＧの受領確認及びノードＹのマスタ交代受諾）を付加してノードＸに送信する。ノードＸは、レスポンスＹが付加されたコマンドＧの通信フレームを受信すると、それをそのままスレーブ２（１）側に流す。そして、自身がレスポンスＹを付加して送信した通信フレームがネットワークを１周してノードＹがそれを受信した段階で、ノードＹは自身の機能をマスタに切り換える。
【００５２】
尚、ここでも、ノードＹが上記通信フレームを受信するまでにタイムアウト時間を設定し、その時間を超えてタイムアウトしたり、別のコマンドを含む通信フレームを受信した場合は、ノードＹはスレーブとしての機能を継続する。そして、上記のようにレスポンスＹを含む通信フレームがネットワークを１周することで、ノードＸ，Ｙ以外のスレーブ２もマスタが交代することを認識できる。
【００５３】
そして、ノードＸは、ノードＹがマスタとして動作し、送信したコマンドを受信した段階でスレーブとして機能する。この場合も、上記コマンドを受信するまでにタイムアウト時間Ｔ３を設定し、その時間Ｔ３を超えてタイムアウトすると、ノードＹがマスタとして機能していないと判断し、ノードＸはマスタとしての機能を継続する。ここで、タイムアウト時間Ｔ３は、ノードＹがマスタとなったスレーブの故障を検出し、故障検出を開始するまでの最大時間Ｔ４と、ノードＹからノードＸまでの最大通信遅延時間Ｔ５との和よりも大きく設定する（Ｔ３＞Ｔ４＋Ｔ５）。
【００５４】
以上のように第４実施形態によれば、マスタノードＸは、所定の条件が成立すると、他のスレーブノードＹを指定してマスタ権を移行するためのマスタ移行コマンドＧを送信して、自身はスレーブノードとなるように機能を切り替え、コマンドＧにより指定されたスレーブノードＹは、コマンドＧを受信すると、自身をマスタノードとするように機能を切り替える。したがって、通信システムが適用されるアプリケーションの種類に応じて、マスタの交代が必要となる場合も対応できる。
【００５５】
本発明は上記した、又は図面に記載した実施形態にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
マスタノードが、１つの通信システムに２つ以上あっても良い。
通信ノードによる通信の方向は、双方に限ることなく一方向であっても良い。
【符号の説明】
【００５６】
図面中、１はマスタノード、２はスレーブノード、３は通信用配線を示す。
【図１】
2015149541.tif 000003
【図２】
2015149541.tif 000004
【図３】
2015149541.tif 000005
【図４】
2015149541.tif 000006
【図５】
2015149541.tif 000007
【図６】
2015149541.tif 000008
【図７】
2015149541.tif 000009
【図８】
2015149541.tif 000010
【図９】
2015149541.tif 000011
【図１０】
2015149541.tif 000012
【図１１】
2015149541.tif 000013
【図１２】
2015149541.tif 000014
【図１３】
2015149541.tif 000015
【図１４】
2015149541.tif 000016
【図１５】
2015149541.tif 000017
【図１６】
2015149541.tif 000018
【図１７】
2015149541.tif 000019
【図１８】
2015149541.tif 000020
【図１９】
2015149541.tif 000021
【図２０】
2015149541.tif 000022