(57)【要約】【課題】２台のモデムなどの通信機器の役割の確定を従来よりも簡単に行う。【解決手段】モデム１０Ａに、マスタとしてモデム１０Ｂを相手にリンクを確立するためのメッセージのやり取りを行うマスタ側メッセージ交換処理部１０５と、スレーブとしてモデム１０Ｂを相手にメッセージのやり取りを行うスレーブ側メッセージ交換処理部１０６と、マスタ側メッセージ交換処理部１０５およびスレーブ側メッセージ交換処理部１０６に、交互にかつランダムな時間間隔でメッセージのやり取りを行わせる、マスタスレーブ決定部１０１と、マスタ側メッセージ交換処理部１０５によってメッセージのやり取りが正常に完了した場合はモデム１０Ａ自身をマスタに確定し、スレーブ側メッセージ交換処理部１０６によってメッセージのやり取りが正常に完了した場合はモデム１０Ａ自身をスレーブに確定し、リンクの確立のための回線設定を行うリンク確立処理部１０７と、を設ける。【選択図】図３
2011160164.tif 000002
【特許請求の範囲】
【請求項１】
他の通信機器と通信を行う通信機器であって、
マスタとして前記他の通信機器を相手にモードを確定するためのメッセージのやり取りを行うマスタ処理手段と、
スレーブとして前記他の通信機器を相手に前記メッセージのやり取りを行うスレーブ処理手段と、
前記マスタ処理手段および前記スレーブ処理手段に、交互にかつランダムな時間間隔で前記メッセージのやり取りを行わせる、切換手段と、
前記マスタ処理手段によって前記メッセージのやり取りが正常に完了した場合は当該通信機器を前記マスタに確定し、前記スレーブ処理手段によって前記メッセージのやり取りが完了した場合は当該通信装置を前記スレーブに確定する、確定手段と、
を有する通信機器。
【請求項２】
２台の通信機器のリンクを確立する際に当該２台の通信機器のそれぞれをマスタおよびスレーブのうちのいずれかに確定するマスタスレーブ確定方法であって、
前記２台の通信機器のそれぞれに、前記マスタとして他方の通信機器を相手に前記モードを確定するためのメッセージをやり取りするマスタ処理と、前記スレーブとして当該他方の通信機器を相手に前記メッセージをやり取りするスレーブ処理とを、交互にかつランダムな時間間隔で実行させ、
前記２台の通信機器のそれぞれを、前記マスタ処理が完了した場合は前記マスタに確定し、前記スレーブ処理が完了した場合は前記スレーブに確定する、
マスタスレーブ確定方法。
【請求項３】
通信機器を他の通信機器に接続させるためのコンピュータプログラムであって、
前記通信機器に、
マスタとして前記他の通信機器を相手に前記モードを確定するためのメッセージをやり取りするマスタ処理と、スレーブとして前記他の通信機器を相手に前記メッセージをやり取りするスレーブ処理とを、交互にかつランダムな時間間隔で実行させる、
コンピュータプログラム。
【請求項４】
前記時間間隔は、前記メッセージをすべてやり取りする所要時間以上である、
請求項３記載のコンピュータプログラム。
【請求項５】
前記通信機器には前記通信装置に前記マスタ処理を開始させる事を設定するレジスタが設けられており、前記レジスタに前記マスタ処理を開始させる値を設定する、
請求項３または請求項４記載のコンピュータプログラム。
【請求項６】
前記通信機器には前記マスタ処理および前記スレーブ処理を交互に実行するのを終了させる事を設定するレジスタが設けられており、前記レジスタに終了させる値を設定する、
請求項３ないし請求項５のいずれかに記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＨＤＳＬ方式のモデムなどの通信機器および当該通信機器における役割の確定方法などに関する。
【背景技術】
【０００２】
従来、様々な通信方式によって２台のモデムなどの通信機器同士で通信が行われている。例えば、Symmetric Digital Subscriber Line（ＳＤＳＬ）方式によると、２台のモデムが、１対の電話線を介して、一方のモデムから他方のモデムへの通信および反対方向の通信を、同じ速度で行う。さらに、Symmetric High-speed Digital Subscriber Line（ＳＨＤＳＬ）方式によると、ＳＤＳＬ方式よりも高速に通信を行うことができるほか、電話線の長さをＳＤＳＬ方式よりも長くすることができる。
【０００３】
電話線などを介して２台のモデムなどの通信機器によって通信を行う際は、通常、一方の通信機器をマスタに設定し、もう一方の通信機器をスレーブに設定する（非特許文献１）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ラド・ジャパン株式会社ウェブサイト、”ＡＳＭ−３１”、ＵＲＬ「http://www.raddata.co.jp/Article/0,6583,39296-2-Wire＿Multirate＿Short＿Range＿Modem,00.html」、２０１０年１月２４日検索
【発明の概要】
【発明が解決しようとする課題】
【０００５】
工場などの広い敷地において、モデムなどの通信機器を２台、離れたところに固定的に設置し構内伝送のための通信を行う場合は、運用保守者が予め、通信環境の構築を計画する。この際に、運用保守者は、一方の通信機器をマスタに設定し、もう一方の通信機器をスレーブに設定する。
【０００６】
しかし、例えば災害が発生した場合など、一時的に２つの拠点同士を結ぶ通信環境を構築する必要がある場合は、２台の通信機器のうちの一方をマスタに設定しもう一方をスレーブに設定する作業を速やかに行わなければならない。
【０００７】
ところが、従来の方法では、運用保守者による計画および設定の手間が掛かり、通信を行う環境が整うまでに時間が掛かってしまう。
【０００８】
本発明は、このような問題点に鑑み、２台のモデムなどの通信機器の役割の確定を従来よりも簡単に行うことができるようにすることを、目的とする。
【課題を解決するための手段】
【０００９】
本発明の一形態に係る通信機器は、他の通信機器と通信を行う通信機器であって、マスタとして前記他の通信機器を相手に役割を確立するためのメッセージのやり取りを行うマスタ処理手段と、スレーブとして前記他の通信機器を相手に前記メッセージのやり取りを行うスレーブ処理手段と、前記マスタ処理手段および前記スレーブ処理手段に、交互にかつランダムな時間間隔で前記メッセージのやり取りを行わせる、切換手段と、前記マスタ処理手段によって前記メッセージのやり取りが正常に完了した場合は当該通信機器の役割を前記マスタに確定し、前記スレーブ処理手段によって前記メッセージのやり取りが正常に完了した場合は当該通信装置の役割を前記スレーブに確定する、確定手段と、を有する。
【発明の効果】
【００１０】
本発明によると、２台のモデムなどの通信機器の役割の確定を従来よりも簡単に行うことができる。
【図面の簡単な説明】
【００１１】
【図１】広域ネットワークの全体的な構成の例を示す図である。
【図２】モデムのハードウェア構成の例を示す図である。
【図３】モデムの機能的構成の例を示す図である。
【図４】ハンドシェーキングメッセージのやり取りの例を示す図である。
【図５】リンクの確立の際のモデムの全体的な処理の流れの例を説明するフローチャートである。
【図６】リンクの確立の際のモデムの全体的な処理の流れの例を説明するフローチャートである。
【図７】ハンドシェーキングメッセージのやり取りの例を示す図である。
【図８】ハンドシェーキングメッセージのやり取りの例を示す図である。
【図９】ハンドシェーキングメッセージのやり取りの例を示す図である。
【図１０】ハンドシェーキングメッセージのやり取りの例を示す図である。
【図１１】モデムのプラットフォームの例を示す図である。
【図１２】接続用ソフトウェアによって実現される機能的構成の例を示す図である。
【図１３】マスタモード処理部の例を示す図である。
【図１４】スレーブモード処理部の例を示す図である。
【発明を実施するための形態】
【００１２】
図１は広域ネットワーク３０の全体的な構成の例を示す図、図２はモデム１０のハードウェア構成の例を示す図、図３はモデム１０の機能的構成の例を示す図、図４はハンドシェーキングメッセージのやり取りの例を示す図である。
【００１３】
広域ネットワーク３０は、図１に示すように、複数のローカルエリアネットワーク４０を有する。以下、各ローカルエリアネットワーク４０をそれぞれ「ローカルエリアネットワーク４０Ａ」、「ローカルエリアネットワーク４０Ｂ」、「ローカルエリアネットワーク４０Ｃ」、…と区別して記載することがある。
【００１４】
ローカルエリアネットワーク４０は、モデム１０、ハブ１１、および１台または複数台の端末装置１２などを有する。
【００１５】
ハブ１１は、そのハブ１１が属するローカルエリアネットワーク４０内のモデム１０と各端末装置１２との間の通信を中継する。
【００１６】
モデム１０は、Symmetric Digital Subscriber Line（ＳＤＳＬ）またはSymmetric High-speed Digital Subscriber Line（ＳＨＤＳＬ）などの通信方式によって他のモデム１０と通信を行う。また、モデム１０は、Local Area Network（ＬＡＮ）または無線ＬＡＮなどの通信方式によって端末装置１２と通信を行う。
【００１７】
さらに具体的には、モデム１０は、他のモデム１０とメタル回線などの電話線によって繋がれている。さらに、モデム１０は、ＬＡＮケーブルなどによってハブ１１と繋がれている。なお、モデム１０にハブ１１の機能が備えられている場合もある。
【００１８】
そして、モデム１０は、そのモデム１０が属するローカルエリアネットワーク４０内の端末装置１２と、他のローカルエリアネットワーク４０内の端末装置１２との間でやり取りされるデータを、当該他のローカルエリアネットワーク４０に属する他のモデム１０などを介して中継する。
【００１９】
端末装置１２は、ワープロ、電子メール、Ｗｅｂブラウザ、またはＩＰ電話などのアプリケーションを備えた装置である。端末装置１２として、パーソナルコンピュータまたはワークステーションなどが用いられる。
【００２０】
モデム１０は、図２に示すように、Micro Processing Unit（ＭＰＵ）１０ｐ、Random Access Memory（ＲＡＭ）１０ｑ、Read Only Memory（ＲＯＭ）１０ｒ、液晶パネル１０ｓ、操作ボタン１０ｔ、および通信部１０ｕなどを有する。
【００２１】
通信部１０ｕは、ＬＡＮケーブルを介して端末装置１２から送られてきたデジタル信号をアナログ信号に変調し、電話線を介して他のモデム１０へ送信する。また、電話線を介して他のモデム１０から送られてきたアナログ信号をデジタル信号に復調し、ＬＡＮケーブルを介して端末装置１２へ送信する。
【００２２】
操作ボタン１０ｔは、ユーザがモデム１０に対して指令およびデータを入力するためのボタンである。
【００２３】
液晶パネル１０ｓは、モデム１０の状態のほか、ユーザが入力した指令またはデータなどを表示する。
【００２４】
また、操作ボタン１０ｔと液晶パネル１０ｓは、同等の機能を有する端末装置をモデム１０の外部に接続する形態であっても構わない。
【００２５】
ＲＯＭ１０ｒには、図３に示すようなマスタスレーブ決定部１０１、乱数発生部１０２、マスタモード切換処理部１０３、スレーブ側切換処理部１０４、マスタ側メッセージ交換処理部１０５、スレーブ側メッセージ交換処理部１０６、およびリンク確立処理部１０７などを実現するためのプログラムおよびデータが記憶されている。これらのプログラムおよびデータはＭＰＵ１０ｐによって実行される。
【００２６】
図３の各部によると、モデム１０を他のモデム１０に新たに接続する際の処理を従来よりも容易に行うことができる。
【００２７】
ところで、一般的に、２台のモデム１０を接続する際は、いずれか一方がマスタの役割を果たし、もう一方がスレーブの役割を果たすことを運用保守者が計画、設定しなければならない。
【００２８】
接続つまりリンクの確立に際して、マスタとスレーブとの間でやり取りされるメッセージは、図４に示すように、最初は、マスタ側から発信される。すなわち、最初に、マスタは、特定の内容のメッセージＭＧ１を、電話線を介してスレーブへ発信（送信）する。
【００２９】
スレーブは、メッセージＭＧ１を受信すると、それに対する応答のメッセージとして特定の内容を示すメッセージＭＧ２をマスタへ発信する。以下、同様に、マスタおよびスレーブは、通信方式に応じてメッセージのやり取りを行う。そして、メッセージのやり取りがすべて完了したら、その時の役割に応じて従来通りの回線などに関する設定を行うことで、マスタおよびスレーブの間でリンクが確立される。
【００３０】
次に、図３に示すモデム１０の各部の処理内容について、詳細に説明する。
【００３１】
マスタスレーブ決定部１０１は、モデム１０自身がマスタとして動作するのかスレーブとして動作するのかを決定する。以下、マスタとして動作するモードを「マスタモード」と記載し、スレーブとして動作するモードを「スレーブモード」と記載する。
【００３２】
マスタスレーブ決定部１０１は、乱数発生部１０２と連携し、モデム１０自身のモードをマスタモードおよびスレーブモードのいずれにするのかを、次のように決定する。
【００３３】
モデム１０の電源がオンになると、マスタスレーブ決定部１０１は、マスタモードおよびスレーブモードのうちの予め決められた方を、モデム１０自身のモードに決定する。または、乱数を発生させることによって、どちらのモードにするのかを決めてもよい。
【００３４】
乱数発生部１０２は、マスタスレーブ決定部１０１によってモードが決定されるごとに、所定の範囲の乱数を発生させる。この乱数は、後述するようにモードを継続する秒数を表すのに用いられる。
【００３５】
所定の範囲の下限値は、マスタとスレーブとがモードを確定する際にハンドシェーキングメッセージ（Handshaking Massage）のやり取りをすべて完了するのに必要な時間以上であることが、望ましい。例えば、ハンドシェーキングメッセージのやり取りを行うのに必要な時間が２〜３秒であれば、下限値を「３」ないし「５」程度に設定しておく。
【００３６】
一方、所定の範囲の上限値は、任意の値で構わないが、大きすぎないほうがよい。例えば、「２０」ないし「６０」程度に設定しておく。
【００３７】
さらに、マスタスレーブ決定部１０１は、モードを決定した後、乱数発生部１０２が発生させた乱数分の時間（秒）が経過したら、モードを、現在とは別のモードに決定し直す。
【００３８】
さらに、マスタスレーブ決定部１０１がモードを決定し直した後も、乱数発生部１０２は乱数を発生させる。そして、マスタスレーブ決定部１０１は、その乱数分の時間（秒）が経過したら、モードを、現在とは別のモードに決定し直す。
【００３９】
したがって、マスタスレーブ決定部１０１および乱数発生部１０２によると、モデム１０のモードが、ランダムな時間間隔でマスタモード、スレーブモード、マスタモード、スレーブモード、…、と決定される。または、ランダムな時間間隔でスレーブモード、マスタモード、スレーブモード、マスタモード、…、と決定される。なお、決定の処理は、他のモデム１０とのハンドシェーキングメッセージのやり取りが正常に完了したと判断できたら中止する。
【００４０】
マスタモード切換処理部１０３は、マスタスレーブ決定部１０１によってモードがマスタモードに決定されまたは決定し直されたタイミングで、モデム１０自身のモードをマスタモードに切り換える。
【００４１】
スレーブ側切換処理部１０４は、マスタスレーブ決定部１０１によってモードがスレーブモードに決定されまたは決定し直されたタイミングで、モデム１０自身のモードをスレーブモードに切り換える。
【００４２】
マスタ側メッセージ交換処理部１０５は、モデム１０のモードがマスタモード切換処理部１０３によってマスタモードに切り換えられたタイミングで、メッセージＭＧ１をスレーブへ発信する。さらに、通信方式に従って、スレーブからメッセージを受信し特定のメッセージをスレーブへ発信するなど、スレーブとの間でメッセージ（ハンドシェーキングメッセージ）のやり取りを行う。なお、メッセージのやり取りについては、図４で説明した通りである。
【００４３】
スレーブ側メッセージ交換処理部１０６は、モデム１０のモードがスレーブ側切換処理部１０４によってスレーブモードに切り換えられたタイミングで、マスタからメッセージＭＧ１が送信されてくるのを待つ。そして、メッセージＭＧ１を受信すると、通信方式に従って、図４で説明したように、マスタとの間でメッセージ（ハンドシェーキングメッセージ）のやり取りを行う。
【００４４】
リンク確立処理部１０７は、接続相手である他のモデム１０との間でのハンドシェーキングメッセージのやり取りが正常に完了したことで、モードが確定できたと判断し、当該他のモデム１０とのリンクの確立を完了するための回線の設定などの処理を行う。
【００４５】
図５および図６はリンクの確立の際のモデム１０の全体的な処理の流れの例を説明するフローチャート、図７ないし図１０はハンドシェーキングメッセージのやり取りの例を示す図である。
【００４６】
次に、図１に示すローカルエリアネットワーク４０Ａのモデム１０がローカルエリアネットワーク４０Ｂのモデム１０と未だ接続されておらず、これから新たに接続する場合を例に、図３の各部の処理の手順を、図５および図６に示すフローチャートを参照しながら説明する。以下、ローカルエリアネットワーク４０Ａおよびローカルエリアネットワーク４０Ｂそれぞれのモデム１０を「モデム１０Ａ」および「モデム１０Ｂ」と区別して記載する。
【００４７】
ローカルエリアネットワーク４０Ａにいるユーザは、ローカルエリアネットワーク４０Ａとローカルエリアネットワーク４０Ｂとの間に敷設されている電話線をモデム１０Ａに繋げる。さらに、モデム１０Ａの電源をオンにする。
【００４８】
すると、モデム１０Ａにおいて、マスタスレーブ決定部１０１は、モデム１０Ａのモードをマスタモードおよびスレーブモードのうちのいずれかに決定する（図５の＃７１）。マスタモードに決定された場合は（＃７２でＹｅｓ）、乱数発生部１０２は、所定の範囲の乱数を発生させる（＃７３）。乱数の発生の処理と前後してまたは並行して、マスタスレーブ決定部１０１は、ハードウェアの設定値などをリセットし（＃７４）、マスタモード切換処理部１０３は、モデム１０Ａのモードをマスタモードに設定する（＃７５）。
【００４９】
マスタ側メッセージ交換処理部１０５は、マスタとして、モデム１０Ｂを相手にハンドシェーキングメッセージのやり取りを行う（＃７７）。したがって、マスタ側メッセージ交換処理部１０５は、最初のメッセージであるメッセージＭＧ１をモデム１０Ｂへ発信する。
【００５０】
モデム１０Ｂがスレーブとして動作している場合は、メッセージＭＧ１がモデム１０Ｂによって受信されるので、マスタ側メッセージ交換処理部１０５は、ハンドシェーキングメッセージのやり取りを開始することができる。しかし、そうでない場合は、開始することができない。
【００５１】
そこで、マスタ側メッセージ交換処理部１０５は、ステップ＃７３で発生した乱数に対応する時間だけ、ハンドシェーキングメッセージのやり取りを試行する。つまり、マスタ側メッセージ交換処理部１０５は、メッセージＭＧ１を定期的に（例えば、０．１〜０．５秒ごとに）発信する。
【００５２】
そして、時間内にハンドシェーキングメッセージのやり取りが完了できた場合は（＃７８でＹｅｓ）、リンク確立処理部１０７はモデム１０Ｂがスレーブとして動作していると判断し、これによりモデム１０Ａのモードをマスタに確定する（＃７９）。そして、モデム１０Ａは、従来通り、回線などに関する種々の設定を行う（＃８０）。
【００５３】
一方、時間内にハンドシェーキングメッセージのやり取りを完了できなかった場合は（＃７８でＮｏ、＃７６でＹｅｓ）、マスタスレーブ決定部１０１は、モデム１０Ａのモードをスレーブモードに決定し直し、各部は図６に示す処理を適宜実行する。また、電源がオンになって最初にモデム１０Ａのモードをスレーブモードに決定した場合も（＃７２でＮｏ）、各部は図６に示す処理を実行する。
【００５４】
乱数発生部１０２は、所定の範囲の乱数を発生させる（＃８１）。乱数の発生の処理と前後してまたは並行して、マスタスレーブ決定部１０１は、ハードウェアの設定値などをリセットし（＃８２）、スレーブ側切換処理部１０４は、モデム１０Ａのモードをスレーブモードに設定する（＃８３）。
【００５５】
スレーブ側メッセージ交換処理部１０６は、スレーブとして、モデム１０Ｂを相手にハンドシェーキングメッセージのやり取りを行う（＃８５）。したがって、スレーブ側メッセージ交換処理部１０６は、最初のメッセージであるメッセージＭＧ１がモデム１０Ｂから送信されてくるのを待つ。
【００５６】
モデム１０Ｂがマスタとして動作している場合は、メッセージＭＧ１が送信されてくるので、スレーブ側メッセージ交換処理部１０６は、メッセージＭＧ１を受信したらハンドシェーキングメッセージのやり取りを開始することができる。しかし、そうでない場合は、開始することができない。
【００５７】
そこで、スレーブ側メッセージ交換処理部１０６は、ステップ＃８１で発生した乱数に対応する時間だけ、ハンドシェーキングメッセージのやり取りを試行する。つまり、メッセージＭＧ１をその時間だけ待ち続ける。
【００５８】
そして、時間内にハンドシェーキングメッセージのやり取りが完了できた場合は（＃８６でＹｅｓ）、リンク確立処理部１０７はモデム１０Ｂがマスタとして動作していると判断し、これによりモデム１０Ａのモードをスレーブに確定する（＃８７）。そして、モデム１０Ａは、従来通り、回線などに関する種々の設定を行う（＃８８）。
【００５９】
一方、時間内にハンドシェーキングメッセージのやり取りを完了できなかった場合（＃８６でＮｏ、＃８４でＹｅｓ）は、マスタスレーブ決定部１０１は、モデム１０Ａのモードをマスタモードに決定し直し、各部は図５に示すステップ＃７４〜＃８０の処理を適宜実行する。
【００６０】
ローカルエリアネットワーク４０Ｂにいるユーザも同様に、ローカルエリアネットワーク４０Ａとローカルエリアネットワーク４０Ｂとの間に敷設されている電話線をモデム１０Ｂに繋げる。さらに、モデム１０Ｂの電源をオンにする。
【００６１】
すると、モデム１０Ｂも、モデム１０Ａを相手に、図５および図６に示す各処理を適宜実行する。
【００６２】
これにより、モデム１０Ａおよびモデム１０Ｂそれぞれのモードがランダムに変わる。したがって、図７または図８に示すように、一方のモデム１０がマスタモードでありもう一方のモデム１０がスレーブモードである時間帯が生じる。そして、この時間帯に、モデム１０Ａおよびモデム１０Ｂはハンドシェーキングメッセージのやり取りを行い、モードを確定させることができる。
【００６３】
なお、図９または図１０に示すように、ハンドシェーキングメッセージのやり取りを行っている途中で一方のモデム１０のモードの切換が行われると、ハンドシェーキングメッセージのやり取りを完了することができずモードを確定できない。しかし、このような場合も、モデム１０Ａおよびモデム１０Ｂそれぞれのモードがランダムな時間間隔で変わる。よって、モデム１０Ａおよびモデム１０Ｂは、ハンドシェーキングメッセージのやり取りの機会を再度得ることができ、モードの確定を図ることができる。
【００６４】
本実施例によると、ユーザは、２台のモデム１０のマスタおよびスレーブの役割分担を、事前の計画を行うことなく従来よりも容易に行うことができる。
【００６５】
〔ＳＨＤＳＬ対応のモデムの例〕
図１１はモデム５０のプラットフォームの例を示す図、図１２は接続用ソフトウェア５６３によって実現される機能的構成の例を示す図、図１３はマスタモード処理部５０４の例を示す図、図１４はスレーブモード処理部５０５の例を示す図である。
【００６６】
次に、モデム１０としてＳＨＤＳＬ対応のモデム５０を用いかつ既存のドライバなどを用いる場合の実施例を説明する。
【００６７】
広域ネットワーク３０の全体的な構成は、前に図１に示した通りである。モデム５０のハードウェアの構成も、前に図２に示したモデム１０のハードウェアの構成と基本的に同じである。つまり、図１１に示すように、モデム５０は、ＭＰＵ５０ｐ、ＲＡＭ５０ｑ、ＲＯＭ５０ｒ、液晶パネル５０ｓ、操作ボタン５０ｔ、および通信部５０ｕなどを有する。
【００６８】
ただし、モデム５０のＲＯＭ５０ｒには、図１１に示すように、物理レイヤ制御用ファームウェア５６１、ドライバ５６２、および接続用ソフトウェア５６３が記憶されている。
【００６９】
物理レイヤ制御用ファームウェア５６１は、ＳＨＤＳＬおよびイーサネット（登録商標）に従って通信が行われるように各ハードウェアを制御するためのプログラムである。さらに、物理レイヤ制御用ファームウェアには、Application Program Interface（ＡＰＩ）が用意されている。
【００７０】
ドライバ５６２は、物理レイヤ制御用ファームウェア５６１に用意されているＡＰＩの関数（機能）を適宜呼び出すなどしてモデム５０のハードウェアを制御するプログラムである。
【００７１】
物理レイヤ制御用ファームウェア５６１およびドライバ５６２は、モデム５０のベンダが予め用意したものである。機種によっては、物理レイヤ制御用ファームウェア５６１とドライバ５６２とが１組のソフトウェア（ファームウェア）として一体的に構成される場合もある。
【００７２】
ところで、ＳＨＤＳＬで使用する電話線（２ＢＡＳＥ−ＴＬ）の規格は、Institute of Electrical and Electronics Engineers（ＩＥＥＥ）８０２．３によって規定されている。したがって、物理レイヤ制御用ファームウェア５６１およびドライバ５６２は、ＩＥＥＥ８０２．３に準拠している。そして、ドライバ５６２には、ＩＥＥＥ８０２．３で規定されるレジスタが備わっている。
【００７３】
接続用ソフトウェア５６３は、モデム５０自身を他のモデム５０に新たに接続する際の処理を従来よりも容易に行うためのソフトウェアである。つまり、図３に示した各部と基本的に同じ役割を果たす。
【００７４】
しかし、図１１の例は、図３に示した各部の機能を、接続用ソフトウェア５６３だけでなく、物理レイヤ制御用ファームウェア５６１およびドライバ５６２によって実現する。
【００７５】
接続用ソフトウェア５６３には、図１２に示すようなマスタスレーブ決定部５０１、リセット指令部５０２、マスタスレーブ切換部５０３、マスタモード処理部５０４、およびスレーブモード処理部５０５などを実現するためのプログラムおよびデータが含まれている。これらのプログラムは、ＭＰＵ５０ｐによって実行される。
【００７６】
次に、図１２に示すモデム５０の各部の処理内容などについて、説明する。なお、図３で説明した事項と共通する事項については、説明を省略する。
【００７７】
マスタスレーブ決定部５０１は、図３のマスタスレーブ決定部１０１と同様に、モデム５０自身のモードをマスタモードとするのかスレーブモードとするのかを決定する。
【００７８】
リセット指令部５０２は、マスタスレーブ決定部５０１によってモードの決定がなされるごとに、ハードウェアの設定値などをリセットする。リセットは、例えば、リセット用のコマンドまたはＡＰＩ関数をドライバ５６２または物理レイヤ制御用ファームウェア５６１に対して指定することによって、行えばよい。
【００７９】
マスタスレーブ切換部５０３は、マスタスレーブ決定部５０１がモードをマスタモードに決定した場合は、マスタモード処理部５０４を有効にして、スレーブモード処理部５０５を無効にする。一方、マスタスレーブ決定部５０１がモードをスレーブモードに決定した場合は、マスタスレーブ切換部５０３は、スレーブモード処理部５０５を有効にして、マスタモード処理部５０４を無効にする。
【００８０】
マスタモード処理部５０４は、図１３に示すように、マスタモード設定指令部５７１、モード確定処理開始指令部５７２、乱数発生部５７３、モード確定チェック部５７４、および回線設定指令部５７５などを有する。このような構成により、マスタモード処理部５０４は、マスタとして他のモデム５０と接続するための処理を行う。この処理は、マスタスレーブ切換部５０３によってマスタモード処理部５０４が有効に切り換えられたタイミングで開始される。
【００８１】
マスタモード設定指令部５７１は、モデム５０自身のモードをマスタモードに設定する処理を、ドライバ５６２または物理レイヤ制御用ファームウェア５６１に行わせる。この際に、マスタモード設定指令部５７１は、マスタモードへの切換用のコマンドまたはＡＰＩ関数をドライバ５６２または物理レイヤ制御用ファームウェア５６１に対して指定すればよい。すると、ドライバ５６２または物理レイヤ制御用ファームウェア５６１は、モードをマスタモードに設定する。後述するスレーブモード設定指令部５８１（図１４参照）によるスレーブモードの設定の場合も、同様である。
【００８２】
モード確定処理開始指令部５７２は、マスタモードへの設定の完了後、マスタとしてハンドシェーキングメッセージのやり取りを開始するようにドライバ５６２に対して指令する。指令は、ＩＥＥＥ８０２．３のＲｅｇ６．１６つまり「45.2.6.6 10P/2B aggregation discovery control register (Register 6.16)」というレジスタの「Discovery Operation (Bit [1:0])」に「Get(BitVal=10)」を設定することによって、行えばよい。すると、ドライバ５６２および物理レイヤ制御用ファームウェア５６１によって通信部５０ｕなどが制御され、最初のメッセージつまりメッセージＭＧ１が相手方へ発信される。
【００８３】
乱数発生部５７３は、マスタモードに設定されるごとに、所定の範囲の乱数を発生させる。
【００８４】
モード確定チェック部５７４は、マスタモードに設定されてから乱数発生部５７３が発生させた乱数分の時間（秒）が経過するまでの間、他のモデム５０とのリンクが確立されたか否かを、次のようにチェックする。
【００８５】
モード確定チェック部５７４は、ＩＥＥＥ８０２．３のＲｅｇ３．６０つまり「45.2.3.17 10P/2B capability register (register 3.60)」というレジスタの「Remote PAF supported Bit[11]」の値をドライバ５６２から読み出す。そして、モード確定チェック部５７４は、読み出した値が「link partner supports PAF(BitVal=1)」に変化したことでハンドシェーキングメッセージのやり取りが正常に完了したと判断し、モードが確定されたと判定する。そうでなければ、モードが確定されていないと判定する。
【００８６】
ここで、自身と他のモデム５０は、前記ＩＥＥＥ８０２．３のＲｅｇ３．６０の「PAF available Bit[12]」の値が「PAF supported(BitVal=1)」であることが前提である。（PAF：PME Aggregation Functionの略称であり、SHDSLチップでは一般的に実装されている機能である。）
回線設定指令部５７５は、モードが確定されたとモード確定チェック部５７４によって判定（検知）されたら、モデム５０自身のモードをマスタモードとして回線設定を行う。その設定は、例えば、回線設定用のコマンドまたはＡＰＩ関数をドライバ５６２または物理レイヤ制御用ファームウェア５６１に対して指定することによって、モデム５０自身がマスタとして動作するための、回線などに関する種々の設定を行えばよい。
【００８７】
図１２に戻って、スレーブモード処理部５０５は、図１４に示すように、スレーブモード設定指令部５８１、乱数発生部５８２、モード確定チェック部５８３、および回線設定指令部５８４などを有する。このような構成により、スレーブモード処理部５０５は、スレーブとして他のモデム５０と接続するための処理を行う。この処理は、マスタスレーブ切換部５０３によってスレーブモード処理部５０５が有効に切り換えられたタイミングで開始される。
【００８８】
スレーブモード設定指令部５８１は、モデム５０自身のモードをスレーブモードに設定する処理をドライバ５６２または物理レイヤ制御用ファームウェア５６１に行わせる。
【００８９】
乱数発生部５８２は、スレーブモードに設定されるごとに、所定の範囲の乱数を発生させる。
【００９０】
モード確定チェック部５８３は、スレーブモードに設定されてから乱数発生部５７３が発生させた乱数分の時間（秒）が経過するまでの間、他のモデム５０とのリンクが確立されたか否かをチェックする。チェックの方法は、前に説明したモード確定チェック部５７４によるチェックの方法と、同様である。つまり、モード確定チェック部５８３は、ＩＥＥＥ８０２．３のＲｅｇ３．６０の「Remote PAF supported Bit[11]」の値が「link partner supports PAF(BitVal=1)」に変化したことでハンドシェーキングメッセージのやり取りが正常に完了したと判断し、モードが確定されたと判定する。そうでなければ、モードが確定されていないと判定する。
【００９１】
回線設定指令部５８４は、モードが確定されたとモード確定チェック部５８３によって判定（検知）されたら、モデム５０自身のモードをスレーブモードとして回線設定を行う。その設定は、例えば、回線設定指令部５７５と同様、回線設定用のコマンドまたはＡＰＩ関数をドライバ５６２または物理レイヤ制御用ファームウェア５６１に対して指定することによって、モデム５０自身がスレーブとして動作するための、回線などに関する種々の設定を行えばよい。
【００９２】
図１２に戻って、マスタスレーブ決定部５０１は、乱数発生部５７３または乱数発生部５８２が発生させた乱数に対応する時間が経過してもモード確定チェック部５７４またはモード確定チェック部５８３がモード確定を検知しなかった場合に、モデム５０自身のモードを、現在のモードとは反対のモードに決定し直す。
【００９３】
このような構成により、モデム５０のモードは、所定の範囲のランダムな時間間隔でマスタモード、スレーブモード、マスタモード、スレーブモード、…、と決定される。または、同様の時間間隔でスレーブモード、マスタモード、スレーブモード、マスタモード、…、と決定される。そして、他のモデム５０とのハンドシェーキングメッセージのやり取りが正常に完了したら、モードが確定したこととなり決定の処理が中止される。
【００９４】
モデム５０の全体的な処理の流れは、基本的に、前に図５および図６に示すフローチャートで説明した通りである。以下、モデム５０において既存のドライバなどを用いた場合の各ステップの処理について、説明する。
【００９５】
ローカルエリアネットワーク４０Ａにはモデム５０としてモデム５０Ａが備えられている。一方、ローカルエリアネットワーク４０Ｂにはモデム５０としてモデム５０Ｂが備えられている。モデム５０Ａとモデム５０Ｂとは未だ繋がれておらず、これから接続が試みられる。
【００９６】
ローカルエリアネットワーク４０Ａにいるユーザは、ローカルエリアネットワーク４０Ａとローカルエリアネットワーク４０Ｂとの間に敷設されている電話線をモデム５０Ａに繋げる。さらに、モデム５０Ａの電源をオンにする。
【００９７】
すると、モデム５０Ａは、モデム１０Ａと同様の処理を実行する。つまり、モデム５０Ａにおいて、マスタスレーブ決定部５０１、リセット指令部５０２、およびマスタスレーブ切換部５０３は、ランダムな時間間隔でモデム５０Ａのモードをマスタモードおよびスレーブモードのいずれかに繰り返し切り換える（図５の＃７１〜＃７５、図６の＃８１〜＃８３）。
【００９８】
マスタモード処理部５０４は、マスタモードである間、マスタとしてモデム５０Ｂとのモードの確定を試みる（＃７７）。この際に、マスタモード処理部５０４は、Ｒｅｇ６．１６の「Discovery Operation (Bit [1:0])」に「Get(BitVal=10)」を設定する。これにより、物理レイヤ制御用ファームウェア５６１およびドライバ５６２によって通信部５０ｕが制御され、メッセージＭＧ１がモデム５０Ｂへ送信される。メッセージＭＧ１がモデム５０Ｂによって受信されない場合は、スレーブモードに切り換えられるまで定期的にメッセージＭＧ１がモデム５０Ａからモデム５０Ｂへ送信される。
【００９９】
そして、スレーブモードに切り換わるまでに、メッセージＭＧ１がモデム５０Ｂによって受信され、ハンドシェーキングメッセージのやり取りが正常に完了したら（＃７８でＹｅｓ）、モデム５０Ａの役割がマスタに確定し、回線設定を行うことでリンクが確立する（＃７９、＃８０）。以後、モデム５０Ａはマスタとしてモデム５０Ｂと通信を行う。なお、モードの確定の検知は、Ｒｅｇ３．６０の「Remote PAF supported Bit[11]」の値をチェックすることによって行うことができる。
【０１００】
一方、スレーブモードである間、スレーブモード処理部５０５は、スレーブとしてモデム５０Ｂとのモードの確定を試みる（＃８５）。この際に、モデム５０ＢからメッセージＭＧ１が送信されてくるのを待つ。
【０１０１】
そして、マスタモードに切り換わるまでに、メッセージＭＧ１がモデム５０Ｂから届き、ハンドシェーキングメッセージのやり取りが正常に完了したら（＃８６でＹｅｓ）、モデム５０Ａの役割がスレーブに確定する（＃８７、＃８８）、以後、モデム５０Ａはスレーブとしてモデム５０Ｂと通信を行う。スレーブモードにおけるモードの確定の検知も、Ｒｅｇ３．６０の「Remote PAF supported Bit[11]」の値をチェックすることによって行うことができる。
【０１０２】
モデム５０Ｂも同様に、モデム５０Ａを相手に、図５および図６に示した手順で、上に説明した各処理を適宜実行する。
【０１０３】
本実施例によると、予め用意されている、ＩＥＥＥ８０２．３に規定されるレジスタを用いることによって簡単に、２台のモデム１０のマスタおよびスレーブの役割分担を行うことができる。
【０１０４】
上述の各実施例では、マスタモードを継続する時間およびスレーブモードを継続する時間を、モードの決定または再決定の際に決定したが、それ以外の決定方法を用いてもよい。例えば、モデム１０、５０は、モードの決定または再決定の後、ハンドシェーキングメッセージのやり取りをすべて完了するのに要する時間が経過したら、所定の時間（例えば、１秒）を経過するごとに乱数を発生させる。そして、発生させた乱数が所定の値であれば、モードを決定し直す。そうでなければ、モードを継続する。
【０１０５】
その他、広域ネットワーク３０、ローカルエリアネットワーク４０、モデム１０、５０の全体または各部の構成、処理内容、処理順序などは、本発明の趣旨に沿って適宜変更することができる。
【符号の説明】
【０１０６】
１０、５０  モデム（通信機器）
１０５  マスタ側メッセージ交換処理部（マスタ処理手段）
１０６  スレーブ側メッセージ交換処理部（スレーブ処理手段）
１０１、５０１  マスタスレーブ決定部（切換手段）
１０２  乱数発生部（切換手段）
１０３  マスタモード切換処理部（切換手段）
１０４  スレーブ側切換処理部（切換手段）
１０７  リンク確立処理部（確定手段）
５０３  マスタスレーブ切換部（切換手段）
５０４  マスタモード処理部（マスタ処理手段）
５０５  スレーブモード処理部（スレーブ処理手段）
【図１】
2011160164.tif 000003
【図２】
2011160164.tif 000004
【図３】
2011160164.tif 000005
【図４】
2011160164.tif 000006
【図５】
2011160164.tif 000007
【図６】
2011160164.tif 000008
【図７】
2011160164.tif 000009
【図８】
2011160164.tif 000010
【図９】
2011160164.tif 000011
【図１０】
2011160164.tif 000012
【図１１】
2011160164.tif 000013
【図１２】
2011160164.tif 000014
【図１３】
2011160164.tif 000015
【図１４】
2011160164.tif 000016