通信システム
【課題】メッシュネットワークにおいて、通信ノードへのデータの到達順がデータの発生順とすることができる通信システムを提供する。
【解決手段】データ中継選択部6が、通信経路テーブル7に格納されている宛先の通信ノード20へのホップ数と最大ホップ数格納部8に格納されている最大ホップ数と受信した通信フレーム50に含まれるホップ数53に基づいて、最大ホップ数とホップ数53に宛先の通信ノード20へのホップ数を加算した加算値が同じでない場合は、ホップ数53をインクリメントして自身内の仮想通信路11を介して自身のデータ受信部3へ通信フレーム50を送信する。
【解決手段】データ中継選択部6が、通信経路テーブル7に格納されている宛先の通信ノード20へのホップ数と最大ホップ数格納部8に格納されている最大ホップ数と受信した通信フレーム50に含まれるホップ数53に基づいて、最大ホップ数とホップ数53に宛先の通信ノード20へのホップ数を加算した加算値が同じでない場合は、ホップ数53をインクリメントして自身内の仮想通信路11を介して自身のデータ受信部3へ通信フレーム50を送信する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の通信ノード有するメッシュネットワークで構成されている通信システムに関する。
【背景技術】
【0002】
従来、機器間の通信においては、送信元となる端末(通信ノード)と受信先となる通信ノードとを直接接続してデータの送受信を行っていた。この場合、通信ノードと通信ノードとを直接接続することで、目的の通信を行う経路を確保できるために分かり易く手軽であるという利点がある。
【0003】
しかし、通信をする相手が増えると通信ノード間での通信を行う数だけ接続が必要になる。そのため、例えば全ての通信ノードと相互に通信する必要がある場合には接続が複雑になってしまうという問題がある。
【0004】
そのような問題を解消する一つの方法としては、例えば無線LANのアクセスポイントのように、どれか1つの通信ノードを基点(基点ノード)にし、その通信ノードが各々の通信を中継することで、各通信ノードが相互に通信できるようにする方法がある。
【0005】
この基点ノードを用いた方法の場合、基点ノードが全ての通信ノードの通信を中継するために通信が集中するので、基点ノードのへの負荷が非常に大きくなる。そこで、どれか1つの通信ノードが通信の中継を請け負うのではなく、全ての通信ノードが中継局となれるメッシュネットワークが考案されている(例えば、特許文献1を参照)。
【0006】
図26にメッシュネットワークの例を示す。図26に示したメッシュネットワーク100は、ノード(通信ノード)A〜Eで構成されている。ノードAはノードBと相互に通信可能に接続されている。ノードBはノードA、C、Dと相互に通信可能に接続されている。ノードCはノードB、Eと相互に通信可能に接続されている。ノードDはノードB、Eと相互に通信可能に接続されている。ノードEはノードC、Dと相互に通信可能に接続されている。
【0007】
メッシュネットワークでは、通信において目的の通信ノードへデータを送信する際に、直接伝送することができない場合でも、近隣の通信ノードへデータを伝送する。そして、データを伝送された通信ノードが更に近隣の通信ノードへデータを伝送する。これを繰り返して、目的の通信ノードへデータを伝送することができる。例えば、図26に示したメッシュネットワーク100では、ノードAからノードEにデータを伝送する場合、ノードAからノードBのデータを伝送し、次にノードBからノードCにデータを伝送して、最後のノードCからノードEにデータを伝送する。あるいは、ノードBからはノードDを中継してノードEへデータを伝送しても良い。このようにデータが伝送されるため、1つの通信ノードにデータ中継の負荷が集中することがなくなり、全体として効率良く通信することができる。
【0008】
このようなメッシュネットワークでは、目的の通信ノードまでデータを届けるために、各通信ノードでは、なるべく中継数が少なくするように経路を選択している。そのため、余分な中継を減らし、通信網全体として効率良くネットワークを利用することができる。
【0009】
そして、従来のメッシュネットワークでは、例えば特許文献2などのように各通信ノードではなるべく中継点が少なくなるような経路を選択するように構成することが一般的であった。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開平4−368034号公報
【特許文献2】特開2006−20302号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、メッシュネットワークでは、各通信ノードによって中継数が異なるために、時間的に前に発生したデータよりも後に発生したデータが早く受信先の通信ノードに到達してしまうことがある。例えば、図26の場合、ノードAで発生したデータ(データAとする)の後にノードDでデータ(データDとする)が発生した場合、データの発生した時間順ではデータA、データDとなるが、ノードEにはデータDが先に到達してしまう場合がある。
【0012】
この場合、到達データの順序が変わってしまうため、データの発生順に処理を行わなければならない場合は、例えばノードE(或いはネットワーク全体)ではデータの発生順を管理する必要がある。一例を挙げて詳細に説明すると、例えば図26が車両のウインドウの制御に関するネットワークであって、ノードAがウインドウ開閉のロックボタン、ノードDがウインドウ開閉ボタン、ノードEがウインドウを動作させる装置であったとすると、ウインドウ開閉のロックボタンが操作されてロックされた後にウインドウ開閉が操作された場合、ウインドウは開閉されないのが正しい動作であるが、上述した問題のように、データD、つまりウインドウ開閉ボタンの操作を示すデータが先にノードEに到達すると、車両のウインドウ全体としてみればロックされているにも関わらずウインドウが動作してしまうという誤動作に繋がる。
【0013】
このように、メッシュネットワークを制御系のアプリケーションで適用する場合、中継数が異なることによるデータ到達順の問題による影響が大きくなってしまう。
【0014】
そこで、本発明は、メッシュネットワークにおいて、通信ノードへのデータの到達順がデータの発生順とすることができる通信システムを提供することを課題とする。
【課題を解決するための手段】
【0015】
上記課題を解決するためになされた請求項1に記載の発明は、データの受信を行う受信手段と、データの送信を行う送信手段と、を備えた通信ノードを複数有してメッシュネットワークを構成する通信システムにおいて、前記データには、宛先および前記受信手段で受信するまでに経過した通信時間が含まれており、前記メッシュネットワークにおける最大通信時間および自身から前記メッシュネットワークに接続されている全ての前記通信ノードへの通信時間が予め格納されている通信条件格納手段と、前記受信手段が受信したデータの前記宛先に基づいて当該データが自身宛か他の通信ノード宛かを判定する宛先判定手段と、前記宛先判定手段が前記受信手段が受信したデータが他の通信ノード宛と判定した場合は、前記通信条件格納手段に格納された前記最大通信時間と前記受信手段が受信したデータの前記受信手段で受信するまでに経過した通信時間に前記通信条件格納手段に格納された前記宛先への通信時間を加算した加算値とを比較し、前記加算値が前記最大通信時間と同じ値である場合は前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記加算値が前記最大通信時間よりも小さい場合は、前記最大通信時間から前記加算値を減算した時間分前記データを待機させてから前記送信手段に前記宛先または中継先の前記通信ノードへ送信させるように制御する通信制御手段と、を前記通信ノードが備えていることを特徴とする通信システムである。
【0016】
請求項2に記載の発明は、請求項1に記載の発明において、前記データに、前記受信手段で受信するまでに中継された中継数が含まれており、前記通信条件格納手段に、前記メッシュネットワークにおける最大中継数および自身から前記メッシュネットワークに接続されている全ての前記通信ノードへの中継数が予め格納され、前記通信制御手段が、前記通信条件格納手段に格納された前記最大中継数と前記受信手段が受信したデータの前記受信手段で受信するまでに中継された中継数に前記通信条件格納手段に格納された前記宛先への中継数を加算した加算値とを比較し、前記加算値が前記最大中継数と同じ値である場合は前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記加算値が前記最大中継数よりも小さい場合は、前記最大中継数から前記加算値を減算した中継数分前記データを待機させてから前記送信手段に前記宛先または中継先の前記通信ノードへ送信させるように制御することを特徴とするものである。
【0017】
請求項3に記載の発明は、請求項2に記載の発明において、前記通信制御手段が、前記加算値が前記最大中継数よりも小さい場合は、前記受信手段で受信するまでに中継された中継数をインクリメントして自身の前記送信手段から自身の前記受信手段へ前記データを送信させることを特徴とするものである。
【0018】
請求項4に記載の発明は、請求項2または3に記載の発明において、前記通信制御手段が、前記加算値が前記最大中継数と同じ値である場合は、前記受信手段で受信するまでに中継された中継数をインクリメントして前記送信手段から前記宛先または中継先へ前記データを送信させることを特徴とするものである。
【0019】
請求項5に記載の発明は、請求項1に記載の発明において、前記データに、前記受信手段で受信するまでに通信路で消費された伝送時間が含まれており、前記通信条件格納手段に、前記メッシュネットワークにおける最大伝送時間および自身から前記メッシュネットワークに接続されている全ての前記通信ノードへの伝送時間が予め格納され、前記通信制御手段が、前記通信条件格納手段に格納された前記最大伝送時間と前記受信手段が受信したデータの前記受信手段で受信するまでに通信路で消費された伝送時間に前記通信条件格納手段に格納された前記宛先への伝送時間を加算した加算値とを比較し、前記加算値が前記最大伝送時間と同じ値である場合は前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記加算値が前記最大伝送時間よりも小さい場合は、前記最大伝送時間から前記加算値を減算した伝送時間分前記データを待機させてから前記送信手段に前記宛先または中継先の前記通信ノードへ送信させるように制御することを特徴とするものである。
【0020】
請求項6に記載の発明は、請求項5に記載の発明において、前記通信制御手段が、前記加算値が前記最大伝送時間よりも小さい場合は、前記受信手段で受信するまでに通信路で消費された伝送時間に予め定めた基準伝送時間を加算して自身の前記送信手段から自身の前記受信手段へ前記データを送信させることを特徴とするものである。
【0021】
請求項7に記載の発明は、請求項5または6に記載の発明において、前記通信制御手段が、前記加算値が前記最大伝送時間と同じ値である場合は、前記受信手段で受信するまでに通信路で消費された伝送時間に前記宛先までの伝送時間を加算して前記送信手段から宛先または中継先へ前記データを送信させることを特徴とするものである。
【0022】
請求項8に記載の発明は、請求項1乃至7のうちいずれか一項に記載の発明おいて、前記宛先判定手段が前記受信手段が受信したデータが自身宛と判定した場合は、前記受信手段で受信するまでに経過した通信時間および前記通信条件格納手段に格納されている前記最大通信時間に基づいて、当該データが正常か否かを判断する受信データ確認手段を、前記通信ノードが備えていることを特徴とするものである。
【発明の効果】
【0023】
以上説明したように請求項1に記載の発明によれば、通信制御手段が、通信条件格納手段に格納されているメッシュネットワークにおける最大通信時間および自身からメッシュネットワークに接続されている全ての通信ノードへの通信時間と、データに含まれる宛先および受信手段で受信するまでに経過した通信時間に基づいて、最大通信時間と受信以前に経過した通信時間に宛先への通信時間を加算した加算値が同じでない場合は、その差分時間だけ待機させてから隣接する通信ノードに送信している。つまり、各通信ノード間の通信時間をメッシュネットワークの最大通信時間に合わせるようにしているので、中継数が異なってもデータの到着順がデータの発生順と異なることがなくなる。また、到達したデータを処理するシステム、装置、ソフトウェアなどのアプリケーションではデータの順序を管理する必要がなくシンプルに構成できる。
【0024】
請求項2に記載の発明によれば、データに、受信手段で受信するまでに中継された中継数が含まれており、通信条件格納手段に、メッシュネットワークにおける最大中継数および自身からメッシュネットワークに接続されている全ての通信ノードへの中継数が予め格納され、通信制御手段が、通信条件格納手段に格納された最大中継数と受信手段が受信したデータの受信手段で受信するまでに中継された中継数に通信条件格納手段に格納された宛先への中継数を加算した加算値とを比較し、加算値が最大中継数と同じ値である場合は送信手段にデータを宛先または中継先の通信ノードへ送信させ、加算値が最大中継数よりも小さい場合は、最大中継数から加算値を減算した中継数分データを待機させてから送信手段に宛先または中継先の通信ノードへ送信させるように制御するので、通信時間として中継数を用いて送信元から宛先までの中継数をメッシュネットワーク内の最大中継数に合わせるようにしているので、中継数が異なってもデータの到着順がデータの発生順と異なることがなくなる。
【0025】
請求項3に記載の発明によれば、通信制御手段が、加算値が最大中継数よりも小さい場合は、受信手段で受信するまでに中継された中継数をインクリメントして自身の送信手段から自身の受信手段へデータを送信させているので、内部での仮想的な送受信の回数で中継数の調節ができ、シンプルな構成で通信時間の待機を行うことができる。
【0026】
請求項4に記載の発明によれば、通信制御手段が、加算値が最大中継数と同じ値である場合は、受信手段で受信するまでに中継された中継数をインクリメントして送信手段から宛先または中継先へ前記データを送信させているので、受信手段で受信するまでに中継された中継数を更新することとなり、その更新された中継数で宛先や中継先での通信の正常性の確認や中継数の調節を行うことができる。
【0027】
請求項5に記載の発明によれば、データに、受信手段で受信するまでに通信路で消費された伝送時間が含まれており、通信条件格納手段に、メッシュネットワークにおける最大伝送時間および自身からメッシュネットワークに接続されている全ての通信ノードへの伝送時間が予め格納され、通信制御手段が、通信条件格納手段に格納された最大伝送時間と受信手段が受信したデータの受信手段で受信するまでに通信路で消費された伝送時間に通信条件格納手段に格納された宛先への伝送時間を加算した加算値とを比較し、加算値が最大伝送時間と同じ値である場合は送信手段にデータを宛先または隣接する通信ノードへ送信させ、加算値が最大伝送時間よりも小さい場合は、最大伝送時間から加算値を減算した伝送時間分データを待機させてから送信手段に宛先または中継席の通信ノードへ送信させるように制御するので、通信時間として各通信ノード間の伝送速度から算出される通信路で消費された伝送時間を用いて送信元から宛先までの伝送時間をメッシュネットワーク内の最大伝送時間に合わせるようにしているので、伝送時間が異なってもデータの到着順がデータの発生順と異なることがなくなる。また、各通信ノード間の伝送時間が異なるメッシュネットワークでもデータを発生順に目的の通信ノードに到達させることができる。
【0028】
請求項6に記載の発明によれば、通信制御手段が、加算値が最大伝送時間よりも小さい場合は、受信手段で受信するまでに通信路で消費された伝送時間に予め定めた基準伝送時間を加算して自身の送信手段から自身の受信手段へデータを送信させているので、内部での仮想的な送受信による基準伝送時間の加算回数で伝送時間の調整ができる。
【0029】
請求項7に記載の発明によれば、通信制御手段が、加算値が最大伝送時間と同じ値である場合は、受信手段で受信するまでに通信路で消費された伝送時間に予め定めた基準伝送時間を加算して送信手段から宛先または中継先へデータを送信させているので、受信手段で受信するまでに通信路で消費された伝送時間を更新することとなり、その更新された伝送時間で宛先や中継先での通信の正常性の確認や伝送時間の調節を行うことができる。
【0030】
請求項8に記載の発明によれば、宛先判定手段が受信手段が受信したデータが自身宛と判定した場合は、受信手段で受信するまでに経過した通信時間および通信条件格納手段に格納されている最大通信時間に基づいて、当該データが正常か否かを判断する受信データ確認手段を通信ノードが備えているので、受信手段で受信するまでに経過した通信時間(中継数または伝送時間)を確認することでデータが正しく伝送されてきたかを確認することができる。
【図面の簡単な説明】
【0031】
【図1】本発明の第1の実施形態にかかる通信システムの構成図である。
【図2】図1に示された通信システム内で伝送されるデータとしての通信フレームの構成例を示す説明図である。
【図3】図1に示された通信ノードの構成を示すブロック図である。
【図4】図3に示された通信ノードの動作を示すフローチャートである。
【図5】図1に示されたノードAの通信経路テーブルを示す表である。
【図6】図1に示されたノードBの通信経路テーブルを示す表である。
【図7】図1に示されたノードCの通信経路テーブルを示す表である。
【図8】図1に示されたノードDの通信経路テーブルを示す表である。
【図9】図1に示されたノードEの通信経路テーブルを示す表である。
【図10】図1に示された通信システムにおける通信フレームの伝送を示す説明図である。
【図11】本発明の第2の実施形態にかかる通信システムの構成図である。
【図12】図11に示された通信システム内で伝送されるデータとしての通信フレームの構成例を示す説明図である。
【図13】図11に示された通信ノードの構成を示すブロック図である。
【図14】図13に示された通信ノードの動作を示すフローチャートである。
【図15】図11に示されたノードAの通信経路テーブルを示す表である。
【図16】図11に示されたノードBの通信経路テーブルを示す表である。
【図17】図11に示されたノードCの通信経路テーブルを示す表である。
【図18】図11に示されたノードDの通信経路テーブルを示す表である。
【図19】図11に示されたノードEの通信経路テーブルを示す表である。
【図20】図11に示されたノードAの隣接ノードベース伝送時間を示す表である。
【図21】図11に示されたノードBの隣接ノードベース伝送時間を示す表である。
【図22】図11に示されたノードCの隣接ノードベース伝送時間を示す表である。
【図23】図11に示されたノードDの隣接ノードベース伝送時間を示す表である。
【図24】図11に示されたノードEの隣接ノードベース伝送時間を示す表である。
【図25】図11に示された通信システムにおける通信フレームの伝送を示す説明図である。
【図26】従来のメッシュネットワークを用いた通信システムの構成図である。
【発明を実施するための形態】
【0032】
(第1実施形態)
次に、本発明の第1の実施形態を図1ないし図10を参照して説明する。本発明の第1の実施形態にかかる通信システム1は、図1に示すように、複数の通信ノード20(ノードA、ノードB、ノードC、ノードD、ノードE)を有して構成され、これらのノードA〜Eはメッシュネットワークを構成している。
【0033】
図1に示した通信システム1では、ノードAはノードBと相互に通信可能に接続されている。ノードBはノードA、C、Dと相互に通信可能に接続されている。ノードCはノードB、Eと相互に通信可能に接続されている。ノードDはノードB、Eと相互に通信可能に接続されている。ノードEはノードC、Dと相互に通信可能に接続されている。なお、本実施形態では各通信ノード20間の通信速度は同じであるとする。
【0034】
図2に通信システム1内で伝送されるデータとしての通信フレーム50の構成例を示す。通信フレーム50は、通信元情報51と、宛先情報52と、ホップ数53と、通信データ54と、を備えて構成されている。なお、通信フレーム50のフレーム長は固定とする。
【0035】
通信元情報51は、通信フレーム50を生成した通信元の通信ノード20を示す情報(例えばノードAなど)が格納され、宛先情報52は、通信フレーム50の宛先の通信ノード20を示す情報(例えばノードEなど)が格納される。
【0036】
ホップ数53は、受信手段で受信するまでに経過した通信時間であるデータ受信部3で受信するまでに中継されたホップ数(中継数)が格納され、通信データ54は、宛先の通信ノード20で使用されるデータが格納される。
【0037】
図3に通信ノード20のブロック図を示す。通信ノード20は、通信ユニット2と、受信手段としてのデータ受信部3と、宛先判定手段としての宛先判定器4と、受信データ確認手段としてのアプリケーション通知部5と、通信制御手段としてのデータ中継選択部6と、通信条件格納手段としての通信経路テーブル7と、通信条件格納手段としての最大ホップ数格納部8と、通信制御手段としてのホップ数予測器9と、送信手段としてのデータ送信部10と、仮想通信路11と、を備えている。
【0038】
通信ユニット2は、外部との通信フレーム50の入出力を行うブロックであり、外部から入力された通信フレーム50はデータ受信部3へ出力され、データ送信部10から入力された通信フレーム50は外部へ出力される。
【0039】
データ受信部3は、通信ユニット2または後述する仮想通信路11から入力された通信フレーム50を受信して宛先判定器4へ出力する。
【0040】
宛先判定器4は、通信フレーム50内の宛先情報52を解析して自身宛ての通信フレーム50であった場合はアプリケーション通知部5へ通信フレーム50を出力し、他の通信ノード20宛てであった場合はデータ中継選択部6へ通信フレーム50を出力する。
【0041】
アプリケーション通知部5は、自身宛ての通信フレーム50を受信した場合は、自身の通信ノード20で実行されるアプリケーションに通知して通信フレーム50内の通信データ54を取り出してアプリケーションに引き渡す。また、受信した通信フレーム50のホップ数53と後述する最大ホップ数格納部8に格納されている最大ホップ数から受信した通信フレーム50が正常か否かを判断する。また、アプリケーションで他の通信ノード20へのデータが発生した場合は、アプリケーションからデータを受け取って通信フレーム50を生成して宛先判定器4へ出力する。なお、このアプリケーションとは、通信システム1全体で実現される装置やシステム(例えば車両のウィンドウ制御など)のうち、当該通信ノード20に割り当てられた機能を実行する手段(例えばウィンドウロック)を示し、図示はしないが、ハードウェアまたはソフトウェアで構成されている。
【0042】
データ中継選択部6は、後述する通信経路テーブル7を参照して受信した通信フレーム50を宛先の通信ノード20に伝送するために必要な中継局を選択する。また、データ中継選択部6は、受信した通信フレーム50と後述する通信経路テーブル7から後述するホップ数予測器9で当該通信フレーム50の宛先までの総ホップ数を予測させるとともに、ホップ数予測器9で予測された総ホップ数と後述する最大ホップ数格納部8に格納されている最大ホップ数とを比較して、予測された総ホップ数と最大ホップ数とが同じである場合は、通信フレーム50内のホップ数53をインクリメント(+1)してデータ送信部10へ通信フレーム50を出力し、予測された総ホップ数が最大ホップ数よりも小さい場合は通信フレーム50内のホップ数53をインクリメントして仮想通信路11へ通信フレーム50を出力する。
【0043】
通信経路テーブル7は、通信システム1を構成する自身以外の通信ノード20へのホップ数、すなわち自身からメッシュネットワークに接続されている全ての通信ノード20への通信時間(中継数)や、中継局の有無、中継局がある場合は中継局名(アドレスなど中継局を示すことができる情報)が通信ノード20毎にテーブル状に予め格納されている。
【0044】
最大ホップ数格納部8は、通信システム1における最大通信時間としての最大ホップ数(最大中継数)が予め格納されている。なお、本実施形態では通信経路テーブル7と最大ホップ数格納部8は分けて構成しているが1つのメモリなどにそれぞれの領域を設けるように構成してもよい。
【0045】
ホップ数予測器9は、受信した通信フレーム50と通信経路テーブル7から通信フレーム50の宛先までの総ホップ数、すなわち通信フレーム50のホップ数53に通信経路テーブル7に格納された宛先へのホップ数を加算した加算値を予測する。
【0046】
データ送信部10は、データ中継選択部6から入力された通信フレーム50を通信ユニット2へ出力する。
【0047】
仮想通信路11は、通信ノード20内で仮想的に通信フレーム50を伝送するためにデータ中継選択部6からデータ受信部3に通信フレーム50を伝送する。
【0048】
次に、上述した構成の通信ノード20の動作を図4のフローチャートを参照して説明する。
【0049】
まず、ステップS101において、自身内でデータが発生したか否かを判断し、発生した場合(Yの場合)はステップS102に進み、発生していない場合(Nの場合)はステップS110に進む。本ステップでは、例えばアプリケーション通知部5がアプリケーションから他の通信ノード20へ送信するデータを受け取ったか否かで判断する。
【0050】
次に、ステップS102において、通信フレーム50を生成してステップS103に進む。本ステップでは、アプリケーションで他の通信ノード20へ送信するデータが発生したのでアプリケーション通知部5が受け取ったデータから通信フレーム50を生成し宛先判定器4へ出力する。
【0051】
次に、ステップS103において、通信経路テーブル7を参照してステップS104に進む。本ステップでは、データ中継選択部6がアプリケーション通知部5で生成した通信フレーム50を宛先の通信ノード20に伝送するために必要な中継局(宛先に直接伝送できる場合は宛先)の情報を参照している。
【0052】
次に、ステップS104において、総ホップ数を予測してステップS105に進む。本ステップでは、データ中継選択部6がホップ数予測器9に当該通信フレーム50の宛先までの総ホップ数を予測させている。
【0053】
次に、ステップS105において、ステップS104で予測した総ホップ数が最大ホップ数と同じか否かを判断し、同じである場合(Yの場合)はステップS106に進み、同じでない場合(Nの場合)はステップS108に進む。
【0054】
次に、ステップS106において、通信フレーム50内のホップ数53を加算(インクリメント)し、ステップS107へ進む。本ステップでは、予測した総ホップ数が最大ホップ数と同じであったので、データ中継選択部6が通信フレーム50内のホップ数53をインクリメントしてデータ送信部10へ通信フレーム50を出力している。
【0055】
次に、ステップS107において、次の通信ノード20へ通信する。本ステップでは、データ送信部10から通信ユニット2を介して宛先または中継先の通信ノード20へ通信フレーム50を送信する。
【0056】
また、ステップS108においては、通信フレーム50内のホップ数53を加算(インクリメント)し、ステップS109へ進む。本ステップでは、予測した総ホップ数が最大ホップ数と同じでなかったので、自ノード宛内部通信を行う前にデータ中継選択部6が通信フレーム50内のホップ数53をインクリメントしている。
【0057】
次に、ステップS109において、自ノード宛内部通信を行いステップS101へ戻る。本ステップでは、データ中継選択部6から仮想通信路11を介してデータ受信部3へ通信フレーム50を送信している。したがって、自ノード宛内部通信を行う場合はデータ中継選択部6が送信手段を兼ねる。
【0058】
一方、ステップS110においては、隣接する通信ノード20からデータ受信したか否かを判断し、データ受信であった場合(Yの場合)はステップS111に進み、データ受信でない場合(Nの場合)はステップS101に戻る。
【0059】
次に、ステップS111において、宛先確認を行ってステップS112に進む。本ステップでは、宛先判定器4で、通信フレーム50内の宛先情報52を解析して自身宛てであったか他の通信ノード20宛てであったかを判断する。
【0060】
次に、ステップS112において、ステップS111の結果自ノード宛てであったか否かを判断し、自ノード宛てであった場合はステップS113に進み、自ノード宛てでなかった場合はステップS103に進む。
【0061】
次に、ステップS113において、ホップ数を確認してステップS114に進む。本ステップでは、自ノード宛ての通信フレーム50内のホップ数53をアプリケーション通知部5で取り出して確認する。
【0062】
次に、ステップS114において、ステップS113で確認したホップ数53が最大ホップ数格納部8に格納されている最大ホップ数と同じか否かを判断し、同じである場合(Yの場合)はステップS115に進み、同じでない場合(Nの場合)はステップS116に進む。本ステップでは、アプリケーション通知部5でホップ数53と最大ホップ数を比較して判断する。
【0063】
次に、ステップS115において、ホップ数53が最大ホップ数と同じであるので、正常な通信フレームであるとしてアプリケーション通知部5は通信データ54の到達をアプリケーションへ通知する。
【0064】
また、ステップS116においては、ホップ数53が最大ホップ数と同じでないので、異常な通信フレームであるとして当該通信フレーム50を破棄する。
【0065】
次に、上述した構成の通信ノード20を複数有する通信システム1(メッシュネットワーク)の動作例を説明する。図5〜図9にノードA〜Eまでの通信経路テーブル7の内容を示す。また、通信システム1を構成するメッシュネットワークの最大ホップ数は“3”であり、この値は予め各通信ノード20の最大ホップ数格納部8に格納されている。
【0066】
まず、例1としてノードAからノードEへ通信する場合を説明する。ノードAでは、通信データ54が発生すると、自ノードの情報を通信元情報51、ノードEを宛先情報52とし、ホップ数53は自ノードでのデータ発生であり他のノードから中継されて受信した通信フレーム50ではないので“0”に設定した通信フレーム50を生成する。そして、ノードAの通信経路テーブル7(図5)を参照すると、宛先であるノードEは中継局があり中継局がノードBであることが分かる。また、現在のホップ数53は0ホップでありノードEまでのホップ数は通信経路テーブル7から3ホップであるため、ノードEまでの通信に要する総ホップ数は0+3=3ホップであると予測される。一方、メッシュネットワークの最大ホップ数は3ホップであり、予測した総ホップ数と最大ホップ数が同じであるので、通信フレーム50のホップ数53をインクリメントして“1”に設定し、即座に中継局であるノードBに通信フレーム50を送信する。
【0067】
ノードBにおいては、ノードAより受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードBの通信経路テーブル7(図6)を参照すると、宛先であるノードEは中継局があり中継局がノードCであることが分かる。また、現在のホップ数53は1ホップでありノードEまでのホップ数は通信経路テーブル7から2ホップであるため、ノードEまでの通信に要する総ホップ数は1+2=3ホップであると予測される。一方、メッシュネットワークの最大ホップ数は3ホップであり、予測した総ホップ数と最大ホップ数が同じであるので、通信フレーム50のホップ数53をインクリメントして“2”に設定し、即座に中継局であるノードCに通信フレーム50を送信する。
【0068】
ノードCにおいては、ノードBより受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードCの通信経路テーブル7(図7)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のホップ数53は2ホップでありノードEまでのホップ数は通信経路テーブル7から1ホップであるため、ノードEまでの通信に要する総ホップ数は2+1=3ホップであると予測される。一方、メッシュネットワークの最大ホップ数は3ホップであり、予測した総ホップ数と最大ホップ数が同じであるので、通信フレーム50のホップ数53をインクリメントして“3”に設定し、即座に宛先であるノードEに通信フレーム50を送信する。
【0069】
ノードEにおいては、ノードCより受信した通信フレーム50の宛先情報52を確認し、自身宛であることが分かる。また、ホップ数53が3ホップであり最大ホップ数と同じであることから正常に通信させた通信フレームであることが分かるので、アプリケーションへデータの到達を通知するとともに通信データ54を引き渡す。
【0070】
この例1では、予測した総ホップ数と最大ホップ数との比較やホップ数53のインクリメントといった動作は行っているが、通信フレーム50の伝送自体は従来と同じである。次に、例2としてノードDからノードEへ通信する場合を説明する。
【0071】
ノードDでは、通信データ54が発生すると、自ノードの情報を通信元情報51、ノードEを宛先情報52とし、ホップ数53は自ノードでのデータ発生であり他のノードから中継されていないので“0”に設定した通信フレーム50を生成する。そして、ノードDの通信経路テーブル7(図8)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のホップ数53は0ホップでありノードEまでのホップ数は通信経路テーブル7から1ホップであるため、ノードEまでの通信に要する総ホップ数は0+1=1ホップであると予測される。一方、メッシュネットワークの最大ホップ数は3ホップであり、予測した総ホップ数が最大ホップ数よりも小さいので、通信フレーム50のホップ数53をインクリメントして“1”に設定し、仮想通信路11を介してデータ受信部3に通信フレーム50を伝送する。つまり、自身(自ノード)内で通信フレーム50の送信を行い、ホップ数を1回分調節する。
【0072】
ノードDは、次のタイミングで、仮想通信路11を介して受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードDの通信経路テーブル7(図8)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のホップ数53は1ホップでありノードEまでのホップ数は通信経路テーブル7から1ホップであるため、ノードEまでの通信に要する総ホップ数は1+1=2ホップであると予測される。一方、メッシュネットワークの最大ホップ数は3ホップであり、予測した総ホップ数が最大ホップ数よりも小さいので、通信フレーム50のホップ数53をインクリメントして“2”に設定し、仮想通信路11を介してデータ受信部3に通信フレーム50を伝送する。
【0073】
ノードDは、さらに次のタイミングで、仮想通信路11を介して受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードDの通信経路テーブル7(図8)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のホップ数53は2ホップでありノードEまでのホップ数は通信経路テーブル7から1ホップであるため、ノードEまでの通信に要する総ホップ数は2+1=3ホップであると予測される。一方、メッシュネットワークの最大ホップ数は3ホップであり、予測した総ホップ数と最大ホップ数が同じであるので、通信フレーム50のホップ数53をインクリメントして“3”に設定し、即座に宛先であるノードEに通信フレーム50を送信する。
【0074】
ノードEにおいては、ノードDより受信した通信フレーム50の宛先情報52を確認し、自身宛であることが分かる。また、ホップ数53が3ホップであり最大ホップ数と同じであることから正常に通信させた通信フレームであることが分かるので、アプリケーションへデータの到達を通知するとともに通信データ54を引き渡す。
【0075】
この例2では、通信ノード20が近接してホップ数が最大ホップ数よりも少ないので、ノードDでは2ホップ分内部での仮想的な送信処理を行ってホップ数が最大ホップ数と同じになるように調節している。すなわち、最大ホップ数から総ホップ数を減算したホップ数分通信フレーム50を待機させている。
【0076】
ここで、上述した動作を行う通信システム1において、まずノードAで通信データ54が発生し、その後ノードDで通信データ54が発生して、ともにノードEに伝送する場合を図10を参照して説明する。
【0077】
図10に示したように、ノードAで発生した通信データ54は、通信フレーム50としてノードB,Cに中継されてノードEに伝送される。この伝送には3ホップ要している。ノードDで発生した通信データ54は、通信フレーム50としてノードD内部で2ホップ分調節されてからノードEに伝送される。この伝送にも3ホップ要している。したがって、どちらの通信も3ホップ要することから、先に発生したノードAの通信データ54が、後に発生したノードDの通信データ54よりも先にノードEに到達する。
【0078】
本実施形態によれば、データ中継選択部6が、通信経路テーブル7に格納されている宛先の通信ノード20へのホップ数と最大ホップ数格納部8に格納されている最大ホップ数と受信した通信フレーム50に含まれるホップ数53に基づいて、最大ホップ数とホップ数53に宛先の通信ノード20へのホップ数を加算した総ホップ数が同じでない場合は、ホップ数53をインクリメントして自身内の仮想通信路11を介して自身のデータ受信部3へ通信フレーム50を送信しているので、ネットワーク内で行われる通信のホップ数を最大ホップ数に合わせるようにすることができ、経由する通信ノード20数が異なっても通信データの到着順が通信データの発生順と異なることがなくなる。また、通信ノード20内部での仮想的な送受信の回数で中継数の調整ができ、シンプルな構成で通信時間の待機を行うことができる。さらに、アプリケーションでデータの順序を管理する必要がなくなるのでアプリケーションをシンプルに構成することができる。
【0079】
また、最大ホップ数とホップ数53に宛先の通信ノード20へのホップ数を加算した総ホップ数が同じである場合は、ホップ数53をインクリメントしてデータ送信部10から宛先または中継先の通信ノード20へ通信フレーム50を送信しているので、ホップ数53を更新して、その更新した中継数で宛先や中継先において通信の正常性の確認や中継数の調節を行うことができる。
【0080】
また、アプリケーション通知部5が、宛先判定器4がデータ受信部3で受信した通信フレーム50が自身宛と判定した場合は、ホップ数53および最大ホップ数に基づいて、当該通信フレームが正常か否かを判断しているので、ホップ数を確認することでデータが正しく伝送されてきたかを確認することができる。
【0081】
(第2実施形態)
次に、本発明の第2の実施形態を図11ないし図25を参照して説明する。なお、前述した第1の実施形態と同一部分には、同一符号を付して説明を省略する。
【0082】
図11に実施形態の通信システム1の構成図を示す。図11に示した通信システム1は、メッシュネットワークの構成自体は第1の実施形態と同一である。第1の実施形態では各通信ノード20間の通信速度が同じであるという前提であったが、本実施形態では図11に示すように異なっている。
【0083】
図12に本実施形態で伝送されるデータとしての通信フレーム50の構成例を示す。通信フレーム50は、第1の実施形態の通信フレーム50に対して、ホップ数53がカウント値55に置き換わっている点が異なる。
【0084】
カウント値55は、予め定めた基準伝送時間を1カウントとして、受信手段で受信するまでに経過した通信時間であるデータ受信部3で受信するまでに通信路で消費した伝送時間、つまり、送信元から自ノードが受信するまでの経路で消費した伝送時間をカウント値として表した値が格納されている。このカウント値は通信路上の伝送速度に基いて設定する。例えば伝送速度が2Mbpsの場合は11カウント、11Mbpsの場合は2カウントなど、伝送速度が遅くなるに従ってカウント値が多くなるように設定する。この例の場合1カウント=22Mbpsとなる。これは逆に言うと22Mビットのデータを転送するのに要する時間(秒数)がカウント値となる。
【0085】
図13に本実施形態の通信ノード20のブロック図を示す。本実施形態では、最大ホップ数格納部8に代えて最大伝送時間格納部14を備え、ホップ数予測器9に代えて伝送時間予測器12を備え、さらに通信条件格納手段として隣接ノードベース伝送時間格納部13を追加で備えている。また、これらのブロックの変更および追加を受けてデータ中継選択部6がデータ中継選択部6´に、通信経路テーブル7が通信経路テーブル7´に、それぞれ変更されている。
【0086】
最大伝送時間格納部14は、通信システム1における最大伝送時間が前記したカウント値に換算されて予め格納されている。
【0087】
通信経路テーブル7´は、通信システム1を構成する自身以外の通信ノード20へのホップ数に代えて、通信システム1を構成する自身以外の通信ノード20への伝送時間が前記したカウント値に換算されて格納されている。
【0088】
伝送時間予測器12は、受信した通信フレーム50と通信経路テーブル7´から通信フレーム50の宛先までのカウント値を予測する。
【0089】
隣接ノードベース伝送時間格納部13は、自身と隣接する通信ノード20との間のベース伝送時間(隣接ノードまでの通信路で消費される伝送時間)がカウント値として格納されている。なお、最大伝送時間格納部14と隣接ノードベース伝送時間格納部13は第1の実施形態と同様に、通信経路テーブル7と合わせて1つのメモリなどにそれぞれの領域を設けるように構成してもよい。
【0090】
データ中継選択部6´は、通信経路テーブル7´を参照して受信した通信フレーム50を宛先の通信ノード20に伝送するために必要な中継局を選択する。また、データ中継選択部6は、受信した通信フレーム50と通信経路テーブル7´から伝送時間予測器12で当該通信フレーム50の宛先までの総伝送時間(カウント値)を予測させるとともに、伝送時間予測器12で予測された総伝送時間と最大伝送時間格納部14に格納されている最大伝送時間を示すカウント値とを比較して、予測されたカウント値と最大伝送時間を示すカウント値とが同じである場合は、通信フレーム50内のカウント値55をインクリメント(基準伝送時間である1カウントを加算)してデータ送信部10へ通信フレーム50を出力し、予測されたカウント値が最大伝送時間を示すカウント値よりも小さい場合は通信フレーム50内のカウント値55をインクリメントして仮想通信路11へ通信フレーム50を出力する。
【0091】
次に、上述した構成の通信ノード20の動作を図14のフローチャートを参照して説明する。
【0092】
まず、ステップS201において、自身内でデータが発生したか否かを判断して発生した場合(Yの場合)はステップS202に進み、発生していない場合(Nの場合)はステップS210に進む。本ステップでは、例えばアプリケーション通知部5がアプリケーションから他の通信ノード20へ送信するデータを受け取ったか否かで判断する。
【0093】
次に、ステップS202において、通信フレーム50を生成してステップS203に進む。本ステップでは、アプリケーションで他の通信ノード20へ送信するデータが発生したのでアプリケーション通知部5が受け取ったデータから通信フレーム50を生成し宛先判定器4へ出力する。
【0094】
次に、ステップS203において、通信経路テーブル7´を参照してステップS204に進む。本ステップでは、データ中継選択部6´がアプリケーション通知部5で生成した通信フレーム50を宛先の通信ノード20に伝送するために必要な中継局(宛先に直接伝送できる場合は宛先)の情報を参照している。
【0095】
次に、ステップS204において、伝送時間を計算(予測)してステップS205に進む。本ステップでは、データ中継選択部6´が伝送時間予測器12に当該通信フレーム50の宛先までの総伝送時間(カウント値)を予測させている。
【0096】
次に、ステップS205において、ステップS204で予測したカウント値が最大伝送時間を示すカウント値と同じか否かを判断し、同じである場合(Yの場合)はステップS206に進み、同じでない場合(Nの場合)はステップS208に進む。
【0097】
次に、ステップS206において、通信フレーム50内のカウント値55に中継先の通信ノード20までのカウント値を隣接ノードベース通信時間格納部13から読み出して加算し、ステップS207へ進む。本ステップでは、予測したカウント値が最大伝送時間を示すカウント値と同じであったので、データ中継選択部6´が通信フレーム50内のカウント値55に中継先の通信ノード20までの伝送時間に相当するカウント値を加算してデータ送信部10へ通信フレーム50を出力している。
【0098】
次に、ステップS207において、次の通信ノード20へ通信する。本ステップでは、データ送信部10から通信ユニット2を介して隣接する通信ノード20へ通信フレーム50を送信する。
【0099】
また、ステップS208においては、通信フレーム50内のカウント値55を加算(インクリメント)し、ステップS209へ進む。本ステップでは、予測したカウント値が最大伝送時間を示すカウント値と同じでなかったので、自ノード宛内部通信を行う前にデータ中継選択部6´が通信フレーム50内のカウント値55に基準伝送時間である1カウントを加算している。
【0100】
次に、ステップS209において、自ノード宛内部通信を行いステップS201へ戻る。本ステップでは、データ中継選択部6´から仮想通信路11を介してデータ受信部3へ通信フレーム50を送信している。
【0101】
一方、ステップS210においては、隣接する通信ノード20からデータ受信したか否かを判断し、データ受信であった場合(Yの場合)はステップS211に進み、データ受信でない場合(Nの場合)はステップS201に戻る。
【0102】
次に、ステップS211において、宛先確認を行ってステップS212に進む。本ステップでは、宛先判定器4で、通信フレーム50内の宛先情報52を解析して自身宛てであったか他の通信ノード20宛てであったかを判断する。
【0103】
次に、ステップS212において、ステップS211の結果自ノード宛てであったか否かを判断し、自ノード宛てであった場合はステップS213に進み、自ノード宛てでなかった場合はステップS203に進む。
【0104】
次に、ステップS213において、通信時間を確認してステップS214に進む。本ステップでは、自ノード宛ての通信フレーム50内のカウント値55をアプリケーション通知部5で取り出して確認する。
【0105】
次に、ステップS214において、ステップS213で確認したカウント値55が最大通信伝送格納部11に格納されている最大伝送時間を示すカウント値と同じか否かを判断し、同じである場合(Yの場合)はステップS215に進み、同じでない場合(Nの場合)はステップS216に進む。本ステップでは、アプリケーション通知部5でカウント値55と最大伝送時間を示すカウント値を比較して判断する。
【0106】
次に、ステップS215において、カウント値55が最大伝送時間を示すカウント値と同じであるので、正常な通信フレームであるとしてアプリケーション通知部5は通信データ54の到達をアプリケーションへ通知する。
【0107】
また、ステップS216においては、カウント値55が最大伝送時間を示すカウント値と同じでないので、異常な通信フレームであるとして当該通信フレーム50を破棄する。
【0108】
次に、上述した構成の通信ノード20を複数有する通信システム1(メッシュネットワーク)の動作例を説明する。図15〜図19にノードA〜Eまでの通信経路テーブル7の内容を示す。また、通信システム1を構成するメッシュネットワークの最大伝送時間を示すカウント値は“17”であり、この値は予め各通信ノード20の最大伝送時間格納部14に格納されている。
【0109】
また、本実施形態では、隣接ノードベース伝送時間が隣接ノードベース伝送時間格納部13に格納され、自身と隣接する通信ノード20との間のベース伝送時間が図20〜図24に示すようにカウント値として格納されている。
【0110】
まず、例1としてノードAからノードEへ通信する場合を説明する。ノードAでは、通信データ54が発生すると、自ノードの情報と通信元情報51、ノードEを宛先情報52とし、カウント値55は自ノードでのデータ発生であり他のノードから伝送されていないので“0”に設定した通信フレーム50を生成する。そして、ノードAの通信経路テーブル7(図15)を参照すると、宛先であるノードEは中継局があり中継局がノードBであることが分かる。また、現在のカウント値55は“0”でありノードEまでのカウント値は通信経路テーブル7から“17”であるため、ノードEまでの通信に要する総カウント値は0+17=17であると予測される。一方、メッシュネットワークの最大伝送時間を示すカウント値は“17”であり、予測したカウント値と最大伝送時間を示すカウント値が同じであるので、通信フレーム50のカウント値55に、隣接ノードベース伝送時間格納部13(図20)を参照して中継局であるノードBまでのカウント値“11”を加算して“11”に設定し、即座にノードBに通信フレーム50を送信する。
【0111】
ノードBにおいては、ノードAより受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードBの通信経路テーブル7(図16)を参照すると、宛先であるノードEは中継局があり中継局がノードDであることが分かる。また、現在のカウント値55は“11”でありノードEまでのカウント値は通信経路テーブル7から“6”であるため、ノードEまでの通信に要する総カウント値は11+6=17であると予測される。一方、メッシュネットワークの最大伝送時間を示すカウント値は“17”であり、予測したカウント値と最大伝送時間を示すカウント値が同じであるので、通信フレーム50のカウント値55に、隣接ノードベース伝送時間格納部13(図21)を参照して中継局であるノードDまでのカウント値“4”を加算して“15”に設定し、即座にノードDに通信フレーム50を送信する。
【0112】
ノードDにおいては、ノードBより受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードDの通信経路テーブル7(図18)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のカウント値55は“15”でありノードEまでのカウント値は通信経路テーブル7から“2”であるため、ノードEまでの通信に要する総ホップ数は15+2=17であると予測される。一方、メッシュネットワークの最大伝送時間を示すカウント値は“17”であり、予測したカウント値と最大伝送時間を示すカウント値が同じであるので、通信フレーム50のカウント値55に、隣接ノードベース伝送時間格納部13(図23)を参照して宛先であるノードEまでのカウント値“2”を加算して“17”に設定し、即座にノードEに通信フレーム50を送信する。
【0113】
ノードEにおいては、ノードDより受信した通信フレーム50の宛先情報52を確認し、自身宛であることが分かる。また、カウント値55が“17”であり最大伝送時間を示すカウント値と同じであることから正常に通信させた通信フレームであることが分かるので、アプリケーションへデータの到達を通知するとともに通信データ54を引き渡す。
【0114】
この例1では、予測したカウント値と最大伝送時間を示すカウント値との比較やカウント値55の加算といった動作は行っているが、通信フレーム50の伝送自体は従来と同じである。次に、例2としてノードDからノードEへ通信する場合を説明する。
【0115】
ノードDでは、通信データ54が発生すると、自ノードの情報と通信元情報51、ノードEを宛先情報52とし、カウント値55は自ノードでのデータ発生であり他のノードから中継されていないので“0”に設定した通信フレーム50を生成する。そして、ノードDの通信経路テーブル7(図18)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のカウント値55は“0”でありノードEまでのカウント値は通信経路テーブル7から“2”であるため、ノードEまでの通信に要する総カウント値は0+2=2であると予測される。一方、メッシュネットワークの最大伝送時間を示すカウント値は“17”であり、予測したカウント値が最大伝送時間を示すカウント値よりも小さいので、通信フレーム50のカウント値55に1カウントを加算して“1”に設定し、仮想通信路11を介してデータ受信部3に通信フレーム50を伝送する。つまり、自身内で通信フレーム50の送信を行い、カウント値を1カウント分調節する。
【0116】
ノードDは、仮想通信路11を介して受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードDの通信経路テーブル7(図18)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のカウント値55は“1”でありノードEまでのカウント値は通信経路テーブル7から“2”であるため、ノードEまでの通信に要する総カウント値は1+2=3であると予測される。一方、メッシュネットワークの最大伝送時間を示すカウント値は“17”であり、予測したカウント値が最大伝送時間を示すカウント値よりも小さいので、通信フレーム50のカウント値55に1カウントを加算して“2”に設定し、仮想通信路11を介してデータ受信部3に通信フレーム50を伝送する。そして、これをカウント値55が“15”になるまで(つまり、最大伝送時間を示すカウント値とノードEまでのカウント値との差分の回数)繰り返し、同じ値になった時点で通信フレーム50のカウント値55に、隣接ノードベース伝送時間格納部13(図23)を参照して宛先であるノードEまでのカウント値“2”を加算して“17”に設定し、即座にノードEに通信フレーム50を送信する。
【0117】
ノードEにおいては、ノードDより受信した通信フレーム50の宛先情報52を確認し、自身宛であることが分かる。また、カウント値55が“17”であり最大伝送時間を示すカウント値と同じであることから正常に通信させた通信フレームであることが分かるので、アプリケーションへデータの到達を通知するとともに通信データ54を引き渡す。
【0118】
この例2では、通信ノード20が近接してカウント値が最大伝送時間を示すカウント値よりも少ないので、ノードDでは15カウント分内部での仮想的な送信処理を行って通信時間であるカウント値を調節している。すなわち、最大伝送時間を示すカウント値からカウント値55にノードEまでのカウント値を加えた値を減算したカウント値分通信フレーム50を待機させている。
【0119】
ここで、上述した動作を行う通信システム1において、まずノードAで通信データ54が発生し、その後ノードDで通信データ54が発生して、ともにノードEに伝送する場合を図25を参照して説明する。
【0120】
図25に示したように、ノードAで発生した通信データ54は、通信フレーム50としてノードB,Dに中継されてノードEに伝送される。この伝送には17カウント要している。ノードDで発生した通信データ54は、通信フレーム50としてノードD内部で15カウント分調節されてからノードEに伝送される。この伝送にも17カウント要している。したがって、どちらの通信も17カウント要することから、先に発生したノードAの通信データ54が先にノードEに到達し、後に発生したノードDの通信データ54は後にノードEに到達する。
【0121】
本実施形態によれば、データ中継選択部6´が、通信経路テーブル7´に格納されている宛先の通信ノード20へのカウント値と最大伝送時間格納部14に格納されている最大伝送時間を示すカウント値と受信した通信フレーム50に含まれるカウント値55に基づいて、最大伝送時間を示すカウント値とカウント値55に宛先の通信ノード20へのカウント値を加算した加算値が同じでない場合は、カウント値55に1カウントを加算して自身内の仮想通信路11を介して自身のデータ受信部3へ通信フレーム50を送信しているので、ネットワーク内で行われる通信フレーム50の伝送時間を最大伝送時間に合わせるようにすることができ、経由する通信ノード20数が異なっても通信データの到着順が通信データの発生順と異なることがなくなる。また、各通信ノード20間の伝送時間が異なるメッシュネットワークでも通信データ54を発生順に目的の通信ノード20に到達させることができる。
【0122】
なお、仮想通信路11は、必ずしも物理的な通信路(配線、ケーブル等)である必要はなく、1ホップまたは1カウント分の通信時間を要することができる手段であれば例えばソフトウェアによるループやタイマ処理などで行ってもよい。
【0123】
また、上述した通信システム1における各通信ノード20間の通信路は、有線でも良いし、無線でも良い。勿論双方が混在しても良い。
【0124】
また、上述した実施形態は本発明の代表的な形態を示したに過ぎず、本発明は、実施の形態に限定されるものではない。すなわち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【符号の説明】
【0125】
1 通信システム
3 データ受信部(受信手段)
4 宛先判定器(宛先判定手段)
5 アプリケーション通知部(受信データ確認手段)
6、6´ データ中継選択部(通信制御手段、送信手段)
7、7´ 通信経路テーブル(通信条件格納手段)
8 最大ホップ数格納部(通信条件格納手段)
9 ホップ数予測器(通信制御手段)
10 データ送信部(送信手段)
12 伝送時間予測器(通信制御手段)
13 隣接ノードベース伝送時間格納部(通信条件格納手段)
14 最大伝送時間格納部(通信条件格納手段)
20 通信ノード
50 通信フレーム(データ)
52 宛先情報
53 ホップ数(受信手段で受信するまでに経過した通信時間、受信手段で受信するまでに中継された中継数)
55 カウント値(受信手段で受信するまでに経過した通信時間、受信手段で受信するまでに通信路で消費された伝送時間)
【技術分野】
【0001】
本発明は、複数の通信ノード有するメッシュネットワークで構成されている通信システムに関する。
【背景技術】
【0002】
従来、機器間の通信においては、送信元となる端末(通信ノード)と受信先となる通信ノードとを直接接続してデータの送受信を行っていた。この場合、通信ノードと通信ノードとを直接接続することで、目的の通信を行う経路を確保できるために分かり易く手軽であるという利点がある。
【0003】
しかし、通信をする相手が増えると通信ノード間での通信を行う数だけ接続が必要になる。そのため、例えば全ての通信ノードと相互に通信する必要がある場合には接続が複雑になってしまうという問題がある。
【0004】
そのような問題を解消する一つの方法としては、例えば無線LANのアクセスポイントのように、どれか1つの通信ノードを基点(基点ノード)にし、その通信ノードが各々の通信を中継することで、各通信ノードが相互に通信できるようにする方法がある。
【0005】
この基点ノードを用いた方法の場合、基点ノードが全ての通信ノードの通信を中継するために通信が集中するので、基点ノードのへの負荷が非常に大きくなる。そこで、どれか1つの通信ノードが通信の中継を請け負うのではなく、全ての通信ノードが中継局となれるメッシュネットワークが考案されている(例えば、特許文献1を参照)。
【0006】
図26にメッシュネットワークの例を示す。図26に示したメッシュネットワーク100は、ノード(通信ノード)A〜Eで構成されている。ノードAはノードBと相互に通信可能に接続されている。ノードBはノードA、C、Dと相互に通信可能に接続されている。ノードCはノードB、Eと相互に通信可能に接続されている。ノードDはノードB、Eと相互に通信可能に接続されている。ノードEはノードC、Dと相互に通信可能に接続されている。
【0007】
メッシュネットワークでは、通信において目的の通信ノードへデータを送信する際に、直接伝送することができない場合でも、近隣の通信ノードへデータを伝送する。そして、データを伝送された通信ノードが更に近隣の通信ノードへデータを伝送する。これを繰り返して、目的の通信ノードへデータを伝送することができる。例えば、図26に示したメッシュネットワーク100では、ノードAからノードEにデータを伝送する場合、ノードAからノードBのデータを伝送し、次にノードBからノードCにデータを伝送して、最後のノードCからノードEにデータを伝送する。あるいは、ノードBからはノードDを中継してノードEへデータを伝送しても良い。このようにデータが伝送されるため、1つの通信ノードにデータ中継の負荷が集中することがなくなり、全体として効率良く通信することができる。
【0008】
このようなメッシュネットワークでは、目的の通信ノードまでデータを届けるために、各通信ノードでは、なるべく中継数が少なくするように経路を選択している。そのため、余分な中継を減らし、通信網全体として効率良くネットワークを利用することができる。
【0009】
そして、従来のメッシュネットワークでは、例えば特許文献2などのように各通信ノードではなるべく中継点が少なくなるような経路を選択するように構成することが一般的であった。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開平4−368034号公報
【特許文献2】特開2006−20302号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、メッシュネットワークでは、各通信ノードによって中継数が異なるために、時間的に前に発生したデータよりも後に発生したデータが早く受信先の通信ノードに到達してしまうことがある。例えば、図26の場合、ノードAで発生したデータ(データAとする)の後にノードDでデータ(データDとする)が発生した場合、データの発生した時間順ではデータA、データDとなるが、ノードEにはデータDが先に到達してしまう場合がある。
【0012】
この場合、到達データの順序が変わってしまうため、データの発生順に処理を行わなければならない場合は、例えばノードE(或いはネットワーク全体)ではデータの発生順を管理する必要がある。一例を挙げて詳細に説明すると、例えば図26が車両のウインドウの制御に関するネットワークであって、ノードAがウインドウ開閉のロックボタン、ノードDがウインドウ開閉ボタン、ノードEがウインドウを動作させる装置であったとすると、ウインドウ開閉のロックボタンが操作されてロックされた後にウインドウ開閉が操作された場合、ウインドウは開閉されないのが正しい動作であるが、上述した問題のように、データD、つまりウインドウ開閉ボタンの操作を示すデータが先にノードEに到達すると、車両のウインドウ全体としてみればロックされているにも関わらずウインドウが動作してしまうという誤動作に繋がる。
【0013】
このように、メッシュネットワークを制御系のアプリケーションで適用する場合、中継数が異なることによるデータ到達順の問題による影響が大きくなってしまう。
【0014】
そこで、本発明は、メッシュネットワークにおいて、通信ノードへのデータの到達順がデータの発生順とすることができる通信システムを提供することを課題とする。
【課題を解決するための手段】
【0015】
上記課題を解決するためになされた請求項1に記載の発明は、データの受信を行う受信手段と、データの送信を行う送信手段と、を備えた通信ノードを複数有してメッシュネットワークを構成する通信システムにおいて、前記データには、宛先および前記受信手段で受信するまでに経過した通信時間が含まれており、前記メッシュネットワークにおける最大通信時間および自身から前記メッシュネットワークに接続されている全ての前記通信ノードへの通信時間が予め格納されている通信条件格納手段と、前記受信手段が受信したデータの前記宛先に基づいて当該データが自身宛か他の通信ノード宛かを判定する宛先判定手段と、前記宛先判定手段が前記受信手段が受信したデータが他の通信ノード宛と判定した場合は、前記通信条件格納手段に格納された前記最大通信時間と前記受信手段が受信したデータの前記受信手段で受信するまでに経過した通信時間に前記通信条件格納手段に格納された前記宛先への通信時間を加算した加算値とを比較し、前記加算値が前記最大通信時間と同じ値である場合は前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記加算値が前記最大通信時間よりも小さい場合は、前記最大通信時間から前記加算値を減算した時間分前記データを待機させてから前記送信手段に前記宛先または中継先の前記通信ノードへ送信させるように制御する通信制御手段と、を前記通信ノードが備えていることを特徴とする通信システムである。
【0016】
請求項2に記載の発明は、請求項1に記載の発明において、前記データに、前記受信手段で受信するまでに中継された中継数が含まれており、前記通信条件格納手段に、前記メッシュネットワークにおける最大中継数および自身から前記メッシュネットワークに接続されている全ての前記通信ノードへの中継数が予め格納され、前記通信制御手段が、前記通信条件格納手段に格納された前記最大中継数と前記受信手段が受信したデータの前記受信手段で受信するまでに中継された中継数に前記通信条件格納手段に格納された前記宛先への中継数を加算した加算値とを比較し、前記加算値が前記最大中継数と同じ値である場合は前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記加算値が前記最大中継数よりも小さい場合は、前記最大中継数から前記加算値を減算した中継数分前記データを待機させてから前記送信手段に前記宛先または中継先の前記通信ノードへ送信させるように制御することを特徴とするものである。
【0017】
請求項3に記載の発明は、請求項2に記載の発明において、前記通信制御手段が、前記加算値が前記最大中継数よりも小さい場合は、前記受信手段で受信するまでに中継された中継数をインクリメントして自身の前記送信手段から自身の前記受信手段へ前記データを送信させることを特徴とするものである。
【0018】
請求項4に記載の発明は、請求項2または3に記載の発明において、前記通信制御手段が、前記加算値が前記最大中継数と同じ値である場合は、前記受信手段で受信するまでに中継された中継数をインクリメントして前記送信手段から前記宛先または中継先へ前記データを送信させることを特徴とするものである。
【0019】
請求項5に記載の発明は、請求項1に記載の発明において、前記データに、前記受信手段で受信するまでに通信路で消費された伝送時間が含まれており、前記通信条件格納手段に、前記メッシュネットワークにおける最大伝送時間および自身から前記メッシュネットワークに接続されている全ての前記通信ノードへの伝送時間が予め格納され、前記通信制御手段が、前記通信条件格納手段に格納された前記最大伝送時間と前記受信手段が受信したデータの前記受信手段で受信するまでに通信路で消費された伝送時間に前記通信条件格納手段に格納された前記宛先への伝送時間を加算した加算値とを比較し、前記加算値が前記最大伝送時間と同じ値である場合は前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記加算値が前記最大伝送時間よりも小さい場合は、前記最大伝送時間から前記加算値を減算した伝送時間分前記データを待機させてから前記送信手段に前記宛先または中継先の前記通信ノードへ送信させるように制御することを特徴とするものである。
【0020】
請求項6に記載の発明は、請求項5に記載の発明において、前記通信制御手段が、前記加算値が前記最大伝送時間よりも小さい場合は、前記受信手段で受信するまでに通信路で消費された伝送時間に予め定めた基準伝送時間を加算して自身の前記送信手段から自身の前記受信手段へ前記データを送信させることを特徴とするものである。
【0021】
請求項7に記載の発明は、請求項5または6に記載の発明において、前記通信制御手段が、前記加算値が前記最大伝送時間と同じ値である場合は、前記受信手段で受信するまでに通信路で消費された伝送時間に前記宛先までの伝送時間を加算して前記送信手段から宛先または中継先へ前記データを送信させることを特徴とするものである。
【0022】
請求項8に記載の発明は、請求項1乃至7のうちいずれか一項に記載の発明おいて、前記宛先判定手段が前記受信手段が受信したデータが自身宛と判定した場合は、前記受信手段で受信するまでに経過した通信時間および前記通信条件格納手段に格納されている前記最大通信時間に基づいて、当該データが正常か否かを判断する受信データ確認手段を、前記通信ノードが備えていることを特徴とするものである。
【発明の効果】
【0023】
以上説明したように請求項1に記載の発明によれば、通信制御手段が、通信条件格納手段に格納されているメッシュネットワークにおける最大通信時間および自身からメッシュネットワークに接続されている全ての通信ノードへの通信時間と、データに含まれる宛先および受信手段で受信するまでに経過した通信時間に基づいて、最大通信時間と受信以前に経過した通信時間に宛先への通信時間を加算した加算値が同じでない場合は、その差分時間だけ待機させてから隣接する通信ノードに送信している。つまり、各通信ノード間の通信時間をメッシュネットワークの最大通信時間に合わせるようにしているので、中継数が異なってもデータの到着順がデータの発生順と異なることがなくなる。また、到達したデータを処理するシステム、装置、ソフトウェアなどのアプリケーションではデータの順序を管理する必要がなくシンプルに構成できる。
【0024】
請求項2に記載の発明によれば、データに、受信手段で受信するまでに中継された中継数が含まれており、通信条件格納手段に、メッシュネットワークにおける最大中継数および自身からメッシュネットワークに接続されている全ての通信ノードへの中継数が予め格納され、通信制御手段が、通信条件格納手段に格納された最大中継数と受信手段が受信したデータの受信手段で受信するまでに中継された中継数に通信条件格納手段に格納された宛先への中継数を加算した加算値とを比較し、加算値が最大中継数と同じ値である場合は送信手段にデータを宛先または中継先の通信ノードへ送信させ、加算値が最大中継数よりも小さい場合は、最大中継数から加算値を減算した中継数分データを待機させてから送信手段に宛先または中継先の通信ノードへ送信させるように制御するので、通信時間として中継数を用いて送信元から宛先までの中継数をメッシュネットワーク内の最大中継数に合わせるようにしているので、中継数が異なってもデータの到着順がデータの発生順と異なることがなくなる。
【0025】
請求項3に記載の発明によれば、通信制御手段が、加算値が最大中継数よりも小さい場合は、受信手段で受信するまでに中継された中継数をインクリメントして自身の送信手段から自身の受信手段へデータを送信させているので、内部での仮想的な送受信の回数で中継数の調節ができ、シンプルな構成で通信時間の待機を行うことができる。
【0026】
請求項4に記載の発明によれば、通信制御手段が、加算値が最大中継数と同じ値である場合は、受信手段で受信するまでに中継された中継数をインクリメントして送信手段から宛先または中継先へ前記データを送信させているので、受信手段で受信するまでに中継された中継数を更新することとなり、その更新された中継数で宛先や中継先での通信の正常性の確認や中継数の調節を行うことができる。
【0027】
請求項5に記載の発明によれば、データに、受信手段で受信するまでに通信路で消費された伝送時間が含まれており、通信条件格納手段に、メッシュネットワークにおける最大伝送時間および自身からメッシュネットワークに接続されている全ての通信ノードへの伝送時間が予め格納され、通信制御手段が、通信条件格納手段に格納された最大伝送時間と受信手段が受信したデータの受信手段で受信するまでに通信路で消費された伝送時間に通信条件格納手段に格納された宛先への伝送時間を加算した加算値とを比較し、加算値が最大伝送時間と同じ値である場合は送信手段にデータを宛先または隣接する通信ノードへ送信させ、加算値が最大伝送時間よりも小さい場合は、最大伝送時間から加算値を減算した伝送時間分データを待機させてから送信手段に宛先または中継席の通信ノードへ送信させるように制御するので、通信時間として各通信ノード間の伝送速度から算出される通信路で消費された伝送時間を用いて送信元から宛先までの伝送時間をメッシュネットワーク内の最大伝送時間に合わせるようにしているので、伝送時間が異なってもデータの到着順がデータの発生順と異なることがなくなる。また、各通信ノード間の伝送時間が異なるメッシュネットワークでもデータを発生順に目的の通信ノードに到達させることができる。
【0028】
請求項6に記載の発明によれば、通信制御手段が、加算値が最大伝送時間よりも小さい場合は、受信手段で受信するまでに通信路で消費された伝送時間に予め定めた基準伝送時間を加算して自身の送信手段から自身の受信手段へデータを送信させているので、内部での仮想的な送受信による基準伝送時間の加算回数で伝送時間の調整ができる。
【0029】
請求項7に記載の発明によれば、通信制御手段が、加算値が最大伝送時間と同じ値である場合は、受信手段で受信するまでに通信路で消費された伝送時間に予め定めた基準伝送時間を加算して送信手段から宛先または中継先へデータを送信させているので、受信手段で受信するまでに通信路で消費された伝送時間を更新することとなり、その更新された伝送時間で宛先や中継先での通信の正常性の確認や伝送時間の調節を行うことができる。
【0030】
請求項8に記載の発明によれば、宛先判定手段が受信手段が受信したデータが自身宛と判定した場合は、受信手段で受信するまでに経過した通信時間および通信条件格納手段に格納されている最大通信時間に基づいて、当該データが正常か否かを判断する受信データ確認手段を通信ノードが備えているので、受信手段で受信するまでに経過した通信時間(中継数または伝送時間)を確認することでデータが正しく伝送されてきたかを確認することができる。
【図面の簡単な説明】
【0031】
【図1】本発明の第1の実施形態にかかる通信システムの構成図である。
【図2】図1に示された通信システム内で伝送されるデータとしての通信フレームの構成例を示す説明図である。
【図3】図1に示された通信ノードの構成を示すブロック図である。
【図4】図3に示された通信ノードの動作を示すフローチャートである。
【図5】図1に示されたノードAの通信経路テーブルを示す表である。
【図6】図1に示されたノードBの通信経路テーブルを示す表である。
【図7】図1に示されたノードCの通信経路テーブルを示す表である。
【図8】図1に示されたノードDの通信経路テーブルを示す表である。
【図9】図1に示されたノードEの通信経路テーブルを示す表である。
【図10】図1に示された通信システムにおける通信フレームの伝送を示す説明図である。
【図11】本発明の第2の実施形態にかかる通信システムの構成図である。
【図12】図11に示された通信システム内で伝送されるデータとしての通信フレームの構成例を示す説明図である。
【図13】図11に示された通信ノードの構成を示すブロック図である。
【図14】図13に示された通信ノードの動作を示すフローチャートである。
【図15】図11に示されたノードAの通信経路テーブルを示す表である。
【図16】図11に示されたノードBの通信経路テーブルを示す表である。
【図17】図11に示されたノードCの通信経路テーブルを示す表である。
【図18】図11に示されたノードDの通信経路テーブルを示す表である。
【図19】図11に示されたノードEの通信経路テーブルを示す表である。
【図20】図11に示されたノードAの隣接ノードベース伝送時間を示す表である。
【図21】図11に示されたノードBの隣接ノードベース伝送時間を示す表である。
【図22】図11に示されたノードCの隣接ノードベース伝送時間を示す表である。
【図23】図11に示されたノードDの隣接ノードベース伝送時間を示す表である。
【図24】図11に示されたノードEの隣接ノードベース伝送時間を示す表である。
【図25】図11に示された通信システムにおける通信フレームの伝送を示す説明図である。
【図26】従来のメッシュネットワークを用いた通信システムの構成図である。
【発明を実施するための形態】
【0032】
(第1実施形態)
次に、本発明の第1の実施形態を図1ないし図10を参照して説明する。本発明の第1の実施形態にかかる通信システム1は、図1に示すように、複数の通信ノード20(ノードA、ノードB、ノードC、ノードD、ノードE)を有して構成され、これらのノードA〜Eはメッシュネットワークを構成している。
【0033】
図1に示した通信システム1では、ノードAはノードBと相互に通信可能に接続されている。ノードBはノードA、C、Dと相互に通信可能に接続されている。ノードCはノードB、Eと相互に通信可能に接続されている。ノードDはノードB、Eと相互に通信可能に接続されている。ノードEはノードC、Dと相互に通信可能に接続されている。なお、本実施形態では各通信ノード20間の通信速度は同じであるとする。
【0034】
図2に通信システム1内で伝送されるデータとしての通信フレーム50の構成例を示す。通信フレーム50は、通信元情報51と、宛先情報52と、ホップ数53と、通信データ54と、を備えて構成されている。なお、通信フレーム50のフレーム長は固定とする。
【0035】
通信元情報51は、通信フレーム50を生成した通信元の通信ノード20を示す情報(例えばノードAなど)が格納され、宛先情報52は、通信フレーム50の宛先の通信ノード20を示す情報(例えばノードEなど)が格納される。
【0036】
ホップ数53は、受信手段で受信するまでに経過した通信時間であるデータ受信部3で受信するまでに中継されたホップ数(中継数)が格納され、通信データ54は、宛先の通信ノード20で使用されるデータが格納される。
【0037】
図3に通信ノード20のブロック図を示す。通信ノード20は、通信ユニット2と、受信手段としてのデータ受信部3と、宛先判定手段としての宛先判定器4と、受信データ確認手段としてのアプリケーション通知部5と、通信制御手段としてのデータ中継選択部6と、通信条件格納手段としての通信経路テーブル7と、通信条件格納手段としての最大ホップ数格納部8と、通信制御手段としてのホップ数予測器9と、送信手段としてのデータ送信部10と、仮想通信路11と、を備えている。
【0038】
通信ユニット2は、外部との通信フレーム50の入出力を行うブロックであり、外部から入力された通信フレーム50はデータ受信部3へ出力され、データ送信部10から入力された通信フレーム50は外部へ出力される。
【0039】
データ受信部3は、通信ユニット2または後述する仮想通信路11から入力された通信フレーム50を受信して宛先判定器4へ出力する。
【0040】
宛先判定器4は、通信フレーム50内の宛先情報52を解析して自身宛ての通信フレーム50であった場合はアプリケーション通知部5へ通信フレーム50を出力し、他の通信ノード20宛てであった場合はデータ中継選択部6へ通信フレーム50を出力する。
【0041】
アプリケーション通知部5は、自身宛ての通信フレーム50を受信した場合は、自身の通信ノード20で実行されるアプリケーションに通知して通信フレーム50内の通信データ54を取り出してアプリケーションに引き渡す。また、受信した通信フレーム50のホップ数53と後述する最大ホップ数格納部8に格納されている最大ホップ数から受信した通信フレーム50が正常か否かを判断する。また、アプリケーションで他の通信ノード20へのデータが発生した場合は、アプリケーションからデータを受け取って通信フレーム50を生成して宛先判定器4へ出力する。なお、このアプリケーションとは、通信システム1全体で実現される装置やシステム(例えば車両のウィンドウ制御など)のうち、当該通信ノード20に割り当てられた機能を実行する手段(例えばウィンドウロック)を示し、図示はしないが、ハードウェアまたはソフトウェアで構成されている。
【0042】
データ中継選択部6は、後述する通信経路テーブル7を参照して受信した通信フレーム50を宛先の通信ノード20に伝送するために必要な中継局を選択する。また、データ中継選択部6は、受信した通信フレーム50と後述する通信経路テーブル7から後述するホップ数予測器9で当該通信フレーム50の宛先までの総ホップ数を予測させるとともに、ホップ数予測器9で予測された総ホップ数と後述する最大ホップ数格納部8に格納されている最大ホップ数とを比較して、予測された総ホップ数と最大ホップ数とが同じである場合は、通信フレーム50内のホップ数53をインクリメント(+1)してデータ送信部10へ通信フレーム50を出力し、予測された総ホップ数が最大ホップ数よりも小さい場合は通信フレーム50内のホップ数53をインクリメントして仮想通信路11へ通信フレーム50を出力する。
【0043】
通信経路テーブル7は、通信システム1を構成する自身以外の通信ノード20へのホップ数、すなわち自身からメッシュネットワークに接続されている全ての通信ノード20への通信時間(中継数)や、中継局の有無、中継局がある場合は中継局名(アドレスなど中継局を示すことができる情報)が通信ノード20毎にテーブル状に予め格納されている。
【0044】
最大ホップ数格納部8は、通信システム1における最大通信時間としての最大ホップ数(最大中継数)が予め格納されている。なお、本実施形態では通信経路テーブル7と最大ホップ数格納部8は分けて構成しているが1つのメモリなどにそれぞれの領域を設けるように構成してもよい。
【0045】
ホップ数予測器9は、受信した通信フレーム50と通信経路テーブル7から通信フレーム50の宛先までの総ホップ数、すなわち通信フレーム50のホップ数53に通信経路テーブル7に格納された宛先へのホップ数を加算した加算値を予測する。
【0046】
データ送信部10は、データ中継選択部6から入力された通信フレーム50を通信ユニット2へ出力する。
【0047】
仮想通信路11は、通信ノード20内で仮想的に通信フレーム50を伝送するためにデータ中継選択部6からデータ受信部3に通信フレーム50を伝送する。
【0048】
次に、上述した構成の通信ノード20の動作を図4のフローチャートを参照して説明する。
【0049】
まず、ステップS101において、自身内でデータが発生したか否かを判断し、発生した場合(Yの場合)はステップS102に進み、発生していない場合(Nの場合)はステップS110に進む。本ステップでは、例えばアプリケーション通知部5がアプリケーションから他の通信ノード20へ送信するデータを受け取ったか否かで判断する。
【0050】
次に、ステップS102において、通信フレーム50を生成してステップS103に進む。本ステップでは、アプリケーションで他の通信ノード20へ送信するデータが発生したのでアプリケーション通知部5が受け取ったデータから通信フレーム50を生成し宛先判定器4へ出力する。
【0051】
次に、ステップS103において、通信経路テーブル7を参照してステップS104に進む。本ステップでは、データ中継選択部6がアプリケーション通知部5で生成した通信フレーム50を宛先の通信ノード20に伝送するために必要な中継局(宛先に直接伝送できる場合は宛先)の情報を参照している。
【0052】
次に、ステップS104において、総ホップ数を予測してステップS105に進む。本ステップでは、データ中継選択部6がホップ数予測器9に当該通信フレーム50の宛先までの総ホップ数を予測させている。
【0053】
次に、ステップS105において、ステップS104で予測した総ホップ数が最大ホップ数と同じか否かを判断し、同じである場合(Yの場合)はステップS106に進み、同じでない場合(Nの場合)はステップS108に進む。
【0054】
次に、ステップS106において、通信フレーム50内のホップ数53を加算(インクリメント)し、ステップS107へ進む。本ステップでは、予測した総ホップ数が最大ホップ数と同じであったので、データ中継選択部6が通信フレーム50内のホップ数53をインクリメントしてデータ送信部10へ通信フレーム50を出力している。
【0055】
次に、ステップS107において、次の通信ノード20へ通信する。本ステップでは、データ送信部10から通信ユニット2を介して宛先または中継先の通信ノード20へ通信フレーム50を送信する。
【0056】
また、ステップS108においては、通信フレーム50内のホップ数53を加算(インクリメント)し、ステップS109へ進む。本ステップでは、予測した総ホップ数が最大ホップ数と同じでなかったので、自ノード宛内部通信を行う前にデータ中継選択部6が通信フレーム50内のホップ数53をインクリメントしている。
【0057】
次に、ステップS109において、自ノード宛内部通信を行いステップS101へ戻る。本ステップでは、データ中継選択部6から仮想通信路11を介してデータ受信部3へ通信フレーム50を送信している。したがって、自ノード宛内部通信を行う場合はデータ中継選択部6が送信手段を兼ねる。
【0058】
一方、ステップS110においては、隣接する通信ノード20からデータ受信したか否かを判断し、データ受信であった場合(Yの場合)はステップS111に進み、データ受信でない場合(Nの場合)はステップS101に戻る。
【0059】
次に、ステップS111において、宛先確認を行ってステップS112に進む。本ステップでは、宛先判定器4で、通信フレーム50内の宛先情報52を解析して自身宛てであったか他の通信ノード20宛てであったかを判断する。
【0060】
次に、ステップS112において、ステップS111の結果自ノード宛てであったか否かを判断し、自ノード宛てであった場合はステップS113に進み、自ノード宛てでなかった場合はステップS103に進む。
【0061】
次に、ステップS113において、ホップ数を確認してステップS114に進む。本ステップでは、自ノード宛ての通信フレーム50内のホップ数53をアプリケーション通知部5で取り出して確認する。
【0062】
次に、ステップS114において、ステップS113で確認したホップ数53が最大ホップ数格納部8に格納されている最大ホップ数と同じか否かを判断し、同じである場合(Yの場合)はステップS115に進み、同じでない場合(Nの場合)はステップS116に進む。本ステップでは、アプリケーション通知部5でホップ数53と最大ホップ数を比較して判断する。
【0063】
次に、ステップS115において、ホップ数53が最大ホップ数と同じであるので、正常な通信フレームであるとしてアプリケーション通知部5は通信データ54の到達をアプリケーションへ通知する。
【0064】
また、ステップS116においては、ホップ数53が最大ホップ数と同じでないので、異常な通信フレームであるとして当該通信フレーム50を破棄する。
【0065】
次に、上述した構成の通信ノード20を複数有する通信システム1(メッシュネットワーク)の動作例を説明する。図5〜図9にノードA〜Eまでの通信経路テーブル7の内容を示す。また、通信システム1を構成するメッシュネットワークの最大ホップ数は“3”であり、この値は予め各通信ノード20の最大ホップ数格納部8に格納されている。
【0066】
まず、例1としてノードAからノードEへ通信する場合を説明する。ノードAでは、通信データ54が発生すると、自ノードの情報を通信元情報51、ノードEを宛先情報52とし、ホップ数53は自ノードでのデータ発生であり他のノードから中継されて受信した通信フレーム50ではないので“0”に設定した通信フレーム50を生成する。そして、ノードAの通信経路テーブル7(図5)を参照すると、宛先であるノードEは中継局があり中継局がノードBであることが分かる。また、現在のホップ数53は0ホップでありノードEまでのホップ数は通信経路テーブル7から3ホップであるため、ノードEまでの通信に要する総ホップ数は0+3=3ホップであると予測される。一方、メッシュネットワークの最大ホップ数は3ホップであり、予測した総ホップ数と最大ホップ数が同じであるので、通信フレーム50のホップ数53をインクリメントして“1”に設定し、即座に中継局であるノードBに通信フレーム50を送信する。
【0067】
ノードBにおいては、ノードAより受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードBの通信経路テーブル7(図6)を参照すると、宛先であるノードEは中継局があり中継局がノードCであることが分かる。また、現在のホップ数53は1ホップでありノードEまでのホップ数は通信経路テーブル7から2ホップであるため、ノードEまでの通信に要する総ホップ数は1+2=3ホップであると予測される。一方、メッシュネットワークの最大ホップ数は3ホップであり、予測した総ホップ数と最大ホップ数が同じであるので、通信フレーム50のホップ数53をインクリメントして“2”に設定し、即座に中継局であるノードCに通信フレーム50を送信する。
【0068】
ノードCにおいては、ノードBより受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードCの通信経路テーブル7(図7)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のホップ数53は2ホップでありノードEまでのホップ数は通信経路テーブル7から1ホップであるため、ノードEまでの通信に要する総ホップ数は2+1=3ホップであると予測される。一方、メッシュネットワークの最大ホップ数は3ホップであり、予測した総ホップ数と最大ホップ数が同じであるので、通信フレーム50のホップ数53をインクリメントして“3”に設定し、即座に宛先であるノードEに通信フレーム50を送信する。
【0069】
ノードEにおいては、ノードCより受信した通信フレーム50の宛先情報52を確認し、自身宛であることが分かる。また、ホップ数53が3ホップであり最大ホップ数と同じであることから正常に通信させた通信フレームであることが分かるので、アプリケーションへデータの到達を通知するとともに通信データ54を引き渡す。
【0070】
この例1では、予測した総ホップ数と最大ホップ数との比較やホップ数53のインクリメントといった動作は行っているが、通信フレーム50の伝送自体は従来と同じである。次に、例2としてノードDからノードEへ通信する場合を説明する。
【0071】
ノードDでは、通信データ54が発生すると、自ノードの情報を通信元情報51、ノードEを宛先情報52とし、ホップ数53は自ノードでのデータ発生であり他のノードから中継されていないので“0”に設定した通信フレーム50を生成する。そして、ノードDの通信経路テーブル7(図8)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のホップ数53は0ホップでありノードEまでのホップ数は通信経路テーブル7から1ホップであるため、ノードEまでの通信に要する総ホップ数は0+1=1ホップであると予測される。一方、メッシュネットワークの最大ホップ数は3ホップであり、予測した総ホップ数が最大ホップ数よりも小さいので、通信フレーム50のホップ数53をインクリメントして“1”に設定し、仮想通信路11を介してデータ受信部3に通信フレーム50を伝送する。つまり、自身(自ノード)内で通信フレーム50の送信を行い、ホップ数を1回分調節する。
【0072】
ノードDは、次のタイミングで、仮想通信路11を介して受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードDの通信経路テーブル7(図8)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のホップ数53は1ホップでありノードEまでのホップ数は通信経路テーブル7から1ホップであるため、ノードEまでの通信に要する総ホップ数は1+1=2ホップであると予測される。一方、メッシュネットワークの最大ホップ数は3ホップであり、予測した総ホップ数が最大ホップ数よりも小さいので、通信フレーム50のホップ数53をインクリメントして“2”に設定し、仮想通信路11を介してデータ受信部3に通信フレーム50を伝送する。
【0073】
ノードDは、さらに次のタイミングで、仮想通信路11を介して受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードDの通信経路テーブル7(図8)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のホップ数53は2ホップでありノードEまでのホップ数は通信経路テーブル7から1ホップであるため、ノードEまでの通信に要する総ホップ数は2+1=3ホップであると予測される。一方、メッシュネットワークの最大ホップ数は3ホップであり、予測した総ホップ数と最大ホップ数が同じであるので、通信フレーム50のホップ数53をインクリメントして“3”に設定し、即座に宛先であるノードEに通信フレーム50を送信する。
【0074】
ノードEにおいては、ノードDより受信した通信フレーム50の宛先情報52を確認し、自身宛であることが分かる。また、ホップ数53が3ホップであり最大ホップ数と同じであることから正常に通信させた通信フレームであることが分かるので、アプリケーションへデータの到達を通知するとともに通信データ54を引き渡す。
【0075】
この例2では、通信ノード20が近接してホップ数が最大ホップ数よりも少ないので、ノードDでは2ホップ分内部での仮想的な送信処理を行ってホップ数が最大ホップ数と同じになるように調節している。すなわち、最大ホップ数から総ホップ数を減算したホップ数分通信フレーム50を待機させている。
【0076】
ここで、上述した動作を行う通信システム1において、まずノードAで通信データ54が発生し、その後ノードDで通信データ54が発生して、ともにノードEに伝送する場合を図10を参照して説明する。
【0077】
図10に示したように、ノードAで発生した通信データ54は、通信フレーム50としてノードB,Cに中継されてノードEに伝送される。この伝送には3ホップ要している。ノードDで発生した通信データ54は、通信フレーム50としてノードD内部で2ホップ分調節されてからノードEに伝送される。この伝送にも3ホップ要している。したがって、どちらの通信も3ホップ要することから、先に発生したノードAの通信データ54が、後に発生したノードDの通信データ54よりも先にノードEに到達する。
【0078】
本実施形態によれば、データ中継選択部6が、通信経路テーブル7に格納されている宛先の通信ノード20へのホップ数と最大ホップ数格納部8に格納されている最大ホップ数と受信した通信フレーム50に含まれるホップ数53に基づいて、最大ホップ数とホップ数53に宛先の通信ノード20へのホップ数を加算した総ホップ数が同じでない場合は、ホップ数53をインクリメントして自身内の仮想通信路11を介して自身のデータ受信部3へ通信フレーム50を送信しているので、ネットワーク内で行われる通信のホップ数を最大ホップ数に合わせるようにすることができ、経由する通信ノード20数が異なっても通信データの到着順が通信データの発生順と異なることがなくなる。また、通信ノード20内部での仮想的な送受信の回数で中継数の調整ができ、シンプルな構成で通信時間の待機を行うことができる。さらに、アプリケーションでデータの順序を管理する必要がなくなるのでアプリケーションをシンプルに構成することができる。
【0079】
また、最大ホップ数とホップ数53に宛先の通信ノード20へのホップ数を加算した総ホップ数が同じである場合は、ホップ数53をインクリメントしてデータ送信部10から宛先または中継先の通信ノード20へ通信フレーム50を送信しているので、ホップ数53を更新して、その更新した中継数で宛先や中継先において通信の正常性の確認や中継数の調節を行うことができる。
【0080】
また、アプリケーション通知部5が、宛先判定器4がデータ受信部3で受信した通信フレーム50が自身宛と判定した場合は、ホップ数53および最大ホップ数に基づいて、当該通信フレームが正常か否かを判断しているので、ホップ数を確認することでデータが正しく伝送されてきたかを確認することができる。
【0081】
(第2実施形態)
次に、本発明の第2の実施形態を図11ないし図25を参照して説明する。なお、前述した第1の実施形態と同一部分には、同一符号を付して説明を省略する。
【0082】
図11に実施形態の通信システム1の構成図を示す。図11に示した通信システム1は、メッシュネットワークの構成自体は第1の実施形態と同一である。第1の実施形態では各通信ノード20間の通信速度が同じであるという前提であったが、本実施形態では図11に示すように異なっている。
【0083】
図12に本実施形態で伝送されるデータとしての通信フレーム50の構成例を示す。通信フレーム50は、第1の実施形態の通信フレーム50に対して、ホップ数53がカウント値55に置き換わっている点が異なる。
【0084】
カウント値55は、予め定めた基準伝送時間を1カウントとして、受信手段で受信するまでに経過した通信時間であるデータ受信部3で受信するまでに通信路で消費した伝送時間、つまり、送信元から自ノードが受信するまでの経路で消費した伝送時間をカウント値として表した値が格納されている。このカウント値は通信路上の伝送速度に基いて設定する。例えば伝送速度が2Mbpsの場合は11カウント、11Mbpsの場合は2カウントなど、伝送速度が遅くなるに従ってカウント値が多くなるように設定する。この例の場合1カウント=22Mbpsとなる。これは逆に言うと22Mビットのデータを転送するのに要する時間(秒数)がカウント値となる。
【0085】
図13に本実施形態の通信ノード20のブロック図を示す。本実施形態では、最大ホップ数格納部8に代えて最大伝送時間格納部14を備え、ホップ数予測器9に代えて伝送時間予測器12を備え、さらに通信条件格納手段として隣接ノードベース伝送時間格納部13を追加で備えている。また、これらのブロックの変更および追加を受けてデータ中継選択部6がデータ中継選択部6´に、通信経路テーブル7が通信経路テーブル7´に、それぞれ変更されている。
【0086】
最大伝送時間格納部14は、通信システム1における最大伝送時間が前記したカウント値に換算されて予め格納されている。
【0087】
通信経路テーブル7´は、通信システム1を構成する自身以外の通信ノード20へのホップ数に代えて、通信システム1を構成する自身以外の通信ノード20への伝送時間が前記したカウント値に換算されて格納されている。
【0088】
伝送時間予測器12は、受信した通信フレーム50と通信経路テーブル7´から通信フレーム50の宛先までのカウント値を予測する。
【0089】
隣接ノードベース伝送時間格納部13は、自身と隣接する通信ノード20との間のベース伝送時間(隣接ノードまでの通信路で消費される伝送時間)がカウント値として格納されている。なお、最大伝送時間格納部14と隣接ノードベース伝送時間格納部13は第1の実施形態と同様に、通信経路テーブル7と合わせて1つのメモリなどにそれぞれの領域を設けるように構成してもよい。
【0090】
データ中継選択部6´は、通信経路テーブル7´を参照して受信した通信フレーム50を宛先の通信ノード20に伝送するために必要な中継局を選択する。また、データ中継選択部6は、受信した通信フレーム50と通信経路テーブル7´から伝送時間予測器12で当該通信フレーム50の宛先までの総伝送時間(カウント値)を予測させるとともに、伝送時間予測器12で予測された総伝送時間と最大伝送時間格納部14に格納されている最大伝送時間を示すカウント値とを比較して、予測されたカウント値と最大伝送時間を示すカウント値とが同じである場合は、通信フレーム50内のカウント値55をインクリメント(基準伝送時間である1カウントを加算)してデータ送信部10へ通信フレーム50を出力し、予測されたカウント値が最大伝送時間を示すカウント値よりも小さい場合は通信フレーム50内のカウント値55をインクリメントして仮想通信路11へ通信フレーム50を出力する。
【0091】
次に、上述した構成の通信ノード20の動作を図14のフローチャートを参照して説明する。
【0092】
まず、ステップS201において、自身内でデータが発生したか否かを判断して発生した場合(Yの場合)はステップS202に進み、発生していない場合(Nの場合)はステップS210に進む。本ステップでは、例えばアプリケーション通知部5がアプリケーションから他の通信ノード20へ送信するデータを受け取ったか否かで判断する。
【0093】
次に、ステップS202において、通信フレーム50を生成してステップS203に進む。本ステップでは、アプリケーションで他の通信ノード20へ送信するデータが発生したのでアプリケーション通知部5が受け取ったデータから通信フレーム50を生成し宛先判定器4へ出力する。
【0094】
次に、ステップS203において、通信経路テーブル7´を参照してステップS204に進む。本ステップでは、データ中継選択部6´がアプリケーション通知部5で生成した通信フレーム50を宛先の通信ノード20に伝送するために必要な中継局(宛先に直接伝送できる場合は宛先)の情報を参照している。
【0095】
次に、ステップS204において、伝送時間を計算(予測)してステップS205に進む。本ステップでは、データ中継選択部6´が伝送時間予測器12に当該通信フレーム50の宛先までの総伝送時間(カウント値)を予測させている。
【0096】
次に、ステップS205において、ステップS204で予測したカウント値が最大伝送時間を示すカウント値と同じか否かを判断し、同じである場合(Yの場合)はステップS206に進み、同じでない場合(Nの場合)はステップS208に進む。
【0097】
次に、ステップS206において、通信フレーム50内のカウント値55に中継先の通信ノード20までのカウント値を隣接ノードベース通信時間格納部13から読み出して加算し、ステップS207へ進む。本ステップでは、予測したカウント値が最大伝送時間を示すカウント値と同じであったので、データ中継選択部6´が通信フレーム50内のカウント値55に中継先の通信ノード20までの伝送時間に相当するカウント値を加算してデータ送信部10へ通信フレーム50を出力している。
【0098】
次に、ステップS207において、次の通信ノード20へ通信する。本ステップでは、データ送信部10から通信ユニット2を介して隣接する通信ノード20へ通信フレーム50を送信する。
【0099】
また、ステップS208においては、通信フレーム50内のカウント値55を加算(インクリメント)し、ステップS209へ進む。本ステップでは、予測したカウント値が最大伝送時間を示すカウント値と同じでなかったので、自ノード宛内部通信を行う前にデータ中継選択部6´が通信フレーム50内のカウント値55に基準伝送時間である1カウントを加算している。
【0100】
次に、ステップS209において、自ノード宛内部通信を行いステップS201へ戻る。本ステップでは、データ中継選択部6´から仮想通信路11を介してデータ受信部3へ通信フレーム50を送信している。
【0101】
一方、ステップS210においては、隣接する通信ノード20からデータ受信したか否かを判断し、データ受信であった場合(Yの場合)はステップS211に進み、データ受信でない場合(Nの場合)はステップS201に戻る。
【0102】
次に、ステップS211において、宛先確認を行ってステップS212に進む。本ステップでは、宛先判定器4で、通信フレーム50内の宛先情報52を解析して自身宛てであったか他の通信ノード20宛てであったかを判断する。
【0103】
次に、ステップS212において、ステップS211の結果自ノード宛てであったか否かを判断し、自ノード宛てであった場合はステップS213に進み、自ノード宛てでなかった場合はステップS203に進む。
【0104】
次に、ステップS213において、通信時間を確認してステップS214に進む。本ステップでは、自ノード宛ての通信フレーム50内のカウント値55をアプリケーション通知部5で取り出して確認する。
【0105】
次に、ステップS214において、ステップS213で確認したカウント値55が最大通信伝送格納部11に格納されている最大伝送時間を示すカウント値と同じか否かを判断し、同じである場合(Yの場合)はステップS215に進み、同じでない場合(Nの場合)はステップS216に進む。本ステップでは、アプリケーション通知部5でカウント値55と最大伝送時間を示すカウント値を比較して判断する。
【0106】
次に、ステップS215において、カウント値55が最大伝送時間を示すカウント値と同じであるので、正常な通信フレームであるとしてアプリケーション通知部5は通信データ54の到達をアプリケーションへ通知する。
【0107】
また、ステップS216においては、カウント値55が最大伝送時間を示すカウント値と同じでないので、異常な通信フレームであるとして当該通信フレーム50を破棄する。
【0108】
次に、上述した構成の通信ノード20を複数有する通信システム1(メッシュネットワーク)の動作例を説明する。図15〜図19にノードA〜Eまでの通信経路テーブル7の内容を示す。また、通信システム1を構成するメッシュネットワークの最大伝送時間を示すカウント値は“17”であり、この値は予め各通信ノード20の最大伝送時間格納部14に格納されている。
【0109】
また、本実施形態では、隣接ノードベース伝送時間が隣接ノードベース伝送時間格納部13に格納され、自身と隣接する通信ノード20との間のベース伝送時間が図20〜図24に示すようにカウント値として格納されている。
【0110】
まず、例1としてノードAからノードEへ通信する場合を説明する。ノードAでは、通信データ54が発生すると、自ノードの情報と通信元情報51、ノードEを宛先情報52とし、カウント値55は自ノードでのデータ発生であり他のノードから伝送されていないので“0”に設定した通信フレーム50を生成する。そして、ノードAの通信経路テーブル7(図15)を参照すると、宛先であるノードEは中継局があり中継局がノードBであることが分かる。また、現在のカウント値55は“0”でありノードEまでのカウント値は通信経路テーブル7から“17”であるため、ノードEまでの通信に要する総カウント値は0+17=17であると予測される。一方、メッシュネットワークの最大伝送時間を示すカウント値は“17”であり、予測したカウント値と最大伝送時間を示すカウント値が同じであるので、通信フレーム50のカウント値55に、隣接ノードベース伝送時間格納部13(図20)を参照して中継局であるノードBまでのカウント値“11”を加算して“11”に設定し、即座にノードBに通信フレーム50を送信する。
【0111】
ノードBにおいては、ノードAより受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードBの通信経路テーブル7(図16)を参照すると、宛先であるノードEは中継局があり中継局がノードDであることが分かる。また、現在のカウント値55は“11”でありノードEまでのカウント値は通信経路テーブル7から“6”であるため、ノードEまでの通信に要する総カウント値は11+6=17であると予測される。一方、メッシュネットワークの最大伝送時間を示すカウント値は“17”であり、予測したカウント値と最大伝送時間を示すカウント値が同じであるので、通信フレーム50のカウント値55に、隣接ノードベース伝送時間格納部13(図21)を参照して中継局であるノードDまでのカウント値“4”を加算して“15”に設定し、即座にノードDに通信フレーム50を送信する。
【0112】
ノードDにおいては、ノードBより受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードDの通信経路テーブル7(図18)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のカウント値55は“15”でありノードEまでのカウント値は通信経路テーブル7から“2”であるため、ノードEまでの通信に要する総ホップ数は15+2=17であると予測される。一方、メッシュネットワークの最大伝送時間を示すカウント値は“17”であり、予測したカウント値と最大伝送時間を示すカウント値が同じであるので、通信フレーム50のカウント値55に、隣接ノードベース伝送時間格納部13(図23)を参照して宛先であるノードEまでのカウント値“2”を加算して“17”に設定し、即座にノードEに通信フレーム50を送信する。
【0113】
ノードEにおいては、ノードDより受信した通信フレーム50の宛先情報52を確認し、自身宛であることが分かる。また、カウント値55が“17”であり最大伝送時間を示すカウント値と同じであることから正常に通信させた通信フレームであることが分かるので、アプリケーションへデータの到達を通知するとともに通信データ54を引き渡す。
【0114】
この例1では、予測したカウント値と最大伝送時間を示すカウント値との比較やカウント値55の加算といった動作は行っているが、通信フレーム50の伝送自体は従来と同じである。次に、例2としてノードDからノードEへ通信する場合を説明する。
【0115】
ノードDでは、通信データ54が発生すると、自ノードの情報と通信元情報51、ノードEを宛先情報52とし、カウント値55は自ノードでのデータ発生であり他のノードから中継されていないので“0”に設定した通信フレーム50を生成する。そして、ノードDの通信経路テーブル7(図18)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のカウント値55は“0”でありノードEまでのカウント値は通信経路テーブル7から“2”であるため、ノードEまでの通信に要する総カウント値は0+2=2であると予測される。一方、メッシュネットワークの最大伝送時間を示すカウント値は“17”であり、予測したカウント値が最大伝送時間を示すカウント値よりも小さいので、通信フレーム50のカウント値55に1カウントを加算して“1”に設定し、仮想通信路11を介してデータ受信部3に通信フレーム50を伝送する。つまり、自身内で通信フレーム50の送信を行い、カウント値を1カウント分調節する。
【0116】
ノードDは、仮想通信路11を介して受信した通信フレーム50の宛先情報52を確認し、自身宛でないのでノードDの通信経路テーブル7(図18)を参照すると、宛先であるノードEは中継局なしであることが分かる。また、現在のカウント値55は“1”でありノードEまでのカウント値は通信経路テーブル7から“2”であるため、ノードEまでの通信に要する総カウント値は1+2=3であると予測される。一方、メッシュネットワークの最大伝送時間を示すカウント値は“17”であり、予測したカウント値が最大伝送時間を示すカウント値よりも小さいので、通信フレーム50のカウント値55に1カウントを加算して“2”に設定し、仮想通信路11を介してデータ受信部3に通信フレーム50を伝送する。そして、これをカウント値55が“15”になるまで(つまり、最大伝送時間を示すカウント値とノードEまでのカウント値との差分の回数)繰り返し、同じ値になった時点で通信フレーム50のカウント値55に、隣接ノードベース伝送時間格納部13(図23)を参照して宛先であるノードEまでのカウント値“2”を加算して“17”に設定し、即座にノードEに通信フレーム50を送信する。
【0117】
ノードEにおいては、ノードDより受信した通信フレーム50の宛先情報52を確認し、自身宛であることが分かる。また、カウント値55が“17”であり最大伝送時間を示すカウント値と同じであることから正常に通信させた通信フレームであることが分かるので、アプリケーションへデータの到達を通知するとともに通信データ54を引き渡す。
【0118】
この例2では、通信ノード20が近接してカウント値が最大伝送時間を示すカウント値よりも少ないので、ノードDでは15カウント分内部での仮想的な送信処理を行って通信時間であるカウント値を調節している。すなわち、最大伝送時間を示すカウント値からカウント値55にノードEまでのカウント値を加えた値を減算したカウント値分通信フレーム50を待機させている。
【0119】
ここで、上述した動作を行う通信システム1において、まずノードAで通信データ54が発生し、その後ノードDで通信データ54が発生して、ともにノードEに伝送する場合を図25を参照して説明する。
【0120】
図25に示したように、ノードAで発生した通信データ54は、通信フレーム50としてノードB,Dに中継されてノードEに伝送される。この伝送には17カウント要している。ノードDで発生した通信データ54は、通信フレーム50としてノードD内部で15カウント分調節されてからノードEに伝送される。この伝送にも17カウント要している。したがって、どちらの通信も17カウント要することから、先に発生したノードAの通信データ54が先にノードEに到達し、後に発生したノードDの通信データ54は後にノードEに到達する。
【0121】
本実施形態によれば、データ中継選択部6´が、通信経路テーブル7´に格納されている宛先の通信ノード20へのカウント値と最大伝送時間格納部14に格納されている最大伝送時間を示すカウント値と受信した通信フレーム50に含まれるカウント値55に基づいて、最大伝送時間を示すカウント値とカウント値55に宛先の通信ノード20へのカウント値を加算した加算値が同じでない場合は、カウント値55に1カウントを加算して自身内の仮想通信路11を介して自身のデータ受信部3へ通信フレーム50を送信しているので、ネットワーク内で行われる通信フレーム50の伝送時間を最大伝送時間に合わせるようにすることができ、経由する通信ノード20数が異なっても通信データの到着順が通信データの発生順と異なることがなくなる。また、各通信ノード20間の伝送時間が異なるメッシュネットワークでも通信データ54を発生順に目的の通信ノード20に到達させることができる。
【0122】
なお、仮想通信路11は、必ずしも物理的な通信路(配線、ケーブル等)である必要はなく、1ホップまたは1カウント分の通信時間を要することができる手段であれば例えばソフトウェアによるループやタイマ処理などで行ってもよい。
【0123】
また、上述した通信システム1における各通信ノード20間の通信路は、有線でも良いし、無線でも良い。勿論双方が混在しても良い。
【0124】
また、上述した実施形態は本発明の代表的な形態を示したに過ぎず、本発明は、実施の形態に限定されるものではない。すなわち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【符号の説明】
【0125】
1 通信システム
3 データ受信部(受信手段)
4 宛先判定器(宛先判定手段)
5 アプリケーション通知部(受信データ確認手段)
6、6´ データ中継選択部(通信制御手段、送信手段)
7、7´ 通信経路テーブル(通信条件格納手段)
8 最大ホップ数格納部(通信条件格納手段)
9 ホップ数予測器(通信制御手段)
10 データ送信部(送信手段)
12 伝送時間予測器(通信制御手段)
13 隣接ノードベース伝送時間格納部(通信条件格納手段)
14 最大伝送時間格納部(通信条件格納手段)
20 通信ノード
50 通信フレーム(データ)
52 宛先情報
53 ホップ数(受信手段で受信するまでに経過した通信時間、受信手段で受信するまでに中継された中継数)
55 カウント値(受信手段で受信するまでに経過した通信時間、受信手段で受信するまでに通信路で消費された伝送時間)
【特許請求の範囲】
【請求項1】
データの受信を行う受信手段と、データの送信を行う送信手段と、を備えた通信ノードを複数有してメッシュネットワークを構成する通信システムにおいて、
前記データには、宛先および前記受信手段で受信するまでに経過した通信時間が含まれており、
前記メッシュネットワークにおける最大通信時間および自身から前記メッシュネットワークに接続されている全ての前記通信ノードへの通信時間が予め格納されている通信条件格納手段と、
前記受信手段が受信したデータの前記宛先に基づいて当該データが自身宛か他の通信ノード宛かを判定する宛先判定手段と、
前記宛先判定手段が前記受信手段が受信したデータが他の通信ノード宛と判定した場合は、前記通信条件格納手段に格納された前記最大通信時間と前記受信手段が受信したデータの前記受信手段で受信するまでに経過した通信時間に前記通信条件格納手段に格納された前記宛先への通信時間を加算した加算値とを比較し、前記加算値が前記最大通信時間と同じ値である場合は前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記加算値が前記最大通信時間よりも小さい場合は、前記最大通信時間から前記加算値を減算した時間分前記データを待機させてから前記送信手段に前記宛先または中継先の前記通信ノードへ送信させるように制御する通信制御手段と、
を前記通信ノードが備えていることを特徴とする通信システム。
【請求項2】
前記データに、前記受信手段で受信するまでに中継された中継数が含まれており、
前記通信条件格納手段に、前記メッシュネットワークにおける最大中継数および自身から前記メッシュネットワークに接続されている全ての前記通信ノードへの中継数が予め格納され、
前記通信制御手段が、前記通信条件格納手段に格納された前記最大中継数と前記受信手段が受信したデータの前記受信手段で受信するまでに中継された中継数に前記通信条件格納手段に格納された前記宛先への中継数を加算した加算値とを比較し、前記加算値が前記最大中継数と同じ値である場合は前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記加算値が前記最大中継数よりも小さい場合は、前記最大中継数から前記加算値を減算した中継数分前記データを待機させてから前記送信手段に前記宛先または中継先の前記通信ノードへ送信させるように制御する
ことを特徴とする請求項1に記載の通信システム。
【請求項3】
前記通信制御手段が、前記加算値が前記最大中継数よりも小さい場合は、前記受信手段で受信するまでに中継された中継数をインクリメントして自身の前記送信手段から自身の前記受信手段へ前記データを送信させることを特徴とする請求項2に記載の通信システム。
【請求項4】
前記通信制御手段が、前記加算値が前記最大中継数と同じ値である場合は、前記受信手段で受信するまでに中継された中継数をインクリメントして前記送信手段から前記宛先または中継先へ前記データを送信させることを特徴とする請求項2または3に記載の通信システム。
【請求項5】
前記データに、前記受信手段で受信するまでに通信路で消費された伝送時間が含まれており、
前記通信条件格納手段に、前記メッシュネットワークにおける最大伝送時間および自身から前記メッシュネットワークに接続されている全ての前記通信ノードへの伝送時間が予め格納され、
前記通信制御手段が、前記通信条件格納手段に格納された前記最大伝送時間と前記受信手段が受信したデータの前記受信手段で受信するまでに通信路で消費された伝送時間に前記通信条件格納手段に格納された前記宛先への伝送時間を加算した加算値とを比較し、前記加算値が前記最大伝送時間と同じ値である場合は前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記加算値が前記最大伝送時間よりも小さい場合は、前記最大伝送時間から前記加算値を減算した伝送時間分前記データを待機させてから前記送信手段に前記宛先または中継先の前記通信ノードへ送信させるように制御する
ことを特徴とする請求項1に記載の通信システム。
【請求項6】
前記通信制御手段が、前記加算値が前記最大伝送時間よりも小さい場合は、前記受信手段で受信するまでに通信路で消費された伝送時間に予め定めた基準伝送時間を加算して自身の前記送信手段から自身の前記受信手段へ前記データを送信させることを特徴とする請求項5に記載の通信システム。
【請求項7】
前記通信制御手段が、前記加算値が前記最大伝送時間と同じ値である場合は、前記受信手段で受信するまでに通信路で消費された伝送時間に前記宛先までの伝送時間を加算して前記送信手段から宛先または中継先へ前記データを送信させることを特徴とする請求項5または6に記載の通信システム。
【請求項8】
前記宛先判定手段が前記受信手段が受信したデータが自身宛と判定した場合は、前記受信手段で受信するまでに経過した通信時間および前記通信条件格納手段に格納されている前記最大通信時間に基づいて、当該データが正常か否かを判断する受信データ確認手段を、前記通信ノードが備えていることを特徴とする請求項1乃至7のうちいずれか一項に記載の通信システム。
【請求項1】
データの受信を行う受信手段と、データの送信を行う送信手段と、を備えた通信ノードを複数有してメッシュネットワークを構成する通信システムにおいて、
前記データには、宛先および前記受信手段で受信するまでに経過した通信時間が含まれており、
前記メッシュネットワークにおける最大通信時間および自身から前記メッシュネットワークに接続されている全ての前記通信ノードへの通信時間が予め格納されている通信条件格納手段と、
前記受信手段が受信したデータの前記宛先に基づいて当該データが自身宛か他の通信ノード宛かを判定する宛先判定手段と、
前記宛先判定手段が前記受信手段が受信したデータが他の通信ノード宛と判定した場合は、前記通信条件格納手段に格納された前記最大通信時間と前記受信手段が受信したデータの前記受信手段で受信するまでに経過した通信時間に前記通信条件格納手段に格納された前記宛先への通信時間を加算した加算値とを比較し、前記加算値が前記最大通信時間と同じ値である場合は前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記加算値が前記最大通信時間よりも小さい場合は、前記最大通信時間から前記加算値を減算した時間分前記データを待機させてから前記送信手段に前記宛先または中継先の前記通信ノードへ送信させるように制御する通信制御手段と、
を前記通信ノードが備えていることを特徴とする通信システム。
【請求項2】
前記データに、前記受信手段で受信するまでに中継された中継数が含まれており、
前記通信条件格納手段に、前記メッシュネットワークにおける最大中継数および自身から前記メッシュネットワークに接続されている全ての前記通信ノードへの中継数が予め格納され、
前記通信制御手段が、前記通信条件格納手段に格納された前記最大中継数と前記受信手段が受信したデータの前記受信手段で受信するまでに中継された中継数に前記通信条件格納手段に格納された前記宛先への中継数を加算した加算値とを比較し、前記加算値が前記最大中継数と同じ値である場合は前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記加算値が前記最大中継数よりも小さい場合は、前記最大中継数から前記加算値を減算した中継数分前記データを待機させてから前記送信手段に前記宛先または中継先の前記通信ノードへ送信させるように制御する
ことを特徴とする請求項1に記載の通信システム。
【請求項3】
前記通信制御手段が、前記加算値が前記最大中継数よりも小さい場合は、前記受信手段で受信するまでに中継された中継数をインクリメントして自身の前記送信手段から自身の前記受信手段へ前記データを送信させることを特徴とする請求項2に記載の通信システム。
【請求項4】
前記通信制御手段が、前記加算値が前記最大中継数と同じ値である場合は、前記受信手段で受信するまでに中継された中継数をインクリメントして前記送信手段から前記宛先または中継先へ前記データを送信させることを特徴とする請求項2または3に記載の通信システム。
【請求項5】
前記データに、前記受信手段で受信するまでに通信路で消費された伝送時間が含まれており、
前記通信条件格納手段に、前記メッシュネットワークにおける最大伝送時間および自身から前記メッシュネットワークに接続されている全ての前記通信ノードへの伝送時間が予め格納され、
前記通信制御手段が、前記通信条件格納手段に格納された前記最大伝送時間と前記受信手段が受信したデータの前記受信手段で受信するまでに通信路で消費された伝送時間に前記通信条件格納手段に格納された前記宛先への伝送時間を加算した加算値とを比較し、前記加算値が前記最大伝送時間と同じ値である場合は前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記加算値が前記最大伝送時間よりも小さい場合は、前記最大伝送時間から前記加算値を減算した伝送時間分前記データを待機させてから前記送信手段に前記宛先または中継先の前記通信ノードへ送信させるように制御する
ことを特徴とする請求項1に記載の通信システム。
【請求項6】
前記通信制御手段が、前記加算値が前記最大伝送時間よりも小さい場合は、前記受信手段で受信するまでに通信路で消費された伝送時間に予め定めた基準伝送時間を加算して自身の前記送信手段から自身の前記受信手段へ前記データを送信させることを特徴とする請求項5に記載の通信システム。
【請求項7】
前記通信制御手段が、前記加算値が前記最大伝送時間と同じ値である場合は、前記受信手段で受信するまでに通信路で消費された伝送時間に前記宛先までの伝送時間を加算して前記送信手段から宛先または中継先へ前記データを送信させることを特徴とする請求項5または6に記載の通信システム。
【請求項8】
前記宛先判定手段が前記受信手段が受信したデータが自身宛と判定した場合は、前記受信手段で受信するまでに経過した通信時間および前記通信条件格納手段に格納されている前記最大通信時間に基づいて、当該データが正常か否かを判断する受信データ確認手段を、前記通信ノードが備えていることを特徴とする請求項1乃至7のうちいずれか一項に記載の通信システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【公開番号】特開2012−15706(P2012−15706A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−148926(P2010−148926)
【出願日】平成22年6月30日(2010.6.30)
【出願人】(000006895)矢崎総業株式会社 (7,019)
【Fターム(参考)】
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願日】平成22年6月30日(2010.6.30)
【出願人】(000006895)矢崎総業株式会社 (7,019)
【Fターム(参考)】
[ Back to top ]