以下、本発明の一実施の形態を図面を参照しつつ説明する。
図1は、本実施形態の無線タグ通信システムを倉庫に適用した場合の一例を表す平面図である。この例では、倉庫300内での監視対象として、予めその倉庫300内の所定の物品棚301に配置された多数の管理対象の物品302が設定されおり、各管理対象物品302には個々の物品に対応した無線タグTが添付(あるいは同梱等でもよい)されている。
そして、リーダ(質問器)1により、上記無線タグTを探索し読み取ることで、その無線タグTに対応する管理対象物品についての倉庫300内における存在状況を検出する。この例においてリーダ1が行う探索処理は、無線タグTが倉庫300内に存在する数、およびそれぞれの識別情報(以下、タグIDという)を含む無線タグ情報を検出するようになっている。また、倉庫300内には、コードレス電話303やPC(パーソナルコンピュータ)等を接続する無線LAN装置304などの無線通信機器が設置されている。
ここで、各無線タグTとリーダ1との間の無線通信については、一般に所定の周波数帯域中における複数の周波数チャンネルの搬送波を利用して無線通信を行うようになっており、これにより以下の3つの利点が得られる。
まず、各無線タグTとリーダ1との間の無線通信では、相互の最短距離で直接波Wdを送受する他に、壁際や障害物の近傍に位置する無線タグTの場合はリーダ1との間で反射波Wrも同時に送受することになるが、このような複数の経路で電波を送受するマルチパスの影響により直接波Wdと反射波Wrが相互に電波強度を減衰してしまう(通信経路の差によりそれぞれ逆の位相で送受される)場合がある。図2はこのようなマルチパスの影響を表す図であり、この例では、破線で示すような無線タグ回路素子Toのタグアンテナ特性(通信に使用可能な周波数帯域fa〜fi)において、コードレス電話303の通信周波帯がfhであり、また無線LAN装置304の通信周波帯がfc〜feであるため、それらの影響によって図示のように周波数fc,fe,ff,fg,fiにおける無線タグ回路素子Toの電波強度が小さくなっている。
これに対し、搬送波の周波数を変えて(すなわち各無線タグTのそれぞれの配置に対応する複数の周波数チャンネルを用いて)無線通信を行うことで、このようなマルチパスの影響を解消又は低減することができる。
次に、各無線タグTのアンテナの周波数特性に個体別のばらつきがある場合に対し、各アンテナの周波数特性に最も適する周波数チャンネル(つまり共振周波数)を用いることで確実な無線通信を行うことができ、これは特にリーダ1との通信距離が長い無線タグTに対して有効である。
そして、上記の例のように他の無線通信機器が設置されている場合に、それが利用している周波数以外の周波数チャンネルで無線通信を行うことで混信・妨害を避けることができる。
以上の利点から、リーダ1は各無線タグTが個別に対応する周波数チャンネル(以下、ホップ周波数という)を切り替えて無線通信を行う(以下、周波数ホッピング通信という)ようになっている(周波数ホッピング通信については後に詳述する)。なお、所定の周期で切り替えられる(ホッピングされる)各ホップ周波数としては、例えば上記所定の周波数帯域中に均等に分布する周波数に設定することができる。
図3は、本実施形態の無線タグ通信システム100の概略を表すシステム構成図である。
図3において、この無線タグ通信システム100は、上述したように管理対象となる物品に添付させる無線タグTと、これら無線タグTとのホッピング無線によりそれぞれのタグIDを含む無線タグ情報の検出を行うリーダ1とから構成されている。
無線タグTは、タグ側アンテナ151とIC回路部150とを備える無線タグ回路素子Toを有しており、この無線タグ回路素子Toを特に図示しない基材などに設けた構成のものである(無線タグ回路素子Toについては後に詳述する)。
リーダ1は、本体制御部2と、リーダアンテナ3とを有している。本体制御部2は、CPU4と、ハードディスク装置やフラッシュメモリなどの不揮発記憶装置からなり各ホップ周波数に対応するスロット数指定値(識別スロット数Mを決定する値)などの相関情報を格納するホップテーブル(詳しくは後述する)等の各種情報を記憶する不揮発記憶装置5と、例えばRAMやROM等からなるメモリ6と、操作者からの指示や情報が入力される操作部7と、各種情報やメッセージを表示する表示部8と、リーダアンテナ3を介し無線タグTとのホッピング通信の制御を行うRF通信制御部9とを備えている。
なお、不揮発記憶装置5は、リーダ1内に固定的に設けることに限らず、リーダ1に対して着脱可能に設けたものや、または何らかの通信回線を介してリーダ1と情報を送受可能に接続した外部のデータベースを利用してもよい。
図4は、上記リーダ1におけるCPU4、不揮発記憶装置5、RF通信制御部9、及びリーダアンテナ3の詳細構成を表す機能ブロック図である。この図4において、リーダ1のRF通信制御部9は、上記リーダアンテナ3を介し上記無線タグ回路素子ToのIC回路部150の情報(タグIDを含む無線タグ情報)へアクセスするものであり、またリーダ1のCPU4は不揮発記憶装置5に格納されているホップテーブルを参照してホップ周波数を切り替えつつ無線タグ回路素子ToのIC回路部150へアクセスするための応答要求コマンド(詳しくは後述する)を生成するとともに無線タグ回路素子ToのIC回路部150から読み出された信号を処理して情報を読み出すものである。
RF通信制御部9は、リーダアンテナ3を介し無線タグ回路素子Toに対して信号を送信する送信部212と、リーダアンテナ3により受信された無線タグ回路素子Toからの応答波を入力する受信部213と、送受分離器214とから構成される。
送信部212は、無線タグ回路素子ToのIC回路部150の無線タグ情報にアクセスする(この例では読み取り及び書き込み)ための搬送波を発生させる水晶振動子215A、CPU4の制御により所定の周波数の信号を発生させるPLL(Phase Locked Loop)215B、及びVCO(Voltage Controlled Oscillator)215Cと、上記CPU4から供給される信号に基づいて上記発生させられた搬送波を変調(この例ではCPU4からの「TX_ASK」信号に基づく振幅変調)する送信乗算回路216(指令生成手段;但し「TX_ASK信号」の場合は増幅率可変アンプ等を用いてもよい)と、その送信乗算回路216により変調された変調波を増幅(この例ではCPU4からの「TX_PWR」信号によって増幅率を決定される増幅)する可変送信アンプ217とを備えている。そして、上記発生される搬送波は、例えばUHF帯、マイクロ波帯、あるいは短波帯などの周波数帯を用いており、CPU4はそのいずれかの周波数帯でその中の複数のホップ周波数(周波数チャンネル)を所定の周期で切り替えて搬送波を生成させるようPLL215Bを制御する。上記送信アンプ217の出力は、送受分離器214を介しリーダアンテナ3に伝達されて無線タグ回路素子ToのIC回路部150に供給される。なお、無線タグ情報は上記のように変調した信号に限られず、単なる搬送波のみの場合もある。
受信部213は、リーダアンテナ3で受信された無線タグ回路素子Toからの応答波と上記発生させられた搬送波とを乗算して復調する受信第1乗算回路218と、その受信第1乗算回路218の出力から必要な帯域の信号のみを取り出すための第1バンドパスフィルタ219と、この第1バンドパスフィルタ219の出力を増幅する受信第1アンプ221と、この受信第1アンプ221の出力をさらに増幅してデジタル信号に変換する第1リミッタ220と、上記リーダアンテナ3で受信された無線タグ回路素子Toからの応答波と上記発生された後に移相器227により位相を90°遅らせた搬送波とを乗算する受信第2乗算回路222と、その受信第2乗算回路222の出力から必要な帯域の信号のみを取り出すための第2バンドパスフィルタ223と、この第2バンドパスフィルタ223の出力を増幅する受信第2アンプ225と、この受信第2アンプ225の出力をさらに増幅してデジタル信号に変換する第2リミッタ224とを備えている。そして、上記第1リミッタ220から出力される信号「RXS−I」及び第2リミッタ224から出力される信号「RXS−Q」は、上記CPU4に入力されて処理される。
また、受信第1アンプ221及び受信第2アンプ225の出力は、強度検出手段としてのRSSI(Received Signal Strength Indicator)回路226にも入力され、それらの信号の強度を示す信号「RSSI」がCPU4に入力されるようになっている。このようにして、リーダ1では、I−Q直交復調によって無線タグ回路素子Toからの応答波の復調が行われる。
そして、上記リーダ1はこの例では倉庫300内の空間全体をその通信範囲に納め、その通信範囲内に存在する複数の無線タグTの無線タグ回路素子Toに対してそれぞれのタグIDを応答信号として発信させるよう要求する応答要求コマンド(探索指令)を送信する。
この応答要求コマンドは、各ホップ周波数において応答すると予想される無線タグ回路素子Toの数が不確定な条件下において探索を行うための探索指令である。この応答要求コマンドには、例えばこの例で0から15までのいずれかの値で指定するスロット数指定値Qが含まれており、RF通信制御部9からリーダアンテナ3を介し応答要求コマンドが送信されると各無線タグ回路素子Toは0から2Q−1(=2のQ乗−1)までのスロットカウント値Sを乱数により生成保持する。
またCPU4及びRF通信制御部9がリーダアンテナ3を介して該コマンドを送信後、所定の識別スロットで無線タグ回路素子Toからの応答を待ち受ける。無線タグ回路素子Toでスロットカウント値Sとして値0を生成したものはこのスロットで応答する。
その後、さらにCPU4及びRF通信制御部9はスロットカウント減算コマンドを送信し、直後に設けられた所定の識別スロット時間枠で無線タグ回路素子Toの応答を待つのである。スロットカウント減算コマンドを受信した各無線タグ回路素子Toは自身のスロットカウント値Sを減算し保持し、該スロットカウント値Sが値0になった時点の識別スロットでタグIDを含む応答信号あるいはID送信の許可を得るための例えば16ビットの擬似乱数を用いた応答信号を送信するのである。そしてこのスロットカウント減算コマンドの送信と識別スロットでの受信を2Q−1回繰り返す。
このように各無線タグ回路素子Toが異なる識別スロットで応答信号を返信することで、リーダアンテナ3を介し、RF通信制御部9及びCPU4は混信を受けることなく一つ一つの無線タグ回路素子ToのタグIDを明確に受信し取り込むことができる(詳細は後述する)。
また、上記リーダ1は、この例では、情報検出処理(後述の図10参照)を行う際に、応答信号が得られた無線タグ回路素子Toに対してその後しばらくの間無線通信動作を停止させる(=休眠状態とさせる)休眠化信号(「Sleep」信号)も送信することが可能である。この「Sleep」信号は、リーダ1が通信範囲内に存在する多数個の無線タグTからそれぞれのタグIDを読み取る際に、一回の読み取り動作(所定のホップ周波数において応答要求コマンドを一回送信して行う読み取り動作)で対応する無線タグTの応答信号を全て受信できない場合でも、すでに応答信号を受信できた無線タグTに対してのみ「Sleep」信号を送信して停止させることで、それ以降に繰り返し同じ条件の読み取り動作を行ったときにはまだ正常に読み取れていない無線タグ回路素子Toに対してだけ読み取り動作を行うことができる。RF通信制御部9からリーダアンテナ3を介し応答要求コマンドが送信されると、各無線タグ回路素子Toは所定の条件(所定時間の経過、又は「Sleep解除」信号の受信)が満たされるまで無線通信動作の停止状態を維持する。
なお、応答した無線タグ回路素子Toが自ら所定の応答済みフラグを例えばAからBに反転させ、質問器から応答済みフラグがAのタグのみ指定して応答要求コマンドを送信する場合は応答済みフラグがBの無線タグ回路素子Toは応答できず実質的に休眠状態となるので、このようなフラグ指定も休眠化信号の一種である。
図5は、上記無線タグTに備えられた無線タグ回路素子Toの機能的構成の一例を表すブロック図である。この図5において、無線タグ回路素子Toは、上記リーダ1側の上記リーダアンテナ3と短波帯(例えば13.56MHz)、UHF帯、マイクロ波帯等の高周波を用いて非接触で信号の送受信を行うタグ側アンテナ151と、このタグ側アンテナ151に接続された上記IC回路部150とを有している。
IC回路部150は、タグ側アンテナ151により受信された搬送波を整流する整流部152と、この整流部152により整流された搬送波のエネルギを蓄積し駆動電源とするための電源部153と、上記タグ側アンテナ151により受信された搬送波からクロック信号を抽出して制御部157に供給するクロック抽出部154と、無線タグTのタグIDなどの所定の情報信号を記憶し得る情報記憶部として機能するメモリ部155と、上記タグ側アンテナ151に接続されて信号の変調及び復調を行う変復調部156と、上記リーダ1からの上記応答要求コマンドの受信時に当該無線タグ回路素子Toが応答信号(リプライ信号)をどの識別スロットに出力するかを決定するための乱数を発生させる乱数発生器158(詳細は後述)と、上記整流部152、クロック抽出部154、変復調部156、及び乱数発生器158等を介して上記無線タグ回路素子Toの作動を制御するための制御部157と、スロットカウンタ159とを備えている。
変復調部156は、タグ側アンテナ151により受信された上記リーダ1のリーダアンテナ3からの通信信号の復調を行うと共に、上記制御部157からの返信信号に基づき、アンテナ151が受信した搬送波を変調し、アンテナ151より反射波として再送信する。
乱数発生器158は、上記リーダ1からの上記応答要求コマンドに指定されているスロット数指定値Qに対し、0から2Q−1までの乱数を発生させる。制御部157はこれをスロットカウンタ159に保存する。スロットカウント減算コマンドを受信する度にこのスロットカウンタ159のカウント値を1つ減算し、カウント値が0になった場合に応答を行う。
この制御部157は、リーダ1と通信を行うことにより上記メモリ部155に上記所定の情報を記憶する制御や、上記タグ側アンテナ151により受信された質問波(応答要求コマンド)を上記変復調部156において上記メモリ部155に記憶された情報信号に基づいて変調したうえで応答波(応答信号)とし、これを上記乱数発生器158により発生させた乱数に対応する識別スロットで上記タグ側アンテナ151から応答波を反射返信する制御等の基本的な制御を実行する。また、上記「Sleep」信号を受信した際には無線通信動作を停止させるよう制御する。
クロック抽出部154は受信した信号からクロック成分を抽出して制御部157にクロックを抽出するものであり、受信した信号のクロック成分の速度に対応したクロックを制御部157に供給する。
なお、メモリ部155には少なくとも、各無線タグ回路素子Toを個体別に識別するためのタグIDが予め記憶されており、制御部157は自己のタグIDを含めた応答信号を発信するようになっている。
ここで、本実施形態の無線タグ通信システム100の最も大きな特徴は、複数の無線タグTが存在する通信範囲内で、リーダ1がホッピング通信によりホップ周波数を切り替えて無線タグTを探索する際に、その各ホップ周波数に基づいて識別スロット数Mを適切に設定することにある。以下、その詳細を順次説明する。
まず、リーダ1の不揮発記憶装置5に格納保持される上記ホップテーブルについて説明する。図6は、本実施形態におけるホップ周波数とスロット数指定値初期値及び各種変数との対応を管理するホップテーブルの一例を概念的に表す図である。
図6において、このホップテーブルは、例えば、ある特定の一つの通信対象区域(この例では倉庫300内の空間)に対応するものである。図6に示すように、この例では、1から9までの連続した9つの参照番号N(図中では上方から下方に向けて昇順で並べて示している)と、その参照番号Nに応じたホップ周波数f(N)と、そのホップ周波数f(N)毎にそれぞれ応答信号が受信できると想定される受信対象想定個数に対して適切な識別スロット数Mに対応したスロット数指定値Qの初期値Qini(N)と、後述する衝突検出処理や読取確認処理で実際に用いるスロット数指定値変数Q(N)と、後述する衝突検出処理で検出された応答信号の衝突数C(N)と、スロット数指定値変数Q(N)の変更時に過去の変更回数を参照するための変更変数(変更回数変数)H(N)と、スロット数指定値変数Q(N)の設定が完了したかを確認するための設定完了確認フラグK(N)とが、予めそれぞれ対応付けられた相関情報として形成されている。
このとき、カッコ内の「(N)」の表記は、参照番号Nを引数としてそれに対応するスロット数指定値変数を表す記述であり、例えば参照番号N=1の場合に対応するスロット数指定値変数Q(N)はQ(1)を意味する。また、ホップテーブル中の上記各種項目のうち、参照番号N、ホップ周波数f(N)、及びスロット数指定値初期値Qini(N)は、上記不揮発記憶装置5に予め所定の適切な数値が入力格納されているものであるが、他のパラメータであるスロット数指定値変数Q(N)、衝突数C(N)、変更変数H(N)、及び設定完了確認フラグK(N)は、リーダ1が行う探索処理(後述の図7〜図10参照)で内容が書き換えられる変数として扱われるパラメータであり、不揮発記憶装置5においては初期値(又は不定値)が格納される。
ホップ周波数f(N)は、前述したように所定の周波数帯中に設定された複数(この例では9つであるが他の個数でもよい)の周波数であり、それら周波数どうしの高低関係は参照番号Nの順に関係なくランダムに設定されている。
スロット数指定値Qの初期値Qini(N)は、実際の探索対象想定個数に適切な識別スロット数Mあるいはそれより少なめに設定された識別スロット数Mに対応して設定される。この指定値初期値Qini(N)は、監視対象となるリーダ1の通信対象区域ごとに最初の探索処理を行う前に予めホップ周波数f(N)毎に入力設定されるものである。
図7は、リーダ1のCPU4によって実行される制御手順を表すフローチャートである。
図7において、この例では、電源の投入後(又は例えば操作部7において無線タグTの探索を開始させる操作が行われると)、このフローが開始される。
まず、ステップS5において、参照変数Nvの値を1に、全ての変更変数(図中ではH(1〜9)と表記)の値を0に、全ての設定完了確認フラグ(図中ではK(1〜9)と表記)の値を0に、各スロット数指定値変数Q(N)の値をそれぞれ対応するスロット数指定値初期値Qini(N)に代入(図中ではQ(1〜9)=Qini(1〜9)と表記)するよう初期化する。なお、参照変数Nvはメモリ6などに書き換え可能に記憶される変数であり、各パラメータでそれぞれ参照番号Nに対応するものを特定するための引数として用いるものである。
次にステップS10へ移り、設定完了確認フラグK(Nv)が1であるか否か、すなわち参照変数Nvに対応する(ホップ周波数f(Nv)に対応する)スロット数指定値変数Q(Nv)の設定が完了しているか否かを判定する。設定完了確認フラグK(Nv)が1となっている場合、判定が満たされ、ステップS65へ移る。一方、設定完了確認フラグK(Nv)が初期値の0のままである場合、判定が満たされず、すなわちまだ参照変数Nvに対応するスロット数指定値変数Q(Nv)の設定が適切に完了していないものとみなされてステップS15へ移る。
ステップS15では、上記ホップテーブルから参照変数Nvに対応するホップ周波数f(Nv)を取得し、それに基づく制御信号を送信部212のPLL215(図4参照)に出力してホップ周波数f(Nv)の搬送波をRF通信制御部9に発生させる。
次にステップS200へ移り、衝突検出処理を行う。この衝突検出処理は、上記ステップS15で設定したホップ周波数f(Nv)の周波数チャンネルにおいて、その時点でのスロット数指定値変数Q(Nv)をスロット数指定値として含んだ応答要求コマンドを送信した場合に、各無線タグTから受信する応答信号が衝突した(または判別不可能となった)識別スロットの個数を衝突数C(Nv)として検出する(後述の図9参照)。
次にステップS20へ移り、上記ステップS200の衝突検出処理で検出した衝突数C(Nv)(後述する図9のステップS225参照)が、その時点のスロット数指定値変数Q(Nv)で決定される識別スロット数Mの半分(2Q(Nv)−1)より多いか否か、すなわち上記ステップS200の衝突検出処理において応答信号の衝突頻度が過剰であるか否かを判定する。衝突数C(Nv)が2Q(Nv)−1より大きい場合、判定が満たされ、すなわち何らかの原因によりホップ周波数f(Nv)における衝突頻度が過剰となっていることからスロット数指定値変数Q(Nv)を修正する必要があるとみなされて次のステップS25へ移る。なお、上記の2Q(Nv)−1は、スロット数指定値変数Q(Nv)の増加修正の必要性を判定するためのしきい値(この例では識別スロット数Mの半分という割合)の一例であり、他の値や割合を適宜用いることも可能である。
ステップS25では、変更変数H(Nv)の値が2より少ないか否か、すなわちそれまでにスロット数指定値変数Q(Nv)の修正がまだ1回しか行われていない(今回が2回目以降である)か否かを判定する。変更変数H(Nv)が2より少ない場合、判定が満たされ、すなわち通常にスロット数指定値変数Q(Nv)を増加修正すべきであるとみなしてステップS30へ移る。
ステップS30では、スロット数指定値変数Q(Nv)の値を1増加し、すなわち上記ステップS200の衝突検出処理における識別スロット数M(=2Q(Nv)−1)を2倍に増加するよう修正変更する。このようにスロット数指定値変数Q(Nv)の修正回数を1回増やしたことに対応して、次のステップS35で変更変数H(Nv)の値を1増加させ、ステップS65へ移る。
一方、上記ステップS25の判定において、変更変数H(Nv)の値が2以上であって今回のスロット数指定値変数Q(Nv)の修正が2回目以降である場合、判定が満たされず、ステップS40〜ステップS60の手順による妨害波対策のためのスロット数指定値数変数Q(Nv)の修正変更を行う。これは、上記ステップS30でスロット数指定値変数Q(Nv)の値を1増加し識別スロット数Mを初期の2倍に増加してもなお衝突頻度の過剰状態が認められていることから、本変形例では特にこの場合、衝突頻度が過剰となっている原因が当該ホップ周波数f(Nv)において他の無線通信機器(コードレス電話303や無線LAN装置304など;図1、図3参照)から妨害波が出力されていることによるものとみなしている。そのため、これ以上スロット数指定値変数Q(Nv)を通常に増加修正(識別スロット数Mを初期の4倍以上に修正)することは無意味であるとしてステップS40へ移り、妨害波対策のためのスロット数指定値数変数Q(Nv)の修正変更を行う。
ステップS40では、変更変数H(Nv)の値が10であって今回のスロット数指定値変数Q(Nv)の修正が10回目であるか否かを判定する。変更変数H(Nv)の値がまだ10に到達していない場合、判定が満たされず、すなわちまだ妨害波の出力が継続されていると想定し、通常の衝突数の検出は困難であるとみなしてステップS45へ移る。
ステップS45では、スロット数指定値変数Q(Nv)の値を最小値である1に仮設定し、これにより通常の多くの識別スロット数Mで上記ステップS200の衝突検出処理を無駄に長く行うことを回避する。次のステップS50で、変更変数H(Nv)の値を1増加させ、ステップS65へ移る。
一方、上記ステップS40の判定において、変更変数H(Nv)の値が10であって今回のスロット数指定値変数Q(Nv)の修正が10回目である場合、判定が満たされ、すなわち所定時間の経過により妨害波の出力が停止したことを期待して通常の衝突検出処理を行うべくステップS55へ移る。
ステップS55では、スロット数指定値変数Q(Nv)の値を対応する初期値Qini(Nv)に再設定し、これにより通常の識別スロット数Mで上記ステップS200の衝突検出処理を行わせる。次のステップS50で、変更変数H(Nv)の値を0にリセットし、ステップS65へ移る。
ステップS65では、参照変数Nvの値が最大値の9であるか否かを判定する。参照変数Nvの値が9でない場合、判定は満たされず、次のステップS70で参照変数Nvの値を1増加してからステップS10へ戻って同様の手順を繰り返す。一方、参照変数Nvの値が9である場合、判定は満たされ、ステップS75で参照変数Nvの値を1にリセットしてからステップS10へ戻って同様の手順を繰り返す。このようにして参照変数Nvの値を1から9まで昇順増加を繰り返しつつ、ステップS10からステップS75までの手順をループする。
以上のループにおいて、ステップS25からステップS60の手順によれば、1回目のスロット数指定値変数Q(Nv)の修正ではスロット数指定値変数Q(Nv)の値を1増加する通常の修正変更を行い、2回目から9回目の修正では妨害波が出力中であるとみなしてスロット数指定値変数Q(Nv)の値を最小値に仮設定し、10回目の修正で妨害波の出力が停止したことを期待してスロット数指定値変数Q(Nv)を初期値に再設定する。この修正を繰り返すことによって、衝突数C(Nv)が適正となるか、又は妨害波の出力が停止した際にはスロット数指定値変数Q(Nv)が適切な値に設定されることになる。
なお、上記ステップS10の判定において、設定完了確認フラグK(Nv)が1となっている場合、判定が満たされ、すなわち参照変数Nvに対応するスロット数指定値変数Q(Nv)の設定がすでに適切に完了しているものとみなして前述のようにステップS65へ移る。
また一方、上記ステップS20の判定において、衝突数C(Nv)が2Q(Nv)−1以下である場合、判定が満たされず、すなわち当該ホップ周波数f(Nv)において受信する応答信号の数に対し識別スロット数Mが適切に設定されて衝突頻度が低くなっているため対応するスロット数指定値変数Q(Nv)がすでに適切な値に設定されているとみなされてステップS80へ移る。
ステップS80では、当該ホップ周波数f(Nv)に対応する設定完了確認フラグK(Nv)の値を1とし、上記ステップS10の判定においてスロット数指定値変数Q(Nv)の設定がすでに適切に完了しているよう判定させてステップS10からステップS65へ直接移行させるようにする。
そして次に移るステップS85において、全てのホップ周波数f(1〜9)にそれぞれ対応する設定完了確認フラグK(1〜9)の値がいずれも1であるか否かを判定する。設定完了確認フラグK(1〜9)のうちいずれか一つの値でも初期値の0となっている(1になっていない)場合、判定が満たされず、すなわちまだ適切に設定が完了していないスロット数指定値変数Q(Nv)が残っているものとみなされて、ステップS65へ移り、ステップS10からステップS75の手順のループに戻る。一方、全ての設定完了確認フラグK(1〜9)の値が1となっている場合、判定が満たされ、すなわち全てのスロット数指定値変数Q(Nv)が適切に設定されたとみなされて、次のステップS100の読み取り確認処理(後述の図8参照)によりリーダ1の通信範囲内に存在する全ての無線タグTのタグIDを全てのホップ周波数f(N)で読み取り、このフローを終了する。
なお、上記フローによる探索処理の手順では、ステップS100の読み取り確認処理を行う前に、ステップS5からステップS85までの手順によるスロット数指定値変数Q(N)の設定が行われたが、リーダ1の通信範囲内における無線タグTの個数やそれらの配置、無線通信機器の設置状況などの通信条件にあまり変化がないことがわかっている場合、それ以前の探索処理で設定されたスロット数指定値変数Q(N)をそのまま利用してすぐに読み取り確認処理だけを行えるようにしてもよい。また、衝突検出処理において、衝突が検知されなかった場合、そのまま読取処理も行っても良い。これにより、読取確認処理まで待つ必要がなく衝突が生じなかった無線タグをより早く読取ることができる。
図8は、上記図7中のステップS100において実行される読み取り確認処理の詳細手順を表すフローチャートである。
この図8において、まずステップS105において、参照変数Nvの値を1に、応答タグ変数RXの値を0に初期化する。
次にステップS110へ移り、図7中のステップS15と同様の制御によりホップ周波数f(Nv)の搬送波をRF通信制御部9に発生させる。
そして次のステップS300へ移り、情報検出処理を行う。この情報検出処理は、上記ステップS110で設定したホップ周波数f(Nv)の周波数チャンネルにおいて、それに対応してすでに設定されているスロット数指定値変数Q(Nv)をスロット数指定値として含んだ応答要求コマンドを送信し、全ての識別スロットにおいて各無線タグTから応答信号を受信し、それらからタグIDを検出する。また、応答信号を受信できた無線タグTに対しては前述した「Sleep」信号を送信して休眠状態にさせる(後述の図10参照)。
次にステップS115へ移り、上記ステップS300の情報検出処理において一つでも応答信号が受信されたか否か、すなわちまだ休眠状態となっておらずに当該ホップ周波数f(Nv)で応答信号を発信可能な無線タグTが存在するか否かを判定する。一つでも応答信号が受信された場合、すなわち応答タグが存在していた場合、判定が満たされ、ステップS120で応答タグ変数RXの値を1増加してステップS125へ移る。一方、全く応答信号が受信されなかった場合、すなわち応答タグが存在していなかった場合、判定が満たされず、そのままステップS125へ移る。
ステップS125では、参照変数Nvの値が最大値の9であるか否かを判定する。参照変数Nvの値が9でない場合、判定は満たされず、次のステップS130で参照変数Nvの値を1増加してからステップS110へ戻って同様の手順を繰り返す。一方、参照変数Nvの値が9である場合、判定は満たされ、すなわち全てのホップ周波数f(1〜9)を一巡してそれぞれステップS300の情報検出処理を行ったとみなされて、ステップS135へ移る。
ステップS135では、応答タグ変数RXの値が0であるか否か、すなわち全てのホップ周波数f(N)を一巡した際に全く応答信号が受信されなかったか否かを判定する。応答タグ変数RXの値が0ではなく1以上である場合、判定が満たされず、すなわちリーダ1の通信範囲内にまだ休眠状態となっておらず応答信号を発信可能な無線タグTが存在している可能性があるとみなしてステップS105に戻り、このフローを最初から繰り返す。なおこのフローを繰り返す際には、それまでに応答信号を受信した無線タグTは全てそのまま上記「Sleep」信号により休眠化された状態を維持するため、このフローを繰り返すたびに応答信号を発信する無線タグT(タグIDをまだ読み取ってない無線タグT)が確実に減少する。
そして、最後には全てのホップ周波数f(N)で全ての無線タグTのタグIDが読み取られ、応答タグ変数RXの値が0となった状態でステップS135における判定が満たされ、ステップS140へ移る。なお、特に図示していないが、ステップS135からステップS105へ戻ってフローを繰り返す際に、応答タグの数が減少したことを想定して各スロット数指定値変数Q(N)を減少させてから再び情報検出処理を行うようにしてもよく、この場合より短時間で効率的に情報検出処理を行うことができる。
ステップS140では、表示部8に制御信号を出力し、無線タグTの探索処理が完了したことを報知するよう表示してこのフローを終了する。
以上のフローによれば、リーダ1の通信範囲内に存在する全ての無線タグTのタグIDを全てのホップ周波数f(1〜9)でもれなく読み取ることができ、またこの読み取り処理を図7の手順により適切に設定されたスロット数指定値変数Q(Nv)を用いて効率的に行うことができる。
図9は、上記図7中のステップS200において実行される衝突検出処理の詳細手順を表すフローチャートである。なお、このフロー中において用いられる参照変数Nvの値は、図7中でこの処理を行う際における参照変数Nvの値をそのまま用いるものとする。
この図9において、まずステップS205において、衝突数C(Nv)の値を0に初期化する。
次にステップS210へ移り、RF通信制御部9の送信部212の送信乗算回路216に制御信号を出力して、上記図7中のフロー中で設定されたスロット数指定値変数Q(Nv)を含み、ホップ周波数f(Nv)でホッピング通信可能な各無線タグ回路素子Toに対しそれぞれのタグIDを含む無線タグ情報を応答信号として送信するよう命令する応答要求コマンドを生成し(=IC回路部の無線タグ情報を不確定な条件下で探索しつつ取得するための探索指令を生成する指令生成手段に相当)、生成された応答要求コマンド信号をリーダアンテナ3を介し無線タグ回路素子Toへ送信する。
次にステップS215へ移り、RF通信制御部9の受信部213で無線タグ回路素子Toからの応答信号を1スロット分の時間(所定の識別スロットの時間枠)だけ受信して取り込む。スロットカウントSが値0になった無線タグ回路素子Toがなく、応答信号が受信されない場合でも1スロット分の時間は受信状態を維持する。これらステップS210とステップS215の手順で、識別スロット1つ分の送受信制御が行われることになる。
次にステップS220へ移り、上記ステップS215の時間枠で応答信号の衝突(又は妨害波の受信)があったか否かを判定する。何らかの信号を受信していながらそれが正常な応答信号として判別できない場合、つまり解読不能な信号を受信している場合や誤り検出において誤りが検出された場合、判定は満たされ、すなわち今回の識別スロットにおいて複数の応答信号の衝突(又は妨害波の受信)があったとみなされて次のステップS225へ移り、衝突数C(Nv)の値を1増加してステップS230へ移る。一方、何も信号を受信していないかもしくは応答信号が正常に受信できた場合、判定は満たされず、すなわち今回の識別スロットにおいては正常な受信状態にあって衝突(又は妨害波)が確認されていないとみなされ、そのままステップS230へ移る。
次のステップS230では、通信の最初に上記ステップS210で応答要求コマンドで通知したスロット数指定値変数Q(Nv)に対応した回数(2のQ(Nv)乗−1回)の識別スロットの受信を行ったか否か、すなわち全ての識別スロットに対して受信制御を行ったか否かを判定する。まだ全ての識別スロットに対して受信制御を行っていない場合、判定が満たされず、すなわちまだ受信制御を行っていない識別スロットが残っているとみなされてステップS235に移る。一方、全ての識別スロットに対して受信制御を行った場合、判定が満たされこのフローを終了する。
ステップS235では、RF通信制御部9の送信部212の送信乗算回路216に制御信号を出力して、スロットカウント減算コマンドをリーダアンテナ3を介し無線タグ回路素子Toへ送信する。このスロットカウント減算コマンドは、各無線タグ回路素子Toが応答信号を送信する識別スロットのタイミングを計るためのスロットカウント値S(後述の図11参照)の値を1だけ減算させるよう指令するコマンドである。ステップS235が完了したら、ステップS215に戻り、同様の識別スロット1つ分の受信制御を繰り返す。
以上のフローにより、図7中のステップS15で設定されたホップ周波数f(Nv)において応答信号が衝突した(又は妨害波を受信した)識別スロットの回数を衝突数C(Nv)の値として得ることができる。
図10は、上記図8中のステップS300において実行される情報検出処理の詳細手順を表すフローチャートである。なお、このフロー中において用いられる参照変数Nvの値は、図8中でこの処理を行う際における参照変数Nvの値をそのまま用いるものとする。
この図10において、まずステップS305において、上記図9中のステップS210と同様の制御により生成された応答要求コマンド信号をリーダアンテナ3を介し無線タグ回路素子Toへ送信する。なおこの際に用いるホップ周波数f(Nv)及びスロット数指定値変数Q(Nv)は、図8中で設定されているものを用いる。
次にステップS310へ移り、上記図9中のステップS215と同様の制御により無線タグ回路素子Toからの応答信号を1スロット分の時間だけ受信して取り込む。なお、この際に正常な応答信号が受信できた場合には、それに含まれるタグIDを抽出してメモリ6又は不揮発記憶装置5に記憶させておく。またこのようにタグIDが検出できた場合には、表示部8へ検出結果として表示させてもよい。
次にステップS315へ移り、RF通信制御部9の送信部212の送信乗算回路216に制御信号を出力して、上記ステップS310で検出されたタグIDの無線タグ回路素子Toに対して休眠化させる「Sleep」信号を生成し、リーダアンテナ3を介して上記検出されたタグIDの無線タグ回路素子Toへ送信する。
次のステップS320では、上記図9中のステップS230と同様に全ての識別スロットに対して受信制御を行ったか否かを判定する。まだ全ての識別スロットに対して受信制御を行っていない場合、判定が満たされず、すなわちまだ受信制御を行っていない識別スロットが残っているとみなされてステップS325に移る。一方、全ての識別スロットに対して受信制御を行った場合、判定が満たされこのフローを終了する。
ステップS325では、上記図9中のステップS235と同様の制御により、スロットカウント減算コマンドをリーダアンテナ3を介し無線タグ回路素子Toへ送信する。ステップS325が完了したら、ステップS215に戻り、同様の識別スロット1つ分の受信制御を繰り返す。
以上のフローにより、図8中のステップS110で設定されたホップ周波数f(Nv)において無線タグ回路素子Toからの応答信号を受信し、そこからタグIDを検出するとともに、そのタグIDを検出できた無線タグ回路素子Toに対してのみ休眠状態にすることができる。なお、応答信号の衝突により検出できなかった分の無線タグ回路素子Toに対しては、その回の情報検出処理ではそのまま放置し、次回の情報検出処理で正常に応答信号を受信し休眠化させるようにする。
図11は、図5に示した無線タグ回路素子Toが備える制御部157によって実行される制御手順を表すフローチャートである。この図11において、無線タグ回路素子Toが初期化コマンド(詳細な説明を省略する)を受信してその初期信号により無線電力が与えられるとともに制御部157が初期化されると無線タグ回路素子Toが起動し、このフローが開始される。
まず、ステップS405で無線タグ回路素子Toが起動した直後にタグ側アンテナ151で受信したリーダ1のリーダアンテナ3からの指令信号の命令内容を解釈するよう受信制御し、この受信した指令信号の内容が応答要求コマンドであるか否かを判定する。応答要求コマンドを受信している場合、判定が満たされ、ステップS410へ移る。このとき、応答要求コマンドに含まれるスロット数指定値変数Q(Nv)をメモリ部155に記憶させる。
ステップS410では、上記ステップS205でメモリ部155に記憶されたスロット数指定値Qに基づいて0から2Q−1までの乱数を乱数発生器158により発生させ、その値をスロットカウント値とする。このカウント値は0から識別スロット数Mまで間の値となり、当該無線タグTが応答信号を送信する識別スロットが決定される。
次にステップS415へ移り、スロットカウント値が0であるか否かを判定する。スロットカウント値が0でない場合、判定が満たされず、すなわちまだ応答信号を送信すべき識別スロットに達していないとみなされて次のステップS420へ移る。
ステップS420では、図10のフローのステップS325におけるスロットカウント減算コマンドをタグ側アンテナ151を介し受信したか否かを判定し、受信するまでその時点の識別スロットの間受信制御を繰り返す。スロットカウント減算コマンドを受信した場合、判定が満たされて、次のステップS425へ移り、スロットカウント値を1減算してステップS415へ戻り同様の手順を繰り返す。
また一方、上記ステップS415の判定においてカウント値が0となっている場合、判定が満たされ、すなわち当該無線タグ回路素子Toが応答信号を送信すべき識別スロットに達したとみなされて次のステップS430へ移り、メモリ部155に記憶されていた当該無線タグ回路素子ToのタグIDを含む応答信号を変復調部156で生成させ所定のタイミングでタグ側アンテナ151を介し返信してこのフローを終了する。なお、タグIDが長い場合、識別スロットにおいて衝突が生じないか判定するため、例えば、予め発生させ記憶しておいた16ビットの擬似乱数を応答信号として送り、それが正常にリーダ1に受信された後リーダ1から発せられるタグID送信コマンドを受信した後、タグIDを送信するようにしてもよい。
また一方、上記ステップS405の判定において、受信した指令信号が応答要求コマンドでない場合、判定が満たされず、ステップS435へ移って同じ指令信号の内容が「Sleep」信号であるか否かを判定する。受信した指令信号が「Sleep」信号である場合、判定が満たされ、ステップS440で適宜の手法で無線タグ回路素子To全体(又は自ら)を休眠状態、すなわちウェーク信号など特定のコマンド以外は受付けない状態とし、ウェーク信号の受信等の所定の条件が満たされた際に休眠状態を解除してこのフローを終了する。一方、受信した指令信号が「Sleep」信号でもない場合、判定が満たされず、すなわち関係のない信号を受信したものとみなしてフローを終了する。
図12は、上記図10の情報検出処理の制御手順を行うリーダ1と、上記図11の制御手順を行うL個の無線タグ回路素子To(全てホップ周波数f(Nv)でホッピング通信可能なもの)との間で送受される信号のタイムチャートの一例を表す図である。この図12において、図中左側から右側に向かって時系列変化するものとし、リーダ1が応答要求コマンド又はカウント減算コマンドを送信してから無線タグ回路素子Toの応答信号を受信する時間枠が1組になって各識別スロットが形成されている。なお、この図中においては「Sleep」信号の送信は省略している。
まず最初に、この例では、リーダ1から応答要求コマンドが送信された直後に乱数によってカウント値が初めから0に生成された無線タグ回路素子To1が識別スロット1で応答信号を送信する。そしてリーダ1がその応答信号を受信した後に、カウント減算コマンドを送信することで別の各無線タグ回路素子Toがそれを受信してそれぞれのカウント値を1減算する。その時点でカウント値が0となった無線タグ回路素子Toがあれば次の識別スロット2で応答信号を送信する。図示の例のようにスロットカウント値が0になった無線タグ回路素子Toが無い場合は当該識別スロットでの返信はない。タグラベル作成装置1が識別スロット終了後に、またスロットカウント減算コマンドを送信して識別スロット2が終了する。
以上のような手順を繰り返すことにより、L個全ての無線タグ回路素子Toの応答信号をM個の識別スロットで受信することができる。ここで、リーダ1側で用意する識別スロットの数Mが通信対象の無線タグ回路素子Toの個数Nより大きく設定されていれば、各無線タグ回路素子Toのカウント値が乱数により発生されているために、それぞれの無線タグ回路素子Toが応答信号を送信する識別スロットがM個分の識別スロットに渡って均等かつ一意的に分布することが期待できる。このようにしてN個全ての無線タグ回路素子Toの応答信号を一つ一つ衝突・混信させることなく(衝突・混信が生じた場合でも情報検出処理をやり直す;図8参照)明確に受信することができる。
また、リーダ1側で用意する識別スロットの数Mが、ホップ周波数f(Nv)で通信対象となる無線タグ回路素子Toの個数Lに対して必要以上に大きくせず適度な値に設定すれば、探索処理全体の時間を短くすることができ、効率のよい通信を行うことができる。
以上において、水晶振動子215A、PLL215B、及びVCO215Cが、搬送波を発生させる搬送波発生手段を構成する。
また、RF通信制御部9の送信部212とリーダアンテナ3が、送信乗算回路216で生成した応答要求コマンドを無線タグ回路素子Toに送信可能な送信手段を構成し、RF通信制御部9の受信部213とリーダアンテナ3が、送信乗算回路216で生成されて送信された応答要求コマンドに応じて複数の無線タグ回路素子Toから送信された応答信号を、複数の識別スロットに区分して受信可能な受信手段を構成する。
また、図7のフローにおけるステップS200からステップS60までの手順が、識別スロット数Mを、水晶振動子215A、PLL215B、及びVCO215Cで発生させる搬送波のホッピング周波数f(Nv)に基づいて設定するスロット数設定手段として機能する。
また、図7のフローにおけるステップS15の手順および図8のフローにおけるステップS110の手順が、水晶振動子215A、PLL215B、及びVCO215Cで発生させる搬送波のホップ周波数f(Nv)を所定の周期でホッピングさせるホッピング制御手段を構成する。
また、図10のフローにおけるステップS310の手順が、無線タグ回路素子Toから送信された応答信号に基づき、当該無線タグ回路素子ToのタグIDを取得する識別情報取得手段として機能する。
また、図10のフローにおけるステップS315の手順が、ステップS310の手順によりタグIDを取得した無線タグ回路素子Toを休眠化処理する休眠化処理手段として機能する。なお、この休眠化処理機能は必ずしも設けなくても良い。例えばスロットでの応答の際に各無線タグ回路素子がユニークハンドル(乱数)を返す場合(例えばC1G2規格等)には、質問器側がハンドルで特定される各タグに必要な処理コマンドを送信して処理をするからである。すなわち、ハンドルで特定された無線タグ回路素子ToはID送信後、応答済みフラグを例えばAからBに反転させる。質問器から応答済みフラグがAのタグのみ指定して応答要求コマンドを送信するので、応答済みフラグがBの無線タグ回路素子Toは応答できず実質的に休眠状態となる。
また、図7のフローにおけるステップS200の手順(図9のフローに示す衝突検出処理)が、RF通信制御部9とリーダアンテナ3による受信の際、識別スロットにおける応答信号の衝突を検出する衝突検出手段として機能する。
また、図7のフローにおけるステップS20の手順が、ステップS200の手順の検出結果に基づき、複数の識別スロットのうち衝突が生じた識別スロットの数(衝突数C(Nv))が所定割合以上であるかどうかを判定する衝突頻度判定手段として機能する。
また、図7のフローにおけるステップS30の手順が、ステップS20の手順の判定が満たされた場合、識別スロット数Mを増加させる増加設定手段として機能する。
また、図7のフローにおけるステップS25の手順が、ステップS30の手順による識別スロット数Mの増加後におけるステップS20の手順による判定結果に応じて、妨害波があるかどうかを判定する妨害波判定手段として機能する。
また、図7のフローにおけるステップS40からステップS60までの手順が、ステップS25の手順による判定が満たされた場合、識別スロット数Mをこれに対応して変化させる妨害波対応処理手段として機能する。
また、図7のフローにおけるステップS45の手順が、識別スロット数Mを最小化する第2最小化処理手段として機能する。
以上のように構成した本実施形態においては、図7のフローにおけるステップS200からステップS60までの手順により、上記スロット数指定値変数Q(Nv)を搬送波のホップ周波数f(Nv)に応じて設定する。これにより、応答する無線タグ回路素子Toの数が多くなるようなホップ周波数f(Nv)である場合には識別スロット数Mを多くする一方、応答する無線タグ回路素子Toの数が少なくなるようなホップ周波数f(Nv)である場合には識別スロット数Mを少なくすることができる。したがって、本来必要な数以上に識別スロット数Mが多く無駄に通信時間が長くなることを防止し、なるべく通信時間を短くして効率のよい通信を行うことができる。
また、この実施形態では特に、CPU4が図7のフローにおけるステップS15の手順および図8のフローにおけるステップS110の手順をそれぞれ実行して搬送波のホップ周波数f(Nv)をホッピングさせていくとき、各無線タグ回路素子Toの周波数応答特性によって遠距離では応答できないものが発生したり、当該周波数近傍の妨害波が存在する等によって、応答可能な無線タグ回路素子Toの数が変動する場合にも対応できる。すなわち、図7のフローにおけるステップS200からステップS60までの手順により、識別スロット数Mをホッピングされる搬送波のホップ周波数f(Nv)に応じて設定することにより、応答する無線タグ回路素子Toの数が多くなるようなホップ周波数f(Nv)にホッピングされた場合には識別スロット数Mを多くする一方、応答する無線タグ回路素子Toの数が少なくなるようなホップ周波数f(Nv)にホッピングされた場合には識別スロット数Mを少なくすることができる。なお、一般に所定の周波数帯域中で空いている周波数チャンネルをホップ周波数に用いるが、周波数チャンネルのうち空いている周波数(無線タグ回路素子Toの感度は周波数毎に異なるので、周波数に応じて応答できる無線タグ回路素子Toの数が変化する)や隣接チャネルから漏れてくる電界による妨害強度で読み取り率が影響を受けるのでその場合は識別スロット数Mを変化させるようにすることが好ましい。たとえば隣接する周波数チャンネルを使用している場合は識別スロット数Mを減らすようにすればよい。
また、この実施形態では特に、ホッピングされるホップ周波数f(Nv)ごとに、図10のフローにおけるステップS310の手順でタグIDが取得できた無線タグ回路素子Toをその都度ステップS315の手順で休眠化させ、これを応答信号がなくなるまで繰り返すことにより、通信可能なすべての無線タグ回路素子Toからの識別情報の読み取りを効率よく確実に完了させることができる。
また、この実施形態では特に、図7のフローにおけるステップS200の手順(図9のフローに示す衝突検出処理)によって識別スロットにおける応答信号の衝突を検出することにより、識別スロットにおける衝突発生の有無やその頻度等により、衝突が多めに生じているホップ周波数f(Nv)では識別スロット数Mを多くする一方、衝突がないか少なめのホップ周波数f(Nv)では識別スロット数Mを少なく設定することができる。
また、この実施形態では特に、衝突が多めに生じたホップ周波数f(Nv)においては、図7のフローにおけるステップS20の手順による判定が満たされることになるため、その場合ステップS30の手順で識別スロット数Mを増加させることにより、衝突の発生を回避し、信頼性の高い確実な情報送受信を図ることができる。
また、この実施形態では特に、図7のフローにおけるステップS20の手順における判定が満たされ、ステップS30で識別スロット数Mを増加させてもなおステップS20の手順における判定が満たされた場合には、ステップS25の手順で、そのホップ周波数f(Nv)において妨害波が存在するとみなすことができる。
また、この実施形態では特に、図7のフローにおけるステップS25の手順で妨害波があると判定された場合、これに対応してステップS40からステップS60までの手順により識別スロット数Mを減少変化させることができ、妨害波環境下で無駄に応答信号を取得しようとして時間を浪費するのを回避することができる。
また、この実施形態では特に、妨害波がある場合には、図7のフローにおけるステップS45で識別スロット数Mを最小化させることで、妨害波環境下で無駄に応答信号を取得しようとして時間を浪費するのを確実に回避することができる。
なお、本実施形態においては、不揮発記憶装置5に格納されているホップテーブル中のスロット数指定値初期値Qini(N)を予め固定値として入力設定していたが、本発明はこれに限られず、例えば探索処理中において所定の条件やパラメータに基づいて修正できるようにしてもよい。
具体的には、図13に示すように、探索処理を行うたびにホップ周波数f(N)毎に検出される衝突数C(N)の累計値を衝突履歴値(衝突履歴)Cs(N)として不揮発記憶装置(衝突履歴記憶手段)5のホップテーブル中に各ホップ周波数f(N)に対応させて格納保持しておき、探索処理中にこの衝突履歴値Cs(N)を参照して所定値を超えた場合に、対応するスロット数指定値初期値Qini(N)を増加する(または妨害波の影響があるとみなして最小値0としてもよい)よう修正してもよい。なお、図13においては、図示の煩雑を避けるために、スロット数指定値変数Q(N)、変更変数H(N)、及び設定完了確認フラグK(N)の図示を省略している。また、上記衝突履歴値Cs(N)は衝突数C(N)の累計値に限られず、例えば過去の所定回数検出された衝突数C(N)の平均値で計数してもよいし、またこの平均値とした場合には衝突履歴値Cs(N)が所定値より少なくなった場合に、対応するスロット数指定値初期値Qini(N)を減少するよう修正してもよい。
このように、予め過去の衝突挙動を履歴として不揮発記憶装置5のホップテーブルに蓄積しておき、これをその後の情報送受信時に活用して識別スロット数Mの増減設定を行うことにより、履歴を用いず識別スロット数Mの設定を行う場合に比べ、短時間で効率よく適正な識別スロット数Mに設定することができる。
また、図7のフローにおけるステップS25の手順による判定で、変更変数H(N)をしきい値と比較する代わりに、上記のいずれかの衝突履歴値Cs(N)と所定のしきい値との比較に基づいて衝突頻度が過剰となっている原因を判断してもよい(特に図示せず)。例えば、衝突履歴値Cs(Nv)と適切なしきい値とを比較して衝突履歴値Cs(Nv)の方が大きいと判定された場合、応答信号の衝突頻度が過剰である原因が妨害波によるものであるとみなしてステップS40からステップS60の妨害波対策の手順へ移り、変更変数H(Vn)の値が小さい(図7の例では10に満たない)うちはステップS45の手順(第1最小化処理手段)により対応するスロット数指定値変数Q(Nv)の値を最小値である1に仮設定して、ステップS200の衝突検出処理を無駄に長く行うことを回避してもよい。
このように過去の衝突履歴と所定のしきい値との比較に基づき、識別スロット数Mを最小化することは有用であり、過去の衝突回数が大きな値である場合には、当該ホップ周波数f(Nv)において妨害波が存在するとみなし、ステップS45の手順で識別スロット数Mを最小化することにより、妨害波環境下で無駄に応答信号を取得しようとする時間の浪費を回避することができる。
また、スロット数指定値初期値Qini(N)の各値の初期的な設定については、例えば最初にホッピング通信を行う際のホップ周波数f(Nv)に対応するスロット数指定値初期値Qini(N)の値を特に大きく設定することが有効である。
その一例として、参照変数Nv=1(参照番号N=1)から昇順で図7のステップS200の衝突検出処理や図8のステップS300の情報検出処理を行う場合、図14に示すように、最初に上記の各検出処理を行うホップ周波数f(1)に対応するスロット数指定値初期値Qini(1)の値を最も大きい値(図示する例では6)に設定し、それ以降に順にスロット数指定値初期値Qini(Nv)の値を小さくする。なお、図14においては、図示の煩雑を避けるために、参照番号N、ホップ周波数f(N)及びスロット数指定値初期値Qini(N)だけを示している(図15についても同様)。
このようにホッピング開始時の最初のホップ周波数f(Nv)に関わる識別スロット数Mを、それ以外のホップ周波数f(Nv)に係わる識別スロット数Mよりも多くなるように設定することの効果は以下のようになる。すなわち、図10のフローにおけるステップS310の手順でタグIDが取得された無線タグ回路素子Toは順次ステップS315の手順で休眠化され、これによって応答可能な無線タグ回路素子Toが減少していくので、これに対応して最も多くの無線タグ回路素子Toから応答信号を受信できることが予想されるホッピング開始時の識別スロット数Mを最も多くしその後は識別スロット数Mを減少させる。これにより、必要な数以上に識別スロット数Mが多く無駄に通信時間が長くなることを確実に防止し、通信時間を短くして効率のよい通信を行うことができる。
そして、ホッピング通信を開始させる参照変数Nvは必ずしも1に限られずランダムに選択することもできるため、その場合は図15に示すように最初の参照変数Nv(図示する例ではNv=4)に対応するスロット数指定値初期値Qini(Nv)の値を最も大きくし、それ以降の参照変数Nvの昇順(最後の値の9の次には1に戻る)で減少するように設定する。また少なくとも最初の参照変数Nvに対応するスロット数指定値初期値Qini(Nv)が最も大きい値に設定すればよいため、図15に示しているように2番目ないし3番目の参照変数Nvに対応するスロット数指定値初期値Qini(Nv)の値も最初の値と同じに設定することも可能である。
また、スロット数指定値初期値Qini(N)の各値の初期的な設定については、例えば過去の所定回数分で検出された衝突数C(N)を記憶保持し、それに基づいて各スロット数指定値初期値Qini(N)の値を設定してもよい。
その一例として、ホッピング通信を行った際の各ホップ周波数f(Nv)に対応して識別スロット数Mに対する衝突数C(Nv)の割合、すなわち衝突率Cr(Nv)を算出して記憶保持し、各ホップ周波数f(N)毎に過去5回分の衝突率Cr(N)の平均値として算出した平均衝突率Ce(N)に基づいて各スロット数指定値初期値Qini(N)の値を設定してもよい。図16はその場合のホップテーブルの一例を概念的に表す図であり、図示の煩雑を避けるために、参照番号N、ホップ周波数f(N)、スロット数指定値初期値Qini(N)、前回の衝突率Cr(N)(それ以前4回分は省略)及び平均衝突率Ce(N)だけを示している。
そして図16に示すように、スロット数指定値初期値Qini(N)の値は対応する平均衝突率Ce(N)の大きさに応じて設定されており、平均衝突率Ce(N)の値が大きい場合には識別スロット数Mに余裕持たせてできるだけ衝突を回避するためにスロット数指定値初期値Qini(N)の値を大きく設定し、平均衝突率Ce(N)の値が小さい場合には識別スロット数Mを抑えてできるだけ効率よく通信制御するためにスロット数指定値初期値Qini(N)の値を小さく設定する。
このように平均衝突率Ce(N)の大きさに応じて対応するスロット数指定値初期値Qini(N)の値を設定することで、適切な識別スロット数Mで応答信号を受信することができ、衝突頻度が過剰になることを回避しつつ、通信時間を短くして効率のよい通信を行うことができる。
また、スロット数指定値初期値Qini(N)の各値の初期的な設定については、例えば過去に受信した応答信号の数を記憶保持し、それに基づいて各スロット数指定値初期値Qini(N)の値を設定してもよい。
その一例として、各ホップ周波数f(N)毎に受信された応答信号の個数の比率に比例配分するようそれぞれの識別スロット数Mを用意し、それらに対応する値で各スロット数指定値初期値Qini(N)を設定する。
詳細には、過去に行われた1回のホッピング通信において各ホップ周波数f(N)にそれぞれ対応して受信された応答信号の数を応答信号数R(N)とすると、リーダ1が受信し得る応答信号の総数(すなわちリーダ1の通信範囲内に存在する全ての無線タグTの個数)である総信号数Rtは、
Rt=R(1)+R(2)+・・・+R(9)
と表される。
したがって、この総信号数Rtに対する各応答信号数R(N)の割合である応答分布率Rr(N)は、
Rr(N)=R(N)/Rt
となる。
また、上記総信号数Rtの個数の応答信号を全て受信できる最小総スロット数Mtは、総信号数Rtを超える最小の2の整数乗の数値(2n;n=整数)であり、この最小総スロット数Mtを各ホップ周波数f(N)毎にそれぞれ上記応答分布率Rr(N)で比例配分した配分スロット数Mr(N)は、
Mr(N)=Mt×Rr(N)
と表される。
そして、実際に利用される識別スロット数は2の整数乗の値であるため、各ホップ周波数f(N)に対応して用意する必要識別スロット数M(N)の値は、各配分スロット数Mr(N)を超える最小の2の整数乗の数値となる。
したがって、各スロット数指定値初期値Qini(N)は、それぞれ対応する必要識別スロット数M(N)が得られるよう、
Qini(N)=[log2M(N)+1]
に設定する。なお、ここで[]は少数点以下を切り捨てて整数化することを表す。
この場合、不揮発記憶装置(応答履歴記憶手段)5のホップテーブルには、図17に示すように、図6のホップテーブルの項目に上記応答信号数(応答履歴)R(N)だけ追加する構成で記憶保持すればよい。なお、この図17においては、図示の煩雑を避けるために、参照番号N、ホップ周波数f(N)、スロット数指定値初期値Qini(N)及び応答信号数R(N)だけを示している。総信号数Rtは全ての応答信号数R(N)の和で算出することができ、応答分布率Rr(N)は応答信号数R(N)と総信号数Rtから算出することができる。
このように、予め過去の応答信号受信挙動を履歴として不揮発記憶装置5のホップテーブルに蓄積しておき、これをその後の情報送受信時に活用して識別スロット数Mの増減設定を行うことにより、履歴を用いず識別スロット数Mの設定を行う場合に比べ、短時間で効率よく適正な識別スロット数Mに設定することができる。これは特に、無線タグTを添付した物品がほとんど移動することのない保管庫などにリーダを固定して設置した場合、前述したマルチパスなどの電波環境がほとんど変化せずに個々の無線タグTの応答信号を受信できるホップ周波数が固定されることになり、すなわち各ホップ周波数における応答信号数R(N)が変動しないため適正な識別スロット数Mの設定を効率的に行う上で有効である。
なお、以上で用いた「Sleep」信号等は、EPC globalが策定した仕様に準拠しているものとしてもよい。EPC globalは、流通コードの国際機関である国際EAN協会と、米国の流通コード機関であるUniformed Code Council(UCC)が共同で設立した非営利法人である。なお、他の規格に準拠した信号でも、同様の機能を果たすものであればよい。
また、以上既に述べた以外にも、上記実施形態やその改良した構成による手法を適宜組み合わせて利用しても良い。
その他、一々例示はしないが、本発明は、その趣旨を逸脱しない範囲内において、種々の変更が加えられて実施されるものである。