(57)【要約】【課題】コントローラがコマンドを再送信するまで待機すべき時間を正確に把握する。【解決手段】カードコマンド送信処理の後、リーダライタは、トータルウェイトタイムを算出し、acceptedパケットとしてコントローラ１１に送信する（ステップＳ１３）。具体的には、カードレスポンス最大応答待ち時間にカードコマンド送信処理時間を加算してカードウェイトタイムを算出する。さらに、次式に従いトータルウェイトタイムを算出する。  トータルウェイトタイム  ＝カードウェイトタイム×（リトライ回数＋１）＋カードアクセスレスポンス生成時間本発明は、非接触通信システムに適用することができる。【選択図】  図２
2011039810.tif 000002
【特許請求の範囲】
【請求項１】
コントローラからの制御に従って情報処理装置と通信を行う通信装置において、
前記コントローラから送信された前記通信装置に対する第１のコマンドに従い、前記情報処理装置に対する第２のコマンドを生成して前記情報処理装置に送信する第１の通信手段と、
前記第２のコマンドに応じて前記情報処理装置から送信された前記通信装置に対する第１のレスポンスに基づき、前記コントローラに対する第２のレスポンスを生成して前記コントローラに送信する第２の通信手段と、
送信した前記第１のコマンドに対応する前記第２のレスポンスを受信できない前記コントローラが前記第１のコマンドを再送信するまで待機すべき総待機時間を算出する算出手段と
を含み、
前記算出手段は、
前記第１の通信手段により、前記コントローラから送信された前記第１のコマンドに従って前記第２のコマンドが生成されて前記情報処理装置に送信されるまでに要する第１の時間と、
前記情報処理装置により、前記第２のコマンドに応じて前記第１のレスポンスが前記通信装置に送信されるまでに要する第２の時間と、
前記第２の通信手段により、前記第１のレスポンスに基づいて前記第２のレスポンスが生成されて前記コントローラに送信されるまでに要する第３の時間と
を用いて前記総待機時間を算出する
通信装置。
【請求項２】
前記第２の通信手段は、前記第２のコマンドに応じて前記情報処理装置から送信された前記通信装置に対する第１のレスポンスに基づき、前記コントローラに対する第２のレスポンスを生成して待機し、前記コントローラからの所定の前記第１のコマンドに応じて、前記第２のレスポンスを前記コントローラに送信する
請求項１に記載の通信装置。
【請求項３】
前記算出手段は、
前記第１の時間を測定するか、または理論式を用いて算出することにより前記第１の時間を取得し、
前記情報処理装置から取得する製造パラメータに基づいて、前記第２の時間を算出し、
前記第３の時間を測定するか、または理論式を用いて算出することにより前記第３の時間を取得する
請求項２に記載の通信装置。
【請求項４】
前記算出手段は、さらに、
前記第２のコマンドを送信した後に対応する前記第１のレスポンスを受信できない場合に前記第２のコマンドを再送信するリトライ処理の回数も用いて前記総待機時間を算出し、
前記リトライ処理の回数は、前記第１のコマンドに含まれる
請求項２に記載の通信装置。
【請求項５】
前記算出手段は、次式に基づいて前記総待機時間を算出する
総待機時間
＝（第１の時間＋第２の時間）×（リトライ処理の回数＋１）＋第３の時間
請求項４に記載の通信装置。
【請求項６】
コントローラから送信された通信装置に対する第１のコマンドに従い、情報処理装置に対する第２のコマンドを生成して前記情報処理装置に送信する第１の通信手段と、
前記第２のコマンドに応じて前記情報処理装置から送信された前記通信装置に対する第１のレスポンスに基づき、前記コントローラに対する第２のレスポンスを生成して前記コントローラに送信する第２の通信手段と、
送信した前記第１のコマンドに対応する前記第２のレスポンスを受信できない前記コントローラが前記第１のコマンドを再送信するまで待機すべき総待機時間を算出する算出手段と
を備える通信装置の通信方法において、
前記算出手段による、
前記第１の通信手段により、前記コントローラから送信された前記第１のコマンドに従って前記第２のコマンドが生成されて前記情報処理装置に送信されるまでに要する第１の時間と、
前記情報処理装置により、前記第２のコマンドに応じて前記第１のレスポンスが前記通信装置に送信されるまでに要する第２の時間と、
前記第２の通信手段により、前記第１のレスポンスに基づいて前記第２のレスポンスが生成されて前記コントローラに送信されるまでに要する第３の時間と
を用いて前記総待機時間を算出する
ステップを含む通信方法。
【請求項７】
コントローラから送信された通信装置に対する第１のコマンドに従い、情報処理装置に対する第２のコマンドを生成して前記情報処理装置に送信する第１の通信手段と、
前記第２のコマンドに応じて前記情報処理装置から送信された前記通信装置に対する第１のレスポンスに基づき、前記コントローラに対する第２のレスポンスを生成して前記コントローラに送信する第２の通信手段と
を備える通信装置の制御用のプログラムであって、
前記第１の通信手段により、前記コントローラから送信された前記第１のコマンドに従って前記第２のコマンドが生成されて前記情報処理装置に送信されるまでに要する第１の時間と、
前記情報処理装置により、前記第２のコマンドに応じて前記第１のレスポンスが前記通信装置に送信されるまでに要する第２の時間と、
前記第２の通信手段により、前記第１のレスポンスに基づいて前記第２のレスポンスが生成されて前記コントローラに送信されるまでに要する第３の時間と
を用いて、送信した前記第１のコマンドに対応する前記第２のレスポンスを受信できない前記コントローラが前記第１のコマンドを再送信するまで待機すべき総待機時間を算出する
ステップを含む処理を通信装置のコンピュータに実行させるプログラム。
【請求項８】
コントローラと、前記コントローラからの制御に従って情報処理装置と通信を行う通信装置とから構成される通信システムにおいて、
前記コントローラは、
前記通信装置に対する第１のコマンドを送信する送信手段と、
前記通信装置から送信された第２のレスポンスを受信する受信手段と
を含み、
前記送信手段は、送信した前記第１のコマンドに対応する前記第２のレスポンスを前記受信手段が受信できない場合、前記通信装置から通知される総待機時間だけ待機した後、前記第１のコマンドを再送信し、
前記通信装置は、
前記コントローラから送信された前記第１のコマンドに従い、前記情報処理装置に対する第２のコマンドを生成して前記情報処理装置に送信する第１の通信手段と、
前記第２のコマンドに応じて前記情報処理装置から送信された前記通信装置に対する第１のレスポンスに基づき、前記第２のレスポンスを生成して前記コントローラに送信する第２の通信手段と、
送信した前記第１のコマンドに対応する前記第２のレスポンスを受信できない前記コントローラが前記第１のコマンドを再送信するまで待機すべき総待機時間を算出する算出手段と
を含み、
前記算出手段は、
前記第１の通信手段により、前記コントローラから送信された前記第１のコマンドに従って前記第２のコマンドが生成されて前記情報処理装置に送信されるまでに要する第１の時間と、
前記情報処理装置により、前記第２のコマンドに応じて前記第１のレスポンスが前記通信装置に送信されるまでに要する第２の時間と、
前記第２の通信手段により、前記第１のレスポンスに基づいて前記第２のレスポンスが生成されて前記コントローラに送信されるまでに要する第３の時間と
を用いて前記総待機時間を算出する
通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、通信方法、プログラム、および通信システムに関し、特に、例えば、非接触ＩＣ(Integrated Circuit)カードとデータを通信する場合に用いて好適な通信装置、通信方法、プログラム、および通信システムに関する。
【背景技術】
【０００２】
従来、FeliCa（商標）に代表される非接触通信システムが存在する。この非接触通信システムは、例えば、コンビニエンスストアなどの店舗で利用される電子マネーシステムや、鉄道の駅の改札などで利用される自動改札システムなどに広く利用されている（例えば、特許文献１参照）。
【０００３】
図５は、従来の非接触通信システムの構成の一例を示している。この非接触通信システム５０は、コントローラ５１、リーダライタ（R/W）５２、および非接触ＩＣカード５３から構成される。
【０００４】
コントローラ５１は、R/Wコマンドを用いてリーダライタ５２を制御し、非接触ＩＣカード５３に記録されているデータを取得する。また、コントローラ５１は、R/Wコマンドを用いてリーダライタ５２を制御し、非接触ＩＣカード５３にデータを記録させる。
【０００５】
リーダライタ５２は、コントローラ５１からの制御に従い、カードコマンドを用いて非接触ＩＣカード５３を制御することにより、非接触ＩＣカード５３に記憶されているデータ）を読み出してコントローラ５１に送信する。また、リーダライタ５２は、コントローラ５１からの制御に従い、カードコマンドを用いて非接触ＩＣカード５３を制御することにより、非接触ＩＣカード５３に所定のデータを記憶させる。
【０００６】
非接触ＩＣカード５３は、リーダライタ５２からのカードコマンドに応じた処理を実行することにより、例えば、記憶しているデータをリーダライタ５２に送信したり、リーダライタ５２から送信されたデータを記憶したりする。
【０００７】
なお、非接触ＩＣカード５３の代わりに、非接触ＩＣカード５３と同等のＩＣチップが内蔵された携帯電話機などが用いられることもある。
【０００８】
次に、非接触通信システム５０の一連の動作について説明する。図６は、非接触通信システム５０の一連の動作を説明するタイミングチャートである。
【０００９】
初めに、コントローラ５１とリーダライタ５２との間で相互認証処理が行われる（ステップＳ２０１，Ｓ２１１）。この相互認証処理が終了すると、コントローラ５１からの制御（ステップＳ２０２）に従い、リーダライタ５２がポーリング処理を開始する（ステップＳ２１２）。一方、利用者によってリーダライタ５２に近づけられた非接触ＩＣカード５３は、リーダライタ５２のポーリング処理に応じ、リーダライタ５２にレスポンスを送信する（ステップＳ２３１）。非接触ＩＣカード５３からのレスポンスを受信したリーダライタ５２は、ポーリング処理の完了をコントローラ５１に通知する。
【００１０】
ポーリング処理が完了した後、コントローラ５１は、レスポンスサービスコマンド（R/Wコマンド）をリーダライタ５２に送信する（ステップＳ２０３）。これに応じて、リーダライタ５２は、レスポンスサービスコマンド（カードコマンド）を非接触ＩＣカード５３に送信する（ステップＳ２１３）。これに応じて、非接触ＩＣカード５３は、レスポンスサービスコマンドに応じたレスポンス（カードレスポンス）をリーダライタ５２に送信する（ステップＳ２３２）。リーダライタ５２は、非接触ＩＣカード５３からのレスポンスをコントローラ５１に中継する（ステップＳ２１４）。
【００１１】
非接触ＩＣカード５３からのレスポンスを確認したコントローラ５１からの制御（ステップＳ２０４）に従い、リーダライタ５２は、非接触ＩＣカード５３との間で相互認証処理を行い、相互認証処理の完了をコントローラ５１に通知する（ステップＳ２１５，Ｓ２３３）。
【００１２】
リーダライタ５２と非接触ＩＣカード５３との間の相互認証処理が完了したことを確認したコントローラ５１は、リードコマンド（R/Wコマンド）をリーダライタ５２に送信する（ステップＳ２０５）。これに応じて、リーダライタ５２は、リードコマンド（カードコマンド）を非接触ＩＣカード５３に送信する（ステップＳ２１６）。これに応じて、非接触ＩＣカード５３は、内蔵されたメモリに書き込まれているデータをレスポンスとしてリーダライタ５２に送信する（ステップＳ２３４）。リーダライタ５２は、非接触ＩＣカード５３からのレスポンスをコントローラ５１に中継する（ステップＳ２１７）。
【００１３】
非接触ＩＣカード５３のメモリに書き込まれていたデータを取得したコントローラ５１は、ライトコマンド（R/Wコマンド）と、非接触ＩＣカード５３のメモリに新たに書き込ませるデータをリーダライタ５２に送信する（ステップＳ２０６）。これに応じて、リーダライタ５２は、これらを非接触ＩＣカード５３に中継する（ステップＳ２１８）。これに応じて、非接触ＩＣカード５３は、通知されたデータを内蔵するメモリに書き込み、書き込み終了を示すレスポンスをリーダライタ５２に送信する（ステップＳ２３５）。リーダライタ５２は、非接触ＩＣカード５３からのレスポンスをコントローラ５１に中継する（ステップＳ２１９）。
【００１４】
以上で、非接触通信システム５０による一連の動作の説明を終了する。
【００１５】
このような一連の動作によれば、例えば、非接触通信システム５０を電子マネーシステムに利用している場合、非接触ＩＣカード５３に記録されている電子マネーの残金のデータを読み出し、この残金から商品の代金を減算し、減算結果を非接触ＩＣカード５３に記録させることなどができる。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００４−１０２７２６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
ところで、従来の非接触通信システム５０では、コントローラ５１は、リーダライタ５２や非接触ＩＣカード５３が各コマンドに応じた処理を実行するために要する時間を把握することができなかった。
【００１８】
したがって、コントローラ５１は、R/Wコマンドをリーダライタ５２に送信した後、リーダライタ５２からのリーダライタレスポンスを受信するまでの間、他の処理を実行することなく待機せざるを得なかった。このため、コントローラ５１のリソースを有効に活用することができなかった。
【００１９】
また、リーダライタレスポンスを受信するまで待機している時間が所定の閾値を超えるとタイムアウトと判断し、R/Wコマンドを再度送信することになるが、この判断の基準となる閾値を適切に設定することができなかった。
【００２０】
したがって、コントローラ５１とリーダライタ５２の間、およびリーダライタ５２と非接触ＩＣカード５３の間が半２重通信の場合、返信されたレスポンスと再送されたコマンドとが輻輳して通信エラーとなってしまうことが発生し得た。特に、リーダライタ５２の内部でリトライ処理を行うコマンドで衝突する可能性があった。
【００２１】
このような事態を防ぐためには、結局、タイムアウトの判断基準となる閾値を必要、且つ十分に長い時間に設定することになるので、動作が遅いとの印象を利用者に与えてしまう要因となっていた。
【００２２】
本発明はこのような状況に鑑みてなされたものであり、コントローラがコマンドを再送信するまで待機すべき時間を正確に把握できるようにするものである。
【課題を解決するための手段】
【００２３】
本発明の第１の側面である通信装置は、コントローラからの制御に従って情報処理装置と通信を行う通信装置において、前記コントローラから送信された前記通信装置に対する第１のコマンドに従い、前記情報処理装置に対する第２のコマンドを生成して前記情報処理装置に送信する第１の通信手段と、前記第２のコマンドに応じて前記情報処理装置から送信された前記通信装置に対する第１のレスポンスに基づき、前記コントローラに対する第２のレスポンスを生成して前記コントローラに送信する第２の通信手段と、送信した前記第１のコマンドに対応する前記第２のレスポンスを受信できない前記コントローラが前記第１のコマンドを再送信するまで待機すべき総待機時間を算出する算出手段とを含み、前記算出手段は、前記第１の通信手段により、前記コントローラから送信された前記第１のコマンドに従って前記第２のコマンドが生成されて前記情報処理装置に送信されるまでに要する第１の時間と、前記情報処理装置により、前記第２のコマンドに応じて前記第１のレスポンスが前記通信装置に送信されるまでに要する第２の時間と、前記第２の通信手段により、前記第１のレスポンスに基づいて前記第２のレスポンスが生成されて前記コントローラに送信されるまでに要する第３の時間とを用いて前記総待機時間を算出する。
【００２４】
前記第２の通信手段は、前記第２のコマンドに応じて前記情報処理装置から送信された前記通信装置に対する第１のレスポンスに基づき、前記コントローラに対する第２のレスポンスを生成して待機し、前記コントローラからの所定の前記第１のコマンドに応じて、前記第２のレスポンスを前記コントローラに送信するようにすることができる。
【００２５】
前記算出手段は、前記第１の時間を測定するか、または理論式を用いて算出することにより前記第１の時間を取得し、前記情報処理装置から取得する製造パラメータに基づいて、前記第２の時間を算出し、前記第３の時間を測定するか、または理論式を用いて算出することにより前記第３の時間を取得するようにすることができる。
【００２６】
前記算出手段は、さらに、前記第２のコマンドを送信した後に対応する前記第１のレスポンスを受信できない場合に前記第２のコマンドを再送信するリトライ処理の回数も用いて前記総待機時間を算出し、前記リトライ処理の回数は、前記第１のコマンドに含まれるようにすることができる。
【００２７】
前記算出手段は、次式に基づいて前記総待機時間を算出するようにすることができる。
総待機時間
＝（第１の時間＋第２の時間）×（リトライ処理の回数＋１）＋第３の時間
【００２８】
本発明の第１の側面である通信方法は、コントローラから送信された通信装置に対する第１のコマンドに従い、情報処理装置に対する第２のコマンドを生成して前記情報処理装置に送信する第１の通信手段と、前記第２のコマンドに応じて前記情報処理装置から送信された前記通信装置に対する第１のレスポンスに基づき、前記コントローラに対する第２のレスポンスを生成して前記コントローラに送信する第２の通信手段と、送信した前記第１のコマンドに対応する前記第２のレスポンスを受信できない前記コントローラが前記第１のコマンドを再送信するまで待機すべき総待機時間を算出する算出手段とを備える通信装置の通信方法において、前記算出手段による、前記第１の通信手段により、前記コントローラから送信された前記第１のコマンドに従って前記第２のコマンドが生成されて前記情報処理装置に送信されるまでに要する第１の時間と、前記情報処理装置により、前記第２のコマンドに応じて前記第１のレスポンスが前記通信装置に送信されるまでに要する第２の時間と、前記第２の通信手段により、前記第１のレスポンスに基づいて前記第２のレスポンスが生成されて前記コントローラに送信されるまでに要する第３の時間とを用いて前記総待機時間を算出するステップを含む。
【００２９】
本発明の第１の側面であるプログラムは、コントローラから送信された通信装置に対する第１のコマンドに従い、情報処理装置に対する第２のコマンドを生成して前記情報処理装置に送信する第１の通信手段と、前記第２のコマンドに応じて前記情報処理装置から送信された前記通信装置に対する第１のレスポンスに基づき、前記コントローラに対する第２のレスポンスを生成して前記コントローラに送信する第２の通信手段と
を備える通信装置の制御用のプログラムであって、前記第１の通信手段により、前記コントローラから送信された前記第１のコマンドに従って前記第２のコマンドが生成されて前記情報処理装置に送信されるまでに要する第１の時間と、前記情報処理装置により、前記第２のコマンドに応じて前記第１のレスポンスが前記通信装置に送信されるまでに要する第２の時間と、前記第２の通信手段により、前記第１のレスポンスに基づいて前記第２のレスポンスが生成されて前記コントローラに送信されるまでに要する第３の時間とを用いて、送信した前記第１のコマンドに対応する前記第２のレスポンスを受信できない前記コントローラが前記第１のコマンドを再送信するまで待機すべき総待機時間を算出するステップを含む処理を通信装置のコンピュータに実行させる。
【００３０】
本発明の第１の側面においては、第１の通信手段により、コントローラから送信された第１のコマンドに従って第２のコマンドが生成されて情報処理装置に送信されるまでに要する第１の時間と、情報処理装置により、第２のコマンドに応じて第１のレスポンスが通信装置に送信されるまでに要する第２の時間と、第２の通信手段により、第１のレスポンスに基づいて第２のレスポンスが生成されてコントローラに送信されるまでに要する第３の時間とを用いて総待機時間が算出される。
【００３１】
本発明の第２の側面である通信システムは、コントローラと、前記コントローラからの制御に従って情報処理装置と通信を行う通信装置とから構成される通信システムにおいて、前記コントローラが、前記通信装置に対する第１のコマンドを送信する送信手段と、前記通信装置から送信された第２のレスポンスを受信する受信手段とを含み、前記送信手段は、送信した前記第１のコマンドに対応する前記第２のレスポンスを前記受信手段が受信できない場合、前記通信装置から通知される総待機時間だけ待機した後、前記第１のコマンドを再送信する。また、前記通信装置が、前記コントローラから送信された前記第１のコマンドに従い、前記情報処理装置に対する第２のコマンドを生成して前記情報処理装置に送信する第１の通信手段と、前記第２のコマンドに応じて前記情報処理装置から送信された前記通信装置に対する第１のレスポンスに基づき、前記第２のレスポンスを生成して前記コントローラに送信する第２の通信手段と、送信した前記第１のコマンドに対応する前記第２のレスポンスを受信できない前記コントローラが前記第１のコマンドを再送信するまで待機すべき総待機時間を算出する算出手段とを含み、前記算出手段は、前記第１の通信手段により、前記コントローラから送信された前記第１のコマンドに従って前記第２のコマンドが生成されて前記情報処理装置に送信されるまでに要する第１の時間と、前記情報処理装置により、前記第２のコマンドに応じて前記第１のレスポンスが前記通信装置に送信されるまでに要する第２の時間と、前記第２の通信手段により、前記第１のレスポンスに基づいて前記第２のレスポンスが生成されて前記コントローラに送信されるまでに要する第３の時間とを用いて前記総待機時間を算出する。
【００３２】
本発明の第２の側面においては、通信装置では、第１の通信手段により、コントローラから送信された第１のコマンドに従って第２のコマンドが生成されて情報処理装置に送信されるまでに要する第１の時間と、情報処理装置により、第２のコマンドに応じて第１のレスポンスが通信装置に送信されるまでに要する第２の時間と、第２の通信手段により、第１のレスポンスに基づいて第２のレスポンスが生成されてコントローラに送信されるまでに要する第３の時間とを用いて総待機時間が算出されてコントローラに通知される。また、コントローラでは、送信した第１のコマンドに対応する第２のレスポンスが受信できない場合、通信装置から通知される総待機時間だけ待機した後、第１のコマンドが再送信される。
【発明の効果】
【００３３】
本発明の第１の側面によれば、コントローラに対して、コマンドを再送信するまで待機すべき正確な時間を通知することができる。
【００３４】
本発明の第２の側面によれば、コントローラがコマンドを再送信するまで待機すべき時間を正確に把握することができる。
【図面の簡単な説明】
【００３５】
【図１】本発明を適用した通信システムの構成例を示すブロック図である。
【図２】通信システムの一連の動作を説明するタイミングチャートである。
【図３】一連の動作の変形例を説明するタイミングチャートである。
【図４】一連の動作の変形例の応用例を説明するタイミングチャートである。
【図５】従来の非接触通信システムの構成の一例を示すブロック図である。
【図６】従来の非接触通信システムの動作を説明するタイミングチャートである。
【発明を実施するための形態】
【００３６】
以下、発明を実施するための最良の形態（以下、実施の形態と称する）について、図面を参照しながら詳細に説明する。
【００３７】
[実施の形態の構成例]
図１は、本実施の形態である通信システムの構成例を示している。
【００３８】
この通信システム１０は、コントローラ１１、リーダライタ（R/W）１２、およびＩＣカード１３から構成される。
【００３９】
コントローラ１１は、R/Wコマンドを用いてリーダライタ１２を制御し、ＩＣカード１３に記録されているデータを取得する。また、コントローラ１１は、R/Wコマンドを用いてリーダライタ１２を制御し、ＩＣカード１３にデータを記録させる。
【００４０】
リーダライタ１２は、コントローラ通信部２１、データ処理部２２、およびカード通信部２４から構成される。
【００４１】
コントローラ通信部２１は、コントローラ１１から送信されたR/Wコマンドを受信し、そのパケットのフレーム構造を確認するとともに、暗号化されているR/Wコマンドを復号してデータ処理部２２に出力する。また、コントローラ通信部２１は、データ処理部２２から入力された、データ処理部２２の処理結果を暗号化し、さらにパケット化して、R/Wレスポンスとしてコントローラ１１に送信する。
【００４２】
データ処理部２２は、内蔵されたメモリ２３に記録されているプログラムを実行することにより、以下の動作を行う。すなわち、データ処理部２２は、コントローラ１１からのR/Wコマンドがリーダライタ５２の内部で閉じた処理を指示するものである場合、当該処理を実行し、その処理結果をコントローラ通信部２１に出力する。また、データ処理部２２は、コントローラ１１からのR/WコマンドがＩＣカード１３との通信を伴う処理を指示するものである場合、対応するコマンドを発生してカード通信部２４に出力する。さらに、データ処理部２２は、カード通信部２４から入力される、ＩＣカード１３からのレスポンスをコントローラ通信部２１に出力する。
【００４３】
またさらに、データ処理部２２は、カードコマンド送信処理に要する時間を計測したり、カードアクセスレスポンス生成処理に要する時間を算出したり、リトライ時の待機時間(トータルウェイトタイム)を算出したりする。
【００４４】
なお、カードコマンド送信処理に要する時間を計測する代わりに、所定の条件の下で論理値を算出するようにしてもよい。また、カードアクセスレスポンス生成処理に要する時間を算出する代わりに、所定の条件の下で計測した実測値を採用するようにしてもよい。
【００４５】
ここで、カードコマンド送信処理とは、カード通信部２４にてカードコマンドを生成してＩＣカード１３に送信するまでの処理を指す。カードアクセスレスポンス生成処理とは、ＩＣカード１３から送信されたカードレスポンスを元にしてR/Wレスポンスを生成し、コントローラ１１に送信するまでの処理を指す。
【００４６】
カード通信部２４は、データ処理部２２から入力されるコマンドを暗号化し、さらにパケット化することによりカードコマンドを生成してＩＣカード１３に送信する。また、カード通信部２４は、ＩＣカード１３から送信されるカードレスポンスを受信し、そのパケットのフレーム構造を確認するとともに、暗号化されているカードコマンドを復号してデータ処理部２２に出力する。
【００４７】
ＩＣカード１３は、リーダライタ１２からのカードコマンドに応じた処理を実行することにより、例えば、記憶しているデータをリーダライタ１２に送信したり、リーダライタ１２から送信されたデータを記憶したりする。
【００４８】
ＩＣカード１３には、製造ＩＤ(IDm)と製造パラメータ(PMm)からなる製造ＩＤブロックが予め記憶されている。製造ＩＤは、各ＩＣカード１３に固有に付与されている識別情報である。製造パラメータには、ＩＣカード１３のバージョン情報と、コマンド処理時間を示す情報が含まれる。
【００４９】
なお、ＩＣカード１３は、リーダライタ１２と非接触で通信する非接触ＩＣカードであってもよいし、またはリーダライタ１２と接触して通信する磁気ＩＣカードなどであってもよい。さらに、ＩＣカード１３の代わりに、ＩＣカード１３と同等のＩＣチップが内蔵された携帯電話機などを用いてもよい。
【００５０】
［動作説明］
次に、通信システム１０の基本的な一連の動作について説明する。図２は、通信システム１０の基本的な一連の動作を説明するタイミングチャートである。
【００５１】
なお、図２に示される一連の動作の前提として、既にコントローラ１１とリーダライタ１２との相互認証処理が完了し、さらに、リーダライタ１２によるポーリング処理に応じてＩＣカード１３からレスポンスが返されているものとする。また、このレスポンスには、ＩＣカード１３の製造パラメータ(PMm)が含まれているものとする。
【００５２】
ポーリング処理が完了したことを確認したコントローラ１１は、カードアクセスコマンド（R/Wコマンド）をリーダライタ１２に送信する（ステップＳ１）。このカードアクセスコマンドには、ＩＣカード１３からのレスポンスが受信できない場合に再びカードコマンドを送信するリトライ処理の回数を示すリトライ回数が含まれているものとする。
【００５３】
カードアクセスコマンド（R/Wコマンド）を受信したリーダライタ１２は、パース処理を実行する（ステップＳ１１）。
【００５４】
具体的には、リーダライタ１２のコントローラ通信部２１が、コントローラ１１から送信されたカードアクセスコマンド（R/Wコマンド）のフレーム構造を確認するとともに、その暗号を復号してデータ処理部２２に出力する。データ処理部２２は、コントローラ１１からのカードアクセスコマンドに対応するコマンドを発生してカード通信部２４に出力する。
【００５５】
さらに、データ処理部２２は、ポーリング処理時に取得しているＩＣカード１３の製造パラメータを参照することにより、リーダライタ１２から送信されるカードコマンドに応じてＩＣカード１３がレスポンスを返すまでに要する時間であるカードレスポンス最大応答待ち時間を算出する。なお、製造パラメータを参照してもカードレスポンス最大応答待ち時間が算出できないカードコマンドが送信される場合や、製造パラメータが取得できていない場合には、カードレスポンス最大応答待ち時間を、想定されている上限の値とする。
【００５６】
パース処理の後、リーダライタ１２はカードコマンド送信処理を行う（ステップＳ１２）。
【００５７】
具体的には、リーダライタ１２のカード通信部２４が、データ処理部２２から入力されたコマンドを暗号化し、さらにパケット化することによりカードコマンドを生成してＩＣカード１３に送信する。なお、カード通信部２４によってカードコマンド送信処理が行われている間、データ処理部２２は、カードコマンド送信処理に要した時間（以下、カードコマンド送信処理時間と称する）を計測する。
【００５８】
カードコマンド送信処理の後、リーダライタ１２は、トータルウェイトタイム(Total Wait Time)を算出し、acceptedパケットとしてコントローラ１１に送信する（ステップＳ１３）。
【００５９】
具体的には、リーダライタ１２のデータ処理部２２が、次式（１）に従い、ステップＳ１１のパース処理で算出したカードレスポンス最大応答待ち時間に、ステップＳ１２で計測したカードコマンド送信処理時間を加算してカードウェイトタイム(Card Wait Time)を算出する。
カードウェイトタイム
＝カードレスポンス最大応答待ち時間＋カードコマンド送信処理時間
・・・（１）
【００６０】
さらに、データ処理部２２が、次式（２）に従い、リトライ回数に１を加算した数を、カードウェイトタイムに乗算し、さらに、カードアクセスレスポンス生成時間を加算してトータルウェイトタイムを算出する。
トータルウェイトタイム
＝カードウェイトタイム×（リトライ回数＋１）＋カードアクセスレスポンス生成時間
・・・（２）
【００６１】
なお、カードアクセスレスポンス生成時間は、ＩＣカード１３からのレスポンスのデータ長によって異なるが、ＩＣカード１３からのレスポンスのデータ長が想定の最大長であるものとして算出する。
【００６２】
そして、データ処理部２２が、算出したトータルウェイトタイムをコントローラ通信部２１に出力し、コントローラ通信部２１がこれをacceptedパケット化してコントローラ１１に送信する。
【００６３】
なお、リーダライタ１２がカードコマンド送信処理によってカードコマンドを送信してからカードウェイトタイムが経過してもＩＣカード１３からカードレスポンスが送信されてこない場合、リーダライタ１２は、再びカードコマンド送信処理を実行してカードコマンドを送信することになる（ステップＳ１４）。
【００６４】
そして、リーダライタ１２からのカードコマンドに応じ、ＩＣカード１３がカードレスポンスを送信し（ステップＳ２１）、これをリーダライタ１２が受信すると、リーダライタ１２は、カードアクセスレスポンス生成処理を実行する（ステップＳ１５）。具体的には、カード通信部２４がカードレスポンスを受信すると、それがデータ処理部２２に出力される。データ処理部２２は、カードレスポンスをコントローラ通信部２１に出力する。コントローラ通信部２１は、データ処理部２２から入力されたカードレスポンスを暗号化し、さらにパケット化して、カードアクセスレスポンス（R/Wレスポンス）としてコントローラ１１に送信する。
【００６５】
一方、コントローラ１１は、リーダライタ１２が送信したトータルウェイトタイムを示すacceptedパケットを受信した後、トータルウェイトタイムが経過してもリーダライタ１２からカードアクセスレスポンスが送信されてこない場合、再びカードアクセスコマンドを送信するようにする。
【００６６】
以上で、通信システム１０による一連の動作の説明を終了する。
【００６７】
以上説明したように、通信システム１０においては、リーダライタ１２が、カードウェイトタイムをリトライの判断基準とし、コントローラ１１が、カードウェイトタイムに基づき、リトライ回数を考慮して算出されたトータルウェイトタイムをリトライの判断基準とする。これにより、コントローラ１１の待機時間を適切に設定することができる。
【００６８】
[変形例]
ところで、上述した一連の動作では、ＩＣカード１３からのカードレスポンスを受信した場合、リーダライタ１２は、これを元にしてカードアクセスレスポンスを生成し、自発的にコントローラ１１に送信するようになされていた。
【００６９】
以下に説明する一連の動作の変形例では、ＩＣカード１３からのカードレスポンスを受信した場合、リーダライタ１２は、これを元にしてカードアクセスレスポンスを生成して待機し、コントローラ１１からの要求に応じて、カードアクセスレスポンスをコントローラ１１に送信するようにする。
【００７０】
具体的に説明する。図３は、通信システム１０による一連の動作の変形例を説明するタイミングチャートである。
【００７１】
なお、図３に示される一連の動作の変形例も、図２に示された一連の動作と同様、既にコントローラ１１とリーダライタ１２との相互認証処理が完了し、さらに、リーダライタ１２によるポーリング処理に応じてＩＣカード１３からレスポンスが返されていることを前提とする。また、このレスポンスには、ＩＣカード１３の製造パラメータ(PMm)が含まれているものとする。
【００７２】
ポーリング処理が完了したことを確認したコントローラ１１は、プレーンメッセージ（ゲットキーバージョン(Get Key Version)）コマンド（R/Wコマンド）をリーダライタ１２に送信する（ステップＳ５１）。
【００７３】
プレーンメッセージ(Plain Message)コマンド（R/Wコマンド）を受信したリーダライタ１２は、パース処理を実行し、パース処理の後、カードコマンド送信処理を行う（ステップＳ６１）。
【００７４】
カードコマンド送信処理の後、リーダライタ１２は、トータルウェイトタイム(Total Wait Time)を算出し、acceptedパケットとしてコントローラ１１に送信する（ステップＳ６２）。
【００７５】
そして、リーダライタ１２からのゲットキーバージョンコマンド（カードコマンド）に応じ、ＩＣカード１３がゲットキーバージョンレスポンス（カードレスポンス）を送信し（ステップＳ７１）、これをリーダライタ１２が受信すると、リーダライタ１２は、カードアクセスレスポンスを生成する。具体的には、ゲットキーバージョンレスポンスを元にしてプレーンメッセージレスポンスを生成する。ただし、生成したプレーンメッセージレスポンスの送信は行わずに待機する。
【００７６】
一方、コントローラ１１は、リーダライタ１２からのacceptedパケットを受信した後、ゲットラストパケット(Get Last Packet)コマンド（R/Wコマンド）をリーダライタ１２に送信する（ステップＳ５２）。なお、ゲットラストパケットコマンドの送信タイミングは、通常、リーダライタ１２からのacceptedパケットを受信し、それが示すトータルウェイトタイムが経過した後であるが、それ以前に送信してもよい。
【００７７】
コントローラ１１からのゲットラストパケットコマンドに応じ、リーダライタ１２は、既に生成済みのプレーンメッセージレスポンスをコントローラ１１に送信する（ステップＳ６３）。
【００７８】
なお、リーダライタ１２は、コントローラ１１からゲットラストパケットコマンド（R/Wコマンド）を受信した段階で、ＩＣ１３からのカードレスポンスを受信していない場合、トータルウェイトタイムを示すacceptedパケットをコントローラ１１に再送信することになる。
【００７９】
その後、コントローラ１１が再びゲットラストパケットコマンド（R/Wコマンド）をリーダライタ１２に送信すると（ステップＳ５３）、これに応じて、リーダライタ１２は、先ほど送信した、既に生成済みのプレーンメッセージレスポンスをコントローラ１１に再び送信することになる（ステップＳ６４）。
【００８０】
以上説明したように、通信システム１０の一連の動作の変形例においては、リーダライタ１２は、ＩＣカード１３からのカードレスポンスを受信した場合、これを元にしてカードアクセスレスポンスを生成して待機する。そして、コントローラ１１からの要求（ゲットラストパケットコマンド）に応じ、カードアクセスレスポンスをコントローラ１１に送信する。
【００８１】
これにより、コントローラ１１は、リーダライタ１２からカードアクセスレスポンスが送信されてくるまで待機する必要がなくなり、任意のタイミングでカードアクセスレスポンスを取得することができる。
【００８２】
[応用例]
図４は、図３に示された一連の動作の変形例を、１台のコントローラ１１により、複数のリーダライタ１２を制御する場合に応用した場合の動作を説明するタイミングチャートである。
【００８３】
同図に示すように、１台のコントローラ１１が、３台のリーダライタ１２に対してそれぞれR/Wコマンドを送信すると、各リーダライタ１２から、トータルウェイトタイムを示すacceptedパケットがコントローラ１１に送信される。
【００８４】
この後、コントローラ１１が、各リーダライタ１２から通知されたトータルウェイトタイムが経過した後、各リーダライタ１２に対してゲットラストパケットコマンドを送信すれば、各リーダライタ１２からのR/Wレスポンスを、輻輳を生じさせることなく取得することができる。
【００８５】
よって、１台のコントローラ１１によって複数のリーダライタ１２を並行して制御することが可能となる。
【００８６】
なお、上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のコンピュータなどに、プログラム記録媒体からインストールされる。
【００８７】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【００８８】
また、プログラムは、１台のコンピュータにより処理されるものであってもよいし、複数のコンピュータによって分散処理されるものであってもよい。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであってもよい。
【００８９】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【００９０】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【００９１】
１０  通信システム，  １１  コントローラ，  １２  リーダライタ，  １３  ＩＣカード，  ２１  コントローラ通信部，  ２２  データ処理部，  ２３  メモリ，  ２４  カード通信部
【図１】
2011039810.tif 000003
【図２】
2011039810.tif 000004
【図３】
2011039810.tif 000005
【図４】
2011039810.tif 000006
【図５】
2011039810.tif 000007
【図６】
2011039810.tif 000008