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