第1実施形態
以下、本発明の通信システムを図1乃至図8を参照して説明する。本発明の通信システム1は、図1に示すように、複数の通信ノード20(ノードA、ノードB、ノードC、ノードD)を有して構成され、これらのノードA〜Dは無線メッシュネットワークを構成している。
図1に示した通信システム1において、ノードAはノードB、Cと相互に無線通信可能に配置されている。ノードBはノードA、C、Dと相互に無線通信可能に配置されている。ノードCはノードA、B、Dと相互に無線通信可能に配置されている。ノードDはノードB、Cと相互に無線通信可能に配置されている。
これらノードA〜Dは、直接通信データ、ACK(=受信通知)/NCK、代理通信データ、代理通信完了通知などの信号の授受を行っている。直接通信データは、データの送信要求があったノードA〜Dから送信される。ACKは、自ノード宛の直接通信、代理通信データ又は代理通信完了通知を正常に受信したノードA〜Dから送信される。NCKは、自ノード宛の直接通信、代理通信データ又は代理通信完了通知を正常に受信できなかったノードA〜Dから送信される。
代理通信データは、自ノード宛でない直接通信データを受信し、その後、所定時間以内にACKを受信できない、または、NCKを受信したノードA〜Dから送信される。代理通信データには、受信した自ノード宛でない直接通信データ内のデータが含まれる。代理通信完了通知は、代理通信データを送信した後に、ACKを受信したノードA〜Dから送信される。
上記直接通信データ、代理通信データ、代理通信完了通知のフレーム構成は、図2に示すようになっている。この送信元アドレスAs2には、データ送信要求が発生したノードのアドレスが格納され、送信先アドレスAr2には、テータ送信の目的ノードのアドレスが格納される。送信元アドレスAs1及び送信先アドレスAr1は、実際の通信の送信元、送信先ノードのアドレスが格納される。
即ち、直接通信データにおいては、送信元アドレスAs1にはデータ送信要求が発生したノードのアドレスが格納され、送信先アドレスAr1には目的ノードのアドレスが格納される。また、代理通信データにおいては、送信元アドレスAs1には代理通信データの送信ノードのアドレスが格納され、送信先アドレスAr1には目的ノードのアドレスが格納される。代理通信完了通知においては、送信元アドレスAs1には代理通信完了通知の送信ノードのアドレスが格納され、送信先アドレスAr1にはデータ送信要求が発生したノードのアドレスが格納される。
また、通信種別Sには、直接通信データである旨を示す直接通信マーカー、代理通信データである旨を示す代理通信マーカー、代理通信完了通知である旨を示す代理通信完了通知マーカーが格納される。データDには、アプリケーションから発生したデータが格納される。エラーチェックコードには、CRCコードなど通信フレームの正常を確認するためのチェックコードが格納される。
次に、上記通信ノード20の構成について図3を参照して以下説明する。同図に示すように、通信ノード20は、他の通信ノード20と無線通信を行うためのアンテナATと、直接通信バッファ21と、代理通信バッファ22と、代理通信完了通知バッファ23と、通信ノード20全体の制御を司るマイクロコンピュータ(以下マイコン)24と、を備えている。
直接通信バッファ21は、直接通信データが一時的に格納されるバッファである。代理通信バッファ22は、代理通信データが一時的に格納されるバッファである。代理通信完了通知バッファ23は、代理通信完了通知が一時的に格納されるバッファである。
マイコン24は、例えばRAM(Randam Access Memory)やROM(Read Only Memory)などのメモリを備えたCPU(Central Processing Unit)で構成されている。マイコン24は、通信ユニット24Aと、インタフェース(以下I/F)24Bと、直接通信データ作成機能24Cと、宛先判別機能24Dと、通信種別判別機能24Eと、代理通信データ作成機能24Fと、代理通信完了通知作成機能24Gと、バッファ確認機能24Hと、送信要求機能24Iと、ACK有無確認機能24Jと、バックオフ延長機能24Kなどを備えている。
上記通信ユニット24Aは、アンテナATを制御して、信号の送受信を行う。I/F24Bは、アプリケーションと接続するためのインタフェースである。直接通信データ作成機能24Cは、アプリケーションからデータの送信要求が発生すると、データを含んだ直接通信データを作成して直接通信バッファ21に格納する。
宛先判別機能24Dは、アンテナATが受信した信号の宛先を判別する。通信種別判別機能24Eは、アンテナATが受信した信号の種別を判別する。通信種別判別機能24Eは、具体的には、受信した信号が直接通信データであるか、代理通信データであるか、通信完了通知であるか、ACKであるか、NCKであるかを判別する。
代理通信データ作成機能24Fは、自ノード宛でない直接通信データを受信し、その後、ACKを受信できなかった場合(即ち所定時間以内にACKを受信できないか、NCKを受信した場合)、受信した直接通信データに含まれるデータを含んだ代理通信データを代理通信バッファ22に格納する。
代理通信完了通知作成機能24Gは、代理通信データを送信した後に、ACKを受信すると、代理通信完了通知を作成して、代理通信完了通知バッファ23に格納する。バッファ確認機能24Hは、各バッファ21〜23の状態を確認し、それぞれに直接又は代理通信データや代理通信完了通知が格納されているか否かを判別する。送信要求機能24Iは、バッファ確認機能24Hにより格納されていると判別されたバッファ21〜23内の直接又は代理通信データや通信完了通知の送信要求を通信ユニット24Aに送って、無線送信させる。
上記通信ユニット24Aは、通信衝突回避手段としての通信衝突回避機能24A1を有している。通信衝突回避機能24A1は、所謂CSMA/CA処理を行っており、各ノードA〜Dの通信が衝突しないように、送信要求機能24Iから送信要求があったときにすぐに、送信しないで、電波が検出されていない状態が所定時間継続するのを待つ。さらに、通信衝突回避機能24A1は、バックオフ時間経過するまでの間に電波を検出しなかったときに始めて送信を行う。バックオフ時間はランダムな時間に設定されている。ただし、ACKを送るときのバックオフ時間は最小(例えば0)に設定され、優先的に送信できるようになっている。また、直接通信データを再送するときのバックオフ時間は最大に設定され、優先度が最も低くなっている。
AKC有無確認機能24Jは、自ノード宛でない代理通信データを受信した後、ACKを受信したか否かを確認する。バックオフ延長機能24Kは、AKC有無確認機能24Jにより、ACKを受信し、かつ、その自ノード宛でない代理通信データと同じ代理通信データを代理通信バッファ22に保有している場合、バックオフ時間を延長する。
次に、上述した通信システム1の動作について図4を参照して以下説明する。マイコン24は、電源オンに応じて図4に示す送信処理を実行する。送信処理において、マイコン24は、まずアプリケーションからデータ送信要求があるか否かを判別する(ステップS1)。データ送信要求がある場合(ステップS1でY)、マイコン24は、アプリケーションからデータを取り込み、直接通信バッファ21のデータD(図2参照)に格納する(ステップS2)。
また、マイコン24は、直接通信バッファ21の送信元アドレスAs1及びAs2に、自ノードのアドレスを、送信先アドレスAr1及びAr2に、目的モードのアドレスを、通信種別Sに直接通信マーカーを格納する(ステップS3)。これにより直接通信バッファ21には、図2に示すフレーム構成の直接通信データが格納される。
その後、マイコン24は、直接通信手段として働き、直接通信バッファ21に格納された直接通信データの送信を行う(ステップS4)。その後、マイコン24は、所定時間以内にACKを受信すると(ステップS5でY)、通信成功と判断して、直接通信バッファ21をクリアにした後(ステップS8)、再びステップS1に戻る。これに対して、マイコン24は、所定時間以内にACKを受信できない、または、NCKを受信すると(ステップS5でN)、再送カウンタをカウントアップする(ステップS6)。その後、マイコン24は、再送カウンタが所定回数以下であれば(ステップS7でN)、直ちにステップS1に戻る。
直接通信バッファ21をクリアせずにステップS1に戻ると、直接通信バッファ21には直接通信データが格納された状態である。よって、マイコン24は、直接通信バッファ21に直接通信データが格納された状態であると判別して(ステップS9でY)、ステップS4に進む。このステップS4により、直接通信データが再送される。このステップS4〜S6を繰り返した結果、再送カウンタが所定回数を超えると(ステップS7でY)、マイコン24は、通信失敗として直接通信バッファ21をクリアして(ステップS8)、ステップS1に戻る。
また、マイコン24は、代理通信バッファ22に代理通信データが格納されていると(ステップS10でY)、第1代理通信手段として働き、その代理通信データの送信を行う(ステップS11)。マイコン24は、所定時間以内にACKを受信できない、又は、NCKを受信すると(ステップS12でN)、通信失敗と判断して代理通信バッファ22をクリアして(ステップS13)、ステップS1に戻る。
これに対して、マイコン24は、所定時間以内にACKを受信すると(ステップS12でY)、代理通信完了通知バッファ23に代理通信完了通知を格納する(ステップS14)。
ステップS14においてマイコン24は、詳しくは、代理通信完了通知バッファ23の送信元アドレスAs1に自ノードのアドレス、送信先アドレスAr1及び送信元アドレスAs2に代理通信データの送信元アドレスAs2(=データ送信要求ノードのアドレス)、送信先アドレスAr2に代理通信データの送信先アドレスAr2(=目的ノード)のアドレスを格納し、通信種別Sに代理通信完了通知マーカー、データDに代理通信データのデータDを格納する。これにより代理通信完了通知バッファ23には、図2に示すフレーム構成の代理通信完了通知が格納される。
ステップS1に戻ったときに、代理通信完了通知バッファ23に代理通信完了通知が格納されていると(ステップS15でY)、マイコン24は、第1代理通信完了通知手段として働き、代理通信完了通知バッファ23に格納された代理通信完了通知を送信する(ステップS16)。その後、マイコン24は、所定時間以内にACKを受信すると(ステップS17でY)、通信成功と判断して、代理通信バッファ22、代理通信完了通知バッファ23をクリアにして(ステップS20)、ステップS1に戻る。
一方、マイコン24は、所定時間以内にACKを受信できない、または、NCKを受信すると(ステップS17でN)、再送カウンタをカウントアップする(ステップS18)。その後、マイコン24は、再送カウンタが所定回数以下であれば(ステップS19でN)、直ちにステップS1に戻る。
代理通信完了通知バッファ23がクリアせずにステップS1に戻ると、代理通信完了通知バッファ23には直接通信データが格納された状態である。よって、マイコン24は、代理通信完了通知バッファ23に代理通信完了通知が格納された状態であると判別して(ステップS15でY)、ステップS16に進む。このステップS16により、代理通信完了通知が再送される。このステップS16〜S18を繰り返した結果、再送カウンタが所定回数を超えると(ステップS19でY)、マイコン24は、通信失敗として代理通信バッファ22、代理通信完了通知バッファ23をクリアして(ステップS20)、ステップS1に戻る。
また、マイコン24は、上記送信処理と並列に受信処理を行っている。次に、マイコン24の受信処理について、図5を参照して説明する。マイコン24は、ACK/NCKや送信元アドレスAs2が自ノードのデータ以外の信号を、アンテナATから受信すると、受信処理を開始する。受信処理において、マイコン24は、受信した信号の宛先(送信先アドレスAr1)が自ノード宛か否かを判定する(ステップS21)。
自ノード宛であれば(ステップS21でY)、マイコン24は、受信した信号が直接通信データ又は代理通信データであるか否かを判定する(ステップS22)。直接通信データ又は代理通信データであれば(ステップS22でY)、マイコン24は、そのエラーチェックコードからデータが正常に受信できたか否かを判定する(ステップS23)。
データが正常に受信できていれば(ステップS23でY)、マイコン24は、受信通知手段として働き、ACKを送信すると共にそのデータをアプリケーションに出力して(ステップS24)、受信処理を終了する。一方、データが正常に受信できなければ(ステップS23でN)、マイコン24は、NCKを送信して(ステップS25)、受信処理を終了する。
また、直接通信データ又は代理通信データでなければ(ステップS22でN)、マイコン24は、代理通信完了通知であるか否かを判定する(ステップS26)。代理通信完了通知であれば(ステップS26でY)、マイコン24は、通信成功と判断して、ACKを送信すると共に直接通信バッファ21をクリアした後(ステップS27)、受信処理を終了する。また、代理通信完了通知でもなければ(ステップS26でN)、マイコン24は何もせずに受信処理を終了する。
また、受信した信号が自ノード宛でなければ(ステップS21でN)、マイコン24は、直接通信データであるか否かを判別する(ステップS28)。マイコン24は、直接通信データであれば(ステップS28でY)、その後、所定時間以内にACKがあれば(ステップS29でY)、通信成功と判断して、何もせずに受信処理を終了する。これに対して、所定時間以内にACKがない、又は、NCKを受信すると(ステップS29でN)、マイコン24は、代理通信データを作成して代理通信バッファ22に格納した後(ステップS30)、受信処理を終了する。
ステップS30においてマイコン24は、詳しくは、代理通信バッファ22の送信元アドレスAs1に自ノードアドレス、送信元アドレスAs2に直接通信データの送信元アドレスAs2(=データ送信要求ノードのアドレス)、送信先アドレスAr1及びAr2に直接通信データの送信先アドレスAr2(=目的ノードのアドレス)を格納し、通信種別Sに代理通信マーカー、データDに直接通信データのデータDを格納する。これにより代理通信バッファ22には、図2に示すフレーム構成の代理通信データが格納される。
これに対して、直接通信データでなければ(ステップS28でN)、マイコン24は、受信した信号が代理通信データであるか否かを判定する(ステップS31)。マイコン24は、代理通信データであれば(ステップS31でY)、その後、所定時間以内にACKがあり、かつ、代理通信バッファ22に受信した代理通信データと同一のデータDを有する代理通信データが格納されていれば(ステップ32でY)、バックオフ時間延長手段として働きバックオフ時間を延長した後(ステップS33)、受信処理を終了する。これに対して、マイコン24は、所定時間以内にACKを受信できない、または、NCKを受信した場合(ステップS32でN)、何もせずに受信処理を終了する。
また、マイコン24は、直接通信データでも代理通信データでもなければ(ステップS31でN)、次に、代理通信完了通知であるか否かを判定する(ステップS34)。代理通信完了通知であれば(ステップS34でY)、マイコン24は、受信した代理通信完了通知と代理通信バッファ22に格納された代理通信データとのデータDに同じデータが格納されているか否かを判定する(ステップS35)。
同じデータが格納されていた場合(ステップS35でY)、マイコン24は、通信成功と判断して、送信停止手段として働き、代理通信バッファ22をクリアにして代理通信データの送信を停止した後(ステップS36)、受信処理を終了する。これに対して、同じデータが格納されていない場合(ステップS35でN)、マイコン24は、何もせずに受信処理を終了する。また、受信した自ノード宛でない信号が直接通信データでも、代理通信データでも、代理通信完了通知でもない場合(ステップS34でN)、マイコン24は、何もせずに受信処理を終了する。
次に、上述した通信システム1の動作について図6乃至図8のシーケンスを参照して以下説明する。まず、ノードAからノードBへのデータ送信要求が発生したときの通信システムの動作について図6を参照して説明する。以下の説明において、各ノードA〜Dが行う動作は、実際には各ノードA〜Dのマイコン24が実行する。
ノードAで、ノードBへのデータ通信要求が発生すると、ノードAでは、送信元アドレスAs1及びAs2をノードA、送信先アドレスAr1及びAr2をノードB、種別を直接通信とした直接通信データを作成して、アンテナATから送信する。
ノードAからの直接通信データは、ノードB及びノードCで受信される。ノードBは、自ノード宛の直接通信データを受信すると、受信した旨を示すACKを送信する。ノードBからのACKは、ノードA及びノードCで受信される。ノードAは、ノードBからACKを受信すると、通信が成功したと判断して、直接通信バッファ21をクリアして、直接通信データの再送を停止する。ノードCは、自ノード宛でない直接通信データを受信した後、ノードBからACKを受信すると特に何もしない。
次に、ノードAからノードDへのデータ送信要求が発生したときの通信システムの動作について図7を参照して説明する。ノードAで、ノードDへのデータ送信要求が発生すると、ノードAでは送信元アドレスAs1及びAs2をノードA、送信先アドレスAr1及びAr2をノードD、種別を直接通信とした直接通信データを作成して、アンテナATから送信する。
ノードAからの直接通信データは、ノードDでは受信できないが、ノードB及びノードCで受信される。ノードB及びノードCは、自ノード宛でない直接通信データを受信し、その後、AKCを受信できない場合、送信元アドレスAs1をノードB、C、送信元アドレスAs2をノードA、送信先アドレスAr1及びAr2をノードD、種別を代理通信とした代理通信データを作成して、代理通信バッファ22に格納する。このときノードB及びノードCは、代理通信データを送信しようとし、ノードAは、直接通信データを再送しようとする。
上述したように直接通信データの再送時のバックオフ時間は最長時間に設定されている。このときノードBのバックオフ時間が、ノードCのバックオフ時間より短ければ、ノードBが送信権を得て、ノードBが代理通信データを送信し、ノードA、ノードCは送信を保留する。もちろん、ノードCのバックオフ時間が、ノードBのバックオフ時間より短ければ、ノードCが送信権を得るが、ここではノードBが送信権を得た例について説明する。
ノードBからの代理通信データは、ノードA、ノードC及びノードDが受信する。ノードAは、代理通信データの送信元アドレスAs2が自ノードのアドレスであるため、特になにも行わない。ノードDは、自ノード宛の代理通信データを受信すると、ACKを送信しようとする。即ち、このときノードAは直接通信データを再送しようとし、ノードCは代理通信データを送信しようとし、ノードDはACKを送信しようとする。ACKのバックオフ時間が最短に設定されているので、ノードDが送信権を得て、ノードDからACKが送信される。
ノードDからのACKはノードB及びノードCに受信される。ノードBは、ACKを受信すると、送信元アドレスAs1をノードB、送信先アドレスAr1及び送信元アドレスAs2をノードA、送信先アドレスAr2をノードDとした代理通信完了通知を送信しようとする。ノードCは、ノードBからの代理通信データを受信した後にACKを受信すると、バックオフ時間を延長する。即ち、このときノードAは直接通信データを再送しようとし、ノードBは代理通信完了通知を送信しようとし、ノードCは代理通信データを送信しようとしている状態となっている。
上述したようにノードCのバックオフ時間は延長されているので、ノードBが再び送信権を得て、代理通信完了通知を送信する。ノードBの代理通信完了通知がノードAに届くと、ノードAは、ACKを送信すると共に直接通信バッファ21をクリアして直接通信データの再送を停止する。ノードCでは代理通信完了通知を受信すると、代理通信バッファ22をクリアして、代理通信データの送信をやめる。ノードBは、ノードAからのACKを受信すると、代理通信バッファ22及び代理通信完了通知バッファ23をクリアして、代理通信完了通知の再送を停止する。
次に、ノードBからノードDへの通信に障害が発生しているときに、ノードAからノードDへのデータ送信要求が発生したときの通信システムの動作について図8を参照して説明する。ノードAで、ノードDへのデータ送信要求が発生してからノードBが送信権を得て代理通信データを送信するまでは、図7と同じなので、説明を省略する。
ノードBからの代理通信データは、ノードDは受信できないが、ノードA及びノードCが受信する。ノードAは、代理通信データの送信元アドレスAs2が自ノードのアドレスであるため、特になにも行わない。ノードCは、代理通信データを受信した後、ACKを受信しないと、バックオフ時間の延長は行わない。また、ノードBは、代理通信データを送信した後、ACKを受信できないので、代理通信データをクリアする。このとき、ノードAは直接通信データの再送をしようとし、ノードCは代理通信データを送信しようとしている状態となっている。
上述したようにノードCのバックオフ時間は延長されていないので、ノードCが送信権を得て、代理通信データを送信する。ノードCからの代理通信データは、ノードA、ノードB及びノードDが受信する。ノードAは、代理通信データの送信元アドレスAs2が自ノードのアドレスであるため、特になにも行わない。ノードDは、自ノード宛の代理通信データを受信すると、ACKを送信する。
ノードDからのACKはノードCに受信される。ノードCは、ACKを受信すると、送信元アドレスAs1をノードC、送信先アドレスAr1及び送信元アドレスAs2をノードA、送信先アドレスAr2をノードDとした代理通信完了通知を送信する。ノードCの代理通信完了通知がノードAに届くと、ノードAはACKを送信すると共に直接通信データの再送を停止する。ノードCでは代理通信完了通知を受信すると、代理通信データを破棄し、代理通信データの送信をやめる。
上述した実施形態によれば、各ノードA〜Dは、目的ノードへのデータの送信要求が発生すると、目的ノード宛にデータを含んだ直接通信データを送信する。また、自ノード宛の直接又は代理通信データを受信したとき、受信した旨を示すACKを送信する。また、自ノード宛でない直接通信データを受信し、その後、ACKを受信できなかった場合、直接通信データに含まれるデータを含んだ代理通信データを送信する。さらに、代理通信データを送信した後に、ACKを受信すると、直接通信データの送信元宛に代理通信完了通知を送信する。これにより、目的ノードにデータを送信しながら中継経路が決定されるので、事前に経路を決定する必要がなく、目的ノードまで迅速にデータを送信することができる。
また、上述した実施形態によれば、各ノードA〜Dは、自ノード宛でない代理通信データを受信した後、ACKを受信し、かつ、受信した代理通信データと同じものを送信しようとしている場合、バックオフ時間が延長されるため、代理通信データの送信よりも、代理通信完了通知が優先的に送信される。そして、代理通信完了通知を受信すれば、代理通信を行う必要がないので、代理通信データの送信が停止される。これにより、無駄に代理通信データが送信されることなく、より一層、迅速にデータ通信を行うことができる。また、通信障害などで、代理通信データを送信したノードBが、目的ノードDからの受信通知を受信できず、延長したバックオフ時間が経過しても、代理通信完了通知が送信されない場合は、他のノードCから代理通信データ、代理通信完了通知を送信することができる。
しかも、代理通信データを送信したノードBから代理通信完了通知が受信できなかった場合、他のノードCから直ちに代理完了通知が送信されることなく、一旦、代理通信データが送信されてからACKを受けた後に代理完了通知を送信している。直ちに代理完了通知が送信されるようにすると、他のノードが複数あった場合、これら複数の他のノードから代理通信完了通知が送信されてしまう。さらには、代理通信完了通知はデータ通信が無事に行われたことを送信元ノードAに伝える通信であるため、リトライが認められているので、通信環境が悪化した場合、複数の他のノードからそれぞれリトライによる代理通信完了通知がされる恐れがある。
これに対して、本実施形態では、代理通信完了通知の送信タイミングを代理通信の成功時(ACKの受信)のみとしている。これにより、複数の他のノードのうち最初に代理通信データの送信権を得たものが優先的に代理通信完了通知を送信され、それ以外はバックオフ時間が延長されるため送信が後回しにされる。これにより、無駄に代理通信完了通知が送信されることがなくなる。
なお、上述した実施形態によれば、各ノードA〜Dは、自ノード宛でない代理通信データを受信し、その後ACKを受信した場合、バックオフ時間を延長していたが、直ちに代理通信バッファ22をクリアするようにしてもよい。
第2実施形態
以下、第2実施形態における本発明の通信システム1を図9〜図14を参照して説明する。第1実施形態では、直接通信データのみを他のノードが代理して通信しているだけであったが、第2実施形態では、これを代理通信データと代理通信完了通知にまで拡大し、これら代理通信データ及び代理通信完了通知も中継する。
直接通信データ、代理通信データ及び代理通信完了通知のフレーム構成は、第1実施形態と同様であるため、ここでは詳細な説明を省略する。
第2実施形態において各ノードA〜Dは、上述した直接通信データ、代理通信データ及び代理通信完了通知を受信したとき、図9に示すような動作を行う。まず、各ノードA〜Dが、自ノード宛でない(=送信先アドレスAr1が自ノードでない)直接通信データを受信した場合について説明する。各ノードA〜Dは、その後、所定時間内にACKを受信できないと、その直接通信データ内のデータDを含んだ代理通信データを代理通信バッファ22に格納する。これにより、次回の送信処理で代理通信データが送信される。
ただし、受信した直接通信データのデータDと同一のデータDを有する代理通信データ、代理通信完了通知がすでにバッファ22、23に格納されている場合、ノードA〜Dは、直接通信データを受信しても特に何も行わない。これにより、次回の送信処理でバッファ22、23に格納された代理通信データ、代理通信完了データが送信される。
また、各ノードA〜Dは、自ノード宛でない直接通信データを受信し、その後、所定時間以内にACKを受信したときは、特に何も行わない。
次に、ノードA〜Dが、自ノード宛でない代理通信データを受信した場合について説明する。このとき、所定時間以内にACKを受信できないと、ノードA〜Dは、代理通信データの送信元アドレスAs1を自ノードのアドレスに書き換えた新たな代理通信データを代理通信バッファ22に格納する。これにより、次回の送信処理で代理通信データが送信される。
ただし、受信した代理通信データのデータDと同一のデータDを有する代理通信データ、代理通信完了通知がすでにバッファ22、23に格納されている場合、ノードA〜Dは、代理通信データを受信しても特に何も行わない。これにより、次回の送信処理でバッファに格納された代理通信データ、代理通信完了通知が送信される。
これに対して、所定時間以内にACKを受信していれば、ノードA〜Dは、代理通信バッファ22に同一のデータDを有する代理通信データが格納されていれば、バックオフ時間を延長して、代理通信データの送信を遅延させる。一方、代理通信完了通知が格納されている場合、代理通信データを受信しても特に何も行わない。これにより、次回の送信処理でバッファ23に格納された代理通信完了通知が送信される。代理通信データも代理通信完了通知も格納していなければ、何も行わない。
次に、ノードA〜Dが、自ノード宛でない代理通信完了通知を受信し、その後、所定時間以内にACKを受信できない場合について説明する。このとき、受信した代理通信完了通知のデータDと同一のデータDを有する代理通信データが格納されている場合、ノードA〜Dは、その代理通信データを破棄(クリア)して、受信した代理通信完了通知の送信元ドレスAs1を自ノードのアドレスに書き換えた新たな代理通信完了通知を代理通信完了通知バッファ23に格納する。これにより、次回の送信処理で代理通信完了通知が送信される。
また、受信した代理通信完了通知のデータDと同一のデータDを有する代理通信完了通知がすでにバッファ23に格納されている場合、ノードA〜Dは、特に何も行わない。また、代理通信データも代理通信完了通知も格納されていない場合、ノードA〜Dは、代理通信完了通知を代理通信完了通知バッファ23に格納する。これにより、次回の送信処理で代理通信完了通知が送信される。
次に、ノードA〜Dが、自ノード宛でない代理通信完了通知を受信し、その後、所定時間以内にACKを受信した場合について説明する。このとき、受信した代理通信完了通知と同一のデータDを有する代理通信データ、代理通信完了通知が格納されている場合、ノードA〜Dは、その代理通信データ、代理通信完了を破棄する。
また、このとき各バッファ22、23に格納した代理通信データ及び代理通信完了通知は、格納してから第1所定時間Tw1(秒)経過後に、通信の状況や結果にかかわらずその代理通信データや代理通信完了通知を利用しないことにする。また、第1所定時間Tw1経過してからさらに第2所定時間Tw2(秒)経過するまでの間は、利用しなくなった代理通信データや代理通信完了通知と同じデータDを有する信号を受信しても、無視する。
次に、第2実施形態における通信ノードの構成について図10を参照して以下説明する。なお、同図において、上述した第1実施形態ですでに説明した図3に示す構成と同等の部分については同一符号を付してその詳細な説明を省略する。同図に示すように、マイコン24は、第1実施形態で説明した機能24C〜24Kに加えてさらに、時間計測管理機能24Lと、バッファ状態確認機能24Mと、代理通信完了通知作成機能24Nと、を備えている。
時間計測管理機能24Lは、代理通信データや代理通信完了通知をバッファ22、23に格納してからの経過時間を計測・管理する。バッファ状態確認機能24Mは、各バッファ21〜23の状態を確認し、それぞれに直接又は代理通信データや代理通信完了通知が格納されているか否かを判別する。代理通信完了通知作成機能24Nは、自ノード宛でない代理通信完了通知を受信し、その後、ACKを受信できず、かつ、受信した代理通信完了通知と同一の代理通信完了通知がなければ、代理通信完了通知を作成して、代理通信完了通知バッファ23に格納する。
なお、代理通信データ作成機能24Fは、第1実施形態での動作に加えて、自ノード宛でない代理通信データを受信し、その後、ACKを受信できず、かつ、受信した代理通信データと同一のデータDを有する代理通信データも代理通信完了通知も格納していなかった場合、受信した代理通信データに含まれるデータDを含んだ代理通信データを代理通信バッファ22に格納する。
次に、上述した通信システム1の動作について説明する。マイコン24は、電源オンに応じて送信処理及び受信処理を実行する。なお、第2実施形態における送信処理は、第1実施形態で説明した図4に示す送信処理と同様であるためここでは詳細な説明を省略する。
上述したマイコン24の受信処理について、図11を参照して説明する。なお、図11において、図5について上述した第1実施形態で説明した動作と同等の部分は同一符号を付してその詳細な説明を省略する。即ち、マイコン24は、ステップS11で第2代理通信手段としても働き、ステップS16で第2代理通信完了通史手段としても働く。
まず、マイコン24は、ACK/NCKや送信元アドレスAs2が自ノードのデータ以外の信号を、アンテナATから受信すると、受信処理を開始する。受信処理において、マイコン24は、受信した信号の宛先(送信先アドレスAr1)が自ノード宛か否かを判定する(ステップS21)。
自ノード宛であれば(ステップS21でY)、マイコン24は、第1実施形態と同様に、ステップS22〜S27を行う。また、受信した信号が自ノード宛でなければ(ステップS21でN)、マイコン24は、第1所定時間Tw1をカウントするタイマーT1が動作中であるか否かを判定する(ステップS40)。
タイマーT1が動作中であれば(ステップS40でY)、マイコン24は、バッファ22、23に代理通信データ、代理通信完了通知が格納されてから第1所定時間Tw1が経過していないと判断して、ステップS28に進む。一方、タイマーT1が動作中でなければ(ステップS40でN)、マイコン24は、第2所定時間Tw2をカウントするタイマーT2が動作中であるか否かを判定する(ステップS41)。
タイマーT2が動作中であれば(ステップS41でY)、上記第1所定時間Tw1が経過した後であり、その後、第2所定時間Tw2が経過していない状態である。このとき、マイコン24は、バッファ22、23に格納された代理通信データ又は代理通信完了通知データのデータDと、受信した信号のデータDと、を比較する。比較した結果、同じものであれば(ステップS42でY)、受信処理を終了して、受信した信号を無視する。同じものでなければ(ステップS42でN)、ステップS28に進む。
ステップS28において、マイコン24は、受信した信号が直接通信データであるか否かを判別する(ステップS28)。マイコン24は、直接通信データである場合(ステップS28でY)、その後、所定時間以内にACKがあれば(ステップS29でY)、通信成功と判断して、何もせずに受信処理を終了する。これに対して、所定時間以内にACKがない、又は、NCKを受信すると(ステップS29でN)、マイコン24は、受信した直接通信データのデータDと同一のデータDを有する代理通信データ又は代理通信完了通知がバッファ22、23に格納されているか否かを判定する(ステップS43)。
同一のデータDを有する代理通信データ又は代理通信完了通知が格納されていれば(ステップS43でY)、マイコン24は、受信処理を終了する。これに対して、同一のデータDを有する代理通信データ又は代理通信完了通知が格納されていなければ(ステップS43でN)、マイコン24は、代理通信データを作成して代理通信バッファ22に格納し(ステップS30)、第1所定時間Tw1をカウントするタイマーT1をスタートさせた後(ステップS44)、受信処理を終了する。
また、受信した信号が直接通信データでなければ(ステップS28でN)、マイコン24は、代理通信データであるか否かを判定する(ステップS31)。マイコン24は、代理通信データであれば(ステップS31でY)、その後、所定時間内にACKがあるか否かを判別する(ステップS45)。所定時間内にACKがあれば(ステップS45でY)、マイコン24は、代理通信バッファ22に受信した代理通信データと同一のデータDを有する代理通信データが格納されていれば(ステップS46でY)、バックオフ時間を延長した後(ステップS33)、受信処理を終了する。同一のデータDを有する代理通信データが格納されていなければ(ステップS46でN)、マイコン24は、直ちに受信処理を終了する。
これに対して、マイコン24は、所定時間以内にACKを受信できない、または、NCKを受信した場合(ステップS45でN)、受信した代理通信データのデータDと同一のデータDを有する代理通信データ又は代理通信完了通知がバッファ22、23に格納されているか否かを判定する(ステップS47)。同一のデータDを有する代理通信データ、代理通信完了通知が格納されていれば(ステップS47でY)、マイコン24は、受信処理を終了する。
これに対して、代理通信データ、代理通信完了通知が格納されていなければ(ステップS47でN)、マイコン24は、受信した代理通信データの送信元アドレスAs1を自ノードのアドレスに書き換えた新たな代理通信データを代理通信バッファ22に格納する(ステップS48)。その後、マイコン24は、タイマーT1をスタートさせた後(ステップS49)、受信処理を終了する。
また、受信した信号が代理通信完了通知であれば(ステップS34でY)、マイコン24は、所定時間以内にACKがあるか否かを判定する(ステップS50)。所定時間以内にACKがあれば(ステップS50でY)、マイコン24は、受信した代理通信完了通知と同一のデータDを有する代理通信データがバッファ22に格納されているか否かを判定する(ステップS51)。
同じデータDを有する代理通信データが格納されていた場合(ステップS51でY)、マイコン24は、通信成功と判断して、代理通信バッファ22をクリアにして代理通信データの送信を停止する(ステップS52)。その後、マイコン24は、第1所定時間Tw1をカウントするタイマーT1を停止して(ステップS53)、受信処理を終了する。
これに対して、同じデータDを有する代理通信データが格納されていない場合(ステップS51でN)、マイコン24は、受信した代理通信完了通知と同じデータDを有する代理通信完了通知がバッファ23に格納されているか否かを判定する(ステップS54)。同じデータDを有する代理通信完了通知が格納されていた場合(ステップS54でY)、マイコン24は、代理通信完了通知バッファ23をクリアにして代理通信完了通知の送信を停止した後(ステップS55)、ステップS53に進む。一方、同じデータDを有する代理通信完了通知が格納されていなかった場合(ステップS54でN)、マイコン24は、直ちに受信処理を終了する。
代理通信完了通知を受信してから(ステップS34でY)、所定時間以内にACKを受信できない、または、NCKを受信した場合(ステップS50でN)、マイコン24はステップS56に進む。ステップS56において、マイコン24は、受信した代理通信完了通知と同じデータDを有する代理通信データが代理通信バッファ22に格納されているか否かを判定する(ステップS56)。
同じデータDを有する代理通信データが格納されていた場合(ステップS56でY)、マイコン24は、代理通信バッファ22をクリアして(ステップS57)、代理通信データの送信を停止する。その後、マイコン24は、代理通信完了通知バッファ23に受信した代理通信完了通知の送信元アドレスAs1を自ノードアドレスに書き換えて格納した後(ステップS58)、タイマーT1をスタートさせて(ステップS59)、受信処理を終了する。
一方、同じデータDを有する代理通信データが格納されていない場合(ステップS56でN)、マイコン24は、同じデータDを有する代理通信完了通知が代理通信完了通知バッファ23に格納されているか否かを判定する(ステップS60)。同じデータDを有する代理通信完了通知が代理通信完了通知バッファ23に格納されていた場合(ステップS60でY)、マイコン24は、直ちに受信処理を終了する。格納されていなかった場合(ステップS60でN)、マイコン24は、ステップS58に進む。
また、マイコン24は、送信処理及び受信処理と並列にタイマーT1、T2を制御するタイマー処理を行っている。このマイコン24のタイマー処理について、図12を参照して説明する。タイマーT1は、上述した受信処理で説明したように、バッファ22、23に代理通信データ、代理通信完了通知が格納されたときに、スタートされる。タイマー処理において、マイコン24は、このタイマーT1を監視し、そのカウント値が第1所定時間Tw1を超えているか否かを判定する(ステップS70)。
第1所定時間Tw1を超えていれば(ステップS70でY)、マイコン24は、タイマーT1を停止させると共に、タイマーT2をスタートさせる(ステップS71)。その後、マイコン24は、バッファ22、23に格納されている代理通信データ、代理通信完了通知に送信禁止フラグを立てる(ステップS72)。
上述した送信処理において、マイコン24は、バッファ22、23に代理通信データ、代理通信完了通知が格納されていても、送信禁止フラグが立っている場合、格納されていないものとみなし、これらを送信しない。これにより、代理通信データ、代理通信完了通知がバッファ22、23に格納されてから第1所定時間Tw1経過後は送信できないようにする。
また、タイマーT2がスタートされた後、同じデータDを有する信号を受信すると、受信処理のステップS42においてYと判別される。これにより、第1所定時間Tw1経過してからさらに第2所定時間Tw2経過するまでの間は、利用しなくなった代理通信データや代理通信完了通知と同じデータDを有する信号を受信しても、無視する。
送信禁止フラグを立てた後(ステップS72)、マイコン24は、タイマーT2を監視し、そのカウント値が第2所定時間Tw2を超えているか否かを判定する(ステップS74)。第2所定時間Tw2を超えると(ステップS72でY)、マイコン24は、代理通信バッファ22、代理通信完了通知バッファ23をクリアにした後(ステップS74)、ステップS70に進む。
次に、上述した通信システム1のノードA〜D間で行われる信号の授受について具体的な一例を挙げて説明する。通信システム1は、図13に示すような構成とする。即ち、ノードAは、ノードBと相互に無線通信可能に配置されている。ノードBは、ノードA、ノードCと相互に無線通信可能に配置されている。ノードCは、ノードB、ノードDと相互に無線通信可能に配置されている。ノードDは、ノードCと相互に無線通信可能に配置されている。
まず、ノードA〜ノードDへのデータ送信要求が発生したときの通信システム1の動作について図14を参照して説明する。ノードAで、ノードDへのデータ通信要求が発生すると、ノードAは、直接通信データを送信する。
ノードAからの直接通信データは、ノードDには届かずにノードBが受信する。ノードBは、その後、ACKを受信できないので、代理通信データを作成して、代理通信バッファ22に格納する。これにより、ノードAが直接通信データ、ノードBが代理通信データを格納する状態となり、ノードAが再送、ノードBが1回目の送信を行おうとする。再送のバックオフ時間は、第1実施形態で説明した通り、最長時間に設定されている。よって、ノードBが送信権を得て、ノードBが代理通信データの送信を行う。他のノードA、C、Dは送信を保留する。
ノードBから送信された代理通信データは、ノードDには届かずノードCが受信する。ノードCは、その後、ACKを受信できないので、代理通信データを作成して、代理通信バッファ22に格納する。これにより、ノードAが直接通信データ、ノードBが代理通信データ、ノードCが代理通信データを格納する状態となり、ノードA、Bが再送、ノードCが1回目の送信を行おうとする。よって、ノードCが送信権を得て、ノードCが代理通信データの送信を行う。他のノードA、B、Dは送信を保留する。
ノードCから送信された代理通信データは、ノードDに受信され、ノードDがACKをノードCに送信する。このとき、ノードDでは、ノードAからのデータを受信できたと判断される。ノードCでは、ノードDからのACKを受信すると、代理通信が成功したと判断し、代理通信データを破棄して、代理通信完了通知を格納する。これにより、ノードAが直接通信データ、ノードBが代理通信データ、ノードCが代理通信完了通知を格納する状態となり、ノードA、Bが再送、ノードCが1回目の送信を行おうとする。よって、ノードCが送信権を得て、ノードCが代理通信完了通知の送信を行う。
ノードCから送信された代理通信完了通知は、ノードAには届かずノードBが受信する。ノードBは、その後、ACKを受信できないので、代理通信データを破棄して、代理通信完了通知を格納する。これにより、ノードAが直接通信データ、ノードB、Cが代理通信完了通知を格納する状態となり、ノードA、Cが再送、ノードBが1回目の送信を行おうとする。よって、ノードBが送信権を得て、ノードBが代理通信完了通知の送信を行う。
ノードBから送信された代理通信完了通知は、ノードAに届き、ノードAからACKがノードBに送信される。このとき、ノードAでは、通信が完了したと判断して、以後の再送処理をキャンセルする。ノードBでは、ACKを受信すると、代理通信完了通知を破棄する。ノードCでは、ノードBから代理通信完了通知を受信すると、代理通信完了通知を破棄する。
上述した第2実施形態によれば、代理通信データや代理通信完了通知も複数のノードを中継して送信できるようになる。
第3実施形態
以下、第3実施形態における本発明の通信システム1について図15を参照して説明する。第3実施形態は、第2実施形態の変形例である。図15に示す通信システム1において、ノードAは、ノードBと無線通信可能に配置されている。ノードBは、ノードC、Dと無線通信可能に配置されている。ノードCは、ノードB、Dと無線通信可能に配置されている。ノードDは、ノードB、C、Eと無線通信可能に配置されている。ノードEは、ノードDと無線通信可能に配置されている。
第2実施形態において、中継ノードは、他のノードからの代理通信完了通知を受信したときに、その受信した代理通信完了通知のデータDと同じ代理通信データを格納している場合、代理通信完了通知を送信するようにしていた。即ち、代理通信完了通知を送信元のノードに送り返す際のルートを決めていなかった。このため、図15に示す通信システム1においては下記に示すような問題が発生する恐れがあった。図15に示す通信システム1では、ノードAからノードEへの通信は、ノードB、Dを中継してノードEに届き、代理通信完了通知もノードB、Dを中継してノードAに送り返される。
しかしながら、ノードCではノードBからの代理通信データを受信し、ノードDからの代理通信完了通知が受信できるため、ノードCからも代理通信完了通知が送信され、通信状況に変化がない場合は無駄な通信となっていた。そこで、第3実施形態では、目的ノードまで代理通信したノードのリストを代理通信データに付加して、リストの逆の順番に代理通信完了通知を送信する。通信事情が変わり、リストに沿って代理通信完了通知を送信できない場合は、第2実施形態と同様に代理通信完了通知を送信する。
第3実施形態の直接通信データ、代理通信データ、代理通信完了通知のフレーム構成は、図16に示すようになっている。第3実施形態においては、代理通信リストLが追加されている。代理通信リストLには、代理通信を行った中継ノードがそのルートが分かるように順番に格納される。
次に、上記通信ノード20(ノードA〜E)の構成について図17を参照して以下説明する。なお、同図において、上述した第2実施形態ですでに説明した図10に示す構成と同等の部分については同一符号を付してその詳細な説明を省略する。同図に示すように、マイコン24は、第2実施形態で説明した機能24C〜24Mに加えてさらに、リスト作成機能24Oと、リスト確認機能24Pと、を備えている。
リスト作成機能24Oは、自ノード宛でない(送信先アドレスAr1が自ノードでない)直接通信データ又は代理通信データを受信した場合に、その送信元アドレスAs1を受信に応じてバッファ22に格納した代理通信データの代理通信リストLの末尾に追加する。リスト確認機能24Pは、バッファ23に格納した代理通信完了通知の代理通信リストLに従って代理通信完了通知を送信する。
次に、上述した通信システム1の動作について説明する。マイコン24は、電源オンに応じて送信処理及び受信処理を実行する。第3実施形態における送信処理は、第1実施形態で説明した図4に示す送信処理と同等である。第1実施形態と大きく異なる点は、ステップS14での処理である。
第1及び第2実施形態においては、マイコン24は、送信先アドレスAr1にステップS11で送信した代理通信データの送信元アドレスAs2を格納していたが、第3実施形態では異なる。第3実施形態においては、マイコン24は、ステップS11で送信した代理通信データの代理通信リストLを確認し、その末尾に格納されたノードのアドレスを送信先アドレスAr1(=中継先ノード)に格納する。その他は、第1及び第2実施形態と同等であるため、ここでは詳細な説明を省略する。上記代理通信リストLの末尾に格納されたノードは、自ノードの前に代理通信データを送信したノードである。
上述したマイコン24の受信処理について、図18を参照して以下説明する。マイコン24は、ACK/NCKや送信元アドレスAs2が自ノードのデータ以外の信号を、アンテナATから受信すると、受信処理を開始する。受信処理において、マイコン24は、受信した信号の宛先(送信先アドレスAr1)が自ノード宛か否かを判定する(ステップS21)。
受信した信号の宛先が自ノード宛でなかった場合(ステップS21でY)、マイコン24は、第2実施形態と同様に、ステップS40〜S42、S28〜S34、S43〜S60を行う。第2実施形態と異なる点は、代理通信バッファ22に代理通信データを格納する際に、その代理通信リストLの末尾に自ノードのアドレスを追加する点である(ステップS83、S84)。その他は、第2実施形態と同様であるため、ここでは詳細な説明を省略する。これにより、代理通信データの代理通信リストLには、その代理通信の中継ノードが順番が分かるように格納される。
一方、自ノード宛であれば(ステップS21でN)、マイコン24は、受信した信号が直接通信データ又は代理通信データであるか否かを判定する(ステップS22)。直接通信データ又は代理通信データであれば(ステップS22でY)、マイコン24は、第1及び第2実施形態と同様に、ステップS23〜S25を行う。
また、直接通信データ又は代理通信データでなければ(ステップS22でN)、マイコン24は、代理通信完了通知であるか否かを判定する(ステップS26)。代理通信完了通知であれば(ステップS26でY)、マイコン24は、送信元アドレスAs2が自ノードであるか否かを判定する(ステップS80)。送信元アドレスAs2が自ノードであれば(ステップS80でY)、マイコン24は、代理通信完了通知の通信成功と判断して、ACKを送信すると共に直接通信バッファ21をクリアした後(ステップS27)、受信処理を終了する。
これに対して、マイコン24は、送信元アドレスAr2が自ノードでなければ(ステップS80でN)、受信した代理通信完了通知の代理通信リストLの末尾に格納された自ノードのアドレスを削除する(ステップS81)。その後、マイコン24は、受信した代理通信完了通知の送信先アドレスAr1を代理通信リストLの末尾のアドレスにし、送信元アドレスAs1を自ノードアドレスにして、代理通信完了通知バッファ23に格納した後(ステップS82)、受信処理を終了する。また、代理通信完了通知でもなければ(ステップS26でN)、マイコン24は何もせずに受信処理を終了する。
次に、上述した通信システム1の動作について図19のシーケンスを参照して以下説明する。まず、ノードAからノードBへのデータ送信要求が発生したときの通信システムの動作について図19を参照して説明する。以下の説明において、各ノードA〜Dが行う動作は、実際には各ノードA〜Eのマイコン24が実行する。
ノードAで、ノードEへのデータ通信要求が発生すると、ノードAでは、直接通信データを送信する。この直接通信データは、送信元アドレスAs1及びAs2がノードA、送信先アドレスAr1及びAr2をノードD、種別Sを直接通信とし、代理通信リストLがブランクとなっている。
ノードAからの直接通信データは、ノードEには届かずにノードBが受信する。ノードBは、その後、ACKを受信できないので、代理通信データを作成して、代理通信バッファ22に格納する。この代理通信データは、送信元アドレスAs1がノードB、送信元アドレスAs2がノードA、送信先アドレスAr1及びAr2がノードE、種別Sが代理通信、代理通信リストLがノードBとなっている。これにより、ノードAが直接通信データ、ノードBが代理通信データを格納する状態となり、ノードAが再送、ノードBが1回目の送信を行おうとする。再送のバックオフ時間は、第1実施形態で説明した通り、最長時間に設定されている。よって、ノードBが送信権を得て、ノードBが代理通信データの送信を行う。他のノードA、C〜Eは送信を保留する。
ノードBから送信された代理通信データは、ノードEには届かずノードC及びDが受信する。ノードC及びDは、その後、ACKを受信できないので、代理通信データを作成して、代理通信バッファ22に格納する。このとき、ノードC、Dが格納する代理通信データはそれぞれ、送信元アドレスAs1がノードC、D、送信元アドレスAs2がノードA、送信先アドレスAr1及びAr2がノードE、種別Sを代理通信、代理通信リストLの末尾にノードC、Dがそれぞれ追加されている。これにより、ノードAが直接通信データ、ノードB〜Dが代理通信データを格納する状態となり、ノードA、Bが再送、ノードC、Dが1回目の送信を行おうとする。
このとき、ノードCのバックオフ時間が、ノードDのバックオフ時間より短ければ、ノードCが送信権を得て、ノードCが代理通信データを送信し、ノードA、ノードB及びノードDは送信を保留する。もちろん、ノードDのバックオフ時間が、ノードCのバックオフ時間より短ければ、ノードDが送信権を得るが、ここではノードCが送信権を得た例について説明する。
ノードCからの代理通信データは、ノードEには届かずノードDが受信する。ノードDは、すでに同じデータDを有する代理通信データを保有しているので何もしない。これにより、ノードA〜Cが再送、ノードDが1回目の送信を行おうとする。よって、ノードDが送信権を得てノードDが代理通信データの送信を行う。他のノードA〜Cは送信を保留する。
ノードDから送信された代理通信データは、ノードEに受信され、ノードEがACKをノードDに送信する。このとき、ノードEでは、ノードAからのデータを受信できたと判断される。ノードDでは、ノードEからのACKを受信すると、代理通信が成功したと判断し、代理通信データを破棄して、代理通信完了通知を格納する。この代理通信完了通知の代理通信リストLには、破棄する代理通信データの代理通信リストLからその末尾に格納された自ノードのアドレスを削除したものが格納される。また、送信元アドレスAs1にはノードD、送信元アドレスAr2にはノードA、送信先アドレスAr1には代理通信リストLの末尾に格納されたノードB、送信先アドレスAs2にはノードEが格納される。これにより、ノードA〜Cが再送、ノードDが1回目の送信を行おうとする。よって、ノードDが送信権を得て、ノードDが代理通信完了通知の送信を行う。
ノードDから送信された代理通信完了通知は、ノードB及びCが受信する。ノードBは、送信先アドレスAr2に自ノードが格納された代理通信完了通知を受信すると、ACKを送信する。さらに、ノードBでは、代理通信バッファ22から代理通信データをクリアすると共に、受信した代理通信完了通知の代理通信リストLからその端末に格納された自ノードのアドレスを削除し、送信先アドレスAs1を削除した後の代理通信リストLの端末に格納されたノードAに書き換えて、代理通信完了通知バッファ23に格納する。
このとき、ノードCは、送信先アドレスAr2に自ノードが格納されていない代理通信完了通知を受信した後、ACKを受信すると、代理通信データを削除して、以降、代理通信データも代理通信完了通知も送信しない。なお、ノードBからノードC間の通信に障害が生じ、ノードBからACKが受信できないときは、ノードCから代理通信完了通知が送信される。
ノードBから送信された代理通信完了通知は、ノードAが受信する。ノードBの代理通信完了通知がノードAに届くと、ノードAは、ACKを送信すると共に直接通信バッファ21をクリアして直接通信データの再送を停止する。ノードBでは、ノードAからのACKを受信すると、代理通信バッファ22及び代理通信完了通知バッファ23をクリアして、代理通信完了通知の再送を停止する。
上述した第3実施形態によれば、代理通信データを送信するときと、代理通信完了通知を返信するときとで、通信状態が変わらなければ、代理通信データの中継先ノードを中継して、代理通信完了通知を送信元のノードに送信することができ、代理通信データの中継先ノードでないノードから代理通信完了通知が送信されることがない。また、代理通信データを送信した後、代理通信データの経路上でなんらかの障害が発生したときは、受信通知を受信できないため、中継先ノードでないノードを中継して代理通信完了通知を送信することができる。
なお、上述した実施形態によれば、通信ノード20の数や通信ノード20の配置位置は図1に限ったものではない。通信ノード20の数は、2つ以上あればよい。通信ノード20の配置位置も少なくとも1つのノードと通信可能な位置に配されていればよい。
また、直接通信データ、代理通信データ、代理通信完了通知の通信フレームも図2や図16に限ったものではない。各要素の順番は限定しない。また、他の通信制御情報を追加してもよい。
また、上述した実施形態によれば、通信種別Sのマーカーによってデータの種別を判定していたが、本発明はこれに限ったものではない。他のマーカーやシーケンス番号を利用してもよい。
また、上述した実施形態によれば、目的ノードを複数のノードの1つとしていたが、これに限ったものではない。目的ノードを2つにしてもよいし、通信システム1を構成する全てのノード(ユニキャスト)としてもよい。
また、前述した実施形態は本発明の代表的な形態を示したに過ぎず、本発明は、実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。