以下に添付図面を参照して、本発明に係る通信装置、復旧方法、復旧プログラム及び画像形成装置の実施の形態を説明する。なお、以下の実施の形態により本発明が限定されるものではない。また、各実施の形態は、内容を矛盾させない範囲で適宜組み合わせることができる。
(実施の形態1)
図1を用いて、実施の形態1に係る通信装置10の構成を説明する。図1は、実施の形態1に係る通信装置10の構成例を示す図である。
図1に示すように、通信装置10は、通信局31、通信局32、通信局33、通信局34及び通信局35を有する。通信装置10が有する各通信局はモジュールに相当する。図1では5つの通信局を有する通信装置10を例に挙げているが、通信局の数は5に限られるものではなく、3以上であればいくつであっても良い。また、各通信局には、番号が割り当てられている。図1の例では、通信局31を通信局(1)、通信局32を通信局(2)、通信局33を通信局(3)、通信局34を通信局(4)、通信局35を通信局(5)として番号が割り当てられている。以下では、かかる番号を「通信局番号」と呼ぶ場合がある。
CPUを有する各通信局は、2線で一対のバスラインを共有して通信を行なう。これは、2線式通信ラインと呼ばれる。2線式通信ラインを形成するバスライン1(CAN_L:Controller Area Network_Low)及びバスライン2(CAN_H:Controller Area Network_High)は、差動信号を伝送する。各通信局が有するCPU41、CPU42、CPU43、CPU44及びCPU45は、通信制御や終端接続の制御を行なう。これらのうち、CPU43は、通信装置10に含まれる通信局全体を管理するメインのCPUである。メインのCPU43を有する通信局33は、「第1の通信局」に対応する。各通信局が有する終端回路51、終端回路52、終端回路53、終端回路54及び終端回路55は、抵抗とスイッチとを有し、各CPUからの信号に応じて終端接続を切り替えることができる。通常状態においては、端に配置された通信局31と通信局35とが終端することになり、終端回路51と終端回路55とで終端がオンされている。また、メインとなる通信局33以外の通信局は、通常のデータ送受信とは別に、正常に動作していることを示す信号を通信局33に対して定期的に送信する。以下では、かかる信号をハートビート信号と呼ぶ場合がある。
次に、図2を用いて、実施の形態1に係る断線故障発生時の通信復旧について説明する。図2は、実施の形態1に係る断線故障発生時の通信復旧の例を説明する図である。
図2では、通信局31と、通信局32との間のCAN_Hで断線故障が発生した場合を例に挙げる。このとき、通信局31の終端回路51は終端接続をオンにしているものの、断線故障のために終端抵抗として機能しなくなる。このため、各通信局間の通信ができない状態となる。そこで、通信局33は、通信局31と通信局32との間で異常が発生したことを検出し、自身の終端回路53のスイッチをオンにすることで終端抵抗として機能させる。これにより、2線式通信ラインのうち通信局31を除く、通信局32〜通信局35において通信が行なえる状態となる。
次に、図3を用いて、実施の形態1に係る通信局33の機能構成を説明する。図3は、実施の形態1に係る通信局33の機能構成例を示すブロック図である。なお、メインの通信局である通信局33以外の通信局においても、同様の機能構成を有していても良い。
図3に示すように、通信局33は、通信制御部61と、記憶部62と、検出部63と、接続制御部64と、出力制御部65と、状態管理部66とを有する。
通信制御部61は、状態管理部66の制御に従い、通信局33と、通信局33とは異なる他の通信局との間の2線式通信ラインを用いた各種通信を制御する。例えば、通信制御部61は、通信装置10に含まれる通信局間でやり取りされる各種データの送受信を制御する。ここで、通信制御部61は、データ送信の際に、記憶部62から取得した送信コマンドを通信方式に則って変換したうえで送信する。また、通信制御部61は、受信したデータを変換したうえで記憶部62に格納する。
詳細には、通信制御部61は、他の通信局全てに対してブロードバンド送信(一斉送信)を行ない、ブロードバンド送信に対する応答を要求する。このほか、通信制御部61は、通常のデータ送受信とは別に、他の通信局から定期的に送信されるハートビート信号の受信を制御する。ハートビート信号の受信に際し、通信制御部61は、通信局33に搭載されたタイマをONにし、ハートビート信号の受信までの時間を計測する。ここで、タイムアウトによりハートビート信号が(所定時間内に)受信できない場合は、上述したブロードバンド送信が行なわれる。なお、他の通信局における通信制御部は、ハートビート信号の定期的な送信を制御することになる。
検出部63は、2線式通信ラインに異常が発生したことを検出する。より具体的には、検出部63は、状態管理部66の制御に従い、記憶部62に記憶された受信データを取得し、2線式通信ラインに異常が発生したことを検出する。詳細には、検出部63は、タイムアウト等によりハートビート信号が所定時間内に受信されない場合に、2線式通信ラインに異常が発生したことを検出する。そして、検出部63は、通信制御部61によってブロードバンド送信が行なわれた後に、何れの通信局からも応答がない場合に、2線式通信ラインにおける断線故障であると検出する。一方、検出部63は、通信局の何れかから応答があれば、断線故障とは別起因による異常であると検出する。
例えば、断線故障とは別起因による異常は、端の通信局である通信局31や通信局35においてソフトリセットが行なわれたことによるものである。ソフトリセットが行なわれていることで、終端接続が一時的にOFFになり、全ての通信局間で通信を行なえずに、ハートビート信号を送信できない状況になっていると考えられる。但し、通信局31や通信局35におけるソフトリセットが完了し、終端接続が再度ONにされることで、全ての通信局間で通信を行なえるようになり、ハートビート信号を送信できる状態に戻る。なお、断線故障とは別起因による異常の発生に対する処理は本実施の形態では割愛する。
接続制御部64は、状態管理部66の制御に従い、2線式通信ラインへの抵抗の接続を制御する。より具体的には、接続制御部64は、検出部63によって2線式通信ラインに断線故障が発生したことが検出された場合に、通信局33が有する終端回路53の終端接続をONにするための信号を出力する。通信局33の終端回路53の終端接続がONにされた場合は、2線式通信ラインのうち通信局31を除く、通信局32〜通信局35において通信が行なえる状態となる。
出力制御部65は、状態管理部66の制御に従い、各種情報の出力を制御する。より具体的には、出力制御部65は、2線式通信ラインに異常が発生したこと、より詳細には、2線式通信ラインに断線故障が発生したこと等の情報を表示装置(例えば、操作パネル等)に出力する。状態管理部66は、上述した各部の状態管理を行なう。
次に、図4を用いて、実施の形態1に係る通信異常検知処理の流れを説明する。図4は、実施の形態1に係る通信異常検知処理の流れの例を示すフローチャートである。図4では、通信装置10が有する通信局のうち、端以外に配置された通信局である通信局33が2線式通信ラインにおける異常を検知する場合を例に挙げる。
図4に示すように、通信局33は、タイマをONにする(ステップS101)。かかるタイマは、他の通信局から送られてくるハートビート信号を受信できているか否かにより、正常に通信を行なえているかを確認するために使用される。そして、通信局33は、ハートビート信号を受信したか否かを判定する(ステップS102)。このとき、通信局33は、ハートビート信号を受信した場合に(ステップS102:Yes)、タイマをリセットする(ステップS103)。タイマリセット後は、ステップS101の処理が再度実行される。一方、通信局33は、ハートビート信号を受信していない場合に(ステップS102:No)、ONにしたタイマをもとにタイムアウトしたか否かを判定する(ステップS104)。
このとき、通信局33は、タイムアウトしていないと判定した場合に(ステップS104:No)、ステップS102の処理を再度実行する。一方、通信局33は、タイムアウトしたと判定した場合に(ステップS104:Yes)、ブロードバンド送信し、他の通信局全てに対して応答を要求する(ステップS105)。そして、通信局33は、1以上の応答信号を受信したか否かを判定する(ステップS106)。このとき、通信局33は、他の通信局からの応答信号が一つも受信できない場合に(ステップS106:No)、断線故障が発生したことを検出し、自身の(メインの)終端回路である終端回路53の終端接続をONにする(ステップS107)。一方、通信局33は、1以上の応答信号を受信できた場合に(ステップS106:Yes)、断線故障とは別起因による異常が発生していることから、これに準ずる異常処理を実行する(ステップS108)。
上述したように、通信局33は、ハートビート信号を受信できたか否かに応じて2線式通信ラインの異常を検出し、ブロードバンド送信に対する応答に応じて2線式通信ラインの断線故障の発生を検出し、自身の終端接続をONにするので、モジュールの配置構成に制約を設けることなく、異常の検出や通信の復旧を実現することができる。
(実施の形態2)
図5を用いて、実施の形態2に係る通信局33の機能構成を説明する。図5は、実施の形態2に係る通信局33の機能構成例を示すブロック図である。なお、図5では、実施の形態1に係る通信局33の機能構成と同様の構成については同一の符号を付し、その詳細な説明を省略する場合がある。
図5に示すように、通信局33は、通信制御部61と、記憶部62と、検出部63aと、接続制御部64と、出力制御部65aと、状態管理部66と、指示部67aとを有する。
検出部63aは、2線式通信ラインにおける異常の発生箇所を特定する。より具体的には、検出部63aは、ブロードバンド送信に対して、何れの通信局から応答が受信されたかを確認し、2線式通信ラインにおける異常の発生箇所を特定する。例えば、検出部63aは、通信制御部61によるブロードバンド送信の後、通信局番号が「2」である通信局32から応答が受信されない場合に、通信局番号「2」である通信局32と、通信局番号「3」である通信局33との間で断線故障が発生したと特定する。ここで、検出部63aは、通信局番号が「2」である通信局32から応答が受信され、通信局番号が「1」である通信局31から応答が受信されない場合に、通信局番号「1」である通信局31と、通信局番号「2」である通信局32との間で断線故障が発生したと特定する。
さらに、検出部63aは、通信局番号「1」である通信局31から応答が受信され、通信局番号が「4」である通信局34から応答が受信されない場合に、通信局番号「3」である通信局33と、通信局番号「4」である通信局34との間で断線故障が発生したと特定する。また、検出部63aは、通信局番号「4」である通信局34から応答が受信され、通信局番号が「5」である通信局35から応答が受信されない場合に、通信局番号「4」である通信局34と、通信局番号「5」である通信局35との間で断線故障が発生したと特定する。なお、検出部63aは、他の通信局の全てから応答信号が受信されている場合、断線故障を起因とした異常ではなく、ソフトリセットや終端不安定による異常であると検出する。
例えば、ソフトリセットによる異常は、通信装置10に含まれる端に配置された通信局でリセットが行なわれたために一時的に終端がOFFになっていたことによるものである。また、例えば、終端不安定による異常は、ソフトの暴走やハード的に終端が接続されていない等の不安定な状況であったり、終端抵抗付近の通信線が断線故障していたりすることによるものである。
上述した断線故障の異常箇所の特定においては、メインの通信局33の通信局番号「3」よりも小さい通信局番号「2」の通信局32からの応答が受信されたか否かをはじめに判定する場合を例に挙げたが、これに限られるものではない。例えば、断線故障の異常箇所の特定では、メインの通信局33の通信局番号「3」よりも大きい通信局番号「4」の通信局34からの応答が受信されたか否かがはじめに判定されても良い。
指示部67aは、他の通信局に対する終端接続を指示する。より具体的には、指示部67aは、検出部63aによる異常箇所の特定後、異常の発生箇所から通信局33に向かって一つ隣に配置された他の通信局に対して、終端接続を指示する。指示部67aによる終端接続の指示は、通信制御部61によって送信制御される。例えば、指示部67aは、検出部63aによって、通信局31と通信局32との間で断線故障が発生したと検出された場合に、通信局32に対して終端接続を指示する。また、指示部67aは、検出部63aによって、通信局34と通信局35との間で断線故障が発生したと検出された場合に、通信局34に対して終端接続を指示する。なお、通信局33は、終端接続の指示対象が通信局33(自身)である場合、既に終端接続されている状態(終端接続ON)であるため、終端接続を維持したままにする。指示部67aによる指示に応じて、通信局間における通信が復旧する。なお、他の通信局に対する終端接続の指示後、接続制御部64は、通信局33が有する終端回路53の終端接続を、ONからOFFに切り替えるための信号を出力する。
出力制御部65aは、状態管理部66の制御に従い、各種情報の出力を制御する。より具体的には、出力制御部65aは、検出部63aによって特定された断線故障の発生箇所をユーザに知らせるために、断線故障の発生箇所に関する情報を表示装置に出力する。
次に、図6を用いて、実施の形態2に係る異常箇所検出処理の流れを説明する。図6は、実施の形態2に係る異常箇所検出処理の流れの例を示すフローチャートである。
図6に示すように、通信局33は、ブロードバンド送信し、他の通信局全てに対して応答を要求する(ステップS201)。ブロードバンド送信後、通信局33は、他の通信局からの応答の受信待ちの状態となる(ステップS202)。そして、通信局33は、通信局番号が「2」である通信局32から応答を受信したか否かを判定する(ステップS203)。このとき、通信局33は、通信局32から応答が受信されない場合に(ステップS203:No)、断線故障の発生箇所は通信局番号「2」である通信局32と、通信局番号「3」である通信局33との間であると特定する(ステップS204)。ここで、通信局33は、終端接続すべき通信局(終端接続の指示対象となる通信局)を記録するために、変数T_Nodeに「3」を格納し、異常箇所検出処理を終了する。
一方、通信局33は、通信局32から応答が受信された場合に(ステップS203:Yes)、通信局番号が「1」である通信局31から応答を受信したか否かを判定する(ステップS205)。このとき、通信局33は、通信局31から応答が受信されない場合に(ステップS205:No)、断線故障の発生箇所は通信局番号「1」である通信局31と、通信局番号「2」である通信局32との間であると特定する(ステップS206)。ここで、通信局33は、終端接続すべき通信局を記録するために、変数T_Nodeに「2」を格納し、異常箇所検出処理を終了する。
一方、通信局33は、通信局31から応答が受信された場合に(ステップS205:Yes)、通信局番号が「4」である通信局34から応答を受信したか否かを判定する(ステップS207)。このとき、通信局33は、通信局34から応答が受信されない場合に(ステップS207:No)、断線故障の発生箇所は通信局番号「3」である通信局33と、通信局番号「4」である通信局34との間であると特定する(ステップS208)。ここで、通信局33は、終端接続すべき通信局を記録するために、変数T_Nodeに「3」を格納し、異常箇所検出処理を終了する。
一方、通信局33は、通信局34から応答が受信された場合に(ステップS207:Yes)、通信局番号が「5」である通信局35から応答を受信したか否かを判定する(ステップS209)。このとき、通信局33は、通信局35から応答が受信されない場合に(ステップS209:No)、断線故障の発生箇所は通信局番号「4」である通信局34と、通信局番号「5」である通信局35との間であると特定する(ステップS210)。ここで、通信局33は、終端接続すべき通信局を記録するために、変数T_Nodeに「4」を格納し、異常箇所検出処理を終了する。
一方、通信局33は、通信局35から応答が受信された場合に(ステップS209:Yes)、これまでで他の通信局の全てから応答が受信されたため、断線故障を起因とした異常ではなく、ソフトリセットや終端不安定等による異常であると特定する(ステップS211)。ここで、通信局33は、終端接続すべき通信局が存在しないため、変数T_Nodeに「0」を格納し、異常箇所検出処理を終了する。
次に、図7を用いて、実施の形態2に係る終端接続指示処理の流れを説明する。図7は、実施の形態2に係る終端接続指示処理の流れの例を示すフローチャートである。
図7に示すように、通信局33は、変数T_Nodeに格納されている値に応じて処理を切り替える(ステップS301)。変数T_Nodeに値「2」が格納されている場合に、通信局33は、通信局番号が「2」である通信局32に対して終端接続ONを指示する(ステップS302)。そして、通信局33は、一定時間の待機後、自身の終端接続をOFFにする(ステップS303)。一定時間は、通信局33からの指示に応じて通信局32が終端接続ONを実行するために要する時間である。
また、変数T_Nodeに値「3」が格納されている場合に、通信局33は、自身の終端接続ONを維持したままにする(ステップS304)。
また、変数T_Nodeに値「4」が格納されている場合に、通信局33は、通信局番号が「4」である通信局34に対して終端接続ONを指示する(ステップS305)。そして、通信局33は、一定時間の待機後、自身の終端接続をOFFにする(ステップS306)。同様に、一定時間は、通信局33からの指示に応じて通信局34が終端接続ONを実行するために要する時間である。
また、変数T_Nodeに値「0」が格納されている場合に、通信局33は、ソフトリセット時又は終端不安定時の処理(異常処理)を実行する(ステップS307)。
次に、図8を用いて、2線式通信ラインの断線故障の発生から通信の復旧までのタイムチャートを説明する。図8は、2線式通信ラインの断線故障の発生から通信の復旧までのタイムチャートの例を示す図である。なお、図8では、通信局番号が「1」である通信局31と、通信局番号が「2」である通信局32との間で断線故障が発生する場合を例に挙げて説明する。
図8に示すように、2線式通信ラインで異常が発生するまでは、通信局番号「1」、「2」、「4」及び「5」の通信局から、メインとなる通信局番号「3」の通信局に対してハートビート信号(図8に示す「HBM」)が送信される。通信局番号が「3」である通信局は、タイマを用いたタイムアウトまでに(返答待機の時間内に)、他の通信局からのハートビート信号を受信することで、2線式通信ラインに異常がなく、通信局間の通信が正常に行なわれていると認識する。
ここで、通信局番号が「1」である通信局と、通信局番号が「2」である通信局との間で断線故障が発生したとする。これにより、通信局番号が「3」である通信局は、タイマを用いたタイムアウトまでに(返答待機の時間内に)、他の通信局からのハートビート信号を受信できなくなる。タイムアウトした後、通信局番号が「3」である通信局は、2線式通信ラインに異常が発生したことを検出し、自身の終端接続をONにする。これにより、2線式通信ラインのうち通信局番号が「1」である通信局を除く通信局において、不安定ではあるが通信が行なえる状態となる。
通信局番号が「3」である通信局は、自身の終端接続をONにした後、異常の発生箇所を特定するためにブロードバンド送信し、他の通信局の全てに対してハートビート信号の送信要求を行なう。すなわち、ブロードバンド送信後のハートビート信号は、異常が発生する前に定期的に送られるハートビート信号とは異なり、要求に応じた送信となる。この要求に対して、通信可能な通信局は応答する。ここでは、通信局番号が「1」である通信局を除く他の通信局が応答することになる。
通信局番号が「3」である通信局は、他の通信局からの応答をもとに、断線故障が発生した箇所について、通信局番号が「1」である通信局と、通信局番号が「2」である通信局との間であると特定する。そして、通信局番号が「3」である通信局は、通信局番号が「2」である通信局に対して、終端接続ONを指示する。また、通信局番号が「3」である通信局は、終端接続ONとしている自身の終端接続をOFFにする。このように、異常箇所を検出し、その異常箇所よりも一つ内側の通信局の終端接続をONにすることにより、通信可能となった通信局間では、安定した通信が行なえるようになる。
上述したように、通信局33は、ブロードバンド送信に対する応答をもとに断線故障の発生箇所を特定し、特定された発生箇所から自身側に一つ隣の通信局に終端接続を指示するので、モジュールの配置構成に制約を設けることなく、異常の検出、異常箇所の特定、通信の復旧を実現することができる。
(変形例1)
図9は、終端回路の変形例を示す図である。図9では、EMC(Electro Magnetic Compatibility)対策として、終端回路にコンデンサを追加した構成を例に挙げる。図9に示すように、CPU40は、終端回路50の終端接続を制御する。また、終端回路50は、スイッチ71と、スイッチ72と、終端抵抗81と、終端抵抗82と、コンデンサ9とを有する。
スイッチ71及びスイッチ72は、CPU40から受け付けた信号に応じてONとOFFとが制御される。これにより、終端抵抗81及び終端抵抗82の接続、未接続が切り替えられる。終端抵抗81及び終端抵抗82の抵抗値は、上記実施の形態で説明した終端抵抗の抵抗値の約半分の値をとる。コンデンサ9は、バス上に発生したノイズをグラウンドに逃がす役割を担う。なお、他の構成については、上記実施の形態で説明した構成と同様である。
(変形例2)
上記実施の形態では、メインとなる通信局33が、他の通信局から定期的に送信されるハートビート信号を受け付けたり、ブロードバンド送信に対する他の通信局からの応答を受け付けたりして、異常の発生を検出する場合を説明した。異常の発生は、通信局33が、通常のデータ送信を行なっている時にも起こり得る。そこで、通常のデータ送信時における通信異常検知処理を説明する。
図10は、データ送信時における通信異常検知処理の流れの例を示すフローチャートである。図10に示すように、通信局33は、データ送信を行なう(ステップS401)。データ送信によって送信されるデータについては特に制約はない。そして、通信局33は、データ送信が失敗したか否かを判定する(ステップS402)。このとき、通信局33は、データ送信が成功した場合に(ステップS402:No)、2線式通信ラインにおいて異常は発生していないものとして処理を終了する。
一方、通信局33は、データ送信が失敗した場合に(ステップS402:Yes)、データ送信が所定回数連続して失敗したか否かを判定する(ステップS403)。所定回数は、例えば3回等であるが、任意に設定することが可能である。通信局33は、データ送信が所定回数連続で失敗していない場合に(ステップS403:No)、ステップS401における処理を再度実行する。一方、通信局33は、データ送信が所定回数連続で失敗した場合に(ステップS403:Yes)、ブロードバンド送信し、他の通信局の全てに対して応答を要求する(ステップS404)。
続いて、通信局33は、ブロードバンド送信に対し、1以上の応答信号を受信したか否かを判定する(ステップS405)。このとき、通信局33は、何れの通信局からも応答がない場合に(ステップS405:No)、2線式通信ラインにおける断線故障であることを検出し、通信を一時的に可能な状態にするために、自身の終端抵抗をONにする(ステップS406)。一方、通信局33は、1以上の応答信号を受信した場合に(ステップS405:Yes)、断線故障とは別起因による異常であることを検出し、この異常に準ずる異常処理を実行する(ステップS407)。
これらにより、通信局33は、通常のデータ送信時においても、通信異常の検出を行うことができる。
(変形例3)
上記実施の形態では、メインとなる通信局33が、ブロードバンド送信に対して受け取った応答をもとに、断線故障が発生した箇所を特定する場合を説明した。断線故障が発生した箇所は、他の通信局に対する個別送信に対して受け取った応答をもとに特定しても良い。そこで、個別送信に対して受け取った応答をもとに、断線故障が発生した箇所を特定する異常箇所検出処理を説明する。
図11は、個別送信による異常箇所検出処理の流れの例を示すフローチャートである。図11に示すように、通信局番号が「3」であるメインの通信局33は、通信局番号が「2」である通信局32に対して個別送信し、応答を要求する(ステップS501)。そして、通信局33は、所定時間内に通信局32からの応答を受信したか否かを判定する(ステップS502)。このとき、通信局33は、所定時間内に通信局32からの応答を受信できない場合に(ステップS502:No)、通信局番号が「2」である通信局32と、通信局番号が「3」である通信局33との間で断線故障が発生したと特定する(ステップS503)。ここで、通信局33は、終端接続すべき通信局を記録するために、変数T_Nodeに「3」を格納し、異常箇所検出処理を終了する。
一方、通信局33は、所定時間内に通信局32からの応答を受信できた場合に(ステップS502:Yes)、通信局番号が「1」である通信局31に対して個別送信し、応答を要求する(ステップS504)。そして、通信局33は、所定時間内に通信局31からの応答を受信したか否かを判定する(ステップS505)。このとき、通信局33は、所定時間内に通信局31からの応答を受信できない場合に(ステップS505:No)、通信局番号が「1」である通信局31と、通信局番号が「2」である通信局32との間で断線故障が発生したと特定する(ステップS506)。ここで、通信局33は、終端接続すべき通信局を記録するために、変数T_Nodeに「2」を格納し、異常箇所検出処理を終了する。
一方、通信局33は、所定時間内に通信局31からの応答を受信できた場合に(ステップS505:Yes)、通信局番号が「4」である通信局34に対して個別送信し、応答を要求する(ステップS507)。そして、通信局33は、所定時間内に通信局34からの応答を受信したか否かを判定する(ステップS508)。このとき、通信局33は、所定時間内に通信局34からの応答を受信できない場合に(ステップS508:No)、通信局番号が「3」である通信局33と、通信局番号が「4」である通信局34との間で断線故障が発生したと特定する(ステップS509)。ここで、通信局33は、終端接続すべき通信局を記録するために、変数T_Nodeに「3」を格納し、異常箇所検出処理を終了する。
一方、通信局33は、所定時間内に通信局34からの応答を受信できた場合に(ステップS508:Yes)、通信局番号が「5」である通信局35に対して個別送信し、応答を要求する(ステップS510)。そして、通信局33は、所定時間内に通信局35からの応答を受信したか否かを判定する(ステップS511)。このとき、通信局33は、所定時間内に通信局35からの応答を受信できない場合に(ステップS511:No)、通信局番号が「4」である通信局34と、通信局番号が「5」である通信局35との間で断線故障が発生したと特定する(ステップS512)。ここで、通信局33は、終端接続すべき通信局を記録するために、変数T_Nodeに「4」を格納し、異常箇所検出処理を終了する。
一方、通信局33は、所定時間内に通信局35からの応答を受信できた場合に(ステップS511:Yes)、これまでで他の通信局の全てから応答が受信されたため、断線故障を起因とした異常ではなく、ソフトリセットや終端不安定等による異常であると特定する(ステップS513)。ここで、通信局33は、終端接続すべき通信局が存在しないため、変数T_Nodeに「0」を格納し、異常箇所検出処理を終了する。
これらにより、通信局33は、他の通信局の全てからの応答を待機せずに、断線故障の発生箇所を特定することができ、自身により近い場所で断線故障が発生した場合に、より高速に断線箇所を特定することができる。
(変形例4)
上記実施の形態では、通信装置10に含まれる通信局が5つである場合を説明した。また、上述したように、通信局の数は5に限られるものではない。そこで、通信局の数がnである場合を説明する。
図12は、通信局の数がnである場合の通信装置10aの構成例を示す図である。図12に示すように、通信装置10aは、通信局番号が「1」〜「n」である通信局を有する。これらのうち、通信局31aと、通信局35aとは、端に配置された通信局であるものとする。また、通信局32a、通信局33a、通信局34aは、端以外に配置された通信局であるものとする。さらに、通信局33aは、メインの通信局であるものとする。
図12の例では、通信局31aを通信局(1)、通信局32aを通信局(n/4)、通信局33aを通信局(n/2)、通信局34を通信局(3n/4)、通信局35を通信局(n)としている。なお、各通信局の通信局番号(通し番号)は、整数でなくてはならないので、以下の説明において割り切れない場合は小数点以下を切り捨てる、又は、小数点以下を切り上げるものとする。
図13は、通信局の数がnである場合の異常箇所検出処理の流れの例を示すフローチャートである。図13に示すように、通信局33aは、通信局(1)と通信局(n)とに対して個別送信し、応答を要求する(ステップS601)。ここで、通信局33aは、応答の受信パターンに応じて処理を切り替える(ステップS602)。通信局(1)からのみ応答を受信した場合は、通信局(1)〜通信局(n/2)の間で断線故障が発生していることになる。そこで、通信局33aは、通信局(1)からのみ応答を受信した場合に、通信局(n/4)に対し、ハートビート信号の送信を要求して、通信が正常に行なえるかを確認する(ステップS603)。
そして、通信局33aは、通信局(n/4)からハートビート信号を受信したか否かを判定する(ステップS604)。このとき、通信局33aは、通信局(n/4)からハートビート信号を受信した場合に(ステップS604:Yes)、変数lに「n/4」を格納する(ステップS605)。すなわち、通信局(n/4)〜通信局(n/2)の間では断線故障が発生していないため、通信局(1)〜通信局(n/4)の間で断線故障の発生箇所を探すことになる。
一方、通信局33aは、通信局(n/4)からハートビート信号を受信できない場合に(ステップS604:No)、変数lに「n/2」を格納する(ステップS606)。すなわち、通信局(n/4)〜通信局(n/2)の間で断線故障が発生しているため、通信局(n/4)〜通信局(n/2)の間でさらに断線故障の発生箇所を探すことになる。その後、通信局33aは、起点から隣の通信局を調べるための変数書き換え作業を行なう(ステップS607)。
続いて、通信局33aは、通信局(l)に対し、ハートビート信号の送信を要求して、通信が正常に行なえるかを確認する(ステップS608)。そして、通信局33aは、通信局(l)からハートビート信号を受信したか否かを判定する(ステップS609)。このとき、通信局33aは、通信局(l)からハートビート信号を受信した場合に(ステップS609:Yes)、ステップS607の処理を実行し、さらに隣の通信局に対してハートビート信号の送信を要求する。一方、通信局33aは、通信局(l)からハートビート信号を受信できない場合に(ステップS609:No)、通信局(l)と通信局(l+1)との間で断線故障が発生していると特定する(ステップS610)。ここで、通信局33aは、終端接続すべき通信局を記録するために、変数T_Nodeに「l+1」を格納し、異常箇所検出処理を終了する。
また、ステップS602において、通信局(n)からのみ応答を受信した場合は、通信局(n/2)〜通信局(n)の間で断線故障が発生していることになる。そこで、通信局33aは、通信局(n)からのみ応答を受信した場合に、通信局(3n/4)に対し、ハートビート信号の送信を要求して、通信が正常に行なえるかを確認する(ステップS611)。
そして、通信局33aは、通信局(3n/4)からハートビート信号を受信したか否かを判定する(ステップS612)。このとき、通信局33aは、通信局(3n/4)からハートビート信号を受信した場合に(ステップS612:Yes)、変数lに「3n/4」を格納する(ステップS613)。すなわち、通信局(n/2)〜通信局(3n/4)の間では断線故障が発生していないため、通信局(3n/4)〜通信局(n)の間で断線故障の発生箇所を探すことになる。
一方、通信局33aは、通信局(3n/4)からハートビート信号を受信できない場合に(ステップS612:No)、変数lに「n/2」を格納する(ステップS614)。すなわち、通信局(n/2)〜通信局(3n/4)の間で断線故障が発生しているため、通信局(n/2)〜通信局(3n/4)の間でさらに断線故障の発生箇所を探すことになる。その後、通信局33aは、起点から隣の通信局を調べるための変数書き換え作業を行なう(ステップS615)。
続いて、通信局33aは、通信局(l)に対し、ハートビート信号の送信を要求して、通信が正常に行なえるかを確認する(ステップS616)。そして、通信局33aは、通信局(l)からハートビート信号を受信したか否かを判定する(ステップS617)。このとき、通信局33aは、通信局(l)からハートビート信号を受信した場合に(ステップS617:Yes)、ステップS615の処理を実行し、さらに隣の通信局に対してハートビート信号の送信を要求する。一方、通信局33aは、通信局(l)からハートビート信号を受信できない場合に(ステップS617:No)、通信局(l)と通信局(l+1)との間で断線故障が発生していると特定する(ステップS618)。ここで、通信局33aは、終端接続すべき通信局を記録するために、変数T_Nodeに「l−1」を格納し、異常箇所検出処理を終了する。
また、ステップS602において、通信局(1)と通信局(n)との両方から応答を受信した場合は、異常が発生しているにもかかわらず、両端の通信局が通信を行なえる状態にあることになる。そこで、通信局33aは、断線故障を起因とした異常ではなく、ソフトリセットや終端不安定等による異常であると特定する(ステップS619)。ここで、通信局33aは、終端接続すべき通信局が存在しないため、変数T_Nodeに「0」を格納し、異常箇所検出処理を終了する。
また、ステップS602において、通信局(1)と通信局(n)との両方から応答を受信できない場合は、断線故障が同時に複数発生している可能性がある。通信局33aは、両端で断線故障が同時に発生している場合、自力で復旧することは困難であるため、異常箇所検出処理を終了する(ステップS620)。
つまり、通信局33は、他の通信局を2以上のグループに分け、各グループに属する他の通信局からの応答をもとに、断線故障の発生箇所が含まれるグループを特定し、特定したグループに属する他の通信局からの応答をもとに、断線故障の発生箇所を特定している。これらにより、通信局33は、通信局の数がいくつであっても、好適に異常の検出や異常箇所の特定、通信の復旧を実現することができる。
(適用例1)
上記実施の形態で説明した通信装置10(10a)の機能は、様々な機器に適用することが可能である。そこで、以下では、上記実施の形態で説明した通信装置10(10a)の適用例を説明する。
図14は、印刷機に適用した例を示す構成図である。例えば、図14に示すように、印刷機は、複数のユニットで構成される。具体的には、印刷機は、ユニット101、ユニット102、ユニット103、ユニット104、ユニット105、ユニット106、ユニット107、ユニット108、ユニット109、ユニット1010、ユニット1011で構成される。また、各ユニットには通信局が配置されており、各通信局は通信可能に接続される。
ユニット101及びユニット102は、連結排紙ユニットである。複数の排紙ユニットを採用することで、排紙ボリュームを増加させることができる。なお、連結排紙ユニットの何れかが動作すれば、印刷の動作を行なうことが可能である。ユニット101は、通信局111を有する。ユニット102は、通信局112を有する。ユニット103は、冷却ユニットであり、乾燥ユニットで熱された紙を冷却する。ユニット103は、通信局113を有する。ユニット104は、乾燥ユニットであり、用紙に付着したインクを乾燥させ、馴染ませる役割を担う。ユニット104は、通信局114を有する。ユニット105は、作像ユニットであり、用紙にインクを打ち込み、印刷を行なう。ユニット105は、通信局115を有する。ユニット106は、操作パネルであり、印刷機の操作画面の機能、及び、通信異常が発生した時等にユーザに対して通知する機能を担う。ユニット106は、通信局116を有する。
ユニット107は、レジストユニットであり、紙の搬送タイミングや位置調整を行なう。ユニット107は、通信局117を有する。ユニット108は、先塗りユニットであり、先塗り液をコートする。これにより、異なる用紙に対してもインクを馴染ませることができる。ユニット108は、通信局118を有する。ユニット109、ユニット1010及びユニット1011は、連結給紙ユニットである。複数の給紙ユニットを採用することで、給紙ボリュームを増加させることができる。なお、連結給紙ユニットの何れかが動作すれば、印刷の動作を行なうことが可能である。ユニット109は、通信局119を有する。ユニット1010は、通信局1110を有する。ユニット1011は、通信局1111を有する。
このような印刷機において、一部の機能が断線故障により通信を行なえずに動作できなくなったとしても、全体としては印刷動作が行なえる場合がある。その際、上記実施の形態で説明したような処理によって、一部を通信可能にすることで、印刷動作を行なえる状態にすることができる。
(適用例2)
図15は、画像形成装置に適用した例を示す構成図である。画像形成装置は、一つの筐体に、印刷機能やコピー機能、スキャナ機能、FAX機能、操作パネル等を備える。例えば、図15に示すように、画像形成装置は、ADF(Auto Document Feeder)121と、操作パネル122と、スキャナ123と、FAX124と、作像部125とで構成される。また、各部には通信局が配置されており、各通信局は通信可能に接続される。
ADF121は、自動給紙装置であり、用紙反転機能により両面コピーを行なうことができる。ADF121は、通信局131を有する。操作パネル122は、画像形成装置の操作画面の機能、及び、通信異常が発生した時等にユーザに対して通知する機能を担う。操作パネル122は、通信局132を有する。スキャナ123は、用紙の画像取り込みを行なう。スキャナ123は、通信局133を有する。FAX124は、FAXの通信動作を行なう。FAX124は、通信局134を有する。作像部125は、用紙に対して印刷する機能を担う。作像部125は、通信局135を有する。
このような画像形成装置において、例えばADF121の通信局131と、操作パネル122の通信局132との間で断線故障が発生した場合に、ADF121をはじめ、全ての機能は通信を行なうことができずに、動作できなくなってしまう。その際、上記実施の形態で説明したような処理によって、ADF121以外の各機能で通信を行なえるように復旧させ、ADF121以外の機能が動作できる状態にすることができる。
(適用例3)
図16は、冷蔵庫に適用した例を示す構成図である。冷蔵庫(電気冷蔵庫)は、異なる冷却ユニットや液晶パネル等を備える。例えば、図16に示すように、冷蔵庫は、ユニット141と、ユニット142と、ユニット143と、ユニット144と、ユニット145と、ユニット146とを備える。ユニット141〜ユニット146は、それぞれ異なる冷却ユニットや液晶パネルであるものとする。また、各ユニットには通信局が配置されており、各通信局は通信可能に接続される。
ユニット141は、通信局151を有する。ユニット142は、通信局152を有する。ユニット143は、通信局153を有する。ユニット144は、通信局154を有する。ユニット145は、通信局155を有する。ユニット146は、通信局156を有する。
このような冷蔵庫において、一部の機能が断線故障により通信を行なえず、動作ができなくなったとしても、上記実施の形態で説明したような処理によって、一部を通信可能な状態にすることで、一部の冷却機能やパネル表示機能等を動作できる状態にすることができる。
また、上記文書中や図面中等で示した処理手順、制御手順、具体的名称、各種のデータやパラメータ等を含む情報は、特記する場合を除いて任意に変更することができる。また、図示した装置の各構成要素は、機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散又は統合の具体的形態は、図示のものに限られず、その全部又は一部を各種の負担や使用状況等に応じて、任意の単位で機能的又は物理的に、分散又は統合することができる。
また、通信装置10で実行される復旧プログラムは、一つの様態として、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。また、通信装置10で実行される復旧プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、通信装置10で実行される復旧プログラムをインターネット等のネットワーク経由で提供又は配布するように構成しても良い。また、復旧プログラムを、ROM等に予め組み込んで提供するように構成しても良い。
通信装置10で実行される復旧プログラムは、上述した各部(検出部63、接続制御部64)を少なくとも含むモジュール構成となっており、実際のハードウェアとしてはCPU(プロセッサ)が記憶媒体から復旧プログラムを読み出して実行することにより、上記各部が主記憶装置上にロードされ、検出部63、接続制御部64が主記憶装置上に生成されるようになっている。