RFID:リーダーの読み取り設定の意味、最低限これだけは必須!
RFIDについて「中身はブラックボックス」という方々をイメージして、これまでに「RFIDは電波を使用した無線通信により、データキャリアであるRFタグのICチップに格納されたテータを読み取るシステム」だということ、「その通信に使用する電波って一体どんなものなのか」をご紹介し、続いて「その電波を使ってどのようにデータをやり取りするか」を、そして「RFIDの主流であるパッシブタグはバックスキャッター(backscatter)通信という電波の反射を利用した通信方法」だということを書いてきました。まだまだサワリの部分しかお伝えできておらず、RFタグの環境発電(エネルギーハーベスティング)の視点からバックスキャッター通信をもう少しお伝えしようかとも考えていたのですが、「通信技術はちょっとお腹いっぱい」という声もあったようなので、今回は実際にRFIDリーダーライターを手にしてRFタグを読み取ろうとした際に、皆さんが疑問に思われることの多い、リーダーライターの読み取り設定について少しお伝えしようと思います。
インベントリー(Inventory)は、質問器(リーダー)が応答器(RFタグ)のデータを読み取ること
インベントリー(Inventory)は、質問器(リーダー)が応答器(RFタグ)のデータを読み取ること
RFID運用のキーは、「リーダーによるRFタグの読み取りが如何に正確に読み漏れなくスピーディに」になるかと思います。
最近ではアパレルを中心にレジでの会計でも活用されてきていますが、RFID運用で最も多い使用用途は、棚卸や在庫管理でしょう。その関係なのか、リーダーでRFタグを読み取ることをインベントリー(Inventory)と言います。この英単語、動詞で使うと「棚卸をする」とか「目録を作る」といった意味になるそうなので、いま行わなければならない管理対象の物品群を読み取って目録を作成するといったイメージなんでしょうか。まあ、「RFタグを読み取る≒インベントリー」の理解で問題はないと思います。
で、「さぁ、読み取りを始めよう!」となって、最初に躓くのが質問器(RFIDリーダー)の読み取り設定ではないでしょうか。
もちろんRFID運用が導入される際に、導入窓口(多くは情シス部門だと思いますが)が詳細な運用設定を済ませて運用部門へ下してくるケースが多いんだとは思いますが、運用する側が「とにかくRFIDリーダーのトリガーを引くor押すだけ」の理解では、その業務のDX化など絵空事にしかならないでしょうし、もしリーダーが壊れたり固まったりして初期化されてしまったら、自分たちでは為す術もありませんよね。
ということで、「最低限の設定とその意味くらいは覚えておきましょう」というのが、本稿の主題です。
あっ、本稿の主題に入る前に、一応ですがRFIDの通信プロトコルの流れだけザっとですが、記しておきます。「通信技術はちょっとお腹いっぱい」の方の胃がもたれないよう、別腹程度の手順だけですが、主題の設定を理解する上で結構大事な流れなので、我慢して読んでください。
=====パッシブ型RFタグのインベントリーの流れ=======
前回コラムのおさらいになりますが、RFIDリーダーからRFタグ(対象物)に向かって電波が発せられ、その電波を受けたRFタグが起電(誘導起電)。生じた電力でもってICチップに格納されているデータをバックスキャッター方式でリーダーに返す。まあ、これだけでも良いと言えば良いのではありますが、今回はもう少しだけ細かく見てみましょう。
① RFIDリーダーがRFタグへ電波を発する際、先ずコマンドデータの前に無変調波(CW)※1を送信。
② 起電したRFタグへプリアンブル信号※2を送信後、ICチップに対するコマンドデータを送信する。
③ 続いて、誤り訂正コード(CRC:Cycle Redundancy Check)を送信した後、再度CWを送信。
④ RFタグは起電後、タグ内部のコンデンサに電力をため込み、それを電源としてICが立ち上がる。
⑤ リーダーから送信されたプリアンブル信号により、タグ側は引き続きコマンドが来ることを認識。
⑥ コマンドを受け取り、CRCでエラーをチェック。
⑦ 再度送信されてきたCWを利用して、バックスキャッタ方式で応答データをリーダーへ返す。
========================================
とまあ、こんな一連のやりとりをしてインベントリーが行われているのです。
無変調波(CW:Continuous Wave)というのは変調されていないワケですから、もちろん正弦波です。当コラムRFID篇第2回「電波で情報の送受信ができるのはなぜ?」を思い出していただければ、何故このような手順にしているのかもイメージしやすいのではないでしょうか。
※1 連続波(Continuous wave)のこと。振幅と周波数が一定の電磁波のことであり、一般的には正弦波のことです。これを変調することによって、データを送信するというワケでしたよね。(本コラムRFID篇第2回参照)
※2 RFIDリーダーライターから受信側(RFタグ)に、送信するデータ本体(コマンドなど)に先立って送信される、決まったパターンのビット列のこと。「これから通信を開始する」という合図程度の理解で結構です。
ご参考までに、下記にGS1レギュレーションの「タグ状態遷移図」を引用しておきます。
― GS1「EPC™ Radio-Frequency Identity Protocols Generation-2 UHF RFID Standard」より ―
念のため申し添えておきますと、本項で紹介するのは本コラムRFID篇の初回にお伝えしています通り、あくまでRAIN RFID(GS1 RFIDプロトコル C1G2に準拠したUHF帯RFIDの国際的な統一規格)に沿ったものです。お間違い無きよう・・・。
インベントリー時、最低限知っておきたいのはフラグ(Inventoried flag)とセッション(Session)
前述したGS1 RFIDプロトコル C1G2ではRFタグやRFIDリーダー(ライター)、それらを活用したソフトウェアのレギュレーションを細かく規定しているのですが、冒頭に記した「RFID、中身はブラックボックス」的ユーザーの方々にRFID運用現場で対象物(RFタグ)を読み取る(インベントリー)際、最低限知っておいていただきたいのは、フラグ(Inventoried flag)とセッション(Session)の2つです。
まずは2つのフラグを知っておきましょう。
では、まずフラグについて。実はRFタグには大まかに言ってフラグと呼ばれる機能が2種類※3あって、一つがインベントリー済フラグ(Inventoried flag)、もう一つがSLフラグ(Selected flag)というフラグです。
インベントリー済フラグは、その名の通り、タグが読み取り(インベントリー)済みかどうかを示すステータスを保持しています。具体的には「A」と「B」という2つのステータスを持っていて、RFIDリーダーからの電波を受ける※4と、パッシブRFタグのインベントリー済フラグは「A」で起動します。そしてRFIDリーダーからの読み取り電波を受けるとフラグ「B」に変化するんです。
(RFIDリーダーには読み取りのモード設定で、①「フラグAを読む」②「フラグBを読む」③「フラグA/Bの両方とも読む」という選択ができるようになっているんですが、ここではインベントリーで最も一般的な①「フラグAを読む」設定時の挙動を記載しています。因みに、仮にいきなり②「フラグBを読む」設定でインベントリーすると、RFタグは前述のように全てフラグ「A」で起動しているので1枚も読めません。)「B」は、後述するセッション(Session)で定められた一定時間を経過するか、RFIDリーダーが②③のモード設定で「B」を読み取ると再び「A」にもどり、以降は「A」と「B」のステータスをトグルで遷移するといった仕組みです。しかもインベントリー済フラグ機能は、4種類のセッションそれぞれに独立して用意されているので、複数のRFIDリーダーが、別々のセッションで同時にインベントリーを開始しても、ちゃんとそれぞれのRFIDリーダーと通信が並行して行えるんです。凄くないですか?
単にフラグというと、大抵の場合、このインベントリー済フラグを指すことが多いです。
もう一つのSLフラグ。こちらはインベントリー済フラグとは異なり、4つのセッション共通というか1つだけしかありません。なので4種類のセッションどれを選んでいても、同じSLフラグを活用することになります。ステータスは、「セット(asserted)」「リセット(deasserted)」の2つで、基本的にステータスについては「リセット」で起動します。RFIDリーダーのインベントリー設定の際に、Actionパラメーターをネゲート(negate)にしておくことで、インベントリー済フラグ同様に「リセット」を「セット」に、「セット」を「リセット」にと、トグルで遷移させることもできます。ただSLフラグの利用方法は、主にマスク(フィルター)的に使用されることが多く、インベントリー対象のRFタグに一定の条件設定をして、その条件を満たしたタグのSLフラグを「セット」ステータスにして、「セット」だけを読み取ったり、逆に「リセット」だけを読むといった使い方が一般的だと思います。ステータスはインベントリー済フラグ同様、セッション(Session)で定められた一定時間を経過するまで「セット」「リセット」を保持しますが、その後再びリーダーからの給電によって起電した際には「リセット」ステータスになっています。筆者個人的には、あまり実運用現場を目の当たりにしていないので、寡聞にして具体的にSLフラグを活用している例を恥ずかしながら知りません。
※3 細かく言うと、実際には他にもCフラグといったものもあるのですが、本稿の想定読者のペルソナに該当する方が運用される現場では、別段気にしなくても大丈夫です。
※4 無変調波(CW)を受けて起電します。
― GS1「EPC™ Radio-Frequency Identity Protocols Generation-2 UHF RFID Standard」より ―
インベントリーの基本中の基本、セッションって何だろう。
セッションについて、GS1が制定した“EPC™ Radio-Frequency Identity Protocols Generation-2 UHF RFID Standard”(Release 2.1, Ratified, Jul 2018)に記された「用語と定義」では、以下のように述べられています。
=============== Session ===================
An inventory process comprising an Interrogator and an associated Tag population. An Interrogator chooses one of four sessions and inventories Tags within that session. The Interrogator and associated Tag population operate in one and only one session for the duration of an inventory round (defined above). For each session, Tags maintain a corresponding inventoried flag. Sessions allow Tags to keep track of their inventoried status separately for each of four possible time-interleaved inventory processes, using an independent inventoried flag for each process.
========================================
要するに、「セッションとはインテロゲーター(質問機=RFIDリーダー)と、その読み取り対象のRFタグ群で構成するインベントリープロセス」ということなんですね。で、リーダーは4つのセッションから1つのセッションを選択して、タグ(データキャリア)が格納する情報を読み取るんだと。そして1回のインベントリーラウンドの中でリーダーとタグがやり取りするのは、最初に選択した1つのセッションだけだと言っています。
続いて本稿で先述の通り、タグはセッションごとにインベントリー済フラグを持っていて、プロセスごとに独立したインベントリー済フラグによって、4つのセッションそれぞれで読み取られたかどうかのステータスを保持するんだと定義されているんです。
こういったプロトコルの定義って、誤解を生まないようになされるというのは分かりますが、一瞥だけでは分からない言い回しだと思いませんか?少なくとも私は理解できませんでした。なので私なりの定義で恐縮ですが、「セッション:RFタグがRFIDリーダーからの読み取り波を受電・受信して、インベントリー済フラグがAからBに変わった後、再度Aに戻るというシークエンスの時間設定で、3通り4種類が用意されているインベントリープロセス」と紹介させていただきます。少しはイメージしやすくなったでしょうか。
では、その4つのセッションについて紹介することにします。
前項のインベントリー済フラグの説明で、“タグのフラグは「A」で起動し、リーダーからの読み取り電波を受けるか、セッション(Session)で定められた一定時間を経過するとフラグ「B」に変化する”と書きました。決して焦らすつもりはなかったんですが、やっと4つのセッションの登場です。
まずは下表をご覧ください。
上記表頭にある「フラグのパーシステンス」というのが、前述した「セッションで定められた一定時間」のことなんですが、パーシステンス(persistence)を直訳すると持続とか永続性といった意味になります。要は各セッションでタグが電波を受信している時、していない時のそれぞれの場合に対して、フラグのステータス(A or B)を保持する時間が決められているんですね。
一応、表の記載内容と注意点を簡単にお伝えしようと思いますが、「知ってる」とか「見て、意味が分かった」等の方は、この段落はスルーしていただいても結構です。
ということで、
① S0:RFタグが通電している間は、ずーっとフラグのステータスを保持。通電が途絶えると間髪入れずステータスは遷移する。
② S1:RFタグへの通電・非通電に関わらず、ステータス遷移後、0.5秒~5秒の間で再度遷移。 (A→B→A or B→A→B)この4.5秒間でいつ遷移するかは、RFタグ搭載のICチップによる。
③ S2:RFタグが通電している間は、ずーっとフラグの遷移したステータスを保持。通電が途絶えた時点から少なくとも2秒間以上はステータスを保持し、以降の保持制限は設定されていないため、保持期間はRFタグ搭載のICチップ固有のパーシステンスにより異なる。
④ S3:S2に同じ。
【注】因みに上記S2、S3のチップ固有のパーシステンスですが、RFタグの主要なICチップいくつかについて、あくまで私の体感ですが、2秒< NXP Semiconductors < Impinj < Alien Technology のチップの順に長くなる傾向があるように感じています。もう少し具体的にいうと、2秒< NXP Ucode < 10秒 < IMPINJ M5 < IMPINJ MR6 < 60秒 < Alien H3 的な感覚でした。ただ個人的な感覚なので、もし事実と違っていてもご容赦ください。また、S1でのパーシステンスについては、体感的には上記のチップによる違いは殆ど感じませんでした。
で、これらフラグの保持時間を念頭に、RFIDリーダー側でインベントリーに際して、目的や読み取り対象のボリューム等を勘案してセッションを設定するということになります。
「あれっ、S2とS3って設定は同じ?それとも誤植?」と咄嗟に感じた方、きっといらっしゃいますよね?最初、私がそうでした。ここで、「タグはセッションごとにインベントリー済フラグを持っていて、プロセスごとに独立」しているという、小難しい定義を思い出してください。そして、例えば複数台数のリーダーで棚卸をすると想定してみましょう。複数のリーダーが同じセッション(仮にS2)を設定してしまったらどうなるでしょうか。1台が読み取りフラグを「A」、もう1台も「A」だったとしたら、時間差でどちらかのリーダーに先に読み取られたタグはフラグのステータスが「B」に遷移して、パーシステンスが経過するまで、もう一方のリーダーには反応しないことになります。では一方を「B」にしておけばと思われるかもしれませんが、その場合はお互いに読んだ傍からもう一方のリーダーにステータスをひっくり返されてしまい、フラグはトグルで遷移するので、いつまで経ってもインベントリーが終了しないといった事態が想定されませんか?
そこで「同条件設定だけど、それぞれに独立したフラグ」でもってインベントリーできるS2とS3の意味が浮かび上がるんです。2台のRFIDリーダーがそれぞれフラグを遷移させ切ってインベントリーを終了して、その結果を突合。完全に一致したら、無事棚卸も終了となるという次第です。
※上記のように記載しましたが、何台ものRFIDリーダーを使って、しかも同一セッションでインベントリーしたとしても、「リアルタイムにインベントリー済フラグの重複を消し込み、理論在庫と実地棚卸状況も同時に突合しつつ、完全な新規読み取りタグ以外は読み取り音を発生させないようにコントロール」できるようなアプリがあれば、対象物が膨大にあったとしても、仮に10人が同時にインベントリーしても、「全てのリーダーの読み取り音がしなくなったら、それが棚卸終了の合図!」といったことも可能になります。手前味噌ではありますが、アスタリスクではそんなクラウドシステムをご用意しています。As ForceとAs Force Lite、とても画期的なシステムです。m(__)m
RFIDの運用現場で棚卸や在庫管理の担務を担いながら、「中身はブラックボックス」という方々に最低限知っておいていただきたいことを、フラグとセッションに絞って記載しました。実際には他にもタグを同定(シンギュレーション)する際のアンチコリジョンでのQ値の設定や、その方式(タイムスロット、ビットコリジョン方式)、インテロゲータ―とトランスポンダー間でのもう少し詳細なプロセス等、知っていておいた方が良いことはまだまだあります。こちらについても、「お腹いっぱい」と言われない程度に、追々お伝えできればと思ったりもしています。
ではまた、次回は何をテーマにするか、乞う、ご期待でお待ちください。