以下、本発明の一実施の形態を図面を参照しつつ説明する。
図1は、本実施形態の無線タグ通信システムを、無線タグが貼付されている多数の物品の管理に適用した場合の一例を表す図である。図示する例では、多数の物品Bにそれぞれ無線タグTが貼付されている。
本実施形態の無線タグ通信システムSは、無線タグ通信装置であるリーダ1を備えている。このリーダ1は携帯型(いわゆるハンディタイプ)であり、略直方体形状の筐体1Aを有している。この筐体1Aには、長手方向の一方の端部にリーダアンテナ3(装置アンテナ)とカメラ12(撮像手段)とが設けられているとともに、平面部に操作部7と表示部8とが設けられている。
使用者(物品Bの管理者;操作者)は、このリーダ1を用いて各物品Bに貼付されている無線タグTから無線通信を介して対応する物品Bに関するタグ情報を読み取ることで、各物品Bの保管状況を管理する。
すなわち、リーダ1の無線通信可能な通信範囲20(図中、破線で示す)はリーダアンテナ3を基点として広がる領域であり、その指向性や出力電力(いわゆる空中線電力)によってその大きさが有限である。したがって、上記物品Bが配置されている範囲がリーダ1の通信範囲20と比較して十分に広い場合には、リーダ1が1つの位置に位置したのでは、配置範囲に存在する全物品Bの無線タグTとは無線通信を行えない。そこで使用者は、通常、リーダ1を手に取って、リーダ1を物品Bの配置範囲の左右方向に沿って順次移動(図1中、「第1の位置」「第2の位置」「第3の位置」参照)しつつ、無線タグTからの情報読み取りを行う。
このとき、各無線タグTは、無線タグ回路素子Toと発光素子159とを有している。発光素子159は、リーダ1から応答を要求するコマンド(詳細には後述の「Query」コマンド)を受信したときに発光素子159が発光し、このコマンドに対応した応答を送信したときに消光するように構成されている(後述の図10等を参照)。したがって、使用者は、各位置で通信範囲20内に存在する無線タグTの発光素子159を発光させつつ、無線タグTと無線通信を行うことで、物品Bの配置範囲のすべての無線タグTから漏れなく情報読み取りを行うことができる。また、タグ情報の読み取りの前後でリーダ1のカメラ12により発光素子159の発光状態を撮影することで、タグ情報の読み漏らしの防止を図ることができる(詳細は後述)。
図2は、本実施形態で使用するリーダ1及び無線タグTの概略を表すシステム構成図である。
図2において、無線タグTは、タグアンテナ151及びIC回路部150を備える無線タグ回路素子Toと、発光素子159とを有しており、この無線タグ回路素子Toを特に図示しない基材などに設けて上記物品Bに貼付可能に構成したものである。
リーダ1は、上記筐体1A内に設けられた本体制御部2と、上記リーダアンテナ3と、上記カメラ12とを有している。本体制御部2は、CPU4と、ハードディスク装置やフラッシュメモリからなりリーダ1の無線通信に関係する各種の通信パラメータや物品Bの管理状況などの各種情報を記憶する不揮発性記憶装置5と、例えばRAMやROM等からなるメモリ6(記憶手段)と、使用者からの指示や情報が入力される操作部7と、各種情報やメッセージを表示する表示部8(報知手段)と、リーダアンテナ3を介し無線タグTとの無線通信の制御を行うRF通信制御部10と、カメラ12を起動して無線タグTの上記発光素子159の発光状態を撮影させる光学駆動部11とを備えている。
RF通信制御部10は、上記リーダアンテナ3を介し上記無線タグ回路素子ToのIC回路部150の情報(タグIDを含む無線タグ情報)へアクセスするものである。
CPU4は、RAMの一時記憶機能を利用しつつROMに予め記憶されたプログラムにしたがって信号処理を行い、それによってリーダ1全体の各種制御を行う。特にCPU4は、無線タグ回路素子ToのIC回路部150から読み出された信号を処理して情報を読み出すとともに無線タグ回路素子ToのIC回路部150へアクセスするための各種コマンド(詳しくは後述する)を生成する。
図3は、上記無線タグTに備えられた無線タグ回路素子Toの機能的構成の一例を表すブロック図である。この図3において、無線タグ回路素子Toは、上述したようにリーダ1のリーダアンテナ3と非接触で信号の送受信を行う上記タグアンテナ151と、このタグアンテナ151に接続された上記IC回路部150と、上記IC回路部150で制御される発光素子159を有している。
IC回路部150は、タグアンテナ151により受信された質問波(後述の各種コマンドを含む信号)を整流する整流部152と、この整流部152により整流された質問波のエネルギを蓄積し駆動電源とするための電源部153と、上記タグアンテナ151により受信された質問波からクロック信号を抽出して制御部157に供給するクロック抽出部154と、所定の情報信号を記憶し得るメモリ部155と、上記タグアンテナ151に接続された変復調部156と、上記リーダ1からの上記コマンドの受信時に当該無線タグ回路素子Toが応答をどの識別スロットに出力するかを決定するための乱数を発生させる乱数発生器158(各種コマンド、識別スロットについての詳細は後述)と、上記メモリ部155、クロック抽出部154、乱数発生器158、及び変復調部156等を介して上記無線タグ回路素子Toの作動を制御するための上記制御部157とを備えている。
変復調部156は、タグアンテナ151により受信された上記無線タグ通信装置1のリーダアンテナ3からの質問波の復調を行い、また、上記制御部157からの返信信号を変調し、タグアンテナ151より応答波(タグIDを含む信号)として送信する。
クロック抽出部154は受信した信号からクロック成分を抽出し、受信したクロック成分の周波数に対応したクロックを制御部157に供給する。
乱数発生器158は、上記リーダ1からの上記コマンド(詳細には後述の「Query」コマンド)に指定されているスロット数指定値Qに対し、0から2Q−1までの乱数を発生させる。
発光素子159は、例えばLEDからなり、制御部157の制御により発光・消光するように構成されている。また、発光素子159が発光する際の電力も上記IC回路部150から得ている。
制御部157は、上記変復調部156により復調された受信信号を解釈し、上記メモリ部155において記憶された情報信号に基づいて返信信号を生成し、この返信信号を上記乱数発生器158により発生させた乱数に対応する識別スロットで上記変復調部156により上記タグアンテナ151から返信する制御等の基本的な制御を実行する。また制御部157は、発光素子159の発光制御手段としても機能する。すなわち、無線タグ回路素子Toがリーダ1からの応答要求(詳細は後述する「Query」コマンド)を受信したときに発光素子159を発光させるとともに、無線タグ回路素子Toが上記応答要求に対応して応答したとき(タグ情報を含む信号をリーダ1に送信したとき。詳細は後述)に発光素子159を消光させるように発光素子159を制御する。
ここで、本実施形態の最も大きな特徴は、リーダ1で情報読み取りが行えた無線タグ回路素子Toの数と、カメラ12で発光素子159の発光状態を撮影できた無線タグTの数との合算結果に基づき、無線タグTからの情報の読み漏らしを防止することにある。以下、その詳細を順次説明する。
まず、リーダ1と無線タグTとの間で送受される信号の送受方法について説明する。図4は、リーダ1と1つの無線タグTの上記無線タグ回路素子Toとの間で送受される信号のタイムチャートの一例を表す図である。図4中では左側から右側に向かって時系列変化で示している。また、リーダ1と無線タグ回路素子Toとの間に記載されている矢印は信号の送信方向を示しており、送信相手が不特定である場合には破線で示し、送信相手が特定されている場合には実線で示している。
この図4において、リーダ1はまず最初にリーダアンテナ3の通信範囲20に位置するすべての無線タグTに対して「Select」コマンドを送信する。この「Select」コマンドは、それ以降にリーダ1が無線通信を行う無線タグ回路素子Toの条件を指定するコマンドである。これにより、各種の条件を指定して情報の読み取り対象とする無線タグ回路素子Toの個数を限定し、無線通信の効率化を図ることができる。無線タグ回路素子Toは、この条件を指定する「Select」コマンドを受信することにより、その後の無線通信を行える状態となる(図中、1つの無線タグ回路素子Toのタイムチャートだけを示している)。
次にリーダ1は、同じ無線タグ群に対してそれぞれの無線タグ回路素子Toのタグ情報(タグIDを含む)を応答するよう要求する応答要求信号である「Query」コマンドを送信する。この「Query」コマンドは、応答すると予想される無線タグ回路素子Toの数が不確定な条件下において探索を行うための乱数を指標とした探索指令であり、一種の乱数発生指示信号を兼ねた信号である。この「Query」コマンドには、所定の数(例えば0から15までのいずれかの値)で指定するスロット数指定値Qが含まれている。RF通信制御部10からリーダアンテナ3を介し「Query」コマンドが送信されると、各無線タグ回路素子Toの無線タグ回路素子Toは0から2Q−1(=2のQ乗−1)までの乱数を乱数発生器158により生成し、スロットカウント値Sとして保持する。
そしてリーダ1は、リーダアンテナ3を介して「Query」コマンドを送信後、所定の識別スロットで無線タグ回路素子Toからの応答を待ち受ける。この識別スロットとは、この「Query」コマンド、又は後述する「QueryRep」コマンドを始めに送信してから所定の期間で区分される時間枠である。識別スロットは、通常、所定回数(「Query」コマンドの第1識別スロット1回と「QueryRep」コマンドの第2以降の識別スロット2Q−1回の計2Q回)が連続して繰り返される。
そして、上記「Query」コマンドにより無線タグ回路素子Toがスロットカウント値Sとして値0を生成すれば、図示の例のように、この「Query」コマンドを含んだ第1識別スロットで応答する。このとき、当該無線タグ回路素子Toはタグ情報を送信する許可を得るための例えば16ビットの擬似乱数を用いた「RN16」コマンドをリーダ1へ送信する。
そして、この「RN16」コマンドを受信したリーダ1は、この「RN16」コマンドに対応する内容でタグ情報の送信を許可する「Ack」コマンドを送信する。この「Ack」コマンドを受信した無線タグ回路素子Toは、その無線タグ回路素子To自身が先に送信した「RN16」コマンドと受信した「Ack」コマンドが対応していると判断した場合に、当該無線タグ回路素子Toの個体がタグ情報の送信を許可されたものとみなしてタグ情報(タグIDを含む応答信号)を送信する。このようにして、一つの識別スロットにおける信号の送受信が行われる。
その後、さらに2番目以降の識別スロットでは、リーダ1は「Query」コマンドの代わりに応答要求信号である「QueryRep」コマンドを送信し、その直後に設けられる識別スロット時間枠で他の無線タグ回路素子To(特に図示せず)の応答を待つ。この「QueryRep」コマンドは一種のスロットカウンタ値減算指示信号を兼ねた信号であり、「QueryRep」コマンドを受信した各無線タグ回路素子Toは自身の上記スロットカウント値Sの値を一つだけ減算して保持し、該スロットカウント値Sが値0になった無線タグ回路素子Toがその時点の識別スロット(図には第4識別スロットまでを図示しているが、実際には第2Q識別スロットまで存在する)で「RN16」コマンド及びタグ情報信号の送受信をリーダ1との間で行う。
なお、各識別スロットで該当する無線タグ回路素子To(当該識別スロットでスロットカウント値Sが0となるもの)がない場合には、「Query」コマンド又は「QueryRep」コマンド以外の送受信が行われないまま所定の時間枠でその識別スロットを終了する。
このように各無線タグ回路素子Toが異なる識別スロットで応答を返信することで、リーダアンテナ3を介し、リーダ1は混信を受けることなく一つ一つの無線タグ回路素子Toのタグ情報を明確に受信し取り込むことができる。そして以上のように「Select」コマンドが送信されてから、「Query」コマンドの送信で始まる第1識別スロット(1回)と、その後の第2識別スロット以降の「QueryRep」コマンドの送信で始まる識別スロットを所定数(通常2Q−1回)繰り返して行うまでの処理単位を読み取り試行処理という(識別スロットは全部で通常2Q個であり、途中で中断しなければ、読み取り試行処理は2Q回を行われる)。また、リーダ1がこの読み取り試行処理を行う回数を読み取り試行回数という。
上述したように、無線タグ回路素子Toには発光素子159が設けられており、この発光素子159は、無線タグ回路素子Toが上記「Query」コマンドを受信すると、制御部157の制御により発光し、無線タグ回路素子Toが上記タグ情報を送信すると、制御部157の制御により消光する。
次に、図5〜図9により、上記のように構成したリーダ1において実行される無線タグTの情報読み取り動作について説明する。図5は、無線タグTの情報読み取り時にリーダ1のCPU4によって実行される制御手順を表すフローチャートである。図6〜図9は、リーダ1による情報読み取り時の無線タグTの様子を表す説明図である。なお、この例では、図6〜図9に示すように、リーダ1が例えば図1の第1の位置において使用者によって使用される場合で、リーダアンテナ3の通信範囲20内に9個の無線タグTA,TB,TC,TD,TE,TF,TG,TH,TIが位置する場合を例にとって説明する。
図5において、リーダ1の電源の投入後(又は例えば操作部7において無線タグTの読み取り処理を開始させる操作が行われると)、このフローが開始される。
まずステップS5において、スロット数指定値Qの値を適宜設定する。その後、ステップS10で、識別スロット順番の変数Cの値を0にリセットする。変数C=0は第1識別スロットに対応する。
そして、ステップS15へ移り、RF通信制御部10及びアンテナ3を介し、通信範囲20内に存在する無線タグ群に対し「Select」コマンドを送信し、ステップS20へ移る。リーダ1の通信範囲20に存在する無線タグTは、無線通信の条件を指定する「Select」コマンドの受信により、その後の無線通信を行える状態となる。図6に示すように、通信範囲20内に9個の無線タグTA〜TIが存在すれば、この9個の無線タグTA〜TIが「Select」コマンドの受信により、その後の無線通信を行える状態となる。
ステップS20では、上記「Select」コマンドの送信に続けて第1識別スロットが開始され、上記「Select」コマンドの送信と同様に第1識別スロットで「Query」コマンドを送信する。リーダアンテナ3の通信範囲20内に存在するすべての無線タグTは、この「Query」コマンドを受信することで制御部157の制御により発光素子159が発光する。すなわち、図6に示すように、リーダアンテナ3の通信範囲20内に位置する9個の無線タグTA〜TIは、すべて「Query」コマンドを受信することにより発光素子159が発光する。なお、送受信する複数のコマンドの間の時間間隔は、適切な間隔となるよう適宜タイミングが調整される(以下、同様)。
その後、ステップS25で、光学駆動部11を介してカメラ12を起動して、カメラ12によって通信範囲20内の無線タグTについて発光素子159による発光状態を撮影する。そして、ステップS30において撮影画像に基づき発光した無線タグTの数をカウントする。図6に示す状態では、リーダアンテナ3の通信範囲20内で9個の無線タグTA〜TIが発光しているので、カウントした発光タグ数は9となる。
そして、ステップS35へ移り、アンテナ3及びRF通信制御部10を介し、所定の時間の間だけ無線タグTからの応答を受信する。その後、ステップS40において、その受信時間の間に「RN16」コマンドを受信したか否かを判定する。この判定において、「RN16」コマンドが受信された場合、判定が満たされ、すなわち当該識別スロットで応答した無線タグTが存在するとみなされて、ステップS45へ移る。図6において、例えば第1識別スロットにおいて無線タグTAの上記スロットカウンタ値Sが0であれば、無線タグTAからの「RN16」コマンドが受信される。
ステップS45では、RF通信制御部10及びアンテナ3を介し、上記ステップS35で受信された「RN16」コマンドに含まれている疑似乱数に対応する内容の「Ack」コマンドを送信する。その後、ステップS50においてアンテナ3及びRF通信制御部10を介し、無線タグTが送信したタグIDを含むタグ情報を受信する。上述の例に沿うと、この第1識別スロットでは無線タグTAが応答するので、リーダ1に無線タグTAのタグIDを含むタグ情報が受信され、無線タグTAはリーダ1にタグ情報を送信した時点で、図7に示すように、発光素子519が消光する。なお、第1識別スロットで応答しない残り8個の無線タグTB〜TIは発光を維持している。
ステップS55では、上記ステップS50において受信したタグ情報からタグIDを抽出して取得し、取得したタグIDをメモリ6に記憶し、その後ステップS60において取得したタグID数を累計(カウントアップ)する。図7の場合、無線タグTAのタグIDが新たに取得されたことで、累計の取得タグID数は1になる。
その後ステップS65で、光学駆動部11を介してカメラ12を起動し、カメラ12によってリーダアンテナ3の通信範囲20内の発光した無線タグTを撮影する。なお、上記ステップS40の判定において、「RN16」コマンドが受信されていない場合、判定が満たされず、当該識別スロットで応答する無線タグTがないものとみなされる。この場合は、直接ステップS65へ移る。ステップS65が終了すると、ステップS70に移る。
ステップS70では、撮影画像に基づき発光した無線タグTの数をカウントする。図7では前述したように8個の無線タグTB〜TIが発光を維持しているので、カウントされる発光タグ数は8となる。
ステップS75では、ステップS60でカウントアップしたタグID数とステップS70でカウントした発光タグ数とを合算する。図7の場合、カウントアップしたタグID数が1であり、発光タグ数が8であるので、タグID数と発光タグ数の合算結果は9である。ステップS80では、このステップS75での合算結果をメモリ6に記憶する。
ステップS85では、変数Cの値が0か否かを判定する。最初に第1識別スロットの状態では前述のようにC=0であるから判定が満たされ、ステップS100に移る。
ステップS100では、変数Cの値に1を加える。上記のようにここまでC=0であったから、これによってC=1となる。これにより、識別スロットが順番を1つ進んだ新たな識別スロット(すなわち第2識別スロット)に切り換えられる。
その後、ステップS105では、変数Cの値が2Q未満であるか否かを判定する。すなわち、前述したように最後の識別スロットは第2Q識別スロットであり、そのときの変数Cの値はC=2Q−1である。したがって、変数Cの値がC<2Qであるかどうかによって、最後の識別スロットであるかどうかを判定する。上記のように第2識別スロットである場合には(Q=0である場合を除き)この時点では最後の識別スロットではなくC<2Qとなるから判定が満たされ、現行の読み取り試行処理が終了していないものとみなされて、ステップS110へ移る。
ステップS110では、RF通信制御部10及びアンテナ3を介し「QueryRep」コマンドを送信して新たな識別スロットを開始する。その後、上記ステップS35に戻り、同様の手順を繰り返す。
すなわち、ステップS35では上記「QueryRep」に対応した無線タグTからの応答を所定の時間の間だけ受信し、この第2識別スロットで応答した無線タグTが存在し「RN16」コマンドが受信されたらステップS40を経てステップS45で「Ack」コマンドを送信し、ステップS50でタグIDを含むタグ情報を受信する。図8は、例えばこの第2識別スロットにおいて、新たに2つの無線タグTC,TDのスロットカウンタ値Sが0になり「RN16」及び(タグIDを含む)タグ情報を送信した場合を示している。図示のように、上記タグ情報の送信によって、新たに2つの無線タグTC,TDが消光する。
その後、上記同様、ステップS50で上記2つの無線タグTC,TDからタグ情報が受信されると、ステップS55でそれら2つの無線タグTC,TDに係わる2つのタグIDが取得され、記憶される。そしてステップS60で、上記新たに取得した2つのタグIDを加え、累計の取得タグID数が3へカウントアップされる。
その後、上記同様、ステップS65で発光した無線タグTを撮像し、ステップS70でカウントする。この第2識別スロットでは図8を用いて前述したように(上記2つの無線タグTC,TDの消光により)発光を維持しているのは6個の無線タグTB,TE,TF,TG,TH,TIであるから、カウントされる発光タグ数は6となる。その後ステップS75で合算が行われて、上記取得タグID数の3と発光タグ数6とを合算して9となり、ステップS80ではこの合算結果9を記憶する。その後、ステップS85に移る。
ステップS85では、この時点でC=1の第2識別スロットであることから判定が満たされず、ステップS90に移る。
ステップS90では、ステップS75での合算で得られた今回の合算結果(上記の例では第2識別スロットでの合算結果9)と、メモリ6に記憶されている前回の合算結果(すなわち直前の第1識別スロットでの合算結果9)とを比較する。
その後、ステップS95では、上記ステップS90での比較に基づき、今回の合算結果と前回の合算結果とが一致するか否かを判定する。上述の例では両方の合算結果が9で一致するので判定が満たされ、ステップS100に移り、上記ステップS105に移る。
このようにして、最終スロットとなってC=2Qとなるまでは、ステップS105→ステップS110→ステップS35→ステップS40→ステップS45→ステップS50→ステップS55→ステップS60→ステップS65→ステップS70→ステップS75→ステップS80→ステップS85→ステップS90→ステップS95→ステップS100→ステップS105のように繰り返す。この繰り返しの間に、Cを1つずつ増加させて識別スロットを切り替え、各識別スロット毎に、「QueryRep」コマンドを送信し取得したタグIDをカウントアップするとともに、応答と共に減少していく発光タグ数をカウントし、それら取得タグID数と発光タグ数との合算結果を、直前の合算結果と比較しつづける。
上記のように識別スロット数を切り替えながら上記手順を繰り返していき、最終スロットとなってC=2Qとなると、ステップS105の判定が満たされなくなり、当該読み取り試行処理における最後の識別スロットが終了したものとみなされて、ステップS115へ移る。
ステップS115では、リーダ1の移動を指示する移動指示(判定結果に応じた読み取りに関する報知の一種)を表示部8に表示し、ステップS120において、RF通信制御部10及びアンテナ3を介し電波送信を停止して、このフローを終了する。なお、対象となるすべての無線タグTの読み取りが終了していた場合は、移動指示ではなく、完了指示(判定結果に応じた読み取りに関する報知の一種)を報知するようにしてもよい。これにより、使用者は、例えば読み取り処理を行っていた第1の位置から第2の位置に移動し、第2の位置において、アンテナ3の通信範囲20内に存在する複数の無線タグTに対し、第1の位置のときと同一の態様の無線通信により情報の読み取りを行う。
一方、上記のように識別スロット数を切り替えながら前述の手順を繰り返してい繰り返している間に、ステップS75での合算で得られた合算結果が、メモリ6に記憶されている前回(すなわち直前)の合算結果に対し一致しなかった場合(無線タグTからのタグ情報の読み漏らしがあった場合)は、上記ステップS95の判定が満たされなくなる。
図9はこのような読み漏らしが生じた場合の一例を表している。図9では、一例として、前述の図8に示した状態で無線通信を行っているときに、リーダ1を持つ使用者の手振れにより1つの無線タグTCが通信範囲20外にはみ出した場合を示している。この場合、前述したように、図8の状態において「QueryRep」が2つの無線タグTC,TDに到達し、それぞれから(タグIDを含む)タグ情報が送信されて2つの無線タグTC,TDが消光している。このような挙動の途中で図9の状態へ通信範囲20がずれると、無線タグTCから送信されたタグ情報をリーダ1が受信できず、タグIDを取得できない。この場合、当該第2識別スロットにおけるカウントアップ後の(累計)取得タグID数は2にとどまる一方、発光タグ数は6となるため、両者の合算結果は8となり、メモリ6に記憶されている前回の第1識別スロットの合算結果9と一致しなくなる。
上記のようにステップS95での判定が満たされない場合は、ステップS125に移る。ステップS125では、無線タグTのタグ情報の読み漏らしがあった旨を表示部8に表示(報知)し(判定結果に応じた読み取りに関する報知の一種)、使用者に警告をする。
その後、ステップS130に移り、RF通信制御部10及びアンテナ3を介し「QueryAdjust」コマンドを各無線タグ回路素子Toに送信し、本フローを終了する。この「QueryAdjust」コマンドとは、上記ステップS20でリーダ1から「Query」コマンドを受信したすべての無線タグ回路素子Toに対し、スロットカウンタ値Sなどの設定を全部リセットして現行の読み取り試行処理に対する待機状態を解除するよう指令するコマンドである。つまり、この「QueryAdjust」コマンドを送信することで、現行の読み取り試行処理は強制的に中断されることになる。この後、使用者は、現行の読み取り処理とは異なる態様で(=別のセッションフラグを用いて)、通信範囲20内に存在する無線タグTに対し、改めて上記ステップS5の「Select」コマンドの送信以下の手順を実行し、無線タグTのタグ情報の読み取りを再度行う。
なお、上記図5のフローにおけるステップS20の手順がそれぞれ各請求項記載の信号送信手段として機能し、ステップS70の手順がそれぞれ第1計数手段として機能する。また、ステップS55の手順が情報取得手段として機能し、ステップS60の手順が第2計数手段として機能し、ステップS75の手順が合算手段として機能する。また、ステップS90の手順が比較手段として機能するとともに判定手段としても機能し、ステップS95及びステップS105の手順が決定手段として機能する。また、ステップS105の判定が満たされてステップS110を経てステップS35に戻り、ステップS45〜ステップS55を経てステップS60を実行するとともにステップS65を経てステップS70及びステップS75を実行するようにする流れが、計算制御手段として機能している。
図10は、図3に示した無線タグ回路素子Toが備える制御部157によって実行される制御手順を表すフローチャートである。この図10において、例えば無線タグ回路素子Toが初期化コマンド(詳細な説明を省略する)を受信してその初期信号により無線電力が与えられるとともに制御部157が初期化されると、無線タグ回路素子Toが起動し、このフローが開始される。
まず、ステップS205で、無線タグ回路素子Toが起動した直後にタグアンテナ151で受信したリーダ1のリーダアンテナ3からの「Select」コマンドの命令内容を解釈する。そして、その命令内容に含まれている指定条件(リーダ1が読み取り対象とする無線タグTの条件)に当該無線タグTが該当するか否かを判定する。当該無線タグTが指定条件に該当しない場合、ステップS205の判定が満たされず、当該無線タグTが該当する指定条件を含む「Select」コマンドを受信するまで同じ手順を繰り返してループ待機する。一方、当該無線タグTが該当する指定条件を含む「Select」コマンドを受信した場合、ステップS205の判定が満たされ、ステップS210へ移る。
ステップS210では、タグアンテナ151で受信したリーダ1のリーダアンテナ3からの「Query」コマンドの命令内容を解釈するよう受信制御する。このとき、「Query」コマンドに含まれるスロット数指定値Qをメモリ部157に記憶させる。
その後、ステップS215へ移り、上記ステップS210でメモリ部157に記憶されたスロット数指定値Qに基づいて、0から2Q−1までの乱数を乱数発生器158により発生させ、その値をスロットカウント値Sとする。このスロットカウント値Sにより、当該無線タグTが応答する前述の識別スロットが決定される。
そして、ステップS220へ移り、発光素子159を発光させる。その後、ステップS225へ移る。
ステップS225では、スロットカウント値Sが0となったか否かを判定する。スロットカウント値Sが0でない場合、判定が満たされず、すなわちまだ応答すべき識別スロットに達していないとみなされてステップS230へ移る。ステップS230では、タグアンテナ151を介して上記「QueryAdjust」コマンドを受信したか否かを判定する。「QueryAdjust」コマンドを受信していない場合、判定が満たされず、すなわちリーダ1から現行の読み取り試行処理を中断する指示がなされていないものとみなされ、ステップS235へ移る。一方、上記ステップS230において、「QueryAdjust」コマンドを受信した場合、ステップS230の判定が満たされ、すなわちリーダ1から現行の読み取り試行処理を中断するよう指示されたものとみなされ、ステップS205へ戻って(新たな読み取り試行処理を開始するよう)同様の手順を繰り返す。
ステップS235では、図5のフローのステップS100においてリーダ1から送信される「QueryRep」コマンドをタグアンテナ151を介し受信したか否かを判定し、受信するまでステップS230に戻り、その時点の識別スロットの間上記同様の受信制御を繰り返す。「QueryRep」コマンドを受信した場合、ステップS235の判定が満たされて、ステップS240へ移り、スロットカウント値Sを1減算してステップS225へ戻り、同様の手順を繰り返す。
一方、上記ステップS225の判定においてスロットカウント値Sが0となっていた場合、判定が満たされ、すなわち当該無線タグ回路素子Toが応答すべき識別スロットに達したとみなされて次のステップS245へ移る。ステップS245では、例えば16ビットの疑似乱数を用いた「RN16」コマンドを変復調部156で生成させ、所定のタイミングでタグアンテナ151を介しリーダ1へ返信する。
その後、ステップS250へ移り、上記ステップS245で送信した「RN16」コマンドに含まれる疑似乱数に対応した内容の「Ack」コマンドをタグアンテナ151を介して受信したか否かを判定する。タグアンテナ151を介して「Ack」コマンドが受信され、その内容が先に無線タグ回路素子To自身が送信した「RN16」コマンドに含まれている疑似乱数を反映した内容である場合、判定が満たされ、すなわち当該無線タグ回路素子Toの個体がリーダ1からタグ情報の送信を許可されたものとみなしてステップ255へ移る。
ステップS255では、タグアンテナ151を介してその無線タグ回路素子ToのタグIDを含むタグ情報をリーダ1に送信する。その後、ステップS260に移り、発光素子159を消光させる。そしてステップS205へ戻り、同様の手順を繰り返す。
一方、上記ステップS250の判定において、タグアンテナ151を介し「Ack」コマンドが受信されなかった場合(又は受信してもその内容が先に送信した「RN16」コマンドに含まれている疑似乱数を反映していない場合)、判定が満たされない。すなわち、何らかの外的要因で無線通信が失敗した(又は同一の識別スロットでリーダ1が他の無線タグ回路素子Toに対してタグ情報の送信を許可した)とみなし、何も信号を送信することなくそのままステップS205へ戻る。
以上説明したように、本実施形態のリーダ1においては、使用者は、リーダアンテナ3の通信範囲20を順次移動させながら、複数の無線タグ回路素子Toに対し情報読み取りを行うとき、発光状態にある無線タグTの数をカメラ12で撮像してカウントする(図5のステップS70)とともに、タグIDを取得できた無線タグTの数(タグIDの数)をカウントする(ステップS60)。そして、識別スロットが次のスロットに進み「QueryRep」コマンドを送信する都度(ステップS105→ステップS110→ステップS35への流れ参照)、上記発光タグ数とタグID数とを合算する(ステップS75参照)。
前述したように無線タグTの読み漏らしが発生していなければ、上記ステップS75での合算結果は、それ以前のメモリ6に記憶された合算結果とは一致するはずである。そこで、これら2つの合算結果をステップS90で比較し、それらが互いに一致するか一致しないかに応じて、ステップS105において、それ以降の無線通信の態様を決定する。
すなわち、合算結果が一致している場合、その時点までは通信範囲20内の無線タグTからの情報の読み漏らしは発生していない。しかしながら、もし発光状態の無線タグTがまだ残存していたら、「QueryRep」が無線タグTに届いているものの(応答する識別スロットにまだ切り替わっておらず)当該無線タグTからの応答がまだ送信されていない。本実施形態では、スロット切り替わりに対応してステップS110からステップS110へ移行したときに、同一のセッションフラグを用いた「QueryRep」コマンドの送信を新たに行い、当該無線タグTからの応答を促す。これにより、その後のいずれかの識別スロットにおいて発光状態の当該無線タグを応答させることができるので、(読み漏らしを回避しながら)引き続き情報読み取りを継続していくことができる。
また、合算結果が一致し、さらに発光状態の発光素子159が残存していない場合には、通信範囲20内のすべての無線タグTから、(情報の読み漏らしが発生することなく)タグIDの取得が完了したこととなる。本実施形態では、ステップS115において、リーダ1の表示部8に移動指示を表示し、操作者に対し、電波の送信を停止後リーダ1を移動するよう促す。これにより、通信範囲20内のすべての無線タグTからタグ識別情報の取得が完了したことを操作者に確実に認識させるとともに、リーダ1を移動して新たな通信範囲20を形成し情報読み取りを行うよう、促すことができる。この結果、操作者は、リーダ1を移動させて通信範囲20の位置を(例えば上記第1位置から第2位置へ)変え、新たに同一セッションフラグを用いて情報読み取りを行う(図5のフローが改めて実行される)。この場合、既に応答済みの無線タグTが再度応答信号を送信することはないことから、当該新たな通信範囲20(上記の例では第2位置にリーダ1がある場合に対応した通信範囲20)に位置する複数の無線タグTに対し、上記同様、読み漏らしによる弊害を回避しつつ情報読み取りを行うことができる。
なお、図5のフローチャートでは、合算結果が一致し、さらに発光状態の発光素子159が残存していない場合でも、ステップS105(C<2Q)の条件を満たすまで処理を続けているが、合算結果が一致し、発光状態の発光素子が残存していない場合、読取対象のタグをすべて読み終わっているため,この時点でステップS115の処理へ移行しても良い。
一方、合算結果が一致していない場合には読み漏らしが生じている(「Query」コマンドが無線タグTに届き応答が送信されているにもかかわらずその無線タグのタグIDが取得されていない)とみなしてステップS125で警告報知を行う。また、ステップS130で「QueryAdjust」コマンドを送信して、もう一度最初から(別のセッションフラグを使用しての)情報読み取りを操作者に実行させるようにする。これにより、読み漏らしに気づかないまま、無線タグTの設置対象である物品Bの検出漏れが起こるのを回避でき、利便性を向上することができる。また特に、リーダアンテナ3を備えたリーダ1を移動させつつ情報読み取りを行う際に、読み取りを意図するすべての無線タグTに対し、各無線タグTの発光素子159を一度光らせるようにしつつ情報読み取りを行うようにすれば、すべての無線タグTに対して確実に「Query」コマンドを届かせることができる。したがって、発光素子159が光った後、光らなくなるまで情報読み取りを継続することで、物品Bのチェック漏れ(無線タグTの読み飛ばし)がなくなり、物品Bの棚卸しや数量確認等を精度よく行うことができる。
また、図4等を用いて既に述べたように、複数の識別スロットを順次切り替えながら無線タグ回路素子Toからの応答を受信する場合、各無線タグ回路素子Toは、自らに対応する識別スロットに切り替えられたときに、初めて応答を送信する。したがって、識別スロットが切り替えられるのに従い、複数の無線タグ回路素子Toのうち応答するものが適宜出現し、それらからタグIDを含むタグ情報が新たに取得される。本実施形態では特に、上記のような識別スロットの切り替え時を契機として、上記発光タグ数のカウント(ステップS70)、タグID数のカウント(ステップS60)、発光タグ数とタグID数との合算(ステップS75)を行う。これにより、識別スロットの切り替わりの前後で読み漏らしが生じていないかどうかを確実にチェックし、読み漏らしのチェックを高頻度で確実に行うことができる。
なお、上記実施形態においては、無線タグ回路素子Toは、応答信号を送信したときに消光するようにしたが、これに限られない。すなわち例えば、Quietコマンド等を受信したときに消光するようにしてもよい。いずれにしても、応答を完了したときに消光するようにすれば、同様の効果を得ることができる。
また、上記実施形態では、リーダ1がタグIDを取得できた無線タグ回路素子Toの累計数(第2計数手段の計数結果)と、カメラ12で発光素子159の発光状態を撮影できた無線タグTの数(第1計数手段の計数結果)とを合算した。そしてその合算結果が過去のものと同じ値であるかどうかを比較することにより、上記第1計数手段と第2計数手段の計数結果の総和に変化があったかどうかを判定したが、これに限られない。すなわち、タグID取得数の増加数(新たにタグIDがいくつ取得できたか)と、発光タグの数の減少数(新たに消光したタグがいくつあるか)とが、常に一致しているかどうか(時間の経過と共に不一致となったかどうか)を監視することで、結果的に、上記第1計数手段と第2計数手段の計数結果の総和の変化の有無を判定するようにしてもよい。この場合も、同様の効果を得る。
なお、本発明は、上記に限られるものではなく、その趣旨及び技術思想を逸脱しない範囲で種々の変形が可能である。以下、そのような変形例を順を追って説明する。
(1)取得したタグID数が増加した場合にのみタグID数と発光タグ数の合算結果の比較を行う場合
上記実施形態では、無線タグTからの「RN16」コマンドの受信がなく、取得したタグIDの増加がないときでも、タグID数と発光タグ数の合算結果を直前の合算結果と比較していた(ステップS40→ステップS65の流れを参照)。しかし、タグIDの取得がなかった識別スロットでは、タグID数の増加も発光タグ数の減少もなく、タグID数と発光タグ数の合算結果は、直前の合算結果と変わらない。本変形例では、このような場合に鑑み、取得したタグIDが増加した場合にのみタグID数と発光タグ数の合算結果を比較するようにしたものである。
図11は、本変形例における無線タグTの情報読み取り時にリーダ1のCPU4によって実行される制御手順を表すフローチャートであり、上記実施形態における図5に相当するものである。
この変形例の図11のフローは、ステップS40において「RN16」コマンドの受信がなく、判定が満たされない場合、ステップS40からステップS65に移らずに直接ステップS100に移る(言い換えればステップS65〜ステップS95の手順を省略する)点のみが、上記実施形態の図5のフローと異なる。すなわち、無線タグTからの「RN16」コマンドの受信がない場合は、タグIDの取得もなく、取得したタグID数の増加も発光タグ数の減少もないので、タグID数と発光タグ数の合算結果は、ステップS95の判定を待つまでもなく、直前の合算結果と一致している。そこで、本変形例では、ステップS40→ステップS100と移行させ、新たな識別スロットにおける情報の読み取りを行わせる。
一方、ステップS40において、「RN16」コマンドが受信され、判定が満足された場合は、上記実施形態と同様であり、ステップS40に続けてステップS45〜ステップS95の手順を行い、取得したタグID数と発光タグ数の合算結果を直前の合算結果と比較する。
このように、本変形例では、上記のような順次新たに取得されるタグIDの新たな取得時(言い換えればタグIDの取得数の変動時)を契機として、上記発光タグ数のカウント(ステップS70)、タグID数のカウント(ステップS60)、発光タグ数とタグID数との合算(ステップS75)を行う。これにより、上記実施形態と同様、新たな無線タグ回路素子ToからのタグID取得の前後で、読み漏らしが生じていないかどうかをチェックし、読み漏らしのチェックを高頻度で確実に行える。また、タグIDの取得数が変動しない場合は上記カウントや上記合算を省略することで、制御手順を簡素化できる効果もある。
なお、以上で用いた「Select」コマンド、「Query」コマンド、「RN16」コマンド、「Ack」コマンド、「QueryRep」コマンド、「QueryAdjust」コマンド等は、EPC globalが策定した仕様に準拠しているものとする。EPC globalは、流通コードの国際機関である国際EAN協会と、米国の流通コード機関であるUniformed Code Council(UCC)が共同で設立した非営利法人である。なお、他の規格に準拠した信号でも、同様の機能を果たすものであればよい。
なお、上記フローチャートは本発明を上記フローに示す手順に限定するものではなく、発明の趣旨及び技術的思想を逸脱しない範囲内で手順の追加・削除又は順番の変更等をしてもよい。
また、以上既に述べた以外にも、上記実施形態や各変形例による手法を適宜組み合わせて利用しても良い。
その他、一々例示はしないが、本発明は、その趣旨を逸脱しない範囲内において、種々の変更が加えられて実施されるものである。