【手続補正書】
【提出日】平成17年10月26日(2005.10.26)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】        明細書
【発明の名称】    ＩＣカード用リーダライタ、識別方法、プログラム及びその記録媒体
【特許請求の範囲】
【請求項１】  複数のＩＣカードとタイムスロットを用いて通信するＩＣカード用リーダライタにおいて、
各ＩＣカードを識別するためのリクエストに対する上記ＩＣカードからの正常な応答及び当該応答の衝突を検出する応答検出手段と、
上記応答検出手段が上記ＩＣカードからの正常な応答を受信した場合には、上記衝突を検出していても、当該正常な応答を送信したＩＣカードに対して以後の上記リクエストに応答しない旨の命令である応答無効化コマンドを送信する応答無効化手段と、
上記応答無効化手段による上記応答無効化コマンドの送信の有無に基づいて、各ＩＣカードを識別するための最初のリクエストに含めるタイムスロット数を算出する算出手段と、
上記算出手段にて算出されたタイムスロット数を上記最初のリクエスト時のタイムスロット数として設定するスロット数再設定手段と
を備えたことを特徴とするリーダライタ。
【請求項２】  さらに、上記応答無効化手段による上記応答無効化コマンドの送信の有無に基づいてタイムスロット数の増加を行うスロット数増加手段を備えた請求項１に記載のリーダライタ。
【請求項３】 さらに、上記応答無効化手段による上記応答無効化コマンドの送信の有無に基づいてタイムスロット数を減少させる手段を備えた請求項１に記載のリーダライタ。
【請求項４】  上記応答無効化コマンドは、ＩＳＯ／ＩＥＣ（International Organization For Standardization/International Electrotechnical Commission）１４４４３に基づく“ＡＴＴＲＩＢ“コマンド、又は”ＨＡＬＴ“コマンドである請求項１に記載のリーダライタ。
【請求項５】  複数のＩＣカードを、タイムスロットを用いて通信可能に識別する識別方法において、
各ＩＣカードを識別するためのリクエストに対する上記ＩＣカードからの正常な応答及び当該応答の衝突を検出する検出ステップと、
上記ＩＣカードからの正常な応答を受信した場合に、上記衝突を検出していても、当該正常な応答を送信したＩＣカードに対して以後の上記リクエストに応答しない旨の命令である応答無効化コマンドを送信する応答無効化ステップと、
上記応答無効化ステップによる上記応答無効化コマンドの送信の有無に基づいて、各ＩＣカードを識別するための最初のリクエストに含めるタイムスロット数を算出する算出ステップと、
上記算出ステップにて算出されたタイムスロット数を上記最初のリクエスト時のタイムスロット数として設定するスロット数再設定ステップと
を備えたことを特徴とする識別方法。
【請求項６】  複数のＩＣカードを、タイムスロットを用いて通信可能に識別するコンピュータに、
各ＩＣカードを識別するためのリクエストに対する上記ＩＣカードからの正常な応答及び当該応答の衝突を検出する検出ステップと、
上記ＩＣカードからの正常な応答を受信した場合に、上記衝突を検出していても、当該正常な応答を送信したＩＣカードに対して以後の上記リクエストに応答しない旨の命令である応答無効化コマンドを送信する応答無効化ステップと、
上記応答無効化ステップによる上記応答無効化コマンドの送信の有無に基づいて、各ＩＣカードを識別するための最初のリクエストに含めるタイムスロット数を算出する算出ステップと、
上記算出ステップにて算出されたタイムスロット数を上記最初のリクエスト時のタイムスロット数として設定するスロット数再設定ステップと
を実行させるプログラム。
【請求項７】 複数のＩＣカードを、タイムスロットを用いて通信可能に識別するコンピュータに、
各ＩＣカードを識別するためのリクエストに対する上記ＩＣカードからの正常な応答及び当該応答の衝突を検出する検出ステップと、
上記ＩＣカードからの正常な応答を受信した場合に、上記衝突を検出していても、当該正常な応答を送信したＩＣカードに対して以後の上記リクエストに応答しない旨の命令である応答無効化コマンドを送信する応答無効化ステップと、
上記応答無効化ステップによる上記応答無効化コマンドの送信の有無に基づいて、各ＩＣカードを識別するための最初のリクエストに含めるタイムスロット数を算出する算出ステップと、
上記算出ステップにて算出されたタイムスロット数を上記最初のリクエスト時のタイムスロット数として設定するスロット数再設定ステップと
を実行させるプログラムを記録したコンピュータ読み取り可能記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
【０００２】
本発明は、ＩＣカード用リーダライタ、識別方法、及びそのプログラムに関し、詳しくは、タイムスロットを用いてＩＣカードを識別するＩＣカード用リーダライタ、識別方法、プログラム及びその記録媒体に関する。
【従来の技術】
【０００３】
従来、電磁誘導方式等を用いてデータの授受を行う非接触ＩＣカードと当該非接触ＩＣカードを識別するリーダライタとの間の通信には、タイムスロット方式が採用されている。これは、複数の非接触ＩＣカードが同時にリーダライタの通信可能エリア内に存在し、リーダライタからのポーリングに対して複数の非接触ＩＣカードが同時に応答した場合、当該応答に用いられる各レスポンス信号が衝突して何れの非接触ＩＣカードもリーダライタと正常に通信することができなくなるためである。
【０００４】
上記タイムスロット方式の通信方法を以下に説明する。
【０００５】
（１）まずＩＣカード用リーダライタ（以後リーダライタと称す）は非接触ＩＣカードの存在を確認するために、リクエストとして初期応答リクエストコマンドを非接触ＩＣカードに送信する。上記初期応答リクエストコマンドには、非接触ＩＣカードが行う初期応答のタイミングの制御に必要な「スロット数」、又は「スロット数」を計算する為に必要な値が含まれる。
【０００６】
（２）上記非接触ＩＣカードは、上記初期応答リクエストコマンドを受信後、特定時間から設けられるタイムスロットを用いて上記初期応答（応答）を返す。該応答に用いるタイムスロット、即ちタイミングは、非接触ＩＣカード自身が乱数で決定する。
【０００７】
（３）上記リーダライタは、複数の非接触ＩＣカードが同一のタイムスロットを選択した際に起こる応答の衝突を検出した場合、再度上記初期応答リクエストを送信する。
【０００８】
（４）上記リーダライタは、すべての非接触ＩＣカードからの応答を衝突なしに受信することですべての非接触ＩＣカードの認識をし、当該カードの識別のためのシーケンスを完了する。
【０００９】
以上の処理を、図１６〜図１８を用いてさらに詳しく説明する。尚、以下に示すのは、近接型非接触ＩＣカードの国際規格ＩＳＯ／ＩＥＣ（International Organization For Standardization/International Electrotechnical Commission）１４４４３に適応した場合の非接触ＩＣカードの処理である。
【００１０】
ＩＳＯ／ＩＥＣ１４４４３は例えば、非接触テレホンカードなどに適応できる。さらに具体的に、図１６に示すように、公衆電話として機能するリーダライタ１６００にテレホンカードとしての機能を有する非接触ＩＣカード１６０１、１６０２、１６０３の３枚を同時に差し込んだ（近接させた）場合を想定する。
【００１１】
ＩＳＯ／ＩＥＣ１４４４３の非接触ＩＣカードの識別システムにおいては、以下の手順で非接触ＩＣカードの識別が行われる。
【００１２】
まず、公衆電話であるリーダライタ１６００が初期応答リクエスト（リクエスト）を送信する。当該初期応答リクエストは、図１８に示されるフォーマットになっており、初期応答リクエスト１８０１を構成するＰＡＲＡＭ１８０２内の８ｂｉｔのうち、ｂｉｔ１〜ｂｉｔ３の３ｂｉｔ１８０３を用いてタイムスロット数（Ｎ）を各非接触ＩＣカードに通知する。尚、ＡＰｆ１８０４は、初期要求コマンドを示すヘッダであり、ＡＦＩ１８０５は非接触ＩＣカードの適応クラスを示す。又、ＣＲＣ（Cyclic Redundancy Check）１８０６はＡＰｆ〜ＰＡＲＡＭまでのＣＲＣである。
【００１３】
尚、非接触ＩＣカードは１〜ＮまでのＮ個のスロットで応答するが、今回の説明ではタイムスロット数（Ｎ）を４として説明を行う。即ち、初期応答リクエストに対して非接触ＩＣカード１６０１〜１６０３は、１〜４までのタイムスロットのうち一つを選択し、応答を行う。
【００１４】
図１７で示す一回目のカード識別処理１７０１において、まずリーダライタ１６００は初期応答リクエストＲ１〔ＲＥＱＢ〕（１７０２）を送信する。当該初期応答リクエストＲ１（１７０２）に対して非接触ＩＣカード１６０１及び１６０２が、乱数としてそれぞれ「１」を生成し、非接触ＩＣカード１６０３が乱数として「２」を生成したとする。この場合には、非接触ＩＣカード１６０１、１６０２は、タイムスロット１（１７０３）内に示した応答〔ＡＴＱＢ〕Ａ２１、Ａ３１でそれぞれ応答する。また、非接触ＩＣカード１６０３は、タイムスロット２（１７０４）内に示した応答Ａ４１で応答する。以上の場合には、上記非接触ＩＣカード１６０１、１６０２共、同一のタイミングで応答するため、リーダライタ１６００は、タイムスロット１（１７０３）における非接触ＩＣカードの応答の衝突を検出する。したがって、上記非接触ＩＣカード１６０１、１６０２を識別することができないため、再度識別処理を再開する。
【００１５】
続いて、二回目の識別処理１７０５において、リーダライタ１６００は初期応答リクエストＲ２（１７０６）を送信する。ここで初期応答リクエストに対して非接触ＩＣカード１６０１及び非接触ＩＣカード１６０３が、乱数として「１」を生成し、非接触ＩＣカード１６０２が乱数として「３」を生成したと仮定すると、非接触ＩＣカード１６０１、１６０３は、タイムスロット１（１７０７）内のパケットＡ２２、Ａ４２を用いてそれぞれ応答する。また、非接触ＩＣカード１６０２は、タイムスロット３（１７０８）内のパケットＡ３２を用いて応答する。この場合、リーダライタ１６００は、タイムスロット１（１７０７）における非接触ＩＣカード１６０１、１６０３の応答の衝突を検出する。従って、リーダライタ１６００は、上記非接触ＩＣカード１６０１、１６０３を識別することができないため再度識別処理を再開する。
【００１６】
続いて、三回目の識別処理１７０９において、リーダライタ１６００は初期応答リクエストＲ３（１７１０）を送信する。ここで初期応答リクエストに対して非接触ＩＣカード１６０１が乱数として「１」、非接触ＩＣカード１６０２が乱数として「３」、非接触ＩＣカード１６０３が乱数として「４」、を生成したと仮定する。この場合、非接触ＩＣカード１６０１はタイムスロット１（１７１１）内のパケットＡ２３、非接触ＩＣカード１６０２はタイムスロット３（１７１２）内のパケットＡ３３、非接触ＩＣカード１６０３はタイムスロット４（１７１３）内のパケットＡ４３、を用いてそれぞれ応答する。したがって、リーダライタ１６００は衝突を検出しないため、すべての非接触ＩＣカードの識別を行うことができ、識別処理を完了する。以上がＩＳＯ／ＩＥＣ１４４４３の規定に従った、非接触ＩＣカードのカード識別処理である。
【００１７】
ここで、上記非接触ＩＣカードに電源が投入されてから（リーダライタとの通信可能距離に入ってから）各非接触ＩＣカードがリーダライタにそれぞれ識別されるまではアイドル期間＋レディ期間と位置付けることができる。
【００１８】
これに対して、上記各非接触ＩＣカードがすべて識別されると、リーダライタは各非接触ＩＣカードに対して“ＡＴＴＲＩＢ“コマンドを送信する。これは上記アイドル期間＋レディ期間からアクティブ期間への移行を示し、上記各非接触ＩＣカードが“ＡＴＴＲＩＢ“コマンド等を受信してアクティブ期間に移行すると上記リーダライタと様々な通信が可能になる。尚、上記アクティブ期間に移行した各非接触ＩＣカードは初期応答リクエストコマンドに対する応答は行わない。ここで、上記“ＡＴＴＲＩＢ“コマンドに替えて例えば”ＨＡＬＴ“コマンドを受信した場合には、上記非接触ＩＣカードはホールト期間に移行し、上記リーダライタとの通信を行わない。この場合、上記リーダライタが”ＷＡＫＥ−ＵＰ“コマンドを送信することで、当該非接触ＩＣカードが上記アクティブ期間に移行し、通信が可能になる。
【００１９】
尚、ＩＳＯ／ＩＥＣ１４４４３の規定では、初期応答リクエストコマンドを受け取ってから、非接触ＩＣカードがタイムスロット１で応答する場合の時間を３０２μｓｅｃと規定し、また、１つのタイムスロットの期間（時間）は２２６６μｓｅｃと規定している。つまり、リーダライタ１６００から初期応答リクエストを受信して、応答を送信するまでのタイミング（μｓｅｃ）は、以下の計算式（式１）により与えられる。
【００２０】
タイミング（μｓｅｃ）＝３０２μｓｅｃ＋２２６６μｓｅｃ×（スロット数（Ｎ）−１）  ：（式１）
上記タイムスロット方式に類似の方法として、スロットマーカ方式もある。上記スロットマーカ方式は、リーダライタが上記タイムスロット方式における初期応答リクエストを送信後、さらに当該リーダライタが各スロット開始のタイミング毎にスロットの開始を示すスロットマーカコマンドを送信する方式である。従って、リーダライタに指定されたタイムスロットを利用して各ＩＣカードが応答する事で当該各ＩＣカードを認識する点で、本質的にタイムスロット方式と同様である。
【００２１】
さらに、上記応答の衝突による非接触ＩＣカードの識別処理の遅延を回避するための技術が、特開２０００−２９８７１２号公報に開示されている。
【００２２】
上記特開２０００−２９８７１２号公報に記載の技術では、各タイムスロットにおける応答の衝突を確認することで衝突が起こったタイムスロットをカウントし、当該衝突の起こっているタイムスロットの数に基づいてタイムスロットの数を増減するのである。
【特許文献１】
特開２０００−２９８７１２号公報
【発明が解決しようとする課題】
【００２３】
上述したタイムスロット方式を利用する非接触ＩＣカード（国際規格ＩＳＯ／ＩＥＣ１４４４３準拠の非接触ＩＣカード等）では、非接触ＩＣカードが上記リーダライタに対して応答を行う際に、非接触ＩＣカード自身が乱数を用いてタイムスロットを選択する。このため、例えば複数の非接触ＩＣカードが生成した乱数が同一の場合には、上記選択されるタイムスロットが同一となり、上記応答が必ず衝突してしまう。この場合、上記リーダライタは、上記応答リクエストコマンドを再度送信して非接触ＩＣカードの識別処理を行う必要があり、結果的に非接触ＩＣカードの識別が遅延するに至る。
【００２４】
また、上記特開２０００−２９８７１２号公報に記載の技術では、衝突の起こっているタイムスロットの数に基づいてリーダライタが指定するタイムスロットの数を増加させることにより、非接触ＩＣカードが同じタイムスロットを選択する確率を下げている。しかし、上記技術では、個々のタイムスロットにおいて応答の衝突の有無を判断し、その都度衝突の数をカウントして記憶する必要があり、リーダライタの構成が複雑になる。また、タイムスロット数を変更（増加）させて識別処理を開始し、非接触ＩＣカードの数は変更されないにもかかわらず衝突発生の個数が減少した場合、次回はタイムスロット数を減少させて識別処理を行うため、再度衝突の頻度が上がり、識別処理時間が長くなってしまうという問題がある。
【００２５】
以上に共通して見られる識別処理時間が遅延する問題は、特に電車の改札機等のように、立ち止まることなく利用者が非接触ＩＣカードをリーダライタに識別させる必要があるシステムにて顕著に表れる。即ち、非接触ＩＣカードの識別が遅れることにより、利用者が立ち止まる必要が生じ、結果として当該システムの利用に障害が生じるのである。
【００２６】
また、今後、多方面において上記非接触ＩＣカードの利便性を生かした様々なシステムが登場する事が予想できる。つまり、時間が経つにつれて、利用者一人が（例えば財布に入れて）所有する非接触ＩＣカードの枚数が増加する事が容易に予想できるのである。このような状況の下では、上記識別処理時間が一層長くなるため、遅延による問題はさらに深刻なものとなる。従って、各システムの耐用年数を延ばす意味においても、予め上記状況に備えておく必要性がある。
【００２７】
また他方では、上記非接触ＩＣカードの識別が高速に行なわれるようになれば、さらに高速な移動体へも適用可能となるため、非接触ＩＣカードの利用可能な分野を広げるためにも上記識別処理のさらなる高速化が望まれている。
【００２８】
本発明は、各非接触ＩＣカードの識別処理を高速に完了するＩＣカード用リーダライタ、識別方法、プログラム及びその記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００２９】
本発明は、上記目的を達成するために以下の手段を採用している。即ち、本発明は、複数のＩＣカードとタイムスロットを用いて通信するＩＣカード用リーダライタを前提としている。ここで、応答検出手段は、リクエストに対する上記ＩＣカードからの正常な応答及び当該応答の衝突を検出し、応答無効化手段は、応答検出手段がＩＣカードからの正常な応答を受信した場合には、上記衝突を検出していても、正常な応答を送信したＩＣカードに対して以後の上記リクエストに応答しない旨の命令である応答無効化コマンドを送信する。そして、応答無効化手段による応答無効化コマンドの送信の有無に基づいて、各ＩＣカードを識別するための最初のリクエストに含めるタイムスロット数を算出する算出手段と、算出手段にて算出されたタイムスロット数を最初のリクエスト時のタイムスロット数として設定するスロット数再設定手段とを備える。
【００３０】
従って、以後のリクエストの送信は、衝突を起こした応答を送信したＩＣカードのみが対象となり、即ち、以後の識別処理においては応答が衝突する確立が減少し、識別処理を高速に完了することができる。
【００３１】
また、さらに、応答無効化手段による応答無効化コマンドの送信の有無に基づいてタイムスロット数の増加を行うスロット数増加手段を備えた構成がある。
【００３２】
この構成では、衝突を起こしていない応答に対応するＩＣカードはその都度応答無効化処理を行うことにより、衝突を起こしたＩＣカードに対してのみ識別処理を行い、かつ、適宜タイムスロット数を増加させるため、多数のＩＣカードの識別が必要なシステムにおいても、ＩＣカードの数に応じて識別を柔軟にかつ効率よく行うことができる。
【００３３】
さらに、応答無効化手段による応答無効化コマンドの送信の有無に基づいてタイムスロット数を減少させる手段を備えた構成がある。
【００３４】
尚、応答無効化コマンドは、ＩＳＯ／ＩＥＣ１４４４３に基づく"ＡＴＴＲＩＢ"コマンド、又は"ＨＡＬＴ"コマンドとすることができる。
【００３５】
尚、リーダライタはコンピュータを用いて具体化することができる。この場合、応答検出手段、応答無効化手段、スロット数増加手段、衝突検出手段は、コンピュータ上でプログラムを動作させることにより具体化される。
【発明の実施の形態】
【００３６】
以下、添付図面を参照して、本発明の実施の形態につき説明し、本発明の理解に供する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。
【００３７】
（実施の形態１）
まず、本発明にかかる実施の形態１におけるリーダライタについて説明する。図１は、実施の形態１におけるリーダライタ１０１の機能ブロック図である。また、図２は、上記リーダライタ１０１のハードウェア構成図である。
【００３８】
上記リーダライタ１０１は、アンテナ２０３、送受信回路２０２、ＣＰＵ２０１、当該リーダライタを制御するためのプログラムが格納されているＲＯＭ（Read Only Memory）１０４、プログラム実行時に例えばワークエリアとして使用されるＲＡＭ（Random Access Memory）２０５より構成されている。
【００３９】
尚、上記リーダライタ１０１と通信を行う非接触ＩＣカードは、当該リーダライタ１０１の通信可能エリアに入ると、上記リーダライタからの電磁波より誘導される電力にて動作する。
【００４０】
上記リーダライタ１０１を機能別に表した場合、図１に示すようにアンテナ手段１０７、送受信手段１０６、制御手段１０５、応答検出手段１０２、応答無効化手段１０３を備える。ただし、各手段の処理の詳細については適宜説明を行う。
【００４１】
尚、例えば上記応答検出手段１０２、応答無効化手段１０３は、ＲＯＭ１０４にプログラムとして格納され、必要に応じてＣＰＵ２０１に読み出されて実行される。
【００４２】
次に、図１、図３、図４、図５を用いて本実施の形態１に係るリーダライタの処理について説明する。ここに図３は、リーダライタ１０１が実行する処理のフローチャートである。尚、理解に供するため、本実施の形態１では図５に示すように３つの非接触ＩＣカード４１０、４２０、４３０が、リーダライタ１０１と通信を行うものとする。
【００４３】
まず、リーダライタ１０１を構成する制御手段１０５は非接触ＩＣカードに対し初期応答リクエスト４５０を所定の時間間隔で送信する（図３：Ｓ３０１）。当該初期応答リクエストの送信は、たとえば数十ミリ秒間隔で行われる。ここで上記リーダライタ１０１が送信した初期応答リクエストを非接触ＩＣカード４１０、４２０、４３０が受信すると、各々の非接触ＩＣカードは当該初期応答リクエストに含まれるタイムスロット数を取得する。尚、タイムスロット数は、図１８に示されるＰＡＲＡＭのＢｉｔ１〜Ｂｉｔ３の３ｂｉｔ１８０３で指定されており、このｂｉｔに指定される値の２の乗数がタイムスロット数となる。
【００４４】
次に、上記各非接触カード４１０〜４３０は、上記リーダライタ１０１より与えられたタイムスロット数のうちの１つを選択することで応答に用いるタイムスロットを決定する。
【００４５】
続いて、上記非接触ＩＣカードは、上記リーダライタに応答を送信するタイムスロット（タイミング）まで待機し、上記選択したタイムスロット（のタイミング）にて上記初期応答リクエストに対する応答を送信する。
【００４６】
さて、上記非接触ＩＣカードから送信された上記応答は、上記リーダライタ１０１を構成するアンテナ手段１０７、送受信手段１０６を介して上記制御手段１０５に受信される。ここで、上記非接触ＩＣカード４１０はタイムスロット２（４５１）を、上記非接触ＩＣカード４２０はタイムスロット３（４５２）を、上記非接触ＩＣカード４３０はタイムスロット２（４５１）を選択していたと仮定する。
【００４７】
上記仮定の下では、上記制御手段１０５は、タイムスロット１（４５７）では応答を受信しないためその旨を応答検出手段１０２に送信する。次に、上記制御手段１０５は、タイムスロット２（４５１）にて送信された上記非接触ＩＣカード４１０、４３０の応答４５３、４５５を受信して、当該受信した応答を応答検出手段１０２に送信する。また、上記制御手段１０５は、タイムスロット３（４５２）にて送信された上記非接触ＩＣカード４２０の応答４５４を受信して、当該受信した応答を応答検出手段１０２に送信する。さらに、上記制御手段１０５は、タイムスロット４（４５８）では応答を受信しないためその旨を応答検出手段１０２に送信する（図３：Ｓ３０１）。
【００４８】
以上に示した、各タイムスロットに対応する応答を受信した応答検出手段１０２は、上記各タイムスロットに対応する応答を、いったん各タイムスロットに対応する所定の記憶手段に記憶すると共に、各応答が“正常な応答”であるか“衝突”であるかを検出（判定）する。
【００４９】
尚、以上に述べた初期応答リクエストの送信から“衝突”の判定までを図３のステップＳ３０１に記載した応答判定処理とする。
【００５０】
ここでは、上記タイムスロット１（４５７）、タイムスロット４（４５８）に対応する応答は検出されないが、上記タイムスロット２（４５１）では、上記非接触ＩＣカード４１０と、上記非接触ＩＣカード４３０との応答があるため“衝突”として検出される。尚、上記タイムスロット３（４５２）では、上記非接触ＩＣカード４２０による応答のみであるため“正常な応答”として検出される。
【００５１】
続いて、上記応答検出手段１０２にて“衝突”が検出されると、上記リーダライタ１０１を構成する応答無効化手段１０３は、例えば該応答無効化手段１０３内に設けられたカウンタに“１”を設定する（図３：Ｓ３０２ＹＥＳ→Ｓ３０３）。
【００５２】
尚、上記応答検出手段１０２にて“衝突”が検出されない場合、リーダライタ１０１の通信範囲内に通信可能な非接触ＩＣカードが無いか、あるいは問題なく各非接触ＩＣカードによる応答を受信したことを示し、応答検出手段１０２の処理は終了する（図３：Ｓ３０２ＮＯ→終了）。また、応答を受信した場合であれば、上記制御手段１０５により以後の各通信処理が行われる。
【００５３】
さて、上記応答無効化手段１０３がカウンタに“１”を設定すると、続いて当該カウンタが示すタイムスロットＮ（Ｎはカウンタの値）に対応する上記所定の記憶手段を参照し、“正常な応答”が格納されているかを判定する。
【００５４】
ここで、上記タイムスロット１（４５７）に対応する記憶手段には、応答が記録されていないので、続いて初期応答リクエストにて送信したタイムスロット数と、上記カウンタの値が一致するかを確認する（図３：Ｓ３０４ＮＯ→Ｓ３０６）。
【００５５】
次に、上記送信したタイムスロット数と、上記カウンタの値が一致しない場合、上記カウンタを１インクリメントして、再度次のカウンタが示すタイムスロット２（４５１）に対応する記憶手段に、“正常な応答”が記憶されているかを判定する（図３：Ｓ３０４→Ｓ３０６ＮＯ→Ｓ３０７→Ｓ３０４）。
【００５６】
以上の処理を繰り返した場合、上記仮定の下ではタイムスロット３（４５２）に対応する記憶手段に正常な応答が格納されている。この場合、応答無効化手段１０３は、応答無効化処理を行う（図３：Ｓ３０４ＹＥＳ（Ｎ＝３）→Ｓ３０５）。
【００５７】
尚、上記応答無効化処理は以下のように行われる。すなわち、上記応答無効化手段１０３は、上記タイムスロット３（４５２）に対応する記憶手段から応答の内容を読み出すことにより、上記非接触ＩＣカード４２０固有の情報を取得する。続いて、上記応答無効化手段１０３は、上記固有の情報を含む応答無効化コマンド４４６を上記制御手段１０５、上記送受信手段１０６、及び上記アンテナ手段１０７を介して非接触ＩＣカード４２０に送信する。
【００５８】
ここに、応答無効化コマンドとは、以後上記リーダライタ１０１との通信の終了を示すコマンドを受信するまでは、上記リーダライタ１０１より送信される初期応答リクエストに応答しない旨（命令）を示すコマンドである。具体的には、例えばＩＳＯ／ＩＥＣ１４４４３に規定される“ＡＴＴＲＩＢ“コマンド、又は”ＨＡＬＴ“コマンドなどがこれに該当するが、上記リーダライタ及び非接触ＩＣカードの設計において新たに定義したコマンドでもよい。
【００５９】
上記応答無効化コマンドを受信した非接触ＩＣカード４２０は、以後上記リーダライタ１０１との通信の終了を示すコマンドを受信するまでは上記初期応答リクエストに対する応答を行わないが、初期応答リクエスト以外の通信は行う、即ち上記アクティブ期間に移行する。但し、上記“ＨＡＬＴ”コマンドを受信した場合にはホールト期間に移行し、“ＷＡＫＥ−ＵＰ”コマンドを受信するまでは通常の通信も行わない。
【００６０】
さて、図３のステップ（Ｓ３０６）において、上記制御手段１０５が送信したタイムスロット数とカウンタが一致することで、すべての応答を判定したことになり、再度応答判定処理より繰り返す（図３：Ｓ３０６ＹＥＳ→Ｓ３０１）
続いて、上記非接触ＩＣカード４２０を無効化したリーダライタ１０１は、２回目の識別処理４４２を行う。当該２回目の識別処理４４２でも上記１回目の識別処理４４１とほぼ同一の処理を行うが、非接触ＩＣカード４２０については既に無効化しているため、２回目の識別処理４４２では非接触ＩＣカード４１０、及び非接触ＩＣカード４３０を識別すればよい。
【００６１】
即ち、上記リーダライタ１０１は、初期応答リクエスト４６０を送信する。当該初期応答リクエストは、非接触ＩＣカード４１０〜４３０にて受信されるが、上記非接触ＩＣカード４２０については無効化されているので応答を行わない。
【００６２】
ここで、上記初期応答リクエストに対して非接触ＩＣカード４１０はタイムスロット２（４６１）を、上記非接触ＩＣカード４３０はタイムスロット１（４６２）を選択したと仮定する。
【００６３】
上記仮定の下では、上記制御手段１０５は、タイムスロット１（４６２）にて送信された上記非接触ＩＣカード４３０の応答４６３を受信して、当該受信した応答を応答検出手段１０２に送信する。また、上記制御手段１０５は、タイムスロット２（４６１）にて送信された上記非接触ＩＣカード４１０の応答４６４を受信して、当該受信した応答を応答検出手段１０２に送信する。尚、上記制御手段１０５は、タイムスロット３（４６５）、タイムスロット４（４６６）では応答を受信しないためその旨を応答検出手段１０２に送信する。
【００６４】
即ち、上記仮定の下では上記応答検出手段１０２は“衝突”を検出しないため、リーダライタ１０１は従来と同様に非接触ＩＣカード４１０、４３０を識別可能である。以後、上記リーダライタ１０１により識別された非接触ＩＣカード４１０、４２０、４３０は、上記リーダライタ１０１と通信可能となる。
【００６５】
以上のように、正常な応答を受信した場合には、上記衝突を検出していても、当該正常な応答を送信したＩＣカードに対して応答無効化コマンドを送信するため、以後の識別処理は衝突を起こした応答を送信したＩＣカードのみが対象となる。即ち、以後の識別処理においては応答が衝突する確立が減少し、即ち識別処理を高速に完了することができる。
【００６６】
尚、上記非接触ＩＣカードに変えて、接触式ＩＣカードを用いたリーダライタに対して本発明を適応させてもよい。また、上記タイムスロット方式に変えてスロットマーカ方式を利用したリーダライタに適用してもよいし、その他のスロット方式を用いたリーダライタに対して適用することも可能である。
【００６７】
又、上記無効化コマンドは、非接触ＩＣカードに固有の情報を複数含めることにより、１つの無効化コマンドにて正常な応答を行った複数の非接触ＩＣカードを同時に無効化してもよい。
【００６８】
（実施の形態２）
続いて、図６、図７、図８を参照し、本発明の実施の形態２に係るリーダライタ６０１について説明する。
【００６９】
図６におけるリーダライタ６０１は、上記実施の形態１におけるリーダライタ１０１と同様の構成を有するが、応答検出手段１０２、応答無効化手段１０３に替えて、衝突検出手段６０２、及びスロット数増加手段６０３を備える。尚、各手段の詳細については後述する。ここに、図７は、本実施の形態２に係るリーダライタ６０１が実行する処理のフローチャートである。
【００７０】
最初に、理解に供するため、図５にて示した状況を例に挙げる。即ち、ここでは、リーダライタ６０１は３つの異なる非接触ＩＣカード４１０、４２０、４３０を識別するための識別処理を行うものとする。
【００７１】
まず、リーダライタ６０１を構成する制御手段１０５は、初期応答リクエストを送信するが、当該初期応答リクエストにはタイムスロット数に“１”を設定する（図７：Ｓ７０１）。
【００７２】
これは、例えば複数の非接触ＩＣカードと通信を行うリーダライタでは、最初の非接触ＩＣカード識別処理において、非接触ＩＣカードの数がわからないため、通信可能な非接触ＩＣカードが１つしかないと仮定して上記“１”を設定するのである。このようにすることにより、複数の非接触ＩＣカードと通信を行う場合であれば最初の識別処理にて必ず応答の衝突が起こるが、タイムスロット数が１つしかないために、最初の初期応答リクエストに関する処理は短時間で終了する。このため、１つの非接触ＩＣカードとのみ通信を行うことが多いリーダライタでは、最初の識別処理においてタイムスロット数を“１”に設定することで識別処理を短時間で終了することが可能となる。
【００７３】
さて、上記制御手段１０５は、タイムスロット数に“１”を設定した後、非接触ＩＣカードの識別処理を行う（図７：Ｓ７０２）。即ち、図８に示すように、リーダライタ６０１は、１回目の識別処理８０１にて初期応答リクエスト８０３を送信する。当該初期応答リクエストに設定されているタイムスロット数は“１”であるため、非接触ＩＣカード４１０、４２０、４３０はそれぞれ応答にタイムスロット１（８０２）しか選択できない。つまり、非接触ＩＣカード４１０の応答８０４、非接触ＩＣカード４２０の応答８０５、非接触ＩＣカード４３０の応答８０６はそれぞれタイムスロット１（８０２）に対して送信される。
【００７４】
上記応答８０４〜８０６は、上記リーダライタ６０１を構成するアンテナ手段１０７、送受信手段１０６を介して上記制御手段１０５に受信される。次に上記制御手段１０５は、タイムスロット１に対応する応答８０４〜８０６を衝突検知手段６０２に送信する。上記衝突手段６０２は、当該タイムスロット１に対応する応答の内容から、タイムスロット１に対応する応答に“衝突“が含まれるか否かを判定する。
【００７５】
ここで、上記タイムスロット１に対応する応答は、上記応答８０４〜８０６が含まれているために“衝突”として検出される（図７：Ｓ７０３ＹＥＳ）。
【００７６】
上記衝突検知手段６０２が“衝突”を検知すると、その旨がスロット数増加手段６０３に伝えられ、当該スロット数増加手段６０３は、次回の初期応答リクエストのタイムスロット数を増加させるために、タイムスロット数に“１”より大きい数値を設定し、即ちタイムスロット数を増加させる（図７：Ｓ７０４）。尚、ここではタイムスロット数に“４”を設定したものとする。
【００７７】
上記スロット数増加手段６０３がタイムスロット数に“４”を設定すると、上記制御手段１０５は、２回目の識別処理８０７において再度初期応答リクエスト８１１を送信する（図７：Ｓ７０２）。
【００７８】
ここで、例えば上記非接触ＩＣカード４１０が応答８１２の送信にタイムスロット２（８０９）を、上記非接触ＩＣカード４２０が応答８１３の送信にタイムスロット４（８１０）を、上記非接触ＩＣカード４３０が応答８１４の送信にタイムスロット１（８０８）を選択したとする。
【００７９】
上記応答８１２〜８１４は、タイムスロット１〜４に対応する順序、即ち応答８１４、応答８１２、応答８１３の順序で上記制御手段１０５に受信された後、上記衝突検出手段６０２に送信される。
【００８０】
ここでは、上記衝突検出手段６０２においては衝突が検出されないため、タイムスロットの増加は行われない（図７：Ｓ７０３ＮＯ→ＥＮＤ）。当然、各応答８１２〜８１４は正常な応答としてリーダライタに識別されるため、以後各非接触ＩＣカード４１０〜４３０とリーダライタ６０１が通信可能となる。
【００８１】
以上のように、ＩＣカードからの応答の衝突の有無のみを検知し、当該衝突の有無のみに基づいてタイムスロットを増加させるため、リーダライタに複雑な構成を加えることなく、ＩＣカードの数に応じて識別を効率よく行うことができる。
【００８２】
尚、上記非接触ＩＣカードに変えて、接触式ＩＣカードを用いたリーダライタに対して本発明を適応させてもよい。また、上記タイムスロット方式に変えてスロットマーカ方式を利用したリーダライタに適用してもよいし、その他のスロット方式を用いたリーダライタに対して適用することも可能である。
【００８３】
又、上記タイムスロット数の増加は固定値であってもよいが、可変値であってもよい。
【００８４】
さらに、当初より複数のＩＣカードとの通信が予想されるリーダライタでは、必ずしも１回目の初期応答リクエストのタイムスロット数に“１”を設定する必要は無く、リーダライタに応じたタイムスロット数を設定してもよい。
【００８５】
（実施の形態３）
続いて、図９、図１０、図１１、図１２を参照し、本発明の実施の形態３に係るリーダライタ９０１について説明する。
【００８６】
図９は、上記実施の形態１におけるリーダライタ１０１、及び上記実施の形態２におけるリーダライタ６０１と同様の構成を有し、実施の形態２における衝突検出手段６０２の機能を応答検出手段１０２に備えている。即ち、リーダライタ９０１は、応答検出手段１０２、応答無効化手段１０３、及びスロット数増加手段６０３を備える。ここに、図１０は、本実施の形態３に係るリーダライタ９０１が実行する処理のフローチャートである。尚、各処理において、上記実施の形態１、２と同一の処理には同一の番号を記載している。
【００８７】
さて、本実施の形態３においては、図５にて示した状況に加えて、非接触ＩＣカード４４０をさらに加えた状況を仮定する。まず、上記リーダライタ９０１が、非接触ＩＣカード４１０、４２０、４３０、４４０と通信を行うに際して、制御手段１０５は１回目の識別処理１１０１に用いる初期応答リクエスト１１０３のタイムスロット数に“１”を設定する（図１０：Ｓ７０１）。
【００８８】
続いて、上記制御手段１０５が初期応答リクエスト１１０３を送信すると、次に、当該初期応答リクエストに対して、各非接触ＩＣカード４１０〜４４０が応答する（図１０：Ｓ７０２）。ここではタイムスロット数が“１”に設定されているために、各非接触ＩＣカード４１０〜４４０の応答１１０４〜１１０７はタイムスロット１（１１０２）のタイミングで送信される。このため、リーダライタ９０１を構成する応答検出手段１０２は、所定の記憶手段に記憶された当該タイムスロット１（１１０２）に対応する応答は“衝突”であると検出する（図１０：Ｓ３０２ＹＥＳ）。
【００８９】
尚、上記応答検出手段１０２にて“衝突”が検出されない場合、リーダライタ９０１の通信範囲内に通信可能な非接触ＩＣカードが無いか、あるいは問題なく各非接触ＩＣカードによる応答を受信したことを示し、応答検出手段１０２の処理は終了する（図１０：Ｓ３０２ＮＯ→終了）。また、応答を受信した場合であれば、上記制御手段１０５により以後の各通信処理が行われる。
【００９０】
続いて、上記応答検出手段１０２が“衝突”を検出すると、上記リーダライタ９０１を構成する応答無効化手段１０３は、例えば該応答無効化手段１０３内に設けられたカウンタに“１”を設定する（図１０：Ｓ３０２ＹＥＳ→Ｓ３０３）。
【００９１】
次に、上記応答無効化手段１０３がカウンタに“１”を設定すると、続いて当該カウンタが示すタイムスロットＮ（Ｎはカウンタの値）に対応する上記所定の記憶手段を参照し、“正常な応答”が格納されているかを判定する。
【００９２】
ここで、上記タイムスロット１（１１０２）に対応する記憶手段には、正常な応答が記録されていないので、続いて初期応答リクエストにて送信したタイムスロット数と、上記カウンタの値が一致するかを確認する（図１０：Ｓ３０４ＮＯ→Ｓ３０６）。
【００９３】
ここで、タイムスロット数が“１”であるため、スロット数増加手段６０３は２回目の識別処理１１０８にて送信される初期応答リクエスト１１０２に設定するタイムスロット数の値を増加させる（図１０：Ｓ３０６ＹＥＳ→Ｓ７０４）。尚、ここではタイムスロット数に“４”を設定したものとする。
【００９４】
続いて、上記初期応答リクエスト１１１２が送信されると、各非接触ＩＣカード４１０〜４４０は、設定された４つのタイムスロットより１つを選択する。ここで、例えば非接触ＩＣカード４１０、４３０は、タイムスロット２（１１１０）を選択し、非接触ＩＣカード４２０はタイムスロット１（１１０９）を選択し、非接触ＩＣカード４４０は、タイムスロット３（１１１１）を選択したものとする。
【００９５】
この場合、上記応答検出手段１０２は、タイムスロット１（１１０９）の応答にて非接触ＩＣカード４２０の応答１１１４を、タイムスロット２（１１１０）の応答にて非接触ＩＣカード４１０の応答１１１３と接触ＩＣカード４３０の応答１１１５との“衝突”を、タイムスロット３（１１１１）の応答にて非接触ＩＣカード４４０の応答１１１６を検出する。
【００９６】
上記応答検出手段１０２が、上記“衝突”を検出したので、上記応答無効化手段１０３は上記図１０における処理Ｓ３０３〜Ｓ３６６を繰り返すことで、上記非接触ＩＣカード４２０に対して応答無効化コマンド１１１７を、上記非接触ＩＣカード４４０に対して応答無効化コマンド１１１８を送信する。
【００９７】
これにより、上記非接触ＩＣカード４２０、及び上記非接触ＩＣカード４４０は、アクティブ期間に移行し、即ち以後の初期応答リクエストに対する応答は行わない。
【００９８】
続いて、カウンタＮとタイムスロット数を比較し、４つのタイムスロットすべてについての処理が終了すると、スロット数増加手段６０３にて３回目の識別処理１２０１におけるタイムスロット数の増加処理を行う（図１０：Ｓ３０６ＹＥＳ→Ｓ７０４）。
【００９９】
尚、ここで上記スロット数増加手段６０３は、タイムスロット数を増加させてもよいが、ここでは上記無効化手段１０３より応答無効化処理を行った旨を上記スロット数増加手段６０３が受信することで、当該スロット数増加手段６０３はタイムスロット数の増加を行わない。
【０１００】
以上のように、応答無効化処理の実行の有無に基づいてタイムスロット数の増加を決定することで、不要なタイムスロットの増加を行う必要が無く、即ちタイムスロット数の増加による識別処理の遅延を防ぐことができる。
【０１０１】
続いて、上記制御手段１０５は、３回目の識別処理１２０１のための初期応答リクエスト１２０５を送信する（図１０：Ｓ３０１）。尚、初期応答リクエスト１２０５におけるタイムスロット数は“４”である。
【０１０２】
上記３回目の識別処理１２０１において、上記非接触ＩＣカード４１０は、タイムスロット２（１２０３）を選択し、非接触ＩＣカード４３０は、タイムスロット４（１２０４）を選択したものとする。上記非接触ＩＣカード４２０、４４０は既に応答無効化処理によりアクティブ期間に移行しているため、初期応答リクエストに応答しないのは上述したとおりである。
【０１０３】
上記３回目の識別処理１２０１においては、上記応答検出手段１０２は“衝突”を検出せず、また“正常な応答”を検出しているため、上記非接触ＩＣカード４１０、４３０は通常（従来）の処理によりリーダライタ９０１にて識別される（図１０：Ｓ３０２→終了）。
【０１０４】
以後、各非接触ＩＣカード４１０〜４４０は、上記リーダライタ９０１と所定の通信を行い、例えば“ＨＡＬＴ“コマンド等により通信が終了する。
【０１０５】
尚、以後（次）の識別処理１２０８では、再度処理Ｓ７０１より識別処理が繰り返されるため、初期応答リクエスト１２１０に設定されるタイムスロット数は“１”となる。
【０１０６】
又、一旦応答が無効化された非接触ＩＣカード４２０、４４０も、通信終了時の“ＨＡＬＴ”コマンド等により、（アクティブ期間が終了し）初期応答リクエストに対する応答が可能となる。
【０１０７】
以上のように、衝突を起こしていない応答に対応するＩＣカードはその都度応答無効化処理を行うことにより、衝突を起こしたＩＣカードに対してのみ識別処理を行い、かつ、適宜タイムスロット数を増加させることにより、多数のＩＣカードの識別が必要なシステムにおいても、ＩＣカードの数に応じた識別を柔軟にかつ効率よく行うことができる。
【０１０８】
尚、上記実施の形態１、２と同様、上記非接触ＩＣカードに変えて、接触式ＩＣカードを用いたリーダライタに対して本発明を適応させてもよい。また、上記タイムスロット方式に変えてスロットマーカ方式を利用したリーダライタに適用してもよいし、その他のスロット方式を用いたリーダライタに対して適用することも可能である。
【０１０９】
又、上記タイムスロット数の増加は固定値であってもよいが、可変値であってもよい。
【０１１０】
さらに、当初より複数のＩＣカードとの通信が予想されるリーダライタでは、必ずしも１回目の初期応答リクエストのタイムスロット数に“１”を設定する必要は無く、リーダライタに応じたタイムスロット数を設定してもよい。
【０１１１】
（実施の形態４）
続いて、図１３〜図１５を参照し、本発明の実施の形態４に係るリーダライタ１３０１について説明する。
【０１１２】
図１３におけるリーダライタ１３０１は、上記実施の形態１におけるリーダライタ１０１と同様の構成を有するが、応答検出手段１０２、応答無効化手段１０３に替えて、記憶手段１３０２、算出手段１３０３及びスロット数再設定手段１３０３を備える。尚、各手段の詳細については後述する。また、図１４は上記記憶手段１３０２が記憶するデータのイメージ図であり、図１５は、本実施の形態４に係るリーダライタ１３０１が実行する処理のフローチャートである。
【０１１３】
上記実施の形態１〜３で述べたように、制御手段１０５は例えば複数枚の非接触ＩＣカードに対して初期応答リクエストを送信することにより、上記複数枚の非接触ＩＣカードをそれぞれ認識する点は同様である。
【０１１４】
ここで、認識が正常に完了すると、上記記憶手段１３０２は、正常に認識した非接触ＩＣカードの枚数を記憶する。例えば記憶の方法として、図１４Ａに示すように、ここでは１０個の記憶領域を設け、認識した枚数を新しいものから順次、記憶領域１４０１〜１４１０に記憶していく。このようにする事で、最近認識した非接触ＩＣカードの枚数を１０個格納する事ができる。
【０１１５】
次に、上記記憶手段１３０２への記憶が完了すると、上記算出手段１３０３は、上記格納した１０個の非接触ＩＣカードの枚数に基づいて、次回に送信する初期応答リクエストに含めるべきタイムスロット数を算出するのである。ここで、スロット数の算出方法はどのようなものでもよいが、例えば上記過去１０回分の枚数の平均値とすればよい。この場合、例えば端数は切り上げ、又は切り捨てればよい。具体的には、図１４Ａに示した例では、各記憶領域１４０１〜１４１０に記憶した数値（枚数）の平均は、「１．２」となり、初期応答リクエストに含めるタイムスロット数は「１」となる（切捨てを採用）。これに対して、例えば非接触ＩＣカードが普及し、財布の中などにある非接触ＩＣカードが増加した場合の例を図１４Ｂに示す。この場合、一度に認識される枚数は増加しており、図１４Ｂに示した各記憶領域１４１１〜１４２０に記憶した数値（枚数）の平均は、「５．１」となり、初期応答リクエストに含めるタイムスロット数は「５」となる（切捨てを採用）。
【０１１６】
上記算出手段１３０３にて算出されたタイムスロット数は、上記スロット数再設定手段１３０４に通知され、当該スロット数再設定手段１３０４は以後の初期応答リクエストに含まれるタイムスロット数に当該通知された数値を設定するのである。
【０１１７】
以後、上記制御手段１０５は、上記スロット数再設定手段１３０４にて再設定された数値（図１４Ｂの場合には「５」）を用いて初期応答リクエストを送信する。尚、非接触ＩＣカード側で、上記初期応答リクエストに含まれる数値を用いてタイムスロット数を算出し直す場合には、当該非接触ＩＣカード側で算出される数値が「５」以上となるように、初期応答リクエストに「３」を格納するのである。
【０１１８】
以上のように、過去の、非接触ＩＣカードを認識した履歴に基づいてタイムスロット数を動的に変更する事で、各カードの識別処理時間を高い確率で短縮する事が可能になる。また、時間が経過し、利用者一人が所有する非接触ＩＣカードの枚数が増加（変更）した場合においても、当該リーダライタを用いたシステムでは、自動的にタイムスロットの初期値を変更するため、結果として当該システムの耐用年数を延ばすことが可能になる。
【０１１９】
続いて、上記算出手段１３０３によるタイムスロット数の異なる算出方法について図１５を用いて説明する。
【０１２０】
次に説明する方法においては、上記算出手段１３０３は、認識した枚数の連続性に着目して初期値を変更するのである。
【０１２１】
まず、上記制御手段１０５は、初期応答リクエストに含まれる初期値（タイムスロット数）をＮとして識別処理を完了したとする（図１５：Ｓ１５０１）。すると、上記記憶手段１３０２は、当該認識した枚数ｎ１を記憶領域１４２１に格納すると共に、記憶領域１４２１に格納されていた、前回の処理にて認識した枚数を記憶領域１４２２にコピーし、枚数ｎ２とする。
【０１２２】
次に、上記算出手段１３０３は、上記記憶手段１３０２から枚数ｎ１及びｎ２を取得し、当該二つの枚数が同一か否かを比較する（図１５：Ｓ１５０２→Ｓ１５０３）。
【０１２３】
ここで、上記ｎ１とｎ２が同一ではない場合、連続カウンタｎｃを「０」とする（図１５：Ｓ１５０３ＮＯ→Ｓ１５０４）。ここで、連続カウンタｎｃとは、何回連続して同じ枚数のカードが認識されたかを示す値である。
【０１２４】
また、上記算出手段１３０３は、カード検索回数Ｎｓに「１」を加算し、さらに履歴回数Ｎｓｕｍに上記ｎ１を加算する（図１５：Ｓ１５０５→Ｓ１５０６）。ここで、上記カード検索回数Ｎｓとは、現在までにリーダライタが非接触ＩＣカードの識別処理を正常に終了した回数を示し、履歴回数Ｎｓｕｍとは、現在までにリーダライタが認識した非接触ＩＣカードの枚数を示す。
【０１２５】
続いて、上記算出手段１３０３は、初期値Ｎに、「Ｎｓｕｍ÷Ｎｓ×１．５」（小数点以下切り上げ）にて算出された数値を代入する（図１５：Ｓ１５０７）。ここでいう、「Ｎｓｕｍ÷Ｎｓ」は、現在までの、１回当りの識別処理で認識したカード枚数の平均値を示す。尚、当該「Ｎｓｕｍ÷Ｎｓ」に「１．５」を掛ける事で、カード枚数より大きい値の初期値を算出しているが、当該「１．５」は別の数値でもよい。
【０１２６】
上記算出手段１３０３にて算出された初期値Ｎは、上記スロット数再設定手段１３０４に通知され、当該スロット数再設定手段１３０４は初期値Ｎに当該通知された値を設定する。当該初期値Ｎは、上記制御手段１０５による以後の初期応答リクエスト（識別処理）にて利用される。
【０１２７】
さて、上記比較処理：Ｓ１５０３にて上記ｎ１とｎ２が同一である場合、連続カウンタｎｃを「１」インクリメントし、閾値Ｎｘと連続カウンタＮｃとを比較する（図１５：Ｓ１５０３ＹＥＳ→Ｓ１５０８→Ｓ１５０９）。
【０１２８】
ここで、上記連続カウンタｎｃ＜＝Ｎｘの場合、上記同様、処理Ｓ１５０５〜Ｓ１５０７により初期値Ｎが決定される（図１５：Ｓ１５０９ＮＯ→Ｓ１５０５・・・Ｓ１５０７）。
【０１２９】
一方、上記連続カウンタｎｃ＞Ｎｘの場合、上記カード検索回数Ｎｓを「０」に初期化し、さらに履歴回数Ｎｓｕｍも「０」で初期化する（図１５：Ｓ１５０９ＹＥＳ→Ｓ１５１０→Ｓ１５１１）。続いて、上記算出手段１３０３は、ｎ１が「１」か否かを判定する（図１５：Ｓ１５１２）。
【０１３０】
ここで、ｎ１が「１」の場合、初期値Ｎを「１」とし、当該初期値Ｎは、上記制御手段１０５による以後の初期応答リクエスト（識別処理）にて利用される（図１５：Ｓ１５１２ＹＥＳ→Ｓ１５１３）。
【０１３１】
また、ｎ１が「１」ではない場合、初期値Ｎに、「ｎ１×１．５」（小数点以下切り上げ）にて算出された数値を代入し、当該初期値Ｎは、上記制御手段１０５による以後の初期応答リクエスト（識別処理）にて利用される（図１５：Ｓ１５１２ＮＯ→Ｓ１５１４）。ここで、数値「１．５」は、上記同様、カード枚数より大きい値の初期値を算出するための値であるが、当該「１．５」は別の数値でもよい。
【０１３２】
以上のように、閾値（Ｎｘ）を用いて、認識したカードの枚数の連続回数を判定し、当該連続回数に基づいて初期値を算出してもよい。尚、上記処理では、認識枚数が「１」の場合には、「１．５」を掛けて切り上げする処理を行っていない。これは、カードの枚数が１枚の場合には、初期値を「１」にすることで最も識別処理を早く終了できるからである。
【０１３３】
尚、本実施の形態４における記憶手段、算出手段、スロット数再設定手段は、上記実施の形態１〜３に加えて実施する事が可能である。同時に実施する事で、一層識別処理時間を短縮する事が可能になる。
【発明の効果】
【０１３４】
以上のように、正常な応答を受信した場合には、上記衝突を検出していても、当該正常な応答を送信したＩＣカードに対して応答無効化コマンドを送信するため、以後の識別処理は衝突を起こした応答を送信したＩＣカードのみが対象となる。即ち、以後の識別処理においては応答が衝突する確立が減少し、即ち識別処理を高速に完了することができる。
【０１３５】
又、ＩＣカードからの応答の衝突の有無のみを検知し、当該衝突の有無のみに基づいてタイムスロットを増加させるため、リーダライタに複雑な構成を加えることなく、ＩＣカードの数に応じて識別を効率よく行うことができる。
【０１３６】
さらに、衝突を起こしていない応答に対応するＩＣカードはその都度応答無効化処理を行うことにより、衝突を起こしたＩＣカードに対してのみ識別処理を行い、かつ、適宜タイムスロット数を増加させることにより、多数のＩＣカードの識別が必要なシステムにおいても、ＩＣカードの数に応じて識別を柔軟にかつ効率よく行うことができる。
【０１３７】
また、過去の、非接触ＩＣカードを認識した履歴に基づいてタイムスロット数を動的に変更する事で、各カードの識別処理時間を高い確率で短縮する事が可能になる。同時に、該リーダライタを用いたシステムの耐用年数を延ばすことが可能になる。
【図面の簡単な説明】
【０１３８】
【図１】
実施の形態１におけるリーダライタの機能ブロック図。
【図２】
実施の形態１におけるリーダライタのハードウェア構成図。
【図３】
実施の形態１におけるリーダライタが実行する処理のフローチャート。
【図４】
実施の形態１における識別処理のイメージ図。
【図５】
リーダライタ及び非接触ＩＣカードの通信イメージ図。
【図６】
実施の形態２におけるリーダライタの機能ブロック図。
【図７】
実施の形態２におけるリーダライタが実行する処理のフローチャート。
【図８】
実施の形態２における識別処理のイメージ図。
【図９】
実施の形態３におけるリーダライタの機能ブロック図。
【図１０】
実施の形態３に係るリーダライタが実行する処理のフローチャート。
【図１１】
実施の形態３における識別処理の第１イメージ図。
【図１２】
実施の形態３における識別処理の第２イメージ図。
【図１３】
実施の形態４におけるリーダライタの機能ブロック図。
【図１４】
記憶手段が記憶するデータのイメージ図。
【図１５】
実施の形態４に係るリーダライタが実行する処理のフローチャート。
【図１６】
従来のリーダライタ及び非接触ＩＣカードの通信イメージ図。
【図１７】
従来の識別処理のイメージ図。
【図１８】
初期応答リクエストパケットのフォーマットを示す図。
【符号の説明】
【０１３９】
１０１  リーダライタ
１０２  応答検出手段
１０３  応答無効化手段
１０４  ＲＯＭ
１０５  制御手段
１０６  送受信手段
１０７  アンテナ手段