(57)【要約】【課題】  データフレームに対して適用する誤り検出方式を切り替え、データフレームに誤りが生じていなくとも誤りと検出してしまう可能性を低減することを目的とする。【解決手段】  本発明の通信装置は、第１の誤り検出方式により、受信したデータフレームの誤りを検出し、検出結果に応じて、データフレームの誤りを検出する方式を第２の誤り検出方式に切り替える。【選択図】  図５
2012109868.tif 000002
【特許請求の範囲】
【請求項１】
データフレームを受信する受信手段と、
第１の誤り検出方式により、前記受信手段により受信した前記データフレームの誤りを検出する検出手段と、
前記検出の結果に応じて、前記データフレームの誤りを検出する方式を第２の誤り検出方式に切り替える切替手段と、
を有することを特徴とする通信装置。
【請求項２】
前記切替手段は、前記第１の誤り検出方式により所定の時間内に連続して前記データフレームの誤りを検出した場合、前記データフレームに用いる誤り検出の方式を前記第２の誤り検出方式に切り替えることを特徴とする請求項１に記載の通信装置。
【請求項３】
前記切替手段は、前記第１の誤り検出方式により所定の時間内に所定の回数よりも多く前記データフレームの誤りを検出した場合、前記データフレームの誤りを検出する方式を前記第２の誤り検出方式に切り替えることを特徴とする請求項１に記載の通信装置。
【請求項４】
前記第１の誤り検出方式の方が前記第２の誤り検出方式よりも優先度が高いことを特徴とする請求項１乃至３のいずれか１項に記載の通信装置。
【請求項５】
前記切替手段は、前記データフレームに含まれるビット列の入力単位を切り替えることで、前記第１の誤り検出方式と前記第２の誤り検出方式とを切り替えることを特徴とする請求項１乃至４のいずれか１項に記載の通信装置。
【請求項６】
前記切替手段は、前記データフレームに含まれるビット列の入力順序を切り替えることで、前記第１の誤り検出方式と前記第２の誤り検出方式とを切り替えることを特徴とする請求項１乃至５のいずれか１項に記載の通信装置。
【請求項７】
前記第１の誤り検出方式または前記第２の誤り検出方式は、巡回冗長符号を用いた誤り検出方式、ハミング符号を用いた誤り検出方式、チェックサムを用いた誤り検出方式のいずれか１つの誤り検出方式であることを特徴とする請求項１乃至６のいずれか１項に記載の通信装置。
【請求項８】
前記データフレームはヘッダー部とデータ部とを含み、
前記検出手段は、前記ヘッダー部の誤りと、前記データ部の誤りとを検出することを特徴とする請求項１乃至７のいずれか１項に記載の通信装置。
【請求項９】
前記ヘッダー部に用いる誤り検出方式に基づいて、前記データ部に用いる誤り検出方式を確定する確定手段を更に有することを特徴とする請求項１乃至８のいずれか１項に記載の通信装置。
【請求項１０】
前記通信装置は、他の通信装置と１対１で前記データフレームを直接通信することを特徴とする請求項１乃至９のいずれか１項に記載の通信装置。
【請求項１１】
データフレームを受信する受信工程と、
第１の誤り検出方式により、前記受信工程において受信した前記データフレームの誤りを検出する検出工程と、
前記検出の結果に応じて、前記データフレームの誤りを検出する方式を第２の誤り検出方式に切り替える切替工程と、
を有することを特徴とする通信装置の制御方法。
【請求項１２】
コンピュータを請求項１に記載の通信装置として動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信したデータの誤り検出方式を選択する通信装置に関する。
【背景技術】
【０００２】
通信装置同士が通信する場合、通信装置間の通信路で送信したデータフレーム（以下、フレームと称する）に誤りが生じる場合がある。そこで、フレームに誤りが生じたか否かを検出するための誤り検出方式が複数提案されている。
【０００３】
無線ＬＡＮやＢｌｕｅｔｏｏｔｈといった通信方式では、通信方式ごとに予め定められた同一の誤り検出方式を送信側と受信側の双方で用いて、フレームの誤りを検出している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１４１７３０号公報
【特許文献２】特開２００８−１１１４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、複数の誤り検出方式を用いることができる通信方式では、下記の課題が発生する。即ち、送信側で用いる誤り検出方式と、受信側で用いる誤り検出方式とが異なると、フレームに誤りが生じていなくとも誤りとして検出されてしまう。
【０００６】
上記課題を解決するために、本発明は、データフレームに対して適用する誤り検出方式を切り替え、データフレームに誤りが生じていなくとも誤りと検出してしまう可能性を低減することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の通信装置は、第１の誤り検出方式により、受信したデータフレームの誤りを検出し、検出結果に応じて、データフレームの誤りを検出する方式を第２の誤り検出方式に切り替える。
【発明の効果】
【０００８】
本発明によれば、データフレームの誤りの検出結果に応じて、データフレームに対して適用する誤り検出方式を切り替えるので、データフレームに誤りが生じていなくとも誤りと検出してしまう可能性を低減することができる。
【図面の簡単な説明】
【０００９】
【図１】無線通信システムの構成を示す図。
【図２】通信装置のハードウェア構成図。
【図３】データフレームのフレームフォーマットを示す図。
【図４】ソフトウェア機能ブロック図。
【図５】通信装置１０１により実現されるフローチャート。
【発明を実施するための形態】
【００１０】
図１に本実施形態に係る無線通信システムの構成を示す。１０１は第１の通信装置であり、１０２は第２の通信装置である。通信装置１０１と通信装置１０２とは、所定の通信方式に準拠した通信を行うことができる。なお、本実施形態では所定の通信方式として、誘導電界を用いた１対１（Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ）の直接通信を行う通信方式を用いる。しかしこれに限らず、赤外線やＮＦＣ（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）、有線を用いた通信を行うようにしてもよい。
【００１１】
図２に、通信装置１０１のハードウェア構成を示す。なお、通信装置１０２も同様のハードウェア構成を有する。
【００１２】
制御部２０１はＣＰＵ、ＭＰＵにより構成され、記憶部２０２に記憶されたプログラムを実行することにより通信装置１０１全体を制御する。記憶部２０２はＲＯＭ、ＲＡＭにより構成され、制御部２０１が実行するプログラムや、通信パラメータ等の各種情報を記憶する。後述する各種動作は、記憶部２０２に記憶されたプログラムを制御部２０１が実行することにより行われる。また、記憶部２０２は後述する複数の誤り検出方式の優先度も記憶している。なお、記憶部２０２には、ＲＯＭ、ＲＡＭ等のメモリの他に、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＤＶＤなどの記憶媒体を用いてもよい。
【００１３】
２０３はユーザインターフェース部（以下、ユーザＩ／Ｆ）であり、各種情報の表示や、ユーザからの各種操作の受付を行う。２０４は通信部であり、誘導電界により通信する。
【００１４】
図３に、本実施形態の通信で利用されるデータフレームのフレームフォーマットを示す。３０１は、通信装置１０２から送信されたデータフレームと同期を取るために用いられる所定のプレアンブルである。３０２は、データフレームのヘッダ情報を格納したＨｅａｄｅｒ  Ｂｏｄｙ（ヘッダー部）である。３０３は、Ｈｅａｄｅｒ  Ｂｏｄｙ３０２におけるビット誤りを検出するために用いられるＨｅａｄｅｒ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅである。Ｈｅａｄｅｒ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ３０３には、Ｈｅａｄｅｒ  Ｂｏｄｙ３０２にヘッダーチェック用の誤り検出方式を適用することで得られた値（符号）が格納される。なお、本実施形態の誤り検出方式には、誤り訂正方式も含まれる。誤り訂正においても、ビット誤りが検出されるからである。
【００１５】
誤り検出方式としては、例えば、巡回冗長符号（ＣＲＣ）の演算、ハミング符号演算、チェックサム（加算や排他的論理加算）演算、等の実施対象とする演算アルゴリズム等が挙げられる。また、特許文献２に示されるようなビット列に対してインターリーブ処理を行った後に符号を算出する誤り検出方式と、インターリーブ処理を行わずに符号を算出する誤り検出方式とは異なる誤り検出方式とする。ここでインターリーブ処理とは、（ａ１，ａ２，ａ３，ａ４，ａ５…ａ９）と並んでいるビット列に対して以下の処理を行うことを含む。即ち、逆順にして（ａ９，ａ８，ａ７，ａ６，ａ５…ａ１）とする処理や、一部並び替えて（ａ３，ａ２，ａ１，ａ６，ａ５，ａ４，ａ９，ａ８，ａ７）や（ａ１，ａ３，ａ５…ａ９，ａ２，ａ４…）とする処理である。なお、異なるインターリーブ処理を行った後に符号を算出する場合も、異なる誤り検出方式とする。また、演算アルゴリズムに対して入力するビット列の入力単位が異なる場合も、異なる誤り検出方式とする。
【００１６】
３０４は、通信装置１０１と通信装置１０２とで通信されるデータの本体部分（データ部）を格納したＦｒａｍｅ  Ｂｏｄｙである。３０５は、Ｆｒａｍｅ  Ｂｏｄｙ３０４におけるビット誤りを検出するために用いられるＦｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅである。Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ３０５には、Ｆｒａｍｅ  Ｂｏｄｙ３０４にフレームボディー用の誤り検出方式を適用することで得られた値（符号）が格納される。
【００１７】
図４に、通信装置１０１の制御部２０１が記憶部２０２に記憶されているプログラムを読み出すことで実現されるソフトウェア機能ブロックを示す。なお、図４に示すソフトウェア機能ブロックの少なくとも一部をハードウェアにより実現してもよい。また、通信装置１０２も後述する４０１〜４０４のソフトウェア機能ブロックを有している。
【００１８】
４０１は、プレアンブル３０１を用いてデータフレーム３００を受信するために同期を取る同期部である。４０２は、Ｈｅａｄｅｒ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ３０３を用いてＨｅａｄｅｒ  Ｂｏｄｙ３０２におけるビット誤りを検出するヘッダー誤り検出部である。４０３は、Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ３０５を用いてＦｒａｍｅ  Ｂｏｄｙ３０４におけるビット誤りを検出するフレーム誤り検出部である。４０４は、データフレーム３００の符号化および復号化を行う符号／復号処理部である。
【００１９】
４０５は、同期部４０１によりデータフレーム３００と同期が取れたか否かを確認する確認部である。４０６は、ヘッダー誤り検出部４０２およびフレーム誤り検出部４０３で検出された誤りの発生回数を計数する計数部である。４０７は、ヘッダー誤り検出部４０２およびフレーム誤り検出部４０３で用いる誤り検出方式の切り替えを指示する指示部である。４０８は、ビット誤りを計数するための所定時間を計測するためのタイマー部である。
【００２０】
図５（ａ）（ｂ）に、通信装置１０１の通信部２０４が起動された際に、制御部２０１が記憶部２０２に記憶されているプログラムを読み出すことで実現されるフローチャートを示す。なお、このフローチャートをハードウェアにより実現してもよい。
【００２１】
また、通信装置１０１の通信相手である通信装置１０２は、ヘッダーチェック用の誤り検出方式として誤り検出方式Ｈ２を用い、フレームボディー用の誤り検出方式として誤り検出方式Ｆ２を用いるものとする。また、通信装置１０１は、ヘッダーチェック用の誤り検出方式として誤り検出方式Ｈ１とＨ２とを選択的に用いることができる。なお、誤り検出方式Ｈ１の方が誤り検出方式Ｈ２よりも優先度が高いものとする。また、通信装置１０１は、フレームボディー用の誤り検出方式として誤り検出方式Ｆ１とＦ２とを選択的に用いることができる。なお、誤り検出方式Ｆ１の方が誤り検出方式Ｆ２よりも優先度が高いものとする。
【００２２】
ステップＳ５０１（以下、「ステップ」という言葉を省略する）において、指示部４０７はヘッダー誤り検出部４０２で用いる誤り検出方式を最も優先度の高い「Ｈ１」にするよう、ヘッダー誤り検出部４０２に指示する。
【００２３】
Ｓ５０２において、確認部４０５は通信装置１０２から送信されたデータフレームと同期が取れた場合に、データフレームを受信したと判定し、Ｓ５０３に進む。同期が取れていない場合には、通信装置１０２が通信装置１０１の通信範囲外であり、通信できないものと判定し、図５に示す処理を終了する。データフレームを受信すると、Ｓ５０３において、タイマー部４０８はＨｅａｄｅｒ  Ｂｏｄｙ３０２における誤り回数の計数期間を計測するタイマーを起動する。
【００２４】
Ｓ５０４において、ヘッダー誤り検出部４０２はＨｅａｄｅｒ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ３０３を用いてＨｅａｄｅｒ  Ｂｏｄｙ３０２におけるビット誤りを検出する。ここで、通信装置１０２は、ヘッダーチェック用の誤り検出方式として誤り検出方式Ｈ２を用いている。従って、受信したデータフレームには、Ｈｅａｄｅｒ  Ｂｏｄｙ３０２に誤り検出方式Ｈ２を適用して得られた値がＨｅａｄｅｒ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ３０３に格納されている。ところが、通信装置１０１では、ヘッダーチェック用の誤り検出方式として誤り検出方式Ｈ１を用いている。従って、Ｈｅａｄｅｒ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ３０３に格納されている値と、Ｈｅａｄｅｒ  Ｂｏｄｙ３０２に誤り検出方式Ｈ１を適用して得られた値とは異なる。この結果、Ｈｅａｄｅｒ  Ｂｏｄｙ３０２にビット誤りが無くとも、ヘッダー誤り検出部４０２は誤りとして検出する。従って、Ｓ５０５に進み、通信部２０４は検出したデータフレームを破棄する。
【００２５】
次にＳ５０６において、計数部４０６は、所定回数連続してヘッダー誤り検出部４０２が誤りを検出しなかったことを確認する。なお、ここでは所定回数を２回とするが、これに限らず、１回でもよいし、３回以上の回数にしてもよい。Ｓ５０６において連続して誤りを検出していないことが確認された場合には、Ｓ５０９に進む。ここでは、Ｓ５０４においてビット誤りが検出されたのでＳ５０７に進み、タイマー部４０８はＳ５０２において計測を開始してから所定時間が経過したか否かを判定する。ここでは所定時間が経過していないと判定され、Ｓ５０８に進む。
【００２６】
Ｓ５０８において、確認部４０５は通信装置１０２から送信されたデータフレームと同期が取れた場合に、データフレームを受信したと判定し、Ｓ５０４に進む。同期が取れていない場合には、通信装置１０２が通信装置１０１の通信範囲外であり、通信できないものと判定し、図５に示す処理を終了する。
【００２７】
ここで、通信装置１０１と通信装置１０２で用いているＨｅａｄｅｒ  Ｂｏｄｙ３０２の誤り検出方式が異なっているので、Ｓ５０４において常にビット誤りが検出される。従って、所定時間内にＳ５０７において連続して誤りを検出していないことが確認されることはない。従って、所定時間が経過するまでＳ５０４からＳ５０８を繰り返し、所定時間経過後に、Ｓ５０７からＳ５０１に戻る。
【００２８】
Ｓ５０１において、指示部４０７はヘッダー誤り検出部４０２で用いる誤り検出方式を「Ｈ１」の次に優先度の高い「Ｈ２」にするよう、ヘッダー誤り検出部４０２に指示する。これにより、Ｓ５０４において、ヘッダー誤り検出部４０２は、通信装置１０２との通信で生じるビット誤りを正しく検出できるようになる。従って、通信でＨｅａｄｅｒ  Ｂｏｄｙ３０２にビット誤りが発生していない場合には、ビット誤りを検出しない。この結果、所定回数連続して誤りが検出されないと、Ｓ５０６からＳ５０９に進む。
【００２９】
Ｓ５０９において、指示部４０７はヘッダー誤り検出部４０２で用いる誤り検出方式を「Ｈ２」に確定し、図５（ｂ）に示すＳ５１１に進む。
【００３０】
Ｓ５１１において、指示部４０７はフレーム誤り検出部４０３で用いる誤り検出方式を最も優先度の高い「Ｆ１」にするよう、フレーム誤り検出部４０３に指示する。そして、Ｓ５１３において、タイマー部４０８はＦｒａｍｅ  Ｂｏｄｙ３０４における誤り回数の計数期間を計測するタイマーを起動する。
【００３１】
Ｓ５１４において、フレーム誤り検出部４０３はＦｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ３０５を用いてＦｒａｍｅ  Ｂｏｄｙ３０４におけるビット誤りを検出する。ここで、通信装置１０２は、フレームボディー用の誤り検出方式として誤り検出方式Ｆ２を用いている。従って、受信したデータフレームには、Ｆｒａｍｅ  Ｂｏｄｙ３０４に誤り検出方式Ｆ２を適用して得られた値がＦｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ３０５に格納されている。ところが、通信装置１０１では、フレームチェック用の誤り検出方式として誤り検出方式Ｆ１を用いている。従って、Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ３０５に格納されている値と、Ｆｒａｍｅ  Ｂｏｄｙ３０４に誤り検出方式Ｆ１を適用して得られた値とは異なる。この結果、Ｆｒａｍｅ  Ｂｏｄｙ３０４にビット誤りが無くとも、フレーム誤り検出部４０３は誤りとして検出する。従って、Ｓ５１５に進み、通信部２０４は検出したデータフレームを破棄する。
【００３２】
次にＳ５１６において、計数部４０６は、所定回数連続してフレーム誤り検出部４０３が誤りを検出しなかったことを確認する。Ｓ５１６において連続して誤りを検出していないことが確認された場合には、Ｓ５１９に進む。ここでは、Ｓ５１４においてビット誤りが検出されたのでＳ５１７に進み、タイマー部４０８はＳ５１２において計測を開始してから所定時間が経過したか否かを判定する。ここでは所定時間が経過していないと判定され、Ｓ５１８に進む。
【００３３】
Ｓ５１８において、確認部４０５は通信装置１０２から送信されたデータフレームと同期が取れた場合に、データフレームを受信したと判定し、Ｓ５１４に進む。同期が取れていない場合には、通信装置１０２が通信装置１０１の通信範囲外であり、通信できないものと判定し、図５に示す処理を終了する。
【００３４】
ここで、通信装置１０１と通信装置１０２で用いているＦｒａｍｅ  Ｂｏｄｙ３０４の誤り検出方式が異なっているので、Ｓ５１４において常にビット誤りが検出される。従って、所定時間内にＳ５１６において連続して誤りを検出していないことが確認されることはない。従って、所定時間が経過するまでＳ５１４からＳ５１８を繰り返し、所定時間経過後に、Ｓ５１７からＳ５２０に進む。Ｓ５２０ではＳ５１８と同様の処理を行ってデータフレームを受信し、Ｓ５１１に戻る。
【００３５】
Ｓ５１１において、指示部４０７はフレーム誤り検出部４０３で用いる誤り検出方式を「Ｆ１」の次に優先度の高い「Ｆ２」にするよう、フレーム誤り検出部４０３に指示する。これにより、Ｓ５１４において、フレーム誤り検出部４０３は正しくビット誤りを検出し、通信でＦｒａｍｅ  Ｂｏｄｙ３０４にビット誤りが発生していない場合には、ビット誤りを検出しない。この結果、Ｓ５１８またはＳ５２１で受信したデータフレームにおいて、所定回数連続して誤りが検出されないと、Ｓ５１６からＳ５１９に進む。
【００３６】
Ｓ５１９において、指示部４０７はフレーム誤り検出部４０３で用いる誤り検出方式を「Ｆ２」に確定し、通信装置１０２との通信を継続する。
【００３７】
以上のようにして、送信側で適用される誤り検出方式を、受信側では予め把握していない場合であっても、送信側と受信側とで誤り検出方式を合わせて通信することができる。
【００３８】
なお、上述の実施形態では、所定時間経過後に誤り検出方式を切り替えたが、所定時間の代わりにデータフレームの検出回数を用いるようにしてもよい。また、所定時間内にデータフレームの誤りが所定回数よりも多く検出された場合に、誤り検出方式を切り替えるようにしてもよい。また、時間を計測することなく、単にデータフレームの誤りが所定回数連続で検出された場合に、検出方式を切り替えるようにしてもよい。
【００３９】
また、上述の実施形態では、優先度は出荷時に予め定められていた。しかしこれに限らず、ユーザがユーザＩ／Ｆ２０３を操作することにより優先度を設定するようにしてもよい。また、Ｓ５０９およびＳ５１９において確定した回数の多い誤り検出方式を優先度の高い誤り検出方式としてもよい。これにより、誤り検出方式を切り替えることなく通信を開始できる可能性が向上する。
【００４０】
また、ヘッダーチェック用の誤り検出方式とフレームボディー用の誤り検出方式とを組み合わせて記憶しておき、Ｓ５０９で確定したヘッダーチェック用の誤り検出方式に対応したフレームボディーチェック用の誤り検出方式をＳ５１１で最初に指定してもよい。
【００４１】
例えば、Ｓ５０９において誤り検出方式「Ｈ２」を用いることが確定した場合には、Ｓ５１１において最初に指定する誤り検出方式を「Ｆ２」とする。これにより、製造元ごとに、ヘッダーチェック用の誤り検出方式とフレームボディー用の誤り検出方式とを組み合わせが決まっている場合、ヘッダーチェック用の誤り検出方式を確定することで、簡単にフレームボディー用の誤り検出方式を確定することができる。なお、単にヘッダーチェック用の誤り検出方式「Ｈ２」を用いることが確定した場合には、レームボディー用の誤り検出方式を「Ｆ２」にすることを確定するようにしてもよい。
【００４２】
また、ヘッダー誤り検出部４０２、および、フレーム誤り検出部４０３をハードウェアで構成した場合、これらの検出部へのビット列の入力単位を１ビット毎、１ｗｏｒｄ毎、１  Ｌｏｎｇ  Ｗｏｒｄ毎と切り替えられるようにしてもよい。これにより、限られたハードウェア資源で対応可能な誤り検出方式の数を増やすことができる。また、これらの誤り検出部４０３へ入力する前のインターリーブの方式を切り替えることで、対応可能な誤り検出方式の数を増やすことができる。また、これら入力単位や入力順序の組み合わせを様々に変えることで、対応可能な誤り検出方式の数をより増やすことができる。
【符号の説明】
【００４３】
１０１  第１の通信装置
１０２  第２の通信装置
【図１】
2012109868.tif 000003
【図２】
2012109868.tif 000004
【図３】
2012109868.tif 000005
【図４】
2012109868.tif 000006
【図５】
2012109868.tif 000007