通信装置、通信方法、およびプログラム
【課題】複数のリーダライタどうしが混信を生じる環境下にあっても、ICカードとの通信を、容易に行う。
【解決手段】リーダライタ1は、ICカード3に対して、コマンドパケットを送信した後、タイムアウト時間が経過する前は、受信パケットにエラーがあっても、コマンドパケットの再送を行わずに、受信待機状態となって、パケットが送信されてくるのを待ち、タイムアウト時間内に受信された受信パケットにエラーがない場合には、その受信パケットを、コマンドパケットに対する正常なレスポンスパケットとして、そのレスポンスパケットに応じた処理を行い、タイムアウト時間が経過したときのみ、コマンドパケットの再送を行う。本発明は、例えば、ICカードシステムに適用できる。
【解決手段】リーダライタ1は、ICカード3に対して、コマンドパケットを送信した後、タイムアウト時間が経過する前は、受信パケットにエラーがあっても、コマンドパケットの再送を行わずに、受信待機状態となって、パケットが送信されてくるのを待ち、タイムアウト時間内に受信された受信パケットにエラーがない場合には、その受信パケットを、コマンドパケットに対する正常なレスポンスパケットとして、そのレスポンスパケットに応じた処理を行い、タイムアウト時間が経過したときのみ、コマンドパケットの再送を行う。本発明は、例えば、ICカードシステムに適用できる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置、通信方法、およびプログラムに関し、特に、例えば、IC(Integrated Circuit)カードと非接触で通信を行うリーダライタが、他のリーダライタとの間で混信を生じる場合であっても、ICカードとの通信を、容易に行うことができるようにする通信装置、通信方法、およびプログラムに関する。
【背景技術】
【0002】
近年、ICカードとリーダライタとが電磁波により非接触で通信を行う非接触式ICカードシステムが急速に普及している。
【0003】
非接触式ICカードシステムでは、例えば、リーダライタは、電磁波を出力しており、リーダライタにICカードをかざすと、ICカードは、リーダライタが出力する電磁波により生じる相互誘導によって、電源を得て動作し、リーダライタとの通信を開始する。そして、リーダライタからICカードへのデータの送信は、リーダライタにおいて、自身が出力する電磁波を変調することによって行われ、ICカードからリーダライタへのデータの送信は、ICカードにおいて、リーダライタが出力する無変調の電磁波を、いわゆる負荷変調することによって行われる。
【0004】
このように、非接触式ICカードシステムでは、ICカードとリーダライタとの通信が非接触で行われるため、その利便性は高く、現在、例えば、駅の自動改札機等で広く利用されている。
【0005】
ところで、自動改札機では、短時間に、多くの人の入退場を処理する必要があるため、多くのリーダライタを設置することが要請される。しかしながら、自動改札機としてのリーダライタは、駅の改札口という限られた空間の中に設置しなければならず、多くのリーダライタを設置しようとすれば、リーダライタどうしは、必然的に、近接して設置されることになる。
【0006】
このように、リーダライタどうしが近接して設置されている場合において、近接している複数のリーダライタが、同一周波数のキャリア(搬送波)を使用しているときには、その複数のリーダライタが出力する電磁波が、相互干渉を起こして混信し、リーダライタが、そこにかざされたICカードと通信することができなくなることがある。
【0007】
即ち、図1は、複数のリーダライタどうしが混信を起こしている状態を示している。
【0008】
図1においては、ICカードCが、リーダライタAにかざされており、従って、リーダライタAは、ICカードCとのみ通信を行うべきである。
【0009】
しかしながら、図1に示すように、リーダライタAに近接して他のリーダライタBが設置されている場合、リーダライタAが出力する電磁波と、他のリーダライタBが出力する電磁波とが相互干渉を起こし、リーダライタAにおいて、相互干渉を起こした電磁波が、ICカードCによって負荷変調された電磁波として受信される。これにより、リーダライタAと、本来の通信相手であるICカードCとの通信が妨げられる。
【0010】
そこで、このような、リーダライタAとICカードCとの通信が妨げられることを防止する方法として、リーダライタAとBを、それら(の電磁波)が相互干渉を起こさないように、ある程度の距離をおいて設置する第1の方法がある。
【0011】
しかしながら、第1の方法では、例えば、改札口に設置することができるリーダライタの数が少なくなり、その結果、短時間に、多くの入退場者を処理することが困難となる。
【0012】
そこで、例えば、リーダライタに、干渉を検出する干渉検出手段を設け、干渉が生じる状態では、データ通信を行わないようにする第2の方法(例えば、特許文献1参照)や、隣接するリーダライタどうしでは、放射電磁界の位相が反転するようにする第3の方法(例えば、特許文献2参照)、リーダライタにキャリアの周波数を変更する機能を備える第4の方法(例えば、特許文献3参照)がある。
【0013】
しかしながら、第2の方法では、その干渉検出手段としての新たなハードウェアを、リーダライタに設ける必要があり、リーダライタのコストが大になる。
【0014】
また、隣接するリーダライタどうしにおいて放射電磁界の位相を反転させる第3の方法では、やはり、位相の反転を行うための新たなハードウェアを設ける必要がある。さらに、第3の方法では、リーダライタを設置する設置者が、隣接して配置されるリーダライタは必ず放射電磁界が反転するという設置条件を満たすように、リーダライタの設置位置を設計(計画)して、リーダライタを設置する必要があり、面倒である。
【0015】
また、第4の方法では、リーダライタを設置する設置者が、リーダライタのキャリアの周波数を管理する必要があり、特に、リーダライタを新たに増設するときや、リーダライタの配置位置を変更するときの設置者の負担が大になる。
【0016】
そこで、リーダライタが、ICカードから、正しいレスポンスパケットを受信することができない受信エラーが発生した場合は、リーダライタにおいて、ICカードに対し、コマンドパケットを再送する(コマンドパケットの送信のリトライを行う)第5の方法がある。
【0017】
即ち、非接触式ICカードシステムを構成するリーダライタとICカードとの間では、非接触通信によって、パケットがやりとりされるが、リーダライタは、所定の処理の実行を指示するコマンドの情報が含まれるパケットであるコマンドパケットをICカードに送信し、ICカードは、リーダライタからのコマンドパケットに対する応答(レスポンス)のパケットであるレスポンスパケットをリーダライタに送信する。
【0018】
第5の方法では、リーダライタが、コマンドパケットの送信後、パケット(レスポンスパケット)が送信されてくるのを待って受信し、そのパケットにエラーがあるか否かをチェックするエラーチェックを行う。そして、リーダライタが受信したパケットにエラーがある場合、リーダライタは、コマンドパケットを、即座に再送する。その後、リーダライタは、パケット(レスポンスパケット)の受信、そのパケットのエラーチェック、およびコマンドパケットの再送を、ICカードからの正常なレスポンスパケットを受信することができるまで繰り返す。
【0019】
第5の方法は、例えば、1台のリーダライタにかざされたICカードの近くに、他のICカードが偶然に存在し、リーダライタが送信したコマンドパケットに対して、そのリーダライタにかざされたICカードと、そのICカードの近くに存在する他のICカードとの両方が反応して、その両方のICカードが、リーダライタからのコマンドパケットに対するレスポンスパケットを送信することにより生じる干渉(混信)には有効である。
【0020】
しかしながら、図1で説明したように、近接して設置された2つのリーダライタAとBの間で混信(干渉)が生じている場合、上述のようなコマンドパケットの再送を行う第5の方法によって、リーダライタAと、それにかざされたICカードCとの間の通信性能を向上させることができるとは限らず、むしろ劣化させることがある。
【0021】
即ち、図2および図3は、近接して設置された2つのリーダライタAとBのうちの一方であるリーダライタAに対して、ICカードCがかざされた場合の、リーダライタAおよびB、並びにICカードCの動作を示している。
【0022】
図2において、リーダライタAは、ステップS1において、コマンドコードが0x10(0xは、その後に続く文字(列)が16進数であることを表す)のコマンドパケットPA1を送信して、ステップS2に進み、その後、コマンドパケットPA1に対するレスポンスパケットの受信を待機する受信待機状態となる。
【0023】
ここで、リーダライタAやBとICカードCとの間でやりとりされるパケットには、そのパケットの種別を表すコマンドコードまたはレスポンスコードが含まれている。コマンドまたはレスポンスコードは、それぞれ、例えば、パケットが、コマンドパケットまたはレスポンスパケットであることを表す。
【0024】
図2では、リーダライタAが、ステップS1において、コマンドコードが0x10のコマンドパケットPA1を送信しているが、いま、コマンドコードが0x10のコマンドパケットに対するレスポンスパケットのレスポンスコードが、例えば、0x11であるとすると、リーダライタAは、ステップS2において、レスポンスコードが0x11のパケット(レスポンスパケット)の受信を待機する受信待機状態となる。
【0025】
また、ICカードCは、ステップS11において、リーダライタAが送信した、コマンドコードが0x10のコマンドパケットPA1を受信し、そのコマンドパケットに応じた処理を開始する。なお、ICカードCは、リーダライタAからのコマンドパケットPA1に応じた処理を行った後は、そのコマンドパケットPA1に対するレスポンスパケットとして、レスポンスコードが0x11のパケットを送信する。
【0026】
一方、リーダライタBは、ICカードがかざされた(ICカードが近接する位置にある)ことを検出するためのポーリングを行っており、具体的には、例えば、コマンドコードが0x80のコマンドパケットを周期的に送信している。
【0027】
図2では、リーダライタBは、ステップS21において、コマンドコードが0x80のコマンドパケットPB1を送信し、以下、周期的に、コマンドコードが0x80のコマンドパケットを送信する。
【0028】
リーダライタBがステップS21においてパケットPB1を送信したときには、リーダライタAは、ステップS2において受信待機状態となっているので、ステップS3において、リーダライタBからのパケットPB1を受信する。
【0029】
しかしながら、リーダライタBからのパケットPB1は、コマンドコードが0x80のコマンドパケットであり、リーダライタAが受信を待機している、コマンドパケットPA1に対するレスポンスパケット、つまり、レスポンスコードが0x11のパケットではないので、リーダライタAは、ステップS3で受信したパケットPB1にエラーがあるとして、ステップS3からステップS4に進み、コマンドパケットを再送する。即ち、リーダライタAは、コマンドコードが0x10のパケットとして、コマンドパケットPA2を送信する。
【0030】
従って、リーダライタAが、コマンドコードが0x10のパケット(コマンドパケット)の再送中に、ICカードCが、先のコマンドパケットPA1に対するレスポンスパケットを送信してきた場合には、リーダライタAは、ICカードCからのレスポンスパケットを受信することができない。
【0031】
また、非接触式ICカードシステムを構成するリーダライタとICカードとの間でやりとりされるパケットには、シーケンスID(Identification)が含まれる場合がある。シーケンスIDは、正規のリーダライタとICカードとの通信が行われている場合に、不正なリーダライタまたはICカードが、その通信に割り込んで、正規のリーダライタまたはICカードになりすます、いわゆるなりすましを防止するために、正規のリーダライタとICカードによって、例えば、1ずつインクリメントされる値である。
【0032】
図3は、リーダライタとICカードとの間で、シーケンスIDを含むパケットがやりとりされる場合の、リーダライタAおよびB、並びにICカードCの動作を示している。
【0033】
リーダライタAは、ステップS31において、例えば、シーケンスIDが11のパケット(コマンドパケット)PA1を送信し、図2における場合と同様に、そのパケットPA1に対するレスポンスパケットの受信を待機する受信待機状態となる。
【0034】
リーダライタAにかざされたICカードCは、ステップS41において、リーダライタAからのパケットPA1を受信し、そのパケットPA1に応じた処理を開始する。
【0035】
一方、リーダライタBは、図2で説明した場合と同様に、ポーリングを行っており、図3では、ステップS51において、パケット(コマンドパケット)PBを送信している。
【0036】
リーダライタBがステップS51においてパケットPBを送信したときには、リーダライタAは、受信待機状態となっており、ステップS32において、リーダライタBからのパケットPBを受信する。
【0037】
リーダライタBからのパケットPBは、コマンドパケットであり、リーダライタAが受信を待機している、コマンドパケットPA1に対するレスポンスパケットではない。
【0038】
このため、リーダライタAは、図2における場合と同様に、ステップS32で受信したパケットPBにエラーがあるとして、ステップS32からステップS33に進み、パケット(コマンドパケット)を再送する。即ち、リーダライタAは、パケットPA1を再送するパケットとして、パケットPA2を送信する。
【0039】
このとき、リーダライタAは、前回送信したパケットPA1のシーケンスIDが11であったので、今回送信するパケットPA2のシーケンスIDを、11に1を加算した12にする。
【0040】
ICカードCは、ステップS42において、リーダライタAからのパケットPA2を受信する。
【0041】
また、ICカードCは、ステップS41で受信した、シーケンスIDが11のパケットPA1に応じた処理が終了すると、そのパケットPA1に対するレスポンスパケットとしてのパケットPCを送信する。
【0042】
パケットPCは、リーダライタAからのシーケンスIDが11のパケットPA1に対するレスポンスパケットであるので、ICカードCは、パケットPCのシーケンスIDを、11に1を加算した12にする。
【0043】
リーダライタAは、ステップS34において、ICカードCからのパケットPCを受信するが、このパケットPCのシーケンスIDは12になっており、リーダライタAが直前に送信したパケットPA2のシーケンスIDである12を1だけインクリメントした値(13)になっていない。
【0044】
このため、リーダライタAは、ステップS34で受信したパケットPCにエラーがあるとして(この場合は、パケットPCが不正なパケットであるとして)、ステップS34からステップS35に進み、パケットを再送する。即ち、リーダライタAは、パケットPA1を再送するパケットとして、パケットPA3を送信する。
【0045】
なお、このとき、リーダライタAは、前回送信したパケットPA2のシーケンスIDが12であったので、今回送信するパケットPA3のシーケンスIDを、12に1を加算した13にする。
【0046】
リーダライタAがステップS34で受信したパケットPCは、リーダライタAがステップS31で送信したパケットPA1に対する正常なレスポンスパケットではあるが、リーダライタAがステップS33で、パケットPA1を再送するパケットとしてのパケットPA2を送信した後に、ICカードCから送信されてきたため、リーダライタAでは、パケットPA1に対しては正常なレスポンスパケットPCが、パケットPA2に対する正常なレスポンスパケットではなく、エラーが生じているとして扱われ、パケットの再送が再度行われる。
【0047】
【特許文献1】特開平10-293824号公報
【特許文献2】特開平11-345294号公報
【特許文献3】特開2000-20651号公報
【発明の開示】
【発明が解決しようとする課題】
【0048】
以上のように、リーダライタAが受信したパケットにエラーがある場合に、リーダライタAにおいて、パケットを、即座に再送すると、リーダライタAとBとの間で生じた混信に起因して、リーダライタAが受信したパケットにエラーがあるとして、パケットの再送が頻繁に行われる。そして、これにより、リーダライタAと、そのリーダライタAにかざされたICカードCとの間の通信が妨げられ、通信性能(ICカードCの応答性)が劣化し、ひいては、非接触式ICカードシステム全体の信頼性が低くなる課題があった。
【0049】
本発明は、このような状況に鑑みてなされたものであり、例えば、複数のリーダライタどうしが混信を生じる環境下にあっても、ICカードとの通信を、容易に行うことができるようにするものである。
【課題を解決するための手段】
【0050】
本発明の通信装置は、コマンドを送信させる送信制御手段と、コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェック手段と、タイムアウト時間が経過したときのみ、コマンドを再送させる再送制御手段と、タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェック手段と、タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理手段とを備え、タイムアウト時間内に受信された受信データにエラーがある場合、再送制御手段は、コマンドを再送させず、タイムアウト時間チェック手段は、タイムアウト時間が経過したか否かのチェックを続行することを特徴とする。
【0051】
本発明の通信方法は、コマンドを送信させる送信制御ステップと、コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェックステップと、タイムアウト時間が経過したときのみ、コマンドを再送させる再送制御ステップと、タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェックステップと、タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理ステップとを含み、タイムアウト時間内に受信された受信データにエラーがある場合、再送制御ステップでは、コマンドを再送させず、タイムアウト時間チェックステップでは、タイムアウト時間が経過したか否かのチェックを続行することを特徴とする。
【0052】
本発明のプログラムは、コマンドを送信させる送信制御ステップと、コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェックステップと、タイムアウト時間が経過したときのみ、コマンドを再送させる再送制御ステップと、タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェックステップと、タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理ステップとを含み、タイムアウト時間内に受信された受信データにエラーがある場合、再送制御ステップでは、コマンドを再送させず、タイムアウト時間チェックステップでは、タイムアウト時間が経過したか否かのチェックを続行することを特徴とする。
【0053】
本発明においては、コマンドが送信され、コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かがチェックされる。そして、タイムアウト時間が経過したときのみ、コマンドが再送される。また、タイムアウト時間内に受信された受信データにエラーがあるか否かがチェックされ、タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理が行われる。一方、タイムアウト時間内に受信された受信データにエラーがある場合、コマンドは再送されず、タイムアウト時間が経過したか否かのチェックが続行される。
【発明の効果】
【0054】
本発明によれば、例えば、混信が生じている環境下において、非接触での通信を、容易に行うことができる。具体的には、例えば、例えば、ICカードと非接触で通信を行うリーダライタが、他のリーダライタとの間で混信を生じる環境下にあっても、ICカードとの通信を、容易に行うことができる。
【発明を実施するための最良の形態】
【0055】
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【0056】
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
【0057】
請求項1に記載の通信装置は、
非接触で通信を行う通信装置(例えば、図4のリーダライタ1)において、
コマンドを送信させる送信制御手段(例えば、図6のステップS102の処理を行う図4のマイコン11)と、
前記コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェック手段(例えば、図6のステップS104の処理を行う図4のマイコン11)と、
前記タイムアウト時間が経過したときのみ、前記コマンドを再送させる再送制御手段(例えば、図6のステップS110の処理を行う図4のマイコン11)と、
前記タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェック手段(例えば、図6のステップS106,S107、またはS108の処理を行う図4のマイコン11)と、
前記タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、前記コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理手段(例えば、図6のステップS109の処理を行う図4のマイコン11)と
を備え、
前記タイムアウト時間内に受信された受信データにエラーがある場合、
前記再送制御手段は、前記コマンドを再送させず、
前記タイムアウト時間チェック手段は、前記タイムアウト時間が経過したか否かのチェックを続行する
ことを特徴とする。
【0058】
請求項3に記載の通信方法は、
非接触で通信を行う通信装置(例えば、図4のリーダライタ1)の通信方法において、
コマンドを送信させる送信制御ステップ(例えば、図6のステップS102)と、
前記コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェックステップ(例えば、図6のステップS104)と、
前記タイムアウト時間が経過したときのみ、前記コマンドを再送させる再送制御ステップ(例えば、図6のステップS110)と、
前記タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェックステップ(例えば、図6のステップS106,S107、またはS108)と、
前記タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、前記コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理ステップ(例えば、図6のステップS109)と
を含み、
前記タイムアウト時間内に受信された受信データにエラーがある場合、
前記再送制御ステップでは、前記コマンドを再送させず、
前記タイムアウト時間チェックステップでは、前記タイムアウト時間が経過したか否かのチェックを続行する
ことを特徴とする。
【0059】
請求項4に記載のプログラムは、
非接触で通信を行う通信装置(例えば、図4のリーダライタ1)を制御するコンピュータ(例えば、図4のマイコン11(CPU11A))に実行させるプログラムにおいて、
コマンドを送信させる送信制御ステップ(例えば、図6のステップS102)と、
前記コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェックステップ(例えば、図6のステップS104)と、
前記タイムアウト時間が経過したときのみ、前記コマンドを再送させる再送制御ステップ(例えば、図6のステップS110)と、
前記タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェックステップ(例えば、図6のステップS106,S107、またはS108)と、
前記タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、前記コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理ステップ(例えば、図6のステップS109)と
を含み、
前記タイムアウト時間内に受信された受信データにエラーがある場合、
前記再送制御ステップでは、前記コマンドを再送させず、
前記タイムアウト時間チェックステップでは、前記タイムアウト時間が経過したか否かのチェックを続行する
ことを特徴とする。
【0060】
以下、図面を参照して、本発明の実施の形態について説明する。
【0061】
図4は、本発明を適用したICカードシステムの一実施の形態の構成例を示している。
【0062】
図1のICカードシステムにおいては、リーダライタ1が、ホストコンピュータ2の制御にしたがって動作し、ICカード3との間で、非接触での通信を行う。
【0063】
リーダライタ1は、マイコン11、I/F(Interface)12、送信回路13、変調回路14、アンテナ15、復調回路16、外部回路17、およびタイマ18などで構成されている。
【0064】
マイコン11は、CPU(Central Processing Unit)11A,RAM(Random Access Memory)11B、およびEEPROM(Electrically Erasable Programmable Read Only Memory)11Cなどで構成され、プログラムを実行することにより、リーダライタ1の各部の制御、その他の各種の処理を行う。
【0065】
即ち、CPU11Aは、EEPROM11Cに記憶されたプログラムを(必要に応じてRAM11Bにロードして)実行する。これにより、CPU11Aは、例えば、ICカード3に送信するパケット(コマンドパケット)の生成や、パケットを電磁波により送信させる送信制御、後述するタイムアウト時間が経過したか否かのチェック、パケットを電磁波により再送させる再送制御を行う。さらに、CPU11Aは、アンテナ15で受信され、復調回路16から供給されるパケット(受信データ)にエラーがあるか否かのチェックや、エラーがないパケット、つまり、ICカード3からの正常なレスポンスパケットに応じた処理なども行う。
【0066】
なお、CPU11Aは、ICカード3に送信するパケットを生成し、電磁波により送信させるため、そのパケットを、変調回路14に供給するが、その際、変調回路14に供給するパケットを、マンチェスタ符号等にエンコードするエンコード処理も行う。さらに、CPU11Aは、アンテナ15で受信され、復調回路16から供給されるパケットを受信するが、そのパケットはマンチェスタ符号等にエンコードされているので、そのマンチェスタ符号等をデコードするデコード処理も行う。
【0067】
RAM11Bは、CPU11Aが実行するプログラムや、CPU11Aの動作上必要なデータ等を一時記憶する。EEPROM11Cには、CPU11Aが実行するプログラムがインストールされる。その他、EEPROM11Cには、必要なデータが記憶される。
【0068】
I/F12は、ホストコンピュータ2とマイコン11との間のインタフェースであり、ホストコンピュータ2は、I/F12を介して、マイコン11を制御する。また、マイコン11は、ホストコンピュータ2に供給すべきデータを、I/F12を介して、ホストコンピュータ2に転送する。
【0069】
なお、マイコン11(CPU11A)が実行するプログラムは、あらかじめ、EEPROM11Cにインストールしておくことができる他、ホストコンピュータ2からI/F12を介して、EEPROM11Cにインストールすることができる。その他、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブルな記録媒体に記録し、その記録媒体を、図示せぬドライブで駆動して、EEPROM11にインストールすることができる。
【0070】
また、プログラムは、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、リーダライタ1に無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、リーダライタ1に有線で転送し、リーダライタ1では、そのようにして転送されてくるプログラムを、I/F12で受信し、EEPROM11Cにインストールすることができる。
【0071】
送信回路13は、アンテナ15から、所定の単一の周波数のキャリアを発生し、変調回路14に供給する。
【0072】
変調回路14は、送信回路13からのキャリアを、マイコン11から供給されるパケット(コマンドパケット)にしたがって変調(例えば、振幅変調(ASK(Amplitude Shift Keying)))し、その結果得られる変調信号を、アンテナ15に供給する。これにより、アンテナ15からは、マイコン11が変調回路14に供給したパケットにしたがってキャリアを変調した変調信号に対応する電磁波が放射される。
【0073】
なお、リーダライタ1は、パケット(コマンドパケット)を送信した後、そのパケットに対するレスポンスパケットの受信を待機する受信待機状態となるが、受信待機状態においては、変調回路14は、送信回路13からのキャリアを変調せずに、そのままアンテナ15に供給する。従って、受信待機状態においては、アンテナ15からは、キャリアに対応する電磁波が放射される。
【0074】
即ち、ICカード3は、例えば、リーダライタ1からICカード3を見たインピーダンスを変化させることにより、リーダライタ1が放射する電磁波(キャリア)を変調する、いわゆる負荷変調を行うことにより、パケット(レスポンスパケット)を、その電磁波を出力しているリーダライタ1に送信するようになっており、このため、リーダライタ1は、ICカード3からのレスポンスパケットの受信を待機する受信待機状態では、キャリアに対応する電磁波を放射する。
【0075】
アンテナ15は、閉ループのコイルを構成しており、このコイルに流れる電流(信号)が変化することで、電磁波を放射する。また、ICカード3がリーダライタ1にかざされ、アンテナ15とICカード3とが近接した状態になり、ICカード3が、リーダライタ1から見たインピーダンスを変化させると、アンテナ15に流れる電流(信号)が変化する。
【0076】
復調回路16は、アンテナ15に流れる電流(信号)を受信して復調し、その結果得られるパケット(のマンチェスタ符号等)を、マイコン11に供給する。
【0077】
外部回路17は、例えば、耐タンパ性のあるセキュアなICチップで、マイコン11の制御にしたがい、ICカード3に送信するデータの暗号化や、復調回路16から供給される、ICカード3からのパケットに配置されたデータの暗号の復号等を行う。
【0078】
タイマ(回路)18は、マイコン11の制御にしたがい、タイムアウト時間を計時する。
【0079】
なお、ここでは、ICカード3において、リーダライタ1が出力する電磁波(キャリア)を変調する負荷変調を行うことにより、パケットを送信するようにしたが、ICカード3では、自身がキャリアを出力し、そのキャリアを変調することにより、パケットを送信するようにすることもできる。この場合、リーダライタ1は、受信待機状態において、キャリアの出力を停止する。
【0080】
また、ICカード3は、リーダライタ1が放射する電磁波から電源を得るICカードであってもよいし、バッテリを内蔵しているICカードであてもよい。
【0081】
次に、図5は、図4のリーダライタ1やICカード3が送信するパケット(コマンドパケットとレスポンスパケット)のフォーマットを示している。
【0082】
パケットは、その先頭から、ヘッダ、パケット長、コマンドコード/レスポンスコード、シーケンスID、実データ、パケットチェックコードが順次配置されて構成される。
【0083】
ヘッダは、所定の情報(ヘッダ情報)で構成される。パケット長は、パケット全体の長さ(データ長)を表す。
【0084】
コマンドコード/レスポンスコードは、前述したように、パケットの種別、即ち、例えば、パケットが、コマンドパケットまたはレスポンスパケットのうちのいずれであるのか等を表す。
【0085】
シーケンスIDは、前述したように、いわゆるなりすましを防止するために用いられ、リーダライタ1やICカード3において、例えば、1ずつインクリメントされる値である。即ち、リーダライタ1は、パケットを送信するとき、そのパケットのシーケンスIDを、前回送信したパケットのシーケンスIDとは異なる値にセットする。そして、ICカード3は、リーダライタ1からのパケットを受信し、そのパケットに対するレスポンスパケットを送信するとき、レスポンスパケットのシーケンスIDを、リーダライタ1からのパケットのシーケンスIDに1を加算した値にセットする。リーダライタ1は、ICカード3からのレスポンスパケットを受信し、さらに、ICカード3にパケットを送信するとき、そのパケットのシーケンスIDを、ICカード3からのレスポンスパケットのシーケンスIDに1を加算した値にセットする。以下、同様に、リーダライタ1とICカード3は、通信を終了するまで、直前に受信したパケットのシーケンスIDを1だけインクリメントした値を、これから送信しようとするパケットのシーケンスIDとする。
【0086】
従って、リーダライタ1とICカード3では、いま受信したパケットのシーケンスIDが、直前に送信したパケットのシーケンスIDに1を加算した値になっているか否かをチェックすることにより、そのような値になっていない場合には、いま受信したパケットが、不正なパケットであることを認識することができる。
【0087】
実データは、リーダライタ1またはICカード3のうちの一方が他方に送信する本来のデータである。ここで、実データには、コマンドが、適宜含まれる。即ち、例えば、リーダライタ1がICカード3に対してデータの読み出しを要求する場合、リーダライタ1は、データの読み出しを要求する読み出しコマンドを含むコマンドパケットを送信するが、その読み出しコマンドは、実データとして、コマンドパケットに配置される。また、例えば、リーダライタ1がICカード3に対してデータの書き込みを要求する場合、リーダライタ1は、データの書き込みを要求する書き込みコマンドを含むコマンドパケットを送信するが、その書き込みコマンドと、書き込み対象のデータとは、実データとして、コマンドパケットに配置される。
【0088】
パケットチェックコードは、パケットの整合性をチェックするためのエラーチェック(誤り検出)用のコードである。
【0089】
次に、図6のフローチャートを参照して、図4のリーダライタ1の動作について説明する。
【0090】
マイコン11(のCPU11A)は、ステップS101において、図5に示したフォーマットのコマンドパケットを生成して、ステップS102に進み、そのコマンドパケットを電磁波により送信させる送信制御を行う。即ち、マイコン11は、コマンドパケットを、変調回路14に供給するとともに、そのコマンドパケットを送信するように、変調回路14を制御する。
【0091】
変調回路14は、マイコン11からの制御にしたがい、送信回路13から供給されるキャリアを、マイコン11から供給されるコマンドパケットにしたがって変調し、その結果得られる変調信号を、アンテナ15に供給する。これにより、アンテナ15からは、マイコン11が変調回路14に供給したパケットにしたがってキャリアを変調した変調信号に対応する電磁波が放射され、コマンドパケットが、ICカード3に送信される。
【0092】
その後、ステップS102からS103に進み、マイコン11は、直前のステップS102で送信されたコマンドパケットに対するレスポンスパケットを待つ時間であるタイムアウト時間を求め、その計時を開始するように、タイマ18を制御する。これにより、タイマ18は、タイムアウト時間の計時を開始し、リーダライタ1は受信待機状態となる。
【0093】
ここで、マイコン11は、ICカードシステムの用途(例えば、自動改札機など)や、コマンドパケットに含ませるコマンドに応じて、例えば、数ミリ秒から数十ミリ秒程度のタイムアウト時間を求める。但し、タイムアウト時間は、一定の時間とすることも可能である。
【0094】
ステップS103において、タイマ18がタイムアウト時間の計時を開始すると、ステップS104に進み、マイコン11は、タイマ18が計時する時刻を参照し、タイマ18がタイムアウト時間の計時を開始してから、そのタイムアウト時間が経過したか否かをチェック(判定)する。
【0095】
ステップS104において、タイムアウト時間が経過していないと判定された場合、ステップS105に進み、マイコン11は、外部からのパケットを受信したか否かを判定する。ステップS105において、パケットを受信していないと判定された場合、ステップS104に戻り、以下、同様の処理が繰り返される。
【0096】
また、ステップS105において、パケットを受信したと判定された場合、即ち、外部から送信されてきたパケットが、アンテナ15で受信され、復調回路16で復調されて、マイコン11に供給された場合、ステップS106に進み、以下、ステップS106乃至S108において、そのパケット、即ち、復調回路16からマイコン11に供給されたパケット(以下、適宜、受信パケットという)にエラーがあるか否かをチェック(判定)するエラーチェックが行われる。
【0097】
具体的には、まず、ステップS106において、マイコン11は、受信パケットのパケット長(図5)を参照し、そのパケット長に基づき、受信パケットにエラーがあるか否かを判定する。
【0098】
即ち、リーダライタ1が、直前のステップS102で送信したコマンドパケットに対するレスポンスパケットには、そのレスポンスパケットとして期待されるパケット長がある。
【0099】
具体的には、例えば、データの読み出しを要求する読み出しコマンドが配置されたコマンドパケットに対するレスポンスパケットには、その読み出しコマンドに応じて読み出されたデータが配置されるから、そのパケット長は、ある程度長くなる。一方、例えば、データの書き込みを要求する書き込みコマンドが配置されたコマンドパケットに対するレスポンスパケットには、読み出しコマンドにおける場合のようなデータは配置されないから、そのパケット長は短くなる。
【0100】
従って、読み出しコマンドが配置されたコマンドパケットに対するレスポンスパケットのパケット長は、ある程度長いことが期待され、書き込みコマンドが配置されたコマンドパケットに対するレスポンスパケットのパケット長は短いことが期待される。
【0101】
ステップS106では、受信パケットのパケット長が、直前のステップS102で送信されたコマンドパケットに対するレスポンスパケットに期待されるパケット長であるか否かによって、受信パケットにエラーがあるか否かを判定する。
【0102】
ステップS106において、受信パケットのパケット長に基づき、その受信パケットにエラーがあると判定された場合、即ち、受信パケットのパケット長が、直前のステップS102で送信されたコマンドパケットに対するレスポンスパケットに期待されるパケット長でない場合、マイコン11は、受信パケットを廃棄してステップS104に戻り、タイムアウト時間が経過したか否かのチェックを続行する。
【0103】
即ち、タイムアウト時間内に受信された受信パケットにエラーがある場合、マイコン11は、後述する再送処理を行わず、従って、コマンドパケットを再送させずに、タイムアウト時間が経過したか否かのチェックを続行する。
【0104】
また、ステップS106において、受信パケットに、そのパケット長に基づくエラーがないと判定された場合、即ち、受信パケットのパケット長が、直前のステップS102で送信されたコマンドパケットに対するレスポンスパケットに期待されるパケット長である場合、ステップS107に進み、マイコン11は、受信パケットのパケットチェックコード(図5)を参照し、そのパケットチェックコードに基づき、受信パケットにエラーがあるか否かを判定する。
【0105】
ステップS107において、受信パケットのパケットチェックコードに基づき、その受信パケットにエラーがあると判定された場合、マイコン11は、受信パケットを廃棄してステップS104に戻り、タイムアウト時間が経過したか否かのチェックを続行する。
【0106】
即ち、タイムアウト時間内に受信された受信パケットにエラーがある場合、マイコン11は、上述したように、コマンドパケットを再送させずに、タイムアウト時間が経過したか否かのチェックを続行する。
【0107】
また、ステップS107において、受信パケットに、そのパケットチェックコードに基づくエラーがないと判定された場合、ステップS108に進み、マイコン11は、受信パケットのコマンドコード/レスポンスコード(図5)を参照し、そのコマンドコード/レスポンスコードに基づき、受信パケットにエラーがあるか否かを判定する。
【0108】
ステップS108において、受信パケットのコマンドコード/レスポンスコードに基づき、その受信パケットにエラーがあると判定された場合、即ち、受信パケットのコマンドコード/レスポンスコードが、直前のステップS102で送信されたコマンドパケットに対するレスポンスパケットに期待されるレスポンスコードに一致しない場合、マイコン11は、受信パケットを廃棄してステップS104に戻り、タイムアウト時間が経過したか否かのチェックを続行する。
【0109】
即ち、タイムアウト時間内に受信された受信パケットにエラーがある場合、マイコン11は、上述したように、コマンドパケットを再送させずに、タイムアウト時間が経過したか否かのチェックを続行する。
【0110】
また、ステップS108において、受信パケットに、そのコマンドコード/レスポンスコードに基づくエラーがないと判定された場合、即ち、受信パケットのコマンドコード/レスポンスコードが、直前のステップS102で送信されたコマンドパケットに対するレスポンスパケットに期待されるレスポンスコードに一致する場合、ステップS109に進み、マイコン11は、受信パケットを、直前のステップS102で送信されたコマンドパケットに対する正常なレスポンスパケットとして、そのレスポンスパケットに応じた処理を行い、処理を終了する。
【0111】
即ち、例えば、ICカード3が、定期券としての機能を有し、直前のステップS102で送信されたコマンドパケットが、定期券の期限と乗車(可能)区間のデータの読み出しを要求する読み出しコマンドが配置されたものであり、そのコマンドパケットに対するレスポンスパケットとして、定期券の期限と乗車区間のデータが配置された正常なレスポンスパケットが得られた場合には、マイコン11は、そのレスポンスパケットに応じた処理として、定期券の期限と乗車区間が適正であるか否かのチェック等を行う。
【0112】
一方、ステップS104において、タイムアウト時間が経過したと判定された場合、即ち、マイコン11において、タイムアウト時間内に、エラーのない(正常な)レスポンスパケットを受信することができなかった場合、ステップS110に進み、マイコン11は、直前のステップS102で送信させたコマンドパケットを再送させる再送処理を行い、処理を終了する。
【0113】
即ち、ステップS110では、図6のフローチャートに示したステップS101乃至S110の処理が再帰的に行われ、これにより、コマンドパケットが再送される。
【0114】
以上のように、リーダライタ1では、タイムアウト時間内に受信された受信パケットにエラーがある場合には、コマンドパケットの再送をせずに、タイムアウト時間が経過したか否かのチェックを続行し、即ち、タイムアウト時間が経過する前は、受信パケットにエラーがあっても、コマンドパケットの再送を行わずに、受信待機状態となって、パケットが送信されてくるのを待ち、タイムアウト時間内に受信された受信パケットにエラーがない場合には、その受信パケットを、コマンドパケットに対する正常なレスポンスパケットとして、そのレスポンスパケットに応じた処理を行う。さらに、リーダライタ1は、タイムアウト時間が経過したときのみ、コマンドパケットの再送を行う。従って、リーダライタ1に近接して他のリーダライタが設置されている場合であっても、後述する図7や図8で説明するように、リーダライタ1は、他のリーダライタに起因する混信の影響を抑えて、リーダライタにかざされたICカード3と通信を行うことができる。
【0115】
また、リーダライタ1は、受信パケットにエラーがあっても、即座に、コマンドパケットを再送せずに、タイムアウト時間が経過したときのみ、コマンドパケットを再送するので、コマンドパケットの送信(再送)の頻度が低下し、その結果、リーダライタ1に近接して設置された他のリーダライタにICカード3がかざされた場合に、リーダライタ1がコマンドパケットの再送を頻繁に行うことによる、他のリーダライタとICカード3との通信の妨害の程度を低減することができる。
【0116】
次に、図7および図8を参照して、リーダライタ1に近接して他のリーダライタが設置されている場合において、リーダライタ1にICカード3がかざされたときの、リーダライタ1、ICカード3、他のリーダライタの動作について説明する。
【0117】
なお、他のリーダライタは、図4に示したリーダライタ1と同様に構成されているものとする。
【0118】
まず、図7を参照して、リーダライタ1が、そこにかざされたICカード3からのレスポンスパケットを、タイムアウト時間内に受信することができる場合の、リーダライタ1、ICカード3、他のリーダライタの動作について説明する。
【0119】
図7では、リーダライタ1は、ステップS121において、コマンドコードが0x10のコマンドパケットP1を送信して、ステップS122に進み、タイムアウト時間の計時を開始して、受信待機状態となる。
【0120】
ここで、コマンドコードが0x10のコマンドパケットに対するレスポンスパケットのレスポンスコードが、例えば、0x11であるとすると、リーダライタ1は、ステップS122において、レスポンスコードが0x11のレスポンスパケットの受信を待機する受信待機状態となる。
【0121】
ICカード3は、ステップS131において、リーダライタ1が送信した、コマンドコードが0x10のコマンドパケットP1を受信し、そのコマンドパケットP1に応じた処理を開始する。
【0122】
一方、他のリーダライタは、ICカードがかざされた(ICカードが近接する位置にある)ことを検出するためのポーリングを行っており、具体的には、例えば、コマンドコードが0x80のコマンドパケットを周期的に送信している。
【0123】
図7では、他のリーダライタは、ステップS141において、コマンドコードが0x80のコマンドパケットP1'を送信し、以下、周期的に、コマンドコードが0x80のコマンドパケットを送信する。
【0124】
リーダライタ1は、ステップS122において受信待機状態となった後のステップS123において、他のリーダライタからのパケットP1'を受信する。
【0125】
他のリーダライタからのパケットP1'は、コマンドコードが0x80のコマンドパケットであり、リーダライタ1が受信を待機(期待)している、コマンドパケットP1に対するレスポンスパケット、つまり、レスポンスコードが0x11のパケットではないので、リーダライタ1は、ステップS123で受信したパケットP1'にエラーがあるとして、そのパケットP1'を廃棄する。さらに、リーダライタ1は、まだ、タイムアウト時間が経過していないため、タイムアウト時間の計時(および受信待機状態)を続行する。
【0126】
その後、他のリーダライタは、ステップS142において、コマンドコードが0x80のパケットであるコマンドパケットP2'を送信し、ステップS124において、リーダライタ1は、他のリーダライタからのパケットP2'を受信する。
【0127】
他のリーダライタからのパケットP2'も、リーダライタ1が前回(ステップS123において)受信したパケットP1'と同様に、コマンドコードが0x80のコマンドパケットであり、リーダライタ1が受信を待機(期待)している、レスポンスコードが0x11のパケットではないので、リーダライタ1は、ステップS124で受信したパケットP2'も、エラーがあるとして廃棄する。さらに、リーダライタ1は、まだ、タイムアウト時間が経過していないため、タイムアウト時間の計時(および受信待機状態)を続行する。
【0128】
一方、ICカード3は、リーダライタ1からのコマンドパケットP1に応じた処理を終了すると、ステップS132において、そのコマンドパケットP1に対するレスポンスパケットとして、レスポンスコードが0x11のパケットP2を送信する。
【0129】
このとき、リーダライタ1は、タイムアウト時間の計時をしており、受信待機状態にあるので、ステップS125において、ICカード3からのパケットP2を受信する。
【0130】
ICカードからのパケットP2は、レスポンスコードが0x11のレスポンスパケットであり、リーダライタ1が受信を待機(期待)しているパケットであるから、リーダライタ1は、ステップS125で受信したパケットP2が、エラーがない正常なレスポンスパケットであるとして、タイムアウト時間の計時を終了し、そのレスポンスパケットP2に応じた処理を行う。
【0131】
以上のように、リーダライタ1は、タイムアウト時間内では、受信パケットにエラーがあっても、コマンドパケットの再送をせずに、パケットの受信を待機し、エラーのない受信パケットを受信した場合には、タイムアウト時間内に受信した他の受信パケットにエラーがあっても、エラーのない受信パケットを、コマンドパケットに対する正常なレスポンスパケットとして、そのレスポンスに応じた処理を行う。
【0132】
従って、図2で説明した、受信パケットにエラーがあると、即座に、コマンドパケットを再送する場合のように、その再送によって、リーダライタ1によるICカード3からのレスポンスパケットの受信が妨げられる頻度を低減することができる。
【0133】
次に、図8を参照して、リーダライタ1が、そこにかざされたICカード3からのレスポンスパケットを、タイムアウト時間内に受信することができない場合の、リーダライタ1、ICカード3、他のリーダライタの動作について説明する。
【0134】
図8では、リーダライタ1は、ステップS151において、コマンドコードが0x10のコマンドパケットP1を送信して、ステップS152に進み、タイムアウト時間の計時を開始して、受信待機状態となる。
【0135】
即ち、リーダライタ1は、図7のステップS152における場合と同様に、コマンドコードが0x10のコマンドパケットに対するレスポンスパケットである、レスポンスコードが0x11のレスポンスパケットの受信を待機する受信待機状態となる。
【0136】
ICカード3は、ステップS161において、リーダライタ1が送信した、コマンドコードが0x10のコマンドパケットP1を受信し、そのコマンドパケットP1に応じた処理を開始する。
【0137】
一方、他のリーダライタは、図7における場合と同様に、コマンドコードが0x80のコマンドパケットを周期的に送信している。
【0138】
図8では、他のリーダライタは、ステップS171において、コマンドコードが0x80のコマンドパケットP1'を送信し、以下、周期的に、コマンドコードが0x80のコマンドパケットを送信する。
【0139】
リーダライタ1は、ステップS152において受信待機状態となった後のステップS153において、他のリーダライタからのパケットP1'を受信する。
【0140】
他のリーダライタからのパケットP1'は、コマンドコードが0x80のコマンドパケットであり、リーダライタ1が受信を待機(期待)している、レスポンスコードが0x11のパケットではないので、リーダライタ1は、ステップS153で受信したパケットP1'にエラーがあるとして、そのパケットP1'を廃棄する。さらに、リーダライタ1は、まだ、タイムアウト時間が経過していないため、タイムアウト時間の計時(および受信待機状態)を続行する。
【0141】
その後、他のリーダライタは、ステップS172において、コマンドコードが0x80のパケットであるコマンドパケットP2'を送信し、ステップS154において、リーダライタ1は、他のリーダライタからのパケットP2'を受信する。
【0142】
他のリーダライタからのパケットP2'も、リーダライタ1が前回(ステップS153において)受信したパケットP1'と同様に、リーダライタ1が受信を待機(期待)している、レスポンスコードが0x11のパケットではないので、リーダライタ1は、ステップS154で受信したパケットP2'も、エラーがあるとして廃棄する。さらに、リーダライタ1は、まだ、タイムアウト時間が経過していないため、タイムアウト時間の計時(および受信待機状態)を続行する。
【0143】
一方、ICカード3は、リーダライタ1からのコマンドパケットP1に応じた処理を終了し、ステップS162において、そのコマンドパケットP1に対するレスポンスパケットとして、レスポンスコードが0x11のパケットP2を送信するが、そのパケットP2の送信が、リーダライタ1において、他のリーダライタからのパケットP2'をステップS154で受信しているときに行われ、その結果、リーダライタ1が、ICカード3からのパケットP2を受信することができなかったとする。
【0144】
この場合、ICカード3は、ステップS162において、コマンドパケットP1に対するレスポンスパケットP2を送信したから、そのレスポンスパケットP2を再送することはない。
【0145】
一方、リーダライタ1は、コマンドパケットP1に対するレスポンスパケットの受信を待機しているが、ICカード3は、既に(ステップS162において)、コマンドパケットP1に対するレスポンスパケットP2を送信し、その再送も行わないから、リーダライタ1が、コマンドパケットP1に対するレスポンスパケットを受信することができないまま、タイムアウト時間が経過する。
【0146】
タイムアウト時間が経過すると、リーダライタ1は、ステップS155において、コマンドパケットを再送する。即ち、リーダライタ1は、コマンドコードが0x10のパケットとして、コマンドパケットP3を送信する。
【0147】
ICカード3は、ステップS163において、リーダライタ1からのコマンドパケットP3を受信し、その後、そのコマンドパケットP3に応じた処理を行って、コマンドパケットP3に対するレスポンスパケットを送信する。
【0148】
以上のように、リーダライタ1は、タイムアウト時間が経過したときのみ、コマンドパケットの再送するので、コマンドパケットの再送が頻繁に行われることを防止するのと同時に、何からの原因によって、ICカード3からのレスポンスパケットを受信し損ねても、タイムアウト時間の経過後に行われるコマンドパケットの再送によって、ICカード3からのレスポンスパケットを受信することが可能となる。
【0149】
なお、図6のフローチャートにおいては、受信パケットのパケット長(データ長)、パケットチェックコード(エラーチェック用のコード)、コマンドコード/レスポンスコード(受信パケットの種別を表すコード)に基づき、受信パケットにエラーがあるか否かをチェックするようにしたが、その他、受信パケットにエラーがあるか否かのチェックは、受信パケットのシーケンスID(図5)に基づいて行うことができる。
【0150】
また、図6のフローチャートにおいては、受信パケットにエラーがあるか否かのチェックを、その受信パケットのパケット長、パケットチェックコード、コマンド/レスポンスコードの順に参照して行うようにしたが、パケット長、パケットチェックコード、コマンド/レスポンスコードを、その他の順番で参照して、受信パケットにエラーがあるか否かのチェックを行うことも可能である。
【0151】
さらに、図6のフローチャートに示した処理は、マイコン11にプログラムを実行させることによって行う他、専用のハードウェアによって行うことも可能である。
【0152】
以上のように、リーダライタ1においては、タイムアウト時間が経過する前は、受信パケットにエラーがあっても、コマンドパケットの再送を行わずに、受信待機状態となって、パケットが送信されてくるのを待ち、タイムアウト時間内に受信された受信パケットにエラーがない場合には、その受信パケットを、コマンドパケットに対する正常なレスポンスパケットとして、そのレスポンスパケットに応じた処理を行い、タイムアウト時間が経過したときのみ、コマンドパケットの再送を行うので、図2や図3で説明したように、受信パケットにエラーがあると、即座に、コマンドパケットを再送する場合に比較して、コマンドパケットが再送される頻度が低減し、その結果、リーダライタ1が、他のリーダライタに近接して設置され、混信が生じる環境下においても、ICカード3がかざされたリーダライタ1は、混信の影響を抑えて、ICカード3と通信を行うことができる。
【0153】
また、受信パケットにエラーがあると、即座に、コマンドパケットを再送する処理(図1乃至図3で説明したリーダライタAが行う処理)から、タイムアウト時間が経過する前は、受信パケットにエラーがあっても、コマンドパケットの再送を行わずに、受信待機状態となって、パケットが送信されてくるのを待ち、タイムアウト時間内に受信された受信パケットにエラーがない場合には、その受信パケットを、コマンドパケットに対する正常なレスポンスパケットとして、そのレスポンスパケットに応じた処理を行い、タイムアウト時間が経過したときのみ、コマンドパケットの再送を行う処理(リーダライタ1が行う処理)への変更は、マイコン11が実行するプログラムの一部を変更することで、新たなハードウェアの追加等をすることなく、容易に行うことができる。
【0154】
従って、リーダライタ1は、他のリーダライタとの間で混信を生じる環境下にあっても、即ち、例えば、他のリーダライタに近接して設置されても、ICカード3との通信を、容易に行うことができる。
【0155】
その結果、リーダライタ1は、他のリーダライタとの間の混信を(ほとんど)考慮することなく設置することができ、このように、設置にあたっての設置条件が、従来に比較して緩いことから、リーダライタ1の設置に要する様々なコストを低減することができる。さらに、リーダライタ1を様々な環境に設置し、そのようなリーダライタ1で構成されるICカードシステムを様々な用途で利用することが可能となる。
【0156】
また、リーダライタ1は、上述のように、新たなハードウェアの追加をせずに構成することが可能であり、リーダライタ1の製造コストの上昇を抑えることができる。
【0157】
さらに、コマンドパケットが再送される頻度が低いので、リーダライタ1によるコマンドパケットの再送によって、リーダライタ1に近接して設定された他のリーダライタとICカード3との通信が妨げられることや、リーダライタ1に近接して設定された他のリーダライタによるコマンドパケットの再送によって、リーダライタ1とICカード3との通信が妨げられことが少なくなり、その結果、ICカード3との間の通信の通信性能(ICカードCの応答性)が向上し、その結果、実質的な通信速度を向上させることが可能となる。
【0158】
また、コマンドパケットが再送される頻度が低いので、リーダライタ1における消費電力を低減することができる。
【0159】
以上、本発明を、ICカードシステムに適用した場合について説明したが、本発明は、その他、例えば、無線タグシステムなどの、非接触での通信(無線通信)を行う装置に適用可能である。
【0160】
なお、本明細書において、コンピュータ(マイコン11のCPU11A)に各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。
【0161】
また、プログラムは、1のコンピュータにより処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。
【図面の簡単な説明】
【0162】
【図1】複数のリーダライタどうしが混信を起こしている状態を示す図である。
【図2】リーダライタAおよびB、並びにICカードCの動作を説明するフローチャート(アローチャート)である。
【図3】リーダライタAおよびB、並びにICカードCの動作を説明するフローチャートである。
【図4】本発明を適用したICカードシステムの一実施の形態の構成例を示すブロック図である。
【図5】リーダライタ1とICカード3が送信するパケットのフォーマットを示す図である。
【図6】リーダライタ1の動作を説明するフローチャートである。
【図7】リーダライタ1、ICカード3、および他のリーダライタの動作を説明するフローチャート(アローチャート)である。
【図8】リーダライタ1、ICカード3、および他のリーダライタの動作を説明するフローチャートである。
【符号の説明】
【0163】
1 リーダライタ, 2 ホストコンピュータ, 3 ICカード, 11 マイコン, 11A CPU, 11B RAM. 11C EEPROM, 12 I/F, 13 送信回路, 14 変調回路, 15 アンテナ, 16 復調回路, 17 外部回路, 18 タイマ
【技術分野】
【0001】
本発明は、通信装置、通信方法、およびプログラムに関し、特に、例えば、IC(Integrated Circuit)カードと非接触で通信を行うリーダライタが、他のリーダライタとの間で混信を生じる場合であっても、ICカードとの通信を、容易に行うことができるようにする通信装置、通信方法、およびプログラムに関する。
【背景技術】
【0002】
近年、ICカードとリーダライタとが電磁波により非接触で通信を行う非接触式ICカードシステムが急速に普及している。
【0003】
非接触式ICカードシステムでは、例えば、リーダライタは、電磁波を出力しており、リーダライタにICカードをかざすと、ICカードは、リーダライタが出力する電磁波により生じる相互誘導によって、電源を得て動作し、リーダライタとの通信を開始する。そして、リーダライタからICカードへのデータの送信は、リーダライタにおいて、自身が出力する電磁波を変調することによって行われ、ICカードからリーダライタへのデータの送信は、ICカードにおいて、リーダライタが出力する無変調の電磁波を、いわゆる負荷変調することによって行われる。
【0004】
このように、非接触式ICカードシステムでは、ICカードとリーダライタとの通信が非接触で行われるため、その利便性は高く、現在、例えば、駅の自動改札機等で広く利用されている。
【0005】
ところで、自動改札機では、短時間に、多くの人の入退場を処理する必要があるため、多くのリーダライタを設置することが要請される。しかしながら、自動改札機としてのリーダライタは、駅の改札口という限られた空間の中に設置しなければならず、多くのリーダライタを設置しようとすれば、リーダライタどうしは、必然的に、近接して設置されることになる。
【0006】
このように、リーダライタどうしが近接して設置されている場合において、近接している複数のリーダライタが、同一周波数のキャリア(搬送波)を使用しているときには、その複数のリーダライタが出力する電磁波が、相互干渉を起こして混信し、リーダライタが、そこにかざされたICカードと通信することができなくなることがある。
【0007】
即ち、図1は、複数のリーダライタどうしが混信を起こしている状態を示している。
【0008】
図1においては、ICカードCが、リーダライタAにかざされており、従って、リーダライタAは、ICカードCとのみ通信を行うべきである。
【0009】
しかしながら、図1に示すように、リーダライタAに近接して他のリーダライタBが設置されている場合、リーダライタAが出力する電磁波と、他のリーダライタBが出力する電磁波とが相互干渉を起こし、リーダライタAにおいて、相互干渉を起こした電磁波が、ICカードCによって負荷変調された電磁波として受信される。これにより、リーダライタAと、本来の通信相手であるICカードCとの通信が妨げられる。
【0010】
そこで、このような、リーダライタAとICカードCとの通信が妨げられることを防止する方法として、リーダライタAとBを、それら(の電磁波)が相互干渉を起こさないように、ある程度の距離をおいて設置する第1の方法がある。
【0011】
しかしながら、第1の方法では、例えば、改札口に設置することができるリーダライタの数が少なくなり、その結果、短時間に、多くの入退場者を処理することが困難となる。
【0012】
そこで、例えば、リーダライタに、干渉を検出する干渉検出手段を設け、干渉が生じる状態では、データ通信を行わないようにする第2の方法(例えば、特許文献1参照)や、隣接するリーダライタどうしでは、放射電磁界の位相が反転するようにする第3の方法(例えば、特許文献2参照)、リーダライタにキャリアの周波数を変更する機能を備える第4の方法(例えば、特許文献3参照)がある。
【0013】
しかしながら、第2の方法では、その干渉検出手段としての新たなハードウェアを、リーダライタに設ける必要があり、リーダライタのコストが大になる。
【0014】
また、隣接するリーダライタどうしにおいて放射電磁界の位相を反転させる第3の方法では、やはり、位相の反転を行うための新たなハードウェアを設ける必要がある。さらに、第3の方法では、リーダライタを設置する設置者が、隣接して配置されるリーダライタは必ず放射電磁界が反転するという設置条件を満たすように、リーダライタの設置位置を設計(計画)して、リーダライタを設置する必要があり、面倒である。
【0015】
また、第4の方法では、リーダライタを設置する設置者が、リーダライタのキャリアの周波数を管理する必要があり、特に、リーダライタを新たに増設するときや、リーダライタの配置位置を変更するときの設置者の負担が大になる。
【0016】
そこで、リーダライタが、ICカードから、正しいレスポンスパケットを受信することができない受信エラーが発生した場合は、リーダライタにおいて、ICカードに対し、コマンドパケットを再送する(コマンドパケットの送信のリトライを行う)第5の方法がある。
【0017】
即ち、非接触式ICカードシステムを構成するリーダライタとICカードとの間では、非接触通信によって、パケットがやりとりされるが、リーダライタは、所定の処理の実行を指示するコマンドの情報が含まれるパケットであるコマンドパケットをICカードに送信し、ICカードは、リーダライタからのコマンドパケットに対する応答(レスポンス)のパケットであるレスポンスパケットをリーダライタに送信する。
【0018】
第5の方法では、リーダライタが、コマンドパケットの送信後、パケット(レスポンスパケット)が送信されてくるのを待って受信し、そのパケットにエラーがあるか否かをチェックするエラーチェックを行う。そして、リーダライタが受信したパケットにエラーがある場合、リーダライタは、コマンドパケットを、即座に再送する。その後、リーダライタは、パケット(レスポンスパケット)の受信、そのパケットのエラーチェック、およびコマンドパケットの再送を、ICカードからの正常なレスポンスパケットを受信することができるまで繰り返す。
【0019】
第5の方法は、例えば、1台のリーダライタにかざされたICカードの近くに、他のICカードが偶然に存在し、リーダライタが送信したコマンドパケットに対して、そのリーダライタにかざされたICカードと、そのICカードの近くに存在する他のICカードとの両方が反応して、その両方のICカードが、リーダライタからのコマンドパケットに対するレスポンスパケットを送信することにより生じる干渉(混信)には有効である。
【0020】
しかしながら、図1で説明したように、近接して設置された2つのリーダライタAとBの間で混信(干渉)が生じている場合、上述のようなコマンドパケットの再送を行う第5の方法によって、リーダライタAと、それにかざされたICカードCとの間の通信性能を向上させることができるとは限らず、むしろ劣化させることがある。
【0021】
即ち、図2および図3は、近接して設置された2つのリーダライタAとBのうちの一方であるリーダライタAに対して、ICカードCがかざされた場合の、リーダライタAおよびB、並びにICカードCの動作を示している。
【0022】
図2において、リーダライタAは、ステップS1において、コマンドコードが0x10(0xは、その後に続く文字(列)が16進数であることを表す)のコマンドパケットPA1を送信して、ステップS2に進み、その後、コマンドパケットPA1に対するレスポンスパケットの受信を待機する受信待機状態となる。
【0023】
ここで、リーダライタAやBとICカードCとの間でやりとりされるパケットには、そのパケットの種別を表すコマンドコードまたはレスポンスコードが含まれている。コマンドまたはレスポンスコードは、それぞれ、例えば、パケットが、コマンドパケットまたはレスポンスパケットであることを表す。
【0024】
図2では、リーダライタAが、ステップS1において、コマンドコードが0x10のコマンドパケットPA1を送信しているが、いま、コマンドコードが0x10のコマンドパケットに対するレスポンスパケットのレスポンスコードが、例えば、0x11であるとすると、リーダライタAは、ステップS2において、レスポンスコードが0x11のパケット(レスポンスパケット)の受信を待機する受信待機状態となる。
【0025】
また、ICカードCは、ステップS11において、リーダライタAが送信した、コマンドコードが0x10のコマンドパケットPA1を受信し、そのコマンドパケットに応じた処理を開始する。なお、ICカードCは、リーダライタAからのコマンドパケットPA1に応じた処理を行った後は、そのコマンドパケットPA1に対するレスポンスパケットとして、レスポンスコードが0x11のパケットを送信する。
【0026】
一方、リーダライタBは、ICカードがかざされた(ICカードが近接する位置にある)ことを検出するためのポーリングを行っており、具体的には、例えば、コマンドコードが0x80のコマンドパケットを周期的に送信している。
【0027】
図2では、リーダライタBは、ステップS21において、コマンドコードが0x80のコマンドパケットPB1を送信し、以下、周期的に、コマンドコードが0x80のコマンドパケットを送信する。
【0028】
リーダライタBがステップS21においてパケットPB1を送信したときには、リーダライタAは、ステップS2において受信待機状態となっているので、ステップS3において、リーダライタBからのパケットPB1を受信する。
【0029】
しかしながら、リーダライタBからのパケットPB1は、コマンドコードが0x80のコマンドパケットであり、リーダライタAが受信を待機している、コマンドパケットPA1に対するレスポンスパケット、つまり、レスポンスコードが0x11のパケットではないので、リーダライタAは、ステップS3で受信したパケットPB1にエラーがあるとして、ステップS3からステップS4に進み、コマンドパケットを再送する。即ち、リーダライタAは、コマンドコードが0x10のパケットとして、コマンドパケットPA2を送信する。
【0030】
従って、リーダライタAが、コマンドコードが0x10のパケット(コマンドパケット)の再送中に、ICカードCが、先のコマンドパケットPA1に対するレスポンスパケットを送信してきた場合には、リーダライタAは、ICカードCからのレスポンスパケットを受信することができない。
【0031】
また、非接触式ICカードシステムを構成するリーダライタとICカードとの間でやりとりされるパケットには、シーケンスID(Identification)が含まれる場合がある。シーケンスIDは、正規のリーダライタとICカードとの通信が行われている場合に、不正なリーダライタまたはICカードが、その通信に割り込んで、正規のリーダライタまたはICカードになりすます、いわゆるなりすましを防止するために、正規のリーダライタとICカードによって、例えば、1ずつインクリメントされる値である。
【0032】
図3は、リーダライタとICカードとの間で、シーケンスIDを含むパケットがやりとりされる場合の、リーダライタAおよびB、並びにICカードCの動作を示している。
【0033】
リーダライタAは、ステップS31において、例えば、シーケンスIDが11のパケット(コマンドパケット)PA1を送信し、図2における場合と同様に、そのパケットPA1に対するレスポンスパケットの受信を待機する受信待機状態となる。
【0034】
リーダライタAにかざされたICカードCは、ステップS41において、リーダライタAからのパケットPA1を受信し、そのパケットPA1に応じた処理を開始する。
【0035】
一方、リーダライタBは、図2で説明した場合と同様に、ポーリングを行っており、図3では、ステップS51において、パケット(コマンドパケット)PBを送信している。
【0036】
リーダライタBがステップS51においてパケットPBを送信したときには、リーダライタAは、受信待機状態となっており、ステップS32において、リーダライタBからのパケットPBを受信する。
【0037】
リーダライタBからのパケットPBは、コマンドパケットであり、リーダライタAが受信を待機している、コマンドパケットPA1に対するレスポンスパケットではない。
【0038】
このため、リーダライタAは、図2における場合と同様に、ステップS32で受信したパケットPBにエラーがあるとして、ステップS32からステップS33に進み、パケット(コマンドパケット)を再送する。即ち、リーダライタAは、パケットPA1を再送するパケットとして、パケットPA2を送信する。
【0039】
このとき、リーダライタAは、前回送信したパケットPA1のシーケンスIDが11であったので、今回送信するパケットPA2のシーケンスIDを、11に1を加算した12にする。
【0040】
ICカードCは、ステップS42において、リーダライタAからのパケットPA2を受信する。
【0041】
また、ICカードCは、ステップS41で受信した、シーケンスIDが11のパケットPA1に応じた処理が終了すると、そのパケットPA1に対するレスポンスパケットとしてのパケットPCを送信する。
【0042】
パケットPCは、リーダライタAからのシーケンスIDが11のパケットPA1に対するレスポンスパケットであるので、ICカードCは、パケットPCのシーケンスIDを、11に1を加算した12にする。
【0043】
リーダライタAは、ステップS34において、ICカードCからのパケットPCを受信するが、このパケットPCのシーケンスIDは12になっており、リーダライタAが直前に送信したパケットPA2のシーケンスIDである12を1だけインクリメントした値(13)になっていない。
【0044】
このため、リーダライタAは、ステップS34で受信したパケットPCにエラーがあるとして(この場合は、パケットPCが不正なパケットであるとして)、ステップS34からステップS35に進み、パケットを再送する。即ち、リーダライタAは、パケットPA1を再送するパケットとして、パケットPA3を送信する。
【0045】
なお、このとき、リーダライタAは、前回送信したパケットPA2のシーケンスIDが12であったので、今回送信するパケットPA3のシーケンスIDを、12に1を加算した13にする。
【0046】
リーダライタAがステップS34で受信したパケットPCは、リーダライタAがステップS31で送信したパケットPA1に対する正常なレスポンスパケットではあるが、リーダライタAがステップS33で、パケットPA1を再送するパケットとしてのパケットPA2を送信した後に、ICカードCから送信されてきたため、リーダライタAでは、パケットPA1に対しては正常なレスポンスパケットPCが、パケットPA2に対する正常なレスポンスパケットではなく、エラーが生じているとして扱われ、パケットの再送が再度行われる。
【0047】
【特許文献1】特開平10-293824号公報
【特許文献2】特開平11-345294号公報
【特許文献3】特開2000-20651号公報
【発明の開示】
【発明が解決しようとする課題】
【0048】
以上のように、リーダライタAが受信したパケットにエラーがある場合に、リーダライタAにおいて、パケットを、即座に再送すると、リーダライタAとBとの間で生じた混信に起因して、リーダライタAが受信したパケットにエラーがあるとして、パケットの再送が頻繁に行われる。そして、これにより、リーダライタAと、そのリーダライタAにかざされたICカードCとの間の通信が妨げられ、通信性能(ICカードCの応答性)が劣化し、ひいては、非接触式ICカードシステム全体の信頼性が低くなる課題があった。
【0049】
本発明は、このような状況に鑑みてなされたものであり、例えば、複数のリーダライタどうしが混信を生じる環境下にあっても、ICカードとの通信を、容易に行うことができるようにするものである。
【課題を解決するための手段】
【0050】
本発明の通信装置は、コマンドを送信させる送信制御手段と、コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェック手段と、タイムアウト時間が経過したときのみ、コマンドを再送させる再送制御手段と、タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェック手段と、タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理手段とを備え、タイムアウト時間内に受信された受信データにエラーがある場合、再送制御手段は、コマンドを再送させず、タイムアウト時間チェック手段は、タイムアウト時間が経過したか否かのチェックを続行することを特徴とする。
【0051】
本発明の通信方法は、コマンドを送信させる送信制御ステップと、コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェックステップと、タイムアウト時間が経過したときのみ、コマンドを再送させる再送制御ステップと、タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェックステップと、タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理ステップとを含み、タイムアウト時間内に受信された受信データにエラーがある場合、再送制御ステップでは、コマンドを再送させず、タイムアウト時間チェックステップでは、タイムアウト時間が経過したか否かのチェックを続行することを特徴とする。
【0052】
本発明のプログラムは、コマンドを送信させる送信制御ステップと、コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェックステップと、タイムアウト時間が経過したときのみ、コマンドを再送させる再送制御ステップと、タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェックステップと、タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理ステップとを含み、タイムアウト時間内に受信された受信データにエラーがある場合、再送制御ステップでは、コマンドを再送させず、タイムアウト時間チェックステップでは、タイムアウト時間が経過したか否かのチェックを続行することを特徴とする。
【0053】
本発明においては、コマンドが送信され、コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かがチェックされる。そして、タイムアウト時間が経過したときのみ、コマンドが再送される。また、タイムアウト時間内に受信された受信データにエラーがあるか否かがチェックされ、タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理が行われる。一方、タイムアウト時間内に受信された受信データにエラーがある場合、コマンドは再送されず、タイムアウト時間が経過したか否かのチェックが続行される。
【発明の効果】
【0054】
本発明によれば、例えば、混信が生じている環境下において、非接触での通信を、容易に行うことができる。具体的には、例えば、例えば、ICカードと非接触で通信を行うリーダライタが、他のリーダライタとの間で混信を生じる環境下にあっても、ICカードとの通信を、容易に行うことができる。
【発明を実施するための最良の形態】
【0055】
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【0056】
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
【0057】
請求項1に記載の通信装置は、
非接触で通信を行う通信装置(例えば、図4のリーダライタ1)において、
コマンドを送信させる送信制御手段(例えば、図6のステップS102の処理を行う図4のマイコン11)と、
前記コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェック手段(例えば、図6のステップS104の処理を行う図4のマイコン11)と、
前記タイムアウト時間が経過したときのみ、前記コマンドを再送させる再送制御手段(例えば、図6のステップS110の処理を行う図4のマイコン11)と、
前記タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェック手段(例えば、図6のステップS106,S107、またはS108の処理を行う図4のマイコン11)と、
前記タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、前記コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理手段(例えば、図6のステップS109の処理を行う図4のマイコン11)と
を備え、
前記タイムアウト時間内に受信された受信データにエラーがある場合、
前記再送制御手段は、前記コマンドを再送させず、
前記タイムアウト時間チェック手段は、前記タイムアウト時間が経過したか否かのチェックを続行する
ことを特徴とする。
【0058】
請求項3に記載の通信方法は、
非接触で通信を行う通信装置(例えば、図4のリーダライタ1)の通信方法において、
コマンドを送信させる送信制御ステップ(例えば、図6のステップS102)と、
前記コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェックステップ(例えば、図6のステップS104)と、
前記タイムアウト時間が経過したときのみ、前記コマンドを再送させる再送制御ステップ(例えば、図6のステップS110)と、
前記タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェックステップ(例えば、図6のステップS106,S107、またはS108)と、
前記タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、前記コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理ステップ(例えば、図6のステップS109)と
を含み、
前記タイムアウト時間内に受信された受信データにエラーがある場合、
前記再送制御ステップでは、前記コマンドを再送させず、
前記タイムアウト時間チェックステップでは、前記タイムアウト時間が経過したか否かのチェックを続行する
ことを特徴とする。
【0059】
請求項4に記載のプログラムは、
非接触で通信を行う通信装置(例えば、図4のリーダライタ1)を制御するコンピュータ(例えば、図4のマイコン11(CPU11A))に実行させるプログラムにおいて、
コマンドを送信させる送信制御ステップ(例えば、図6のステップS102)と、
前記コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェックステップ(例えば、図6のステップS104)と、
前記タイムアウト時間が経過したときのみ、前記コマンドを再送させる再送制御ステップ(例えば、図6のステップS110)と、
前記タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェックステップ(例えば、図6のステップS106,S107、またはS108)と、
前記タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、前記コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理ステップ(例えば、図6のステップS109)と
を含み、
前記タイムアウト時間内に受信された受信データにエラーがある場合、
前記再送制御ステップでは、前記コマンドを再送させず、
前記タイムアウト時間チェックステップでは、前記タイムアウト時間が経過したか否かのチェックを続行する
ことを特徴とする。
【0060】
以下、図面を参照して、本発明の実施の形態について説明する。
【0061】
図4は、本発明を適用したICカードシステムの一実施の形態の構成例を示している。
【0062】
図1のICカードシステムにおいては、リーダライタ1が、ホストコンピュータ2の制御にしたがって動作し、ICカード3との間で、非接触での通信を行う。
【0063】
リーダライタ1は、マイコン11、I/F(Interface)12、送信回路13、変調回路14、アンテナ15、復調回路16、外部回路17、およびタイマ18などで構成されている。
【0064】
マイコン11は、CPU(Central Processing Unit)11A,RAM(Random Access Memory)11B、およびEEPROM(Electrically Erasable Programmable Read Only Memory)11Cなどで構成され、プログラムを実行することにより、リーダライタ1の各部の制御、その他の各種の処理を行う。
【0065】
即ち、CPU11Aは、EEPROM11Cに記憶されたプログラムを(必要に応じてRAM11Bにロードして)実行する。これにより、CPU11Aは、例えば、ICカード3に送信するパケット(コマンドパケット)の生成や、パケットを電磁波により送信させる送信制御、後述するタイムアウト時間が経過したか否かのチェック、パケットを電磁波により再送させる再送制御を行う。さらに、CPU11Aは、アンテナ15で受信され、復調回路16から供給されるパケット(受信データ)にエラーがあるか否かのチェックや、エラーがないパケット、つまり、ICカード3からの正常なレスポンスパケットに応じた処理なども行う。
【0066】
なお、CPU11Aは、ICカード3に送信するパケットを生成し、電磁波により送信させるため、そのパケットを、変調回路14に供給するが、その際、変調回路14に供給するパケットを、マンチェスタ符号等にエンコードするエンコード処理も行う。さらに、CPU11Aは、アンテナ15で受信され、復調回路16から供給されるパケットを受信するが、そのパケットはマンチェスタ符号等にエンコードされているので、そのマンチェスタ符号等をデコードするデコード処理も行う。
【0067】
RAM11Bは、CPU11Aが実行するプログラムや、CPU11Aの動作上必要なデータ等を一時記憶する。EEPROM11Cには、CPU11Aが実行するプログラムがインストールされる。その他、EEPROM11Cには、必要なデータが記憶される。
【0068】
I/F12は、ホストコンピュータ2とマイコン11との間のインタフェースであり、ホストコンピュータ2は、I/F12を介して、マイコン11を制御する。また、マイコン11は、ホストコンピュータ2に供給すべきデータを、I/F12を介して、ホストコンピュータ2に転送する。
【0069】
なお、マイコン11(CPU11A)が実行するプログラムは、あらかじめ、EEPROM11Cにインストールしておくことができる他、ホストコンピュータ2からI/F12を介して、EEPROM11Cにインストールすることができる。その他、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブルな記録媒体に記録し、その記録媒体を、図示せぬドライブで駆動して、EEPROM11にインストールすることができる。
【0070】
また、プログラムは、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、リーダライタ1に無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、リーダライタ1に有線で転送し、リーダライタ1では、そのようにして転送されてくるプログラムを、I/F12で受信し、EEPROM11Cにインストールすることができる。
【0071】
送信回路13は、アンテナ15から、所定の単一の周波数のキャリアを発生し、変調回路14に供給する。
【0072】
変調回路14は、送信回路13からのキャリアを、マイコン11から供給されるパケット(コマンドパケット)にしたがって変調(例えば、振幅変調(ASK(Amplitude Shift Keying)))し、その結果得られる変調信号を、アンテナ15に供給する。これにより、アンテナ15からは、マイコン11が変調回路14に供給したパケットにしたがってキャリアを変調した変調信号に対応する電磁波が放射される。
【0073】
なお、リーダライタ1は、パケット(コマンドパケット)を送信した後、そのパケットに対するレスポンスパケットの受信を待機する受信待機状態となるが、受信待機状態においては、変調回路14は、送信回路13からのキャリアを変調せずに、そのままアンテナ15に供給する。従って、受信待機状態においては、アンテナ15からは、キャリアに対応する電磁波が放射される。
【0074】
即ち、ICカード3は、例えば、リーダライタ1からICカード3を見たインピーダンスを変化させることにより、リーダライタ1が放射する電磁波(キャリア)を変調する、いわゆる負荷変調を行うことにより、パケット(レスポンスパケット)を、その電磁波を出力しているリーダライタ1に送信するようになっており、このため、リーダライタ1は、ICカード3からのレスポンスパケットの受信を待機する受信待機状態では、キャリアに対応する電磁波を放射する。
【0075】
アンテナ15は、閉ループのコイルを構成しており、このコイルに流れる電流(信号)が変化することで、電磁波を放射する。また、ICカード3がリーダライタ1にかざされ、アンテナ15とICカード3とが近接した状態になり、ICカード3が、リーダライタ1から見たインピーダンスを変化させると、アンテナ15に流れる電流(信号)が変化する。
【0076】
復調回路16は、アンテナ15に流れる電流(信号)を受信して復調し、その結果得られるパケット(のマンチェスタ符号等)を、マイコン11に供給する。
【0077】
外部回路17は、例えば、耐タンパ性のあるセキュアなICチップで、マイコン11の制御にしたがい、ICカード3に送信するデータの暗号化や、復調回路16から供給される、ICカード3からのパケットに配置されたデータの暗号の復号等を行う。
【0078】
タイマ(回路)18は、マイコン11の制御にしたがい、タイムアウト時間を計時する。
【0079】
なお、ここでは、ICカード3において、リーダライタ1が出力する電磁波(キャリア)を変調する負荷変調を行うことにより、パケットを送信するようにしたが、ICカード3では、自身がキャリアを出力し、そのキャリアを変調することにより、パケットを送信するようにすることもできる。この場合、リーダライタ1は、受信待機状態において、キャリアの出力を停止する。
【0080】
また、ICカード3は、リーダライタ1が放射する電磁波から電源を得るICカードであってもよいし、バッテリを内蔵しているICカードであてもよい。
【0081】
次に、図5は、図4のリーダライタ1やICカード3が送信するパケット(コマンドパケットとレスポンスパケット)のフォーマットを示している。
【0082】
パケットは、その先頭から、ヘッダ、パケット長、コマンドコード/レスポンスコード、シーケンスID、実データ、パケットチェックコードが順次配置されて構成される。
【0083】
ヘッダは、所定の情報(ヘッダ情報)で構成される。パケット長は、パケット全体の長さ(データ長)を表す。
【0084】
コマンドコード/レスポンスコードは、前述したように、パケットの種別、即ち、例えば、パケットが、コマンドパケットまたはレスポンスパケットのうちのいずれであるのか等を表す。
【0085】
シーケンスIDは、前述したように、いわゆるなりすましを防止するために用いられ、リーダライタ1やICカード3において、例えば、1ずつインクリメントされる値である。即ち、リーダライタ1は、パケットを送信するとき、そのパケットのシーケンスIDを、前回送信したパケットのシーケンスIDとは異なる値にセットする。そして、ICカード3は、リーダライタ1からのパケットを受信し、そのパケットに対するレスポンスパケットを送信するとき、レスポンスパケットのシーケンスIDを、リーダライタ1からのパケットのシーケンスIDに1を加算した値にセットする。リーダライタ1は、ICカード3からのレスポンスパケットを受信し、さらに、ICカード3にパケットを送信するとき、そのパケットのシーケンスIDを、ICカード3からのレスポンスパケットのシーケンスIDに1を加算した値にセットする。以下、同様に、リーダライタ1とICカード3は、通信を終了するまで、直前に受信したパケットのシーケンスIDを1だけインクリメントした値を、これから送信しようとするパケットのシーケンスIDとする。
【0086】
従って、リーダライタ1とICカード3では、いま受信したパケットのシーケンスIDが、直前に送信したパケットのシーケンスIDに1を加算した値になっているか否かをチェックすることにより、そのような値になっていない場合には、いま受信したパケットが、不正なパケットであることを認識することができる。
【0087】
実データは、リーダライタ1またはICカード3のうちの一方が他方に送信する本来のデータである。ここで、実データには、コマンドが、適宜含まれる。即ち、例えば、リーダライタ1がICカード3に対してデータの読み出しを要求する場合、リーダライタ1は、データの読み出しを要求する読み出しコマンドを含むコマンドパケットを送信するが、その読み出しコマンドは、実データとして、コマンドパケットに配置される。また、例えば、リーダライタ1がICカード3に対してデータの書き込みを要求する場合、リーダライタ1は、データの書き込みを要求する書き込みコマンドを含むコマンドパケットを送信するが、その書き込みコマンドと、書き込み対象のデータとは、実データとして、コマンドパケットに配置される。
【0088】
パケットチェックコードは、パケットの整合性をチェックするためのエラーチェック(誤り検出)用のコードである。
【0089】
次に、図6のフローチャートを参照して、図4のリーダライタ1の動作について説明する。
【0090】
マイコン11(のCPU11A)は、ステップS101において、図5に示したフォーマットのコマンドパケットを生成して、ステップS102に進み、そのコマンドパケットを電磁波により送信させる送信制御を行う。即ち、マイコン11は、コマンドパケットを、変調回路14に供給するとともに、そのコマンドパケットを送信するように、変調回路14を制御する。
【0091】
変調回路14は、マイコン11からの制御にしたがい、送信回路13から供給されるキャリアを、マイコン11から供給されるコマンドパケットにしたがって変調し、その結果得られる変調信号を、アンテナ15に供給する。これにより、アンテナ15からは、マイコン11が変調回路14に供給したパケットにしたがってキャリアを変調した変調信号に対応する電磁波が放射され、コマンドパケットが、ICカード3に送信される。
【0092】
その後、ステップS102からS103に進み、マイコン11は、直前のステップS102で送信されたコマンドパケットに対するレスポンスパケットを待つ時間であるタイムアウト時間を求め、その計時を開始するように、タイマ18を制御する。これにより、タイマ18は、タイムアウト時間の計時を開始し、リーダライタ1は受信待機状態となる。
【0093】
ここで、マイコン11は、ICカードシステムの用途(例えば、自動改札機など)や、コマンドパケットに含ませるコマンドに応じて、例えば、数ミリ秒から数十ミリ秒程度のタイムアウト時間を求める。但し、タイムアウト時間は、一定の時間とすることも可能である。
【0094】
ステップS103において、タイマ18がタイムアウト時間の計時を開始すると、ステップS104に進み、マイコン11は、タイマ18が計時する時刻を参照し、タイマ18がタイムアウト時間の計時を開始してから、そのタイムアウト時間が経過したか否かをチェック(判定)する。
【0095】
ステップS104において、タイムアウト時間が経過していないと判定された場合、ステップS105に進み、マイコン11は、外部からのパケットを受信したか否かを判定する。ステップS105において、パケットを受信していないと判定された場合、ステップS104に戻り、以下、同様の処理が繰り返される。
【0096】
また、ステップS105において、パケットを受信したと判定された場合、即ち、外部から送信されてきたパケットが、アンテナ15で受信され、復調回路16で復調されて、マイコン11に供給された場合、ステップS106に進み、以下、ステップS106乃至S108において、そのパケット、即ち、復調回路16からマイコン11に供給されたパケット(以下、適宜、受信パケットという)にエラーがあるか否かをチェック(判定)するエラーチェックが行われる。
【0097】
具体的には、まず、ステップS106において、マイコン11は、受信パケットのパケット長(図5)を参照し、そのパケット長に基づき、受信パケットにエラーがあるか否かを判定する。
【0098】
即ち、リーダライタ1が、直前のステップS102で送信したコマンドパケットに対するレスポンスパケットには、そのレスポンスパケットとして期待されるパケット長がある。
【0099】
具体的には、例えば、データの読み出しを要求する読み出しコマンドが配置されたコマンドパケットに対するレスポンスパケットには、その読み出しコマンドに応じて読み出されたデータが配置されるから、そのパケット長は、ある程度長くなる。一方、例えば、データの書き込みを要求する書き込みコマンドが配置されたコマンドパケットに対するレスポンスパケットには、読み出しコマンドにおける場合のようなデータは配置されないから、そのパケット長は短くなる。
【0100】
従って、読み出しコマンドが配置されたコマンドパケットに対するレスポンスパケットのパケット長は、ある程度長いことが期待され、書き込みコマンドが配置されたコマンドパケットに対するレスポンスパケットのパケット長は短いことが期待される。
【0101】
ステップS106では、受信パケットのパケット長が、直前のステップS102で送信されたコマンドパケットに対するレスポンスパケットに期待されるパケット長であるか否かによって、受信パケットにエラーがあるか否かを判定する。
【0102】
ステップS106において、受信パケットのパケット長に基づき、その受信パケットにエラーがあると判定された場合、即ち、受信パケットのパケット長が、直前のステップS102で送信されたコマンドパケットに対するレスポンスパケットに期待されるパケット長でない場合、マイコン11は、受信パケットを廃棄してステップS104に戻り、タイムアウト時間が経過したか否かのチェックを続行する。
【0103】
即ち、タイムアウト時間内に受信された受信パケットにエラーがある場合、マイコン11は、後述する再送処理を行わず、従って、コマンドパケットを再送させずに、タイムアウト時間が経過したか否かのチェックを続行する。
【0104】
また、ステップS106において、受信パケットに、そのパケット長に基づくエラーがないと判定された場合、即ち、受信パケットのパケット長が、直前のステップS102で送信されたコマンドパケットに対するレスポンスパケットに期待されるパケット長である場合、ステップS107に進み、マイコン11は、受信パケットのパケットチェックコード(図5)を参照し、そのパケットチェックコードに基づき、受信パケットにエラーがあるか否かを判定する。
【0105】
ステップS107において、受信パケットのパケットチェックコードに基づき、その受信パケットにエラーがあると判定された場合、マイコン11は、受信パケットを廃棄してステップS104に戻り、タイムアウト時間が経過したか否かのチェックを続行する。
【0106】
即ち、タイムアウト時間内に受信された受信パケットにエラーがある場合、マイコン11は、上述したように、コマンドパケットを再送させずに、タイムアウト時間が経過したか否かのチェックを続行する。
【0107】
また、ステップS107において、受信パケットに、そのパケットチェックコードに基づくエラーがないと判定された場合、ステップS108に進み、マイコン11は、受信パケットのコマンドコード/レスポンスコード(図5)を参照し、そのコマンドコード/レスポンスコードに基づき、受信パケットにエラーがあるか否かを判定する。
【0108】
ステップS108において、受信パケットのコマンドコード/レスポンスコードに基づき、その受信パケットにエラーがあると判定された場合、即ち、受信パケットのコマンドコード/レスポンスコードが、直前のステップS102で送信されたコマンドパケットに対するレスポンスパケットに期待されるレスポンスコードに一致しない場合、マイコン11は、受信パケットを廃棄してステップS104に戻り、タイムアウト時間が経過したか否かのチェックを続行する。
【0109】
即ち、タイムアウト時間内に受信された受信パケットにエラーがある場合、マイコン11は、上述したように、コマンドパケットを再送させずに、タイムアウト時間が経過したか否かのチェックを続行する。
【0110】
また、ステップS108において、受信パケットに、そのコマンドコード/レスポンスコードに基づくエラーがないと判定された場合、即ち、受信パケットのコマンドコード/レスポンスコードが、直前のステップS102で送信されたコマンドパケットに対するレスポンスパケットに期待されるレスポンスコードに一致する場合、ステップS109に進み、マイコン11は、受信パケットを、直前のステップS102で送信されたコマンドパケットに対する正常なレスポンスパケットとして、そのレスポンスパケットに応じた処理を行い、処理を終了する。
【0111】
即ち、例えば、ICカード3が、定期券としての機能を有し、直前のステップS102で送信されたコマンドパケットが、定期券の期限と乗車(可能)区間のデータの読み出しを要求する読み出しコマンドが配置されたものであり、そのコマンドパケットに対するレスポンスパケットとして、定期券の期限と乗車区間のデータが配置された正常なレスポンスパケットが得られた場合には、マイコン11は、そのレスポンスパケットに応じた処理として、定期券の期限と乗車区間が適正であるか否かのチェック等を行う。
【0112】
一方、ステップS104において、タイムアウト時間が経過したと判定された場合、即ち、マイコン11において、タイムアウト時間内に、エラーのない(正常な)レスポンスパケットを受信することができなかった場合、ステップS110に進み、マイコン11は、直前のステップS102で送信させたコマンドパケットを再送させる再送処理を行い、処理を終了する。
【0113】
即ち、ステップS110では、図6のフローチャートに示したステップS101乃至S110の処理が再帰的に行われ、これにより、コマンドパケットが再送される。
【0114】
以上のように、リーダライタ1では、タイムアウト時間内に受信された受信パケットにエラーがある場合には、コマンドパケットの再送をせずに、タイムアウト時間が経過したか否かのチェックを続行し、即ち、タイムアウト時間が経過する前は、受信パケットにエラーがあっても、コマンドパケットの再送を行わずに、受信待機状態となって、パケットが送信されてくるのを待ち、タイムアウト時間内に受信された受信パケットにエラーがない場合には、その受信パケットを、コマンドパケットに対する正常なレスポンスパケットとして、そのレスポンスパケットに応じた処理を行う。さらに、リーダライタ1は、タイムアウト時間が経過したときのみ、コマンドパケットの再送を行う。従って、リーダライタ1に近接して他のリーダライタが設置されている場合であっても、後述する図7や図8で説明するように、リーダライタ1は、他のリーダライタに起因する混信の影響を抑えて、リーダライタにかざされたICカード3と通信を行うことができる。
【0115】
また、リーダライタ1は、受信パケットにエラーがあっても、即座に、コマンドパケットを再送せずに、タイムアウト時間が経過したときのみ、コマンドパケットを再送するので、コマンドパケットの送信(再送)の頻度が低下し、その結果、リーダライタ1に近接して設置された他のリーダライタにICカード3がかざされた場合に、リーダライタ1がコマンドパケットの再送を頻繁に行うことによる、他のリーダライタとICカード3との通信の妨害の程度を低減することができる。
【0116】
次に、図7および図8を参照して、リーダライタ1に近接して他のリーダライタが設置されている場合において、リーダライタ1にICカード3がかざされたときの、リーダライタ1、ICカード3、他のリーダライタの動作について説明する。
【0117】
なお、他のリーダライタは、図4に示したリーダライタ1と同様に構成されているものとする。
【0118】
まず、図7を参照して、リーダライタ1が、そこにかざされたICカード3からのレスポンスパケットを、タイムアウト時間内に受信することができる場合の、リーダライタ1、ICカード3、他のリーダライタの動作について説明する。
【0119】
図7では、リーダライタ1は、ステップS121において、コマンドコードが0x10のコマンドパケットP1を送信して、ステップS122に進み、タイムアウト時間の計時を開始して、受信待機状態となる。
【0120】
ここで、コマンドコードが0x10のコマンドパケットに対するレスポンスパケットのレスポンスコードが、例えば、0x11であるとすると、リーダライタ1は、ステップS122において、レスポンスコードが0x11のレスポンスパケットの受信を待機する受信待機状態となる。
【0121】
ICカード3は、ステップS131において、リーダライタ1が送信した、コマンドコードが0x10のコマンドパケットP1を受信し、そのコマンドパケットP1に応じた処理を開始する。
【0122】
一方、他のリーダライタは、ICカードがかざされた(ICカードが近接する位置にある)ことを検出するためのポーリングを行っており、具体的には、例えば、コマンドコードが0x80のコマンドパケットを周期的に送信している。
【0123】
図7では、他のリーダライタは、ステップS141において、コマンドコードが0x80のコマンドパケットP1'を送信し、以下、周期的に、コマンドコードが0x80のコマンドパケットを送信する。
【0124】
リーダライタ1は、ステップS122において受信待機状態となった後のステップS123において、他のリーダライタからのパケットP1'を受信する。
【0125】
他のリーダライタからのパケットP1'は、コマンドコードが0x80のコマンドパケットであり、リーダライタ1が受信を待機(期待)している、コマンドパケットP1に対するレスポンスパケット、つまり、レスポンスコードが0x11のパケットではないので、リーダライタ1は、ステップS123で受信したパケットP1'にエラーがあるとして、そのパケットP1'を廃棄する。さらに、リーダライタ1は、まだ、タイムアウト時間が経過していないため、タイムアウト時間の計時(および受信待機状態)を続行する。
【0126】
その後、他のリーダライタは、ステップS142において、コマンドコードが0x80のパケットであるコマンドパケットP2'を送信し、ステップS124において、リーダライタ1は、他のリーダライタからのパケットP2'を受信する。
【0127】
他のリーダライタからのパケットP2'も、リーダライタ1が前回(ステップS123において)受信したパケットP1'と同様に、コマンドコードが0x80のコマンドパケットであり、リーダライタ1が受信を待機(期待)している、レスポンスコードが0x11のパケットではないので、リーダライタ1は、ステップS124で受信したパケットP2'も、エラーがあるとして廃棄する。さらに、リーダライタ1は、まだ、タイムアウト時間が経過していないため、タイムアウト時間の計時(および受信待機状態)を続行する。
【0128】
一方、ICカード3は、リーダライタ1からのコマンドパケットP1に応じた処理を終了すると、ステップS132において、そのコマンドパケットP1に対するレスポンスパケットとして、レスポンスコードが0x11のパケットP2を送信する。
【0129】
このとき、リーダライタ1は、タイムアウト時間の計時をしており、受信待機状態にあるので、ステップS125において、ICカード3からのパケットP2を受信する。
【0130】
ICカードからのパケットP2は、レスポンスコードが0x11のレスポンスパケットであり、リーダライタ1が受信を待機(期待)しているパケットであるから、リーダライタ1は、ステップS125で受信したパケットP2が、エラーがない正常なレスポンスパケットであるとして、タイムアウト時間の計時を終了し、そのレスポンスパケットP2に応じた処理を行う。
【0131】
以上のように、リーダライタ1は、タイムアウト時間内では、受信パケットにエラーがあっても、コマンドパケットの再送をせずに、パケットの受信を待機し、エラーのない受信パケットを受信した場合には、タイムアウト時間内に受信した他の受信パケットにエラーがあっても、エラーのない受信パケットを、コマンドパケットに対する正常なレスポンスパケットとして、そのレスポンスに応じた処理を行う。
【0132】
従って、図2で説明した、受信パケットにエラーがあると、即座に、コマンドパケットを再送する場合のように、その再送によって、リーダライタ1によるICカード3からのレスポンスパケットの受信が妨げられる頻度を低減することができる。
【0133】
次に、図8を参照して、リーダライタ1が、そこにかざされたICカード3からのレスポンスパケットを、タイムアウト時間内に受信することができない場合の、リーダライタ1、ICカード3、他のリーダライタの動作について説明する。
【0134】
図8では、リーダライタ1は、ステップS151において、コマンドコードが0x10のコマンドパケットP1を送信して、ステップS152に進み、タイムアウト時間の計時を開始して、受信待機状態となる。
【0135】
即ち、リーダライタ1は、図7のステップS152における場合と同様に、コマンドコードが0x10のコマンドパケットに対するレスポンスパケットである、レスポンスコードが0x11のレスポンスパケットの受信を待機する受信待機状態となる。
【0136】
ICカード3は、ステップS161において、リーダライタ1が送信した、コマンドコードが0x10のコマンドパケットP1を受信し、そのコマンドパケットP1に応じた処理を開始する。
【0137】
一方、他のリーダライタは、図7における場合と同様に、コマンドコードが0x80のコマンドパケットを周期的に送信している。
【0138】
図8では、他のリーダライタは、ステップS171において、コマンドコードが0x80のコマンドパケットP1'を送信し、以下、周期的に、コマンドコードが0x80のコマンドパケットを送信する。
【0139】
リーダライタ1は、ステップS152において受信待機状態となった後のステップS153において、他のリーダライタからのパケットP1'を受信する。
【0140】
他のリーダライタからのパケットP1'は、コマンドコードが0x80のコマンドパケットであり、リーダライタ1が受信を待機(期待)している、レスポンスコードが0x11のパケットではないので、リーダライタ1は、ステップS153で受信したパケットP1'にエラーがあるとして、そのパケットP1'を廃棄する。さらに、リーダライタ1は、まだ、タイムアウト時間が経過していないため、タイムアウト時間の計時(および受信待機状態)を続行する。
【0141】
その後、他のリーダライタは、ステップS172において、コマンドコードが0x80のパケットであるコマンドパケットP2'を送信し、ステップS154において、リーダライタ1は、他のリーダライタからのパケットP2'を受信する。
【0142】
他のリーダライタからのパケットP2'も、リーダライタ1が前回(ステップS153において)受信したパケットP1'と同様に、リーダライタ1が受信を待機(期待)している、レスポンスコードが0x11のパケットではないので、リーダライタ1は、ステップS154で受信したパケットP2'も、エラーがあるとして廃棄する。さらに、リーダライタ1は、まだ、タイムアウト時間が経過していないため、タイムアウト時間の計時(および受信待機状態)を続行する。
【0143】
一方、ICカード3は、リーダライタ1からのコマンドパケットP1に応じた処理を終了し、ステップS162において、そのコマンドパケットP1に対するレスポンスパケットとして、レスポンスコードが0x11のパケットP2を送信するが、そのパケットP2の送信が、リーダライタ1において、他のリーダライタからのパケットP2'をステップS154で受信しているときに行われ、その結果、リーダライタ1が、ICカード3からのパケットP2を受信することができなかったとする。
【0144】
この場合、ICカード3は、ステップS162において、コマンドパケットP1に対するレスポンスパケットP2を送信したから、そのレスポンスパケットP2を再送することはない。
【0145】
一方、リーダライタ1は、コマンドパケットP1に対するレスポンスパケットの受信を待機しているが、ICカード3は、既に(ステップS162において)、コマンドパケットP1に対するレスポンスパケットP2を送信し、その再送も行わないから、リーダライタ1が、コマンドパケットP1に対するレスポンスパケットを受信することができないまま、タイムアウト時間が経過する。
【0146】
タイムアウト時間が経過すると、リーダライタ1は、ステップS155において、コマンドパケットを再送する。即ち、リーダライタ1は、コマンドコードが0x10のパケットとして、コマンドパケットP3を送信する。
【0147】
ICカード3は、ステップS163において、リーダライタ1からのコマンドパケットP3を受信し、その後、そのコマンドパケットP3に応じた処理を行って、コマンドパケットP3に対するレスポンスパケットを送信する。
【0148】
以上のように、リーダライタ1は、タイムアウト時間が経過したときのみ、コマンドパケットの再送するので、コマンドパケットの再送が頻繁に行われることを防止するのと同時に、何からの原因によって、ICカード3からのレスポンスパケットを受信し損ねても、タイムアウト時間の経過後に行われるコマンドパケットの再送によって、ICカード3からのレスポンスパケットを受信することが可能となる。
【0149】
なお、図6のフローチャートにおいては、受信パケットのパケット長(データ長)、パケットチェックコード(エラーチェック用のコード)、コマンドコード/レスポンスコード(受信パケットの種別を表すコード)に基づき、受信パケットにエラーがあるか否かをチェックするようにしたが、その他、受信パケットにエラーがあるか否かのチェックは、受信パケットのシーケンスID(図5)に基づいて行うことができる。
【0150】
また、図6のフローチャートにおいては、受信パケットにエラーがあるか否かのチェックを、その受信パケットのパケット長、パケットチェックコード、コマンド/レスポンスコードの順に参照して行うようにしたが、パケット長、パケットチェックコード、コマンド/レスポンスコードを、その他の順番で参照して、受信パケットにエラーがあるか否かのチェックを行うことも可能である。
【0151】
さらに、図6のフローチャートに示した処理は、マイコン11にプログラムを実行させることによって行う他、専用のハードウェアによって行うことも可能である。
【0152】
以上のように、リーダライタ1においては、タイムアウト時間が経過する前は、受信パケットにエラーがあっても、コマンドパケットの再送を行わずに、受信待機状態となって、パケットが送信されてくるのを待ち、タイムアウト時間内に受信された受信パケットにエラーがない場合には、その受信パケットを、コマンドパケットに対する正常なレスポンスパケットとして、そのレスポンスパケットに応じた処理を行い、タイムアウト時間が経過したときのみ、コマンドパケットの再送を行うので、図2や図3で説明したように、受信パケットにエラーがあると、即座に、コマンドパケットを再送する場合に比較して、コマンドパケットが再送される頻度が低減し、その結果、リーダライタ1が、他のリーダライタに近接して設置され、混信が生じる環境下においても、ICカード3がかざされたリーダライタ1は、混信の影響を抑えて、ICカード3と通信を行うことができる。
【0153】
また、受信パケットにエラーがあると、即座に、コマンドパケットを再送する処理(図1乃至図3で説明したリーダライタAが行う処理)から、タイムアウト時間が経過する前は、受信パケットにエラーがあっても、コマンドパケットの再送を行わずに、受信待機状態となって、パケットが送信されてくるのを待ち、タイムアウト時間内に受信された受信パケットにエラーがない場合には、その受信パケットを、コマンドパケットに対する正常なレスポンスパケットとして、そのレスポンスパケットに応じた処理を行い、タイムアウト時間が経過したときのみ、コマンドパケットの再送を行う処理(リーダライタ1が行う処理)への変更は、マイコン11が実行するプログラムの一部を変更することで、新たなハードウェアの追加等をすることなく、容易に行うことができる。
【0154】
従って、リーダライタ1は、他のリーダライタとの間で混信を生じる環境下にあっても、即ち、例えば、他のリーダライタに近接して設置されても、ICカード3との通信を、容易に行うことができる。
【0155】
その結果、リーダライタ1は、他のリーダライタとの間の混信を(ほとんど)考慮することなく設置することができ、このように、設置にあたっての設置条件が、従来に比較して緩いことから、リーダライタ1の設置に要する様々なコストを低減することができる。さらに、リーダライタ1を様々な環境に設置し、そのようなリーダライタ1で構成されるICカードシステムを様々な用途で利用することが可能となる。
【0156】
また、リーダライタ1は、上述のように、新たなハードウェアの追加をせずに構成することが可能であり、リーダライタ1の製造コストの上昇を抑えることができる。
【0157】
さらに、コマンドパケットが再送される頻度が低いので、リーダライタ1によるコマンドパケットの再送によって、リーダライタ1に近接して設定された他のリーダライタとICカード3との通信が妨げられることや、リーダライタ1に近接して設定された他のリーダライタによるコマンドパケットの再送によって、リーダライタ1とICカード3との通信が妨げられことが少なくなり、その結果、ICカード3との間の通信の通信性能(ICカードCの応答性)が向上し、その結果、実質的な通信速度を向上させることが可能となる。
【0158】
また、コマンドパケットが再送される頻度が低いので、リーダライタ1における消費電力を低減することができる。
【0159】
以上、本発明を、ICカードシステムに適用した場合について説明したが、本発明は、その他、例えば、無線タグシステムなどの、非接触での通信(無線通信)を行う装置に適用可能である。
【0160】
なお、本明細書において、コンピュータ(マイコン11のCPU11A)に各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。
【0161】
また、プログラムは、1のコンピュータにより処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。
【図面の簡単な説明】
【0162】
【図1】複数のリーダライタどうしが混信を起こしている状態を示す図である。
【図2】リーダライタAおよびB、並びにICカードCの動作を説明するフローチャート(アローチャート)である。
【図3】リーダライタAおよびB、並びにICカードCの動作を説明するフローチャートである。
【図4】本発明を適用したICカードシステムの一実施の形態の構成例を示すブロック図である。
【図5】リーダライタ1とICカード3が送信するパケットのフォーマットを示す図である。
【図6】リーダライタ1の動作を説明するフローチャートである。
【図7】リーダライタ1、ICカード3、および他のリーダライタの動作を説明するフローチャート(アローチャート)である。
【図8】リーダライタ1、ICカード3、および他のリーダライタの動作を説明するフローチャートである。
【符号の説明】
【0163】
1 リーダライタ, 2 ホストコンピュータ, 3 ICカード, 11 マイコン, 11A CPU, 11B RAM. 11C EEPROM, 12 I/F, 13 送信回路, 14 変調回路, 15 アンテナ, 16 復調回路, 17 外部回路, 18 タイマ
【特許請求の範囲】
【請求項1】
非接触で通信を行う通信装置において、
コマンドを送信させる送信制御手段と、
前記コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェック手段と、
前記タイムアウト時間が経過したときのみ、前記コマンドを再送させる再送制御手段と、
前記タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェック手段と、
前記タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、前記コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理手段と
を備え、
前記タイムアウト時間内に受信された受信データにエラーがある場合、
前記再送制御手段は、前記コマンドを再送させず、
前記タイムアウト時間チェック手段は、前記タイムアウト時間が経過したか否かのチェックを続行する
ことを特徴とする通信装置。
【請求項2】
前記受信データは、その受信データのデータ長、エラーチェック用のコード、または前記受信データの種別を表すコードを含み、
前記エラーチェック手段は、前記データ長、エラーチェック用のコード、または種別を表すコードに基づき、前記受信データにエラーがあるか否かをチェックする
ことを特徴とする請求項1に記載の通信装置。
【請求項3】
非接触で通信を行う通信装置の通信方法において、
コマンドを送信させる送信制御ステップと、
前記コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェックステップと、
前記タイムアウト時間が経過したときのみ、前記コマンドを再送させる再送制御ステップと、
前記タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェックステップと、
前記タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、前記コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理ステップと
を含み、
前記タイムアウト時間内に受信された受信データにエラーがある場合、
前記再送制御ステップでは、前記コマンドを再送させず、
前記タイムアウト時間チェックステップでは、前記タイムアウト時間が経過したか否かのチェックを続行する
ことを特徴とする通信方法。
【請求項4】
非接触で通信を行う通信装置を制御するコンピュータに実行させるプログラムにおいて、
コマンドを送信させる送信制御ステップと、
前記コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェックステップと、
前記タイムアウト時間が経過したときのみ、前記コマンドを再送させる再送制御ステップと、
前記タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェックステップと、
前記タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、前記コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理ステップと
を含み、
前記タイムアウト時間内に受信された受信データにエラーがある場合、
前記再送制御ステップでは、前記コマンドを再送させず、
前記タイムアウト時間チェックステップでは、前記タイムアウト時間が経過したか否かのチェックを続行する
処理をコンピュータに実行させることを特徴とするプログラム。
【請求項1】
非接触で通信を行う通信装置において、
コマンドを送信させる送信制御手段と、
前記コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェック手段と、
前記タイムアウト時間が経過したときのみ、前記コマンドを再送させる再送制御手段と、
前記タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェック手段と、
前記タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、前記コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理手段と
を備え、
前記タイムアウト時間内に受信された受信データにエラーがある場合、
前記再送制御手段は、前記コマンドを再送させず、
前記タイムアウト時間チェック手段は、前記タイムアウト時間が経過したか否かのチェックを続行する
ことを特徴とする通信装置。
【請求項2】
前記受信データは、その受信データのデータ長、エラーチェック用のコード、または前記受信データの種別を表すコードを含み、
前記エラーチェック手段は、前記データ長、エラーチェック用のコード、または種別を表すコードに基づき、前記受信データにエラーがあるか否かをチェックする
ことを特徴とする請求項1に記載の通信装置。
【請求項3】
非接触で通信を行う通信装置の通信方法において、
コマンドを送信させる送信制御ステップと、
前記コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェックステップと、
前記タイムアウト時間が経過したときのみ、前記コマンドを再送させる再送制御ステップと、
前記タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェックステップと、
前記タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、前記コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理ステップと
を含み、
前記タイムアウト時間内に受信された受信データにエラーがある場合、
前記再送制御ステップでは、前記コマンドを再送させず、
前記タイムアウト時間チェックステップでは、前記タイムアウト時間が経過したか否かのチェックを続行する
ことを特徴とする通信方法。
【請求項4】
非接触で通信を行う通信装置を制御するコンピュータに実行させるプログラムにおいて、
コマンドを送信させる送信制御ステップと、
前記コマンドに対するレスポンスを待つタイムアウト時間が経過したか否かをチェックするタイムアウト時間チェックステップと、
前記タイムアウト時間が経過したときのみ、前記コマンドを再送させる再送制御ステップと、
前記タイムアウト時間内に受信された受信データにエラーがあるか否かをチェックするエラーチェックステップと、
前記タイムアウト時間内に受信された受信データにエラーがない場合、その受信データを、前記コマンドに対する正常なレスポンスとして、そのレスポンスに応じた処理を行う処理ステップと
を含み、
前記タイムアウト時間内に受信された受信データにエラーがある場合、
前記再送制御ステップでは、前記コマンドを再送させず、
前記タイムアウト時間チェックステップでは、前記タイムアウト時間が経過したか否かのチェックを続行する
処理をコンピュータに実行させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【公開番号】特開2006−211518(P2006−211518A)
【公開日】平成18年8月10日(2006.8.10)
【国際特許分類】
【出願番号】特願2005−23433(P2005−23433)
【出願日】平成17年1月31日(2005.1.31)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成18年8月10日(2006.8.10)
【国際特許分類】
【出願日】平成17年1月31日(2005.1.31)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]