以下、添付の図面を参照した発明の実施の形態を説明する。
(1)非接触ICカードの認識方法.
本発明の非接触ICカードの認識システムは、例えば、地下鉄などの自動改札機に採用されることを想定している。より具体的には、図1の(a)に示すように、自動改札機として機能するリーダ/ライタ100の前を、例えば定期券や回数券としての機能を有する非接触ICカード200,300,400を有する人が順に通過する場合を想定する。リーダ/ライタ100は、前を通過する際に通信エリア内に入る非接触ICカード200,300,400を順に認識し、各カードより定期券か回数券の種別についての情報、カードが定期券の場合には有効期限などの情報、カードが回数券の場合には残りの枚数などの情報を読み取り、更に、必要に応じて各カードの情報を更新する。
ここで、図1の(b)に示すように、自動改札機であるリーダ/ライタ100の前を、使用中の回数券である非接触ICカード200の他に、予備の回数券として非接触ICカード500を持った人が通過する場合、即ち、リーダ/ライタ100の通信エリア内に同時に2枚以上の非接触ICカードが存在する場合、本発明の非接触ICカードの認識システムにおいては、以下の手順で非接触ICカードの認識が行われる。
まず、自動改札機であるリーダ/ライタ100からのポーリング(呼びかけ)に対して、各非接触ICカード200及び500は、タイムスロット1、即ち単一のタイミングでレスポンス信号の送信を行う。当該方法を採用することで、リーダ/ライタ100の通信エリア内に非接触ICカードが1枚しかない場合における迅速な応答を実現することができる。
リーダ/ライタ100では、2枚の非接触ICカード200,500より同時に送られてくるレスポンス信号が衝突して受信エラーを起こすため、再びポーリングを行う。この2度目のポーリングに対して、各カードは、2つ以上、例えば4つのタイムスロットの内、ランダムに選択したタイミングでレスポンス信号の送信を行う。または、乱数値などの予測不能な値に基づいてレスポンス信号を送信する/しないの判断を行い、これに従う。リーダ/ライタ100は、最も早くレスポンス信号を送信してきた非接触ICカードを認識し、当該認識した非接触ICカードに対して所定の処理を実行する。
以上の方法により非接触ICカードの認識を行うことで、図1の(a)に示したように、リーダ/ライタ100の通信エリアを非接触ICカードが1枚ずつ順に通過する場合の迅速な応答性を確保すると同時に、図1の(b)に示したように、リーダ/ライタ100の通信エリア内に2枚以上の非接触ICカードが同時に存在する場合におけるレスポンス信号の衝突を有効に防止することができる。また、一旦コマンド処理(上記の例では改札処理)の終了したカードは、リーダ/ライタ100からの再度のポーリングに対してレスポンス信号の送信を行わないように構成することで、2枚のカード200,500からのレスポンス信号の衝突をより有効に回避することができる(以下に説明する実施の形態5〜9を参照)。
以下、上記方法を採用するリーダ/ライタ100、及び、非接触ICカード200,300,…の構成及び動作について、添付の図面を用いて実施の形態1〜9の順で説明する。
(2)実施の形態1.
以下、実施の形態1にかかるリーダ/ライタ100及び非接触ICカード200,300,400,…よりなる非接触ICカードの認識システムについて説明する。なお、非接触ICカード200,300,400の構成は同一であるため、以下、主に非接触ICカード200を用いて説明する。以下に説明する実施の形態2〜9についても同じである。
図2は、実施の形態1にかかるリーダ/ライタ100及び非接触ICカード200の構成を示す図である。リーダ/ライタ100は、アンテナ101、送受信回路102、中央演算処理装置であるCPU103、非接触ICカードに対してポーリングを行うための制御プログラムの格納されているROM104、プログラム実行時に使用されるRAM105、CPU103の処理結果を各処理装置へと出力するためのインターフェース106より構成されている。なお、点線で囲むように、CPU103,ROM104,RAM105は、制御回路を構成する。
非接触ICカード200は、アンテナ201、送受信回路202、中央演算処理装置であるCPU203、リーダ/ライタ100からのポーリングに対処するための制御プログラムの格納されているROM204、プログラム実行時に使用されるRAM205、独自の情報、例えば回数券として機能する非接触ICカードの場合、カードの有効期限や有効乗車エリアなどの固有の情報を保持する情報記憶部206、リーダ/ライタ100からの2回目以降のポーリングに対してレスポンス信号の送信を行うタイミングを決定する際に用いる乱数発生回路207より構成される。なお、点線で囲むように、CPU203,ROM204,RAM205は、制御回路を構成する。リーダ/ライタ100及び非接触ICカード200は、制御回路としてROM101及び204に記憶するプログラムを実行して所定の通信機能を発揮するソフトウェア実行回路を構成するが、当該通信機能はハードウェア(ハードロジック)で構成された制御回路によって実現してもよい。
図3は、リーダライタ100の通信エリア内に非接触ICカード200及び該カード200と同じ構成で、異なる固有情報(原則的に同種類のものである)を有する非接触ICカード300(図示せず)が存在する場合に、各々の間での交信状態を示すタイムチャートである。リーダ/ライタ100(図中、R/Wと示す)は、ポーリング(図中、"P"で示す)を出力した後、タイムスロット1で非接触ICカードからレスポンス信号が送られてくるのを待つ。リーダ/ライタ100よりポーリングを受け取った非接触ICカード200及び300は、直ちにレスポンス信号(図中、"R"で示す)を出力する。この場合、リーダ/ライタ100では、2つのカードからのレスポンス信号が衝突して受信エラーを起こすため、再びポーリングを出力して、今度はタイムスロットを4つ設定して非接触ICカードからレスポンス信号が送られてくるのを待つ。非接触ICカード200は、内部に備える乱数発生回路207において生成された2ビットの乱数値により特定されるタイミングでレスポンス信号を出力する。また、非接触ICカード300は、内部に備える乱数発生回路307(図示せず)において生成された2ビットの乱数値により特定されるタイミングでレスポンス信号を出力する。本図の場合、非接触ICカード200は、タイミングT1でレスポンス信号を出力し、非接触ICカード300は、タイミングT4でレスポンス信号を出力している。
この後、リーダ/ライタ100は、先にレスポンス信号を返送してきた非接触ICカード200を指定して、所定のコマンド処理、例えば固有情報のデータの受取の処理を要求する。なお、非接触ICカード200よりレスポンス信号が返送され、当該非接触ICカードがリーダ/ライタ100に認識された後の処理については、従来の方法と同様であり、ここでの説明は省略する。
図4は、リーダ/ライタ100の実行する通信処理のフローチャートである。リーダ/ライタ100は、通信エリア内に入ってきた非接触ICカード(例えば、非接触ICカード200)に対してポーリングを出力した後に(ステップS1)、タイムスロット1で非接触ICカードからの返事を待つ(ステップS2でNO)。
ここで、同時に複数の非接触ICカード(例えば、非接触ICカード200及び300)からレスポンス信号が送信されてきた場合には(ステップS2でYES)、正常に受信を行うことができないため(ステップS3でYES)、再度ポーリングを送信し(ステップS4)、今度はタイムスロットを4つ設定して非接触ICカードからの返事を待つ(ステップS5でNO)。非接触ICカードからレスポンス信号を受けた場合には(ステップS5でYES)、ステップS3に戻る。
一方、非接触ICカードから単一のレスポンス信号が帰ってきた場合には(ステップS2でYES、ステップS3でNO)、当該レスポンス信号の帰ってきた非接触ICカードとの所定のコマンド処理を実行する(ステップS6)。他に未処理のカードがある場合(ステップS7でYES)、ステップS1に戻る。なお、当該ステップS7において他に未処理のカードがあるか否かの判断は、例えば以下のようにして行う。ステップS2において1つだけレスポンス信号が帰ってきた場合には、非接触ICカードは1枚だけ、即ち、他に処理すべき非接触ICカードはないと判断し、ステップS4で再度ポーリングを行いタイムスロット4で返事を待った結果、複数のレスポンス信号が帰ってきた場合には、他に処理すべき非接触ICカードが存在すると判断する。当該ステップS7において他に処理すべき非接触ICカードがないと判断した場合には(ステップS7でNO)、処理を終了する。
図5は、非接触ICカード200のCPU203、及び、非接触ICカード300のCPU303(図示せず)が実行する通信処理のフローチャートである。まず、ポーリング回数などの変数を初期化する(ステップS10)。リーダ/ライタ100からコマンドが送信されてくるのを待機する(ステップS11でNO)。コマンドを受信した場合であって(ステップS11でYES)、当該コマンドがポーリングである場合(ステップS12でYES)、その受信回数に基づいて以下の処理を実行する。即ち、1回目のポーリングの受信である場合(ステップS13でYES)、タイムスロット1で直ちにレスポンス信号を出力した後(ステップS14)、ステップS11に戻る。一方、2回目以降のポーリングの受信の場合には(ステップS13でNO)、乱数発生回路207で生成された2ビットの乱数の値により決定したタイムスロットでレスポンス信号を出力した後に(ステップS15)、ステップS11に戻る。
一方、ステップS12において、受け取った信号がポーリング以外の処理を要求するコマンドであって(ステップS12でNO)、当該カード自身を指定するコマンドの場合には(ステップS17でYES)、固有情報の読みだし等のコマンド処理を実行した後に(ステップS17)、ステップS11に戻る。受け取ったコマンドが当該カードを指定するものでない場合(ステップS16でNO)、直ちにステップS11に戻る。
図6は、図5に示した処理フローチャートにおけるステップS13,S14,S15にかかる処理をハードウェアで実現する場合の構成例を示す図である。フリップフロップ210は、リセット時は"L"の信号を出力するが、1回目のポーリング受信後は"H"の信号を出力する。フリップフロップ210より出力された信号は、インバータ211を介して反転された後に、次段のタイムスロット設定回路213に入力される。当該信号は、タイムスロット設定回路213のディスイネーブル端子に入力されている。このインバータ211を介して入力される信号が"H"の場合、タイムスロット設定回路213は、タイムスロット1の設定信号を出力する。
タイムスロット設定回路213は、インバータ211を介して入力される信号が"L"の場合、乱数発生回路207より出力される乱数の下位2ビットの値により特定される1〜4のタイムスロットの設定信号を出力する。例えば、乱数の下位2ビットの値が"00"の場合にはタイムスロット1の設定信号を出力し、乱数の下位2ビットの値が"01"の場合にはタイムスロット2の設定信号を出力し、乱数の下位2ビットの値が"10"の場合にはタイムスロット3の設定信号を出力し、乱数の下位2ビットの値が"11"の場合にはタイムスロット4の設定信号を出力する。
(3)実施の形態2.
実施の形態2にかかる非接触ICカードの認識システムで用いる非接触ICカード260(図示せず)は、実施の形態1の非接触ICカード200より乱数発生回路207を削除したものである。実施の形態1におけるシステムで用いる非接触ICカード200は、2回目以降のポーリング信号の受信に対してレスポンス信号の送信を行うタイムスロットの数を乱数発生回路207により生成される2ビットの乱数の値により特定するが、実施の形態2にかかるシステムで用いる非接触ICカード260は、リーダ/ライタ110に対する1回目のレスポンス信号の送信時に当該信号に付属するCRC(cyclic redundancy check)信号の値を乱数とみなして用いることを特徴とする。この場合、図7に示すようにポーリングのリトライ回数に応じてスロット数を特定する際に用いる2ビットの値を、下位1ビット及び2ビット、下位2ビット及び3ビット、下位3ビット及び4ビット、…のように、1ビット毎上位のビットにずらして用いる。このようにCRC信号を有効に活用することで、実施の形態1のシステムにおいて用いる非接触ICカード200で使用していた乱数発生回路207を削除することができ、構成の簡略化を図ることができる。なお、実施の形態2のシステムにおいて用いる非接触ICカード260を認識するリーダ/ライタ110の構成及び動作は、実施の形態1のシステムにおいて用いるリーダ/ライタ100と同じであり、ここでの重複した説明は省く。
図8は、乱数発生回路207のかわりにCRC信号を利用する非接触ICカード260のCPU(図示せず)の実行する処理フローチャートである。まず、ポーリング回数を表す変数nの値を0に設定する(ステップS20)。リーダ/ライタ110よりコマンドが送られてくるのを待機する(ステップS21でNO)。コマンドを受信した場合であって(ステップS21でYES)、当該コマンドがポーリングである場合には(ステップS22でYES)、以下の処理を実行する。
変数nの値が0の場合(ステップS23でYES)、第1回目のポーリングの受信であると判断する。この場合、タイムスロット1でレスポンス信号の送信を行った後に(ステップS24)、ステップS21に戻る。
一方、変数nの値が1以上の場合(ステップS23でNO)、2回目以上のポーリング受信であると判断し、1回目のポーリングに対する最初のレスポンス信号に付属したCRC信号の下位n,n+1ビットのデータで表されるスロットのタイミングでレスポンス信号を出力する(ステップS25)。変数nの値に1を加算した後に(ステップS26)、ステップS21に戻る。
受け取ったコマンド信号がポーリング信号でなく(ステップS22でNO)、自分を指定するコマンドである場合には(ステップS27でYES)、当該コマンドを実行した後に(ステップS28)、ステップS21に戻る。他方、受け取ったコマンドが自分を指定するものではない場合には(ステップS27でNO)、そのままステップS21に戻る。
図9は、図8のフローチャートにおけるステップS23,S24,S25にかかる処理をハードウェアで実現する場合の構成例を示す図である。フリップフロップ220は、リセット時は"L"の信号を出力するが、1回目のポーリング受信後は"H"の信号を出力する。フリップフロップ220より出力された信号は、インバータ221を介して次段のタイムスロット設定回路223に入力される。当該信号は、タイムスロット設定回路223のディスイネーブル端子に入力されている。このインバータ221を介して入力される信号が"H"の場合、タイムスロット設定回路223は、タイムスロット1の設定信号を出力する。
他方、インバータ221を介して入力される信号が"L"の場合、タイムスロット設定回路223は、CRC信号出力回路222より出力されるCRC信号の所定のビット位置の2ビット分のデータにより特定される1〜4のタイムスロットの設定信号を出力する。なお、CRC信号出力回路222は、信号の送信時に生成されるCRC信号からCPUが選択した所定のビット位置の2ビット分のデータを出力する。例えば、CPUは、ポーリング回数が2回目の場合には、CRC信号の下位1ビット目及び2ビット目のデータを選択する。当該2ビット分のデータの値が"0","0"の場合にはタイムスロット1の設定信号を出力し、"0","1"の場合にはタイムスロット2の設定信号を出力し、"1","0"の場合にはタイムスロット3の設定信号を出力し、"1","1"の場合にはタイムスロット4の設定信号を出力する。
以上説明したように、実施の形態2にかかる非接触ICカードの認識システムで用いる非接触ICカード260では、乱数発生回路を用いずに実施の形態1のシステムと同様の動作を実現する。これにより、非接触ICカード260の構成の簡略化及びコストダウンを図ることができる。
(4)実施の形態3.
実施の形態3にかかる非接触ICカードの認識システムにおいて用いる非接触ICカード261(図示せず)は、リーダ/ライタ120からのポーリングに対して、1回目は直ちにレスポンス信号を送信し、2回目以降は、乱数発生回路により発生した乱数の下位1ビットの値に基づいてレスポンス信号を送信する/しないを決定し、当該決定に従ってレスポンス信号を送信する。また、リーダ/ライタ120は、ポーリングした後は、常にタイムスロット1で非接触ICカードからのレスポンス信号の返送を待機する。なお、リーダ/ライタ120及び非接触ICカード261の構成は、図2に示した実施の形態1のシステムで用いるリーダ/ライタ100及び非接触ICカード200の構成と同じである。
図10は、実施の形態3のシステムにおいて用いるリーダライタ120の通信エリア内に非接触ICカード261及び、該カード261と同じ構成で、異なる固有情報を有する非接触ICカード361(図示せず)が存在する場合に、各々の間での交信状態を示すタイムチャートである。リーダ/ライタ120(図中、R/Wと示す)は、ポーリング(図中、"P"で示す)を出力した後、タイムスロット1で非接触ICカードからのレスポンス信号の返送を待つ。リーダ/ライタ120よりポーリングを受け取った非接触ICカード261及び361は、直ちにレスポンス信号(図中、"R"で示す)を出力する。この場合、リーダ/ライタ120では、2つのカードからのレスポンス信号が衝突して受信エラーを起こすため、再びポーリングを出力して、タイムスロット1で非接触ICカードからレスポンス信号が送られてくるのを待つ。非接触ICカード261は、内部に備える乱数発生回路(図示せず、図2の乱数発生回路207を参照)において生成された1ビットの乱数値によりレスポンス信号を送信する/しないを決定し、当該決定に従ってレスポンス信号を送信する。非接触ICカード361は、内部に備える乱数発生回路(図示せず、図2の乱数発生回路207を参照)において生成された1ビットの乱数値によりレスポンス信号を送信する/しないを決定し、当該決定に従ってレスポンス信号の送信を行う。本図の場合、非接触ICカード261は、タイミングT1でレスポンス信号を送信し、非接触ICカード361は、レスポンス信号の送信を行っていない。この後、リーダ/ライタ120は、レスポンス信号を返送してきた非接触ICカード261を指定して、所定のコマンド処理、例えば固有情報のデータの受取の処理を要求する。なお、非接触ICカード261よりレスポンス信号が返送され、当該非接触ICカードがリーダ/ライタ120に認識された後の処理については、従来の方法と同様であり、ここでの説明は省略する。
図11は、リーダ/ライタ120の実行する通信処理のフローチャートである。リーダ/ライタ120は、通信エリア内に入ってきた非接触ICカードに対してポーリングを行った後(ステップS30)、タイムスロット1で非接触ICカードからの返事を待つ(ステップS31でNO)。ここで、同時に複数の非接触ICカードからレスポンス信号が送信されてきた場合には(ステップS31でYES)、正常に受信を行うことができないため(ステップS32でYES)、ステップS30に戻り、再びポーリングを行う。一方、1枚の非接触ICカードからのレスポンス信号を受け取った場合には(ステップS32でNO)、引き続き、所定のコマンドを実行した後に(ステップS33)、ステップS30に戻る。
図12は、非接触ICカード261のCPU(図示せず)、及び、非接触ICカード361のCPU(図示せず)の実行する通信処理のフローチャートである。まず、ポーリング回数などの変数を初期化する(ステップS40)。リーダ/ライタ120からコマンドが送られてくるのを待機する(ステップS41でNO)。コマンドを受信した場合であって(ステップS41でYES)、該コマンドがポーリングである場合(ステップS42でYES)、その受信回数に基づいて、以下の処理を実行する。即ち、1回目のポーリングの受信である場合(ステップS43でYES)、タイムスロット1で直ちにレスポンス信号の送信を行った後に(ステップS44)、ステップS41に戻る。一方、2回目以降のポーリング受信の場合には(ステップS43でNO)、乱数発生回路により発生される1ビットデータの値に基づいて、レスポンス信号を送信する/しないを決定し、これに従ってレスポンス信号の送信を行った後に(ステップS45)、ステップS41に戻る。
一方、ステップS42において、受け取った信号が処理要求コマンドであって(ステップS42でNO)、当該カード自身を指定するコマンドの場合には(ステップS46でYES)、固有情報の読み出しなどのコマンド処理を実行した後に(ステップS47)、ステップS41に戻る。当該カード自身を指定するコマンドでない場合には(ステップS46でNO)、直ちにステップS41に戻り、新たなコマンドの受取を待機する。
図13は、図12に示した処理フローチャートにおけるステップS44,S45にかかる処理をハードウェアで実現する場合の構成例を示す図である。フリップフロップ230は、リセット時は"L"の信号を出力するが、1回目のポーリング受信後は"H"の信号を出力する。フリップフロップ230より出力された信号は、インバータ231を介して次段のORゲート233に入力される。ORゲート233の残りの信号入力端子には乱数発生回路232(図2の乱数発生回路207に相当)より出力された1ビットの乱数が入力される。ORゲート233からは、1回目のポーリングを受け取るまでは、ポーリングレスポンス許可信号として"H"を出力する。2回目以降のポーリング受信時には、乱数発生回路232より出力される1ビットの信号と同じ信号をポーリングレスポンス許可信号として出力する。なお、ポーリングレスポンス許可信号は、"H"の場合にレスポンス信号の送信を許可する。
(5)実施の形態4.
実施の形態4にかかる非接触ICカード262は、実施の形態3にかかる非接触ICカード261より乱数発生回路232を削除したものである。実施の形態3におけるシステムでは、2回目以降のポーリング信号の受信に対してレスポンス信号を送信する/しないの決定を乱数発生回路232により生成された1ビットの乱数により決定していたが、実施の形態4にかかるシステムで用いる非接触ICカード262(図示せず)は、最初にリーダ/ライタ130に対するレスポンス信号の送信時に付属するCRC信号の値を乱数とみなして用いる。この場合、ポーリングのリトライ回数に応じてレスポンス信号を送信する/しないの判断に用いる1ビットの値を下位1ビット、下位2ビット、下位3ビット、…のように、1ビット毎上位のビットにずらして用いる。このようにCRC信号を有効に活用することで、実施の形態3の非接触ICカード261で使用していた乱数発生回路232を省くことが可能となり、構成の簡略化を図ることができる。なお、実施の形態4において非接触ICカード262を認識するリーダ/ライタ130の構成及び動作は、実施の形態3におけるリーダ/ライタ120と同じであり、ここでの重複した説明は省く。
図14は、乱数発生回路232のかわりにCRC信号を利用する非接触ICカード262のCPU(図示せず)の実行する処理フローチャートである。まず、ポーリング回数を表す変数nの値を0に設定する(ステップS50)。リーダ/ライタ130よりコマンドが送られてくるのを待機する(ステップS51でNO)。コマンドを受信した場合であって(ステップS51でYES)、当該コマンドがポーリングである場合には(ステップS52でYES)、以下の処理を実行する。
変数nの値が0の場合(ステップS53でYES)、第1回目のポーリングの受信であると判断する。この場合、タイムスロット1でレスポンス信号の送信を行った後に(ステップS54)、ステップS51に戻る。一方、変数nの値が1以上の場合(ステップS53でNO)、2回目以上のポーリング受信であると判断し、1回目のポーリングに対する最初のレスポンス信号に付属したCRC信号の下位nビットのデータに基づいてレスポンス信号を送信する/しないを決定し、これに従う(ステップS55)。変数nの値に1を加算した後に(ステップS56)、ステップS51に戻る。受け取ったコマンド信号がポーリング信号でなく(ステップS52でNO)、自分を指定するコマンドである場合には(ステップS57でYES)、当該コマンドを実行した後に(ステップS58)、ステップS51に戻る。他方、受け取ったコマンドが自分を指定するものでない場合には(ステップS57でNO)、そのままステップS51に戻る。
図15は、図8のフローチャートにおけるステップS53,S54,S55にかかる処理をハードウェアで実現する場合の構成例を示す図である。フリップフロップ240は、リセット時は"L"の信号を出力するが、1回目のポーリング受信後は"H"の信号を出力する。フリップフロップ240より出力された信号は、インバータ241を介してORゲート243に入力される。ORゲート243の残りの信号入力端子にはCRC信号出力回路242より出力される所定の1ビットの値が乱数として入力される。なお、CRC信号出力回路242は、信号の送信時に生成されるCRC信号からCPUが選択した所定の1ビットのデータを出力する。ORゲート243からは、1回目のポーリングを受け取るまでは、ポーリングレスポンス許可信号として"H"を出力する。2回目以降のポーリング受信時には、CRC信号出力部242から出力された1ビットの信号と同じ信号をポーリングレスポンス許可信号として出力する。なお、ポーリングレスポンス許可信号は、"H"の場合にレスポンス信号の送信を許可する。
以上に説明したように、実施の形態4にかかる非接触ICカード262では、乱数発生回路を用いずに実施の形態3と同様の動作を実現する。これにより、構成の簡略化を図ることができ、カードのコストダウンを図ることができる。
(6)実施の形態5.
実施の形態5にかかる非接触ICカードの認識システムにおいて用いるリーダ/ライタ150及び非接触ICカード263,264は、図16に示すように、リーダ/ライタ150の通信エリア内にコマンド処理済みの非接触ICカード263が未だ存在する場合に、未処理の非接触ICカード264が入ってきた際に生じうるコマンドの衝突を有効に防止することを目的とするものであり、一旦処理の終了した非接触ICカードは、ポーリングに対してレスポンス信号の送信を行わない。
実施の形態5にかかる非接触ICカードの認識システムでは、リーダ/ライタ150の構成及び動作は既に説明した実施の形態1乃至4のリーダ/ライタの何れでも良い。このため、ここでの重複した説明は省く。図17は、本システムにおける非接触ICカード263,264のCPU(図示せず)の実行する通信処理の手順を示すフローチャートである。まず、ポーリングコマンド実行フラグPの値を0にセットする(ステップS60)。ポーリング以外の他のコマンドの実行フラグCの値を0にセットする(ステップS61)。リーダ/ライタ150からのコマンドが送られてくるのを待機する(ステップS62でNO)。リーダ/ライタ150からコマンドを受け取った場合であって(ステップS62でYES)、受け取ったコマンドがポーリングの場合(ステップS63でYES)、以下の処理を実行する。ポーリングコマンド実行フラグP、及び、他のコマンド実行フラグCの値が共に1でない場合(ステップS64でNO)、レスポンス信号の送信を行うと共に(ステップS65)、フラグPの値を1にセットした後に(ステップS66)、ステップS62に戻る。他方、ポーリングコマンド実行フラグPの値が1、又は、他のコマンド実行フラグCの値が1の場合(ステップS64でYES)、レスポンス信号の送信は行わずにステップS62に戻る。
一方、受け取ったコマンドがポーリング以外のコマンドの場合であって(ステップS63でNO)、当該カードを指定するものである場合には(ステップS67でYES)、所定のコマンド処理を実行すると共に(ステップS68)、他のコマンド実行フラグCの値を1にセットした後に(ステップS69)、ステップS62に戻る。
以上説明するように、非接触ICカード263は、ポーリングに対して一旦レスポンス信号の送信を行った後は、自分が指定されたコマンドの処理要求に対してのみ応答することになる。これにより、リーダ/ライタ150の通信エリア内に、未だ処理済みの非接触ICカード263が残っている場合に、次の未処理の非接触ICカード264が入ってきた際に生じうるレスポンス信号の衝突を有効に防止することができる。
図18は、図17に示したフローチャートのステップS64,S65,S66にかかる処理をハードウェアで実現する場合の構成例を示す図である。フリップフロップ250にはポーリングコマンド実行フラグPの値が入力される。既に説明したようにポーリングコマンド実行フラグPは、ポーリングに対してレスポンス信号の送信を行った場合に1にセットされる。フリップフロップ250からの出力は、NANDゲート251に入力される他、他のコマンド実行許可信号として出力される。フリップフロップ252には他のコマンド実行フラグCの値が入力される。上記他のコマンド実行フラグCは、非接触ICカード263がリーダ/ライタ150に指定され、所定の処理を実行した後に1にセットされる。フリップフロップ252からの出力は、NANDゲート251の残りの入力端子に入力される。NANDゲート251は、各フリップフロップより入力される信号が共に1(即ち"H")の場合を除き、レスポンス信号の送信を許可する"H"の信号をポーリングレスポンス許可信号として出力する。
(7)実施の形態6.
実施の形態5で示したシステムでは、リーダ/ライタ150の通信エリア内に未処理の非接触ICカードが2枚同時に存在する場合については考慮していない。即ち、リーダ/ライタ150の通信エリア内に同時に2枚以上の未処理の非接触ICカードが入ってきた場合には、レスポンス信号の衝突が生じるといった問題を有していた。実施の形態6にかかる非接触ICカードの認識システムでは、実施の形態1に示した非接触ICカードの認識システムで用いる非接触ICカード200に、リーダ/ライタ160からのポーリングに対してレスポンス信号の送信を行い、所定の処理を実行した後は、リーダ/ライタ160からのポーリングに対してレスポンス信号の送信を行わない機能を追加した非接触ICカード265を採用することで上記問題を解決する。
図19は、リーダ/ライタ160の通信エリア内に非接触ICカード265及び該カード265と同じ構成で、異なる固有情報を有する非接触ICカード365が存在する場合に、各々の間での交信状態を示すタイムチャートである。リーダ/ライタ160(図中、R/Wと示す)は、ポーリング(図中、"P"で示す)を出力した後、タイムスロット1で非接触ICカード265又は365からのレスポンス信号の返送を待つ。リーダ/ライタ160よりポーリングを受け取った非接触ICカード265及び365は、タイムスロット1で直ちにレスポンス信号(図中、"R"で示す)を出力する。この場合、リーダ/ライタ160では、2つのカードからのレスポンス信号が衝突して受信エラーを起こすため、再びポーリングを出力して、タイムスロットを4つ設定して非接触ICカードからレスポンス信号が送られてくるのを待つ。非接触ICカード265は、内部に備える乱数発生回路(図示せず、図2の乱数発生回路207に相当)において生成された2ビットの乱数値により特定されるタイミングでレスポンス信号を出力する。非接触ICカード365は、内部に備える乱数発生回路(図示せず)において生成された2ビットの乱数値により特定されるタイミングでレスポンス信号を出力する。本図の場合、非接触ICカード265は、タイミングT1でレスポンス信号を出力し、非接触ICカード365は、タイミングT4でレスポンス信号を出力している。この後、リーダ/ライタ160は、先にレスポンス信号を返送してきた非接触ICカード265を指定して、所定のコマンド処理、例えば固有情報のデータの受取の処理を要求する(図中、"C"と示す)。これに対して非接触ICカード265は、要求された内容の処理を実行する(図中、"W"と示す)。
リーダ/ライタ160は、ポーリング回数をリセットした後に1回目のポーリングを行う。このポーリングに対し、既に処理済みの非接触ICカード265はレスポンス信号の送信を行わず、非接触ICカード365のみがレスポンス信号の送信を行う。リーダ/ライタ160は、レスポンス信号を返送してきた非接触ICカード365を指定して、所定のコマンド処理、例えば固有情報のデータの受取の処理を要求する。非接触ICカード365は、要求された内容の処理を実行する。
実施の形態6にかかるシステムで用いるリーダ/ライタ160の構成及び動作は、実施の形態1のシステムで用いるリーダ/ライタ100と同じである(図2及び図4を参照)。このため、ここでの重複した説明は省く。
図20は、非接触ICカード265のCPU(図示せず)の実行する通信処理のフローチャートである。まず、ポーリングを除く他のコマンド実行フラグCを0にセットすると共に、ポーリング回数等の変数を初期化する(ステップS70)。リーダ/ライタ160からコマンドが送信されてくるのを待機する(ステップS71でNO)。コマンドを受信した場合であって(ステップS71でYES)、当該コマンドがポーリングである場合(ステップS72でYES)、他のコマンド実行フラグCの値及びポーリングの受信回数に基づいて、以下の処理を実行する。他のコマンド実行フラグCの値が0の場合、即ち、個別のコマンド処理が未だの場合であって(ステップS73でNO)、1回目のポーリングの受信である場合(ステップS74でYES)、タイムスロット1で直ちにレスポンス信号を出力する(ステップS75)。一方、2回目以降のポーリングの受信の場合には(ステップS74でNO)、乱数発生回路で生成された2ビットの乱数の値により決定したタイムスロットでレスポンス信号を出力する(ステップS76)。他のコマンド実行フラグCの値が1、即ち、個別のコマンド処理を実行済みの場合(ステップS73でYES)、ポーリングに対するレスポンス信号の送信は行わずにステップS71に戻る。
一方、ステップ72において、受け取った信号がポーリング以外の処理を要求するコマンドであって(ステップS72でNO)、当該カード自身を指定するコマンドの場合には(ステップS77でYES)、固有情報の読み出しなどのコマンド処理を実行した後に(ステップS78)、他のコマンド実行フラグCの値を1にセットする(ステップS79)。なお、受け取ったコマンドが当該カード自身を指定するコマンドでない場合には(ステップS77でNO)、ステップS71に戻る。
(8)実施の形態7.
実施の形態7にかかる非接触ICカードの認識システムで用いる非接触ICカード266は、実施の形態6の非接触ICカード265より乱数発生回路を削除したものである。実施の形態6におけるシステムで用いる非接触ICカード265は、2回目以降のポーリング信号の受信に対してレスポンス信号の送信を行うタイムスロットの数を乱数発生回路により生成される2ビットの乱数の値により特定するが、実施の形態7にかかるシステムで用いる非接触ICカード266(図示せず)は、最初にリーダ/ライタ170に対するレスポンス信号の送信時に付属するCRC信号の値を乱数とみなして用いることを特徴とする。この場合、ポーリングのリトライ回数に応じてスロット数を特定する際に用いる2ビットの値を下位1ビット及び2ビット、下位2ビット及び3ビット、下位3ビット及び4ビット、…のように、1ビット毎上位のビットにずらして用いる。このようにCRC信号を有効に活用することで、実施の形態6のシステムにおいて用いる非接触ICカード266で使用していた乱数発生回路を削除することができ、構成の簡略化を図ることができる。
また、実施の形態6と同様、実施の形態7にかかるシステムで用いる非接触ICカード266は、リーダ/ライタ170のポーリングに対してレスポンス信号の送信を行った後、指定されたコマンド処理を実行した後は、リーダ/ライタ170のポーリングに対してレスポンス信号の送信を行わない。これにより、リーダ/ライタ170の通信エリア内に同時に2枚以上の非接触ICカードが存在する場合における、レスポンス信号の衝突をより確実に防止する。
図21は、乱数発生回路207のかわりにCRC信号を利用する非接触ICカード266のCPU(図示せず)の実行する処理フローチャートである。まず、他のコマンド実行フラグCの値を0にセットすると共に(ステップS80)、ポーリング回数を表す変数nの値を0に設定する(ステップS81)。リーダ/ライタ170よりコマンドが送られてくるのを待機する(ステップS82でNO)。コマンドを受信した場合であって(ステップS82でYES)、当該コマンドがポーリングである場合には(ステップS83でYES)、以下の処理を実行する。
他のコマンド実行フラグCの値が0、即ち未だ指定されたコマンド処理を実行していない場合であって(ステップS84でNO)、ポーリングの回数を示す変数nの値が0の場合(ステップS85でYES)、第1回目のポーリングの受信であると判断する。この場合、タイムスロット1でレスポンス信号の送信を行った後に(ステップS86)、ステップS82に戻る。一方、変数nの値が1以上の場合(ステップS85でNO)、2回目以上のポーリング受信であると判断し、1回目のポーリングに対する最初のレスポンス信号に付属したCRC信号の下位n,n+1ビットのデータで表されるスロットのタイミングでレスポンス信号を出力する(ステップS87)。変数nの値に1を加算した後に(ステップS88)、ステップS82に戻る。
他のコマンド実行フラグCの値が1、即ち、指定されたコマンド処理が実行済みの場合には、(ステップS84でYES)、ポーリングに対するレスポンス信号の送信は行わずにステップS82に戻る。
受け取ったコマンド信号がポーリング信号でなく(ステップS83でNO)、当該カード自身を指定するコマンドである場合には(ステップS89でYES)、当該コマンドを実行すると共に(ステップS90)、他のコマンド実行フラグCの値を1にセットした後に(ステップS91)、ステップS82に戻る。他方、受け取ったコマンドが当該カード自身を指定するものではない場合には(ステップS89でNO)、そのままステップS82に戻る。
(9)実施の形態8.
実施の形態8にかかる非接触ICカードの認識システムにおいて用いる非接触ICカード267は、リーダ/ライタ180からのポーリングに対して、1回目は直ちにレスポンス信号を送信し、2回目以降は、乱数発生回路により発生した乱数の下位1ビットの値に基づいてレスポンス信号を送信する/しないを決定し、これに従ってレスポンス信号を送信する。また、一度、指定されたコマンド処理を実行した後は、リーダ/ライタ180のポーリングに対してレスポンス信号の送信を行わない。また、実施の形態8のシステムで用いるリーダ/ライタ180は、ポーリングした後は、常にタイムスロット1で非接触ICカードからのレスポンス信号を待機する。
なお、リーダ/ライタ180及び非接触ICカード267の構成は、図2に示した実施の形態1のシステムで用いるリーダ/ライタ100及び非接触ICカード200の構成と同じである。このため、ここでの重複した説明は省く。
図22は、実施の形態8のシステムにおいて用いるリーダ/ライタ180の通信エリア内に非接触ICカード267及び、該カード267と同じ構成で、異なる固有情報を有する非接触ICカード367が存在する場合に、各々の間での交信状態を示すタイムチャートである。リーダ/ライタ180(図中、R/Wと示す)は、ポーリング(図中、"P"で示す)を出力した後、タイムスロット1で非接触ICカードからのレスポンス信号を待つ。リーダ/ライタ180よりポーリングを受け取った非接触ICカード267及び367は、直ちにレスポンス信号(図中、"R"で示す)を出力する。この場合、リーダ/ライタ180では、2つのカードからのレスポンス信号が衝突して受信エラーを起こすため、再びポーリングを出力して、タイムスロット1で非接触ICカードからレスポンス信号が送られてくるのを待つ。非接触ICカード267は、内部に備える乱数発生回路(図示せず、図2の乱数発生回路207を参照)において生成された1ビットの乱数値によりレスポンス信号を送信する/しないを決定する。非接触ICカード367は、内部に備える乱数発生回路(図示せず、図2の乱数発生回路207を参照)において生成された1ビットの乱数値によりレスポンス信号を送信する/しないを決定する。本図の場合、非接触ICカード267は、タイミングT1でレスポンス信号を出力し、非接触ICカード367は、レスポンス信号を出力していない。
この後、リーダ/ライタ180は、先にレスポンス信号を返送してきた非接触ICカード267を指定して、所定のコマンド処理、例えば固有情報のデータの受取の処理を要求する(図中、"C"と示す)。これに対して非接触ICカード267は、要求された内容の処理を実行する(図中、"W"と示す)。リーダ/ライタ180は、ポーリング回数をリセットした後に1回目のポーリングを行う。このポーリングに対し、既に処理済みの非接触ICカード267はレスポンス信号の送信を行わず、非接触ICカード367のみがレスポンス信号の送信を行う。リーダ/ライタ180は、レスポンス信号を返送してきた非接触ICカード367を指定して、所定のコマンド処理、例えば固有情報のデータの受取の処理を要求する。非接触ICカード367は、要求された内容の処理を実行する。
実施の形態8にかかるシステムで用いるリーダ/ライタ180の構成及び動作は、実施の形態3のシステムで用いるリーダ/ライタ120と同じである。このため、ここでの重複した説明は省く。
図23は、非接触ICカード267のCPU(図示せず)の実行する通信処理のフローチャートである。まず、他のコマンド実行フラグCの値を0にセットすると共に、ポーリング回数を表す変数の値を0に設定する(ステップS100)。リーダ/ライタ180よりコマンドが送られてくるのを待機する(ステップS101でNO)。コマンドを受信した場合であって(ステップS101でYES)、当該コマンドがポーリングである場合には(ステップS102でYES)、以下の処理を実行する。
他のコマンド実行フラグCの値が0、即ち未だ指定されたコマンド処理を実行していない場合であって(ステップS103でNO)、1回目のポーリングの場合(ステップS104でYES)、タイムスロット1でレスポンス信号の送信を行った後に(ステップS105)、ステップS101に戻る。一方、2回目以降のポーリングの場合(ステップS104でNO)、乱数発生回路で生成された1ビットの乱数によりレスポンス信号を送信する/しないを決定し、これに従ってレスポンス信号の送信を行うと共に(ステップS106)、ステップS101に戻る。
他のコマンド実行フラグCの値が1、即ち、指定されたコマンド処理が実行済みの場合には(ステップS103でYES)、ポーリングに対するレスポンス信号の送信は行わずにステップS101に戻る。
受け取ったコマンド信号がポーリング信号でなく(ステップS102でNO)、自分を指定するコマンドである場合には(ステップS107でYES)、当該コマンドを実行すると共に(ステップS108)、他のコマンド実行フラグCの値を1にセットした後に(ステップS109)、ステップS101に戻る。他方、受け取ったコマンドが自分を指定するものではない場合には(ステップS107でNO)、そのままステップS101に戻る。
(10)実施の形態9.
実施の形態9にかかる非接触ICカードの認識システムで用いる非接触ICカード268は、実施の形態8の非接触ICカード267より乱数発生回路を削除したものである。実施の形態8におけるシステムで用いる非接触ICカード267は、2回目以降のポーリング信号の受信に対してレスポンス信号を送信する/しないの判断を乱数発生回路により生成される1ビットの乱数の値により決定するが、実施の形態9にかかるシステムで用いる非接触ICカード268(図示せず)は、最初にリーダ/ライタ190に対するレスポンス信号の送信時に付属するCRC信号の値を乱数とみなして用いることを特徴とする。この場合、ポーリングのリトライ回数に応じてレスポンス信号を送信する/しないの判断に用いる1ビットの値を下位1ビット、下位2ビット、下位3ビットのように、1ビット毎上位のビットにずらして用いる。このようにCRC信号を有効に活用することで、実施の形態8のシステムにおいて用いる非接触ICカード267で使用していた乱数発生回路を削除することができ、構成の簡略化を図ることができる。
また、実施の形態8と同様、実施の形態9にかかるシステムで用いる非接触ICカード268は、リーダ/ライタ190のポーリングに対してレスポンス信号を送信した後、指定されたコマンド処理を実行した後は、リーダ/ライタ190のポーリングに対してレスポンス信号の送信を行わない。これにより、リーダ/ライタ190の通信エリア内に同時に2枚以上の非接触ICカードが存在する場合における、レスポンス信号の衝突を確実に防止する。
図24は、乱数発生回路のかわりにCRC信号を利用する非接触ICカード268のCPU(図示せず)の実行する処理フローチャートである。まず、他のコマンド実行フラグCの値を0にセットする(ステップS110)。ポーリング回数を表す変数nの値を0に設定する(ステップS111)。リーダ/ライタ190よりコマンドが送られてくるのを待機する(ステップS112でNO)。コマンドを受信した場合であって(ステップS112でYES)、当該コマンドがポーリングである場合には(ステップS113でYES)、以下の処理を実行する。
他のコマンド実行フラグCの値が0、即ち未だ指定されたコマンド処理を実行していない場合であって(ステップS114でNO)、ポーリングの回数を示す変数nの値が0の場合(ステップS115でYES)、第1回目のポーリングの受信であると判断する。この場合、タイムスロット1でレスポンス信号の送信を行った後に(ステップS116)、ステップS112に戻る。一方、変数nの値が1以上の場合(ステップS115でNO)、2回目以上のポーリング受信であると判断し、1回目のポーリングに対する最初のレスポンス信号に付属したCRC信号の下位nビットのデータに基づいてレスポンス信号を送信する/しないを決定し、これに従ってレスポンス信号の送信を行う(ステップS117)。変数nの値に1を加算した後に(ステップS118)、ステップS112に戻る。
他のコマンド実行フラグCの値が1、即ち、指定されたコマンド処理が実行済みの場合には、(ステップS114でYES)、ポーリングに対するレスポンス信号の送信は行わずにステップS112に戻る。
受け取ったコマンド信号がポーリング信号でなく(ステップS113でNO)、自分を指定するコマンドである場合には(ステップS119でYES)、当該コマンドを実行すると共に(ステップS120)、他のコマンド実行フラグCの値を1にセットした後に(ステップS121)、ステップS112に戻る。他方、受け取ったコマンドが自分を指定するものではない場合には(ステップS119でNO)、そのままステップS112に戻る。
100,110,120,140,150,160,170,180,190 リーダ/ライタ、 101,201 アンテナ、 104,204 ROM、 105,205 RAM、 106 インターフェース、 103,203 CPU、 200,260,261,262,263,264,265,266,267,268,300,400,500 非接触ICカード、 206固有情報記憶部、 207 乱数発生回路