(57)【特許請求の範囲】
【請求項１】
リーダーと交信する関係にあると定められた空間内に置かれた０〜最大値（ＭＡＸ）の範囲の識別番号をそれぞれ有する複数の非接触スマートカードを用いるシステムにおいて、前記カードが前記リーダにより識別されるように前記カードからの応答の衝突を防止する方法であって、
前記リーダーが、以下のステップを順に実行することを特徴とする衝突防止方法。
ａ）前記カードのいずれかが受信しかつ認識することのできる質問命令を送信するステップ、
ｂ）前記質問命令に対する応答を受信したときに、前記識別番号の下限値（ＭＩＮ）を０に、識別試行デジタル値（ＶＡＬＩＤ）及び該識別試行デジタル値（ＶＡＬＩＤ）の最新値（ＤＥＲＣＯＬＬ）をＭＡＸに、それぞれ初期化するステップ、
ｃ）前記ＶＡＬＩＤを含む衝突防止命令を前記カードに送信するステップ、
ｄ）前記衝突防止命令に対する応答の有無を確認するステップ、
ｅ）前記衝突防止命令に対する応答があり、かつその応答が複数であるか否かにより、衝突の発生の有無を判定するステップ、
ｆ）前記衝突が発生したと判定したときは、次の式からなる第１アルゴリズムを実行した後にステップｃに戻るステップ、
ＤＥＲＣＯＬＬ＝ＶＡＬＩＤ
ＶＡＬＩＤ＝ＭＩＮ＋（ＶＡＬＩＤ−ＭＩＮ）／Ｎ
但し、Ｎは１より大きい任意の値
ｇ）前記衝突が発生しないと判定したときは、前記ＶＡＬＩＤを記憶すると共に、次の式からなる第２アルゴリズムを実行した後にステップｃに戻るステップ、
ＭＩＮ＝ＶＡＬＩＤ
ＶＡＬＩＤ＝ＤＥＲＣＯＬＬ
ＤＥＲＣＯＬＬ＝ＭＡＸ
ｈ）前記衝突防止命令に対する応答がない場合には、前記ＶＡＬＩＤが前記ＭＡＸと同一であるか否かを確認するステップ、
ｉ）前記ＶＡＬＩＤが前記ＭＡＸと同一であるときは前記ステップの実行を終了し、同一でないときは前記ＶＡＬＩＤが前記ＤＥＲＣＯＬＬと同一であるか否かを確認するステップ、
ｊ）前記ＶＡＬＩＤが前記ＤＥＲＣＯＬＬと同一であるときは、該ＤＥＲＣＯＬＬを前記ＭＡＸに等しくなるように設定した後に、前記ＭＩＮを前記ＶＡＬＩＤに等しくなるように設定するステップ、
ｋ）前記ＶＡＬＩＤが前記ＤＥＲＣＯＬＬと同一でないときは、前記ＭＩＮを前記ＶＡＬＩＤに等しくなるように設定するステップ、
ｌ）次の式からなる第３アルゴリズムを実行した後にステップｃに戻るステップ、
ＶＡＬＩＤ＝ＶＡＬＩＤ＋（ＤＥＲＣＯＬＬ−ＶＡＬＩＤ）／Ｍ
但し、Ｍは１より大きい任意の値
【請求項２】
前記Ｎ及びＭの少なくとも片方が２以上の値である請求項１に記載の衝突防止方法。
【請求項３】
請求項１又は２に記載の衝突防止方法を実行する命令を含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、要素を識別するため設計されたホストコンピュータ又は等価デバイスが数個の要素を同時に識別しようとする結果、数個の要素の間に衝突を生じるシステムに関わり、具体的にはホストコンピュータが識別する衝突防止方法に関わる。
【背景技術】
【０００２】
それぞれが識別番号を有し、ホストコンピュータと一定の関係を有する複数の要素を識別するためホストコンピュータ又は等価デバイスを使用するシステムは多数存在する。これは、要素が同一データ伝送ネットワークに属するターミナルである場合（「同一ネットワーク所属」関係）であるが、その要素がリーダで識別され、規制アクセス領域にアクセスすることのできる非接触物体である場合もある（「リーダ近接」関係）。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ホストコンピュータ又は等価デバイスからの質問に、数個の要素が同時に応答することがあるという事実が、これらのシステムで重大な問題になりうることを示している。これは、例えば数枚の非接触スマートカードがリーダの前に同時に提示されるなどの場合である。複数の要素の間には、衝突が起こると言われる。この問題は、衝突に関係する要素の各々を確実に識別できるリーダによって、解決されるべきである。
【０００４】
リーダに対し所定の領域に設定された非接触スマートカードの場合は、既知の衝突防止方法により、全てのカード識別番号がツリー構造で表されるツリー構造反復アルゴリズムが実行される。このツリー構造では、ツリーの「根元」が２つの「枝」に分かれ、枝のそれぞれは、例えば最上位ビットなどの、識別番号の第１ビットの論理値が１又は０に対応する「節」で終わる。これら２つの節はそれぞれ新しい２つの枝に分かれ、共に別の識別番号のビットの論理値１又は０に対応する「節」で終わる。以下同様に、識別番号の最終ビットが、カードの識別番号をコード化するため使用したビット数と同じ世代数をツリーが有すると認知するまで進行する。
【０００５】
ツリー構造反復的アルゴリズムに基づく衝突防止方法は、識別番号コード化に使用するビット数が多く、カード識別番号をあらわすツリーの検出が長く続くほど時間がかかるという欠点を有する。こうして、公共交通機関網など一定の用途では、識別番号をコード化するため著しく膨大なビットを用意しなければならないが、ほとんどの場合、リーダが読み取る領域に同時に提示されるカードの数は極めて少ない。
【０００６】
その結果、本発明の目的は、識別番号のビット毎の比較をせず、従って衝突を起こしたビットの識別を必要としない、ホストコンピュータが送信する識別試行デジタル値に対する各識別番号の位置決めがアルゴリズムを用いて行なわれる、衝突を迅速に解決できる衝突防止方法を作ることである。
【課題を解決するための手段】
【０００７】
本発明はしたがって、リーダーと交信する関係にあると定められた空間内に置かれた非接触スマートカードを用いるシステムにおいて、それらカードがリーダにより識別されるように衝突を防止する方法に関わる。各カードは０と最大値（ＭＡＸ）との間の識別番号を有している。この方法は、リーダーが、以下のステップを順に実行することを特徴とする。
ａ）前記カードのいずれかが受信しかつ認識することのできる質問命令を送信するステップ、
ｂ）前記質問命令に対する応答を受信したときに、前記識別番号の下限値（ＭＩＮ）を０に、識別試行デジタル値（ＶＡＬＩＤ）及び該識別試行デジタル値（ＶＡＬＩＤ）の最新値（ＤＥＲＣＯＬＬ）をＭＡＸに、それぞれ初期化するステップ、
ｃ）前記ＶＡＬＩＤを含む衝突防止命令を前記カードに送信するステップ、
ｄ）前記衝突防止命令に対する応答の有無を確認するステップ、
ｅ）前記衝突防止命令に対する応答があり、かつその応答が複数であるか否かにより、衝突の発生の有無を判定するステップ、
ｆ）前記衝突が発生したと判定したときは、次の式からなる第１アルゴリズムを実行した後にステップｃに戻るステップ、
ＤＥＲＣＯＬＬ＝ＶＡＬＩＤ
ＶＡＬＩＤ＝ＭＩＮ＋（ＶＡＬＩＤ−ＭＩＮ）／Ｎ
但し、Ｎは１より大きい任意の値
ｇ）前記衝突が発生しないと判定したときは、前記ＶＡＬＩＤを記憶すると共に、次の式からなる第２アルゴリズムを実行した後にステップｃに戻るステップ、
ＭＩＮ＝ＶＡＬＩＤ
ＶＡＬＩＤ＝ＤＥＲＣＯＬＬ
ＤＥＲＣＯＬＬ＝ＭＡＸ
ｈ）前記衝突防止命令に対する応答がない場合には、前記ＶＡＬＩＤが前記ＭＡＸと同一であるか否かを確認するステップ、
ｉ）前記ＶＡＬＩＤが前記ＭＡＸと同一であるときは前記ステップの実行を終了し、同一でないときは前記ＶＡＬＩＤが前記ＤＥＲＣＯＬＬと同一であるか否かを確認するステップ、
ｊ）前記ＶＡＬＩＤが前記ＤＥＲＣＯＬＬと同一であるときは、該ＤＥＲＣＯＬＬを前記ＭＡＸに等しくなるように設定した後に、前記ＭＩＮを前記ＶＡＬＩＤに等しくなるように設定するステップ、
ｋ）前記ＶＡＬＩＤが前記ＤＥＲＣＯＬＬと同一でないときは、前記ＭＩＮを前記ＶＡＬＩＤに等しくなるように設定するステップ、
ｌ）次の式からなる第３アルゴリズムを実行した後にステップｃに戻るステップ、
ＶＡＬＩＤ＝ＶＡＬＩＤ＋（ＤＥＲＣＯＬＬ−ＶＡＬＩＤ）／Ｍ
但し、Ｍは１より大きい任意の値
【０００８】
好適実施例にしたがうと、入場制限領域への入場カードなどの非接触スマートカードはリーダの前の特定領域を通過させることで識別される。
【発明を実施するための最良の形態】
【０００９】
本発明の方法は、複数の非接触カードがリーダーと所与の関係を満たすシステムで実行できる。以下の記述は、好適実施例における方法に関してのものであり、リーダとの関係で定められた空間内に置かれたときリーダと交信する非接触スマートカードである。
【００１０】
図１を参照すると、リーダとの関係で定められた空間内に置かれたカードはいずれも、リーダからの質問の受信を求められ、この質問はリーダが周期的に（例えば５ミリ秒毎）送信する。従って、各カードは、質問の受信を点検するが（ステップ１０）、このステップは質問が受信されるまで連続的に繰り返される。
【００１１】
カードのチップが質問を受信すると、チップはリーダからの「衝突防止」命令を待ち（ステップ１２）、この命令を受信するまで、ループバックする。衝突防止命令を受信すると、チップは自分の識別番号が、命令の中に含まれる識別試行デジタル値以下であることを点検する（ステップ１４）。認識番号が条件に合わない場合は、衝突防止命令を待つ状態にループバックする。質問を受けるカード全部が衝突防止方法に関与する場合、この質問が送信された後に接続されたカードは、あらゆる混乱を回避するため、関与させないことに、注意しなければならない。
【００１２】
カードの識別番号が、命令の中に含まれる識別試行デジタル値以下であるとき、カードのチップは、リーダに識別番号を送って応答する（ステップ１６）。
【００１３】
次いで、チップは新しい命令を待つ。この命令は、選択命令あるいは新しい衝突防止命令である（ステップ１８）。受け取った命令が新しい衝突防止命令の場合、ステップ１４にループバックされ、カードの識別番号が、新しい命令の中に含まれる識別試行デジタル値以下であることを点検する。ステップ１４と１６のループバックステップは、図２を参照して次に記述するように、数回繰り返されることがあることに注意しなければならない。
【００１４】
図１及び２を参照して記述する実施例において、本発明の基本原理は、カードの識別番号が識別試行値以下であるか否かを点検することであるが、本発明の範囲を逸脱することなくカードの識別番号が識別試行値以下であるか否かを、点検することも可能である。
【００１５】
カードが選択命令を受信した場合、それは、そのカードが識別されたことを意味する。チップは再度その識別番号をリーダに送信し（ステップ２０）もはや衝突防止方法には参加しない。
【００１６】
リーダ内で実行される衝突防止方法は、図２を参照して以下に記述するように行なわれる。先ず、リーダとの関係で定められた空間内に置かれたカード全てに、リーダが質問を送信する（ステップ３０）。リーダは、カードからの応答を少なくとも１つを待ち（ステップ３２）、応答を受信しない限りループバックする。応答を受信したとき、数個の変数が初期化される（ステップ３４）。ＭＩＮ変数は、識別すべき識別番号が割り当てられる間隔の下限を指定するもので、０に初期化される。識別試行デジタル値をあらわすＶＡＬＩＤは、カードに割り当てられた識別番号が保持する最大値であるＭＡＸに初期化され、ＤＥＲＣＯＬＬは、直前の衝突防止命令で使用した最新のＶＡＬＩＤ値をあらわす変数で、これもＭＡＸに初期化される。
【００１７】
次いで、識別試行デジタル値を含む衝突防止命令がリーダによって送信される（ステップ３６）。この送信の後、リーダは、可能な限りの応答を待つ（ステップ３８）。応答を受信し場合、それは、リーダとの交信ができうる規定空間内に少なくとも１枚のカードがあることを意味する。リーダは、衝突が発生したか否か又は応答が１つしかないか、つまり規定空間内に１枚のカードしかないかを、判定しなければならない（ステップ４０）。
【００１８】
衝突が発生すると、ＤＥＬＣＯＬＬ変数がＶＡＬＩＤ値に設定される（ステップ４２）。これは、前の衝突防止命令で使用された識別試行デジタル値であって、そのＶＡＬＩＤ値は、速度低下として１より大きいパラメータＮを考慮に入れて、新しい衝突防止命令が送信されるステップ３６にループバックする前に、次の方法に従って変更される（ステップ４４）。
ＶＡＬＩＤ＝ＭＩＮ＋（ＶＡＬＩＤ−ＭＩＮ）／Ｎ
この第１アルゴリズムの使用のため、ＶＡＬＩＤの新しい値は、必然的に前の値より小さくなることに注意しなければならない。こうして、Ｎ＝２とＭＡＸ＝１、０００を用いると、ＶＡＬＩＤの値は５００になる。
【００１９】
衝突が発生しない場合、それは応答が１つしかないことを意味する。この場合は、前出のようにリーダがそのカードを選択できるように、カードの識別番号はリーダに記憶される（ステップ４６）。新しい衝突防止方法の命令送信ステップにループバックする前に、ＭＩＮ値がＶＡＬＩＤ値に変更され（ステップ４８）、ＶＡＬＩＤ値がＤＥＲＣＯＬＬ値に設定され（ステップ５０）、ＤＥＲＣＯＬＬ値がＭＡＸに置き換えられる（ステップ５２）。この第２アルゴリズムにより、ＶＡＬＩＤ値をＭＡＸまで増加することができるので、その識別番号がＭＡＸに近い区間に置かれ、それらが低い区間に置かれた識別番号と衝突したために、未だ検出されないカードを識別できることに注意しなければならない。
【００２０】
ステップ３８の衝突防止命令送信に続く応答がない場合、これは、存在するカードの識別番号全てが検出されたことを意味するものではない。ＶＡＬＩＤ値より下の識別番号はないけれども、識別番号がＭＡＸに近い区間で検出される可能性がある。
【００２１】
応答がない場合、ＶＡＬＩＤ値がＭＡＸに達しているかどうかを確認する点検が先ず行なわれる（ステップ５４）。ＭＡＸに達している場合は、もはや識別すべきカードはないので、このステップは終了する。そうでない場合は、ＶＡＬＩＤ値がＤＥＲＣＯＬＬに等しいかどうかを判定する検証が行なわれる（ステップ５６）。これに該当する場合は、ＤＥＲＣＯＬＬ値はＭＡＸに等しく設定される（ステップ５８）。両方の例で、ＭＩＮ値はＶＡＬＩＤ値に等しく設定され、ＶＡＬＩＤ値は、速度上昇として１より大きいパラメータＭの値を考慮しながら、新しい衝突防止命令が送信されるステップ３６にループバックする前に、次の方法に従い変更される。
ＶＡＬＩＤ＝ＶＡＬＩＤ＋（ＤＥＲＣＯＬＬ−ＶＡＬＩＤ）／Ｍ
この第３アルゴリズムを使用するため、ＶＡＬＩＤの新しい値は、必然的に前の値より大きくなることに注意しなければならない。
【００２２】
上述の衝突防止方法は、ごく少数の命令でカードを検出する確率が高い場合においては、極めて迅速に機能する。このような方法で、識別番号がそれぞれＡ、Ｂ、Ｃである３枚のカードが衝突過程に関与すると考えた場合、下表に示すように、（１回の衝突防止命令の後）デジタルＶＡＬＩＤ値による範囲０−ＭＡＸの分離に関し可能な場合は８個ある。
【表１】
0004485205.tif 000002
【００２３】
このように、ＶＡＬＩＤにより分離されない識別番号３個を有するのは８ケースのうち２ケース（０．２５）、別の識別番号２個が分離されるのは８ケースのうち３ケース（０．３７５）で、カードが識別されるのは８ケースのうち３ケース（０．３７５）である。２回の命令後の確率を知るには、混合組合せの数字をこの最後に追加しなければならない。
【００２４】
命令２つを用いて識別番号を判定する確率はしたがって、
Ｐ＝０．３７５＋２／８×３／８＋３／８×１／２＝０．６５６
このようにして、Ｘを１から１２、Ｙを２から１２の間とするとき、Ｙ個の識別番号の中からＸ個の命令で識別番号を判定する確率を与える表を作成することができる。
【表２】
0004485205.tif 000003
【００２５】
上の表から、識別番号をごく少ない命令で判定する確率は高いことが明らかである。例えば、１）２個又は３個の数字の中から４個の命令で１つの識別番号を、２）４〜６個の数字の中から５個の命令で１つの識別番号を、３）７〜１２個の数字の中から６個の命令で１つの識別番号を、検出する確率は９割以上である。
【００２６】
一般的に言って、速度上昇及び速度低下数Ｎ及びＭを、そのうち１つが少なくとも２以上であるように選択するのが最適である。加えて、実験では、ＮとＭの双方が２に等しいとき、最適な結果が得られることが示された。
【００２７】
本発明を説明する試みとして、以下の例を示す。ここでは、各カードの識別番号を１６ビットに渡って解析した。それは、識別番号が０と６５，５３６の間であることを意味する。またＭ＝Ｎ＝２、各命令は、１５ミリ秒以下であると仮定した。質問の送信及びその応答の初期時間を考えると、１個〜１２個の識別番号を検出するのに必要な最大時間は次のようになる。
【表３】
0004485205.tif 000004
【００２８】
例１（カード４枚）
ＭＡＸ＝１，０００
衝突に関与した４枚のカードの識別番号：
ＩＤ１＝１２  ＩＤ２＝３５６  ＩＤ３＝５６７  ＩＤ４＝５６８
１  ＶＡＬＩＤ＝１０００  ＭＩＮ＝０  ＤＥＲＣＯＬＬ＝１０００
−＞衝突
２  ＶＡＬＩＤ＝５００  ＭＩＮ＝０  ＤＥＲＣＯＬＬ＝１０００
−＞衝突
３  ＶＡＬＩＤ＝２５０  ＭＩＮ＝０  ＤＥＲＣＯＬＬ＝５００
−＞応答1個：００１２
４  ＶＡＬＩＤ＝５００  ＭＩＮ＝２５０  ＤＥＲＣＯＬＬ＝１０００
−＞応答１個：０３５６
５  ＶＡＬＩＤ＝１０００  ＭＩＮ＝５００  ＤＥＲＣＯＬＬ＝１０００
−＞衝突
６  ＶＡＬＩＤ＝７５０  ＭＩＮ＝５００  ＤＥＲＣＯＬＬ＝１０００
−＞衝突
７  ＶＡＬＩＤ＝６２５  ＭＩＮ＝５００  ＤＥＲＣＯＬＬ＝７５０
−＞衝突
８  ＶＡＬＩＤ＝５６３  ＭＩＮ＝５００  ＤＥＲＣＯＬＬ＝６２５
−＞応答無し
９  ＶＡＬＩＤ＝５９４  ＭＩＮ＝５６３  ＤＥＲＣＯＬＬ＝６２５
−＞衝突
１０  ＶＡＬＩＤ＝５７９  ＭＩＮ＝５６３  ＤＥＲＣＯＬＬ＝５９４
−＞衝突
１１  ＶＡＬＩＤ＝５７１  ＭＩＮ＝５６３  ＤＥＲＣＯＬＬ＝５７９
−＞衝突
１２  ＶＡＬＩＤ＝５６７  ＭＩＮ＝５６３  ＤＥＲＣＯＬＬ＝５７１
−＞応答１個：０５６７
１３  ＶＡＬＩＤ＝５７１  ＭＩＮ＝５６７  ＤＥＲＣＯＬＬ＝１０００
−＞応答１個：０５６８
１４  ＶＡＬＩＤ＝１０００  ＭＩＮ＝５７１  ＤＥＲＣＯＬＬ＝１０００
−＞応答無し
識別番号４個の検出に、命令１４個と２８．５ミリ秒を要した。
【００２９】
例２（カード５枚）
ＭＡＸ＝１，０００
衝突する５枚のカードの識別番号：
ＩＤ１＝８８７  ＩＤ２＝９９７  ＩＤ３＝９３８  ＩＤ４＝５６２
ＩＤ５＝２９４
１  ＶＡＬＩＤ＝１０００  ＭＩＮ＝０  ＤＥＲＣＯＬＬ＝１０００
−＞衝突
２  ＶＡＬＩＤ＝５００  ＭＩＮ＝０  ＤＥＲＣＯＬＬ＝１０００
−＞応答１個：０２９４
３  ＶＡＬＩＤ＝１０００  ＭＩＮ＝５００  ＤＥＲＣＯＬＬ＝１０００
−＞衝突
４  ＶＡＬＩＤ＝７５０  ＭＩＮ＝５００  ＤＥＲＣＯＬＬ＝１０００
−＞応答１個：０５６２
５  ＶＡＬＩＤ＝１０００  ＭＩＮ＝７５０  ＤＥＲＣＯＬＬ＝１０００
−＞衝突
６  ＶＡＬＩＤ＝８７５  ＭＩＮ＝７５０  ＤＥＲＣＯＬＬ＝１０００
−＞応答なし
７  ＶＡＬＩＤ＝９３８  ＭＩＮ＝８７５  ＤＥＲＣＯＬＬ＝１０００
−＞衝突
８  ＶＡＬＩＤ＝９０７  ＭＩＮ＝８７５  ＤＥＲＣＯＬＬ＝９３８
−＞応答１個：０８８７
９  ＶＡＬＩＤ＝９３８  ＭＩＮ＝９０７  ＤＥＲＣＯＬＬ＝１０００
−＞応答１個：０９３８
１０  ＶＡＬＩＤ＝１０００  ＭＩＮ＝９３８  ＤＥＲＣＯＬＬ＝１０００
−＞応答１個：０９９７
１１  ＶＡＬＩＤ＝１０００  ＭＩＮ＝１０００  ＤＥＲＣＯＬＬ＝１０００
−＞応答なし
識別番号５個の検出に、命令１１個と２５．５ミリ秒を要した。
【００３０】
非接触スマートカードに適用するに当たって、本発明の上述の識別方法は、標準ＩＳＯ１４４４３号に準じた通信手段を用いる。しかし、既存の手順に反して、衝突は誤った「チェックサム」から推論されるので、衝突を起こしたビットの識別は不要である。これは、時間に左右されないので、この方法の機能性に影響を与えることなく、ＰＣ上のＢＡＳＩＣ言語のソフトウエアとして、あるいはリーダ内でハードコードして実行することが出来る。
【００３１】
非接触スマートカードなどの各要素の中であろうと、ホストコンピュータ又は非接触カードリーダなどの等価物の中であろうと、本発明による方法は、ソフトウエアコード、即ちコンピュータプログラムを通じて実行される。
【図面の簡単な説明】
【００３２】
本発明の目的、対象及び特徴は、添付図面を取り上げた以下の説明で更に明らかになるであろう。
【図１】本発明にしたがって、各要素、即ち非接触カードのチップがリーダの前に提示されたときそれらの中で実行される方法のブロック図を示す。
【図２】本発明にしたがってホストコンピュータ内で実行される方法、即ち非接触スマートカードの識別方法のブロック図を示す。
【図１】
0004485205.tif 000005
【図２】
0004485205.tif 000006