(57)【要約】【課題】最適なスロット数を算出することにより、多数の応答装置から識別データを読み取るのにかかる時間を短くする。【解決手段】応答受信部１３２は、複数のスロットの各スロットにおいて、ＩＣタグ２２０（応答装置）が送信した識別データを受信する。スロット判定部１４０は、応答受信部１３２が識別データの受信に成功したか否かに基づいて、各スロットについて、空きスロットであるか読取スロットであるか競合スロットであるかを判定する。応答数推定部１５０は、スロット判定部１４０の判定結果に基づいて、識別データを送信したＩＣタグ２２０の数を推定する。スロット数決定部１２０は、応答数推定部１５０が推定した推定応答数に基づいて、スロットの数を決定する。【選択図】図４
2011070298.tif 000002
【特許請求の範囲】
【請求項１】
複数の応答装置の各応答装置が複数のスロットのなかから選択したスロットにより送信した応答装置自身を識別する識別データを受信して、上記複数の応答装置をそれぞれ識別する複数の識別データを読み取る読取装置において、
上記複数の応答装置に対してデータを送信する送信装置と、上記複数の応答装置からデータを受信する受信装置と、データを処理する処理装置と、応答受信部と、スロット判定部と、応答数推定部と、スロット数決定部と、スロット数送信部とを有し、
上記応答受信部は、上記受信装置を用いて、上記複数のスロットの各スロットにおいて、上記応答装置が送信した識別データを受信し、
上記スロット判定部は、上記応答受信部が識別データの受信に成功したか否かに基づいて、上記処理装置を用いて、上記複数のスロットの各スロットについて、識別データを送信した応答装置が存在しない空きスロットであるか、１つの応答装置が識別データを送信した読取スロットであるか、２以上の応答装置が識別データを送信した競合スロットであるかを判定し、
上記応答数推定部は、上記スロット判定部が判定した判定結果に基づいて、上記処理装置を用いて、識別データを送信した応答装置の数を推定して推定応答数とし、
上記スロット数決定部は、上記応答数推定部が推定した推定応答数に基づいて、上記処理装置を用いて、上記応答装置が選択し得るスロットの数を決定してスロット数とし、
上記スロット数送信部は、上記送信装置を用いて、上記スロット数決定部が決定したスロット数を上記応答装置に対して送信することを特徴とする読取装置。
【請求項２】
上記応答数推定部は、上記処理装置を用いて、上記複数のスロットのうち、空きスロットであると上記スロット判定部が判定したスロットの数を計数して空きスロット数Ｅとし、競合スロットであると上記スロット判定部が判定したスロットの数を計数して競合スロット数Ｃとし、上記空きスロット数Ｅから上記競合スロット数Ｃを差し引いた値Ｄ＝Ｅ−Ｃを算出し、上記応答装置が選択し得たスロットの総数Ｓと、上記値Ｄとに基づいて、推定応答数を算出することを特徴とする請求項１に記載の読取装置。
【請求項３】
上記応答数推定部は、上記処理装置を用いて、上記複数のスロットのうち、空きスロットであると上記スロット判定部が判定したスロットの数を計数して空きスロット数Ｅとし、競合スロットであると上記スロット判定部が判定したスロットの数を計数して競合スロット数Ｃとし、上記空きスロット数Ｅに所定の定数αを乗じた積αＥと、上記競合スロット数Ｃに所定の定数βを乗じた積βＣとを合計した値Ｄ＝αＥ＋βＣを算出し、上記応答装置が選択し得たスロットの総数Ｓと、上記値Ｄとに基づいて、推定応答数を算出することを特徴とする請求項１に記載の読取装置。
【請求項４】
上記応答数推定部は、上記複数のスロットのうち、読取スロットであると上記スロット判定部が判定したスロットの数を計数して読取スロット数Ｒとし、競合スロットであると上記スロット判定部が判定したスロットの数を計数して競合スロット数Ｃとし、上記処理装置を用いて、上記応答装置が選択し得たスロットの総数Ｓと、上記読取スロット数Ｒと、上記競合スロット数Ｃとに基づいて、推定応答数を算出することを特徴とする請求項１に記載の読取装置。
【請求項５】
上記読取装置は、更に、複数のアンテナのなかから使用するアンテナを選択するアンテナ選択装置と、アンテナ切替部とを有し、
上記送信装置は、上記アンテナ選択装置が選択したアンテナを介して、上記複数の応答装置に対してデータを送信し、
上記受信装置は、上記アンテナ選択装置が選択したアンテナを介して、上記複数の応答装置からデータを受信し、
上記アンテナ切替部は、上記アンテナ選択装置を用いて、使用するアンテナを切り替え、
上記スロット数決定部は、上記アンテナ切替部が切り替えたアンテナを介して上記応答受信部が前回受信した識別データに基づいて上記応答数推定部が推定した推定応答数に基づいて、上記処理装置を用いて、スロット数を決定することを特徴とする請求項１乃至請求項４のいずれかに記載の読取装置。
【請求項６】
上記スロット数決定部は、上記アンテナ切替部が切り替える前のアンテナを介して上記応答受信部が受信した識別データに基づいて上記応答数推定部が推定した推定応答数に基づいて、上記処理装置を用いて、スロット数を決定することを特徴とする請求項５に記載の読取装置。
【請求項７】
データを送信する送信装置とデータを受信する受信装置とデータを処理する処理装置とを有するコンピュータが実行することにより、上記コンピュータが請求項１乃至請求項６のいずれかに記載の読取装置として機能することを特徴とするコンピュータプログラム。
【請求項８】
データを送信する送信装置とデータを受信する受信装置とデータを処理する処理装置とを有する読取装置が、複数の応答装置の各応答装置が複数のスロットのなかから選択したスロットを用いて送信する応答装置自身を識別する識別データを受信して、上記複数の応答装置をそれぞれ識別する複数の識別データを読み取る読取方法において、
上記受信装置が、上記複数のスロットの各スロットにおいて、上記応答装置が送信した識別データを受信し、
上記受信装置が識別データの受信に成功したか否かに基づいて、上記処理装置が、上記複数のスロットの各スロットについて、識別データを送信した応答装置が存在しない空きスロットであるか、１つの応答装置が識別データを送信した読取スロットであるか、２以上の応答装置が識別データを送信した競合スロットであるかを判定し、
上記処理装置が判定した判定結果に基づいて、上記処理装置が、識別データを送信した応答装置の数を推定して推定応答数とし、
上記処理装置が推定した推定応答数に基づいて、上記処理装置が、上記応答装置が選択し得るスロットの数を決定してスロット数とし、
上記送信装置が、上記処理装置が決定したスロット数を上記応答装置に対して送信することを特徴とする読取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、多数のＩＣタグなどの応答装置から識別データを読み取る読取装置に関する。
【背景技術】
【０００２】
ＩＣタグなどの応答装置から識別データを読み取る場合、複数の応答装置が送信した識別データが衝突するのを避けるため、識別データを送信するスロットを複数用意する。応答装置は、複数のスロットのなかからランダムにスロットを選択し、選択したスロットを使用して、識別データを送信する。応答装置の数に比べてスロットの数が十分多ければ、衝突は発生せず、読取装置は、すべての識別データを正しく受信する。応答装置の数に比べてスロットの数が少な過ぎる場合、衝突が多発し、読取装置は、ほとんどの識別データを正しく受信できない。スロットの数が十分多いとも少な過ぎるとも言えない場合、一部で衝突が発生するので、読取装置は、ある程度の数の識別データを正しく受信する。読取装置は、識別データを正しく受信した応答装置に対して、識別データを送信しないよう指示したのち、もう一度、応答装置に識別データを送信させる。これを何度か繰り返すことにより、読取装置は、すべての識別データを正しく受信する。
最初からスロットの数を十分多くしておけば、１回でほとんどすべての識別データを正しく受信することができるが、スロットとして時分割されたタイムスロットを用いる場合、スロットの数を多くすると、通信にかかる時間が長くなる。このため、応答装置と通信するための時間が足りなくなる場合がある。
この課題を解決するため、前回の応答時における空きスロットの数や衝突の発生数などに基づいて、次回のスロット数を算出する方式がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００９−５１８７４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前回の応答時の衝突発生状況などに基づいて、次回のスロット数を算出する方式では、最初のラウンドのスロット数を算出することはできない。特に複数のアンテナを切り替えながら多数の応答装置の集団から識別データを読み取る場合、アンテナごとに適切なスロット数は異なる。また、同じアンテナでも、１回目と２回目とでは、適切なスロット数が異なる。
この発明は、例えば上記のような課題を解決するためになされたものであり、適切なスロット数を算出することにより、多数の応答装置の識別データを読み取るのにかかる時間を短くすることを目的とする。
【課題を解決するための手段】
【０００５】
この発明にかかる読取装置は、
複数の応答装置の各応答装置が複数のスロットのなかから選択したスロットにより送信した応答装置自身を識別する識別データを受信して、上記複数の応答装置をそれぞれ識別する複数の識別データを読み取る読取装置において、
上記複数の応答装置に対してデータを送信する送信装置と、上記複数の応答装置からデータを受信する受信装置と、データを処理する処理装置と、応答受信部と、スロット判定部と、応答数推定部と、スロット数決定部と、スロット数送信部とを有し、
上記応答受信部は、上記受信装置を用いて、上記複数のスロットの各スロットにおいて、上記応答装置が送信した識別データを受信し、
上記スロット判定部は、上記応答受信部が識別データの受信に成功したか否かに基づいて、上記処理装置を用いて、上記複数のスロットの各スロットについて、識別データを送信した応答装置が存在しない空きスロットであるか、１つの応答装置が識別データを送信した読取スロットであるか、２以上の応答装置が識別データを送信した競合スロットであるかを判定し、
上記応答数推定部は、上記スロット判定部が判定した判定結果に基づいて、上記処理装置を用いて、識別データを送信した応答装置の数を推定して推定応答数とし、
上記スロット数決定部は、上記応答数推定部が推定した推定応答数に基づいて、上記処理装置を用いて、上記応答装置が選択し得るスロットの数を決定してスロット数とし、
上記スロット数送信部は、上記送信装置を用いて、上記スロット数決定部が決定したスロット数を上記応答装置に対して送信することを特徴とする。
【発明の効果】
【０００６】
この発明にかかる読取装置によれば、スロット判定部が判定した判定結果に基づいて応答数推定部が推定した推定応答数に基づいて、スロット数決定部がスロット数を決定するので、スロット数を、応答装置の数に適した値にすることができ、すべての応答装置の識別データを読み取るのにかかる時間を短くすることができる。
【図面の簡単な説明】
【０００７】
【図１】実施の形態１における読取システム８００の全体構成の一例を示すシステム構成図。
【図２】実施の形態１におけるアンテナ８１０ａ，８１０ｂの通信範囲７１０ａ，７１０ｂの一例を示す平面図。
【図３】実施の形態１における読取装置１００のハードウェア構成の一例を示す図。
【図４】実施の形態１における読取装置１００及びＩＣタグ２２０の機能ブロックの構成の一例を示すブロック構成図。
【図５】実施の形態１における応答数推定部１５０及びスロット数決定部１２０の詳細ブロックの構成の一例を示す詳細ブロック図。
【図６】実施の形態１における推定テーブル記憶部１５５が記憶した推定応答数テーブルの一例を示す図。
【図７】実施の形態１におけるスロット数テーブル記憶部１７４が記憶したスロット数テーブルの一例を示す図。
【図８】実施の形態１における読取処理Ｓ５００の流れの一例を示すフローチャート図。
【図９】実施の形態１におけるスロット数決定工程Ｓ５２０の流れの一例を示す詳細フローチャート図。
【図１０】実施の形態１におけるスロット数決定工程Ｓ５２０の流れの別の例を示す詳細フローチャート図。
【図１１】実施の形態１における関数ｆＳの一例を示すグラフ図。
【図１２】実施の形態１におけるスロット数Ｓ及び応答数ｎと、読取スロット数の期待値Ｒ＊との関係の一例を示すグラフ図。
【図１３】実施の形態１におけるスロット数Ｓ及び応答数ｎと、読取スロット数の期待値Ｒ＊をスロット数Ｓで割った商との関係の一例を示すグラフ図。
【図１４】実施の形態２における応答数推定部１５０の詳細ブロックの構成の一例を示す詳細ブロック図。
【図１５】実施の形態２における推定テーブル記憶部１５５が記憶した推定応答数テーブルの一例を示す図。
【図１６】実施の形態２におけるスロット数Ｓ及び応答数ｎと、値Ｄの期待値Ｄ＊との関係の一例を示すグラフ図。
【図１７】応答数ｎ及び空きスロット数Ｅまたは値Ｄと、発生確率との関係の一例を示すグラフ図。
【図１８】実施の形態３における応答数推定部１５０及びスロット数決定部１２０の詳細ブロックの構成の一例を示す詳細ブロック図。
【図１９】実施の形態３における応答数推定工程Ｓ５５０の流れの一例を示す詳細フローチャート図。
【図２０】実施の形態３におけるスロット数決定工程Ｓ５２０の流れの一例を示す詳細フローチャート図。
【図２１】実施の形態３における確率分布算出工程Ｓ５６０の流れの一例を示す詳細フローチャート図。
【図２２】実施の形態３におけるスロット数算出工程Ｓ５３０の流れの一例を示す詳細フローチャート図。
【図２３】総スロット数Ｓ及び応答数ｎと、空きスロット数Ｅ・読取スロット数Ｒ・競合スロット数Ｃの発生確率との関係の一例を示すグラフ図。
【発明を実施するための形態】
【０００８】
実施の形態１．
実施の形態１について、図１〜図１３を用いて説明する。
【０００９】
図１は、この実施の形態における読取システム８００の全体構成の一例を示すシステム構成図である。
読取システム８００は、ホストコンピュータ８５０、読取装置１００（リーダ装置）、複数のアンテナ８１０ａ，８１０ｂ、ベルトコンベア８２０、赤外線照射装置８３１、赤外線受光装置８３２を有する。
【００１０】
ベルトコンベア８２０は、物品群２００を載せて、物品群２００を所定の方向に一定の速度で移動させる。なお、ベルトコンベア８２０は、物品群２００を移動させるための構成の一例であり、物品群２００を移動させるための構成は、ベルトコンベア８２０に限らず、他の構成であってもよい。
物品群２００は、複数の物品２１０からなる。物品２１０は、例えば、工場から出荷される製品である。物品２１０は、例えば、ベルトコンベア８２０の進行方向に５列、高さ方向に６段、幅方向に２行というように規則正しく積み上げられている。この例では、１つの物品群２００が、５×６×２＝１２０個の物品２１０からなる。しかし、１つの物品群２００に含まれる物品２１０の数は、その都度異なる可能性がある。以下、複数の物品２１０を区別する必要がある場合には、幅方向奥側から数えた行数ｘ、進行方向前側から数えた列数ｙ、高さ方向下側から数えた段数ｚを用いて「（ｘ，ｙ，ｚ）」のように表記する。また、例えば、ｚ段目の物品２１０すべてに言及したい場合は、行数ｘ及び列数ｙを問わないという意味で「＊」を用いて「（＊，＊，ｚ）」のように表記する。
それぞれの物品２１０には、ＩＣタグ２２０（応答装置）が付けられている。ＩＣタグ２２０は、読み取りやすいように、例えば、物品群２００の幅方向外側に付けられている。すなわち、幅方向奥側の物品２１０（１，＊，＊）には奥側に、幅方向手前側の物品２１０（２，＊，＊）には手前側に、それぞれＩＣタグ２２０が付けられている。
【００１１】
赤外線照射装置８３１は、赤外線を照射する。赤外線受光装置８３２は、赤外線照射装置８３１が照射した赤外線を受光する。赤外線照射装置８３１が照射した赤外線を、物品群２００が遮って赤外線受光装置８３２が赤外線を受光しなくなることにより、物品群２００が検出できる。なお、赤外線照射装置８３１及び赤外線受光装置８３２は、物品群２００を検出するための構成の一例であり、物品群２００を検出するための構成は、赤外線照射装置８３１及び赤外線受光装置８３２に限らず、他の構成であってもよい。
【００１２】
複数のアンテナ８１０ａ，８１０ｂは、電気信号を入力して電波として放射し、ＩＣタグ２２０が放射した電波を受信して電気信号として出力する。複数のアンテナ８１０ａ，８１０ｂは、物品群２００に含まれるＩＣタグ２２０と効率良く通信するため、それぞれ異なる通信範囲を有する。例えば、アンテナ８１０ａは、ベルトコンベア８２０の幅方向奥側に設置され、主に幅方向奥側の物品２１０（１，＊，＊）に付けられたＩＣタグ２２０と通信し、アンテナ８１０ｂは、ベルトコンベア８２０の幅方向手前側に設置され、主に幅方向手前側の物品２１０（２，＊，＊）に付けられたＩＣタグ２２０と通信する。
【００１３】
読取装置１００（ＲＦＩＤリーダライタ装置）は、ＩＣタグ２２０の識別データを読み取り、読み取った識別データをホストコンピュータ８５０に対して出力する。読取装置１００は、赤外線照射装置８３１及び赤外線受光装置８３２により物品群２００を検出すると、ＩＣタグ２２０に対して識別データの送信を要求するメッセージを生成し、生成したメッセージにより変調した電気信号を生成して、アンテナ８１０ａ，８１０ｂを介して、ＩＣタグ２２０に対して送信する。これに対する応答として、ＩＣタグ２２０が、記憶したＩＣタグ２２０自身の識別データにより変調した電波を送信すると、読取装置１００は、アンテナ８１０ａ，８１０ｂを介してこれを受信し、応答したＩＣタグ２２０の識別データを取得する。
【００１４】
ホストコンピュータ８５０は、読取装置１００が読み取った識別データを入力し、入力した識別データを利用した処理をする。例えば、ホストコンピュータ８５０は、出荷した物品２１０を把握することにより、在庫管理を行う。
【００１５】
図２は、この実施の形態におけるアンテナ８１０ａ，８１０ｂの通信範囲７１０ａ，７１０ｂの一例を示す平面図である。
読取装置１００がアンテナ８１０ａを介してＩＣタグ２２０と通信する場合、通信範囲７１０ａのなかにあるＩＣタグ２２０が応答する。また、読取装置１００がアンテナ８１０ｂを介してＩＣタグ２２０と通信する場合、通信範囲７１０ｂのなかにあるＩＣタグ２２０が応答する。例えば、物品群２００が図示した位置にある場合、幅方向奥側・進行方向３列目〜５列目の物品２１０（１，３，＊）（１，４，＊）（１，５，＊）に付けられた１８個のＩＣタグ２２０が、アンテナ８１０ａを介して通信可能である。幅方向手前側・進行方向３列目〜５列目の物品２１０（２，３，＊）（２，４，＊）（２，５，＊）に付けられた１８個のＩＣタグ２２０が、アンテナ８１０ｂを介して通信可能である。
なお、通信範囲は、電波の強度などの条件によって定まるものであり、厳密なものではない。ＩＣタグ２２０が通信範囲のなかにあっても応答しない場合があるし、逆に、ＩＣタグ２２０が通信範囲の外にあっても応答する場合がある。
【００１６】
図３は、この実施の形態における読取装置１００のハードウェア構成の一例を示す図である。
読取装置１００は、例えば、処理装置（以下「ＣＰＵ」と呼ぶ。）９１１、バス９１２、不揮発性記憶装置（以下「ＲＯＭ」と呼ぶ。）９１３、揮発性記憶装置（以下「ＲＡＭ」と呼ぶ。）９１４、固定ディスク装置（以下「ＨＤＤ」と呼ぶ。）９２０、液晶表示装置（以下「ＬＣＤ」と呼ぶ。）９０１、キーボード（以下「Ｋ／Ｂ」と呼ぶ。）９０２、ネットワーク通信装置９１５、無線通信装置９１６、アンテナ選択装置９１７、物体検出装置９１８を有する。
【００１７】
ＣＰＵ９１１は、ＲＯＭ９１３やＨＤＤ９２０が記憶したプログラムを実行することにより、ＲＡＭ９１４やＨＤＤ９２０が記憶したデータを処理し、ＬＣＤ９０１・Ｋ／Ｂ９０２・ネットワーク通信装置９１５・無線通信装置９１６・アンテナ選択装置９１７・物体検出装置９１８などを制御する。
バス９１２は、ＣＰＵ９１１・ＲＯＭ９１３・ＲＡＭ９１４・ＨＤＤ９２０・ネットワーク通信装置９１５・無線通信装置９１６・アンテナ選択装置９１７・物体検出装置９１８などを接続する。
ＲＯＭ９１３・ＲＡＭ９１４・ＨＤＤ９２０（記憶装置）は、ＣＰＵ９１１が実行するプログラムやＣＰＵ９１１が処理するデータを記憶する。
ＬＣＤ９０１は、ＣＰＵ９１１による制御にしたがい、ＣＰＵ９１１が出力したデータなどを表示する。
Ｋ／Ｂ９０２は、ＣＰＵ９１１による制御にしたがい、利用者の操作を入力し、入力した操作を表わすデータをＣＰＵ９１１に通知する。
ネットワーク通信装置９１５は、ＣＰＵ９１１による制御にしたがい、ＣＰＵ９１１が出力したデータをホストコンピュータ８５０に対して送信し、ホストコンピュータ８５０が送信したデータを受信してＣＰＵ９１１に通知する。
アンテナ選択装置９１７は、ＣＰＵ９１１による制御にしたがい、複数のアンテナ８１０ａ，８１０ｂのなかから、ＩＣタグ２２０との通信に使用するアンテナを１つ選択する。複数のアンテナ８１０ａ，８１０ｂの通信範囲には重なっている部分があるので、複数のアンテナ８１０ａ，８１０ｂを同時に使用すると、混信してＩＣタグ２２０と正常に通信できない可能性がある。複数のアンテナ８１０ａ，８１０ｂを同時に使用せず、同時に使用するアンテナを１つに限ることにより、正常にＩＣタグ２２０と通信できる。なお、複数のアンテナのなかに通信範囲が重なっていないアンテナがある場合には、通信範囲が重なっていないアンテナを同時に使用する構成としてもよい。
無線通信装置９１６（送信装置・受信装置）は、ＣＰＵ９１１による制御にしたがい、アンテナ選択装置９１７が選択したアンテナを介して、ＣＰＵ９１１が出力したデータをＩＣタグ２２０に対して送信し、ＩＣタグ２２０が送信したデータを受信してＣＰＵ９１１に通知する。
物体検出装置９１８は、ＣＰＵ９１１による制御にしたがい、赤外線照射装置８３１・赤外線受光装置８３２を制御して、物品群２００の存否を検出し、検出結果を表わすデータをＣＰＵ９１１に通知する。
【００１８】
以下に説明する読取装置１００の機能ブロックは、原則として、ＣＰＵ９１１がプログラムを実行することにより実現される。なお、機能ブロックの実現方式は、これに限らず、アナログ回路・デジタル回路・集積回路などの専用ハードウェアや汎用ハードウェアを用いるなど、他の方式により、機能ブロックを実現する構成としてもよい。
【００１９】
図４は、この実施の形態における読取装置１００及びＩＣタグ２２０の機能ブロックの構成の一例を示すブロック構成図である。
読取装置１００は、開始判定部１１１、アンテナ切替部１１２、完了判定部１１３、スロット数決定部１２０、要求送信部１３１、応答受信部１３２、了解送信部１３３、識別出力部１３４、スロット判定部１４０、応答数推定部１５０を有する。
ＩＣタグ２２０は、要求受信部２２１、スロット選択部２２２、識別送信部２２３、了解受信部２２４、了解記憶部２２５を有する。
【００２０】
開始判定部１１１は、物体検出装置９１８が検出した検出結果に基づいて、ＣＰＵ９１１を用いて、物品群２００の存否を判定する。開始判定部１１１は、物品群２００が存在すると判定した場合に、ＣＰＵ９１１を用いて、ＩＣタグ２２０の識別データの読み取りを開始すると判定する。
【００２１】
完了判定部１１３は、ＣＰＵ９１１を用いて、ＩＣタグ２２０の識別データの読み取りが完了したか否かを判定する。完了判定部１１３は、例えば、後述するスロット判定部１４０の判定結果に基づいて、ＣＰＵ９１１を用いて、識別データを送信したＩＣタグ２２０が存在するか否かを判定する。完了判定部１１３は、例えば、所定の回数のサイクルの間、識別データを送信したＩＣタグ２２０が存在しないと判定した場合に、ＣＰＵ９１１を用いて、ＩＣタグ２２０の識別データの読み取りが完了したと判定する。なお「サイクル」については後述する。
【００２２】
アンテナ切替部１１２は、ＩＣタグ２２０の識別データの読み取りを開始すると開始判定部１１１が判定してから、ＩＣタグ２２０の識別データの読み取りが完了したと完了判定部１１３が判定するまでの間、ＣＰＵ９１１を用いて、アンテナ選択装置９１７を制御し、ＩＣタグ２２０との通信にすべてのアンテナを使用するよう、使用するアンテナを順に切り替える。アンテナ切替部１１２が使用するアンテナを切り替えて、すべてのアンテナを１回ずつ使用するまでの期間を、１回の「サイクル」と呼ぶ。アンテナ切替部１１２は、ＩＣタグ２２０の識別データの読み取りを開始すると開始判定部１１１が判定した場合に、ＣＰＵ９１１を用いて、最初のサイクルを開始し、例えば所定の順番で、アンテナを切り替えていく。１回のサイクルが終了した時点で、ＩＣタグ２２０の識別データの読み取りがまだ完了していないと完了判定部１１３が判定した場合、アンテナ切替部１１２は、ＣＰＵ９１１を用いて、次のサイクルを開始する。アンテナ切替部１１２は、ＩＣタグ２２０の識別データの読み取りが完了したと完了判定部１１３が判定するまで、これを繰り返す。
【００２３】
スロット数決定部１２０は、ＣＰＵ９１１を用いて、アンテナ切替部１１２が切り替えたアンテナを介した通信に使用するスロットの数を決定する。なお「スロット」については後述する。
要求送信部１３１（スロット数送信部）は、スロット数決定部１２０が決定したスロット数に基づいて、ＣＰＵ９１１を用いて、ＩＣタグ２２０に対して識別データの送信を要求するデータ（以下「識別要求メッセージ」と呼ぶ。）を生成する。識別要求メッセージは、スロット数決定部１２０が決定したスロット数を含む。要求送信部１３１は、ＣＰＵ９１１を用いて、無線通信装置９１６を制御し、生成した識別要求メッセージをＩＣタグ２２０に対して送信する。
【００２４】
ここで「スロット」について説明する。
通信範囲のなかには通常複数のＩＣタグ２２０があるので、識別要求メッセージに対する応答としてＩＣタグ２２０が送信した識別データが混信しないようにする必要がある。スロットは複数あり、それぞれのＩＣタグ２２０が異なるスロットを使用して識別データを送信すれば、混信せず、ＩＣタグ２２０が送信した識別データを読取装置１００が正しく受信することができる。例えば、時分割多重化方式であれば、スロットは、ＩＣタグ２２０が識別データを送信するタイミングである。なお、多重化方式は、時分割多重化方式に限らず、例えば周波数多重化方式など、他の多重化方式であってもよい。多重化方式が周波数多重化方式であれば、スロットは、ＩＣタグ２２０が識別データを送信する電波の周波数である。
【００２５】
ＩＣタグ２２０において、要求受信部２２１は、読取装置１００が送信した識別要求メッセージを受信する。スロット選択部２２２は、要求受信部２２１が識別要求メッセージを受信し、後述する了解記憶部２２５が了解メッセージを受信したことを記憶していない場合、識別要求メッセージに含まれるスロット数に基づいて、識別データの送信に使用するスロットをランダムに選択する。
識別送信部２２３は、スロット選択部２２２が選択したスロットを使用して、ＩＣタグ２２０自身の識別データを送信する。
【００２６】
読取装置１００において、応答受信部１３２は、ＣＰＵ９１１を用いて、無線通信装置９１６を制御し、ＩＣタグ２２０が送信した識別データを受信する。
上述したように、あるスロットを選択したＩＣタグ２２０が１つだけなら、応答受信部１３２は、ＩＣタグ２２０が送信した識別データを正しく受信するが、２つ以上のＩＣタグ２２０が同じスロットを選択した場合、応答受信部１３２は、識別データを正しく受信できない。ＩＣタグ２２０は、他のＩＣタグ２２０と話し合ってスロットを選択するのではないから、あるＩＣタグ２２０が他のＩＣタグ２２０と異なるスロットを選択するか否かは、確率的な問題である。スロット数が多ければ多いほど、あるＩＣタグ２２０が他のＩＣタグ２２０と異なるスロットを選択する確率は高くなる。また、通信範囲のなかにあるＩＣタグ２２０の数が多ければ、その分、あるＩＣタグ２２０が他のＩＣタグ２２０と同じスロットを選択する確率が高くなるので、スロット数を多くする必要がある。しかし、時分割多重化されたスロットを用いる場合、スロット数を多くすると１回の通信にかかる時間が長くなる。この例のように、物品群２００が一定の速度で移動している場合、ＩＣタグ２２０の識別データを読み取るためにかけられる時間が限られている。このため、スロット数をむやみに多くすることはできない。
【００２７】
了解送信部１３３は、ＩＣタグ２２０が送信した識別データを応答受信部１３２が正しく受信した場合、応答受信部１３２が受信した識別データに基づいて、ＣＰＵ９１１を用いて、その識別データを正しく受信したことを表わすデータ（以下「了解メッセージ」と呼ぶ。）を生成する。了解メッセージは、応答受信部１３２が受信した識別データを含む。了解送信部１３３は、ＣＰＵ９１１を用いて、無線通信装置９１６を制御し、生成した了解メッセージをＩＣタグ２２０に対して送信する。
【００２８】
ＩＣタグ２２０において、了解受信部２２４は、読取装置１００が送信した了解メッセージを受信する。了解記憶部２２５は、了解受信部２２４が受信した了解メッセージに含まれる識別データがＩＣタグ２２０自身の識別データと一致した場合、了解メッセージを受信したことを記憶する。
これにより、ＩＣタグ２２０の識別データを読取装置１００が正しく受信した場合、ＩＣタグ２２０は、次回以降の識別要求メッセージに対して識別データを送信しない。こうして、識別データを送信するＩＣタグ２２０の数が徐々に減っていく。
なお、了解記憶部２２５は、ある程度の時間のみ、了解メッセージを受信したことの記憶を保持し、それ以上の時間が経過した場合、了解メッセージを受信したことを忘れる。了解メッセージを受信したことの記憶を了解記憶部２２５が保持する時間は、少なくとも、１回のサイクルにかかる時間よりも長く、了解記憶部２２５は、一連の通信の間、了解メッセージを受信したことの記憶を保持する。これにより、読取装置１００との一連の通信が終わり、また新たに識別要求メッセージを受信した場合、ＩＣタグ２２０は、識別データを送信する。例えば、ＩＣタグ２２０が受信した電波からエネルギーを得て動作するパッシブ型である場合、了解記憶部２２５は、揮発性メモリを用いて、了解メッセージを受信したことを記憶する。ＩＣタグ２２０が通信範囲の外に出てエネルギーの供給が絶たれ、所定の時間が経過すると、揮発性メモリが記憶したデータは消去されるので、了解記憶部２２５は、了解メッセージを受信したことを忘れる。
【００２９】
読取装置１００において、識別出力部１３４は、ＩＣタグ２２０が送信した識別データを応答受信部１３２が正しく受信した場合、ＣＰＵ９１１を用いて、ネットワーク通信装置９１５を制御し、応答受信部１３２が受信した識別データをホストコンピュータ８５０に対して通知する。
なお、識別出力部１３４が識別データを通知するタイミングは、例えば、応答受信部１３２が識別データを正しく受信するたびに五月雨式に通知する構成であってもよいし、識別データの読み取りが完了したのちにまとめて通知する構成であってもよい。
【００３０】
スロット判定部１４０は、複数のスロットの各スロットについて、応答受信部１３２が識別データの受信に成功したか否かに基づいて、ＣＰＵ９１１を用いて、そのスロットの種類を判定する。スロットの種類には、空きスロット・読取スロット・競合スロットの３種類がある。「空きスロット」とは、そのスロットを使用して識別データを送信したＩＣタグ２２０が存在しないスロットのことである。「読取スロット」とは、そのスロットを使用して識別データを送信したＩＣタグ２２０が１つだけであり、ＩＣタグ２２０が送信した識別データを応答受信部１３２が正しく受信したスロットのことである。「競合スロット」とは、そのスロットを使用して識別データを送信したＩＣタグ２２０が複数あり、ＩＣタグ２２０が送信した識別データを応答受信部１３２が正しく受信できなかったスロットのことである。
【００３１】
応答数推定部１５０は、スロット判定部１４０が判定した判定結果に基づいて、ＣＰＵ９１１を用いて、識別データを送信したＩＣタグ２２０の数（以下「応答数ｎ」と呼ぶ。）を推定する。競合スロットを使用して識別データを送信したＩＣタグ２２０の数は、２つとは限らず、３つかもしれないし、それ以上かもしれない。応答数推定部１５０は、ＣＰＵ９１１を用いて、その数を推定し、識別データを送信したＩＣタグ２２０の総数を推定する。
【００３２】
上述したように、識別要求メッセージに応答するＩＣタグ２２０の数が多ければスロット数を多くする必要がある。読取装置１００は、識別要求メッセージに応答するＩＣタグ２２０の数を前もって知ることができないが、２回目以降のサイクルでは、それより前のサイクルにおける応答に基づいて応答数推定部１５０が推定した応答数（以下「推定応答数ｎ＊」と呼ぶ。）を用いて、識別要求メッセージに応答するＩＣタグ２２０の数を予測することができる。
スロット数決定部１２０は、１回目のサイクルにおいて、例えばあらかじめ定められた所定の数をスロット数とする。これに対し、スロット数決定部１２０は、２回目以降のサイクルにおいて、前回のサイクルにおいて応答数推定部１５０が推定した推定応答数に基づいて、ＣＰＵ９１１を用いて、今回のサイクルにおいて識別要求メッセージに応答するＩＣタグ２２０の数を予測し、予測した数（以下「予測応答数ｎ−」と呼ぶ。）に基づいて、最適なスロット数を算出する。
【００３３】
図５は、この実施の形態における応答数推定部１５０及びスロット数決定部１２０の詳細ブロックの構成の一例を示す詳細ブロック図である。
応答数推定部１５０は、総数計数部１５１、空き計数部１５２、読取計数部１５３、推定テーブル記憶部１５５、推定値算出部１５６を有する。
スロット数決定部１２０は、経過時間算出部１２１、増加数算出部１２２、予測値算出部１２３、最大残数算出部１２４、上限応答数算出部１２５、予測応答数算出部１２６、スロット数算出部１２７、増加率記憶部１７１、最大総数記憶部１７２、最大応答数記憶部１７３、スロット数テーブル記憶部１７４を有する。
【００３４】
総数計数部１５１は、スロット判定部１４０が判定した判定結果に基づいて、ＣＰＵ９１１を用いて、今回の識別要求メッセージに対してＩＣタグ２２０が応答し得たスロットの総数（以下「総スロット数Ｓ」と呼ぶ。）を数える。なお、総数計数部１５１が総スロット数Ｓを数えるのではなく、スロット数決定部１２０が決定したスロット数を入力して、総スロット数Ｓとする構成としてもよい。
空き計数部１５２は、スロット判定部１４０が判定した判定結果に基づいて、ＣＰＵ９１１を用いて、今回の識別要求メッセージに対する応答における空きスロットの数（以下「空きスロット数Ｅ」と呼ぶ。）を数える。
読取計数部１５３は、スロット判定部１４０が判定した判定結果に基づいて、ＣＰＵ９１１を用いて、今回の識別要求メッセージに対する応答における読取スロットの数（以下「読取スロット数Ｒ」と呼ぶ。）を数える。
なお、今回の識別要求メッセージに対する応答における競合スロットの数（以下「競合スロット数Ｃ」と呼ぶ。）と、空きスロット数Ｅと、読取スロット数Ｒと、総スロット数Ｓとの間には、Ｓ＝Ｅ＋Ｒ＋Ｃという関係が成り立つ。このため、例えば空き計数部１５２に代えて、競合計数部と空き算出部とを設け、空き計数部１５２が空きスロット数Ｅを数える代わりに、競合計数部が競合スロット数Ｃを数え、空き算出部が、総スロット数Ｓから読取スロット数Ｒと競合スロット数Ｃとの合計を差し引いた差Ｓ−（Ｒ＋Ｃ）を算出して、空きスロット数Ｅとする構成としてもよい。
【００３５】
推定テーブル記憶部１５５は、あらかじめ、ＨＤＤ９２０を用いて、推定応答数テーブルを記憶している。推定応答数テーブルは、総スロット数Ｓと、空きスロット数Ｅとに基づいて、応答数を推定するためのテーブルである。
【００３６】
図６は、この実施の形態における推定テーブル記憶部１５５が記憶した推定応答数テーブルの一例を示す図である。
空きスロット数６１１は、空きスロット数Ｅを表わす。総スロット数６１２は、総スロット数Ｓを表わす。推定応答数６１３は、空きスロット数Ｅが左端の空きスロット数６１１と一致し、総スロット数Ｓが上端の総スロット数６１２と一致する場合における推定応答数を表わす。
例えば、空きスロット数Ｅが７、総スロット数Ｓが１６である場合、推定応答数は１３となる。また、空きスロット数Ｅが３０、総スロット数Ｓが６４である場合、推定応答数は４８となる。
【００３７】
図５に戻り、詳細ブロックの説明を続ける。
【００３８】
推定値算出部１５６は、総数計数部１５１が数えた総スロット数Ｓと、空き計数部１５２が数えた空きスロット数Ｅとに基づいて、ＣＰＵ９１１を用いて、推定テーブル記憶部１５５が記憶した推定応答数テーブルを検索し、推定応答数ｎ＊を算出する。
なお、総スロット数Ｓと空きスロット数Ｅとから推定応答数を算出するための構成は、推定応答数テーブルを用いる構成に限らず、他の構成であってもよい。例えば、総スロット数Ｓと空きスロット数Ｅとから推定応答数を算出する数式・関数・サブルーチンなどを用いる構成としてもよい。
【００３９】
スロット数決定部１２０は、前回のサイクルについて応答数推定部１５０が推定した推定応答数に基づいて、今回のサイクルのスロット数を決定する。
【００４０】
経過時間算出部１２１は、経過時間ｔを算出する。経過時間ｔの開始時刻は、今回のサイクルにおいてアンテナ切替部１１２がこれから切り替える切り替え後のアンテナを前回のサイクルで使用して識別要求メッセージを送信した時刻である。経過時間ｔの終了時刻は、今回のサイクルで同じアンテナを使用して識別要求メッセージを送信する時刻である。経過時間ｔの終了時刻は未来の時刻であるが、経過時間算出部１２１が経過時間ｔを算出してから実際に識別要求メッセージを送信するまでの時間が一定であると仮定すれば、経過時間算出部１２１は、経過時間ｔの開始時刻から現在時刻までの時間に基づいて、経過時間ｔを算出することができる。なお、経過時間算出部１２１は、例えば、タイマーを用いて経過時間ｔを計測する構成であってもよいし、識別要求メッセージや了解メッセージを送信するのに必要な時間や総スロット数・読取スロット数などから、経過時間ｔを計算により求める構成であってもよい。
【００４１】
増加率記憶部１７１は、あらかじめ、ＨＤＤ９２０を用いて、応答増加率ρを記憶している。応答増加率ρとは、アンテナの通信範囲のなかに新たに入ってくるＩＣタグ２２０の数を算出するためのパラメータである。例えば、応答増加率ρは、単位時間当たり、アンテナの通信範囲のなかに新たに入ってくるＩＣタグ２２０の数を表わす。応答増加率ρは、例えばベルトコンベア８２０の速度など、読取システム８００の運用条件により定まる定数である。増加率記憶部１７１は、あらかじめ設定された値を応答増加率ρとして記憶している。
【００４２】
物品群２００は、一定の速度で移動しているので、アンテナの通信範囲のなかに新たに入ってくるＩＣタグ２２０の数（以下「増加数Δｎ」と呼ぶ。）は、経過時間に比例する。例えば、物品群２００が物品２１０一列分移動するのにかかる時間が１秒で、物品２１０を積み重ねた段数が６段であれば、１秒当たり６個のＩＣタグ２２０が新たにアンテナの通信範囲のなかに入ってくることになる。物品２１０を積み重ねた段数は、必ずしも明らかではないが、アンテナの通信範囲のなかにあるＩＣタグ２２０の数に比例すると考えられる。アンテナの通信範囲のなかにあるＩＣタグ２２０のなかには、既に了解メッセージを受信したなどの理由により識別要求メッセージに応答しないＩＣタグ２２０もあるが、前回のサイクルにおいて識別要求メッセージに応答したＩＣタグ２２０の数からおおよその推定は可能である。
【００４３】
増加数算出部１２２は、前回のサイクルにおいて同じアンテナを使用して送信した識別要求メッセージに対する応答に基づいて推定値算出部１５６が推定した推定応答数ｎ＊と、経過時間算出部１２１が算出した経過時間ｔと、増加率記憶部１７１が記憶した応答増加率ρとに基づいて、ＣＰＵ９１１を用いて、増加数Δｎを算出する。例えば、増加数算出部１２２は、ＣＰＵ９１１を用いて、推定応答数ｎ＊と、経過時間ｔと、応答増加率ρとの積ｎ＊・ｔ・ρを算出して、増加数Δｎとする。
なお、上述したように、応答数ｎは、アンテナの通信範囲のなかにあるＩＣタグ２２０の数に比例しないので、増加数算出部１２２は、推定応答数ｎ＊を使用せず、経過時間ｔと応答増加率ρとの積を算出して増加数Δｎとする構成としてもよい。あるいは、総経過時間算出部と総読取数算出部とを設け、総経過時間算出部が、ＩＣタグ２２０の識別データの読み取りを開始してからの経過時間（以下「総経過時間Ｔ」と呼ぶ。）を算出し、総読取数算出部が、ＩＣタグ２２０の識別データの読み取りを開始してから正しく受信できた識別データの総数（以下「総読取数ΣＲ」と呼ぶ。）を算出し、増加数算出部１２２が、総読取数ΣＲを総経過時間Ｔで割った商に、経過時間ｔと応答増加率ρとの積を乗じた積ΣＲ・ρ・ｔ／Ｔを算出して、増加数Δｎとする構成としてもよい。
【００４４】
なお、当然のことながら、アンテナの通信範囲から外に出て行くＩＣタグ２２０も存在する。しかし、アンテナの通信範囲から外に出て行くＩＣタグ２２０は、その前に、アンテナの通信範囲のなかに十分な時間存在していたはずであるから、既に読取装置１００が識別データを正しく読み取り、識別要求メッセージに対して応答しなくなっている。したがって、アンテナの通信範囲から外に出て行くＩＣタグ２２０の数は、今回の識別要求メッセージに対して応答するＩＣタグ２２０の数に影響しない。
【００４５】
予測値算出部１２３は、推定値算出部１５６が推定した推定応答数ｎ＊と、読取計数部１５３が数えた読取スロット数Ｒと、増加数算出部１２２が算出した増加数Δｎに基づいて、ＣＰＵ９１１を用いて、予測応答数ｎ−を算出する。例えば、予測値算出部１２３は、ＣＰＵ９１１を用いて、推定応答数ｎ＊から読取スロット数Ｒを差し引いた差と増加数Δｎとの和ｎ＊−Ｒ＋Δｎを算出して、予測応答数ｎ−とする。
【００４６】
最大総数記憶部１７２は、あらかじめ、ＨＤＤ９２０を用いて、最大総数を記憶している。最大総数とは、物品群２００のなかに含まれるＩＣタグ２２０の数の上限のことである。例えば、物品群２００の大きさの上限や物品２１０一つ当たりの大きさなどから、一つの物品群２００に含まれる物品２１０の数の上限が定まる。最大総数は、このような読取システム８００の運用条件によって定まる定数である。最大総数記憶部１７２は、あらかじめ設定された値を最大総数として記憶している。
【００４７】
最大残数算出部１２４は、最大総数記憶部１７２が記憶した最大総数と、読取計数部１５３が数えた読取スロット数とに基づいて、ＣＰＵ９１１を用いて、最大残数を算出する。最大残数とは、物品群２００のなかに含まれるＩＣタグ２２０のうち、識別データをまだ正しく読み取られていないＩＣタグ２２０の数の上限のことである。例えば、最大残数算出部１２４は、ＣＰＵ９１１を用いて、ＩＣタグ２２０の識別データの読み取りを開始して以降、読取計数部１５３が数えた読取スロット数を積算して、識別データを読み取ったＩＣタグ２２０の総読取数ΣＲを算出する。最大残数算出部１２４は、ＣＰＵ９１１を用いて、最大総数記憶部１７２が記憶した最大総数から、算出した総読取数ΣＲを差し引いた差を算出して、最大残数とする。
最大総数は、読取システム８００の運用上定められた値であり、総読取数ΣＲは、実際に識別データを読み取ったＩＣタグ２２０の数であるから、物品群２００に含まれるＩＣタグ２２０のうち、まだ識別データを読み取られていないＩＣタグ２２０の数は、最大残数以下である。したがって、今回の識別要求メッセージに対して、最大残数を超える数のＩＣタグ２２０が応答することはあり得ない。
【００４８】
最大応答数記憶部１７３は、あらかじめ、ＨＤＤ９２０を用いて、最大応答数を記憶している。最大応答数とは、１回の識別要求メッセージに対して応答するＩＣタグ２２０の数の上限のことである。例えば物品２１０一つ当たりの大きさやアンテナの通信範囲の大きさなどから、アンテナの通信範囲のなかに存在し得るＩＣタグ２２０の数の上限が定まる。最大応答数は、このような読取システム８００の運用条件によって定まる定数である。最大応答数記憶部１７３は、あらかじめ設定された値を最大応答数として記憶している。アンテナの通信範囲のなかに存在し得るＩＣタグ２２０の数は、最大応答数以下であるから、今回の識別要求メッセージに対して、最大応答数を超える数のＩＣタグ２２０が応答することはあり得ない。
【００４９】
上限応答数算出部１２５は、最大残数算出部１２４が算出した最大残数と、最大応答数記憶部１７３が記憶した最大応答数とに基づいて、ＣＰＵ９１１を用いて、最大残数と最大応答数とのうち小さいほうを求めて、上限応答数とする。今回の識別要求メッセージに対して、上限応答数を超える数のＩＣタグ２２０が応答することはあり得ない。
【００５０】
なお、各アンテナの通信範囲にＩＣタグ２２０が均等に配置され、各アンテナが読むべきＩＣタグ２２０の数がほぼ同じであると仮定できる場合、例えば以下のような構成としてもよい。上限応答数算出部１２５は、ＣＰＵ９１１を用いて、最大残数算出部１２４が算出した最大残数をアンテナ８１０ａ，８１０ｂの数で割った商を算出してアンテナ当たり最大残数とする。上限応答数算出部１２５は、アンテナ当たり最大残数と最大応答数とのうち小さいほうを、上限応答数とする。
【００５１】
予測応答数算出部１２６は、上限応答数算出部１２５が算出した上限応答数に基づいて、ＣＰＵ９１１を用いて、予測値算出部１２３が算出した予測応答数ｎ−を修正する。上述したように、今回の識別要求メッセージに対して、上限応答数を超える数のＩＣタグ２２０が応答することはあり得ない。このため、予測値算出部１２３が算出した予測応答数ｎ−が上限応答数より大きい場合、予測応答数算出部１２６は、ＣＰＵ９１１を用いて、予測応答数ｎ−を修正し、上限応答数を予測応答数ｎ−とする。
【００５２】
スロット数テーブル記憶部１７４は、あらかじめ、ＨＤＤ９２０を用いて、スロット数テーブルを記憶している。スロット数テーブルとは、予測応答数ｎ−に基づいて、最適なスロット数を算出するためのテーブルである。
【００５３】
図７は、この実施の形態におけるスロット数テーブル記憶部１７４が記憶したスロット数テーブルの一例を示す図である。
予測応答数６２１は、予測応答数ｎ−の範囲の下限を表わす。スロット数６２２は、予測応答数ｎ−が、左端の予測応答数６２１以上である場合におけるスロット数を表わす。
【００５４】
図５に戻り、詳細ブロックの説明を続ける。
【００５５】
スロット数算出部１２７は、予測応答数算出部１２６が算出した予測応答数ｎ−に基づいて、ＣＰＵ９１１を用いて、スロット数テーブル記憶部１７４が記憶したスロット数テーブルを検索して、スロット数を算出する。例えば、スロット数算出部１２７は、ＣＰＵ９１１を用いて、スロット数テーブル記憶部１７４が記憶したスロット数テーブルを上から順に検索して、予測応答数算出部１２６が算出した予測応答数ｎ−が、予測応答数６２１以上となる行を探し、その行のスロット数６２２を取得して、スロット数とする。
なお、予測応答数ｎ−からスロット数を算出するための構成は、スロット数テーブルを用いる構成に限らず、他の構成であってもよい。例えば、予測応答数ｎ−からスロット数を算出する数式・関数・サブルーチンなどを用いる構成であってもよい。
【００５６】
図８は、この実施の形態における読取処理Ｓ５００の流れの一例を示すフローチャート図である。
読取処理Ｓ５００において、読取装置１００は、物品群２００に含まれるすべてのＩＣタグ２２０の識別データを読み取る。読取装置１００は、開始判定工程Ｓ５１１、アンテナ切替工程Ｓ５１２、スロット数決定工程Ｓ５２０、要求送信工程Ｓ５４１、応答受信工程Ｓ５４２、スロット判定工程Ｓ５４３、了解送信工程Ｓ５４４、終了判定工程Ｓ５４５、スロット更新工程Ｓ５４６、完了判定工程Ｓ５４７、応答数推定工程Ｓ５５０を実行する。また、ＩＣタグ２２０は、要求受信工程Ｓ５８１、了解判定工程Ｓ５８２、スロット選択工程Ｓ５８３、スロット待ち工程Ｓ５８４、識別送信工程Ｓ５８５、了解受信工程Ｓ５８６、了解記憶工程Ｓ５８７を実行する。
【００５７】
まず、読取装置１００の側の処理について説明する。
【００５８】
開始判定工程Ｓ５１１において、開始判定部１１１は、ＣＰＵ９１１を用いて、物体検出装置９１８を制御し、所定の位置に物品群２００が存在するか否かを判定する。
所定の位置に物品群２００が存在すると開始判定部１１１が判定した場合、読取装置１００は、ＩＣタグ２２０の識別データの読み取りを開始するため、アンテナ切替工程Ｓ５１２へ進む。
所定の位置に物品群２００が存在しない開始判定部１１１がと判定した場合、読取装置１００は、開始判定工程Ｓ５１１を繰り返し、物品群２００の到着を待つ。
【００５９】
アンテナ切替工程Ｓ５１２において、アンテナ切替部１１２は、ＣＰＵ９１１を用いて、アンテナ選択装置９１７を制御し、ＩＣタグ２２０との通信に使用するアンテナを切り替える。例えば、その前に使用していたアンテナがアンテナ８１０ａである場合、アンテナ切替部１１２は、使用するアンテナをアンテナ８１０ｂに切り替え、逆に、その前に使用していたアンテナがアンテナ８１０ｂである場合、アンテナ切替部１１２は、使用するアンテナをアンテナ８１０ａに切り替える。
アンテナが３つ以上ある場合は、例えば、使用する順序をあらかじめ定めておく。その前に使用していたアンテナが１番目のアンテナである場合、アンテナ切替部１１２は、使用するアンテナを２番目のアンテナに切り替える。その前に使用していたアンテナが２番目のアンテナである場合、アンテナ切替部１１２は、使用するアンテナを３番目のアンテナに切り替える。その前に使用していたアンテナが最後のアンテナである場合、アンテナ切替部１１２は、使用するアンテナを１番目のアンテナに切り替える。
なお、ＩＣタグ２２０との通信を開始した直後の場合、最初に使用するアンテナをあらかじめ定めておき、その前に使用していたアンテナにかかわらず、アンテナ切替部１１２は、使用するアンテナをあらかじめ定めたアンテナに切り替える構成としてもよい。
【００６０】
スロット数決定工程Ｓ５２０において、スロット数決定部１２０は、ＣＰＵ９１１を用いて、今回の識別要求メッセージにおけるスロット数を決定する。
【００６１】
要求送信工程Ｓ５４１において、要求送信部１３１は、ＣＰＵ９１１を用いて、スロット数決定工程Ｓ５２０でスロット数決定部１２０が決定したスロット数を含む識別要求メッセージを生成する。要求送信部１３１は、ＣＰＵ９１１を用いて、無線通信装置９１６を制御し、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が切り替えたアンテナを介して、そのアンテナの通信範囲のなかに存在するＩＣタグ２２０に対して、識別要求メッセージを送信する。
また、総数計数部１５１は、ＲＡＭ９１４を用いて、総スロット数Ｓとして０を記憶する。空き計数部１５２は、ＲＡＭ９１４を用いて、空きスロット数Ｅとして０を記憶する。読取計数部１５３は、ＲＡＭ９１４を用いて、読取スロット数Ｒとして０を記憶する。
【００６２】
応答受信工程Ｓ５４２において、応答受信部１３２は、ＣＰＵ９１１を用いて、無線通信装置９１６を制御し、要求送信工程Ｓ５４１で要求送信部１３１が送信した識別要求メッセージに対する応答としてＩＣタグ２２０が送信した識別データを受信する。現在のスロットを使用して識別データを送信したＩＣタグ２２０が存在しなければ、応答受信部１３２は、識別データを受信しない。また、現在のスロットを使用して識別データを送信したＩＣタグ２２０が複数存在する場合、混信により、応答受信部１３２は、識別データを正しく受信しない。現在のスロットを使用して識別データを送信したＩＣタグ２２０がただ１つだけ存在する場合、応答受信部１３２は、識別データを正しく受信する。
【００６３】
スロット判定工程Ｓ５４３において、スロット判定部１４０は、ＣＰＵ９１１を用いて、応答受信工程Ｓ５４２における応答受信部１３２の受信の成否に基づいて、現在のスロットが空きスロットであるか、読取スロットであるか、競合スロットであるかを判定する。
スロット判定部１４０による判定の結果にかからわず、総数計数部１５１は、ＣＰＵ９１１を用いて、総スロット数Ｓに１を加え、ＲＡＭ９１４を用いて記憶する。
現在のスロットが空きスロットであるとスロット判定部１４０が判定した場合、空き計数部１５２は、ＣＰＵ９１１を用いて、空きスロット数Ｅに１を加え、ＲＡＭ９１４を用いて記憶する。
現在のスロットが読取スロットであるとスロット判定部１４０が判定した場合、読取計数部１５３は、ＣＰＵ９１１を用いて、読取スロット数Ｒに１を加え、ＲＡＭ９１４を用いて記憶する。
また、現在のスロットが読取スロットであるとスロット判定部１４０が判定した場合、読取装置１００は、了解送信工程Ｓ５４４へ進む。
現在のスロットが読取スロット以外であるとスロット判定部１４０が判定した場合、読取装置１００は、終了判定工程Ｓ５４５へ進む。
【００６４】
了解送信工程Ｓ５４４において、了解送信部１３３は、ＣＰＵ９１１を用いて、応答受信工程Ｓ５４２で応答受信部１３２が正しく受信した識別データを宛先として含む了解メッセージを生成する。了解送信部１３３は、ＣＰＵ９１１を用いて、無線通信装置９１６を制御し、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が選択したアンテナを介して、その識別データによって識別されるＩＣタグ２２０に対して、了解メッセージを送信する。
【００６５】
終了判定工程Ｓ５４５において、スロット判定部１４０は、ＣＰＵ９１１を用いて、例えば総数計数部１５１が数えた総スロット数Ｓに基づいて、現在のスロットが何番目のスロットであるかを判定する。スロット判定部１４０は、スロット数決定工程Ｓ５２０でスロット数決定部１２０が決定したスロット数に基づいて、ＣＰＵ９１１を用いて、現在のスロットが最後のスロットであるかを判定する。
現在のスロットが最後のスロットであるとスロット判定部１４０が判定した場合、読取装置１００は、完了判定工程Ｓ５４７へ進む。
現在のスロットが最後のスロットでないとスロット判定部１４０が判定した場合、読取装置１００は、スロット更新工程Ｓ５４６へ進む。
【００６６】
スロット更新工程Ｓ５４６において、読取装置１００は、ＣＰＵ９１１を用いて、スロットを更新し、次のスロットへ移る。例えば、要求送信部１３１は、ＣＰＵ９１１を用いて、次のスロットへの移行を表わすスロット更新メッセージを生成する。要求送信部１３１は、ＣＰＵ９１１を用いて、無線通信装置９１６を制御し、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が切り替えたアンテナを介して、そのアンテナの通信範囲のなかに存在するＩＣタグ２２０に対して、スロット更新メッセージを送信する。
その後、読取装置１００は、応答受信工程Ｓ５４２に戻り、ＩＣタグ２２０からの応答を受信する。
なお、１つのスロット当たりの時間があらかじめ定まっている場合には、時間の経過により自動的に次のスロットに移るので、スロット更新工程Ｓ５４６はなくてもよい。
【００６７】
完了判定工程Ｓ５４７において、完了判定部１１３は、ＣＰＵ９１１を用いて、ＩＣタグ２２０の識別データの読み取りが完了したか否かを判定する。例えば、完了判定部１１３は、ＣＰＵ９１１を用いて、総数計数部１５１が数えた総スロット数Ｓと、空き計数部１５２が数えた空きスロット数Ｅとを比較して、一致するか否かを判定する。総スロット数Ｓと空きスロット数Ｅとが一致しない場合、すなわち、要求送信工程Ｓ５４１で要求送信部１３１が送信した識別要求メッセージに対する応答として識別データを送信したＩＣタグ２２０が存在する場合、完了判定部１１３は、ＲＡＭ９１４を用いて、無応答回数として０を記憶する。総スロット数Ｓと空きスロット数Ｅとが一致する場合、すなわち、識別要求メッセージに対する応答として識別データを送信したＩＣタグ２２０が存在しない場合、完了判定部１１３は、ＣＰＵ９１１を用いて、無応答回数に１を加え、ＲＡＭ９１４を用いて記憶する。完了判定部１１３は、ＣＰＵ９１１を用いて、あらかじめ定めた所定のサイクル数（以下「完了判定サイクル数」と呼ぶ。）にアンテナ８１０ａ，８１０ｂの数を乗じた数（以下「完了判定回数」と呼ぶ。）と、無応答回数とを比較する。無応答回数が完了判定回数より小さい場合、完了判定部１１３は、ＩＣタグ２２０の識別データの読み取りが完了していないと判定する。無応答回数が完了判定回数以上である場合、完了判定部１１３は、ＩＣタグ２２０の識別データの読み取りが完了したと判定する。
ＩＣタグ２２０の識別データの読み取りが完了したと完了判定部１１３が判定した場合、読取装置１００は、読取処理Ｓ５００を終了する。
ＩＣタグ２２０の識別データの読み取りが完了していないと完了判定部１１３が判定した場合、読取装置１００は、応答数推定工程Ｓ５５０へ進む。
【００６８】
応答数推定工程Ｓ５５０において、応答数推定部１５０は、ＣＰＵ９１１を用いて、要求送信工程Ｓ５４１で要求送信部１３１が送信した識別要求メッセージに対して応答したＩＣタグ２２０の数を推定して、推定応答数ｎ＊とする。
その後、読取装置１００は、アンテナ切替工程Ｓ５１２に戻り、アンテナを切り替えて、以上の処理を繰り返す。
【００６９】
なお、読取装置１００は、識別要求メッセージを１回送信するたびにアンテナ切替部１１２がアンテナを切り替えるのではなく、他の構成としてもよい。例えば、所定の回数あるいは所定の条件を満たすまでアンテナを切り替えず、同じアンテナを介して要求送信部１３１が識別要求メッセージの送信を繰り返す。その後、アンテナ切替部１１２がアンテナを切り替えて、別のアンテナを介して要求送信部１３１が識別要求メッセージを送信する。アンテナ切替部１１２がアンテナを切り替える条件としては、例えば、識別要求メッセージに対してＩＣタグ２２０が１つも応答しない状態が所定の回数連続した場合などがある。
アンテナ切替部１１２がアンテナを切り替えず同じアンテナを使用する場合、スロット数決定部１２０は、直前の識別要求メッセージに対する応答に基づいて応答数推定部１５０が推定した推定応答数ｎ＊に基づいて、スロット数を決定する。
また、アンテナ切替部１１２がアンテナを切り替えて他のアンテナを使用したのち一巡して元のアンテナに戻ってきた場合、スロット数決定部１２０は、前回同じアンテナを使用したときの最後の識別要求メッセージに対する応答ではなく、前回同じアンテナを使用したときの最初の識別要求メッセージに対する応答に基づいて応答数推定部１５０が推定した推定応答数ｎ＊に基づいて、スロット数を決定する。
【００７０】
次に、ＩＣタグ２２０の側の処理について説明する。
【００７１】
要求受信工程Ｓ５８１において、アンテナ切替工程Ｓ５１２で読取装置１００のアンテナ切替部１１２が選択したアンテナの通信範囲のなかに存在するＩＣタグ２２０の要求受信部２２１は、要求送信工程Ｓ５４１で読取装置１００の要求送信部１３１が送信した識別要求メッセージを受信する。
【００７２】
了解判定工程Ｓ５８２において、要求受信工程Ｓ５８１で識別要求メッセージを受信したＩＣタグ２２０のスロット選択部２２２は、了解記憶部２２５が記憶したデータに基づいて、読取装置１００がＩＣタグ２２０自身の識別データを既に正しく受信しているか否かを判定する。
読取装置１００がＩＣタグ２２０自身の識別データを既に正しく受信しているとスロット選択部２２２が判定した場合、ＩＣタグ２２０は、今回の処理を終了する。
読取装置１００がＩＣタグ２２０自身の識別データをまだ正しく受信していないとスロット選択部２２２が判定した場合、ＩＣタグ２２０は、スロット選択工程Ｓ５８３へ進む。
【００７３】
スロット選択工程Ｓ５８３において、了解判定工程Ｓ５８２で読取装置１００がＩＣタグ２２０自身の識別データをまだ正しく受信していないと判定したＩＣタグ２２０のスロット選択部２２２は、要求受信工程Ｓ５８１で要求受信部２２１が受信した識別要求メッセージに含まれるスロット数に基づいて、識別データを送信するスロットをランダムに選択する。例えば、スロット選択部２２２は、０以上、かつ、識別要求メッセージに含まれるスロット数より小さい乱数を生成し、識別データを送信するスロットのスロット番号とする。
【００７４】
スロット待ち工程Ｓ５８４において、スロット選択工程Ｓ５８３で識別データを送信するスロットを選択したＩＣタグ２２０は、選択したスロットに移行するまで待機する。例えば、選択したスロットのスロット番号が０より大きい場合、要求受信部２２１は、読取装置１００の要求送信部１３１がスロット更新メッセージを送信するのを待つ。要求送信部１３１がスロット更新メッセージを受信した場合、スロット選択部２２２は、スロット番号から１を差し引く。ＩＣタグ２２０は、スロット番号が０になるまでこれを繰り返す。
【００７５】
識別送信工程Ｓ５８５において、スロット選択工程Ｓ５８３で選択したスロットに移行したＩＣタグ２２０の識別送信部２２３は、読取装置１００に対して、ＩＣタグ２２０自身の識別データを送信する。
【００７６】
了解受信工程Ｓ５８６において、識別送信工程Ｓ５８５でＩＣタグ２２０自身の識別データを送信したＩＣタグ２２０の了解受信部２２４は、了解送信工程Ｓ５４４で読取装置１００の了解送信部１３３が送信した了解メッセージを受信する。了解受信部２２４は、受信した了解メッセージに含まれる識別データと、ＩＣタグ２２０自身の識別データとを比較して、その了解メッセージの宛先がＩＣタグ２２０自身であるか否かを判定する。
その了解メッセージの宛先がＩＣタグ２２０自身であると了解受信部２２４が判定した場合、ＩＣタグ２２０は、了解記憶工程Ｓ５８７へ進む。
その了解メッセージの宛先がＩＣタグ２２０自身でないと了解受信部２２４が判定した場合、ＩＣタグ２２０は、今回の処理を終了し、要求受信部２２１が次の識別要求メッセージを受信するのを待つ。
なお、読取装置１００が識別データを正しく受信できず、了解メッセージを送信しない場合もある。そのため、了解受信部２２４が了解メッセージを受信する前に要求受信部２２１が識別要求メッセージやスロット更新メッセージを受信した場合も同様に、ＩＣタグ２２０は、今回の識別要求メッセージに対する処理を終了する。
【００７７】
了解記憶工程Ｓ５８７において、ＩＣタグ２２０自身を宛先とする了解メッセージを受信したＩＣタグ２２０の了解記憶部２２５は、了解メッセージを受信したこと、すなわち、読取装置１００がＩＣタグ２２０自身の識別データを正しく受信したことを表わすデータを記憶する。
その後、ＩＣタグ２２０は、今回の識別要求メッセージに対する処理を終了する。
【００７８】
ＩＣタグ２２０は、要求受信部２２１が識別要求メッセージを受信するたびに、以上の処理を繰り返す。
【００７９】
図９は、この実施の形態におけるスロット数決定工程Ｓ５２０の流れの一例を示す詳細フローチャート図である。
スロット数決定工程Ｓ５２０は、サイクル判定工程Ｓ５２１、既定値設定工程Ｓ５２２、アンテナ判定工程Ｓ５２３、経過時間算出工程Ｓ５２４、増加数算出工程Ｓ５２５、予測値算出工程Ｓ５２６、最大残数算出工程Ｓ５２７、上限応答数算出工程Ｓ５２８、予測応答数算出工程Ｓ５２９、スロット数算出工程Ｓ５３０を有する。
【００８０】
サイクル判定工程Ｓ５２１において、スロット数決定部１２０は、ＣＰＵ９１１を用いて、現在のサイクルが、ＩＣタグ２２０の識別データの読み取りを開始した最初のサイクルであるか、２回目以降のサイクルであるかを判定する。例えば、予測値算出部１２３は、ＣＰＵ９１１を用いて、開始判定工程Ｓ５１１で開始判定部１１１がＩＣタグ２２０の識別データの読み取りを開始すると判定して以降、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が切り替えたアンテナを使用するのが初めてであるか、既に使用されたことがあるかを判定する。そのアンテナが初めて使用されると判定した場合、予測値算出部１２３は、現在のサイクルが最初のサイクルであると判定する。そのアンテナが既に使用されたことがあると判定した場合、予測値算出部１２３は、現在のサイクルが２回目以降のサイクルであると判定する。
現在のサイクルが最初のサイクルであるとスロット数決定部１２０が判定した場合、読取装置１００は、既定値設定工程Ｓ５２２へ進む。
現在のサイクルが２回目以降のサイクルであるとスロット数決定部１２０が判定した場合、読取装置１００は、経過時間算出工程Ｓ５２４へ進む。
【００８１】
既定値設定工程Ｓ５２２において、予測値算出部１２３は、ＣＰＵ９１１を用いて、あらかじめ定められた既定の数を、予測応答数ｎ−とする。
【００８２】
アンテナ判定工程Ｓ５２３において、スロット数決定部１２０は、ＣＰＵ９１１を用いて、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が切り替えたアンテナが、ＩＣタグ２２０の識別データの読み取りを開始した最初のサイクルのなかで最初に使用するアンテナであるか、最初のサイクルのなかで２番目以降のアンテナであるかを判定する。
現在のアンテナが最初のアンテナであるとスロット数決定部１２０が判定した場合、すなわち、ＩＣタグ２２０の識別データの読み取りを開始したが、まだ要求送信部１３１が識別要求メッセージを送信していない場合、読取装置１００は、スロット数算出工程Ｓ５３０へ進む。
現在のアンテナが２番目以降のアンテナであるとスロット数決定部１２０が判定した場合、すなわち、ＩＣタグ２２０の識別データの読み取りを開始したのち、別のアンテナを介して要求送信部１３１が識別要求メッセージ送信したことがある場合、読取装置１００は、最大残数算出工程Ｓ５２７へ進む。
【００８３】
経過時間算出工程Ｓ５２４において、経過時間算出部１２１は、ＣＰＵ９１１を用いて、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が切り替えたアンテナと同じアンテナを介して要求送信工程Ｓ５４１で要求送信部１３１が前回の識別要求メッセージを送信してから、要求送信部１３１が今回の識別要求メッセージを送信するまでの経過時間を算出する。
【００８４】
増加数算出工程Ｓ５２５において、増加数算出部１２２は、ＣＰＵ９１１を用いて、経過時間算出工程Ｓ５２４で経過時間算出部１２１が算出した経過時間と、応答数推定工程Ｓ５５０で応答数推定部１５０が推定した推定応答数ｎ＊とに基づいて、増加数Δｎを算出する。ここで使用する推定応答数ｎ＊は、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が切り替えたアンテナと同じアンテナを介して要求送信工程Ｓ５４１で要求送信部１３１が送信した前回の識別要求メッセージに対する応答に基づいて応答数推定部１５０が推定したものである。
【００８５】
予測値算出工程Ｓ５２６において、予測値算出部１２３は、ＣＰＵ９１１を用いて、増加数算出工程Ｓ５２５で増加数算出部１２２が算出した増加数Δｎと、応答数推定工程Ｓ５５０で応答数推定部１５０が推定した推定応答数ｎ＊と読取計数部１５３が数えた読取スロット数Ｒとに基づいて、推定応答数ｎ＊から読取スロット数Ｒを差し引いた差に増加数Δｎを加えた和を算出して、予測応答数ｎ−とする。ここで使用する推定応答数ｎ＊も、増加数算出工程Ｓ５２５と同じく、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が切り替えたアンテナと同じアンテナを介して要求送信工程Ｓ５４１で要求送信部１３１が送信した前回の識別要求メッセージに対する応答に基づいて応答数推定部１５０が推定したものである。
【００８６】
最大残数算出工程Ｓ５２７において、最大残数算出部１２４は、ＣＰＵ９１１を用いて、前回までに読取計数部１５３が数えた読取スロット数Ｒと、最大総数記憶部１７２が記憶した最大総数とに基づいて、最大総数から、読取スロット数Ｒの総和を差し引いた差を算出して、最大残数とする。
【００８７】
上限応答数算出工程Ｓ５２８において、上限応答数算出部１２５は、ＣＰＵ９１１を用いて、最大残数算出工程Ｓ５２７で最大残数算出部１２４が算出した最大残数と、最大応答数記憶部１７３が記憶した最大応答数とを比較して、小さいほうを上限応答数とする。
【００８８】
予測応答数算出工程Ｓ５２９において、予測応答数算出部１２６は、ＣＰＵ９１１を用いて、予測値算出工程Ｓ５２６（または既定値設定工程Ｓ５２２）で予測値算出部１２３が算出した予測応答数ｎ−と、上限応答数算出工程Ｓ５２８で上限応答数算出部１２５が算出した上限応答数とを比較する。上限応答数のほうが予測応答数ｎ−より小さい場合、予測応答数算出部１２６は、ＣＰＵ９１１を用いて、予測応答数ｎ−を修正し、上限応答数を予測応答数ｎ−とする。
【００８９】
スロット数算出工程Ｓ５３０において、スロット数算出部１２７は、ＣＰＵ９１１を用いて、予測応答数算出工程Ｓ５２９で予測応答数算出部１２６が（または既定値設定工程Ｓ５２２で予測値算出部１２３が）算出した予測応答数ｎ−に基づいて、今回のスロット数を算出する。
その後、読取装置１００は、スロット数決定工程Ｓ５２０を終了する。
【００９０】
図１０は、この実施の形態におけるスロット数決定工程Ｓ５２０の流れの別の例を示す詳細フローチャート図である。
スロット数決定工程Ｓ５２０は、図９で説明した工程に加えて、経過時間算出工程Ｓ５２４ｂ、増加数算出工程Ｓ５２５ｂ、予測値算出工程Ｓ５２６ｂを有する。
【００９１】
アンテナ判定工程Ｓ５２３において、現在のアンテナが２番目以降のアンテナであるとスロット数決定部１２０が判定した場合、読取装置１００は、最大残数算出工程Ｓ５２７ではなく、経過時間算出工程Ｓ５２４ｂへ進む。
【００９２】
経過時間算出工程Ｓ５２４ｂにおいて、経過時間算出部１２１は、ＣＰＵ９１１を用いて、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が切り替える前のアンテナを介して要求送信工程Ｓ５４１で要求送信部１３１が前回の識別要求メッセージを送信してから、要求送信部１３１が今回の識別要求メッセージを送信するまでの経過時間を算出する。
【００９３】
増加数算出工程Ｓ５２５ｂにおいて、増加数算出部１２２は、ＣＰＵ９１１を用いて、経過時間算出工程Ｓ５２４ｂで経過時間算出部１２１が算出した経過時間と、応答数推定工程Ｓ５５０で応答数推定部１５０が推定した推定応答数ｎ＊とに基づいて、増加数Δｎを算出する。ここで使用する推定応答数ｎ＊は、増加数算出工程Ｓ５２５と異なり、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が切り替える前のアンテナを介して要求送信工程Ｓ５４１で要求送信部１３１が送信した前回の識別要求メッセージに対する応答に基づいて応答数推定部１５０が推定したものである。
【００９４】
予測値算出工程Ｓ５２６ｂにおいて、予測値算出部１２３は、ＣＰＵ９１１を用いて、増加数算出工程Ｓ５２５ｂで増加数算出部１２２が算出した増加数Δｎと、応答数推定工程Ｓ５５０で応答数推定部１５０が推定した推定応答数ｎ＊とに基づいて、推定応答数ｎ＊に増加数Δｎを加えた和を算出して、予測応答数ｎ−とする。ここで使用する推定応答数ｎ＊は、増加数算出工程Ｓ５２５ｂと同じく、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が切り替える前のアンテナを介して要求送信工程Ｓ５４１で要求送信部１３１が送信した前回の識別要求メッセージに対する応答に基づいて応答数推定部１５０が推定したものである。
【００９５】
この例では、物品群２００の幅方向奥側と幅方向手前側とでは、通常、物品２１０を同じくらいの高さまで積み上げると考えられるので、ＩＣタグ２２０の数もほぼ同じであると仮定して、予測応答数ｎ−を算出している。なお、異なるアンテナを介して識別データを読み取ったＩＣタグ２２０は、そのアンテナの通信範囲の外にあると考えられるので、予測値算出工程Ｓ５２６ｂでは読取スロット数Ｒを差し引かない点が、予測値算出工程Ｓ５２６と異なっている。
【００９６】
このように、同じアンテナを介して前回受信した応答に基づく推定応答数ｎ＊だけでなく、異なるアンテナを介して受信した応答に基づく推定応答数ｎ＊も用いて、予測応答数ｎ−を算出し、スロット数を決定する構成としてもよい。
【００９７】
異なるアンテナを介して受信した応答に基づく推定応答数ｎ＊を用いて予測応答数ｎ−を算出する方式の別の例を挙げる。
例えば、複数のアンテナのうち、あるアンテナ（以下「アンテナ８１０ｃ」と呼ぶ。）は、物品群２００の下側１段目〜３段目の物品２１０（＊，＊，１）（＊，＊，２）（＊，＊，３）と主に通信する通信範囲を有すると仮定する。別のアンテナ（以下「アンテナ８１０ｄ」と呼ぶ。）は、物品群２００の上側４段目〜６段目の物品２１０（＊，＊，４）（＊，＊，５）（＊，＊，６）と主に通信する通信範囲を有すると仮定する。
物品群２００における積み上げ段数が２段以下である場合、アンテナ８１０ｃを介した通信に応答するＩＣタグ２２０の数は、積み上げ段数が３段以上である場合よりも少ない。物品群２００における積み上げ段数が２段以下である場合、アンテナ８１０ｄを介した通信に応答するＩＣタグ２２０は、ほとんどないと予測できる。
例えば、アンテナ８１０ｃを介した通信に対する応答に基づいて応答数推定部１５０が推定した推定応答数ｎ＊を所定の閾値と比較し、推定応答数ｎ＊が閾値より小さい場合、スロット数決定部１２０は、アンテナ８１０ｄを介した通信に応答するＩＣタグ２２０の予測応答数ｎ−を０あるいは通常よりも小さい値として、スロット数を決定する。
【００９８】
このように、アンテナの通信範囲の位置関係に基づいて、あるアンテナを介した通信に対して応答するＩＣタグ２２０の数を、他のアンテナを介した通信に対する応答に基づいて予測する予測方式を変えることにより、より精度の高い予測をすることができる。
【００９９】
次に、この実施の形態における読取装置１００の数学的背景を説明する。
【０１００】
スロット数がＳ、応答数がｎの場合において、ｎ個のＩＣタグ２２０それぞれが、Ｓ個のスロットの各スロットを使用して識別データを送信する確率が等しく１／Ｓである場合、空きスロット数がＥとなる確率Ｐ１Ｓ，ｎ（Ｅ）は、次の式で与えられる。
【数１１】
2011070298.tif 000003
分母の「Ｓｎ」は、スロット数Ｓのｎ乗を表わす。これは、ｎ個のＩＣタグ２２０それぞれが、Ｓ個のスロットのなかから、１つのスロットを選択する場合の数を意味する。
分子の「ＳＣＥ」は、Ｓ個のスロットのなかからＥ個の空きスロットを選択する組み合わせの数を表わす。
分子の「Ｎ１（Ｓ−Ｅ，ｎ）」は、残る（Ｓ−Ｅ）個のスロットのなかから重複を許してｎ個のＩＣタグ２２０が使用するスロットを順に選択し、（Ｓ−Ｅ）個のスロットすべてが少なくとも１回は選択される順列の数を表わす。関数Ｎ１（ｒ，ｎ）は、次の漸化式で与えられる。
【数１２】
2011070298.tif 000004
【０１０１】
ここから、スロット数がＳ、応答数がｎの場合における空きスロット数の期待値Ｅ＊を求めると、以下の式を得る。
【数１３】
2011070298.tif 000005
以下、空きスロット数の期待値Ｅ＊を応答数ｎの関数と考えて、
【数１４】
2011070298.tif 000006
と表わす。
【０１０２】
図１１は、この実施の形態における関数ｆＳの一例を示すグラフ図である。
横軸は、応答数ｎを表わす。縦軸は、空きスロット数の期待値Ｅ＊を表わす。曲線７２１〜７２６は、スロット数Ｓがそれぞれ４、８、１６、３２、６４、１２８の場合を表わす。
【０１０３】
実際には、応答数ｎが未知数であり、スロット数Ｓと空きスロット数Ｅとが既知である。そこで、関数ｆＳの逆関数ｆＳ−１を用いて、推定応答数ｎ＊を求める。
【数１５】
2011070298.tif 000007
【０１０４】
図示したように、関数ｆＳは単調減少関数なので、逆関数ｆＳ−１の値は一意に定まる。
図６に示した推定応答数テーブルは、逆関数ｆＳ−１の値を前もって計算したものである。
【０１０５】
スロット数がＳ、応答数がｎの場合において、ｎ個のＩＣタグ２２０それぞれが、Ｓ個のスロットの各スロットを使用して識別データを送信する確率が等しく１／Ｓである場合、空きスロット数がＥ、読取スロット数がＲとなる確率Ｐ２Ｓ，ｎ（Ｅ，Ｒ）は、次の式で与えられる。
【数１６】
2011070298.tif 000008
分子の「ＳＣＥ」は、Ｓ個のスロットのなかからＥ個の空きスロットを選択する組み合わせの数を表わす。
分子の「Ｓ−ＥＣＲ」は、残る（Ｓ−Ｅ）個のスロットのなかからＲ個の読取スロットを選択する組み合わせの数を表わす。
分子の「ｎＰＲ」は、ｎ個のＩＣタグ２２０のなかから重複を許さずＲ個の読取スロットそれぞれを使用するＩＣタグ２２０を選択する順列の数を表わす。
分子の「Ｎ２（Ｓ−（Ｅ＋Ｒ），ｎ−Ｒ）」は、残る（Ｓ−（Ｅ＋Ｒ））個の競合スロットのなかから重複を許して残る（ｎ−Ｒ）個のＩＣタグ２２０が使用するスロットを選択し、（Ｓ−（Ｅ＋Ｒ））個の競合スロットすべてが少なくとも２回は選択される順列の数を表わす。関数Ｎ２（ｃ，ｍ）は、次の漸化式で与えられる。
【数１７】
2011070298.tif 000009
【０１０６】
ここから、スロット数がＳ、応答数がｎの場合における読取スロット数の期待値Ｒ＊を求めると、以下の式を得る。
【数１８】
2011070298.tif 000010
【０１０７】
図１２は、この実施の形態におけるスロット数Ｓ及び応答数ｎと、読取スロット数の期待値Ｒ＊との関係の一例を示すグラフ図である。
横軸は、応答数ｎを表わす。縦軸は、読取スロット数の期待値Ｒ＊を表わす。曲線７３１〜７３５は、スロット数Ｓがそれぞれ４、８、１６、３２、６４の場合を表わす。
【０１０８】
このように、スロット数Ｓが大きければ大きいほど、読取スロット数の期待値Ｒ＊は大きくなる。読取スロット数Ｒは、識別データを読み取ることができるＩＣタグ２２０の数であるから、読取スロット数の期待値Ｒ＊が大きければ、一回の識別要求メッセージの送信で、多くのＩＣタグ２２０の識別データを読み取れることを意味する。
また、スロット数Ｓを固定して考えると、応答数ｎが大きすぎても小さすぎても読取スロット数の期待値Ｒ＊は小さくなり、応答数ｎがちょうどスロット数Ｓに一致する場合に、読取スロット数の期待値Ｒ＊が最大になる。
【０１０９】
時分割多重化方式によるスロットを用いる場合、一回の識別要求メッセージに対する応答を受信するのにかかる時間は、１スロット当たりの時間のＳ倍である。したがって、スロット数Ｓが二倍になれば、一回の識別要求メッセージに対する応答を受信するのにかかる時間も二倍になる。
このため、単位時間当たりで、識別データを読み取ることができるＩＣタグ２２０の数が最大になるスロット数Ｓを求めるには、読取スロット数の期待値Ｒ＊をスロット数Ｓで割った商を比較すればよい。
【０１１０】
図１３は、この実施の形態におけるスロット数Ｓ及び応答数ｎと、読取スロット数の期待値Ｒ＊をスロット数Ｓで割った商との関係の一例を示すグラフ図である。
横軸は、応答数ｎを表わす。縦軸は、読取スロット数の期待値Ｒ＊をスロット数Ｓで割った商を表わす。曲線７４１〜７４５は、スロット数Ｓがそれぞれ４、８、１６、３２、６４の場合を表わす。
【０１１１】
これによれば、応答数ｎがスロット数Ｓと一致する場合に読取スロット数の期待値Ｒ＊をスロット数Ｓで割った商が最大となる点は、図１２と同様であるが、応答数ｎによって最適なスロット数Ｓが異なることがわかる。
例えば、スロット数Ｓを４・８・１６・３２・６４のなかから選択する場合であれば、単位時間当たりで識別データを読み取れるＩＣタグ２２０の数を最大にする選択方式は、以下のとおりである。すなわち、応答数ｎが５以下のときは、スロット数Ｓを４にする。応答数ｎが６以上１１以下のときは、スロット数Ｓを８にする。応答数ｎが１２以上２２以下のときは、スロット数Ｓを１６にする。応答数ｎが２３以上４４以下のときは、スロット数Ｓを３２にする。応答数ｎが４５以上のときは、スロット数Ｓを６４にする。
したがって、スロット数決定部１２０は、このようにして求めたスロット数に基づいて、予測応答数ｎ−からスロット数Ｓを決定する構成としてもよい。
【０１１２】
これに対し、図７に示したスロット数テーブルでは、上述したスロット数よりも少し大きめのスロット数となるよう、スロット数を選択する閾値を設定している。これは、実際の応答数ｎが予測応答数ｎ−と一致しないことを考慮して、余裕を見たスロット数Ｓを選択するためである。
スロット数Ｓが大き過ぎると、時間がかかるので多少効率は悪くなるかもしれないが、図１２に示したように、少なくとも、スロット数Ｓが小さ過ぎる場合よりも多くのＩＣタグ２２０から識別データを読み取ることができる。また、応答数ｎに対してスロット数Ｓが大きい場合のほうが、スロット数Ｓが小さい場合よりも、空きスロット数Ｅや読取スロット数Ｒが大きくなるので、応答数ｎの推定精度が高くなる。したがって、次回だけでなく、その次の回の効率も合わせて考えると、スロット数Ｓとして理論値よりも少し大きめの値を採用するほうが望ましい。
【０１１３】
なお、応答数ｎから空きスロット数の期待値Ｅ＊を求める関数ｆＳとして、上述した式とは異なる式を用いる方式も考えられるので、その点に言及する。
スロット数がＳ、応答数がｎの場合において、あるスロットが空きスロットである確率Ｐ３Ｓ，ｎは、次の式で与えられる。
【数１９】
2011070298.tif 000011
スロット数がＳなので、これをＳ倍すれば、空きスロット数の期待値Ｅ＊が得られる。
【数２０】
2011070298.tif 000012
この式を関数ｆＳとして、逆関数ｆＳ−１を求めると、以下の式を得る。
【数２１】
2011070298.tif 000013
【０１１４】
ただし、この方式における空きスロット数の期待値Ｅ＊は、近似値である。なぜなら、あるスロットが空きスロットである確率と、別のスロットが空きスロットである確率とは、独立ではないからである。例えば、応答数ｎが１以上の場合において、Ｓ個のスロットのうち（Ｓ−１）個のスロットが空きスロットであれば、残る１つのスロットは、絶対に空きスロットではない。また、応答数ｎがスロット数Ｓより小さい場合において、Ｓ個のスロットのうちｎ個のスロットが空きスロットでなければ、残る（Ｓ−ｎ）個のスロットは、必ず空きスロットである。したがって、空きスロット数の期待値Ｅ＊は、あるスロットが空きスロットである確率Ｐ２Ｓ，ｎのＳ倍ではない。
したがって、空きスロット数の期待値Ｅ＊を求める式として数１３に示した式を用いる方式のほうが、より正確に応答数を推定することができ、望ましい。
【０１１５】
同様に、あるスロットが読取スロットである確率Ｐ４Ｓ，ｎを用いると、読取スロット数の期待値Ｒ＊を求める近似式は、以下のようになる。
【数２２】
2011070298.tif 000014
【０１１６】
したがって、スロット数決定部１２０は、この式を用いて算出した読取スロット数の期待値Ｒ＊に基づいて、スロット数Ｓを決定する構成としてもよい。
【０１１７】
この実施の形態における読取装置１００は、複数の応答装置（ＩＣタグ２２０）の各応答装置が複数のスロットのなかから選択したスロットにより送信した応答装置自身を識別する識別データを受信して、上記複数の応答装置をそれぞれ識別する複数の識別データを読み取る。
上記読取装置１００は、上記複数の応答装置に対してデータを送信する送信装置（無線通信装置９１６）と、上記複数の応答装置からデータを受信する受信装置（無線通信装置９１６）と、データを処理する処理装置（ＣＰＵ９１１）と、応答受信部１３２と、スロット判定部１４０と、応答数推定部１５０と、スロット数決定部１２０と、スロット数送信部（要求送信部１３１）とを有する。
上記応答受信部１３２は、上記受信装置を用いて、上記複数のスロットの各スロットにおいて、上記応答装置が送信した識別データを受信する。
上記スロット判定部１４０は、上記応答受信部１３２が識別データの受信に成功したか否かに基づいて、上記処理装置を用いて、上記複数のスロットの各スロットについて、識別データを送信した応答装置が存在しない空きスロットであるか、１つの応答装置が識別データを送信した読取スロットであるか、２以上の応答装置が識別データを送信した競合スロットであるかを判定する。
上記応答数推定部１５０は、上記スロット判定部１４０が判定した判定結果に基づいて、上記処理装置を用いて、識別データを送信した応答装置の数を推定して推定応答数ｎ＊とする。
上記スロット数決定部１２０は、上記応答数推定部１５０が推定した推定応答数ｎ＊に基づいて、上記処理装置を用いて、上記応答装置が選択し得るスロットの数を決定してスロット数とする。
上記スロット数送信部は、上記送信装置を用いて、上記スロット数決定部１２０が決定したスロット数を上記応答装置に対して送信する。
【０１１８】
この実施の形態における読取装置１００によれば、スロット判定部１４０が判定した判定結果に基づいて応答数推定部１５０が推定した推定応答数ｎ＊に基づいて、スロット数決定部１２０がスロット数を決定するので、スロット数を、応答装置の数に適した値にすることができ、制限時間内にすべての応答装置の識別データを読み取ることができる。
【０１１９】
この実施の形態における読取装置１００は、更に、複数のアンテナ８１０ａ，８１０ｂのなかから使用するアンテナを選択するアンテナ選択装置９１７と、アンテナ切替部１１２とを有する。
上記送信装置（無線通信装置９１６）は、上記アンテナ選択装置９１７が選択したアンテナを介して、上記複数の応答装置に対してデータを送信する。
上記受信装置（無線通信装置９１６）は、上記アンテナ選択装置９１７が選択したアンテナを介して、上記複数の応答装置からデータを受信する。
上記アンテナ切替部１１２は、上記アンテナ選択装置９１７を用いて、使用するアンテナを切り替える。
上記スロット数決定部１２０は、上記アンテナ切替部１１２が切り替えたアンテナを介して上記応答受信部１３２が前回受信した識別データに基づいて上記応答数推定部１５０が推定した推定応答数ｎ＊に基づいて、上記処理装置を用いて、スロット数を決定する。
【０１２０】
この実施の形態における読取装置１００によれば、アンテナを切り替えながら応答装置の識別データを読み取り、同じアンテナを前回使用したときの推定応答数ｎ＊に基づいてスロット数決定部１２０がスロット数を決定するので、スロット数を、それぞれのアンテナの通信範囲のなかにある応答装置の数に適した値にすることができる。
【０１２１】
この実施の形態における読取装置１００において、上記スロット数決定部１２０は、上記アンテナ切替部１１２が切り替える前のアンテナを介して上記応答受信部１３２が受信した識別データに基づいて上記応答数推定部１５０が推定した推定応答数ｎ＊に基づいて、上記処理装置を用いて、スロット数を決定する。
【０１２２】
この実施の形態における読取装置１００によれば、アンテナを切り替えながら応答装置の識別データを読み取り、他のアンテナを使用したときの推定応答数ｎ＊に基づいてスロット数決定部１２０がスロット数を決定するので、他のアンテナの通信範囲のなかにある応答装置の数から、あるアンテナの通信範囲のなかにある応答装置の数を予測して、スロット数をそれに適した値にすることができる。
【０１２３】
この実施の形態における読取装置１００は、データを送信する送信装置（無線通信装置９１６）とデータを受信する受信装置（無線通信装置９１６）とデータを処理する処理装置（ＣＰＵ９１１）とを有するコンピュータが、コンピュータプログラムを実行することにより実現することができる。
この実施の形態における読取装置１００としてコンピュータを機能させるコンピュータプログラムによれば、スロット判定部１４０が判定した判定結果に基づいて応答数推定部１５０が推定した推定応答数ｎ＊に基づいて、スロット数決定部１２０がスロット数を決定するので、スロット数を、応答装置の数に適した値にすることができ、制限時間内にすべての応答装置の識別データを読み取る読取装置１００を実現することができる。
【０１２４】
この実施の形態における読取装置１００が、複数の応答装置（ＩＣタグ２２０）の各応答装置が複数のスロットのなかから選択したスロットを用いて送信する応答装置自身を識別する識別データを受信して、上記複数の応答装置をそれぞれ識別する複数の識別データを読み取る読取方法は、以下の工程を有する。
上記受信装置（無線通信装置９１６）が、上記複数のスロットの各スロットにおいて、上記応答装置が送信した識別データを受信する。
上記受信装置が識別データの受信に成功したか否かに基づいて、上記処理装置（ＣＰＵ９１１）が、上記複数のスロットの各スロットについて、識別データを送信した応答装置が存在しない空きスロットであるか、１つの応答装置が識別データを送信した読取スロットであるか、２以上の応答装置が識別データを送信した競合スロットであるかを判定する。
上記処理装置が判定した判定結果に基づいて、上記処理装置が、識別データを送信した応答装置の数を推定して推定応答数とする。
上記処理装置が推定した推定応答数に基づいて、上記処理装置が、上記応答装置が選択し得るスロットの数を決定してスロット数とする。
上記送信装置（無線通信装置９１６）が、上記処理装置が決定したスロット数を上記応答装置に対して送信する。
【０１２５】
この実施の形態における読取方法によれば、処理装置が推定した推定応答数ｎ＊に基づいて、スロット数を決定するので、スロット数を、応答装置の数に適した値にすることができ、制限時間内にすべての応答装置の識別データを読み取ることができる。
【０１２６】
以上説明したＲＦＩＤリーダライタ装置（読取装置１００）において、アンテナ接続部（アンテナ選択装置９１７）は、複数台のアンテナ８１０ａ，８１０ｂと接続する。読取処理実行部（要求送信部１３１、応答受信部１３２）は、タグＩＤの全数読み取り処理（以下「ＩｎｖｅｎｔｏｒｙＴａｇｓ」と呼ぶ。）を複数回連続実行する。アンテナ変更部（アンテナ切替部１１２）は、ＩｎｖｅｎｔｏｒｙＴａｇｓのたびにタグと通信するアンテナを変更する。１回のＩｎｖｅｎｔｏｒｙＴａｇｓは、１回以上のラウンドから構成される。スロット数決定部１２０は、各ラウンドごとに、タグ数を予測してスロット数を決定する。
【０１２７】
タグ数予測部（応答数推定部１５０）は、前ラウンドのタグ数を、空スロット数と総スロット数より推定（予測）する。
【０１２８】
タグ数予測部（予測値算出部１２３）は、前ラウンドのタグ数見積もりに、タグ数増加を見込んで、次ラウンドのタグ数を予測する。タグ数予測部（増加数算出部１２２）は、前ラウンドの総スロット数と読めたタグ数よりタグ数増加を算出する。
【０１２９】
タグ数予測部（予測応答数算出部１２６）は、１回に１個のアンテナから読み取り可能なタグ数を最大値として、予測タグ数を制限する。運用パラメータ保持部（最大応答数記憶部１７３）は、１個のアンテナからの読み取り可能なタグ数（最大応答数）を、運用パラメータとして予め設定しておく。
【０１３０】
タグ数予測部（スロット数決定部１２０）は、読むべきタグの最大数を指定してタグ数を予測する。運用パラメータ保持部（最大総数記憶部１７２）は、読むべきタグの最大数（最大総数）を、運用パラメータとして予め設定しておく。最大残数算出部１２４は、読むべきタグの最大数とすでに読んだタグ数から、読むべきタグの残数を求める。上限応答数算出部１２５は、読むべきタグの残数をアンテナ数により除算して、その値を、タグ数予測値の最大値として制限する。
【０１３１】
以上説明したＲＦＩＤシステム（読取システム８００）において、ホストコンピュータ８５０は、リーダ装置（読取装置１００）にタグ（ＩＣタグ２２０）の読み出し命令を出す。例えばネットワークを介して、ホストコンピュータ８５０とリーダ装置とは接続される。アンテナ８１０ａは、例えばアンテナケーブルを介して、リーダ装置と接続される。アンテナ８１０ｂは、アンテナ８１０ａと異なるアンテナケーブルを介して、リーダ装置と接続される。アンテナ８１０ａまたはアンテナ８１０ｂとタグ集団（物品群２００に含まれる複数のＩＣタグ２２０）とは、電波で通信（リーダ装置はコマンドを一括で送り、それぞれのタグがレスポンスを返す）する。ＲＦＩＤリーダ装置は、例えば、ネットワークインタフェース部（ネットワーク通信装置９１５）、通信制御部（スロット判定部１４０）、無線通信部（無線通信装置９１６）、アンテナ切替え部（アンテナ選択装置９１７）、タグ数予測部（応答数推定部１５０・スロット数決定部１２０）、スロット数算出部（スロット数決定部１２０）、運用パラメータ保持部（増加率記憶部１７１、最大総数記憶部１７２、最大応答数記憶部１７３）を備える。
タグ集団は、例えば、台車の上にタグが貼付された荷物が多数置かれているものである。１つのタグ集団には、例えば２０行×６列＝１２０個のタグが存在する。タグ集団は、例えば台車に乗せられ、２つのアンテナ８１０ａとアンテナ８１０ｂとの間を通過する。
【０１３２】
通信制御部は、空スロット数（Ｅ）、総スロット数（Ｓ）、読み取りタグ数（Ｒ）の情報を、タグ数予測部に送信する。運用パラメータ保持部は、アンテナ数ＮＡ、読み取り可能タグ数ＴＭａｘ（最大応答数）、アンテナ毎の初期タグ数ＴＦｉｒｓｔ（Ａ）、タグ数増加パラメータρＳ，ρＲを、タグ数予測部に送信する。タグ数予測部は、予測タグ数ＰＲｏｕｎｄを算出して、スロット数算出部に送信する。
タグ数予測部は、予測回路（推定値算出部１５６、増加数算出部１２２、予測値算出部１２３、予測応答数算出部１２６）を有し、タグの残数情報ＴＲｅｍａｉｎ（最大残数）、アンテナ毎の前回のＩｎｖｅｎｔｏｒｙＴａｇｓの第１ラウンドのタグ数情報ＴＰｒｅｖｉｏｕｓＦｉｒｓｔＲｏｕｎｄ（推定応答数ｎ＊）、タグ数関数テーブル（推定応答数テーブル）を記憶している。最大残数算出部１２４は、総タグ数の上限ＴＴｏｔａｌＭａｘ（最大総数）から、それまで読まれたすべてのタグ数を減算して、タグの残数情報ＴＲｅｍａｉｎを算出する。
第１サイクルの第１ラウンドのタグ数予測において、予測回路は、初期タグ数ＴＦｉｒｓｔ（Ａ）と、読み取り可能タグ数ＴＭａｘと、タグの残数情報ＴＲｅｍａｉｎをアンテナ数ＮＡで割った商とのうちの最小値を、予測タグ数とする。
第２サイクル以降の第１ラウンドのタグ数予測において、予測回路は、前回のＩｎｖｅｎｔｏｒｙＴａｇｓの第１ラウンドのタグ数情報ＴＰｒｅｖｉｏｕｓＦｉｒｓｔＲｏｕｎｄと、読み取り可能タグ数ＴＭａｘと、タグの残数情報ＴＲｅｍａｉｎをアンテナ数ＮＡで割った商とのうちの最小値を、予測タグ数とする。
第２ラウンド以降のタグ数予測において、予測回路は、前ラウンドの総スロット数Ｓと、前ラウンドの空きスロット数Ｅとに基づいて、タグ数関数テーブルを用いて、前ラウンドのタグ数を推定する。予測回路は、前ラウンドの総スロット数Ｓに所定の係数ρＳを乗じた積と、前ラウンドの読取スロット数Ｒに所定の係数ρＲを乗じた積との和を算出して、タグ数増加ＴＩＮＣとする。予測回路は、前ラウンドのタグ数から前ラウンドでの読み取りタグ数Ｒを差し引いた差にタグ数増加ＴＩＮＣを加えた和を算出する。予測回路は、算出した和と、読み取り可能タグ数ＴＭａｘと、タグの残数情報ＴＲｅｍａｉｎをアンテナ数ＮＡで割った商とのうちの最小値を、予測タグ数とする。
【０１３３】
例えば、台車の上に、タグが貼付された物品が、高さ２０段で６列（２行×３列）の状態で積載されている。台車の前方に２列、中ほどに２列、後方に２列が配置されている。台車に積まれたタグ集団は、一団となって移動し、アンテナ８１０ａとアンテナ８１０ｂとの間を通過する。タグ集団のうち、奥側の３列は、アンテナ８１０ａに近い面に配置され、手前側の３列は、アンテナ８１０ｂに近い面に配置されている。基本的には、各タグは、各アンテナに近いところのものが読まれやすいが、電波の反射やフェージングの影響により、遠いタグが読まれたり、近くのタグが読まれなかったりすることもある。
【０１３４】
ホストコンピュータ８５０が、ネットワークを経由して、ＩＤ読み取り命令を表わす信号をＲＦＩＤリーダ装置に送信すると、ＲＦＩＤリーダ装置では、ネットワークインタフェース部がネットワークにより伝達された信号を解釈してＩＤ読み取り命令とし、通信制御部にＩＤ読み取り命令を伝える。通信制御部は、ＩＤ読み取り命令を解釈して処理を実行する。通信制御部は、ＩＤ読み取り命令にしたがい、ＩＤを読むための通信コマンド列（識別要求メッセージ）を作成し、無線通信部に伝える。通信コマンド列は、例えば、セレクト処理の１個のコマンドとラウンド処理のコマンド列から構成される。ラウンド処理のコマンド列には、そのラウンドのスロット数が含まれる。そのランドのスロット数は、タグ数予測部とスロット数算出部とが決定する。スロット数は、アンテナの数やアンテナの性能などの運用条件にも依存するため、それらの条件を運用パラメータ保持部があらかじめ保持しておく。
コマンド列を受けた無線通信部は、通信コマンドを無線に乗せる信号に変換する。アンテナ切替え部は、この信号を、複数のアンテナケーブルのいずれかに接続する。アンテナケーブルは、それぞれ、１つのアンテナに接続されている。すなわち、切り替え部を切り替えることにより、複数のアンテナ８１０ａ，８１０ｂのうちの一つを使用して、タグ集団と通信をする。通信はＩｎｖｅｎｔｏｒｙＴａｇｓと呼ばれるリーダとタグ集団間のやりとりを複数回発行することで行われる。
１回のラウンド処理を終了するたびに、無線通信部が読み出したタグの情報を通信制御部に返す。無線通信部は、読めたタグ数Ｒ、総スロット数Ｓ、空スロット数Ｅをタグ数予測部に送信する。これらの情報は、次のタグ数予測のデータとなる。
タグ集団のすべてのタグを読み切ったとき、通信制御部は、そのすべてのＩＤを格納する。ネットワークインタフェース部２１は、これらのＩＤ番号を、ネットワークを伝搬する信号に変換し、ネットワークを経由してホストコンピュータ８５０に伝える。
【０１３５】
タグは、数秒間（例えば５秒以上）データを保持する機能を持つ。一度ＩｎｖｅｎｔｏｒｙＴａｇｓで読まれたタグは、アンテナ切り替えなどでアンテナからのエネルギーの供給が途絶えたとしても、数秒間はそのタグがすでに読まれたという状態を保持するので、それより後のＩｎｖｅｎｔｏｒｙＴａｇｓで読まれることはない。１回のＩｎｖｅｎｔｏｒｙＴａｇｓを実行するには、それぞれのラウンドごとのスロット数を決定しなければならない。スロット数は、このＩｎｖｅｎｔｏｒｙＴａｇｓでいくつのタグを読もうとしているのかを予測する「予測タグ数」より求める。
【０１３６】
予測タグ数の決定において、運用パラメータ保持部は、事前に、アンテナ数ＮＡ、読み取り可能な最大タグ数ＴＭａｘ、読み取らなければならない総タグ数の上限ＴＴｏｔａｌＭａｘ、アンテナ毎の初期タグ数ＴＦｉｒｓｔ（Ａ）、タグ数増加パラメータ（ρＳ，ρＲ）などの運用パラメータとして、システム設計時などに決定した値を保持しておく。
アンテナ数ＮＡは、ＲＦＩＤリーダ装置に接続されたアンテナの数であり、例えば２である。
読み取らなければならない総タグ数の上限ＴＴｏｔａｌＭａｘは、１台の台車に積む可能性のある最大数である。例えば、１台の台車に１〜２００個のタグが積まれる可能性がある場合、ＴＴｏｔａｌＭａｘは２００に設定する。
読み取り可能最大タグ数ＴＭａｘは、対象となるシステムにおいて、一つのアンテナで１回のラウンドで一括読み取りすることになりうる最大数を表わす。例えば、１台の台車につき全部で２００個のタグを読むとしても、アンテナの電波送信範囲やタグの密度から考えて、一度に通信できるタグの数は、それよりも少なく、例えばたかだか４０個程度である。その場合、ＴＭａｘは４０に設定する。
アンテナ毎の初期タグ数ＴＦｉｒｓｔ（Ａ）は、第１サイクルにおける各アンテナのＩｎｖｅｎｔｏｒｙＴａｇｓの第１ラウンドで読まれると想定されるタグ数を表わす。なお、Ａはアンテナ番号を表わす。最初から多数のタグを読む場合、ＴＦｉｒｓｔ（Ａ）は大きい値に設定し、最初は少数のタグしか読まない場合、ＴＦｉｒｓｔ（Ａ）は小さい値に設定する。
タグ数増加パラメータ（ρＳ，ρＲ）は、総スロット数と読まれたタグ数から次ラウンドに新たに通信可能になるタグを予測するためのパラメータである。タグ集団は移動しているので、１回のラウンド処理をしていると、その時間内に新たなタグがアンテナの通信範囲に入り、リーダ装置と通信可能となる。ラウンド処理にかかる時間は、総スロット数Ｓと読まれたタグ数Ｒに依存し、例えば４０ｋｂｐｓ程度の通信性能であれば「ラウンド処理にかかる時間＝Ｓ×１ミリ秒＋Ｒ×７ミリ秒」である。
新たに通信可能となるタグ数がラウンド処理にかかる時間に比例すると看做すと、新たに通信可能となるタグ数ＴＩＮＣは、「ＴＩＮＣ＝Ｓ×ρＳ＋Ｒ×ρＲ」で求めることができる。ここで、ρＳ、ρＲは運用で決まるパラメータであり、例えば、アンテナ数が２ならρＳ＝０．０５、ρＲ＝０．３５、アンテナ数が４ならρＳ＝０．０３、ρＲ＝０．１７程度の数値になる。
【０１３７】
１回のＩｎｖｅｎｔｏｒｙＴａｇｓ処理の流れは、例えば、以下のとおりである。
この処理は、例えば、ＥＰＣ  Ｇｌｏｂａｌが既定するＣ１Ｇ２（Ｃｌａｓｓ１  Ｇｅｎｅｒａｔｉｏｎ２）と呼ばれるリーダ装置とタグ集団との間のコマンドを使って実現する。
一例として、アンテナ数ＮＡ＝２、第３サイクルのＩｎｖｅｎｔｏｒｙＴａｇｓについて説明する。なお、前回のサイクルのＩｎｖｅｎｔｏｒｙＴａｇｓの第１ラウンドで読めたタグ数ＴＰｒｅｖｉｏｕｓＦｉｒｓｔＲｏｕｎｄ（Ａ）＝２０、実在するタグ＝３４、読み取り可能最大タグ数ＴＭａｘ＝４０、タグ数の残数ＴＲｅｍａｉｎ＝１００、ρＳ＝０．０５、ρＲ＝０．３５とする。
【０１３８】
まず、タグ数予測部は、第１ラウンドの予測タグ数を算出する。タグ数予測部は、前回のサイクルの第１ラウンドで読めたタグ数ＴＰｒｅｖｉｏｕｓＦｉｒｓｔＲｏｕｎｄ（Ａ）＝２０、ＴＭａｘ＝４０、ＴＲｅｍａｉｎ／ＮＡ＝５０のうちの最小値２０を、予測タグ数とする。
スロット数算出部は、予測タグ数２０より、第１ラウンドのスロット数（例えば３２）を算出する。
【０１３９】
リーダ装置は、タグ集団にＳｅｌｅｃｔコマンドを送信し、タグ集団のうち、今回の処理に無関係のタグが入っていたら、それを排除する。今回の３５個のタグにはそのようなものはないものとし、３５個すべてのタグがＩＤの問い合わせ対象とする。
リーダ装置は、スロット番号Ｋを１に、読んだタグ数Ｒを０に、衝突スロット数Ｃを０に初期化する。
リーダ装置は、Ｑｕｅｒｙコマンドを送信する。ここから、最初のスロットが始まる。
【０１４０】
リーダ装置は、タグからの応答（ＨａｎｄｌｅＮｕｍｂｅｒ）があるか否かを判定する。
タグからの応答があった場合、リーダ装置は、ＡＣＫコマンドを送信し、タグはそれにＩＤを応答する。リーダ装置は、読まれたタグ数Ｒをカウントアップして１を加える。
タグからＨａｎｄｌｅＮｕｍｂｅｒが返ってこないときは、ふたつのケースがある。ひとつは、どのタグも応答しなかったケースである。もう一つが、複数のタグが応答し、衝突を起こしたケースである。後者の場合、衝突スロットカウンタＣをインクリメントして１を加える。
【０１４１】
リーダ装置は、ＱｕｅｒｙＲｅｐｅａｔコマンドを送信し、次のスロットに入る。
リーダ装置は、スロット番号Ｋと、このラウンドで実行すべきスロット数とを比較する。
スロット番号Ｋのほうが小さい場合、リーダ装置は、スロット番号Ｋをインクリメントして１を加え、タグからの応答待ちに戻る。
スロット番号Ｋがスロット数に達した場合、リーダ装置は、このラウンドを終了する。
【０１４２】
ラウンド終了後、リーダ装置は、今回のラウンドのタグ数Ｒと前回のラウンドのタグ数ＲＰｒｅｖｉｏｕｓＲｏｕｎｄが両方とも０であるか否かを判定する。
両方とも０である場合、リーダ装置は、１回のＩｎｖｅｎｔｏｒｙＴａｇｓの処理を終了する。
いずれかが０でない場合、リーダ装置は、今回のラウンドのタグ数Ｒを、ＲＰｒｅｖｉｏｕｓＲｏｕｎｄとして保存する。リーダ装置は、次のラウンドのスロット数を算出する。
【０１４３】
次のラウンドのスロット数算出において、リーダ装置は、次のラウンドの予測タグ数を算出する。例えば、このラウンドで読めたタグ数Ｒ＝８、衝突スロット数Ｃ＝６であったとすると、リーダ装置は、空きスロット数Ｅ＝Ｓ−Ｒ−Ｃ＝１８を算出し、タグ数関数テーブルを用いて、前ラウンドのタグ数（例えば１８）を算出する。リーダ装置は、タグ数増加ＴＩＮＣ＝Ｓ×ρＳ＋Ｒ×ρＲ＝３２×０．０５＋８×０．３５＝４．４を算出する。リーダ装置は、１８−８＋４．４＝１４．４と、ＴＭａｘ＝２０と、ＴＲｅｍａｉｎ／ＮＡ＝５０とのうちの最小値１４．４を次のラウンドの予測タグ数とする。
リーダ装置は、算出した予測タグ数１４．４より、次のラウンドのスロット数（例えば１６）を算出する。その後、リーダ装置は、ラウンド処理に戻り、Ｑｕｅｒｙコマンドを送信して、次のラウンドを開始する。
【０１４４】
これを繰り返し、すべてのタグを読み切れば、それ以上応答するタグがなくなるので、Ｒ＝０になる。これが２回続くと、終了条件が満たされるので、１回のＩｎｖｅｎｔｏｒｙＴａｇｓの処理が終了する。
【０１４５】
複数回のＩｎｖｅｎｔｏｒｙＴａｇｓを繰り返す処理の流れは、たとえば、以下のとおりである。
なお、読み取り可能な最大タグ数ＴＭａｘを４０、読み取らなければならない総タグ数ＴＴｏｔａｌＭａｘを２００とする。
【０１４６】
リーダ装置は、ＩｎｖｅｔｎｔｏｒｙＴａｇｓの実行回数を１に初期化する。リーダ装置は、タグの読み取り残数ＴＲｅｍａｉｎを初期化して、総タグ数ＴＴｏｔａｌＭａｘ＝２００を読み取り残数とする。
アンテナ切り替え部がアンテナケーブルを接続し、アンテナ８１０ａが電波を送信する。
リーダ装置は、アンテナ８１０ａを使用して、第１回目のＩｎｖｅｎｔｏｒｙＴａｇｓを実行する。
タグ集団では、アンテナ８１０ａに近い側の列のタグが主に応答する。
例えば、第１回目のＩｎｖｅｎｔｏｒｙＴａｇｓで３５個のタグが読めたとする。リーダ装置は、アンテナ８１０ａを使用して３５個のタグが読めたことを記憶する。リーダ装置は、読めたタグＩＤを蓄積する。リーダ装置は、読み取り残数ＴＲｅｍａｉｎを更新する。リーダ装置は、読み取り残数２００から読めたタグ数３５を差し引いて、読み取り残数ＴＲｅｍａｉｎ＝２００−３５＝１６５とする。
【０１４７】
リーダ装置は、過去のＮＡ回（すなわち１サイクル分）のＩｎｖｅｎｔｏｒｙＴａｇｓで連続してタグが読めなければ、もう読み残したタグがないものと判断して、処理を終了する。
読み残したタグがあると判定した場合、リーダ装置は、使用するアンテナを切り替えて、次のＩｎｖｅｎｔｏｒｙＴａｇｓを実行する。これを、読み残したタグがないと判定するまで繰り返す。
【０１４８】
１回目のＩｎｖｅｎｔｏｒｙＴａｇｓで読めたタグ数は３５なので、リーダ装置は、読み残したタグがあると判定する。なお、１回目のＩｎｖｅｎｔｏｒｙＴａｇｓで読めたタグ数が０であったとしても、まだアンテナを一巡していないので、リーダ装置は、読み残したタグがあると判定する。
【０１４９】
リーダ装置は、第２回目のＩｎｖｅｎｔｏｒｙＴａｇｓの準備を開始し、アンテナ切り替え部がアンテナケーブルを切り替えて、アンテナ８１０ｂが電波を送信する。リーダ装置は、アンテナ８１０ｂを使用して第２回目のＩｎｖｅｎｔｏｒｙＴａｇｓを実行する。
タグ集団では、アンテナ８１０ｂに近い側の列のタグが主に応答する。なお、第１回目のＩｎｖｅｎｔｏｒｙＴａｇｓで既に読まれたタグは応答しない。
例えば、第２回目のＩｎｖｅｎｔｏｒｙＴａｇｓで３１個のタグが読めたとする。リーダ装置は、読めたタグＩＤを蓄積する。リーダ装置は、読み取り残数ＴＲｅｍａｉｎを更新して、読み取り残数ＴＲｅｍａｉｎ＝１６５−３１＝１３４とする。
【０１５０】
第１回目のＩｎｖｅｎｔｏｒｙＴａｇｓで読めたタグ数が３５、第２回目のＩｎｖｅｎｔｏｒｙＴａｇｓで読めたタグ数が３１であって、どちらも０ではないので、リーダ装置は、読み残したタグがあると判定し、第３回目のＩｎｖｅｎｔｏｒｙＴａｇｓに移る。
【０１５１】
リーダ装置は、第３回目のＩｎｖｅｎｔｏｒｙＴａｇｓの準備を開始し、アンテナ切り替え部がアンテナケーブル５１を切り替えて、再びアンテナ８１０ａが電波を送信する。リーダ装置は、アンテナ８１０ａを使用して第３回目のＩｎｖｅｎｔｏｒｙＴａｇｓを実行する。
例えば、第３回目のＩｎｖｅｎｔｏｒｙＴａｇｓで２０個のタグが読めたとする。リーダ装置は、読めたタグＩＤを蓄積する。リーダ装置は、読み取り残数ＴＲｅｍａｉｎを更新して、読み取り残数ＴＲｅｍａｉｎ＝１３４−２０＝１１４とする。
【０１５２】
第２回目のＩｎｖｅｎｔｏｒｙＴａｇｓで読めたタグ数が３１、第３回目のＩｎｖｅｎｔｏｒｙＴａｇｓで読めたタグ数が２０であって、どちらも０ではないので、リーダ装置は、読み残したタグがあると判定し、第４回目のＩｎｖｅｎｔｏｒｙＴａｇｓに移る。
【０１５３】
これを繰り返し、２回続けて読めたタグ数が０になるまで処理を続ける。
【０１５４】
例えば、第７回目のＩｎｖｅｎｔｏｒｙＴａｇｓで読めたタグ数が５、第８回目のＩｎｖｅｎｔｏｒｙＴａｇｓで読めたタグ数が０であるとすると、リーダ装置は、読み残したタグがあると判定し、第９回目のＩｎｖｅｎｔｏｒｙＴａｇｓに移る。
第９回目のＩｎｖｅｎｔｏｒｙＴａｇｓで読めたタグ数が０であるとすると、第８回目のＩｎｖｅｎｔｏｒｙＴａｇｓで読めたタグ数も０なので、リーダ装置は、読み残したタグがないと判定して、読み取り処理を終了する。
【０１５５】
ＩｎｖｅｎｔｏｒｙＴａｇｓの処理を繰り返すにつれて、読み取り残数ＴＲｅｍａｉｎが減っていく。スロット数の決定に読み取り残数ＴＲｅｍａｉｎを用いることにより、最適なスロット数を決定することができる。
例えば、ある段階で、総タグ数ＴＴｏｔａｌＭａｘ＝２００に対して、それまでに読み取ったタグ数が１９０であるとすると、読み取り残数ＴＲｅｍａｉｎは１０になる。その場合、まだ読めていないタグの数は１０以下なので、前のラウンドに応答したタグ数がどんなに多くても、タグ数予測部は、予測タグ数として１０より大きい数を算出することはない。スロット数算出部は、この予測タグ数に基づいて、例えばスロット数を１６にする。これにより、スロット数として適切な値を設定することができる。
【０１５６】
このように、ＩｎｖｅｎｔｏｒｙＴａｇｓの実行を進めるにしたがって、読むべきタグ、実際に読めたタグが少なくなり、それに伴って、スロット数算出部するスロット数も減少する。したがって、序盤のＩｎｖｅｎｔｏｒｙＴａｇｓでは、十分な数のスロット数が設定されて、タグの衝突の発生を抑えることができるとともに、終盤のＩｎｖｅｎｔｏｒｙＴａｇｓでは、不要に多くのスロット数を割り当てることがなくなるので、読み取りの効率が高くなる。これにより、複数のアンテナを切り替えながら複数のＩｎｖｅｎｔｏｒｙＴａｇｓを実行する環境において、ＩｎｖｅｎｔｏｒｙＴａｇｓを効率的に実行することができ、同じ数のタグを一括読み取りする場合に、実行時間が短くて済む。
【０１５７】
なお、アンテナ数ＮＡは、３以上であってもよい。例えば、ＲＦＩＤリーダ装置に４台のアンテナを接続する場合、アンテナ切り替え部は、４つのアンテナにそれぞれ接続した４つのアンテナケーブルのいずれかと接続する。タグ集団は、４つのアンテナに囲まれた領域を通過し、リーダ装置は、その間にすべてのタグを読む。例えば、４つのアンテナのうちの１つは、タグ集団の通り道の上段左側、他の１つは上段右側、別の１つは下段左側、最後の１つは下段右側というように、各アンテナが主に通信するタグの範囲が異なる位置に配置する。
アンテナ切替部１１２は、４つのアンテナを所定の順序で切り替える。例えば、アンテナ切替部１１２は、上段左側→下段左側→上段右側→下段右側のように、同じ側が連続する順序で切り替える構成としてもよいし、下段左側→上段右側→上段左側→下段右側のように、１回ごとに左右が変化する順序で切り替える構成としてもよい。なお、１回ごとに左右が変化する順序で切り替える構成のほうが、読み落としの確率が減り、望ましい。
【０１５８】
このように、アンテナ数を増やし、適切な順番で切り替えることにより、タグ集団に含まれるタグの数が非常に多い場合でも、すべてのタグを読みとることができる。
【０１５９】
実施の形態２．
実施の形態２について、図１４〜図１７を用いて説明する。
なお、実施の形態１と共通する部分については、同一の符号を付し、説明を省略する。
【０１６０】
この実施の形態では、実施の形態１よりも精度よく応答数を推定する方式について説明する。
【０１６１】
図１４は、この実施の形態における応答数推定部１５０の詳細ブロックの構成の一例を示す詳細ブロック図である。
応答数推定部１５０は、実施の形態１で説明したブロックに加えて、更に、競合計数部１５４を有する。
競合計数部１５４は、スロット判定部１４０が判定した判定結果に基づいて、ＣＰＵ９１１を用いて、競合スロットの数（競合スロット数Ｃ）を数える。
なお、実施の形態１で述べたように、総スロット数Ｓと空きスロット数Ｅと読取スロット数Ｒと競合スロット数Ｃとの間には、Ｓ＝Ｅ＋Ｒ＋Ｃという関係が成り立つので、競合計数部１５４に代えて、競合算出部を設け、競合算出部が、総スロット数Ｓから空きスロット数Ｅと読取スロット数Ｒとの和を差し引いた差Ｓ−（Ｅ＋Ｒ）を算出して競合スロット数Ｃとする構成としてもよい。
【０１６２】
推定値算出部１５６は、空き計数部１５２が数えた空きスロット数Ｅと、競合計数部１５４が数えた競合スロット数Ｃとに基づいて、ＣＰＵ９１１を用いて、値Ｄを算出する。例えば、推定値算出部１５６は、ＣＰＵ９１１を用いて、空きスロット数Ｅから競合スロット数Ｃを差し引いた差を算出して、値Ｄとする。
【０１６３】
図１５は、この実施の形態における推定テーブル記憶部１５５が記憶した推定応答数テーブルの一例を示す図である。
指標値６１４は、値Ｄを表わす。総スロット数６１２は、総スロット数Ｓを表わす。推定応答数６１３は、値Ｄが左端の指標値６１４と一致し、総スロット数Ｓが上端の総スロット数６１２と一致する場合における推定応答数を表わす。
例えば、値Ｄが−６、総スロット数Ｓが１６である場合、推定応答数は２８となる。また、値Ｄが３０、総スロット数Ｓが６４である場合、推定応答数は３５となる。
【０１６４】
スロット数がＳ、応答数がｎの場合において、ｎ個のＩＣタグ２２０それぞれが、Ｓ個のスロットの各スロットを使用して識別データを送信する確率が等しく１／Ｓである場合、空きスロット数がＥ、読取スロット数がＲとなる確率Ｐ２Ｓ，ｎ（Ｅ，Ｒ）の計算式は、数１６に示した。
ここで、競合スロット数Ｃは、Ｃ＝Ｓ−（Ｅ＋Ｒ）であることから、値Ｄの期待値Ｄ＊を求めると、以下の式を得る。
【数２３】
2011070298.tif 000015
【０１６５】
実施の形態１と同様、以下、値Ｄの期待値Ｄ＊を応答数ｎの関数と考えて、
【数２４】
2011070298.tif 000016
と表わし、関数ｇＳの逆関数ｇＳ−１を用いて、推定応答数ｎ＊を算出する。
【０１６６】
図１６は、この実施の形態におけるスロット数Ｓ及び応答数ｎと、値Ｄの期待値Ｄ＊との関係の一例を示すグラフ図である。
横軸は、応答数ｎを表わす。縦軸は、値Ｄの期待値Ｄ＊を表わす。曲線７５１〜７５５は、スロット数Ｓがそれぞれ４、８、１６、３２、６４の場合を表わす。
【０１６７】
関数ｆＳと同様、関数ｇＳも単調減少関数であるから、逆関数ｇＳ−１の値は一意に定まる。
【０１６８】
次に、実施の形態１で説明した空きスロット数Ｅに基づく応答数の推定と、この実施の形態で説明した値Ｄに基づく応答数の推定との推定精度を比較する。
【０１６９】
図１７は、応答数ｎ及び空きスロット数Ｅまたは値Ｄと、発生確率との関係の一例を示すグラフ図である。
横軸は、空きスロット数Ｅ及び値Ｄを表わす。縦軸は、その発生確率を表わす。曲線７６１〜７６５は、スロット数Ｓが６４の場合において応答数ｎがそれぞれ５０、５５、６０、６５、７０の場合の空きスロット数Ｅが発生する確率を表わす。曲線７７１〜７７５は、スロット数Ｓが６４の場合において応答数がそれぞれ５０、５５、６０、６５、７０の場合の値Ｄが発生する確率を表わす。
【０１７０】
この図に示すように、空きスロット数Ｅや値Ｄの実際の値は、確率的に定まり、期待値Ｅ＊・Ｄ＊を中心とする正規分布に近い分布をする。
一見してわかるように、空きスロット数Ｅの確率分布は、応答数ｎが変化しても移動量が小さく、グラフの重なりが大きいのに対して、値Ｄの確率分布は、応答数ｎの変化に対する移動量が大きく、グラフの重なりが小さい。換言すると、応答数ｎがｎ１である場合の期待値と応答数ｎがｎ２である場合の期待値との差で、応答数ｎがｎ１である場合の標準偏差を割った商を比較すると、値Ｄの場合のほうが、空きスロット数Ｅの場合よりも大きい。
例えば、実施の形態１における応答数推定部１５０は、空きスロット数ＥがＥ１である場合、推定応答数ｎ＊を６０と算出するが、実際の応答数ｎが５５あるいは６５である可能性も少なからずあり、５０あるいは７０である可能性も否定できない。これに対し、この実施の形態における応答数推定部１５０は、値ＤがＤ１である場合、推定応答数ｎ＊を６０と算出するが、実際の応答数ｎが５５あるいは６５である可能性は低く、５０あるいは７０である可能性はほとんどない。
すなわち、この実施の形態における応答数推定部１５０のほうが、実施の形態１における応答数推定部１５０よりも、応答数の推定精度が高い。
【０１７１】
この実施の形態における読取装置１００において、上記応答数推定部１５０は、上記処理装置）ＣＰＵ９１１）を用いて、上記複数のスロットのうち、空きスロットであると上記スロット判定部１４０が判定したスロットの数を計数して空きスロット数Ｅとし、競合スロットであると上記スロット判定部が判定したスロットの数を計数して競合スロット数Ｃとし、上記空きスロット数Ｅから上記競合スロット数Ｃを差し引いた値Ｄ＝Ｅ−Ｃを算出し、上記応答装置（ＩＣタグ２２０）が選択し得たスロットの総数Ｓと、上記値Ｄとに基づいて、推定応答数を算出する。
【０１７２】
この実施の形態における読取装置１００によれば、応答数を高い精度で推定することができるので、それに基づいてスロット数決定部１２０が決定するスロット数がより適切な値になり、制限時間内にすべての応答装置の識別データを読み取ることができる。
【０１７３】
なお、応答数推定部１５０は、値Ｄとして、空きスロット数Ｅから競合スロット数Ｃを差し引いた差を用いる代わりに、２つの所定の定数α及びβを用いて、空きスロット数Ｅに定数αを乗じた積と、競合スロット数Ｃに定数βを乗じた積との和を用いる構成としてもよい。実施の形態１で説明した応答数推定部１５０は、定数αとして１、定数βとして０を用いた例であり、この実施の形態で説明した応答数推定部１５０は、定数αとして１、定数βとして−１を例である。このように、定数α・βとして適切な値を選択することにより、応答数の推定精度を高めることができる。
【０１７４】
この実施の形態における読取装置１００において、上記応答数推定部１５０は、上記処理装置を用いて、上記複数のスロットのうち、空きスロットであると上記スロット判定部１４０が判定したスロットの数を計数して空きスロット数Ｅとし、競合スロットであると上記スロット判定部１４０が判定したスロットの数を計数して競合スロット数Ｃとし、上記空きスロット数Ｅに所定の定数αを乗じた積αＥと、上記競合スロット数Ｃに所定の定数βを乗じた積βＣとを合計した値Ｄ＝αＥ＋βＣを算出し、上記応答装置が選択し得たスロットの総数Ｓと、上記値Ｄとに基づいて、推定応答数を算出する。
【０１７５】
この実施の形態における読取装置１００によれば、応答数を高い精度で推定することができるので、それに基づいてスロット数決定部１２０が決定するスロット数がより適切な値になり、制限時間内にすべての応答装置の識別データを読み取ることができる。
【０１７６】
なお、上述したように、総スロット数Ｓと空きスロット数Ｅと読取スロット数Ｒと競合スロット数Ｃとの間には、Ｓ＝Ｅ＋Ｒ＋Ｃという関係が存在する。したがって、応答数推定部１５０は、空きスロット数Ｅと競合スロット数Ｃとに基づいて推定応答数ｎ＊を算出する代わりに、読取スロット数Ｒと競合スロット数Ｃとに基づいて推定応答数ｎ＊を算出する構成としてもよい。あるいは、応答数推定部１５０は、空きスロット数Ｅと読取スロット数Ｒとに基づいて推定応答数ｎ＊を算出する構成としてもよい。
【０１７７】
この実施の形態における読取装置１００において、上記応答数推定部１５０は、上記複数のスロットのうち、読取スロットであると上記スロット判定部１４０が判定したスロットの数を計数して読取スロット数Ｒとし、競合スロットであると上記スロット判定部１４０が判定したスロットの数を計数して競合スロット数Ｃとし、上記処理装置を用いて、上記応答装置が選択し得たスロットの総数Ｓと、上記読取スロット数Ｒと、上記競合スロット数Ｃとに基づいて、推定応答数を算出する。
【０１７８】
この実施の形態における読取装置１００によれば、応答数を高い精度で推定することができるので、それに基づいてスロット数決定部１２０が決定するスロット数がより適切な値になり、制限時間内にすべての応答装置の識別データを読み取ることができる。
【０１７９】
以上説明したＲＦＩＤリーダライタ装置（読取装置１００）において、タグ数予測部（応答数推定部１５０）は、前ラウンドのタグ数を、空スロット数Ｅとタグ読み取り数Ｒと総スロット数Ｓとに基づいて推定（予測）する。
【０１８０】
Ｄ＝Ｅ−Ｃという新しい変数を導入し、タグ数予測部は、値Ｄを算出する。タグ数予測部は、総スロット数Ｓと値Ｄとから、タグ数を求める。これにより、前のラウンドのタグ数の見積もりの精度が高くなる。
【０１８１】
タグ数から空きスロット数Ｅや値Ｄの期待値を算出する関数ｆＳやｇＳの逆関数ｆＳ−１やｇＳ−１を用いて、空きスロット数Ｅや値Ｄからタグ数を推定する場合、空きスロット数Ｅや値Ｄの実際の値は、確率的に分布するので、そのバラツキが小さいほうが、タグ数の見積もり精度が高くなる。上述した確率の計算式に基づいて理論的に算出した結果は、実際に実験した結果とよく一致し、タグ数が同じ場合、空きスロット数Ｅよりも値Ｄのほうがバラツキが少ない。すなわち、値Ｄに基づいてタグ数を推定するほうが、空きスロット数Ｅに基づいて推定する場合よりも、精度が高く、実際のタグ数に近い値を推定することができる。
【０１８２】
実施の形態３．
実施の形態３について、図１８〜図２３を用いて説明する。
なお、実施の形態１または実施の形態２と共通する部分については、同一の符号を付し、説明を省略する。
【０１８３】
この実施の形態では、応答数を推定する更に別の方式について説明する。
【０１８４】
図１８は、この実施の形態における応答数推定部１５０及びスロット数決定部１２０の詳細ブロックの構成の一例を示す詳細ブロック図である。
【０１８５】
応答数推定部１５０は、実施の形態１で説明した総数計数部１５１、空き計数部１５２、読取計数部１５３に加えて、事前確率記憶部１５７、事後確率算出部１５８を有する。
【０１８６】
事前確率記憶部１５７は、ＨＤＤ９２０を用いて、０以上かつ最大応答数以下の整数ｉそれぞれについて、応答数ｎが整数ｉである事前確率Ｐ−（ｉ）を記憶している。事前確率Ｐ−（ｉ）は、それまでにわかっている情報に基づいて応答数ｎが整数ｉである可能性を予測した確率を表わす。例えば、物品群２００に対してまだ１回も識別要求メッセージを送信していない場合、応答数ｎを予測できる情報はない。したがって、応答数ｎが０以上かつ最大応答数以下の整数のいずれである可能性も等しいと考えられる。このため、事前確率記憶部１５７は、最大応答数に１を加えた和で１を割った商を、０以上かつ最大応答数以下のすべてのｉについての事前確率Ｐ−（ｉ）として記憶する。なお、読取システム８００の運用状況などにより、応答数ｎに偏りがあることがあらかじめわかっている場合には、その偏りに基づいた事前確率Ｐ−（ｉ）を事前確率記憶部１５７が記憶しておく構成としてもよい。
なお、事前確率記憶部１５７は、各アンテナについて事前確率Ｐ−（ｉ）を記憶する。
【０１８７】
事後確率算出部１５８は、ＣＰＵ９１１を用いて、総数計数部１５１が数えた総スロット数Ｓと、空き計数部１５２が数えた空きスロット数Ｅと、読取計数部１５３が数えた読取スロット数Ｒと、事前確率記憶部１５７が記憶した事前確率Ｐ−（ｉ）とに基づいて、０以上かつ最大応答数以下の整数ｉそれぞれについて、応答数ｎが整数ｉである事後確率Ｐ＋（ｉ）を算出する。事後確率Ｐ＋（ｉ）は、識別要求メッセージに対する応答から得られる情報に基づいて、事前確率記憶部１５７が記憶した事前確率Ｐ−（ｉ）を修正したものである。
【０１８８】
スロット数Ｓ及び応答数ｎが既知であると仮定すると、空きスロット数がＥかつ読取スロット数がＲである確率Ｐ２Ｓ，ｎ（Ｅ，Ｒ）は、数１６を用いて算出することができる。応答数ｎは不明であるが、応答数ｎがｉである事前確率Ｐ−（ｉ）がわかっているので、ベイズ推定により、空きスロット数がＥかつ読取スロット数がＲかつ応答数がｉである確率Ｐ５Ｓ（Ｅ，Ｒ，ｉ）は、以下の式を用いて算出することができる。
【数２５】
2011070298.tif 000017
【０１８９】
いま、識別要求メッセージに対する応答に基づいて、空きスロット数Ｅと読取スロット数Ｒとがわかったので、空きスロット数Ｅと読取スロット数Ｒとを空き計数部１５２及び読取計数部１５３が数えた値に固定して、応答数ｎだけを０から最大応答数まで変化させて、確率Ｐ５Ｓ（Ｅ，Ｒ，ｉ）の総和Σを算出する。空きスロット数がＥかつ読取スロット数がＲかつ応答数ｎがｉである確率Ｐ５Ｓ（Ｅ，Ｒ，ｉ）を総和Σで割った商を求めることにより、事後確率Ｐ＋（ｉ）を得ることができる。
【数２６】
2011070298.tif 000018
【０１９０】
事後確率算出部１５８は、ＣＰＵ９１１を用いて、上記のような計算を行い、０以上かつ最大応答数以下の整数ｉそれぞれについて、事後確率Ｐ＋（ｉ）を算出する。
【０１９１】
スロット数決定部１２０を構成する機能ブロックは、実施の形態１で説明した機能ブロックと同様である。
スロット数決定部１２０は、推定応答数ｎ＊ではなく、事後確率Ｐ＋（ｉ）に基づいて、予測応答数ｎ−を算出する点が、実施の形態１と異なる。
【０１９２】
なお、応答数推定部１５０が、事後確率Ｐ＋（ｉ）をそのまま出力するのではなく、推定応答数ｎ＊を算出して出力する構成としてもよい。例えば、応答数推定部１５０は、期待値算出部を有し、期待値算出部は、事後確率算出部１５８が算出した事後確率Ｐ＋（ｉ）に基づいて、応答数ｎの期待値を算出して、推定応答数ｎ＊とする。
その場合、スロット数決定部１２０は、実施の形態１で説明した構成と同じ構成でよい。
【０１９３】
増加数算出部１２２は、事後確率算出部１５８が算出した事後確率Ｐ＋（ｉ）に基づいて、ＣＰＵ９１１を用いて、事後確率Ｐ＋（ｉ）が０でない整数ｉそれぞれについて、応答数ｎがｉである場合の増加数Δｎを算出する。なお、増加数算出部１２２は、増加数Δｎを算出する代わりに、増加数Δｎの確率分布を算出する構成としてもよい。
【０１９４】
予測値算出部１２３は、事後確率算出部１５８が算出した事後確率Ｐ＋（ｉ）と、増加数算出部１２２が算出した増加数Δｎと、読取計数部１５３が数えた読取スロット数Ｒとに基づいて、ＣＰＵ９１１を用いて、予測応答数ｎ−の確率分布を算出する。例えば、予測値算出部１２３は、ＣＰＵ９１１を用いて、事後確率Ｐ＋（ｉ）が０でない整数ｉそれぞれについて、整数ｉから読取スロット数Ｒを差し引いた差に増加数Δｎを加えた和を算出して、その整数ｉについての予測応答数ｎ−とし、事後確率Ｐ＋（ｉ）をその予測応答数ｎ−の発生確率とする。
【０１９５】
予測応答数算出部１２６は、上限応答数算出部１２５が算出した上限応答数に基づいて、ＣＰＵ９１１を用いて、予測値算出部１２３が算出した予測応答数ｎ−の確率分布を修正する。例えば、予測応答数算出部１２６は、上限応答数以上である予測応答数ｎ−の発生確率を合計して、予測応答数ｎ−が上限応答数である場合の発生確率とし、上限応答数を超える予測応答数ｎ−の発生確率を０にする。
【０１９６】
スロット数算出部１２７は、予測応答数算出部１２６が算出した予測応答数ｎ−の確率分布に基づいて、ＣＰＵ９１１を用いて、スロット数を算出する。例えば、あらかじめ定めた複数のスロット数の候補（例えば４・８・１６・３２・６４など）のそれぞれについて、スロット数算出部１２７は、ＣＰＵ９１１を用いて、単位時間当たりの読取スロット数の期待値Ｒ＊を算出する。例えば、スロット数算出部１２７は、ＣＰＵ９１１を用いて、予測応答数ｎ−の確率分布に基づいて、発生確率が０でない予測応答数ｎ−それぞれについての読取スロット数の期待値を算出し、算出した期待値にその予測応答数ｎ−の発生確率を乗じた積を算出する。スロット数算出部１２７は、算出した積の総和を算出し、算出した総和をスロット数の候補で割った商を算出することにより、各スロット数の候補についての読取スロット数の期待値Ｒ＊を算出する。スロット数算出部１２７は、各スロット数の候補について算出した読取スロット数の期待値Ｒ＊に基づいて、ＣＰＵ９１１を用いて、最も読取スロット数の期待値Ｒ＊が大きい候補をスロット数として決定する。
なお、スロット数算出部１２７は、実施の形態１で説明したように、読取スロット数の期待値Ｒ＊だけでなく、次回の応答数の推定の精度も加味してスロット数を決定する構成としてもよい。例えば、スロット数算出部１２７は、ＣＰＵ９１１を用いて、スロット数の候補と応答数との組から応答数の推定精度を算出し、読取スロット数の期待値Ｒ＊と応答数の推定精度とに基づいて評価値を算出し、算出した評価値が最も大きい候補をスロット数として決定する。
【０１９７】
応答数推定部１５０の事前確率記憶部１５７は、ＨＤＤ９２０を用いて、予測応答数算出部１２６が算出した予測応答数ｎ−の確率分布を、そのときのアンテナについての応答数ｎの事前確率Ｐ−（ｉ）として記憶する。すなわち、事前確率記憶部１５７は、０以上かつ最大応答数以下の整数ｉそれぞれについて、予測応答数算出部１２６が算出した予測応答数ｎ−がｉである確率を、事前確率Ｐ−（ｉ）として記憶する。
このように、予測応答数算出部１２６が算出した予測応答数ｎ−の確率分布をフィードバックして、事前確率記憶部１５７が事前確率Ｐ−（ｉ）として記憶することにより、次回の事後確率Ｐ＋（ｉ）の精度を高めることができる。
なお、予測応答数算出部１２６が算出した予測応答数ｎ−の確率分布をフィードバックせず、予測応答数算出部１２６は、最初に記憶した事前確率Ｐ−（ｉ）をそのまま記憶しておく構成としてもよい。これにより、予測応答数算出部１２６による予測応答数ｎ−の予測精度が悪い場合に、事後確率Ｐ＋（ｉ）の精度が逆に低下するのを防ぐことができる。
【０１９８】
図１９は、この実施の形態における応答数推定工程Ｓ５５０の流れの一例を示す詳細フローチャート図である。
応答数推定工程Ｓ５５０は、初期化工程Ｓ５５１、２つの仮応答数選択工程Ｓ５５２，Ｓ５５６、確率算出工程Ｓ５５３、確率加算工程Ｓ５５４、２つの仮応答数判定工程Ｓ５５５，Ｓ５５８、事後確率算出工程Ｓ５５７を有する。
【０１９９】
初期化工程Ｓ５５１において、事後確率算出部１５８は、ＲＡＭ９１４を用いて、確率Ｐ５Ｓ（Ｅ，Ｒ，ｉ）の総和Σとして０を記憶する。
仮応答数選択工程Ｓ５５２において、事後確率算出部１５８は、ＣＰＵ９１１を用いて、０以上かつ最大応答数以下の整数のなかから順に整数を１つ選択して、整数ｉとする。
確率算出工程Ｓ５５３において、事後確率算出部１５８は、総数計数部１５１が数えた総スロット数Ｓと、空き計数部１５２が数えた空きスロット数Ｅと、読取計数部１５３が数えた読取スロット数Ｒと、仮応答数選択工程Ｓ５５２で選択した整数ｉとに基づいて、ＣＰＵ９１１を用いて、確率Ｐ５Ｓ（Ｅ，Ｒ，ｉ）を算出する。事後確率算出部１５８は、ＲＡＭ９１４を用いて、仮応答数選択工程Ｓ５５２で選択した整数ｉについて算出した確率Ｐ５Ｓ（Ｅ，Ｒ，ｉ）を記憶する。
確率加算工程Ｓ５５４において、事後確率算出部１５８は、ＣＰＵ９１１を用いて、確率算出工程Ｓ５５３で算出した確率Ｐ５Ｓ（Ｅ，Ｒ，ｉ）を総和Σに加え、ＲＡＭ９１４を用いて記憶する。
仮応答数判定工程Ｓ５５５において、事後確率算出部１５８は、ＣＰＵ９１１を用いて、仮応答数選択工程Ｓ５５２で選択すべき整数ｉがまだ残っているか否かを判定する。
仮応答数選択工程Ｓ５５２で選択すべき整数ｉがまだあると事後確率算出部１５８が判定した場合、読取装置１００は、仮応答数選択工程Ｓ５５２に戻り、事後確率算出部１５８が次の整数ｉを選択する。
仮応答数選択工程Ｓ５５２で選択すべき整数ｉをすべて選択したと事後確率算出部１５８が判定した場合、読取装置１００は、仮応答数選択工程Ｓ５５６へ進む。
【０２００】
仮応答数選択工程Ｓ５５６において、事後確率算出部１５８は、ＣＰＵ９１１を用いて、０以上かつ最大応答数以下の整数のなかから順に整数を１つ選択して、整数ｉとする。
事後確率算出工程Ｓ５５７において、事後確率算出部１５８は、仮応答数選択工程Ｓ５５６で選択した整数ｉについて確率算出工程Ｓ５５３で算出した確率Ｐ５Ｓ（Ｅ，Ｒ，ｉ）を、総和Σで割った商を算出する。事後確率算出部１５８は、ＲＡＭ９１４を用いて、仮応答数選択工程Ｓ５５６で選択した整数ｉについての事後確率Ｐ＋（ｉ）として、算出した商を記憶する。
仮応答数判定工程Ｓ５５８において、事後確率算出部１５８は、ＣＰＵ９１１を用いて、仮応答数選択工程Ｓ５５６で選択すべき整数ｉがまだ残っているか否かを判定する。
仮応答数選択工程Ｓ５５６で選択すべき整数ｉがまだあると事後確率算出部１５８が判定した場合、読取装置１００は、仮応答数選択工程Ｓ５５６に戻り、事後確率算出部１５８が次の整数ｉを選択する。
仮応答数選択工程Ｓ５５６で選択すべき整数ｉをすべて選択したと事後確率算出部１５８が判定した場合、読取装置１００は、応答数推定工程Ｓ５５０を終了する。
【０２０１】
図２０は、この実施の形態におけるスロット数決定工程Ｓ５２０の流れの一例を示す詳細フローチャート図である。
スロット数決定工程Ｓ５２０は、サイクル判定工程Ｓ５２１、アンテナ判定工程Ｓ５２３、経過時間算出工程Ｓ５２４、２つの最大残数算出工程Ｓ５２７，Ｓ５２７ｂ、２つの上限応答数算出工程Ｓ５２８，Ｓ５２８ｂ、初期確率分布算出工程Ｓ５３９、確率分布算出工程Ｓ５６０、スロット数算出工程Ｓ５３０を有する。
【０２０２】
サイクル判定工程Ｓ５２１において、スロット数決定部１２０は、ＣＰＵ９１１を用いて、現在のサイクルが、ＩＣタグ２２０の識別データの読み取りを開始した最初のサイクルであるか、２回目以降のサイクルであるかを判定する。
現在のサイクルが最初のサイクルであるとスロット数決定部１２０が判定した場合、読取装置１００は、アンテナ判定工程Ｓ５２３へ進む。
現在のサイクルが２回目以降のサイクルであるとスロット数決定部１２０が判定した場合、読取装置１００は、経過時間算出工程Ｓ５２４へ進む。
【０２０３】
アンテナ判定工程Ｓ５２３において、スロット数決定部１２０は、ＣＰＵ９１１を用いて、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が切り替えたアンテナが、ＩＣタグ２２０の識別データの読み取りを開始して最初に切り替えられたアンテナであるか、２番目以降のアンテナであるかを判定する。
現在のアンテナが最初のアンテナであるとスロット数決定部１２０が判定した場合、読取装置１００は、上限応答数算出工程Ｓ５２８ｂへ進む。
現在のアンテナが２番目以降のアンテナであるとスロット数決定部１２０が判定した場合、読取装置１００は、最大残数算出工程Ｓ５２７ｂへ進む。
【０２０４】
最大残数算出工程Ｓ５２７ｂにおいて、最大残数算出部１２４は、ＣＰＵ９１１を用いて、前回までに読取計数部１５３が数えた読取スロット数Ｒと、最大総数記憶部１７２が記憶した最大総数とに基づいて、最大総数から、読取スロット数Ｒの総和を差し引いた差を算出して、最大残数とする。
【０２０５】
上限応答数算出工程Ｓ５２８ｂにおいて、上限応答数算出部１２５は、ＣＰＵ９１１を用いて、最大残数算出工程Ｓ５２７ｂで最大残数算出部１２４が算出した最大残数と、最大応答数記憶部１７３が記憶した最大応答数とを比較して、小さいほうを上限応答数とする。
【０２０６】
初期確率分布算出工程Ｓ５３９において、予測応答数算出部１２６は、上限応答数算出工程Ｓ５２８ｂで上限応答数算出部１２５が算出した上限応答数に基づいて、ＣＰＵ９１１を用いて、予測応答数ｎ−の確率分布の初期値を算出する。例えば、予測応答数算出部１２６は、ＣＰＵ９１１を用いて、上限応答数に１を加えた和で１を割った商を算出し、０以上かつ上限応答数以下の各整数が予測応答数ｎ−である確率とする。
その後、読取装置１００は、スロット数算出工程Ｓ５３０へ進む。
【０２０７】
経過時間算出工程Ｓ５２４において、経過時間算出部１２１は、ＣＰＵ９１１を用いて、アンテナ切替工程Ｓ５１２でアンテナ切替部１１２が切り替えたアンテナと同じアンテナを介して要求送信工程Ｓ５４１で要求送信部１３１が前回の識別要求メッセージを送信してから、要求送信部１３１が今回の識別要求メッセージを送信するまでの経過時間を算出する。
【０２０８】
最大残数算出工程Ｓ５２７において、最大残数算出部１２４は、ＣＰＵ９１１を用いて、前回までに読取計数部１５３が数えた読取スロット数Ｒと、最大総数記憶部１７２が記憶した最大総数とに基づいて、最大総数から、読取スロット数Ｒの総和を差し引いた差を算出して、最大残数とする。
【０２０９】
上限応答数算出工程Ｓ５２８において、上限応答数算出部１２５は、ＣＰＵ９１１を用いて、最大残数算出工程Ｓ５２７で最大残数算出部１２４が算出した最大残数と、最大応答数記憶部１７３が記憶した最大応答数とを比較して、小さいほうを上限応答数とする。
【０２１０】
確率分布算出工程Ｓ５６０において、予測応答数算出部１２６は、ＣＰＵ９１１を用いて、予測応答数ｎ−の確率分布を算出する。
【０２１１】
スロット数算出工程Ｓ５３０において、スロット数算出部１２７は、初期確率分布算出工程Ｓ５３９または確率分布算出工程Ｓ５６０で予測応答数算出部１２６が算出した予測応答数ｎ−の確率分布に基づいて、ＣＰＵ９１１を用いて、スロット数を算出する。
その後、読取装置１００は、スロット数決定工程Ｓ５２０を終了する。
【０２１２】
図２１は、この実施の形態における確率分布算出工程Ｓ５６０の流れの一例を示す詳細フローチャート図である。
確率分布算出工程Ｓ５６０は、確率分布初期化工程Ｓ５６１、仮応答数選択工程Ｓ５６２、仮増加数選択工程Ｓ５６３、増加確率算出工程Ｓ５６４、予測値算出工程Ｓ５６５、予測応答数算出工程Ｓ５６６、確率加算工程Ｓ５６７、仮増加数判定工程Ｓ５６８、仮応答数判定工程Ｓ５６９を有する。
【０２１３】
確率分布初期化工程Ｓ５６１において、予測応答数算出部１２６は、上限応答数算出工程Ｓ５２８で上限応答数算出部１２５が算出した上限応答数に基づいて、ＲＡＭ９１４を用いて、予測応答数ｎ−が０以上かつ上限応答数以下の各整数である確率として０を記憶する。
【０２１４】
仮応答数選択工程Ｓ５６２において、予測応答数算出部１２６は、上限応答数算出工程Ｓ５２８で上限応答数算出部１２５が算出した上限応答数に基づいて、ＣＰＵ９１１を用いて、０以上かつ上限応答数以下の整数のなかから順に整数を１つ選択して、仮応答数とする。
【０２１５】
仮増加数選択工程Ｓ５６３において、増加数算出部１２２は、ＣＰＵ９１１を用いて、所定の範囲の整数のなかから順に整数を１つ選択して、仮増加数とする。
【０２１６】
増加確率算出工程Ｓ５６４において、増加数算出部１２２は、仮応答数選択工程Ｓ５６２で予測応答数算出部１２６が選択した仮応答数と、仮増加数選択工程Ｓ５６３で選択した仮増加数とに基づいて、ＣＰＵ９１１を用いて、応答数ｎが仮応答数と一致すると仮定した場合において増加数Δｎが仮増加数と一致する確率を算出して、増加確率とする。
【０２１７】
予測値算出工程Ｓ５６５において、予測値算出部１２３は、仮応答数選択工程Ｓ５６２で予測応答数算出部１２６が選択した仮応答数と、仮増加数選択工程Ｓ５６３で増加数算出部１２２が選択した仮増加数と、読取計数部１５３が数えた読取スロット数Ｒとに基づいて、ＣＰＵを用いて、予測応答数ｎ−を算出する。例えば、予測値算出部１２３は、ＣＰＵ９１１を用いて、仮応答数から読取スロット数Ｒを差し引いた差に仮増加数を加えた和を算出して、予測応答数ｎ−とする。
【０２１８】
予測応答数算出工程Ｓ５６６において、予測応答数算出部１２６は、上限応答数算出工程Ｓ５２８で上限応答数算出部１２５が算出した上限応答数に基づいて、ＣＰＵ９１１を用いて、予測値算出工程Ｓ５６５で予測値算出部１２３が算出した予測応答数ｎ−を修正する。例えば、予測応答数算出部１２６は、予測値算出部１２３が算出した予測応答数ｎ−が上限応答数より大きい場合、予測応答数ｎ−を修正して、上限応答数を予測応答数ｎ−とする。
【０２１９】
確率加算工程Ｓ５６７において、予測応答数算出部１２６は、仮応答数選択工程Ｓ５６２で選択した仮応答数について事後確率算出部１５８が算出した事後確率Ｐ＋（ｉ）と、増加確率算出工程Ｓ５６４で増加数算出部１２２が算出した増加確率とに基づいて、ＣＰＵ９１１を用いて、事後確率Ｐ＋（ｉ）と増加確率との積を算出して、加算確率とする。予測応答数算出部１２６は、ＣＰＵ９１１を用いて、予測応答数算出工程Ｓ５６６で算出した予測応答数ｎ−について記憶した確率に加算確率を加え、ＲＡＭ９１４を用いて、記憶する。
【０２２０】
仮増加数判定工程Ｓ５６８において、増加数算出部１２２は、ＣＰＵ９１１を用いて、仮増加数選択工程Ｓ５６３で選択すべき範囲のすべての整数を仮増加数として選択したか否かを判定する。
仮増加数選択工程Ｓ５６３でまだ選択していない仮増加数があると増加数算出部１２２が判定した場合、増加数算出部１２２は、仮増加数選択工程Ｓ５６３に戻り、次の仮増加数を選択する。
仮増加数選択工程Ｓ５６３でまだ選択していない仮増加数がないと増加数算出部１２２が判定した場合、読取装置１００は、仮応答数判定工程Ｓ５６９へ進む。
【０２２１】
仮応答数判定工程Ｓ５６９において、予測応答数算出部１２６は、ＣＰＵ９１１を用いて、仮応答数選択工程Ｓ５６２で０以上かつ上限応答数以下のすべての整数を仮応答数として選択したか否かを判定する。
仮応答数選択工程Ｓ５６２でまだ選択していない仮応答数があると予測応答数算出部１２６が判定した場合、予測応答数算出部１２６は、仮応答数選択工程Ｓ５６２に戻り、次の仮応答数を選択する。
仮応答数選択工程Ｓ５６２でまだ選択していない仮応答数がないと予測応答数算出部１２６が判定した場合、読取装置１００は、確率分布算出工程Ｓ５６０を終了する。
【０２２２】
図２２は、この実施の形態におけるスロット数算出工程Ｓ５３０の流れの一例を示す詳細フローチャート図である。
スロット数算出工程Ｓ５３０は、評価値初期化工程Ｓ５３１、仮スロット数選択工程Ｓ５３２、仮予測数選択工程Ｓ５３３、評価値算出工程Ｓ５３４、評価値加算工程Ｓ５３５、仮予測数判定工程Ｓ５３６、仮スロット数判定工程Ｓ５３７、評価値比較工程Ｓ５３８を有する。
【０２２３】
評価値初期化工程Ｓ５３１において、スロット数算出部１２７は、複数のスロット数候補それぞれについて、ＲＡＭ９１４を用いて、評価値として０を記憶する。
【０２２４】
仮スロット数選択工程Ｓ５３２において、スロット数算出部１２７は、複数のスロット数候補のなかから順にスロット数候補を１つ選択し、仮スロット数とする。
【０２２５】
仮予測数選択工程Ｓ５３３において、スロット数算出部１２７は、上限応答数算出工程Ｓ５２８で上限応答数算出部１２５が算出した上限応答数に基づいて、ＣＰＵ９１１を用いて、０以上かつ上限応答数以下の整数のなかから順に整数を１つ選択し、仮予測数とする。
【０２２６】
評価値算出工程Ｓ５３４において、スロット数算出部１２７は、仮スロット数選択工程Ｓ５３２で選択した仮スロット数と、仮予測数選択工程Ｓ５３３で選択した仮予測数とに基づいて、ＣＰＵ９１１を用いて、スロット数を仮スロット数に設定した場合において応答数ｎが仮予測数と一致した場合の評価値を算出する。例えば、スロット数算出部１２７は、ＣＰＵ９１１を用いて、読取スロット数の期待値Ｒ＊や応答数の推定精度を算出し、これらの値に基づいて評価値を算出する。
【０２２７】
評価値加算工程Ｓ５３５において、スロット数算出部１２７は、ＣＰＵ９１１を用いて、仮予測数選択工程Ｓ５３３で選択した仮予測数について予測応答数算出部１２６が算出した確率と、評価値算出工程Ｓ５３４で算出した評価値とに基づいて、確率と評価値との積を算出して、加算評価値とする。スロット数算出部１２７は、ＣＰＵ９１１を用いて、仮スロット数選択工程Ｓ５３２で選択した仮スロット数について記憶した評価値に加算評価値を加え、ＲＡＭ９１４を用いて、記憶する。
【０２２８】
仮予測数判定工程Ｓ５３６において、スロット数算出部１２７は、ＣＰＵ９１１を用いて、仮予測数選択工程Ｓ５３３で０以上かつ上限応答数以下のすべての整数を仮予測数として選択したか否かを判定する。
仮予測数選択工程Ｓ５３３でまだ選択していない仮予測数があるとスロット数算出部１２７が判定した場合、スロット数算出部１２７は、仮予測数選択工程Ｓ５３３に戻り、次の仮予測数を選択する。
仮予測数選択工程Ｓ５３３でまだ選択していない仮予測数がないとスロット数算出部１２７が判定した場合、読取装置１００は、仮スロット数判定工程Ｓ５３７へ進む。
【０２２９】
仮スロット数判定工程Ｓ５３７において、スロット数算出部１２７は、ＣＰＵ９１１を用いて、仮スロット数選択工程Ｓ５３２ですべてのスロット数候補を仮スロット数として選択したか否かを判定する。
仮スロット数選択工程Ｓ５３２でまだ選択していない仮スロット数があるとスロット数算出部１２７が判定した場合、スロット数算出部１２７は、仮スロット数選択工程Ｓ５３２に戻り、次の仮スロット数を選択する。
仮スロット数選択工程Ｓ５３２でまだ選択していない仮スロット数がないとスロット数算出部１２７が判定した場合、読取装置１００は、評価値比較工程Ｓ５３８へ進む。
【０２３０】
評価値比較工程Ｓ５３８において、スロット数算出部１２７は、各スロット数候補について記憶した評価値を比較して、評価値が最も大きいスロット数候補を、スロット数に決定する。
その後、読取装置１００は、スロット数算出工程Ｓ５３０を終了する。
【０２３１】
図２３は、総スロット数Ｓ及び応答数ｎと、空きスロット数Ｅ・読取スロット数Ｒ・競合スロット数Ｃの発生確率との関係の一例を示すグラフ図である。
三角形７８１〜７８５は、総スロット数Ｓが６４、応答数ｎがそれぞれ５０、５５、６０、６５、７０の場合を表わす。各三角形の頂点Ｅは、空きスロット数Ｅが総スロット数Ｓに一致する場合を表わす。頂点Ｅの対辺は、空きスロット数Ｅが０である場合を表わす。頂点Ｒは、読取スロット数Ｒが総スロット数Ｓに一致する場合を表わす。頂点Ｒの対辺は、読取スロット数Ｒが０である場合を表わす。頂点Ｃは、競合スロット数Ｃが総スロット数Ｓに一致する場合を表わす。頂点Ｃの対辺は、競合スロット数Ｃが０である場合を表わす。三角形内の点は、その点の位置が表わす空きスロット数Ｅ、読取スロット数Ｒ、競合スロット数Ｃが発生する確率を表わし、点の大きさが大きいほど発生確率が高いことを表わす。
【０２３２】
この図に示したように、総スロット数Ｓ及び応答数ｎが既知であると仮定した場合において、空きスロット数Ｅ・読取スロット数Ｒ・競合スロット数Ｃの発生確率は、二次元に分布する。Ｓ＝Ｅ＋Ｒ＋Ｃであるから、変数は３つあるが、自由度としては２である。
したがって、推定応答数ｎ＊（もしくはその確率分布）の算出には、空きスロット数Ｅ・読取スロット数Ｒ・競合スロットＣのうちいずれか２つを変数とする２変数関数を用いるほうが精度の高い推定が可能となる。
【０２３３】
実施の形態１及び実施の形態２では、１変数関数であるｆＳ−１、ｇＳ−１を用いて推定応答数ｎ＊を算出する構成について説明した。また、推定応答数ｎ＊を算出する１変数関数ｆＳ−１、ｇＳ−１の導出方式として、応答数ｎを変数とする関数ｆＳ、ｇＳの逆関数を用いる方式について説明した。
これに対して、推定応答数ｎ＊の算出に２変数関数を用いる場合、応答数ｎを変数とする関数の逆関数を用いる簡便な方式を取ることは難しい。
【０２３４】
そこで、この実施の形態では、ベイズ推定を用いることにより、空きスロット数Ｅ・読取スロット数Ｒ・競合スロットＣがわかった場合における応答数ｎの確率分布を求める。これにより、２変数関数を用いて推定応答数ｎ＊（の確率分布）を算出したことになる。
【０２３５】
上述したように、応答数推定部１５０は、算出した応答数ｎの確率分布から応答数ｎの期待値を算出して推定応答数ｎ＊とする構成としてもよい。しかし、推定応答数ｎ＊に基づいて予測応答数ｎ−を算出するよりも、応答数ｎの確率分布に基づいて予測応答数ｎ−の確率分布を算出するほうが、情報量が多いので、より精度の高い予測が可能となり、それに基づいて決定したスロット数が最適なスロット数である可能性が高くなる。
【０２３６】
なお、推定応答数ｎ＊を算出する代わりに、ベイズ推定により応答数の確率分布を算出する方式を、実施の形態１あるいは実施の形態２に適用した構成としてもよい。
例えば、応答数推定部１５０は、ＣＰＵ９１１を用いて、総数計数部１５１が数えた総スロット数Ｓと、空き計数部１５２が数えた空きスロット数Ｅとに基づいて、０以上かつ上限応答数以下の整数ｉそれぞれについて、空きスロット数がＥかつ応答数ｎがｉとなる確率Ｐ１Ｓ，ｉ（Ｅ）を算出する。応答数推定部１５０は、確率Ｐ１Ｓ，ｉ（Ｅ）と事前確率Ｐ−（ｉ）との積を算出することにより、事後確率Ｐ＋（ｉ）を算出して、応答数の確率分布を求める。
【０２３７】
この実施の形態における読取装置１００において、上記応答数推定部１５０は、上記複数のスロットのうち、空きスロットであると上記スロット判定部１４０が判定したスロットの数を計数して空きスロット数Ｅとし、読取スロットであると上記スロット判定部１４０が判定したスロットの数を計数して読取スロット数Ｒとし、上記処理装置（ＣＰＵ９１１）を用いて、上記応答装置（ＩＣタグ２２０）が選択し得たスロットの総数Ｓと、上記読取スロット数Ｒと、上記競合スロット数Ｃとに基づいて、識別データを送信した応答装置の数の確率分布を算出する。
上記スロット数決定部１２０は、上記応答数推定部１５０が算出した確率分布に基づいて、上記処理装置を用いて、スロット数を決定する。
【０２３８】
この実施の形態における読取装置１００によれば、応答数の確率分布を求め、それに基づいてスロット数を決定するので、決定したスロット数が更に適切な値になり、制限時間内にすべての応答装置の識別データを読み取ることができる。
【符号の説明】
【０２３９】
１００  読取装置、１１１  開始判定部、１１２  アンテナ切替部、１１３  完了判定部、１２０  スロット数決定部、１２１  経過時間算出部、１２２  増加数算出部、１２３  予測値算出部、１２４  最大残数算出部、１２５  上限応答数算出部、１２６  予測応答数算出部、１２７  スロット数算出部、１３１  要求送信部、１３２  応答受信部、１３３  了解送信部、１３４  識別出力部、１４０  スロット判定部、１５０  応答数推定部、１５１  総数計数部、１５２  空き計数部、１５３  読取計数部、１５４  競合計数部、１５５  推定テーブル記憶部、１５６  推定値算出部、１５７  事前確率記憶部、１５８  事後確率算出部、１７１  増加率記憶部、１７２  最大総数記憶部、１７３  最大応答数記憶部、１７４  スロット数テーブル記憶部、２００  物品群、２１０  物品、２２０  ＩＣタグ、２２１  要求受信部、２２２  スロット選択部、２２３  識別送信部、２２４  了解受信部、２２５  了解記憶部、６１１  空きスロット数、６１２  総スロット数、６１３  推定応答数、６１４  指標値、６２１  予測応答数、６２２  スロット数、７１０  通信範囲、７２１〜７７５  曲線、７８１〜７８５  三角形、８００  読取システム、８１０  アンテナ、８２０  ベルトコンベア、８３１  赤外線照射装置、８３２  赤外線受光装置、８５０  ホストコンピュータ、９０１  ＬＣＤ、９０２  Ｋ／Ｂ、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  ネットワーク通信装置、９１６  無線通信装置、９１７  アンテナ選択装置、９１８  物体検出装置、９２０  ＨＤＤ。
【図１】
2011070298.tif 000019
【図２】
2011070298.tif 000020
【図３】
2011070298.tif 000021
【図４】
2011070298.tif 000022
【図５】
2011070298.tif 000023
【図６】
2011070298.tif 000024
【図７】
2011070298.tif 000025
【図８】
2011070298.tif 000026
【図９】
2011070298.tif 000027
【図１０】
2011070298.tif 000028
【図１１】
2011070298.tif 000029
【図１２】
2011070298.tif 000030
【図１３】
2011070298.tif 000031
【図１４】
2011070298.tif 000032
【図１５】
2011070298.tif 000033
【図１６】
2011070298.tif 000034
【図１７】
2011070298.tif 000035
【図１８】
2011070298.tif 000036
【図１９】
2011070298.tif 000037
【図２０】
2011070298.tif 000038
【図２１】
2011070298.tif 000039
【図２２】
2011070298.tif 000040
【図２３】
2011070298.tif 000041