(57)【特許請求の範囲】
【請求項１】
データの受信を行う受信手段と、データの送信を行う送信手段と、を備えた通信ノードを複数有してメッシュネットワークを構成する通信システムにおいて、
前記受信手段が、宛先および送信元の通信ノードにより送信されてから経過した通信時間を前記データに含んで送信し、
前記複数の通信ノードが各々、
前記メッシュネットワークにおける最大通信時間および自身から前記メッシュネットワークに接続されている全ての前記他の通信ノードへの通信時間が予め格納されている通信条件格納手段と、
前記受信手段が受信したデータの前記宛先に基づいて当該データが自身宛か他の通信ノード宛かを判定する宛先判定手段と、
前記宛先判定手段により前記受信手段が受信したデータが自身宛と判定された場合、前記通信条件格納手段に格納された前記最大通信時間と、当該データの前記送信元の通信ノードにより送信されてから経過した通信時間に前記通信条件格納手段に格納された前記宛先への通信時間を加算した加算値と、を比較し、前記加算値が前記最大通信時間と同じ値である場合は自身に接続されたアプリケーションに当該データを送信し、前記加算値が前記最大通信時間よりも小さい場合は、前記最大通信時間から前記加算値を減算した時間分前記データを待機させてから前記アプリケーションに送信させるように制御する第１通信制御手段と、
をさらに備えていることを特徴とする通信システム。
【請求項２】
前記複数の通信ノードが各々、
前記宛先判定手段により前記受信手段が受信したデータが他の通信ノード宛と判定された場合、前記最大通信時間から前記加算値を減算した減算時間を含んだ受信要求を前記宛先または中継先の前記通信ノードへ送信する受信要求送信手段と、
前記他の通信ノードから送信された受信要求及び前記受信要求送信手段により送信した受信要求に含まれる減算時間のうち最も減算時間が少ないデータを最優先データとして判定する優先度判定手段と、
前記最優先データの受信要求を送信した通信ノードに対して通信可を通知すると共に、前記最優先データでないデータの受信要求をした通信ノードに対して通信不可を通知する通信確認手段と、
前記受信要求を送信した後に、前記通信可の通知を受け取ると前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記通信不可の通知を受け取ると前記通信可通知を受け取るまで前記受信要求送信手段に受信要求の送信を繰り返させる第２通信制御手段と、
をさらに備えていることを特徴とする請求項１に記載の通信システム。
【請求項３】
前記優先度判定手段が、前記他の通信ノードから送信された受信要求に含まれる減算時間と前記受信要求送信手段により送信した受信要求に含まれる減算時間とが同じであった場合、前記受信要求送信手段により送信した受信要求に対応するデータを最優先データとして判定する
ことを特徴とする請求項２に記載の通信システム。
【請求項４】
前記受信要求送信手段が、前記受信したデータ固有のＩＤをさらに含んだ受信要求の送信を行い、
前記優先度判定手段が、前記他の通信ノードから受信した受信要求のみが複数あり、全て同じ減算時間であった場合、もしくは、前記受信要求送信手段により送信する受信要求のみが複数あり、全て同じ減算時間であった場合、前記ＩＤに基づいて前記最優先データを判定する
ことを特徴とする請求項２又は３に記載の通信システム。
【請求項５】
前記データに、前記送信元の通信ノードにより送信されてから経過した通信時間として、前記送信元の通信ノードにより送信されてから中継された通信ノードの中継数が、含まれており、
前記通信条件格納手段に、前記メッシュネットワークにおける最大通信時間として前記メッシュネットワークにおける最大中継数が予め格納され、自身から前記メッシュネットワークに接続されている全ての前記他の通信ノードへの通信時間として、自身から前記メッシュネットワークに接続されている全ての前記他の通信ノードへの中継数が予め格納されている
ことを特徴とする請求項２〜４何れか１項に記載の通信システム。
【請求項６】
前記第２通信制御手段が、前記通信可の通知を受け取ると、前記データに含まれる前記送信元の通信ノードにより送信されてからの中継数をインクリメントして、前記送信手段に前記データを前記宛先または前記中継先の前記通信ノードへ送信させ、前記通信不可の通知を受け取ると、前記データに含まれる前記送信元の通信ノードにより送信されてからの中継数をインクリメントして自身宛に前記データを送信させる
ことを特徴とする請求項５に記載の通信システム。
【請求項７】
前記第１通信制御手段が、前記加算値が前記最大中継数よりも小さい場合は、前記送信元の通信ノードにより送信されてからの中継数をインクリメントして自身宛に前記データを送信させる
ことを特徴とする請求項５又は６に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の通信ノードを有するメッシュネットワークで構成されている通信システムに関するものである。
【背景技術】
【０００２】
従来、機器間の通信においては、送信元となる端末（通信ノード）と受信先となる通信ノードとを直接接続してデータの送受信を行っていた。この場合、通信ノードと通信ノードとを直接接続することで、目的の通信を行う経路を確保できるために分かり易く手軽であるという利点がある。
【０００３】
しかし、通信をする相手が増えると通信ノード間での通信を行う数だけ接続が必要になる。そのため、例えば全ての通信ノードと相互に通信する必要がある場合には接続が複雑になってしまうという問題がある。
【０００４】
そのような問題を解消する一つの方法としては、例えば無線ＬＡＮのアクセスポイントのように、どれか１つの通信ノードを基点（基点ノード）にし、その通信ノードが各々の通信を中継することで、各通信ノードが相互に通信できるようにする方法がある。
【０００５】
この基点ノードを用いた方法の場合、基点ノードが全ての通信ノードの通信を中継するために通信が集中するので、基点ノードへの負荷が非常に大きくなる。そこで、どれか１つの通信ノードが通信の中継を請け負うのではなく、全ての通信ノードが中継局となれるメッシュネットワークが考案されている（例えば、特許文献１、２を参照）。
【０００６】
図１３にメッシュネットワークの例を示す。図１３に示したメッシュネットワーク１００は、ノード（通信ノード）Ａ〜Ｅで構成されている。ノードＡはノードＢと相互に通信可能に接続されている。ノードＢはノードＡ、Ｃ、Ｄと相互に通信可能に接続されている。ノードＣはノードＢ、Ｅと相互に通信可能に接続されている。ノードＤはノードＢ、Ｅと相互に通信可能に接続されている。ノードＥはノードＣ、Ｄと相互に通信可能に接続されている。
【０００７】
メッシュネットワークでは、通信において目的の通信ノードへデータを送信する際に、直接伝送することができない場合でも、近接の通信ノードへデータを伝送する。そして、データを伝送された通信ノードが更に近隣の通信ノードへデータを伝送する。これを繰り返して、目的の通信ノードへデータを伝送することができる。例えば、図１３に示したメッシュネットワーク１００では、ノードＡからノードＥにデータを伝送する場合、ノードＡからノードＢにデータを伝送し、次にノードＢからノードＣにデータを伝送して、最後にノードＣからノードＥにデータを伝送する。あるいは、ノードＢからはノードＤを中継してノードＥへデータを伝送しても良い。このようにデータが伝送されるため、１つの通信ノードにデータ中継の負荷が集中することがなくなり、全体として効率良く通信することができる。
【０００８】
このようなメッシュネットワークでは、目的の通信ノードまでデータを届けるために、各通信ノードでは、なるべく中継数が少なくなるように経路を選択している。そのため、余分な中継を減らし、通信網全体として効率良くネットワークを利用することができる。
【０００９】
そして、従来のメッシュネットワークでは、例えば特許文献３などのように各通信ノードではなるべく中継点が少なくなるような経路を選択するように構成することが一般的であった。
【００１０】
しかしながら、メッシュネットワークでは、各通信ノードによって中継数が異なるために、時間的に前に発生したデータよりも後に発生したデータが早く受信先の通信ノードに到達してしまうことがある。例えば、図１３の場合、ノードＡで発生したデータ（データＡとする）の後にノードＤでデータ（データＤとする）が発生した場合、データの発生した時間順ではデータＡ、データＤとなるが、ノードＥにはデータＤが先に到達してしまう場合がある。
【００１１】
この場合、到達データの順序が変わってしまうため、データの発生順に処理を行わなければならない場合は、例えばノードＥ（或いはネットワーク全体）ではデータの発生順を管理する必要がある。一例を挙げて詳細に説明すると、例えば図１３が車両のウインドウの制御に関するネットワークであって、ノードＡがウインドウ開閉のロックボタン、ノードＤがウインドウ開閉ボタン、ノードＥがウインドウを動作させる装置であったとすると、ウインドウ開閉のロックボタンが操作されてロックされた後にウインドウ開閉が操作された場合、ウインドウは開閉されないのが正しい動作であるが、上述した問題のように、データＤ、つまりウインドウ開閉ボタンの操作を示すデータが先にノードＥに到達すると、車両のウインドウ全体としてみればロックされているにも関わらずウインドウが動作してしまうという誤動作に繋がる。
【００１２】
このように、メッシュネットワークを制御系のアプリケーションで適用する場合、中継数が異なることによるデータ到達順の問題による影響が大きくなってしまう、という第１の問題があった。
【００１３】
そこで、出願人は、このような問題点を解決するために、送信元でデータの送信タイミングを調整し、全てのデータが同じ時間かけて宛先のノードに送信される通信システムを提案した。この通信システムによれば、後発のデータが先発のデータよりも早く到達することがなく、アプリケーションではデータの到達の順番を管理する必要がなくシンプルな構成にできる。
【００１４】
しかしながら、上述した通信システムでは、各ノードが送信、受信の同時通信を許容しないと、実現できないパターンがある。このパターンについて、図１３のメッシュネットワーク１００を例に説明する。このメッシュネットワーク１００は、最大ホップ数が３である。また、各ノードＡ〜Ｅには、宛先までのルートを決定するテーブルとして、図４〜図８に示すように、宛先と、この宛先に送信する際の中継局の有無、中継局がある場合、次の中継局、宛先までのホップ数を示すテーブルが格納されている。
【００１５】
まず、ノードＤからノードＣ、ノードＡからノードＣにデータを送信する場合のメッシュネットワーク１００の動作について図１４を参照して説明する。
【００１６】
時刻ｔ１において、ノードＤで通信データ５４が発生する。ノードＤは、図２に示すように、通信データ５４に、送信元情報５１＝ノードＤ、宛先情報５２＝ノードＣ、ホップ数５３＝０を追加した通信フレーム５０を作成する。次に、ノードＤは、図７示すノードＤのテーブルを参照して、宛先であるノードＣへは残り２ホップで、中継局がノードＢであることを確認する。
【００１７】
通信フレーム５０のホップ数５３は０であるため、ノードＣまでは合計で２ホップになることが分かる。これは、メッシュネットワーク１００の最大ホップ数３と異なる。そこで、ノードＤは、中継局のノードＢへデータを転送せずに、通信フレーム５０のホップ数５３を１加算して、自分宛に通信フレーム５０を送信する。このとき、通信は自身宛の通信フレーム５０であるから、実際には通信路を利用して通信フレーム５０を送信することなく、内部で処理する（ノードＤ→ノードＤ）。
【００１８】
時刻ｔ２において、ノードＤは、自ノードＤから受け取った通信フレーム５０の宛先を確認する。この場合、通信フレーム５０の宛先は自ノードＤではないので、再度図７に示すテーブルを参照する。ここで、宛先ノードＣへは、残り２ホップで、中継局がノードＢであることが分かる。現在のホップ数が１であるため、ノードＣまでは合計で３ホップとなることが分かる。これは、メッシュネットワーク１００の最大ホップ数３と同じであり、ノードＤは、中継局であるノードＢへ通信フレーム５０を渡す。このとき、通信フレーム５０のホップ数を１加算して、ノードＢへ通信フレーム５０を渡す（ノードＤ→ノードＢ）。
【００１９】
また、時刻ｔ２において、ノードＡで通信データ５４が発生する。ノードＡは、図４に示すように、通信データ５４に、送信元情報５１＝ノードＡ、宛先情報５２＝ノードＣ、ホップ数５３＝０を追加した通信フレーム５０を作成する。次に、ノードＡは、図４に示すノードＡのテーブルを参照して、宛先であるノードＣへは残り２ホップで、中継局がノードＢであることを確認する。通信フレーム５０のホップ数５３は０であるため、ノードＣまでは合計で２ホップになることが分かる。これは、メッシュネットワーク１００の最大ホップ数３と異なる。そこで、ノードＡは、中継局のノードＢへ転送せずに、通信フレーム５０のホップ数５３を１加算して、自分宛に通信フレーム５０を送信する。このとき、通信は自身宛の通信フレーム５０であるから、実際には通信路を利用して通信フレーム５０を送信することなく、内部で処理する（ノードＡ→ノードＡ）。
【００２０】
時刻ｔ３において、ノードＢでは、ノードＤにより受け取った通信フレーム５０の宛先を確認する。この場合、宛先が自ノードＢ宛ではないので、図５に示す自ノードＢのテーブルを参照する。ここで、宛先ノードＣへは、残り１ホップで、中継局なしであることが分かる。つまり、ノードＣはノードＢの隣接ノードである。現在のホップ数が２であるため、ノードＣまでは合計で３ホップとなることが分かる。これは、メッシュネットワーク１００の最大ホップ数３と同じであり、ノードＢは、宛先であるノードＣへ通信フレーム５０を渡す。このとき、通信フレーム５０のホップ数５３を１加算して、ノードＣへ通信フレーム５０を渡す（ノードＢ→ノードＣ）。
【００２１】
また、時刻ｔ３において、ノードＡでは、自ノードＡにより受け取った通信フレーム５０の宛先を確認する。この場合、宛先が自ノードＡ宛ではないので、図４に示す自ノードＡのテーブルを参照する。ここで、宛先ノードＣへは、残り２ホップで、中継局がノードＢであることが分かる。通信フレーム５０のホップ数は１であるため、ノードＣまでは合計で３ホップになることが分かる。これは、メッシュネットワーク１００の最大ホップ数３と同じであり、ノードＡは、中継局であるノードＢへ通信フレーム５０を渡す。このとき、通信フレーム５０のホップ数５３を１加算して、ノードＢへ通信フレーム５０を渡す（ノードＡ→ノードＢ）。
【００２２】
時刻ｔ４において、ノードＣでは、ノードＢにより受け取った通信フレーム５０の宛先を確認する。この場合、宛先が自ノードＣとなっている。また、通信フレーム５０に格納されているホップ数も３であることから、正常に通信されてきた通信フレーム５０であることがわかり、ノードＢは、アプリケーションに通信フレーム５０内の通信データ５４を引き渡す。
【００２３】
また、時刻ｔ４において、ノードＢでは、ノードＡにより受け取った通信フレーム５０の宛先を確認する。この場合、宛先が自ノードＡ宛ではないので、図５に示す自ノードＢのテーブルを参照する。ここで、宛先ノードＣへは、残り１ホップで、中継局なしであることが分かる。つまり、ノードＣはノードＢの隣接ノードである。現在のホップ数が２であるため、ノードＣまでは合計で３ホップとなることが分かる。これは、メッシュネットワーク１００の最大ホップ数３と同じであり、ノードＢは、宛先であるノードＣへ通信フレーム５０を渡す。このとき、通信フレーム５０のホップ数５３を１加算して、ノードＣへ通信フレーム５０を渡す（ノードＢ→ノードＣ）。
【００２４】
時刻ｔ５において、ノードＣでは、ノードＢにより受け取った通信フレーム５０の宛先を確認する。この場合、宛先が自ノードＣとなっている。また、通信フレーム５０に格納されているホップ数も３であることから、正常に通信されてきた通信フレーム５０であることがわかり、ノードＣは、アプリケーションに通信フレーム５０内の通信データ５４を引き渡す。
【００２５】
以上のように、ノードＣでは、時刻ｔ４でノードＤからの通信データ５４を、時刻ｔ５でノードＡからの通信データ５４を受信し、通信データ５４の発生順どおり通信データ５４を受信することができる。しかしながら、時刻ｔ３において、ノードＡ→ノードＢと、ノードＢ→ノードＣの通信が同時に発生する。即ち、ノードＢは、ノードＡからの受信とノードＣへの送信を同時に行わなければならない。これを実現するためには、各ノードＡ〜Ｅにそれぞれ独立した通信Ｉ／Ｆを２つもつ必要がある、という第２の問題があった。ここで、一般的な通信端末構成のように、通信Ｉ／Ｆを１つとすると、時刻ｔ３での通信はどちらか片方しか実現できない、結果、図１５に示すように、時刻ｔ３で通信が行われなかったものは、規定の通信時間より多く時間がかかってしまう。
【００２６】
次に、ノードＡからノードＢと、ノードＣからノードＡにデータを送信する場合のメッシュネットワーク１００の動作について図１６を参照して説明する。
【００２７】
時刻ｔ１において、ノードＡで通信データ５４が発生する。ノードＡは、図２に示すように、通信データ５４に、送信元情報５１＝ノードＡ、宛先情報５２＝ノードＢ、ホップ数５３＝０を追加した通信フレーム５０を作成する。次に、ノードＡは、図４に示すノードＡのテーブルを参照して、宛先であるノードＢへは残り１ホップで、中継局なしであることを確認する。つまり、ノードＢはノードＡの隣接ノードである。現在のホップ数が０であるため、ノードＢまでは合計で１ホップとなることが分かる。これは、メッシュネットワーク１００の最大ホップ数３と異なる。そこで、ノードＡは、宛先のノードＢへ転送せずに、通信フレーム５０のホップ数５３を１加算して、自分宛に通信フレーム５０を送信する。このとき、通信は自身宛の通信フレーム５０であるから、実際には通信路を利用して通信フレーム５０を送信することなく、内部で処理する（ノードＡ→ノードＡ）。
【００２８】
時刻ｔ２において、ノードＡでは、自ノードＡにより受け取った通信フレーム５０の宛先を確認する。この場合、宛先が自ノードＡ宛ではないので、図４に示す自ノードＡのテーブルを参照する。ここで、宛先ノードＢへは、残り１ホップで、中継局なしであることが分かる。通信フレーム５０のホップ数５３は１であるため、ノードＢまでは合計で２ホップになることが分かる。これは、メッシュネットワーク１００の最大ホップ数３と異なる。そこで、ノードＡは、宛先のノードＢへ転送せずに、通信フレーム５０のホップ数５３を１加算して、自分宛に通信フレーム５０を送信する。このとき、通信は自身宛の通信フレーム５０であるから、実際には通信路を利用して通信フレーム５０を送信することなく、内部で処理する（ノードＡ→ノードＡ）。
【００２９】
時刻ｔ２において、ノードＣで通信データ５４が発生する。ノードＣは、図２に示すように、通信データ５４に、送信元情報５１＝ノードＣ、宛先情報５２＝ノードＡ、ホップ数５３＝０を追加した通信フレーム５０を作成する。次に、ノードＣは、図６に示すノードＣのテーブルを参照して、宛先であるノードＡへは残り２ホップで、中継局がノードＢであることを確認する。現在のホップ数が０であるため、ノードＣまでは合計で２ホップとなることが分かる。これは、メッシュネットワーク１００の最大ホップ数３と異なる。そこで、ノードＣは、中継局のノードＢへ転送せずに、通信フレーム５０のホップ数を１加算して、自分宛に通信フレーム５０を送信する。このとき、通信は自身宛の通信フレーム５０であるから、実際には通信路を利用して通信フレーム５０を送信することなく、内部で処理する（ノードＣ→ノードＣ）。
【００３０】
時刻ｔ３において、ノードＡで、自ノードＡにより受け取った通信フレーム５０の宛先を確認する。この場合、宛先が自ノードＡ宛ではないので、図４に示す自ノードＡのテーブルを参照する。ここで、宛先ノードＢへは、残り１ホップで、中継局なしであることが分かる。通信フレーム５０のホップ数５３は２であるため、ノードＢまでは合計で３ホップになることが分かる。これは、メッシュネットワーク１００の最大ホップ数３と同じであり、ノードＡは、宛先であるノードＢへ通信フレーム５０を渡す。このとき、通信フレーム５０のホップ数５３を１加算して、ノードＢへ通信フレーム５０を渡す（ノードＡ→ノードＢ）。
【００３１】
時刻ｔ３において、ノードＣで、自ノードＣにより受け取った通信フレーム５０の宛先を確認する。この場合、宛先が自ノードＣ宛ではないので、図６に示す自ノードＣのテーブルを参照する。ここで、宛先ノードＡへは、残り２ホップで、中継局がノードＢであることを確認する。現在のホップ数５３が１であるため、ノードＣまでは合計で３ホップとなることが分かる。これは、メッシュネットワーク１００の最大ホップ数３と同じであり、ノードＣは、中継局であるノードＢへ通信フレーム５０を渡す。このとき、通信フレーム５０のホップ数５３を１加算して、ノードＢへ通信フレーム５０を渡す（ノードＣ→ノードＢ）。
【００３２】
時刻ｔ４において、ノードＢでは、ノードＡにより受け取った通信フレーム５０の宛先を確認する。この場合、宛先が自ノードＢとなっている。また、通信フレーム５０に格納されているホップ数５３も３であることから、正常に通信されてきた通信フレーム５０であることがわかり、ノードＢは、アプリケーションに通信フレーム５０の通信データ５４を引き渡す。
【００３３】
また、時刻ｔ４において、ノードＢは同時に、ノードＣにより受け取った通信フレーム５０の宛先を確認する。この場合、宛先が自ノードＢ宛ではないので、図５に示す自ノードＢのテーブルを参照する。ここで、宛先ノードＡへは、残り１ホップで、中継局なしであることを確認する。つまり、ノードＡはノードＢの隣接ノードである。現在のホップ数５３が２であるため、ノードＡまでは合計で３ホップとなることが分かる。これは、メッシュネットワーク１００の最大ホップ数３と同じであり、ノードＢは、宛先であるノードＡへ通信フレーム５０を渡す。このとき、通信フレーム５０のホップ数５３を１加算して、ノードＡへ通信フレーム５０を渡す（ノードＢ→ノードＡ）。
【００３４】
時刻ｔ５において、ノードＡでは、ノードＢにより受け取った通信フレーム５０の宛先を確認する。この場合、宛先が自ノードＡとなっている。また、通信フレーム５０に格納されているホップ数５３も３であることから、正常に通信されてきた通信フレーム５０であることがわかり、ノードＡは、アプリケーションに通信フレーム５０の通信データ５４を引き渡す。
【００３５】
以上のように、ノードＢでは、時刻ｔ４でノードＡからの通信データ５４を、ノードＡでは、時刻ｔ５でノードＣからの通信データ５４を受信し、通信データ５４の発生順どおりに通信データ５４が到達していることが分かる。しかしながら、時刻ｔ３において、ノードＡ→ノードＢとノードＣ→ノードＢの通信が同時に発生する。即ち、ノードＢは、ノードＡからとノードＣからの２つの受信を行わなければならない。これを実現するためには、それぞれ独立した通信Ｉ／Ｆを２つ持つ必要がある、といった第２の問題があった。さらに、ノードＢでは、ノードＡからとノードＣからの２つの通信フレーム５０を同時に保持する必要がある。
【先行技術文献】
【特許文献】
【００３６】
【特許文献１】特開平４−３６８０３４号公報
【特許文献２】特開２０１０−１３０６８５号公報
【特許文献３】特開２００６−２０３０２号公報
【発明の概要】
【発明が解決しようとする課題】
【００３７】
そこで、本発明は、メッシュネットワークにおいて、アプリケーションへのデータの到達順がデータの発生順とすることができる通信システムを提供することを第１の課題とする。また、本発明は、メッシュネットワークにおいて、各通信ノードに複数の通信Ｉ／Ｆを持たせなくてもアプリケーションへのデータの到達順がデータの発生順とすることができる通信システムを提供することを第２の課題とする。
【課題を解決するための手段】
【００３８】
上述した第１の課題を解決するための請求項１記載の発明は、データの受信を行う受信手段と、データの送信を行う送信手段と、を備えた通信ノードを複数有してメッシュネットワークを構成する通信システムにおいて、前記受信手段が、宛先および送信元の通信ノードにより送信されてから経過した通信時間を前記データに含んで送信し、前記複数の通信ノードが各々、前記メッシュネットワークにおける最大通信時間および自身から前記メッシュネットワークに接続されている全ての前記他の通信ノードへの通信時間が予め格納されている通信条件格納手段と、前記受信手段が受信したデータの前記宛先に基づいて当該データが自身宛か他の通信ノード宛かを判定する宛先判定手段と、前記宛先判定手段により前記受信手段が受信したデータが自身宛と判定された場合、前記通信条件格納手段に格納された前記最大通信時間と、当該データの前記送信元の通信ノードにより送信されてから経過した通信時間に前記通信条件格納手段に格納された前記宛先への通信時間を加算した加算値と、を比較し、前記加算値が前記最大通信時間と同じ値である場合は自身に接続されたアプリケーションに当該データを送信し、前記加算値が前記最大通信時間よりも小さい場合は、前記最大通信時間から前記加算値を減算した時間分前記データを待機させてから前記アプリケーションに送信させるように制御する第１通信制御手段と、をさらに備えていることを特徴とする通信システムに存する。
【００３９】
上記第２の課題を解決するための請求項２記載の発明は、前記複数の通信ノードが各々、前記宛先判定手段により前記受信手段が受信したデータが他の通信ノード宛と判定された場合、前記最大通信時間から前記加算値を減算した減算時間を含んだ受信要求を前記宛先または中継先の前記通信ノードへ送信する受信要求送信手段と、前記他の通信ノードから送信された受信要求及び前記受信要求送信手段により送信した受信要求に含まれる減算時間のうち最も減算時間が少ないデータを最優先データとして判定する優先度判定手段と、前記最優先データの受信要求を送信した通信ノードに対して通信可を通知すると共に、前記最優先データでないデータの受信要求をした通信ノードに対して通信不可を通知する通信確認手段と、前記受信要求を送信した後に、前記通信可の通知を受け取ると前記送信手段に前記データを前記宛先または中継先の前記通信ノードへ送信させ、前記通信不可の通知を受け取ると前記通信可通知を受け取るまで前記受信要求送信手段に受信要求の送信を繰り返させる第２通信制御手段と、をさらに備えていることを特徴とする請求項１に記載の通信システムに存する。
【００４０】
請求項３記載の発明は、前記優先度判定手段が、前記他の通信ノードから送信された受信要求に含まれる減算時間と前記受信要求送信手段により送信した受信要求に含まれる減算時間とが同じであった場合、前記受信要求送信手段により送信した受信要求に対応するデータを最優先データとして判定することを特徴とする請求項２に記載の通信システムに存する。
【００４１】
請求項４記載の発明は、前記受信要求送信手段が、前記受信したデータ固有のＩＤをさらに含んだ受信要求の送信を行い、前記優先度判定手段が、前記他の通信ノードから受信した受信要求のみが複数あり、全て同じ減算時間であった場合、もしくは、前記受信要求送信手段により送信する受信要求のみが複数あり、全て同じ減算時間であった場合、前記ＩＤに基づいて前記最優先データを判定することを特徴とする請求項２又は３に記載の通信システムに存する。
【００４２】
請求項５記載の発明は、前記データに、前記送信元の通信ノードにより送信されてから経過した通信時間として、前記送信元の通信ノードにより送信されてから中継された通信ノードの中継数が、含まれており、前記通信条件格納手段に、前記メッシュネットワークにおける最大通信時間として前記メッシュネットワークにおける最大中継数が予め格納され、自身から前記メッシュネットワークに接続されている全ての前記他の通信ノードへの通信時間として、自身から前記メッシュネットワークに接続されている全ての前記他の通信ノードへの中継数が予め格納されていることを特徴とする請求項２〜４何れか１項に記載の通信システムに存する。
【００４３】
請求項６記載の発明は、前記第２通信制御手段が、前記通信可の通知を受け取ると、前記データに含まれる前記送信元の通信ノードにより送信されてからの中継数をインクリメントして、前記送信手段に前記データを前記宛先または前記中継先の前記通信ノードへ送信させ、前記通信不可の通知を受け取ると、前記データに含まれる前記送信元の通信ノードにより送信されてからの中継数をインクリメントして自身宛に前記データを送信させることを特徴とする請求項５に記載の通信システムに存する。
【００４４】
請求項７記載の発明は、前記第１通信制御手段が、前記加算値が前記最大中継数よりも小さい場合は、前記送信元の通信ノードにより送信されてからの中継数をインクリメントして自身宛に前記データを送信させることを特徴とする請求項５又は６に記載の通信システムに存する。
【発明の効果】
【００４５】
以上説明したように請求項１記載の発明によれば、第１通信制御手段が、宛先判定手段により受信手段が受信したデータが自身宛と判定された場合、通信条件格納手段に格納された最大通信時間と、受信手段が受信したデータの送信元の通信ノードにより送信されてから経過した通信時間に通信条件格納手段に格納された宛先への通信時間を加算した加算値と、を比較し、加算値が最大通信時間と同じ値である場合は自身に接続されたアプリケーションに受信手段が受信したデータを送信し、加算値が最大通信時間よりも小さい場合は、最大通信時間から加算値を減算した時間分データを待機させてからアプリケーションに送信させるように制御している。つまり、各通信ノードからデータを送信してからアプリケーションに届けるまでの時間をメッシュネットワークの最大通信時間に合わせるようにしているので、中継数が異なってもアプリケーションへのデータの到達順がデータの発生順と異なることがなくなる。また、到達したデータを処理するシステム、装置、ソフトウェアなどのアプリケーションではデータの順序を管理する必要がなくシンプルに構成できる。
【００４６】
請求項２記載の発明によれば、優先度判定手段が、他の通信ノードから送信された受信要求及び受信要求送信手段により送信した受信要求に含まれる減算時間のうち最も減算時間が少ないデータを最優先データとして判定し、第２通信制御手段が、受信要求を送信した後に、通信可の通知を受け取ると送信手段にデータを宛先または中継先の通信ノードへ送信させ、通信不可の通知を受け取ると通信可通知を受け取るまで受信要求送信手段に受信要求の送信を繰り返させる。従って、通信ノードに同時に複数の送信、受信を行わせたり、送信と受信とを同時に行わせることがなくなり、各通信ノードに複数の通信Ｉ／Ｆを持たせなくてもアプリケーションへのデータの到達順がデータの発生順とすることができる。
【００４７】
請求項３記載の発明によれば、優先度判定手段が、他の通信ノードから送信された受信要求に含まれる減算時間と受信要求送信手段により送信した受信要求に含まれる減算時間とが同じであった場合、受信要求送信手段により送信した受信要求に対応するデータを最優先データとして判定するので、自身の受信要求送信手段が送信した受信要求に含まれる減算時間及び他の通信ノードから受信した受信要求に含まれる減算時間が同じであった場合でも最優先データを判定することができる。
【００４８】
請求項４記載の発明によれば、優先度判定手段が、他の通信ノードから受信した受信要求のみが複数あり、全て同じ減算時間であった場合、もしくは、受信要求送信手段により送信する受信要求のみが複数あり、全て同じ減算時間であった場合、ＩＤに基づいて最優先データを判定するので、他の通信ノードから受信した受信要求のみが複数あり、全て同じ減算時間であった場合、もしくは、受信要求送信手段により送信する受信要求のみが複数あり、全て同じ減算時間であった場合でも最優先データを判定することができる。
【００４９】
請求項５記載の発明によれば、中継数が異なってもデータの到達順がデータの発生順と異なることがなくなる。
【００５０】
請求項６記載の発明によれば、第２通信制御手段が、通信可の通知を受け取ると、データに含まれる送信元の通信ノードにより送信されてからの中継数をインクリメントして、送信手段にデータを前記宛先または中継先の通信ノードへ送信させるので、中継数の調整を行うことができる。また、第２通信制御手段が、通信不可の通知を受け取ると、データに含まれる送信元の通信ノードにより送信されてからの中継数をインクリメントして自身宛に前記データを送信させるので、内部での仮想的な送受信の回数で中継数の調整ができ、シンプルな構成で通信時間をカウントすることができる。
【００５１】
請求項７記載の発明によれば、第１通信制御手段が、加算値が最大中継数よりも小さい場合は、送信元の通信ノードにより送信されてからの中継数をインクリメントして自身宛にデータを送信させるので、内部での仮想的な送受信の回数で中継数の調整ができ、シンプルな構成で通信時間の待機を行うことができる。
【図面の簡単な説明】
【００５２】
【図１】本発明の通信システムの一実施の形態を示す構成図である。
【図２】図１に示された通信システム内で伝送されるデータとしての通信フレームの構成例を示す説明図である。
【図３】図１に示された通信ノードの構成を示すブロック図である。
【図４】図３に示された通信ノードＡの通信経路テーブルを示す表である。
【図５】図３に示された通信ノードＢの通信経路テーブルを示す表である。
【図６】図３に示された通信ノードＣの通信経路テーブルを示す表である。
【図７】図３に示された通信ノードＤの通信経路テーブルを示す表である。
【図８】図３に示された通信ノードＥの通信経路テーブルを示す表である。
【図９】図３に示された通信ノードの動作を示すフローチャートである。
【図１０】図１に示された通信システムにおける通信フレームの伝送を示す説明図である。
【図１１】図１に示された通信システムにおける通信フレームの伝送を示す説明図である。
【図１２】図１に示された通信システムにおける通信フレームの伝送を示す説明図である。
【図１３】従来のメッシュネットワークを用いた通信システムの構成図である。
【図１４】従来の問題点を説明するための説明図である。
【図１５】従来の問題点を説明するための説明図である。
【図１６】従来の問題点を説明するための説明図である。
【発明を実施するための形態】
【００５３】
以下、本発明の通信システムを図１ないし図９を参照して説明する。本発明の通信システム１は、図１に示すように、複数の通信ノード２０（ノードＡ、ノードＢ、ノードＣ、ノードＤ、ノードＥ）を有して構成され、これらのノードＡ〜Ｅはメッシュネットワークを構成している。
【００５４】
図１に示した通信システム１では、ノードＡはノードＢと相互に通信可能に接続されている。ノードＢはノードＡ、Ｃ、Ｄと相互に通信可能に接続されている。ノードＣはノードＢ、Ｅと相互に通信可能に接続されている。ノードＤはノードＢ、Ｅと相互に通信可能に接続されている。ノードＥはノードＣ、Ｄと相互に通信可能に接続されている。なお、本実施形態では各通信ノード２０間の通信速度は同じであるとする。
【００５５】
図２に通信システム１内で伝送されるデータとしての通信フレーム５０の構成例を示す。通信フレーム５０は、送信元情報５１と、宛先情報５２と、ホップ数５３と、通信データ５４と、を備えて構成されている。なお、通信フレーム５０のフレーム長は固定とする。
【００５６】
送信元情報５１は、通信フレーム５０を生成した送信元の通信ノード２０を示す情報（例えばノードＡなど）が格納され、宛先情報５２は、通信フレーム５０の宛先の通信ノード２０を示す情報（例えばノードＥ）が格納される。
【００５７】
ホップ数５３は、通信フレーム５０が送信元の通信ノード２０により送信されてから中継された通信ノード２０の数（中継数）が格納され、通信データ５４は、宛先の通信ノード２０で使用されるデータが格納される。このホップ数５３が、送信元の通信ノード２０により送信されてから経過した通信時間に相当する。
【００５８】
上記各通信ノード２０は例えばＣＰＵなどから構成されている。図３にこの通信ノード２０のブロック図を示す。通信ノード２０は、通信フレーム作成部２と、通信Ｉ／Ｆ３と、受信手段としてのデータ受信部４と、複数の受信バッファ５と、送信手段としてのデータ送信部６と、複数の送信バッファ７と、通信条件格納手段としての通信経路テーブル８と、通信条件格納手段としての最大ホップ数格納部９と、宛先判定手段としての宛先判定部１０と、第１通信制御手段としてのホップ数予測器１１と、第１通信制御手段としての通信制御部１２と、受信要求送信手段、優先度判定手段、第２通信確認手段としての通信確認部１３と、仮想通信路１４と、アプリケーション通知部１５と、を備えている。
【００５９】
上記通信フレーム作成部２は、アプリケーション通知部１５を介して通信データ５４が送信されると、図２に示すような通信フレーム５０を作成して後述する通信確認部１３へ送信する。
【００６０】
上記通信Ｉ／Ｆ３は、外部との通信フレーム５０や後述する受信要求及び通信可否通知の入出力を行うインタフェースであり、外部から入力された通信フレーム５０はデータ受信部４へ出力され、外部から入力された後述する受信要求及び通信可否通知は後述する通信確認部１３へ出力され、データ送信部６から入力された通信フレーム５０は外部へ出力される。
【００６１】
データ受信部４は、通信Ｉ／Ｆ３または後述する仮想通信路１４から入力された通信フレーム５０を受信して受信バッファ５に格納する。この受信バッファ５は複数設けられていて、複数の通信フレーム５０を格納することができる。
【００６２】
データ送信部６は、送信バッファ７に格納された通信フレーム５０のうち後述する通信制御部１２により選択された通信フレーム５０を通信Ｉ／Ｆ３へ出力する。この送信バッファ７は複数設けられていて、複数の通信フレーム５０を格納することができる。
【００６３】
通信経路テーブル８は、図４〜図８に示すように、通信システム１を構成する自身以外の通信ノード２０へのホップ数、すなわち自身からメッシュネットワークに接続されている全ての通信ノード２０への通信時間（中継数）や、中継局の有無、中継局がある場合は中継局名（アドレスなど中継局を示すことができる情報）が通信ノード２０毎にテーブル上に予め格納されている。
【００６４】
最大ホップ数格納部９は、通信システム１における最大通信時間としての最大ホップ数（最大中継数）が予め格納されている。なお、本実施形態では、通信経路テーブル８と最大ホップ数格納部９は分けて構成しているが１つのメモリなどにそれぞれの領域を設けるようにしてもよい。
【００６５】
宛先判定部１０は、受信バッファ５に格納された通信フレーム５０内の宛先情報５２を解析して自身宛ての通信フレーム５０であった場合はその通信フレーム５０を通信制御部１２へ出力し、他の通信ノード２０宛てであった場合は通信確認部１３へ通信フレーム５０を出力する。
【００６６】
ホップ数予測器１１は、後述する通信制御部１２や通信確認部１３から入力した通信フレーム５０のホップ数５３に通信経路テーブル８に格納された宛先へのホップ数を加算した総ホップ数（加算値）を予測して、その結果を通信制御部１２や通信確認部１３に出力する。
【００６７】
通信制御部１２は、宛先判定部１０から自ノード宛の通信フレーム５０を入力すると、総ホップ数を求めるために、その通信フレーム５０をホップ数予測器１１に対して出力する。通信制御部１２は、ホップ数予測器１１が予測した総ホップ数を入力すると、最大ホップ数格納部９に格納されている最大ホップ数と、上記ホップ数予測器１１で予測された総ホップ数と、を比較し、総ホップ数と最大ホップ数とが同じである場合は自身に接続された後述するアプリケーション通知部１５に通信フレーム５０を出力し、総ホップ数が最大ホップ数よりも小さい場合は、通信フレーム５０内のホップ数５３をインクリメントして仮想通信路１４へ通信フレーム５０を出力する。
【００６８】
通信確認部１３は、宛先判定部１０や通信フレーム作成部２から他のノード宛の通信フレーム５０を入力すると、通信フレーム５０を送信バッファ７に格納すると共に総ホップ数を求めるために、その通信フレーム５０をホップ数予測器１１に対して出力する。また、通信確認部１３は、上述した通信経路テーブル８を参照して入力された通信フレーム５０を宛先の通信ノード２０に伝送するために必要な中継局を選択する。
【００６９】
また、通信確認部１３は、ホップ数予測器１１が予測した総ホップ数を入力すると、最大ホップ数格納部９に格納された最大ホップ数から上記総ホップ数を減算した残ホップ数（減算時間）を求め、求めた残ホップ数及び宛先判定部１０や通信フレーム作成部２から入力された通信フレーム５０の送信元情報５１（受信したデータ固有のＩＤ）を含んだ受信要求を作成し、作成した受信要求を通信Ｉ／Ｆ３を介して選択した中継局宛に送信する。
【００７０】
また、通信確認部１３は、通信Ｉ／Ｆ３から受信要求を入力すると、この受信要求に含まれる残ホップ数、送信元情報５１と、送信バッファ７に通信フレーム５０が格納されている場合には、その通信フレーム５０の受信要求に含まれる残ホップ数、送信元情報５１と、を比較して、最も優先度の高い通信フレーム５０を最優先フレーム（最優先データ）として判定する。
【００７１】
ここで、最優先フレームの判定としては、下記に示す（１）〜（５）に従って行われる。
（１）他の通信ノードから受信した受信要求及び他の通信ノードに対して送信した受信要求のうち残ホップ数が最も少ない通信フレーム５０を最優先フレームとする（受信要求と送信要求の区別なし）。
（２）他の通信ノードから受信した受信要求と他の通信ノードに対して送信した受信要求との残ホップ数が同じである場合は、他の通信ノードに対して送信した受信要求に対応する通信フレーム５０を最優先フレームとする。
（３）他の通信ノードから送信された受信要求のみが複数あり、それぞれ同じ残ホップ数である場合、送信元情報５１の優先度が高いものを最優先フレームとする。
（４）他の通信ノードに対して送信した受信要求のみが複数あり、それぞれ同じ残ホップ数である場合、送信元情報５１の優先度が高いものを最優先フレームとする。
（５）自ノード宛に送信する通信フレームは優先度判定に含まない。
【００７２】
また、通信確認部１３は、最優先フレームの受信要求を送信した通信ノード２０宛に通信可を通知すると共に、最優先フレームでない通信フレーム５０の受信要求を送信した通信ノード２０宛に通信不可を通知する。具体的には、例えばノードＢにおいて、ノードＡ、Ｄ、Ｃから受信要求が送信され、ノードＡによって受信要求が行われた通信フレーム５０が最優先フレームであった場合、ノードＢは、ノードＡ宛に通信可を通知すると共に、ノードＤ、Ｃに通信不可を通知する。一方、ノードＢ自身が送信した受信要求に対応する通信フレーム５０が最優先フレームであった場合、ノードＢは、ノードＡ、Ｄ、Ｃ宛に通信不可を通知する。
【００７３】
また、通信確認部１３は、受信要求を送信した後に、他の通信ノード２０から通信可の通知を受け取ると、受信要求した送信バッファ７に格納された通信フレーム５０のホップ数５３をインクリメント（＋１）してデータ送信部６に対して出力する。通信確認部１３は、他の通信ノード２０から通信不可の通知を受け取ると、受信要求した送信バッファ７に格納された通信フレーム５０のホップ数５３をインクリメントして仮想通信路１４へ通信フレーム５０を出力する。
【００７４】
仮想通信路１４は、通信ノード２０内で仮想的に通信フレーム５０を伝送するために通信制御部１２や通信確認部１３からデータ受信部４に通信フレーム５０を伝送する。
【００７５】
アプリケーション通知部１５は、通信制御部１２から通信フレーム５０を受信すると、自身の通信ノード２０で実行されるアプリケーションに通知して通信フレーム５０内の通信データ５４を取り出してアプリケーションに引き渡す。なお、このアプリケーションとは、通信システム１全体で実現される装置やシステム（例えば車両のウィンドウ制御など）のうち、当該通信ノード２０に割り当てられた機能を実行する手段（例えばウィンドウロック）を示し、図示はしないが、ハードウェアまたはソフトウェアで構成されている。
【００７６】
次に、上述した構成の通信ノード２０の動作を図９のフローチャートを参照して説明する。
【００７７】
まず、ステップＳ１０１において、通信ノード２０は、自身内で通信データ５４が発生したか否かを判定し、発生した場合（Ｙの場合）はステップＳ１０２に進み、発生していない場合（Ｎの場合）はステップＳ１１１に進む。本ステップでは、例えばアプリケーション通知部１５がアプリケーションから他の通信ノード２０へ送信する通信データ５４を受け取ったか否かで判断する。
【００７８】
次に、ステップＳ１０２において、通信ノード２０は、通信フレーム５０を作成してステップＳ１０３に進む。本ステップでは、アプリケーション通知部１５が受け取ったデータを通信フレーム作成部２に送信し、通信フレーム作成部２がアプリケーション通知部１５から受け取った通信データ５４から通信フレーム５０を生成し通信確認部１３へ出力する。通信確認部１３は、この通信フレーム５０を送信バッファ７に格納する。
【００７９】
次にステップＳ１０３において、通信ノード２０の通信確認部１３は、通信経路テーブル８を参照して、送信バッファ７に格納されている通信フレーム５０を宛先の通信ノード２０に転送するために必要な中継局（宛先に直接伝送できる場合は宛先）を選択してステップＳ１０４に進む。
【００８０】
次に、ステップＳ１０４において、通信ノード２０は、送信バッファ７に格納されている通信フレーム５０の総ホップ数を予測してステップＳ１０５に進む。本ステップでは、通信確認部１３がホップ数予測器１１に当該通信フレーム５０の宛先までの総ホップ数を予測させている。
【００８１】
次に、ステップＳ１０５において、通信ノード２０は、最大ホップ数格納部９に格納された最大ホップ数からステップＳ１０５で予測した上記総ホップ数を減算した残ホップ数を求め、求めた残ホップ数及び送信バッファ７に格納された通信フレーム５０の送信元情報５１を含んだ受信要求を作成し、この受信要求をステップＳ１０３で選択した中継局または宛先に送信してステップＳ１０６に進む。本ステップでは、通信確認部１３が受信要求を通信Ｉ／Ｆ３に出力している。
【００８２】
次に、ステップＳ１０６において、通信ノード２０の通信確認部１３は、受信要求に応じてステップＳ１０３で選択した中継局または宛先から通信可が通知されると（Ｙの場合）はステップＳ１０７に進み、通信不可が通知されると（Ｎの場合）はステップＳ１０９に進む。
【００８３】
次に、ステップＳ１０７において、通信ノード２０は、通信フレーム５０内のホップ数５３を加算（インクリメント）し、ステップＳ１０８に進む。
【００８４】
次に、ステップＳ１０８において、通信ノード２０は、ステップＳ１０３で選択した中継局または宛先に通信フレーム５０を送信し、ステップＳ１０１に戻る。本ステップでは、データ送信部６から通信Ｉ／Ｆ３を介して宛先または中継先の通信ノード２０へ通信フレーム５０を送信する。
【００８５】
次に、ステップ１０９において、通信ノード２０は、通信フレーム５０内のホップ数５３を加算（インクリメント）し、ステップＳ１１０に進む。
【００８６】
次に、ステップＳ１１０において、通信ノード２０は、自ノード宛内部通信を行いステップＳ１０１に戻る。本ステップでは、通信確認部１３から仮想通信路１４を介してデータ受信部４へ通信フレーム５０を送信している。
【００８７】
一方、ステップＳ１１１においては、通信ノード２０は、隣接する通信ノード２０から通信フレーム５０を受信したか否かを判断し、受信した場合（Ｙの場合）はステップＳ１１２に進む、受信していない場合（Ｎの場合）はステップＳ１１９に進む。
【００８８】
次に、ステップＳ１１２において、通信ノード２０は、宛先判定を行ってステップＳ１１３に進む。本ステップでは、宛先判定部１０で、通信フレーム５０内の宛先情報５２を解析して自身宛てであったか他の通信ノード２０宛てであったかを判定し、自身宛てであった場合、その通信フレーム５０を通信制御部１２に出力し、他の通信ノード２０宛であった場合、その通信フレーム５０を通信確認部１３に出力する。
【００８９】
次に、ステップＳ１１３において、通信ノード２０は、ステップＳ１１２の結果自ノード宛てであったか否かを判断し、自ノード宛であった場合はステップＳ１１４に進み、自ノード宛てでなかった場合は上述したステップＳ１０３に進む。
【００９０】
次に、ステップＳ１１４において、通信ノード２０の通信制御部１２は、自ノード宛の通信フレーム５０内のホップ数５３を確認してステップＳ１１５に進む。
【００９１】
次に、ステップＳ１１５において、通信ノード２０の通信制御部１２は、ステップＳ１１４で確認したホップ数５３が最大ホップ数格納部９に格納されている最大ホップ数と同じか否かを判断し、同じである場合（Ｙの場合）はステップＳ１１６に進み、同じでない場合（Ｎの場合）はステップＳ１１７に進む。
【００９２】
次に、ステップＳ１１６においては、通信ノード２０は、アプリケーションに通信フレーム５０内の通信データ５４を引き渡す。本ステップでは、通信制御部１２が、通信フレーム５０をアプリケーション通知部１５に出力し、このアプリケーション通知部１５がアプリケーションに通信フレーム５０内の通信データ５４を引き渡す。
【００９３】
次に、ステップＳ１１７においては、通信ノード２０の通信制御部１２は、通信フレーム５０内のホップ数５３を加算（インクリメント）し、ステップＳ１１８に進む。
【００９４】
次に、ステップＳ１１８において、通信ノード２０は、ステップＳ１１０と同様に自ノード宛内部通信を行いステップＳ１０１に戻る。
【００９５】
一方、ステップＳ１１９においては、通信ノード２０は、隣接する通信ノード２０から受信要求を受信したか否かを判断し、受信した場合（Ｙの場合）はステップＳ１１１に進む、受信していない場合（Ｎの場合）はステップＳ１０１に戻る。
【００９６】
次に、ステップＳ１２０においては、通信ノード２０は、最優先データを判定してステップＳ１２１に進む。本ステップでは、通信確認部１３が、隣接する通信ノード２０から受信した受信要求に含まれる残ホップ数、送信元情報５１と、隣接する通信ノード２０に対して送信した受信要求に含まれる残ホップ数、送信元情報５１と、を比較して、最も優先度の高い通信フレーム５０を最優先フレーム（最優先データ）として判定する。
【００９７】
次に、ステップＳ１２１においては、通信ノード２０は、通信可否を通知してステップＳ１０１に戻る。本ステップでは、通信確認部１３が、通信Ｉ／Ｆ３を制御して、最優先フレームの受信要求を送信した通信ノード２０宛に通信可を通知すると共に、最優先フレームでない通信フレーム５０の受信要求を送信した通信ノード２０宛に通信不可を通知する。
【００９８】
次に、上述した構成の通信ノード２０を複数有する通信システム１（メッシュネットワーク）の動作例を説明する。図４〜図８にノードＡ〜Ｅまでの通信経路テーブル８の内容を示す。また、通信システム１を構成するメッシュネットワークの最大ホップ数は３であり、この値は予め各通信ノード２０の最大ホップ数格納部９に格納されている。
【００９９】
まず、例としてノードＤからノードＣ、ノードＡからノードＣにデータを送信する場合の通信システム１の動作について図１０を参照して説明する。
【０１００】
まず、時刻ｔ１での各ノードＡ〜Ｅの動作について説明する。ノードＤで通信データ５４が発生する。ノードＤは、図２に示すように、通信データ５４に、送信元情報５１と、宛先情報５２と、ホップ数５３と、を追加した通信フレーム５０を作成して、送信バッファ７に格納する。このとき、ノードＤは、送信元情報５１としてノードＤ、宛先情報５２としてノードＣ、ホップ数５３として０を格納した通信フレーム５０を作成する。
【０１０１】
次に、ノードＤは、図７に示すノードＤのテーブルを参照して、中継局としてノードＢを選択する。また、ノードＤは、作成した通信フレーム５０のホップ数５３＝０に通信経路テーブル８に格納された宛先へのホップ数＝２を加算した総ホップ数＝２を予測する。
【０１０２】
次に、ノードＤは、最大ホップ数＝３から上記総ホップ数＝２を減算した残ホップ数＝１を求め、求めた残ホップ数＝１及び作成した通信フレーム５０の送信元情報５１＝ノードＤを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した中継局ノードＢ宛に送信する。
【０１０３】
ノードＢは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１０に示すように、ノードＢは、他と通信することがなく、空いている状態のため、ノードＤから送信された受信要求に対応する通信フレーム５０を最優先フレームと判定して、ノードＤに対して通信可の通知を送信する。ノードＤは、通信可の通知を受け取ると、通信フレーム５０のホップ数５３を１加算してホップ数５３＝１として、その通信フレーム５０をノードＢへ送信する（ノードＤ→ノードＢ）。
【０１０４】
次の時刻ｔ２での各ノードＡ〜Ｅの動作について説明する。ノードＢは、ノードＤより受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２がノードＢ宛ではないので、ノードＢは、図５に示すノードＢの通信経路テーブル８を参照して、中継局なしで宛先としてノードＣを選択する。
【０１０５】
次に、ノードＢは、ノードＤから送信された通信フレーム５０のホップ数５３＝１に通信経路テーブル８に格納された宛先へのホップ数５３＝１を加算した総ホップ数＝２を予測する。次に、ノードＢは、最大ホップ数＝３から上記総ホップ数＝２を減算した残ホップ数＝１を求め、求めた残ホップ数＝１及びノードＤから送信された通信フレーム５０の送信元情報５１＝ノードＤを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した宛先ノードＣ宛に送信する。
【０１０６】
ノードＣは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１０に示すように、ノードＣは、他と通信することがなく、空いている状態のため、ノードＢから送信された受信要求に対応する通信フレーム５０を最優先フレームと判定して、ノードＢに対して通信可の通知を送信する。ノードＢは、通信可の通知を受け取ると、通信フレーム５０のホップ数５３を１加算してホップ数５３＝２として、その通信フレーム５０をノードＣへ送信する（ノードＢ→ノードＣ）。
【０１０７】
一方、時刻ｔ２において、ノードＡで通信データ５４が発生する。ノードＡは、図２に示すように、通信データ５４に、送信元情報５１と、宛先情報５２と、ホップ数５３と、を追加した通信フレーム５０を作成して、送信バッファ７に格納する。このとき、ノードＡは、送信元情報５１としてノードＡ、宛先情報５２としてノードＣ、ホップ数５３として０を格納した通信フレーム５０を作成する。
【０１０８】
次に、ノードＡは、図４に示すノードＡのテーブルを参照して、中継局としてノードＢを選択する。また、ノードＡは、作成した通信フレーム５０のホップ数５３＝０に通信経路テーブル８に格納された宛先へのホップ数５３＝２を加算した総ホップ数＝２を予測する。
【０１０９】
次に、ノードＡは、最大ホップ数＝３から上記総ホップ数＝２を減算した残ホップ数＝１を求め、求めた残ホップ数＝１及び作成した通信フレーム５０の送信元情報５１＝ノードＡを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した中継局ノードＢ宛に送信する。
【０１１０】
ノードＢは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１０に示すように、ノードＢは、受信要求の残ホップ数と同じ残ホップ数のノードＣへ送信する通信フレーム５０を保有しているので、送信を優先してノードＣへ送信する通信フレーム５０を最優先フレームとして判定して、ノードＢに対して通信不可の通知を送信する。ノードＡは、通信不可の通知を受け取ると、受信要求を送信した通信フレーム５０のホップ数５３に１を加算してホップ数５３＝１の通信フレーム５０を自ノード宛に内部通信を行う（ノードＡ→ノードＡ）。
【０１１１】
次の時刻ｔ３での各ノードＡ〜Ｅの動作について説明する。ノードＣは、ノードＢより受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２が自ノードＣ宛であるので、ノードＣは、ノードＢより受け取った通信フレーム５０のホップ数５３＝２を総ホップ数２として予測する（即ち、宛先へのホップ数５３＝０）。
【０１１２】
ノードＣは、予測した総ホップ数＝２が最大ホップ数＝３よりも小さいため、ノードＢより受け取った通信フレーム５０のホップ数５３に１を加算してホップ数５３＝３とした通信フレーム５０を自ノード宛に内部通信を行う（ノードＣ→ノードＣ）。
【０１１３】
一方、ノードＡでは、自ノードＡから受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２がノードＡ宛ではないので、ノードＡは、図４に示すノードＡの通信経路テーブル８を参照して、中継局としてノードＢを選択する。
【０１１４】
次に、ノードＡは、自ノードＡから送信された通信フレーム５０のホップ数５３＝１に通信経路テーブル８に格納された宛先へのホップ数５３＝２を加算した総ホップ数＝３を予測する。
【０１１５】
次に、ノードＡは、最大ホップ数＝３から上記総ホップ数＝３を減算した残ホップ数＝０を求め、求めた残ホップ数０及び通信フレーム５０の送信元情報５１＝ノードＡを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した中継局ノードＢ宛に送信する。
【０１１６】
ノードＢは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１０に示すように、ノードＢは、他と通信することがなく、空いている状態のため、ノードＡから送信された受信要求に対応する通信フレーム５０を最優先フレームと判定して、ノードＡに対して通信可の通知を送信する。ノードＡは、通信可の通知を受け取ると、通信フレーム５０のホップ数５３を１加算してホップ数５３＝３として、その通信フレーム５０をノードＢへ送信する（ノードＡ→ノードＢ）。
【０１１７】
次に、時刻ｔ４での各ノードＡ〜Ｅの動作について説明する。ノードＣは、自ノードＣから受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２が自ノードＣ宛であるので、ノードＣは、自ノードＣより受け取った通信フレーム５０のホップ数５３＝３を総ホップ数５３＝３を予測する。ノードＣは、予測した総ホップ数＝３が最大ホップ数＝３と同じであるため、自ノードＣより受け取った通信フレーム５０の通信データ５４をアプリケーションへ引き渡す。
【０１１８】
一方、ノードＢでは、ノードＡから受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２がノードＢ宛ではないので、ノードＢは、図５に示すノードＢの通信経路テーブル８を参照して、中継局なしで宛先ノードＣを選択する。
【０１１９】
次に、ノードＢは、ノードＡから送信された通信フレーム５０のホップ数５３＝２に通信経路テーブル８に格納された宛先へのホップ数５３＝１を加算した総ホップ数＝３を予測する。
【０１２０】
次に、ノードＢは、最大ホップ数＝３から上記総ホップ数＝３を減算した残ホップ数＝０を求め、求めた残ホップ数０及び通信フレーム５０の送信元情報５１＝ノードＡを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した宛先ノードＣ宛に送信する。
【０１２１】
ノードＣは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１０に示すように、ノードＣは、他と通信することがなく、空いている状態のため、ノードＢから送信された受信要求に対応する通信フレーム５０を最優先フレームと判定して、ノードＢに対して通信可の通知を送信する。ノードＣは、通信可の通知を受け取ると、通信フレーム５０のホップ数５３を１加算してホップ数５３＝３として、その通信フレーム５０をノードＣへ送信する（ノードＢ→ノードＣ）。
【０１２２】
次に、時刻ｔ５での各ノードＡ〜Ｅの動作について説明する。ノードＣは、ノードＢから受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２が自ノードＣ宛であるので、ノードＣは、自ノードＣより受け取った通信フレーム５０のホップ数５３＝３を総ホップ数＝３として予測する。ノードＣは、予測した総ホップ数＝３が最大ホップ数＝３と同じであるため、自ノードＣより受け取った通信フレーム５０の通信データ５４をアプリケーションへ引き渡す。
【０１２３】
図１０からも明らかなように、ノードＣでは、時刻ｔ４でノードＤからの通信フレーム５０の通信データ５４が、時刻ｔ５でノードＡからの通信フレーム５０の通信データ５４がアプリケーションに引き渡され、通信データ５４の発生順通りにアプリケーションへ引き渡すことができる。しかも、どのノードＡ〜Ｅでも同時に通信を行うようなことがない。
【０１２４】
次の例として、ノードＡからノードＢ、ノードＣからノードＡにデータを送信する場合の通信システム１の動作について図１１を参照して説明する。
【０１２５】
まず、時刻ｔ１での各ノードＡ〜Ｅの動作について説明する。ノードＡで通信データ５４が発生する。ノードＡは、図２に示すように、通信データ５４に、送信元情報５１と、宛先情報５２と、ホップ数５３と、を追加した通信フレーム５０を作成して、送信バッファ７に格納する。このとき、ノードＡは、送信元情報５１としてノードＡ、宛先情報５２としてノードＢ、ホップ数５３として０を格納した通信フレーム５０を作成する。
【０１２６】
次に、ノードＡは、図４に示すノードＡのテーブルを参照して、中継局なしで宛先ノードＢを選択する。また、ノードＡは、作成した通信フレーム５０のホップ数５３＝０に通信経路テーブル８に格納された宛先へのホップ数５３＝１を加算した総ホップ数＝１を予測する。
【０１２７】
次に、ノードＡは、最大ホップ数＝３から上記総ホップ数＝１を減算した残ホップ数＝２を求め、求めた残ホップ数＝２及び作成した通信フレーム５０の送信元情報５１＝ノードＡを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した宛先ノードＢ宛に送信する。
【０１２８】
ノードＢは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１１に示すように、ノードＢは、他と通信することがなく、空いている状態のため、ノードＡから送信された受信要求に対応する通信フレーム５０を最優先フレームと判定して、ノードＡに対して通信可の通知を送信する。ノードＡは、通信可の通知を受け取ると、通信フレーム５０のホップ数５３を１加算してホップ数５３＝１として、その通信フレーム５０をノードＢへ送信する（ノードＡ→ノードＢ）。
【０１２９】
次の時刻ｔ２での各ノードＡ〜Ｅの動作について説明する。ノードＢは、ノードＡから受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２が自ノードＢ宛であるので、ノードＢは、ノードＡより受け取った通信フレーム５０のホップ数５３＝１を総ホップ数＝１として予測する。ノードＢは、予測した総ホップ数＝１が最大ホップ数＝３よりも小さいため、ノードＡより受け取った通信フレーム５０のホップ数５３に１を加算してホップ数５３＝２とした通信フレーム５０を自ノードＢ宛に内部通信を行う（ノードＢ→ノードＢ）。
【０１３０】
一方、ノードＣで通信データ５４が発生する。ノードＣは、図２に示すように、通信データ５４に、送信元情報５１と、宛先情報５２と、ホップ数５３と、を追加した通信フレーム５０を作成して、送信バッファ７に格納する。このとき、ノードＣは、送信元情報５１としてノードＣ、宛先情報５２としてノードＡ、ホップ数５３として０を格納した通信フレーム５０を作成する。
【０１３１】
次に、ノードＣは、図６に示すノードＣのテーブルを参照して、中継局ノードＢを選択する。また、ノードＣは、作成した通信フレーム５０のホップ数５３＝０に通信経路テーブル８に格納された宛先へのホップ数５３＝２を加算した総ホップ数＝２を予測する。
【０１３２】
次に、ノードＣは、最大ホップ数＝３から上記総ホップ数＝２を減算した残ホップ数＝１を求め、求めた残ホップ数＝１及び作成した通信フレーム５０の送信元情報５１＝ノードＣを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した中継局ノードＢ宛に送信する。
【０１３３】
ノードＢは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１１に示すように、ノードＢは、ノードＡから送信された通信フレーム５０を保有しているが、自ノードＢ内部での処理データであり、通信Ｉ／Ｆ３が空いている状態のため、ノードＣから送信された受信要求に対応する通信フレーム５０を最優先フレームと判定して、ノードＣに対して通信可の通知を送信する。ノードＣは、通信可の通知を受け取ると、通信フレーム５０のホップ数５３を１加算してホップ数５３＝１として、その通信フレーム５０をノードＢへ送信する（ノードＣ→ノードＢ）。
【０１３４】
次の時刻ｔ３での各ノードＡ〜Ｅの動作について説明する。ノードＢは、自ノードＢから受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２が自ノードＢ宛であるので、ノードＢは、自ノードＢより受け取った通信フレーム５０のホップ数５３＝２を総ホップ数＝２として予測する。ノードＢは、予測した総ホップ数＝２が最大ホップ数＝３よりも小さいため、自ノードＢより受け取った通信フレーム５０のホップ数５３に１を加算してホップ数５３＝３とした通信フレーム５０を自ノードＢ宛に内部通信を行う（ノードＢ→ノードＢ）。
【０１３５】
同時に、ノードＢは、ノードＣから受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２がノードＢ宛ではないので、ノードＢは、図５に示すノードＢの通信経路テーブル８を参照して、中継局なしで宛先としてノードＡを選択する。
【０１３６】
次に、ノードＢは、ノードＣから送信された通信フレーム５０のホップ数５３＝１に通信経路テーブル８に格納された宛先へのホップ数５３＝１を加算した総ホップ数＝２を予測する。次に、ノードＢは、最大ホップ数＝３から上記総ホップ数＝２を減算した残ホップ数＝１を求め、求めた残ホップ数＝１及びノードＣから送信された通信フレーム５０の送信元情報５１＝ノードＣを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した宛先ノードＡ宛に送信する。
【０１３７】
ノードＡは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１１に示すように、ノードＡは、他と通信することがなく、空いている状態のため、ノードＢから送信された受信要求に対応する通信フレーム５０を最優先フレームと判定して、ノードＢに対して通信可の通知を送信する。ノードＢは、通信可の通知を受け取ると、通信フレーム５０のホップ数５３を１加算してホップ数５３＝２として、その通信フレーム５０をノードＡへ送信する（ノードＢ→ノードＡ）。
【０１３８】
次の時刻ｔ４での各ノードＡ〜Ｅの動作について説明する。ノードＢは、自ノードＢから受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２が自ノードＢ宛であるので、ノードＢは、自ノードＢより受け取った通信フレーム５０のホップ数５３＝３を総ホップ数＝３として予測する。ノードＢは、予測した総ホップ数＝３が最大ホップ数＝３と同じであるため、自ノードＢより受け取った通信フレーム５０の通信データ５４をアプリケーションへ引き渡す。
【０１３９】
ノードＡでは、ノードＢから受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２が自ノードＡ宛であるので、ノードＡは、ノードＢより受け取った通信フレーム５０のホップ数５３＝２に通信経路テーブル８に格納された宛先へのホップ数５３＝０を加算した総ホップ数＝２を予測する。ノードＡは、予測した総ホップ数＝２が最大ホップ数＝３よりも小さいため、ノードＢより受け取った通信フレーム５０のホップ数５３に１を加算してホップ数５３＝３とした通信フレーム５０を自ノードＡ宛に内部通信を行う（ノードＡ→ノードＡ）。
【０１４０】
次の時刻ｔ５での各ノードＡ〜Ｅの動作について説明する。ノードＡは、自ノードＡから受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２が自ノードＡ宛であるので、ノードＡは、自ノードＡより受け取った通信フレーム５０のホップ数５３＝３を総ホップ数＝３として予測する。ノードＡは、予測した総ホップ数＝３が最大ホップ数＝３と同じであるため、自ノードＡより受け取った通信フレーム５０の通信データ５４をアプリケーションへ引き渡す。
【０１４１】
以上、時刻ｔ３におけるノードＢの例のように、複数のデータの保持を可能とすることで、時刻ｔ４でノードＢがノードＡからの通信フレーム５０を、時刻ｔ５でノードＡからノードＣからの通信フレーム５０を受信し、通信データ５４の発生順通りにアプリケーションへ引き渡すことができる。しかも、どのノードＡ〜Ｅでも同時に通信を行うようなことがない。
【０１４２】
次の例として、ノードＢからノードＥ、ノードＥからノードＡにデータを送信する場合の通信システム１の動作について図１２を参照して説明する。
【０１４３】
まず、時刻ｔ１での各ノードＡ〜Ｅの動作について説明する。ノードＢで通信データ５４が発生する。ノードＢは、図２に示すように、通信データ５４に、送信元情報５１と、宛先情報５２と、ホップ数５３と、を追加した通信フレーム５０を作成して、送信バッファ７に格納する。このとき、ノードＢは、送信元情報５１としてノードＢ、宛先情報５２としてノードＥ、ホップ数５３として０を格納した通信フレーム５０を作成する。
【０１４４】
次に、ノードＢは、図５に示すノードＢのテーブルを参照して、中継局ノードＣを選択する。また、ノードＢは、作成した通信フレーム５０のホップ数５３＝０に通信経路テーブル８に格納された宛先へのホップ数５３＝２を加算した総ホップ数＝２を予測する。
【０１４５】
次に、ノードＢは、最大ホップ数＝３から上記総ホップ数＝２を減算した残ホップ数＝１を求め、求めた残ホップ数＝１及び作成した通信フレーム５０の送信元情報５１＝ノードＢを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した宛先ノードＣ宛に送信する。
【０１４６】
ノードＣは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１１に示すように、ノードＣは、他と通信することがなく、空いている状態のため、ノードＢから送信された受信要求に対応する通信フレーム５０を最優先フレームと判定して、ノードＢに対して通信可の通知を送信する。ノードＢは、通信可の通知を受け取ると、通信フレーム５０のホップ数５３を１加算してホップ数５３＝１として、その通信フレーム５０をノードＣへ送信する（ノードＢ→ノードＣ）。
【０１４７】
次の時刻ｔ２での各ノードＡ〜Ｅの動作について説明する。ノードＥで通信データ５４が発生する。ノードＥは、図２に示すように、通信データ５４に、送信元情報５１と、宛先情報５２と、ホップ数５３と、を追加した通信フレーム５０を作成して、送信バッファ７に格納する。このとき、ノードＥは、送信元情報５１としてノードＥ、宛先情報５２としてノードＡ、ホップ数５３として０を格納した通信フレーム５０を作成する。
【０１４８】
次に、ノードＥは、図８に示すノードＤのテーブルを参照して、中継局としてノードＤを選択する。また、ノードＥは、作成した通信フレーム５０のホップ数５３＝０に通信経路テーブル８に格納された宛先へのホップ数５３＝３を加算した総ホップ数＝３を予測する。
【０１４９】
次に、ノードＥは、最大ホップ数＝３から上記総ホップ数＝３を減算した残ホップ数＝０を求め、求めた残ホップ数＝０及び作成した通信フレーム５０の送信元情報５１＝ノードＥを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した中継局ノードＤ宛に送信する。
【０１５０】
ノードＤは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１２に示すように、ノードＤは、他と通信することがなく、空いている状態のため、ノードＥから送信された受信要求に対応する通信フレーム５０を最優先フレームと判定して、ノードＥに対して通信可の通知を送信する。ノードＥは、通信可の通知を受け取ると、通信フレーム５０のホップ数５３を１加算してホップ数５３＝１として、その通信フレーム５０をノードＢへ送信する（ノードＥ→ノードＤ）。
【０１５１】
一方、ノードＣは、ノードＢから受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２がノードＣ宛ではないので、ノードＣは、図６に示すノードＣの通信経路テーブル８を参照して、宛先としてノードＥを選択する。
【０１５２】
次に、ノードＣは、ノードＢから送信された通信フレーム５０のホップ数５３＝１に通信経路テーブル８に格納された宛先へのホップ数５３＝１を加算した総ホップ数＝２を予測する。
【０１５３】
次に、ノードＣは、最大ホップ数＝３から上記総ホップ数＝２を減算した残ホップ数＝１を求め、求めた残ホップ数１及び通信フレーム５０の送信元情報５１＝ノードＢを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した宛先ノードＥ宛に送信する。
【０１５４】
ノードＥは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１２に示すように、ノードＥは、受信要求の残ホップ数＝１より小さい残ホップ数＝０のノードＤへ送信する通信フレーム５０を保有しているので、送信を優先してノードＤへ送信する通信フレーム５０を最優先フレームとして判定して、ノードＣに対して通信不可の通知を送信する。ノードＣは、通信不可の通知を受け取ると、受信要求を送信した通信フレーム５０のホップ数５３に１を加算してホップ数５３＝１の通信フレーム５０を自ノード宛に内部通信を行う（ノードＣ→ノードＣ）。
【０１５５】
次の時刻ｔ３での各ノードＡ〜Ｅの動作について説明する。ノードＣは、自ノードＣより受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２がノードＣ宛ではないので、ノードＣは、図６に示すノードＣの通信経路テーブル８を参照して、中継局なしで宛先としてノードＥを選択する。
【０１５６】
次に、ノードＣは、自ノードＣから送信された通信フレーム５０のホップ数５３＝２に通信経路テーブル８に格納された宛先へのホップ数５３＝１を加算した総ホップ数＝３を予測する。次に、ノードＣは、最大ホップ数＝３から上記総ホップ数＝３を減算した残ホップ数＝０を求め、求めた残ホップ数＝０及び自ノードＣから送信された通信フレーム５０の送信元情報５１＝ノードＢを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した宛先ノードＥ宛に送信する。
【０１５７】
ノードＥは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１１に示すように、ノードＥは、他と通信することがなく、空いている状態のため、ノードＣから送信された受信要求に対応する通信フレーム５０を最優先フレームと判定して、ノードＣに対して通信可の通知を送信する。ノードＣは、通信可の通知を受け取ると、通信フレーム５０のホップ数５３を１加算してホップ数５３＝３として、その通信フレーム５０をノードＥへ送信する（ノードＣ→ノードＥ）。
【０１５８】
ノードＤは、ノードＥより受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２がノードＤ宛ではないので、ノードＤは、図６に示すノードＤの通信経路テーブル８を参照して、中継局ノードＢを選択する。また、ノードＤは、作成した通信フレーム５０のホップ数５３＝１に通信経路テーブル８に格納された宛先へのホップ数５３＝２を加算した総ホップ数＝３を予測する。
【０１５９】
次に、ノードＤは、最大ホップ数＝３から上記総ホップ数＝３を減算した残ホップ数＝０を求め、求めた残ホップ数＝０及び作成した通信フレーム５０の送信元情報５１＝ノードＥを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した中継局ノードＢ宛に送信する。
【０１６０】
ノードＢは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１２に示すように、ノードＢは、他と通信することがなく、空いている状態のため、ノードＤから送信された受信要求に対応する通信フレーム５０を最優先フレームと判定して、ノードＤに対して通信可の通知を送信する。ノードＤは、通信可の通知を受け取ると、通信フレーム５０のホップ数５３を１加算してホップ数５３＝２として、その通信フレーム５０をノードＢへ送信する（ノードＤ→ノードＢ）。
【０１６１】
次の時刻ｔ４での各ノードＡ〜Ｅの動作について説明する。ノードＥは、ノードＣより受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２が自ノードＥ宛であるので、ノードＥは、ノードＣより受け取った通信フレーム５０のホップ数５３＝３を総ホップ数＝３として予測する。ノードＥは、予測した総ホップ数＝３が最大ホップ数＝３と同じであるため、ノードＣより受け取った通信フレーム５０の通信データ５４をアプリケーションへ引き渡す。
【０１６２】
ノードＢは、ノードＤより受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２がノードＢ宛ではないので、ノードＢは、図５に示すノードＢの通信経路テーブル８を参照して、中継局なしで宛先としてノードＡを選択する。
【０１６３】
次に、ノードＢは、ノードＤから送信された通信フレーム５０のホップ数５３＝２に通信経路テーブル８に格納された宛先へのホップ数５３＝１を加算した総ホップ数＝３を予測する。次に、ノードＢは、最大ホップ数＝３から上記総ホップ数＝３を減算した残ホップ数＝０を求め、求めた残ホップ数＝０及びノードＤから送信された通信フレーム５０の送信元情報５１＝ノードＥを含んだ受信要求を作成し、通信Ｉ／Ｆ３を介して作成した受信要求を選択した宛先ノードＡ宛に送信する。
【０１６４】
ノードＡは、受信要求を受け取ると、最優先フレームの判定を行う。ここでは、図１２に示すように、ノードＡは、他と通信することがなく、空いている状態のため、ノードＢから送信された受信要求に対応する通信フレーム５０を最優先フレームと判定して、ノードＢに対して通信可の通知を送信する。ノードＢは、通信可の通知を受け取ると、通信フレーム５０のホップ数５３を１加算してホップ数５３＝３として、その通信フレーム５０をノードＡへ送信する（ノードＢ→ノードＡ）。
【０１６５】
次の時刻ｔ５での各ノードＡ〜Ｅの動作について説明する。ノードＡは、ノードＢより受け取った通信フレーム５０の宛先情報５２を判定する。この場合、宛先情報５２が自ノードＡ宛であるので、ノードＡは、ノードＢより受け取った通信フレーム５０のホップ数５３＝３を総ホップ数＝３として予測する。ノードＡは、予測した総ホップ数＝３が最大ホップ数＝３と同じであるため、ノードＢより受け取った通信フレーム５０の通信データ５４をアプリケーションへ引き渡す。
【０１６６】
以上のように、時刻ｔ２におけるノードＤの例のように、複数の通信フレーム５０の受信、送信が合った場合、その通信フレーム５０の残ホップ数の関係から、通信の優先度を設定することで、時刻ｔ４でノードＥがノードＢからの通信フレーム５０を、時刻ｔ５でノードＡがノードＥからの通信フレーム５０を受信し、通信データ５４の発生順通りにアプリケーションへ引き渡すことができる。しかも、どのノードＡ〜Ｅでも同時に通信を行うようなことがない。
【０１６７】
上述した実施形態によれば、通信制御部１２が、宛先判定部１０によりデータ受信部４が受信した通信フレーム５０が自身宛と判定された場合、最大ホップ数格納部９に格納された最大ホップ数と、データ受信部４が受信した通信フレーム５０に含まれたホップ数５３に通信経路テーブル８に格納された宛先へのホップ数を加算した総ホップ数と、を比較し、総ホップ数が最大ホップ数と同じ値である場合は自身に接続されたアプリケーションにデータ受信部４が受信した通信フレーム５０の通信データ５４を送信し、総ホップ数が最大ホップ数よりも小さい場合は、最大ホップ数から総ホップ数を減算した時間分通信フレーム５０を待機させてからアプリケーションに送信させるように制御している。
【０１６８】
つまり、各通信ノード２０から送信データ５４を送信してからアプリケーションに届けるまでの時間をメッシュネットワークの最大通信時間に合わせるようにしているので、中継数が異なってもアプリケーションへの通信データ５４の到達順がデータの発生順と異なることがなくなる。また、到達した通信データ５４を処理するシステム、装置、ソフトウェアなどのアプリケーションでは通信データ５４の順序を管理する必要がなくシンプルに構成できる。
【０１６９】
また、上述した実施形態によれば、通信確認部１３が、他の通信ノード２０から送信された受信要求及び自通信ノード２０から送信した受信要求に含まれる残ホップ数のうち最も残ホップ数が少ない通信フレーム５０を最優先フレームとして判定し、受信要求を送信した後に、通信可の通知を受け取るとデータ送信部６に通信フレーム５０を宛先または中継先の通信ノード２０へ送信させ、通信不可の通知を受け取ると通信可通知を受け取るまで受信要求の送信を繰り返させる。
【０１７０】
従って、通信ノード２０に同時に複数の送信、受信を行わせたり、送信と受信とを同時に行わせることがなくなり、各通信ノード２０に複数の通信Ｉ／Ｆ２を持たせなくてもアプリケーションへの通信データ５４の到達順が通信データ５４の発生順とすることができる。
【０１７１】
また、上述した実施形態によれば、通信確認部１３が、他の通信ノード２０から送信された受信要求に含まれる残ホップ数と自通信ノード２０により送信した受信要求に含まれる残ホップ数とが同じであった場合、自通信ノード２０により送信した受信要求に対応する通信フレーム５０を最優先フレームとして判定するので、自通信ノード２０が送信した受信要求に含まれる残ホップ数及び他の通信ノード２０から受信した受信要求に含まれる残ホップ数が同じであった場合でも最優先フレームを判定することができる。
【０１７２】
また、上述した実施形態によれば、通信確認部１３が、他の通信ノード２０から受信した受信要求のみが複数あり、全て同じ残ホップ数であった場合、もしくは、自通信ノード２０により送信する受信要求のみが複数あり、全て同じ残ホップ数であった場合、送信元情報５１に基づいて最優先フレームを判定するので、他の通信ノード２０から受信した受信要求のみが複数あり、全て同じ残ホップ数であった場合、もしくは、自通信ノード２０により送信する受信要求のみが複数あり、全て同じ残ホップ数であった場合でも最優先フレームを判定することができる。
【０１７３】
また、上述した実施形態によれば、通信フレーム５０に、送信元の通信ノード２０により送信されてから経過した通信時間として、送信元の通信ノード２０により送信されてから中継されたホップ数５３が、含まれており、最大ホップ数格納部９に、メッシュネットワークにおける最大通信時間としてメッシュネットワークにおける最大ホップ数が予め格納され、通信経路テーブル８に、自身からメッシュネットワークに接続されている全ての他の通信ノード２０への通信時間として、自身からメッシュネットワークに接続されている全ての他の通信ノード２０へのホップ数が予め格納されている。これにより、中継数が異なっても通信データ５４の到達順が通信データ５４の発生順と異なることがなくなる。
【０１７４】
また、上述した実施形態によれば、通信確認部１３が、通信可の通知を受け取ると、通信フレーム５０に含まれるホップ数５３をインクリメントして、データ送信部６に通信フレーム５０を宛先または中継先の通信ノード２０へ送信させるので、ホップ数５３の調整を行うことができる。また、通信確認部１３が、通信不可の通知を受け取ると、通信フレーム５０に含まれるホップ数５３をインクリメントして自身宛に通信フレーム５０を送信させるので、内部での仮想的な送受信の回数でホップ数５３の調整ができ、シンプルな構成で通信時間をカウントすることができる。
【０１７５】
また、上述した実施形態によれば、通信確認部１３が、総ホップ数が最大ホップ数よりも小さい場合は、通信フレーム５０のホップ数５３をインクリメントして自身宛に通信フレーム５０を送信させるので、内部での仮想的な送受信の回数でホップ数５３の調整ができ、シンプルな構成で通信時間をカウントすることができる。
【０１７６】
なお、上述した実施形態によれば、データ固有のＩＤとして送信元情報５１を用いていたが、本発明はこれに限ったものはない。例えば、通信データ５４の種類など他の情報であってもよい。
【０１７７】
また、上述した実施形態によれば、送信元情報５１、宛先情報５２、ホップ数５３は、通信フレーム５０の先頭に位置しているが、本発明はこれに限定されるものではない。通信ネットワーク１を構成する各通信ノード２０が共通の認識を持ってその配置を決めることができる。また、通信フレーム５０には、通信データ５４の送信元情報５１と宛先情報５２、ホップ数５３のほかに、中継を用いる宛先情報を格納する場所をいれて、通信の中継の処理を行いやすくしてもよい。
【０１７８】
また、上述した実施形態では、通信フレーム５０を送信する前に通信相手となる通信ノード２０との通信可否確認を行う手順を示しているが、この方法についてはこれに限定するものではない。例えば、特開２００２−１１１７７３号公報や、ＷＯ２００８／０９３４２４などの方法を利用してもよい。
【０１７９】
また、上述した実施形態によれば、各通信ノード２０間の通信速度が同じであるという前提で、通信フレーム５０を他の通信ノード２０又は自ノード２０に送信する際に、ホップ数５３を１だけインクリメントしていた。しかしながら、本発明はこれに限ったものではない。例えば、各通信ノード２０間の通信速度が異なる通信システム１にも適用することができる。
【０１８０】
この場合、通信フレーム５０を送信するときに、送信側の通信ノード２０−受信側の通信ノード２０間の通信速度に合わせた数だけホップ数５３をインクリメントするればよい。具体的には、通信速度が２Ｍｂｐｓの場合には１１カウント、通信速度が１１Ｍｂｐｓの場合には２カウント、ホップ数５３をインクリメントすればよい。
【０１８１】
また、前述した実施形態は本発明の代表的な形態を示したに過ぎず、本発明は、実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【符号の説明】
【０１８２】
１    通信システム
４    データ受信部（受信手段）
６    データ送信部（送信手段）
８    通信経路テーブル（通信条件格納手段）
９    最大ホップ数格納部（通信条件格納手段）
１０  宛先判定部（宛先判定手段）
１２  通信制御部（第１通信制御手段）
１３  通信確認部（受信要求送信手段、優先度判定手段、通信確認手段、第２通信制御手段）
２０  通信ノード
５３  ホップ数（送信元の通信ノードにより送信されてから経過した通信時間、送信もとの通信ノードにより送信されてから中継された通信ノードの中継数）
【図１】
0005469028.tif 000002
【図２】
0005469028.tif 000003
【図３】
0005469028.tif 000004
【図４】
0005469028.tif 000005
【図５】
0005469028.tif 000006
【図６】
0005469028.tif 000007
【図７】
0005469028.tif 000008
【図８】
0005469028.tif 000009
【図９】
0005469028.tif 000010
【図１０】
0005469028.tif 000011
【図１１】
0005469028.tif 000012
【図１２】
0005469028.tif 000013
【図１３】
0005469028.tif 000014
【図１４】
0005469028.tif 000015
【図１５】
0005469028.tif 000016
【図１６】
0005469028.tif 000017