以下、図面に基づいて、本願の開示する通信装置、通信システム、切替制御方法及び切替制御プログラムの実施例を詳細に説明する。尚、本実施例により、開示技術が限定されるものではない。
図1は、本実施例の通信システムの一例を示す説明図である。図1に示す通信システム1は、有線ネットワークシステム(以下、単に有線システムと称する)2と、マルチホップネットワークシステム(以下、単にマルチホップシステムと称する)3とを有する。有線システム2は、例えば、WAN(Wide Area Network)で構築し、通信システム1全体を監視するサーバ4を有する。また、マルチホップシステム3は、自律型マルチホップ方式のアドホック通信ネットワークで構築し、通信ユニット5と、中継ユニット6と、ゲートウェイ(以下、単にGWと称する)7とを有する。尚、通信ユニット5及び中継ユニット6は、通信装置である。
通信ユニット5、中継ユニット6及びGW7は、自律型マルチホップ方式の無線通信でデータを送信する。GW7は、マルチホップシステム3内の通信ユニット5及び中継ユニット6等と自律型マルチホップ方式の無線で通信すると共に、有線システム2内のサーバ4と有線で通信する。
図1に示す通信システム1は、例えば、家庭内の電力量をサーバ4側で収集して管理するシステムである。通信ユニット5は、例えば、家庭内に配置された、図示せぬ電力計に接続するユニットである。そして、サーバ4は、通信ユニット5を通じて各家庭内に配置された電力計から電力量を収集し、収集された家庭内の電力量を管理することになる。各通信ユニット5は、電力計から収集された電力量を定期的にGW7経由でサーバ4に送信する。更に、サーバ4は、例えば、通信ユニット5を制御する制御データをGW7経由で各通信ユニット5に送信する。尚、本システム内の電力計は、家庭内に固定配置されるため、例えば、通信ユニット5も固定配置されたものとなる。
図2は、GW7のハードウェア構成の一例を示すブロック図である。図2に示すGW7は、ネットワークインタフェース11と、無線インタフェース12と、補助記憶装置13と、メモリ14と、プロセッサ15とを有する。ネットワークインタフェース11は、有線システム2と接続する通信インタフェースである。無線インタフェース12は、マルチホップシステム3と接続するインタフェースである。補助記憶装置13は、後述するルーティングテーブルやリンクテーブル等の経路情報に関わる各種情報を記憶する、例えば、フラッシュメモリである。メモリ14は、各種プログラムの各種情報を記憶するものである。プロセッサ15は、GW7全体を制御するものである。
図3は、GW7の機能構成の一例を示すブロック図である。プロセッサ15は、メモリ14に格納されたプログラムに基づき各種プロセスとなる機能を構成する。図3に示すプロセッサ15は、ネットワーク通信部21と、無線通信部22と、フレーム解析部23と、データ生成部24と、データ取得部25と、設定情報取得部26と、GW情報生成部27と、経路制御部28と、記憶部29と、制御部30とを機能する。ネットワーク通信部21は、ネットワークインタフェース11を通じて有線システム2との有線通信を制御する。無線通信部22は、無線インタフェース12を通じてマルチホップシステム3との無線通信を制御する。
フレーム解析部23は、無線インタフェース12を通じてマルチホップシステム3内の通信ユニット5、中継ユニット6及びGW7のフレームを解析する。データ生成部24は、データを生成する。データ取得部25は、データを取得する。設定情報取得部26は、設定情報を取得する。経路制御部28は、自律型マルチホップ方式の通信経路を制御する。GW情報生成部27は、自GW7の負荷、例えば、収容ユニット台数及び転送トラフィック量等を含むGW情報を生成する。記憶部29は、後述するリンクテーブル31、ルーティングテーブル32及びフレーム転送テーブル33等の各種テーブルを管理するものである。制御部30は、無線通信部22を通じて、定期的に自GW7が収容する収容ユニット台数、すなわち接続台数を通信ユニット5や中継ユニット6に報知する。
図4は、リンクテーブル31のテーブル構成の一例を示す説明図である。図4に示すリンクテーブル31は、隣接送信元(LS:Local Source)31A毎の復路の重み値31B、往路の重み値31C及び双方向の重み値31Dを管理するものである。隣接送信元(LS)は、Helloフレームを送信した隣接ユニットのIP/MACアドレスである。復路の重み値31Bは、隣接送信元(LS)との復路の信号品質に関わる値である。往路の重み値31Cは、隣接送信元(LS)との往路の信号品質に関わる値である。双方向の重み値31Dは、隣接送信元(LS)との間の双方向の信号品質に関わる値である。
図5は、ルーティングテーブル32のテーブル構成の一例を示す説明図である。図5に示すルーティングテーブル32は、最終宛先(GD:Global Destination)32A毎に隣接宛先(LD:Local Destination)32B及び評価値32Cを管理するものである。最終宛先32Aは、データの最終宛先のIP/MACアドレスである。隣接宛先32Bは、データを最終宛先に送信する際の中継する隣接ユニットのIP/MACアドレスである。評価値32Cは、データを中継する経路の優先順位を決定するのに使用するものである。尚、評価値32Cは、数値が小さくなるに連れて評価が高く、優先順位も高くなるものとする。ルーティングテーブル32は、最終宛先32A毎に、優先順位、例えば、第1位〜第3位の隣接宛先(LD1〜LD3)32B及び、隣接宛先32B毎の評価値32Cを管理するものである。
図6は、フレーム転送テーブル33のテーブル構成の一例を示す説明図である。図6に示すフレーム転送テーブル33は、転送フレームの識別情報(FID:Frame Identification)33A毎に、送信元(GS:Global Source)33B、フラグ33C及び隣接送信元(LS)33Dを管理するものである。更に、フレーム転送テーブル33は、FID33A毎に、隣接宛先1(LD1)33E、隣接宛先2(LD2)33F、隣接宛先3(LD3)33G及び最新隣接宛先(LAST)33Hを管理するものである。FID33Aは、転送フレームを識別するIDである。送信元(GS)33Bは、転送フレームの送信元を識別するIP/MACアドレスである。フラグ33Cは、転送フレームの転送を試したカウント値である。
隣接送信元(LS)33Dは、転送フレームを中継した送信元の隣接ユニットのIP/MACアドレスである。隣接宛先1(LD1)33Eは、転送フレームを最終宛先に転送する際に使用する優先順位が第1位の隣接宛先ユニットのIP/MACアドレスである。隣接宛先2(LD2)33Fは、転送フレームを最終宛先に転送する際に使用する優先順位が第2位の隣接宛先ユニットのIP/MACアドレスである。隣接宛先3(LD3)33Gは、転送フレームを最終宛先に転送する際に使用する優先順位が第3位の隣接宛先ユニットのIP/MACアドレスである。最新隣接宛先33Hは、転送フレームを最終宛先に転送する際に最後に使用した隣接宛先ユニットのIP/MACアドレスである。尚、最新隣接宛先33Hは、例えば、隣接宛先(LD1〜LD3)の何れか一つである。
GW7の制御部30は、Helloフレーム内にGW到達ホップ数及び接続台数を付加する。図7は、Helloフレームの構成の一例を示す説明図である。図7に示すHelloフレーム90は、PHYヘッダ91と、MAC(Media Access Control Access)ヘッダ92と、IP(Internet Protocol)ヘッダ93と、UDP(User Data Program)ヘッダ94とを有する。Helloフレーム90は、アドホックヘッダ95と、ペイロード96と、FCS(Frame Check Sequence)97とを有する。PHYヘッダ91は、物理層のアドレスである。MACヘッダ92は、データリンク層のアドレスである。IPヘッダ93は、ネットワーク層のアドレスである。UDPヘッダ94は、トランスポート層のアドレスである。アドホックヘッダ95は、アドホック通信のヘッダである。
アドホックヘッダ95は、パケット長95Aと、シーケンス番号95Bと、タイプ95Cと、TTL(Time to Live)95Dと、ホップ数95Eとを有する。パケット長95Aは、ペイロード内のパケットの長さを示すものである。シーケンス番号95Bは、コネクションを識別する情報である。TTL95Dは、パケットの有効期間を示すものである。タイプ95Cは、データフレームやHelloフレームを識別するものである。
また、ペイロード96内には、GW到達ホップ数96A及び接続台数96Bが付加されている。GW到達ホップ数96Aは、Helloフレームを受信した通信ユニット5から当該Helloフレームを発信したGW7に到達するまでのホップ数である。更に、接続台数96Bは、Helloフレームを発信したGW7が収容する通信ユニット5等の接続台数である。尚、通信ユニット5は、GW7からHelloフレームを受信した場合、ペイロード96内の接続台数96B及びGW到達ホップ数96Aを収集する。そして、通信ユニット5は、隣接宛先がある場合、ペイロード96内のGW到達ホップ数96Aを+1更新する。そして、通信ユニット5は、更新されたGW到達ホップ数96Aと、接続台数96BとをHelloフレームに付加してHelloフレームを次の隣接宛先ユニット5に送信する。そして、各通信ユニット5は、隣接宛先がある場合、GW到達ホップ数96Aを更新しながら、次の隣接宛先にHelloフレームを順次送信する。その結果、GW7は、末端の通信ユニット5まで接続台数96Bを含むHelloフレームを送信できる。
図8は、通信ユニット5のハードウェア構成の一例を示すブロック図である。図8に示す通信ユニット5は、外部装置入力部51と、無線インタフェース52と、補助記憶装置53と、メモリ54と、プロセッサ55とを有する。外部装置入力部51は、例えば、電力量を計測する電力計等の外部装置と接続するインタフェースである。無線インタフェース52は、マルチホップシステム3と無線接続するインタフェースである。補助記憶装置53は、各種情報を記憶するフラッシュメモリである。メモリ54は、例えば、切替制御プログラム等の各種プログラムの情報を記憶するメモリである。プロセッサ55は、通信ユニット5全体を制御する。尚、中継ユニット6のハードウェア構成は、図8に示す通信ユニット5とほぼ同一の構成であり、例えば、外部装置入力部51を除いた構成である。
図9は、通信ユニット5の機能構成の一例を示すブロック図である。図9に示すプロセッサ55は、メモリ54に格納されたプログラムに基づき各種プロセスとなる機能を構成する。図9に示すプロセッサ55は、無線通信部61と、フレーム解析部62と、データ生成部63と、データ取得部64と、設定情報取得部65と、経路制御部66と、記憶部67と、制御部68とを機能する。無線通信部61は、無線インタフェース52を通じてマルチホップシステム3との無線通信を制御する。
フレーム解析部62は、無線インタフェース52を通じてマルチホップシステム3内のGW7、通信ユニット5や中継ユニット6のフレームを解析する。データ生成部63は、データを生成する。データ取得部64は、データを取得する。設定情報取得部65は、設定情報を取得する。経路制御部66は、自律型マルチホップ方式の通信経路を制御する。経路制御部66は、ルーティングテーブル32を参照し、最終宛先32Aの第1位の隣接宛先(LD1)のユニットで最終宛先のデータを中継する。記憶部67は、図4に示すリンクテーブル31、図5に示すルーティングテーブル32及び図6に示すフレーム転送テーブル33を管理するものである。記憶部67は、主GWアドレス領域に主GW7のIP/MACアドレス、副GWアドレス領域に副GW7のIP/MACアドレスを対応付けて管理する。尚、主GW7は、通信ユニット5が運用時に使用するGW7であり、副GW7は、例えば、主GW7の障害時や保守時に使用するGW7である。
制御部68は、収集部68Aと、算出部68Bと、判定部68Cと、切替制御部68Dとを有する。収集部68Aは、無線通信部61を通じて、例えば、収容中GW7Aを含む周辺GW7からHelloフレームを定期的に受信する。尚、Helloフレームは、各GW7から、例えば、10分周期で送信されるものである。そして、収集部68Aは、受信したHelloフレーム内の接続台数96B及びGW到達ホップ数96Aを定期的に収集する。更に、収集部68Aは、例えば、GW到達ホップ数96Aが収容先として許容できる範囲内の場合、当該GW到達ホップ数96Aが付加されたHelloフレームを発信したGW7を収容候補GW7Bと判定する。尚、収容中GW7Aは、一例として、通信ユニット5が無線接続するGW7等がある。また、収容候補GW7Bは、一例として、通信ユニット5と無線接続可能な未接続のGW7であって、収容中GW7Aから切替接続可能なGW7等がある。
算出部68Bは、収容中GW7Aの接続台数GW1から収容候補GW7Bの接続台数GW2を差し引いた差分(GW1−GW2)を算出する。算出部68Bは、差分(GW1−GW2)が差分閾値Lを超えた場合、差分(GW1−GW2)に整数「1」以下の係数kを乗算することで主GW7Aから副GW7Bに移動する移動対象の通信ユニット5の移動対象台数Tを算出する。移動対象台数は、T=(GW1−GW2)×kである。例えば、収容中GW7Aの接続台数GW1を600台、収容候補GW7Bの接続台数GW2を100台、係数kを0.1、差分閾値Lを200台とする。この場合、算出部68Bは、差分(600−100)が差分閾値Lを超えたので、移動対象台数Tが(600−100)×0.1=50となる。
判定部68Cは、移動対象台数Tと、収容中GW7Aの接続台数(GW1)と、乱数とに基づき、自ユニットが移動対象に該当したか否かを判定する。尚、移動対象とは、収容中GW7Aから収容候補GW7Bに切替接続する移動対象の通信ユニット5である。つまり、判定部68Cは、収容中GW7A内の600台(GW1)から自分が50台(移動対象台数)の移動対象に該当したか否かを判定するものである。
判定部68Cの判定アルゴリズムは、差分(GW1−GW2)が差分閾値L以上の場合に、移動対象に該当したか否かを判定するアルゴリズムである。尚、判定アルゴリズムは、例えば、IF((GW1−GW2)>L){T=INT((GW1−GW2)*k)P=Int(GW1*Rnd()+1)IF(P<=T){移動対象}else{移動対象外}}である。
切替制御部68Dは、自ユニットが移動対象に該当した場合、収容中GW7Aから収容候補GW7Bに切替えて接続する。つまり、切替制御部68Dは、収容候補GW7Bに対して接続を要求し、収容中GW7Aに対して切断を要求する。そして、切替制御部68Dは、主GWアドレス領域に収容候補GW7BのIP/MACアドレスを、副GWアドレス領域に収容中GW7AのIP/MACアドレスを登録して記憶部67を更新する。その結果、切替制御部68Dは、収容中GW7Aから収容候補GW7Bへの切替が完了したことになる。
図10は、リンクテーブル31及びルーティングテーブル32の更新の一例を示す説明図である。尚、説明の便宜上、通信ユニット5Bは、定期的にHelloフレームを自分の無線エリア内で無線送信する。無線エリア内のユニット、例えば、GW7A、通信ユニット5C及び5Fは、通信ユニット5BからHelloフレームを受信する。その結果、通信ユニット5は、Helloフレームを受信した際のRSSIに基づき、Helloフレームを送信したユニットとの間の復路の重み値31Bを算出する。尚、RSSIは、無線環境に大きく左右されるものである。
例えば、Helloフレームを受信した通信ユニット5Cは、LS31Aが“5B”及び復路の重み値31Bが“20”のリンクテーブル31を生成する。更に、通信ユニット5Cは、GD32Aが“5B”、LD32Bが“5B”、評価値32Cが“E”のルーティングテーブル32を生成する。また、Helloフレームを受信した通信ユニット5Fは、LS31Aが“5B”及び、復路の重み値31Bが“15”のリンクテーブル31を生成する。更に、通信ユニット5Fは、GD32Aが“5B”、LD32Bが“5B”、評価値32Cが“E”のルーティングテーブル32を生成する。尚、評価値“E”は未評価を示す。
また、Helloフレームを受信したGW7Aは、LS31Aが“5B”及び、復路の重み値31Bが“10”のリンクテーブル31を生成する。更に、GW7Aは、GD32Aが“5B”、LD32Bが“5B”、評価値32Cが“E”のルーティングテーブル32を生成する。
図11は、リンクテーブル31及びルーティングテーブル32の更新の一例を示す説明図である。図11に示す通信ユニット5Cは、Helloフレームを自分の無線エリア内に無線送信する。この際、通信ユニット5Cは、隣接する通信ユニット5Bの経路情報を管理しているため、通信ユニット5Bに関わる経路情報を含むHelloフレームを送信する。その結果、無線エリア内の隣接するユニット、例えば、通信ユニット5B、5D及び5Eは、通信ユニット5CからのHelloフレームを受信する。
Helloフレームを受信した通信ユニット5Bは、LS31Aが“5C”、復路、往路及び双方向の重み値31B〜31Dが“20”のリンクテーブル31を生成する。尚、通信ユニット5は、往路のRSSIに基づき往路の重み値31Cを算出すると共に、先に取得した復路の重み値31Bと往路の重み値31Cに基づき双方向の重み値31Dを算出する。更に、通信ユニット5Bは、GD32Aが“5C”、LD32Bが“5C”、評価値32Cが“25”のルーティングテーブル32を生成する。
また、Helloフレームを受信した通信ユニット5Dは、LS31Aが“5C”、復路の重み値31Bが“30”のリンクテーブル31を生成する。更に、通信ユニット5Dは、GD32Aが“5C”、LD32Bが“5C”、評価値32Cが“E”の他に、GD32Aが“5B”、LD32Bが“5C”、評価値32Cが“E”のルーティングテーブル32を生成する。また、Helloフレームを受信した通信ユニット5Eは、LS31Aが“5C”、復路の重み値31Bが“20”のリンクテーブル31を生成する。通信ユニット5Eは、GD32Aが“5C”、LD32Bが“5C”及び評価値32Cが“E”の他に、GD32Aが“5B”、LD32Bが“5C”及び評価値32Cが“E”のルーティングテーブル32を生成する。
つまり、GW7、通信ユニット5及び中継ユニット6は、隣接ユニットからのHelloフレームを受信し、受信されたHelloフレームに基づき、ルーティングテーブル32及びリンクテーブル31の内容を更新する。GW7、通信ユニット5及び中継ユニット6は、ルーティングテーブル32及びリンクテーブル31の内容に基づきマルチホップシステム3内の通信経路をルーティングする。
図12は、ルーティングテーブル32の使用の一例を示す説明図である。尚、説明の便宜上、通信ユニット5Cは、最終宛先(GD)32A毎に最大3個までの第1位〜第3位の隣接宛先(LD)32B及び評価値32Cを管理するものである。図12に示す例では、例えば、最終宛先(GD)32Aが“5B”の場合、隣接宛先(LD)32Bが“5B”、“5D”及び“5E”である。その評価値32Cは“5”、“50”及び“60”である。通信ユニット5Cが最終宛先(GD)32Aの“5B”に対してデータを送信する場合、ルーティングテーブル32を参照し、評価値32Cが最良、すなわち小さい“5”の隣接宛先“5B”のルートを選択する。その結果、通信ユニット5Cは、“5B”の通信ユニット5にデータを送信する。
図13は、ルーティングテーブル32の更新の一例を示す説明図である。尚、説明の便宜上、通信ユニット5Bは、通信ユニット5Cに対してGW7Aからのデータを通信ユニット5Cに中継する。更に、通信ユニット5Cは、データに対する応答の“ACK”を通信ユニット5Bに送信する。尚、通信ユニット5Bは、最終宛先(GD)32Aの通信ユニット5Gに対して隣接宛先32Bの“5C”、”5F”及び“7A”のルーティングテーブル32を管理している。
通信ユニット5Bは、GW7Aから通信ユニット5G宛のデータを受信し、ルーティングテーブル32の評価値32Cを参照し、隣接宛先32Bの通信ユニット5Cを中継先に決定し、隣接宛先32Bである通信ユニット5Cにデータを送信する。その結果、通信ユニット5Bは、当該転送フレームの最新隣接宛先33Hを“5C”としてフレーム転送テーブル33に更新登録する。
更に、通信ユニット5Bは、転送フレームに対する応答(ACK)を通信ユニット5Cから受信した場合、隣接宛先32Bの“5C”に該当する評価値32Cを“10”に高めて、ルーティングテーブル32の内容を更新する。つまり、ルーティングテーブル32は、Helloフレームを受信した際のRSSIだけでなく、データ転送の実績に応じて評価値32Cを動的に更新する。
次に本実施例の通信システム1の動作について説明する。図14は、GW切替選択処理に関わる通信ユニット5側のプロセッサ55の処理動作の一例を示すフローチャートである。図14に示すGW切替選択処理は、各GW7の接続台数に基づき、自ユニットが移動対象に該当したか否かを判定し、移動対象に該当した場合、自ユニットを収容候補GW7Bに切替接続する処理である。
図14においてプロセッサ55の制御部68内の収集部68Aは、周辺GW7、例えば、収容中GW7A及び収容候補GW7Bから接続台数(GW1,GW2)を定期的に受信したか否かを判定する(ステップS11)。尚、収集部68Aは、接続台数96B及びGW到達ホップ数96Aが付加されたHelloフレームを定期的に受信した場合に、GW到達ホップ数96Aに基づき収容候補GW7Bを選定するものである。制御部68内の算出部68Bは、収容中GW7A及び収容候補GW7Bの接続台数を受信した場合(ステップS11肯定)、収容中GW7Aの接続台数から収容候補GW7Bの接続台数を差し引いて差分(GW1−GW2)を算出する。更に、算出部68Bは、その差分(GW1−GW2)が差分閾値Lを超えたか否かを判定する(ステップS12)。算出部68Bは、差分が差分閾値Lを超えた場合(ステップS12肯定)、収容候補GW7Bの通信条件を満たすか否かを判定する(ステップS13)。尚、通信条件とは、収容候補GW7B内に通信ユニット5を収容接続する際の許容ホップ数やRSSI等を満たすか否かを示す条件である。
算出部68Bは、収容候補GW7Bの通信条件を満たした場合(ステップS13肯定)、収容中GW7Aの移動対象台数を算出する(ステップS14)。尚、算出部68Aは、INT(GW1−GW2)*kで移動対象台数Tを算出する。
更に、判定部68Cは、収容中GW7Aの接続台数(GW1)と、乱数とに基づき乱数値Pを算出する(ステップS15)。尚、判定部68Cは、INT(GW1)*Rand()+1)で乱数値Pを算出する。そして、判定部68Cは、ステップS14の移動対象台数T及びステップS15の乱数値Pに基づき、自ユニットが移動対象に該当したか否かを判定する(ステップS16)。尚、判定部68Cは、乱数値P≦移動対象Tの場合、自ユニットが移動対象に該当したものと判定する。また、判定部68Cは、乱数値P≦移動対象Tでない場合、自ユニットが移動対象に該当しなかったものと判定する。
制御部68内の切替制御部68Dは、自ユニットが移動対象に該当した場合(ステップS16肯定)、収容候補GW7Bに対して接続要求する(ステップS17)。切替制御部68Dは、収容候補GW7Bから接続要求に対する応答を受信したか否かを判定する(ステップS18)。切替制御部68Dは、接続要求に対する応答を受信した場合(ステップS18肯定)、収容中GW7Aに切断要求する(ステップS19)。切替制御部68Dは、主GW7Aから切断要求に対する応答を受信したか否かを判定する(ステップS20)。
切替制御部68Dは、切断要求に対する応答を受信した場合(ステップS20肯定)、主GWアドレス領域に切替前の収容候補GW7Bのアドレスを、副GWアドレス領域に切替前の収容中GW7Aのアドレスを登録する(ステップS21)。そして、切替制御部68Dは、図14に示す処理動作を終了する。その結果、通信ユニット5は、収容中GW7Aから収容候補GW7Bに切替接続する。
更に、切替制御部68Dは、収容候補GW7Bから接続要求に対する応答を受信していない場合(ステップS18否定)、収容候補GW7Bへの接続要求から一定時間経過したか否かを判定する(ステップS22)。切替制御部68Dは、接続要求から一定時間経過した場合(ステップS22肯定)、収容候補GW7Bに対して接続要求すべく、ステップS17に移行する。尚、例えば、収容候補GW7Bに対する接続要求を所定回数実行し、当該接続要求に対する応答が受信できない場合に、処理を中断して、ステップS11に移行するようにしても良い。また、切替制御部68Dは、収容候補GW7Bへの接続要求から一定時間を経過していない場合(ステップS22否定)、接続要求に対する応答を受信したか否かを判定すべく、ステップS18に移行する。
また、切替制御部68Dは、収容中GW7Aから切断要求に対する応答を受信していない場合(ステップS20否定)、収容中GW7Aへの切断要求から一定時間経過したか否かを判定する(ステップS23)。切替制御部68Dは、切断要求から一定時間を経過した場合(ステップS23肯定)、収容中GW7Aに対して切断要求すべく、ステップS19に移行する。また、切替制御部68Dは、収容中GW7Aへの切断要求から一定時間を経過していない場合(ステップS23否定)、切断要求に対する応答を受信したか否かを判定すべく、ステップS20に移行する。
また、収集部68Aは、収容中GW7A及び収容候補GW7Bの接続台数を受信していない場合(ステップS11否定)、接続台数の受信を継続監視すべく、ステップS11に移行する。また、算出部68Bは、接続台数の差分(GW1−GW2)が差分閾値Lを超えていない場合(ステップS12否定)、接続台数の受信を継続監視すべく、ステップS11に移行する。また、算出部68Bは、収容候補GW7Bの通信条件を満たさない場合(ステップS13否定)、既存の収容中GW7の経路を維持したまま(ステップS24)、接続台数の受信を継続監視すべく、ステップS11に移行する。尚、算出部68Bは、既存の収容中GW7Aの経路を維持したまま、他の収容候補GW7Bがある場合には、当該他の収容候補GW7Bの接続台数を用いてステップS12に移行するようにしても良い。また、判定部68Cは、自ユニットが移動対象に該当しなかった場合(ステップS16否定)、次の接続台数の受信を継続監視すべく、ステップS11に移行する。
図14に示すGW切替選択処理では、収容中GW7A側の通信ユニット5で差分(GW1−GW2)が差分閾値Lを超えた場合、差分に係数kを乗算して収容中GW7の移動対象台数Tを算出する。更に、通信ユニット5は、収容中GW7Aの接続台数(GW1)及び乱数に基づき乱数値Pを算出する。そして、通信ユニット5は、乱数値Pが移動対象台数T以下の場合、移動対象に該当したと判定する。そして、通信ユニット5は、移動対象に該当した場合、収容中GW7Aから収容候補GW7Bに切替接続する。そして、GW切替選択処理を繰り返すことで、収容中GW7Aの接続台数と収容候補GW7Bの接続台数との差が差分閾値L以下に徐々に収束する。その結果、収容中GW7A及び収容候補GW7Bの接続台数を均等化できる。
尚、ステップS11の処理では、収集部68Aが受信した各Helloフレーム内のGW到達ホップ数96Aに基づき収容候補GW7Bを判定した。しかしながら、収容候補GW7Aを特定することなく、収容中GW7A以外のGW7から受信した全てのHelloフレームを収容候補GW7Bからのものとみなしても良く。この場合、制御部68は、ステップS13の処理で通信条件を満たすか否かの判定結果に基づき、真の収容候補GW7Bと判定できる。
図15は、収容中GW7Aと収容候補GW7Bとの接続台数の収束の一例を示す説明図である。図15に示す収容中GW7Aの接続台数(GW1)を600台、収容候補GW7Bの接続台数(GW2)を100台、差分閾値Lを200台、係数kを0.1とする。そして、収容中GW7Aに接続する通信ユニット5は、GW切替選択処理を1回実行することで、例えば、収容中GW7Aの接続台数(GW1)が550台、収容候補GW7Bの接続台数(GW2)が150台に移行する。そして、GW切替選択処理を複数回繰り返し、収容中GW7に接続する通信ユニット5が、収容候補GW7Bに徐々に切替接続する。その結果、収容中GW7Aの接続台数と収容候補GW7Bの接続台数との差分を差分閾値L以下に徐々に収束する。
本実施例では、収容中GW7A配下の通信ユニット5が自律的に移動対象に該当するか否かを判定する。通信ユニット5は、移動対象に該当すると判定した場合、収容候補GW7Aから収容候補GW7Bに切替接続し、収容中GW7Aの接続台数と収容候補GW7Bの接続台数との差分を差分閾値L内に収束する。その結果、収容中GW7A及び収容候補GW7Bの接続台数の差が差分閾値L以下に徐々に収束して接続台数を均等化するため、収容中GW7Aの接続台数集中による無線輻輳の発生を防止できる。
また、本実施例では、収容中GW7A及び収容候補GW7Bの接続台数が均等化して収容中GW7A及び収容候補GW7Bでテーブル管理する通信ユニット5の経路情報の数も均等化できる。その結果、収容中GW7Aは、近傍に新規の通信ユニット5が配置された場合でも、テーブル内に空きがあるため、新規の通信ユニット5が登録できる。
また、本実施例では、無線経路中の障害物等で無線経路が偏ったとしても、移動対象に該当した収容中GW7Aの各通信ユニット5が自律的に収容候補GW7Bに切替接続するため、無線経路の偏りを軽減できる。
また、本実施例では、収容中GW7A及び収容候補GW7Bの接続台数の差分を一気に均等化するのではなく、移動対象台数T以内で、かつ乱数を使用して移動対象に該当した通信ユニット5のみを収容候補GW7Bに切替接続して徐々に均等化した。その結果、障害物等で無線経路が遮断されて直ちに復旧するような状況下でも、復旧の接続台数の変動による通信システム1の不安定化を確実に防止できる。
また、本実施例では、移動対象台数Tを算出する際に、収容中GW7A及び収容候補GW7Bの接続台数の差分に乗算する係数kを調整したので、収容中GW7Aから収容候補GW7Bに移動する移動対象の移動対象台数Tを簡単に調整できる。しかも、係数kを変えて移動対象台数Tを調整して、収容中GW7A及び収容候補GW7Bの接続台数の変化量を調整できる。その結果、急激な接続台数の変動で通信システム1が不安定になるような事態を回避できる。
また、上記実施例では、収容中GW7Aの接続台数から収容候補GW7Bの接続台数を差し引き、差分(GW1−GW2)が差分閾値Lを超えた場合にのみ、収容中GW7Aの通信ユニット5から移動対象に該当したか否かを判定した。その結果、収容中GW7Aの各通信ユニット5は、差分が小さい場合、通信ユニット5を収容候補GW7Bに切替接続する不要な処理を抑制できる。
また、上記実施例では、各GW7が、Helloフレームを10分間周期で送信し、HelloフレームがGW7配下の末端の通信ユニット5に到達するまでには若干の遅延が生じ、各通信ユニット5側でのHelloフレーム取得に時間差が生じる。しかしながら、本システムで使用する通信ユニット5は、例えば、家庭内の電力計に固定配置される場合が多く、各Helloフレームの取得時間差の間に、接続台数が変動することも少ない。しかも、前述した通り、収容中GW7A内の移動対象に該当した通信ユニット5は、収容候補GW7Bに徐々に切替接続する。その結果、各Helloフレームの取得時間差による接続台数に変動が生じたとしても、接続台数の変動で通信システム1が不安定になるような事態を回避できる。
尚、上記実施例では、(GW1−GW2)*kで移動対象台数Tを算出した。この場合、判定アルゴリズム1は、IF((GW1−GW2)>L){T=INT((GW1−GW2)*k)P=Int(GW1*Rnd()+1)IF(P<=T){移動対象}else{移動対象外}}となる。そこで、判定アルゴリズム1を使用したGW切替選択処理でシミュレーションした。図16Aは、判定アルゴリズム1でシミュレーションした接続台数の収束推移の一例を示す説明図である。図16Aは、収容中GW7Aの接続台数を550台、収容候補GW7Bの接続台数を150台、差分閾値Lを100台、係数kを0.1とする。そして、例えば、5回目のGW切替選択処理で、収容中GW7Aの接続台数は395台、収容候補GW7Bの接続台数は305台に収束するという結果が得られた。ただし、乱数での移動対象台数が、合計でTになった場合のシミュレーション結果である。
また、差分(GW1−GW2)の1/2に係数kを乗算して移動対象台数Tを算出しても良い。この場合、判定アルゴリズム2は、IF((GW1−GW2)>L){T=INT((GW1−GW2)/2*k)P=Int(GW1*Rnd()+1)IF(P<=T){移動対象}else{移動対象外}}となる。そこで、判定アルゴリズム2を使用したGW切替選択処理でシミュレーションした。図16Bは、判定アルゴリズム2でシミュレーションした接続台数の収束推移の一例を示す説明図である。図16Bは、収容中GW7Aの接続台数を475台、収容候補GW7Bの接続台数を225台、差分閾値Lを100台、係数kを0.5とする。そして、例えば、3回目のGW切替選択処理で、収容中GW7Aの接続台数は381台、収容候補GW7Bの接続台数は319台に収束するという結果が得られた。
また、差分(GW1−GW2)の1/2に、主GW1の接続台数に対する副GW7Bの接続台数の割合及び係数kを乗算して移動対象台数Tを算出しても良い。この場合、判定アルゴリズム3は、IF((GW1−GW2)>L){T=INT((GW1−GW2)/2*(GW2/GW1)*k)P=Int(GW1*Rnd()+1)IF(P<=T){移動対象}else{移動対象外}}となる。そこで、判定アルゴリズム3を使用したGW切替選択処理でシミュレーションした。図16Cは、判定アルゴリズム3でシミュレーションした接続台数の収束推移の一例を示す説明図である。図16Cは、収容中GW7Aの接続台数を495台、収容候補GW7Bの接続台数を205台、差分閾値Lを100台、係数kを0.5とする。そして、例えば、2回目のGW切替選択処理で、収容中GW7Aの接続台数は396台、収容候補GW7Bの接続台数は304台に収束するという結果が得られた。
また、各副GW7Bの接続台数を受信し、差分(GW−GW2)の1/2と対象副GWの割合に係数kを乗算して移動対象台数Tを算出しても良い。この場合、判定アルゴリズム4は、IF((GW1−GW2)>L){IF((GW1−GW2)/2<GW2){T=INT((GW1−GW2)/2/GW2*k)}else{T=INT(GW2*k)}P=Int(GW1*Rnd()+1)IF(P<=T){移動対象}else{移動対象外}}となる。そこで、判定アルゴリズム4を使用したGW切替選択処理でシミュレーションした。図16Dは、判定アルゴリズム4でシミュレーションした接続台数の収束推移の一例を示す説明図である。図16Dは、収容中GW7Aの接続台数を400台、収容候補GW7Bの接続台数を300台、差分閾値Lを100台、係数kを0.8とする。そして、例えば、2回目のGW切替選択処理で、収容中GW7Aの接続台数は361台、収容候補GW7Bの接続台数は339台に収束するという結果が得られた。
また、上記実施例では、説明の便宜上、収容中の通信収容装置として一台の収容中GW7A、収容候補の通信収容装置として一台の収容候補GW7Bを例に挙げて説明した。しかしながら、収容候補GW7Bは、一台に限定されるものではなく、複数台であっても良い。また、収容中GW7Aを主GW、収容候補GW7Bを主GW7と従属関係のある副GW7としても良い。
また、上記実施例では、移動対象として通信ユニット5を例示したが、通信ユニット5に限定されるものではなく、中継ユニット6でも良い。
また、上記実施例では、収容中GW7Aに接続する全通信ユニット5を同一係数kの当選確率で移動対象に該当したか否かを判定した。しかし、収容中GW7Aに接続された通信ユニット5は、Helloフレーム内のGW到達ホップ数96Aに基づき、収容中GW7Aまでのホップ数の漸増に応じて通信ユニット5の当選確率を高めるべく、係数kを漸増させるようにしても良い。その結果、収容中GW7A内の通信ユニット5の内、ホップ数の少ない通信ユニット5から切替える場合に比較して、収容中GW7Aから遠く、ホップ数の多い通信ユニット5から優先的に切替えた方が切替影響を小さくして通信システム1の安定化が図れる。
また、上記実施例では、収容中GW7Aに接続された通信ユニット5の内、中継する通信ユニット5の台数の漸増に応じて係数kを漸増させるようにしても良い。その結果、収容中GW7A内の通信ユニット5の内、中継数の多い通信ユニット5から切替える場合に比較して、中継数の少ない通信ユニット5から優先的に切替えた方が切替影響を小さくして通信システム1の安定化が図れる。
また、上記実施例では、各GW7が主GWとして収容中の通信ユニット5及び、副GWとして収容可能な通信ユニット5のアドレスを管理しておき、各GW7が、自分の接続台数をユニキャストでアドレスを把握している各通信ユニット5に通知しても良い。その結果、各通信ユニット5は、主GWの接続台数及び副GWの接続台数を収集できる。
また、上記実施例では、Helloフレーム内にGW到達ホップ数96A及び接続台数96Bの他に、GW7側でHelloフレームを発信した時刻を付加しても良い。この場合、通信ユニット5は、収容中GW7A及び収容候補GW7Bから得たHelloフレーム内の時刻情報の差が許容できる範囲の場合にのみ、収容中GW7Aの接続台数から収容候補GW7Bの接続台数を差し引く差分(GW1−GW2)を算出しても良い。
また、上記実施例では、GW到達ホップ数96Aの代わりに、RSSIやデータ送信の成功実績を加味した評価値をHelloフレーム内に付加しても良い。この場合、各通信ユニット5内の収集部68Aは、受信したHelloフレーム内の評価値に基づき収容候補GW7Bを判定しても良い。
また、上記実施例では、Helloフレームに接続台数96BやGW到達ホップ数96A等を付加するようにしたが、Helloフレーム以外の配信フレームに接続台数96BやGW到達ホップ数96A等を付加しても良い。
また、上記実施例では、収集部68Aで前回収集した接続台数GW1に関わる前回の差分と、収集部68Aで前回直後の今回収集した接続台数に関わる今回の差分との変化量が一定の変化量閾値未満の場合に、係数kを増加させる。例えば、本実施例の通信ユニット5の他に、GW切替選択処理が実行できない他の通信ユニットが通信システム1内に混在した場合、接続台数内に他の通信ユニットの台数も含まれるため、前回の差分と今回の差分との変化量が著しく小さくなることも考えられる。そこで、この場合、前回の差分と今回の差分との変化量が変化量閾値未満の場合には係数kを増加して移動対象台数Tを増やすことで移動対象の当選確率を高めて変化量を増やすようにしても良い。尚、変化量が変化量閾値を超えた場合、その係数kを元の値に戻すものとする。
また、上記実施例では、アドホック通信として、自律型マルチホップ方式の無線通信を採用した通信システム1を例示して説明したが、無線通信に限定されるものではなく、赤外線通信や有線通信等にも適用可能である。
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
更に、各装置で行われる各種処理機能は、CPU(Central Processing Unit)(又はMPU(Micro Processing Unit)、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部又は任意の一部を実行するようにしても良い。また、各種処理機能は、CPU(又はMPU、MCU等のマイクロ・コンピュータ)で解析実行するプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしても良いことは言うまでもない。
ところで、本実施例で説明した各種の処理は、予め用意されたプログラムを通信機器で実行することで実現できる。そこで、以下では、上記実施例と同様の機能を有するプログラムを実行する通信機器の一例を説明する。図17は、切替制御プログラムを実行する通信機器の一例を示す説明図である。
図17に示す切替制御プログラムを実行する通信機器100は、通信インタフェース111と、RAM(Random Access Memory)112と、ROM(Read Only Memory)113と、プロセッサ114とを有する。通信インタフェース111は、自律型マルチホップ方式で無線通信する。プロセッサ114は、通信機器100全体を制御する。
そして、ROM113には、上記実施例と同様の機能を発揮する切替制御プログラムが予め記憶されている。尚、ROM113ではなく、図示せぬドライブで読取可能な記録媒体に切替制御プログラムが記録されていても良い。また、記録媒体としては、例えば、CD−ROM、DVDディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ等でも良い。切替制御プログラムとしては、図17に示すように、収集プログラム113A、算出プログラム113B、判定プログラム113C及び切替制御プログラム113Dである。尚、プログラム113A〜113Dについては、適宜統合又は分散してもよい。
そして、プロセッサ114が、プログラム113A〜113DをROM113から読み出し、読み出された各プログラムを実行する。そして、プロセッサ114は、図17に示すように、各プログラム113A〜113Dを、収集プロセス114A、算出プロセス114B、判定プロセス114C及び切替制御プロセス114Dとして機能することになる。
プロセッサ114は、通信接続される収容中の通信収容装置から収容中の通信収容装置が接続する通信機器の接続台数を収集すると共に、通信接続可能な収容候補の通信収容装置から収容候補の通信収容装置が通信接続する通信機器の接続台数を収集する。更に、プロセッサ114は、収集された収容中の通信収容装置側の接続台数と収容候補の通信収容装置側の接続台数との差分に基づき、収容中の通信収容装置から収容候補の通信収容装置に移動する移動対象の通信機器の移動対象台数を算出する。更に、プロセッサ114は、移動対象台数と、収容中の通信収容装置側の接続台数と、乱数とに基づき、移動対象に該当したか否かを判定する。更に、プロセッサ114は、移動対象に該当した場合に、収容中の通信収容装置から収容候補の通信収容装置への切替接続を収容候補の通信収容装置に要求する。その結果、通信収容装置に接続される通信機器側の自律的な動作で、各通信収容装置の接続台数を調整できる。
以上、本実施例を含む実施の形態に関し、更に以下の付記を開示する。
(付記1)収容中の通信収容装置と通信接続すると共に、収容候補の通信収容装置と通信接続可能な通信部と、
前記収容中の通信収容装置から前記収容中の通信収容装置が通信接続する通信装置の接続台数を収集すると共に、前記収容候補の通信収容装置から前記収容候補の通信収容装置が通信接続する通信装置の接続台数を収集する収集部と、
前記収集された前記収容中の通信収容装置側の接続台数と前記収容候補の通信収容装置側の接続台数との差分に基づき、前記収容中の通信収容装置から前記収容候補の通信収容装置に移動する移動対象の通信装置の移動対象台数を算出する算出部と、
前記移動対象台数と、前記収容中の通信収容装置側の接続台数と、乱数とに基づき、前記移動対象に該当したか否かを判定する判定部と、
前記移動対象に該当した場合に、前記収容中の通信収容装置から前記収容候補の通信収容装置への切替接続を前記収容候補の通信収容装置に要求する制御部と
を有することを特徴とする通信装置。
(付記2)前記算出部は、
前記差分を1以下の係数で乗算して前記移動対象台数を算出することを特徴とする付記1に記載の通信装置。
(付記3)前記算出部は、
前記差分が差分閾値を超えた場合に、当該差分に基づき、前記移動対象台数を算出することを特徴とする付記1又は2に記載の通信装置。
(付記4)前記算出部は、
前記収容中の通信収容装置に接続するまでのホップ数の漸増に応じて前記係数を漸増させることを特徴とする付記2に記載の通信装置。
(付記5)前記算出部は、
中継する通信装置の台数の漸増に応じて前記係数を漸減させることを特徴とする付記2に記載の通信装置。
(付記6)前記算出部は、
前記収集部で前回収集した接続台数に関わる前回の差分と、前記収集部で前回直後の今回収集した接続台数に関わる今回の差分との変化量が変化量閾値未満の場合に、前記係数を増加させることを特徴とする付記2に記載の通信装置。
(付記7)複数の通信装置と、前記複数の通信装置を収容する複数の通信収容装置とを有する通信システムであって、
前記複数の通信収容装置の内、前記通信装置が通信接続する収容中の通信収容装置及び前記通信装置が通信接続可能な収容候補の通信収容装置は、
通信接続する通信装置の接続台数を各通信装置に報知する報知部
を有し、
前記複数の通信装置のそれぞれは、
前記収容中の通信収容装置から報知された前記収容中の通信収容装置側の接続台数を収集すると共に、前記収容候補の通信収容装置から報知された前記収容候補の通信収容装置側の接続台数を収集する収集部と、
前記収集された前記収容中の通信収容装置側の接続台数と前記収容候補の通信収容装置側の接続台数との差分に基づき、前記収容中の通信収容装置から前記収容候補の通信収容装置に移動する移動対象の通信装置の移動対象台数を算出する算出部と、
前記移動対象台数と、前記収容中の通信収容装置側の接続台数と、乱数とに基づき、前記移動対象に該当したか否かを判定する判定部と、
前記移動対象に該当した場合に、前記収容中の通信収容装置から前記収容候補の通信収容装置への切替接続を前記収容候補の通信収容装置に要求する制御部と
を有することを特徴とする通信システム。
(付記8)複数の通信装置と、前記複数の通信装置を収容する複数の通信収容装置とを有する通信システムの切替制御方法であって、
前記複数の通信装置のそれぞれは、
通信接続される収容中の通信収容装置から前記収容中の通信収容装置が通信接続する通信装置の接続台数及び、通信接続可能な収容候補の通信収容装置から前記収容候補の通信収容装置が通信接続する通信装置の接続台数を収集し、
収集された前記収容中の通信収容装置側の接続台数と前記収容候補の通信収容装置側の接続台数との差分に基づき、前記収容中の通信収容装置から前記収容候補の通信収容装置に移動する移動対象の通信装置の移動対象台数を算出し、
前記移動対象台数と、前記収容中の通信収容装置側の接続台数と、乱数とに基づき、移動対象に該当したか否かを判定し、
前記移動対象に該当した場合に、前記収容中の通信収容装置から前記収容候補の通信収容装置への切替接続を前記収容候補の通信収容装置に要求する
各処理を実行することを特徴とする切替制御方法。
(付記9)通信する通信インタフェースと、プロセッサとを有する通信装置で実行される切替制御プログラムであって、
前記プロセッサに、
通信接続される収容中の通信収容装置から前記収容中の通信収容装置が通信接続する通信装置の接続台数及び、通信接続可能な収容候補の通信収容装置から前記収容候補の通信収容装置が通信接続する通信装置の接続台数を収集し、
収集された前記収容中の通信収容装置側の接続台数と前記収容候補の通信収容装置側の接続台数との差分に基づき、前記収容中の通信収容装置から前記収容候補の通信収容装置に移動する移動対象の通信装置の移動対象台数を算出し、
前記移動対象台数と、前記収容中の通信収容装置側の接続台数と、乱数とに基づき、前記移動対象に該当したか否かを判定し、
前記移動対象に該当した場合に、前記収容中の通信収容装置から前記収容候補の通信収容装置への切替接続を前記収容候補の通信収容装置に要求する
各処理を実行させることを特徴とする切替制御プログラム。