説明

ICタグへのデータ書き込みシステム及び方法

【課題】
ICタグの仕様変更に伴う業務アプリケーションの改修頻度や,業務アプリケーション間で共有する情報の更新頻度を抑えながら,計算能力やメモリ容量に制限のあるICタグに対して,データ書込処理を高速化すること。
【解決手段】
ICタグに対するデータ書込コマンドを発行する前に,直前にICタグから読み込んだデータと,これから書き込もうとするデータの差分を取り,書き換えの発生したデータに限定して書込要求コマンドを発行することで,書込要求コマンドの総実行回数を削減する。また,ICタグ内の記憶領域を,基本領域と追記領域の2つに分割し,新たにデータを書き込む際には,書き込み対象のデータへ識別のための符号を付加した後,追記領域の末尾へ連続するように書込を行うことで,書込要求データを一回の連続領域書込コマンド(ISO18000−6Type CのBlockWrite相当のコマンド)で実現する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は,ICタグに対するデータの書込処理に関する。
【背景技術】
【0002】
近年,物流分野をはじめとする種々の業界において,ICタグを利用した効率的な業務処理システムや物品管理システムの導入が検討されている。ICタグは,データが書き込まれたICチップとアンテナで構成されており,UHF帯などの電波を利用して,接触することなくデータの送受信が可能である。バーコードよりも多くの情報を表現することが可能であり,かつ離れた位置から情報を読み取ることが可能であるため,物流業界などでは,従来のバーコードに代わる管理手段として検討が進められている。また,ICカードに比べて低価格での生産が可能であるため,電車の乗車券や娯楽施設の入場券など,使い捨て可能なチケットへの利用可能性も検討されている。
【0003】
こうした業務での利用においては,改札機などの業務アプリケーションが,ICタグから読み込んだデータの一部を変更し,変更後のデータをICタグへ書き込む処理が多く発生すると想定される。例えば,ICタグを電車の乗車券に利用する場合,乗客の入場時には,自動改札機がICタグ内のデータを読み込み,乗車券の有効性を確認した後に,入場駅の情報等を格納したデータでタグ内のメモリを更新する。また,乗客の出場時には,自動改札機がICタグ内のデータを読み込み,乗客が有効な入場駅,入場時刻から入場済みであることを確認した後,出場情報を書き込んだデータでタグ内のメモリを更新する。
【0004】
ところで,ICタグへデータを書き込む場合には,ICタグに対してデータの書き込みを要求する特定のコマンドを送信する必要がある。ICタグの仕様を定めるISO18000−6 Type Cでは,データの書込を指示する手段として,2バイトのデータを指定のアドレスへ書き込むためのWriteコマンドと,連続したデータを指定のアドレスへ書き込むためのBlockWriteコマンドの2つが規定されているが,当該コマンドの使用には,以下に述べる制限が加えられている。Writeコマンドを用いてデータを書き込む場合には,一度のコマンド/レスポンスで2バイトしか書き込むことができない。また,BlockWriteコマンドは2バイト以上のデータを書き込むことが可能だが,一度のコマンド/レスポンスでは,メモリ上で連続したデータしか書き込むことができない。したがって,メモリ上で分散配置されたデータを書き込む場合,複数回のコマンド/レスポンスが発生し,処理の完遂までに長い時間を要することが懸念される。
【0005】
また,ICタグはそれ自体に駆動電源を持たず,リーダ/ライタによる電磁誘導によって電力を供給されて駆動する。そのため,ICチップ内のメモリとしてはEEPROM(Electrically Erasable and Programmable ROM)等の不揮発性メモリが用いられる。この種の不揮発性メモリは,一般に消去処理や書込処理に時間がかかることが知られている。
【0006】
上述した業務処理では,高速な処理が要求されることが多い。例えば,ICタグを電車の乗車券として用いた場合,自動改札機で乗客を混雑させないために,数百ミリ秒での高速処理が要求される。また,ライン上を流れる物品に貼り付けられたタグへ,完了した処理の情報を追記していく場合にも,同様の高速性が要求される。したがって,ICタグに対する書込処理の長さは,ICタグを利用した業務処理や物品管理などに支障を及ぼす可能性がある。
【0007】
ICタグへの書込処理を高速化するために,業務アプリケーションが,書き換えが必要なデータに限って書込処理を要求することで,書込コマンド(Write コマンドやBlockWriteコマンドなど)の実行回数を減らし,処理完遂に要するコマンド/レスポンスの回数を削減する方法が知られている。
【0008】
また,メモリへの書き込み時間を短縮するために,メモリの書込特性を利用する方法が知られている(例えば,特許文献1参照)。EEPROMなどの不揮発性メモリは,複数バイトからなるページ単位ならば,消去書き込み動作を一括して行うことが可能である,という特性をもつ。特許文献1では,メモリ上で分散配置されたデータに対して書込要求が発生した場合に,メモリ上のデータ配置を並び換えることで,可能な限りページ単位でデータを書き込み,処理の回数を削減する技術が提案されている。当該技術では,書込要求を受けたアドレス(論理アドレス)と,メモリ上の実際のアドレス(実アドレス)の対応表を管理することで,書込の度にデータの配置を変更することを可能としている。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2006−107379
【発明の概要】
【発明が解決しようとする課題】
【0010】
業務アプリケーションが,書き換えが必要なデータに限って書込処理を要求する場合には,書込データの位置や範囲を指定するために,ICタグ内のメモリに,データがどのように配置されているかを把握している必要がある。このため,ICタグの仕様が変更され,メモリのデータ配置が変更された場合に業務アプリケーションの改修を要し,システム全体の管理に係る負担が増大する可能性がある。
【0011】
また,特許文献1に記載の技術では,ICタグ毎に論理アドレスと実アドレスを対応付けるためのリンク・テーブルと呼ばれる対応表が無ければ,ICタグ内のデータを正しく読み書きすることができない。リンク・テーブルの管理をタグ自体に行わせることは,ICカードに比べて計算能力やメモリ容量に制限のあるICタグの場合には困難である。一方,リンク・テーブルを業務アプリケーションで管理する場合,各タグのリンク・テーブルを,そのタグを処理する可能性のある全ての業務アプリケーションで共有しなければならない。また,ICタグのメモリ内データ配置が変更される度に,共有されている当該タグのリンク・テー
ブル全てを更新する必要が発生する,という課題がある。
【課題を解決するための手段】
【0012】
本発明は,上記の事情を鑑みてなされたものであり,ICタグの仕様変更に伴う業務アプリケーションの改修頻度や,業務アプリケーション間で共有する情報の更新頻度を抑えながら,計算能力やメモリ容量に制限のあるICタグに対して,データ書込処理を高速化するための装置,方法,プログラムを提供する。
【0013】
具体的には,ICタグに対するデータ書込コマンドを発行する前に,直前にICタグから読み込んだデータと,これから書き込もうとするデータの差分を取り,書き換えの発生したデータに限定して書込要求コマンドを発行することで,書込要求コマンドの総実行回数を削減する。
【0014】
そして,ICタグ内の記憶領域を,各データの初期値を格納する基本領域と,新たに書き換えられたデータを格納する追記領域の2つに分割し,新たにデータを書き込む際には,書き込み対象のデータそれぞれに識別のための識別符号を付加した後,メモリ上で連続するように追記領域の末尾へ書込を行うことで,書込要求データを一回の連続領域書込コマンド(ISO18000−6 Type CのBlockWrite相当のコマンド)で実現。
【0015】
ここで,ICタグ内の追記領域に格納された実データと,業務データとの対応付けを管理するために,本発明では,ICタグ内に格納する識別符号と,各ミドルウェア装置間で共有する対応管理テーブルと符号管理テーブルの組み合わせを利用する。
【発明の効果】
【0016】
本発明によれば,ICタグの仕様変更に伴う業務アプリケーションの改修頻度や,業務アプリケーション間で共有する情報の更新頻度を抑えることができ,データ書込処理を高速化できる。
【図面の簡単な説明】
【0017】
【図1】RFIDシステムの概略図。
【図2】RFIDシステムを構成する装置群の概略図。
【図3】業務データ書込バッファの概略図。
【図4】対応管理テーブルの概略図。
【図5】符号管理テーブルの概略図。
【図6】装置のハードウェア構成図。
【図7】初期化処理のシーケンス図。
【図8】ミドルウェア装置が初期化処理を実行する際のフローチャート。
【図9】読込処理および更新処理のシーケンス図。
【図10】ミドルウェア装置が読込処理を実行する際のフローチャート。
【図11】ミドルウェア装置が読込処理を実行する際のフローチャート。
【図12】ミドルウェア装置が書込処理を実行する際のフローチャート。
【図13】ICタグを乗車券として利用する場合のシステムの一例を示した図。
【図14】対応管理テーブルおよび符号管理テーブルの一例を示した図。
【図15】データ記憶部の一例を示した図。
【図16】業務データ読込バッファ,業務データ書込バッファ,業務データ差分バッファの一例を示した図。
【図17】データ記憶部の一例を示した図。
【図18】データ記憶部の一例を示した図。
【図19】データ記憶部の一例を示した図。
【発明を実施するための形態】
【0018】
以下,図面を用いて本発明の実施の形態について説明する。なお,これにより本発明が限定されるものではない。
【実施例1】
【0019】
図1は,本発明の一実施形態であるRFIDシステム10の概略図である。
【0020】
図示するように,RFIDシステム10は,業務アプリケーション装置1−1〜1−n(nは1以上の自然数)と,ミドルウェア装置2−1〜2−nと,リーダ/ライタ装置3−1〜3−nと,ICタグ4と,を備える。リーダライタ装置3−i(iは1以上n以下の自然数)とICタグ4は,UHF 帯などの無線を用いて相互に通信を行う。また,ミドルウェア装置2−iとリーダライタ装置3−iは,USBやネットワークを介して相互に通信を行う。また,業務アプリケーション装置1−iとミドルウェア装置2−iは,USBやネットワークを介して相互に通信を行って良い。また,ミドルウェア装置2−iがソフトウェアとして業務アプリケーション装置1−iの内部に含まれる場合には,装置内部の信号線を用いて相互に通信を行っても良い。
【0021】
図2は,業務アプリケーション装置1と,ミドルウェア装置2と,リーダライタ装置3と,ICタグ4と,の機能構成の例を示す概略図である。ここで,業務アプリケーション装置1と,ミドルウェア装置2と,リーダライタ装置3と,は,それぞれ業務アプリケーション装置1−1〜1−nと,ミドルウェア装置2−1〜2−nと,リーダライタ装置3−1〜3−nに共通する構造を記している。
【0022】
図示するように,業務アプリケーション装置1は,業務処理部101と,ミドルウェア通信部102と,を備える。
【0023】
業務処理部101は,業務アプリケーションの担当する業務を処理する。例えば,自動改札機では,ICタグから読み取った乗車券データの検証や,改札時の時刻,設置される駅などの情報に基づいて,データの上書きを指示する,といった処理が考えられる。
【0024】
ミドルウェア通信部102は,ミドルウェア装置2との間でのデータの送受信を制御する。例えば,ミドルウェア通信部102としては,TCP/IP通信を可能とするプロトコルスタックや,プロセス間通信を可能とするモジュールなどが考えられる。
【0025】
ミドルウェア装置2は,アプリケーション通信部201と,アプリケーションコマンド処理部202と,データ変換部203と,差分計算部204と,追記領域末尾ポインタ205と,業務データ差分バッファ2061と,業務データ書込バッファ2062と,業務データ読込バッファ2063と,基本領域書込バッファ2064と,基本領域読込バッファ2065と,追記領域書込バッファ2066と,追記領域読込バッファ2067と,対応管理テーブル207と,符号管理テーブル208と,ICタグコマンド処理部209と,リーダライタ通信部210と,を備える。
【0026】
アプリケーション通信部201は,業務アプリケーション装置1との間でのデータの送受信を制御する。例えば,アプリケーション通信部201としては,TCP/IP通信を可能とするプロトコルスタックや,プロセス間通信を可能とするモジュールなどが考えられる。
【0027】
アプリケーションコマンド処理部202は,業務アプリケーション装置1からアプリケーション通信部201を介して受信したアプリケーションコマンドのデコード処理や,業務アプリケーション装置1へ送信するアプリケーションレスポンスのエンコード処理を実行する。アプリケーションコマンドは,業務アプリケーション装置1がICタグ4に対してデータの読み書き等を指示するために用いるコマンドで,アプリケーションレスポンスは,アプリケーションコマンドの実行結果や,ICタグから読み取ったデータの内容を含み,業務アプリケーション装置1に対して送信されるメッセージである。
【0028】
データ変換部203は,アプリケーションコマンド処理部202によってデコードされたアプリケーションコマンドの内容に応じて,各種のバッファ2061〜2067に対するデータの読み書きや,対応管理テーブル207および符号管理テーブル208からのデータ取得や,差分計算部204に対する差分計算の実行要求などを行った後,ICタグコマンド処理部209に対してICタグコマンドの実行を要求し,ICタグ4に対するデータの読み書きを実行する。
【0029】
また,データ変換部203は,ICタグコマンド処理部209から,リーダライタ3経由でICタグ4からの応答が受信されたことを通知されると,応答の内容に応じて各種のバッファ2061〜2067に対するデータの読み書きや,対応管理テーブル207および符号管理テーブル208からのデータ取得などを行った後,アプリケーション通信部201を介して,業務アプリケーション装置1に対してアプリケーションレスポンスを送信する。
【0030】
差分計算部204は,業務データ書込バッファ2062に格納されたデータと,業務データ読込バッファ2063に格納されたデータと,の差分(異なっているデータの抽出)を計算し,結果を業務データ差分バッファ2061へ格納する。
【0031】
追記領域末尾ポインタ205は,ICタグ4内の追記領域4032の末尾のアドレスを含み,ICタグ毎にその値を対応付けて格納する。
【0032】
業務データ差分バッファ2061は,上述したように,差分計算部204によって計算された差分データを格納するための記憶領域である。バッファの構造は後述する業務データ書込バッファ2062と同様であるため,説明を省略する。
【0033】
業務データ書込バッファ2062は,業務アプリケーション装置1から受信した書込アプリケーションコマンドに含まれる書込対象業務データを一時的に格納するための記憶領域である。業務データ書込バッファ2062の一例について,図3を用いて説明する。
【0034】
図3は,業務データ書込バッファ2062の一例を示した図である。図3に示すように,業務データ書込バッファ2062はテーブル型のデータ構造を取る。各レコード(行)には,「データ名」フィールド2062−1と,「データ」フィールド2062−2が定義されている。「データ名」フィールド2062−1には,業務アプリケーション装置1から受信した書込対象業務データの名前を含み,「データ」フィールド2062−2には,当該業務データの内容が格納される。なお,以後,業務データ書込バッファ2062内で「データ名」フィールド2062−1に値Xを持つ行を,業務データ書込バッファ2062のX行,と呼ぶこととする。
【0035】
業務データ読込バッファ2063は,読込アプリケーションコマンドを実行した後,業務アプリケーション装置1へレスポンスとして返却する業務データを,一時的に格納するための記憶領域である。業務データ読込バッファ2063のデータ構造は,業務データ書込バッファ2062と同様のため,説明を省略する。
【0036】
基本領域書込バッファ2064は,ICタグ4のデータ記憶部403内の基本領域4031へ書き込む予定のデータを一時的に格納するための記憶領域である。
【0037】
基本領域読込バッファ2065は,ICタグ4のデータ記憶部403内の基本領域4031から読み込んだデータを一時的に格納するための記憶領域である。
【0038】
追記領域書込バッファ2066は,ICタグ4のデータ記憶部403内の追記領域4032へ書き込む予定のデータを一時的に格納するための記憶領域である。
【0039】
追記領域読込バッファ2067は,ICタグ4のデータ記憶部403内の追記領域4032から読み込んだデータを一時的に格納するための記憶領域である。
【0040】
各バッファ2061〜2067に格納されるデータの値は,後述する処理フローを実施する中で,ミドルウェア装置2−1〜2−nそれぞれによって異なるも
のとなる。
【0041】
対応管理テーブル207は,業務アプリケーション装置1が扱う業務データと,その業務データが基本領域4031上のどの位置に記載されるかを示すオフセットと,その業務データのサイズ,の3つの値を対応付けるテーブルである。対応管理テーブル207に含まれる値は,ミドルウェア装置2−1〜2−n間で同じものを,RFIDシステム10の運用開始前に共有しておく。対応管理テーブル207の一例について,図4を用いて説明する。
【0042】
図4は,対応管理テーブル207の一例を示した図である。対応管理テーブル207は,各レコード(行)に対して,「データ名」フィールド207−1と,「オフセット」フィールド207−2と,「データ長」フィールド207−3と,が定義されている。「データ名」フィールド207−1には,業務アプリケーション装置1が扱う業務データの名前が格納され,同じレコード(行)内の「オフセット」フィールド207−2には,当該業務データが基本領域4031内のどの位置に格納されるかを示す物理アドレス値が格納される。また,同じレコード内の「データ長」フィールド208−3には,当該業務データがデータ記憶部403内で占めるデータサイズが格納される。
【0043】
符号管理テーブル208は,業務アプリケーション装置1が扱う業務データと,その業務データのデータ長と,追記領域4032へ当該業務データを書き込む際に利用する識別符号と,の組を対応付けるテーブルである。符号管理テーブル208に含まれる値は,ミドルウェア装置2−1〜2−n間で同じものを,RFIDシステム10の運用開始前に共有しておく。符号管理テーブル208の一例について,図5を用いて説明する。
【0044】
図5は,符号管理テーブル208の一例を示した図である。符号管理テーブル208は,各レコード(行)に対して,「データ名」フィールド208−1と「識別符号」フィールド208−2と,が定義されている。「データ名」フィールド208−1には,業務アプリケーション装置1が扱う業務データの名前が格納され,同じレコード(行)内の「識別符号」フィールド208−2には,当該業務データがICタグ4の追記領域4032内に書き込まれる際,当該業務データとともに書き込まれる識別のための符号が格納される。「データ名」NULLに対応する「識別符号」c0は,追記領域内でのデータの終端を示すために使用する特別な識別符号である。
【0045】
本実施例では,識別符号として用いる符号の種類について制限を加えない。固定長の符号と可変長の符号のどちらを用いてもよいが,個々のデータの書き換え頻度がある程度正確に予測できている場合には,書き換え頻度に基づいたハフマン符号などの可変長符号を利用することで,符号がデータ記憶部403内に占める割合を減らすことができ,有効となる可能性がある。
【0046】
ICタグコマンド処理部209は,データ変換部203から要求を受けたICタグコマンドを実行するために,リーダライタ通信部210を介してリーダライタ装置3へICタグコマンドを送信する。また,リーダライタ通信部210を介して受信したICタグレスポンスを,データ変換部203へ通知する。ICタグコマンドは,リーダライタ装置3がICタグ4に対してデータの読み書き等を指示するために用いるコマンドで,ICタグレスポンスは,ICタグコマンドの実行結果や,ICタグから読み取ったデータの内容を含むメッセージである。
【0047】
リーダライタ通信部210は,リーダライタ装置3との間でのデータの送受信を制御する。例えば,USBデバイスを制御するデバイスドライバや,TCP/IP通信を可能とするプロトコルスタックなどが考えられる。
【0048】
リーダライタ装置3は,ミドルウェア通信部301と,ICタグ通信部302と,を備える。
【0049】
ミドルウェア通信部301は,ミドルウェア装置2との間でのデータの送受信を制御する。例えば,USBデバイスを制御するデバイスドライバや,TCP/IP通信を可能とするプロトコルスタックなどが考えられる。
【0050】
ICタグ通信部302は,ICタグ4との間でのデータの送受信を制御する。例えば,通信に使う周波数の変更や,アンテナの出力制御や,変調によるICタグコマンドの送信制御や,ICタグレスポンスの受信制御などを行う。
【0051】
ICタグ4は,リーダライタ通信部401と,コマンド処理部402と,データ記憶部403と,を備える。
【0052】
リーダライタ通信部401は,リーダライタ装置3との間でのデータの送受信を制御する。例えば,通信に使う周波数の変更や,アンテナの出力制御や,変調によるICタグレスポンスの送信制御や,ICタグコマンドの受信制御などを行う。
【0053】
コマンド処理部402は,リーダライタ装置3からリーダライタ通信部401を介して受信したICタグコマンドのデコード処理や,リーダライタ装置3へ送信するICタグレスポンスのエンコード処理を実行する。
【0054】
データ記憶部403は,ICタグ4固有のデータを格納し,コマンド処理部402によってデコードされたコマンドの内容によって,データの書込と,消去と,読込と,等を制御する。データ記憶部403は,基本領域4031と追記領域4032とで構成される。
【0055】
ここで,ミドルウェア装置2のICタグコマンド処理部209は,データ記憶部403に対して読み書きされるデータが,基本領域4031と追記領域4032のどちらに属するデータであるかを判別可能であるとする。このことは例えば,基本領域4031と追記領域4032のそれぞれがデータ記憶部403中に占める割合や,そのメモリ上の位置に関する情報を,各ミドルウェア装置2間で事前共有することで実現できる。
【0056】
基本領域4031は,ICタグ4の初期化時にデータを書き込まれる領域である。
【0057】
また,追記領域4032は,ICタグ4の初期化後,データの書き換えが発生した際に,データを書き込まれる領域である。基本領域4031と追記領域4032とは,データ記憶部内で異なるメモリを用いて実現されていても良いし,連続した領域を仮想的に切り離したものでも良い。
【0058】
以上に記載した業務アプリケーション装置1と,ミドルウェア装置2と,リーダライタ装置3とは,例えば,図6(コンピュータ9の概略図)に示すような,CPU(Central Processing Unit)901と,メモリ902と,HDD(Hard Disk Drive)等の外部記憶装置903と,CD−ROM(Compact Disk Read Only Memory)やDVD−ROM(Digital Versatile Disk Read Only Memory)などの可搬性を有する記憶媒体904から情報を読み出す読取装置905と,キーボードやマウス等の入力装置906と,ディスプレイなどの出力装置907と,通信ネットワークに接続するためのNIC(Network Interface Card)などの送受信装置908と,を備えた一般的なコンピュータ9で実現できる。例えば,各種バッファ2061〜2067やデータ記憶部403は,CPU901がメモリ902又は外部記憶装置903を利用することにより実現可能である。また,業務処理部101やデータ変換部203等,特定の処理や制御を行う機能については,外部記憶装置903に記憶されている所定のプログラムをメモリ902にロードしてCPU901で実行することで実現可能である。また,リーダライタ通信部210等,通信制御を行う機能については,CPU901が送受信装置908を利用することで実現可能である。この所定のプログラムは,読取装置905を介して記憶媒体904から,あるいは,送受信装置908を介してネットワークから,外部記憶装置903にダウンロードされ,それから,メモリ902上にロードされてCPU901により実行されるようにしてもよい。また,読取装置905を介して記憶媒体904から,あるいは,送受信装置908を介してネットワークから,メモリ902上に直接ロードされ,CPU901により実行されるようにしてもよい。
【0059】
次に,図7から図12を用いて,業務アプリケーション装置1−1により初期化されたICタグ4が,別の業務アプリケーション装置1−2によってデータを読み書きされる場合のシーケンスについて説明する。
【0060】
図7は,業務アプリケーション装置1−1がICタグ4の初期化を行う場合のシーケンスを記載した図である。
【0061】
ICタグを乗車券として利用する場合,当該シーケンスは,発券機(業務アプリケーション装置)による発券シーケンスに対応する。すなわち,データが書き込まれていない,発券前の乗車券ICタグに対して,その発券機が設置された駅の情報や,発券時刻や,当該乗車券の有効範囲,有効期限などを,ICタグ内のデータ記憶領域に書き込むシーケンスに対応する。
【0062】
業務アプリケーション装置1−1は,ユーザから入出力装置を介して初期化要求操作を受け付けると,ミドルウェア通信部102が,ミドルウェア装置2−1に対して初期化要求アプリケーションコマンドを送信する(S101)。当該コマンドには,パラメータとして,当該業務アプリケーション装置1−1に関連する設定情報が含まれる。乗車券の発券業務の場合,当該パラメータには,業務アプリケーション装置が設置された駅の情報や,発券時刻や,当該乗車券の有効範囲,有効期限などが含まれる。
【0063】
ミドルウェア装置2−1は,装置内のアプリケーション通信部201が,業務アプリケーション装置1−1から送信された初期化要求アプリケーションコマンドを受信すると,受け取ったパラメータ内の業務データを,ICタグへ書き込むための処理を実行する(初期化前処理,S102)。
【0064】
以下,当該処理S102の詳細について,図8を用いて説明する。
【0065】
図8は,ミドルウェア装置2による初期化処理の詳細を表したフローチャートである。
【0066】
ミドルウェア装置2−1内では,アプリケーション通信部201が,業務アプリケーション装置1−1から送信された初期化要求アプリケーションコマンドを受信すると(S102−1), アプリケーションコマンド処理部202が,当該コマンドをデコードし,当該コマンドに含まれるパラメータ(業務データ)を取得しデータ変換部203へ受け渡す(S102−2)。
【0067】
データ変換部203は,まず,業務データ書込バッファ2062と,基本領域書込バッファ2064と,を空にする(S102−3)。
【0068】
次に,データ変換部203は,取得した業務データを,業務データ書込バッファ2062へ格納する(S102−4)。
【0069】
続いて,データ変換部203は,CPU901内のレジスタまたはメモリ902または外部記憶装置903上に,4つの変数M,NAME,OFFSET,DATA用の領域を確保し,それぞれ値0で初期化する(S102−5)。
【0070】
次に,データ変換部203は,対応管理テーブル207を参照し,当該テーブルのM行目に値が存在するか否かを判定する(S102−6)。
【0071】
当該判定の結果,当該テーブルのM行目に値が存在する場合(S102−6でYES),データ変換部203は,対応管理テーブル207のM行目から,「データ名」フィールド207−1と「オフセット」フィールド207−2の値を取得し,それぞれの値で変数NAMEと変数OFFSETの値を上書きする(S102−7)。
【0072】
例として,対応管理テーブル207が,図4のような値が書き込まれた状態であった場合を考える。このとき,Mの値が2であったとすると,当該テーブルの2行目にはデータが格納されているため,変数NAMEにはデータ名「d2」が代入され,変数OFFSETにはオフセット値「(k,10)」が代入される。
【0073】
続いて,データ変換部203は,業務データ書込バッファ2062のNAME行から,「データ」フィールド2062−2の値を取得し,当該データの値で変数DATAを上書きする(S102−8)。
【0074】
次に,データ変換部203は,基本領域書込バッファ2064内の,変数OFFSETで指定される番地へ,変数DATA内のデータを格納する(S102−9)。
【0075】
続いて,データ変換部203は,変数Mの値をインクリメントし(S102−10),対応管理テーブル207のM行目に値が存在するか否かを判定する処理(S102−6)へ処理を戻す。
【0076】
処理S102−6にて,対応管理テーブル207のM行目に値が存在しない,すなわち,対応管理テーブル207内の全ての行に対する走査が完了すると,データ変換部203は,基本領域書込バッファ2064内のデータをICタグ4の基本領域4031へ書き込むよう,リーダライタ装置3−1に対してデータ書込要求メッセージを送信し(S102−11),リーダライタ装置3−1からの返信を待ち受ける状態へ遷移する(S102−12)。当該データ書込要求メッセージはパラメータを含み,当該パラメータによって書込位置と書き込むデータの内容を指示するものとする。ここでは書込位置として基本領域4031の先頭を指定し,書き込むデータの内容として基本領域書込バッファ2064内のデータを指定する。
【0077】
以上が,ミドルウェア装置2−1による,初期化前処理S102の詳細である。
【0078】
図7に戻り,上述の初期化前処理S102の結果,ミドルウェア装置2−1がリーダライタ装置3−1へデータ書込要求メッセージを送信すると(S103),リーダライタ装置3−1は当該書込要求に従ってICタグ4内の基本領域4031先頭へ指定されたデータの書込を実行する(S104)。
【0079】
ICタグ4内への書込が成功すると(S105),リーダライタ装置3−1はミドルウェア装置2−1に対して基本領域4031への書込に成功した旨を通知する(S106)。
【0080】
ミドルウェア装置2−1は,リーダライタ装置3−1から,基本領域4031への書込に成功した旨を通知されると,追記領域4032を初期化するための
処理に移る(初期化中処理,S107)。
【0081】
以下,当該処理S107の詳細について,再び図8を用いて説明する。
【0082】
ミドルウェア装置2−1内では,リーダライタ通信部210がリーダライタ装置3−1からメッセージを受信すると,ICタグコマンド処理部209が,当該メッセージをデコードし,当該メッセージが,基本領域4031への書込に成功したことを意味するメッセージであると解釈する(S102−12でYES)。
【0083】
すると,ミドルウェア装置2−1内のデータ変換部203は,追記領域の末尾を示す識別符号c0をICタグ4の追記領域4032へ書き込むよう,リーダライタ装置3−1に対してデータ書込要求メッセージを送信し(S107−1),リーダライタ装置3−1からの返信を待ち受ける状態へ遷移する(S107−2)。当該データ書込要求メッセージはパラメータを含み,当該パラメータによって書込位置と書き込むデータの内容を指示するものとする。ここでは書込位置として追記領域4032の先頭を指定し,書き込むデータの内容として識別符号c0を指定する。
【0084】
以上が,ミドルウェア装置2−1による,初期化中処理S107の詳細である。
【0085】
図7に戻り,上述の初期化中処理S107の結果,ミドルウェア装置2−1がリーダライタ装置3−1へデータ書込要求メッセージを送信すると(S108),リーダライタ装置3−1は当該書込要求に従ってICタグ4内の追記領域4032先頭へ指定されたデータの書込を実行する(S109)。
【0086】
ICタグ4内への書込が成功すると(S110),リーダライタ装置3−1はミドルウェア装置2−1に対して追記領域4032への書込に成功した旨を通知する(S111)。
【0087】
ミドルウェア装置2−1は,リーダライタ装置3−1から,追記領域4032への書込に成功した旨を通知されると,初期化処理が成功したことを業務アプリケーション装置1−1へ通知するための処理に移る(初期化後処理,S112)。
【0088】
以下,当該処理S112の詳細について,再び図8を用いて説明する。
【0089】
ミドルウェア装置2−1内では,リーダライタ通信部210がリーダライタ装置3−1からメッセージを受信すると,ICタグコマンド処理部209が,当該メッセージをデコードし,当該メッセージが,追記領域4032への書込に成功したことを意味するメッセージであると解釈する(S107−2でYES)。
【0090】
すると,ミドルウェア装置2−1内のアプリケーションコマンド処理部202が,初期化要求アプリケーションコマンドの実行が成功したことを示す初期化要求アプリケーション成功応答を生成し,アプリケーション通信部201を介して,業務アプリケーション装置1−1へ送信する(S112−1)。
【0091】
以上が,ミドルウェア装置2−1による,初期化後処理S112の詳細である。
【0092】
図7に戻り,上述の初期化後処理S112の結果,ミドルウェア装置2−1が業務アプリケーション装置1−1へ初期化要求アプリケーション成功応答を送信し(S113),ICタグ4に対する初期化処理は正常に完了する。
【0093】
一方,図8において,S102−12またはS107−2で,ミドルウェア装置2−1が,リーダライタ装置3−1から何らかのエラーメッセージを受信した場合には(S102−12またはS107−2でNO),ミドルウェア装置2−1内のアプリケーションコマンド処理部202が,初期化要求アプリケーションコマンドの実行に失敗したことを示す初期化要求アプリケーション失敗応答を生成し,アプリケーション通信部201を介して,業務アプリケーション装置1−1へ送信する(S107−3)。
【0094】
図9は,業務アプリケーション装置1−2がICタグ4からデータを読み込み,業務処理を行った後,データの更新を行う場合のシーケンスを記載した図である。
【0095】
ICタグを乗車券として利用する場合,当該シーケンスは,自動改札機(業務アプリケーション装置)による入出場シーケンスに対応する。すなわち,乗車券データが書き込まれた,入場前もしくは出場前の乗車券ICタグに対して,その乗車券が発券された駅の情報や,発券時刻や,当該乗車券の有効範囲,有効期限などを,ICタグ内のデータ記憶領域から読み込み,有効な乗車券であることを確認した後,入場済もしくは出場済であることを示すデータでタグ内のデータを更新するシーケンスに対応する。
【0096】
業務アプリケーション装置1−2は,ユーザから入出力装置を介して初期化要求操作を受け付けると,ミドルウェア通信部102が,ミドルウェア装置2−2に対して読込要求アプリケーションコマンドを送信する(S201)。
【0097】
ミドルウェア装置2−1は,装置内のアプリケーション通信部201が,業務アプリケーション装置1−1から送信された読込要求アプリケーションコマンドを受信すると,受け取ったパラメータ内の業務データを,ICタグへ書き込むための処理を実行する(読込前処理,S202)。
【0098】
以下,当該処理S202の詳細について,図10を用いて説明する。
【0099】
図10は,ミドルウェア装置2による読込処理の前半部を表したフローチャートである。
【0100】
ミドルウェア装置2−2内では,アプリケーション通信部201が,業務アプリケーション装置1−2から送信された読込要求アプリケーションコマンドを受信すると,アプリケーションコマンド処理部202が当該コマンドをデコードし,データ変換部203へ受け渡す(S202−1)。
【0101】
データ変換部203は,まず,業務データ読込バッファ2063と,基本領域読込バッファ2065と,追記領域読込バッファ2067を空にする(S202−3)。
【0102】
次に,データ変換部203は,ICタグ4の基本領域4031および追記領域4032に格納されたデータを読み込むよう,リーダライタ装置3−2に対してデータ読込要求メッセージを送信し(S202−3),リーダライタ装置3−2からの返信を待ち受ける状態へ遷移する(S202−4)。
【0103】
以上が,ミドルウェア装置2−2による,読込前処理S202の詳細である。
【0104】
図9に戻り,上述の読込前処理S202の結果,ミドルウェア装置2−2がリーダライタ装置3−2へデータ読込要求メッセージを送信すると(S203),リーダライタ装置3−2は当該読込要求に従ってICタグ4内の基本領域4031および追記領域4032に格納されたデータの読込を実行する(S204)。
【0105】
ICタグ4からの読込が成功すると(S205),リーダライタ装置3−2はミドルウェア装置2−2に対して基本領域4031および追記領域4032から読み込んだデータを送信する(S206)。
【0106】
ミドルウェア装置2−2は,リーダライタ装置3−2から,基本領域4031および追記領域4032から読み込んだデータを受信すると,読込データを業務アプリケーション装置1−2へ提供するための処理に移る(読込後処理,S207)。
【0107】
以下,当該処理S207の詳細について,再び図10を用いて説明する。
【0108】
ミドルウェア装置2−2内では,リーダライタ通信部210がリーダライタ装置3−2からメッセージを受信すると,ICタグコマンド処理部209が,当該メッセージをデコードし,当該メッセージに含まれるパラメータ(基本領域4031および追記領域4032から読み込んだデータ)を取得する。
【0109】
ここで,正常にデータが取得できなかった場合,もしくは一定時間,一定回数のリトライを経てもリーダライタ装置3−2から応答が無かった場合は(S202−4でNO),ミドルウェア装置2−2内のアプリケーションコマンド処理部202が,読込要求アプリケーションコマンドの実行に失敗したことを示す読込要求アプリケーション失敗応答を生成し,アプリケーション通信部201を介して,業務アプリケーション装置1−2へ送信する(S202−5)。
【0110】
一方,正常にデータが取得できた場合(S202−4でYES),ICタグコマンド処理部209は,当該データをデータ変換部203へ受け渡す。データ変換部203は,受け取ったデータの内,基本領域4031から読み込まれたデータを基本領域読込バッファ2065へ格納し(S207−1),追記領域4032から読み込まれたデータを追記領域読込バッファ2067へ格納する(S207−2)。
【0111】
まず,データ変換部203は,基本領域読込バッファ2065内のデータ変換処理を開始する。データ変換部203は,CPU901内のレジスタまたはメモリ902または外部記憶装置903上に,5つの変数M,NAME,OFFSET,LEN,DATA用の領域を確保し,それぞれ値0で初期化する(S207−3)。
【0112】
次に,データ変換部203は,対応管理テーブル207を参照し,当該テーブルのM行目に値が存在するか否かを判定する(S207−4)。
【0113】
当該判定の結果,当該テーブルのM行目に値が存在する場合,データ変換部203は,対応管理テーブル207のM行目から,「データ名」フィールド207−1と,「オフセット」フィールド207−2と,「データ長」フィールド207−3と,の値を取得し,それぞれの値で変数NAMEと変数OFFSETと変数LENの値を上書きする(S207−5)。
【0114】
例として,対応管理テーブル207が,図4のような値が書き込まれた状態であった場合を考える。このとき,Mの値が2であったとすると,当該テーブルの2行目にはデータが格納されているため,変数NAMEにはデータ名「d2」が代入され,変数OFFSETにはオフセット値「(k,10)」が代入され,変数LENにはデータ長「6」が代入される。
【0115】
続いて,データ変換部203は,基本領域読込バッファ2065から,OFFSET番地を始点として長さLENの領域に格納されたデータを取得し,変数DATAへ代入する(S207−6)。
【0116】
次に,データ変換部203は,業務データ読込バッファ2063のNAME行へ,変数DATA内のデータを格納する(S207−7)。
【0117】
続いて,データ変換部203は,変数Mの値をインクリメントし(S207−8),対応管理テーブル207のM行目に値が存在するか否かを判定する処理(S207−4)へ戻る。
【0118】
処理S207−4にて,対応管理テーブル207のM行目に値が存在しない,すなわち,対応管理テーブル207内の全ての行に対する走査が完了すると,データ変換部203は,追記領域読込バッファ2067内のデータ変換処理に移る(S207−9)。以下,当該処理の詳細について,図11を用いて説明する。
【0119】
図11は,ミドルウェア装置2による読込処理の後半部を表したフローチャートである。
【0120】
ミドルウェア装置2−2内のデータ変換部203は,まず,変数Mの値を0にリセットするとともに,CPU901内のレジスタまたはメモリ902または外部記憶装置903上に,変数CODE用の領域を確保し,値0で初期化する(S207−10)。
【0121】
次に,データ変換部203は,変数Mの値が,追記領域4032の最大サイズを示すMAX_APPENDを超えているか否かを確認する(S207−11)。Mの値がMAX_APPENDを超えている場合(S207−11でYES),MにMAX_APPENDと同じ値を代入し(S207−20),読込終了処理(S207−21,S207−22)に移る。当該処理(S207−21,S207−22)については後述する。
【0122】
一方,Mの値がMAX_APPEND以下であった場合(S207−11でNO),データ変換部203は,追記領域読込バッファ2067のM番地からデータ(識別符号)を取得し,変数CODEへ代入する(S207−12)。ここで,取得するCODEのデータ長は識別符号として使用する符号の種類に依存する。例えば,識別符号として固定長の符号を用いる場合は,常にその符号長のデータを取得しても良いし,可変長の符号を用いる場合には,符号が決定されるまでデータを読み込むこととしても良い。
【0123】
続いて,データ変換部203は,変数CODEの値が,追記領域の終端を示す識別符号c0と一致するか否かを確認する(S207−13)。CODEの値がc0と一致する場合(S207−13でYES),読込終了処理(S207−20,S207−21)に移る。当該処理(S207−20,S207−21)については後述する。
【0124】
一方,CODEの値がc0以外であった場合(S207−13でNO)には,まず,変数Mの値をCODEの長さ分増加させる(S207−14)。続いて,データ変換部203が,符号管理テーブル208内で「識別符号」フィールド208−2が変数CODEと同じ値を持つ行を選択し,当該行の「データ名」フィールド208−1の値を変数NAMEへ代入する(S207−15)。
【0125】
次に,データ変換部203は,対応管理テーブル207内で「データ名」フィールド207−1が変数NAMEと同じ値を持つ行を選択し,当該行の「オフセット」フィールド207−2と,「データ長」フィールド207−3の値をそれぞれ変数OFFSETとLENへ代入する(S207−16)。
【0126】
続いて,データ変換部203は,追記領域読込バッファ2067内の,M番地から長さLENの範囲でデータを取得し,変数DATAへ代入する(S207−17)。
【0127】
次に,データ変換部203は,業務データ読込バッファ2063のNAME行へ,変数DATAの値を格納する(S207−18)。このとき,当該業務データ読込バッファ2063の当該位置(NAME行)へ既にデータが書き込まれている場合には,既存データを上書きすることで新データを格納することとする。
【0128】
続いて,データ変換部203は,変数Mの値を,MにLENの値を加えた値へ更新し(S207−19),Mの値がMAX_APPENDを超えているか否かを判定する処理(S207−11)へ戻る。
【0129】
上述した通り,処理S207−11またはS207−13でそれぞれ条件が満たされた場合(S207−11またはS207−13でYES),読込終了処理(S207−21,S207−22)に移る。
【0130】
まず,データ変換部203は,変数Mの値を追記領域末尾ポインタ205へ格納する(S207−21)。追記領域末尾ポインタ205への格納は,タグを一意に識別するための識別子(タグID)との組として実行する。
【0131】
次に,ミドルウェア装置2−2内のアプリケーションコマンド処理部202が,読込要求アプリケーションコマンドに対する応答として,業務データ読込バッファ2063内のデータをパラメータとして含む読込要求アプリケーション成功応答を生成し,アプリケーション通信部201を介して,業務アプリケーション装置1−2へ送信する(S207−22)。
【0132】
以上が,ミドルウェア装置2−2による,読込後処理S207の詳細である。
【0133】
追記領域読込バッファ2067に格納されるデータは、データ名(NAME)が同じ場合、基本領域読込バッファ2065に格納されるデータよりも新しいデータとなることを利用して、上に記述した読込後処理S207のフローの代わりに以下の順序で処理を実行することで、読込処理の高速化を実現することが可能である。まず、S207−1,S207−2の処理を実行する。続いて、追記領域読込バッファ2067から読み込んだデータを業務データ読込バッファ2063へ格納する処理(S207−10からS207−21までの一連の処理)を実行する。ここで、業務データ読込バッファ2063へ格納されたデータ名(NAME)を「更新済データ種別」として記憶する。次に、基本領域読込バッファ2065から読み込んだデータを業務データ読込バッファ2063へ格納する処理(S207−3からS207−9までの一連の処理)を実行するが、ここで、処理S207−5と処理S207−6の間に、データ名(NAME)が「更新済データ種別」に含まれるデータに関しては、基本領域読込バッファ2065からの読込処理(S207−6,S207−7)をスキップする。最後に、処理S207−22を実行し、読込後処理S207を終了する。 図9に戻り,上述の読込後処理S207の結果,ミドルウェア装置2−2が業務アプリケーション装置1−2へ読込要求アプリケーション成功応答を送信する。当該成功応答には,ICタグ4から読み取ったデータが,業務データ名とその値の組として含まれている(S208)。
【0134】
業務アプリケーション装置1−2は,ミドルウェア通信部102がミドルウェア装置2−2からデータを受信すると,業務処理部101が当該データを用いて業務処理を実行し,データの一部書き換え等の処理を行う(S209)。
【0135】
続いて,業務アプリケーション装置1−2は,業務処理部101がミドルウェア通信部102を介して,書き換えられたデータの更新要求メッセージを,ミドルウェア装置2−2へ送信する(S210)。当該メッセージには,書き換えられたデータに限らず,業務データ全体が含まれていても良い。
【0136】
ミドルウェア装置2−2は,装置内のアプリケーション通信部201が,業務アプリケーション装置1−2から送信された更新要求アプリケーションコマンドを受信すると,受け取ったパラメータ内の業務データを,ICタグへ書き込むための処理を実行する(書込前処理,S211)。
【0137】
以下,当該処理S211の詳細について,図12を用いて説明する。
【0138】
図12は,ミドルウェア装置2による書込処理の詳細を表したフローチャートである。
【0139】
ミドルウェア装置2−2内では,アプリケーション通信部201が,業務アプリケーション装置1−2から送信された更新要求アプリケーションコマンドを受信すると(S211−1),アプリケーションコマンド処理部202が,当該コマンドをデコードし,当該コマンドに含まれるパラメータ(業務データ)を取得しデータ変換部203へ受け渡す(S211−2)。
【0140】
データ変換部203は,まず,業務データ書込バッファ2062と,業務データ差分バッファ2061と,追記領域書込バッファ2066と,を空にする(S211−3)。
【0141】
次に,データ変換部203は,取得した業務データを,業務データ書込バッファ2062へ格納する(S211−4)。
【0142】
続いて,差分計算部204が,業務データ書込バッファに格納された値と,業務データ読込バッファに格納された値と,を比較し,値が異っているデータだけを抽出し,業務データ差分バッファへ格納する(S211−5)。
【0143】
次に,データ変換部203は,CPU901内のレジスタまたはメモリ902または外部記憶装置903上に,4つの変数M,NAME,CODE,DATA用の領域を確保し,それぞれ値0で初期化する(S211−6)。
【0144】
続いて,データ変換部203は,業務データ差分バッファにデータが存在するか否かを判定する(S211−7)。
【0145】
当該判定の結果,当該バッファにデータが存在する場合(S211−7でYES),データ変換部203は,業務データ差分バッファ2061から「データ名」フィールド2061−1と「データ」フィールド2061−2の値を取得し,それぞれの値で変数NAMEと変数DATAの値を上書きする。また値の取得後には,取得した値を含む行のデータを,業務データ差分バッファ2061から削除し,同じ値が二度以上取得されないようにする(S211−8)。
【0146】
次に,データ変換部203は,符号管理テーブル208内で「データ名」フィールド208−1が変数NAMEと同じ値を持つ行を選択し,当該行の「識別符号」フィールド208−2 の値を変数CODEへ代入する(S211−9)。
【0147】
続いて,データ変換部203は,変数CODEと変数DATAに含まれる値を,CODE,DATAの順で結合し,結合後のデータを追記領域書込バッファ2066の末尾へ追加する(S211−10)。追加後,データ変換部203は,業務データ差分バッファ2061にまだデータが残っているかどうかを確認する処理(S211−7)に戻る。
【0148】
処理S211−7にて,業務データ差分バッファ2061にデータが残っていない,すなわち,書き換える必要のある全ての業務データに対して,追記領域書込バッファ2066への追記が完了すると(S211−7でNO),データ変換部203は,追記領域書込バッファ2066の末尾へ識別符号c0を書き込む(S211−11)。
【0149】
次に,データ変換部203は,追記領域末尾ポインタ205から,書込対象の電子タグ4のタグIDに一致する行を検索し,追記領域4032の末尾アドレスを取得し,変数Mへ格納する(S211−12)。
【0150】
続いて,データ変換部203は,追記領域書込バッファ2066内のデータを,ICタグ4の追記領域4032内,変数Mで指定される番地へ書き込むよう,リーダライタ装置3−2に対してデータ書込要求メッセージを送信し(S211−13),リーダライタ装置3−2からの返信を待ち受ける状態へ遷移する(S211−14)。当該データ書込要求メッセージはパラメータを含み,当該パラメータによって書込位置と書き込むデータの内容を指示するものとする。ここでは書込位置として追記領域4032のM番地を指定し,書き込むデータの内容として追記領域書込バッファ2066内のデータを指定する。
【0151】
以上が,ミドルウェア装置2−2による,書込前処理S211の詳細である。
【0152】
図9に戻り,上述の書込前処理S211の結果,ミドルウェア装置2−2がリーダライタ装置3−2へデータ書込要求メッセージを送信すると(S212),リーダライタ装置3−2は当該書込要求に従い,ICタグ4内の追記領域4032におけるM番地へ,指定されたデータの書込を実行する(S213)。
【0153】
ICタグ4内への書込が成功すると(S214),リーダライタ装置3−2はミドルウェア装置2−2に対して追記領域4032への書込に成功した旨を通知する(S215)。
【0154】
ミドルウェア装置2−2は,リーダライタ装置3−2から,追記領域4032への書込に成功した旨を通知されると,書込の成功を業務アプリケーション装置1−2へ通知するための処理に移る(書込後処理,S216)。
【0155】
以下,当該処理S216の詳細について,再び図12を用いて説明する。
【0156】
ミドルウェア装置2−2内では,リーダライタ通信部210がリーダライタ装置3−2からメッセージを受信すると,ICタグコマンド処理部209が,当該メッセージをデコードし,当該メッセージが,追記領域4032への書込に成功したことを意味するメッセージであると解釈する(S211−14でYES)。
【0157】
すると,ミドルウェア装置2−2内のアプリケーションコマンド処理部202が,更新要求アプリケーションコマンドの実行が成功したことを示す更新要求アプリケーション成功応答を生成し,アプリケーション通信部201を介して,業務アプリケーション装置1−2へ送信する(S216−1)。
【0158】
一方,S211−14において,ミドルウェア装置2−2が,リーダライタ装置3−2から何らかのエラーメッセージを受信した場合や,一定時間,一定回数のリトライを経てもリーダライタ装置3−2から応答が無かった場合は(S211−14でNO),ミドルウェア装置2−2のアプリケーションコマンド処理部202が,更新要求アプリケーションコマンドの実行に失敗したことを示す更新要求アプリケーション失敗応答を生成し,アプリケーション通信部201を介して,業務アプリケーション装置1−2へ送信する(S216−2)。
【0159】
以上が,ミドルウェア装置2−1による,書込後処理S216の詳細である。
【0160】
図9に戻り,上述の書込後処理S216の結果,ミドルウェア装置2−2が業務アプリケーション装置1−2へ更新要求アプリケーション成功応答を送信すると(S217),ICタグ4に対するデータ更新処理は正常に完了する。
【0161】
なお,ここでは説明のために,ICタグ4に対して初期化処理を行った業務アプリケーション装置と,初期化後のICタグ4に対して読込処理と書込処理を行う業務アプリケーション装置を異なるものとして記載したが,両者は必ずしも異なるものでなくとも良い。
【0162】
また,追記領域4032の空き容量が小さくなった場合には,以下の手順により,追記領域4032のクリーニングを行うことで,空き容量を最大化することが可能である。まず,業務アプリケーション装置1は,ミドルウェア装置2に対して読込要求メッセージを送信し,ICタグ4から最新の業務データを取得する。続いて,当該取得したデータをパラメータとする初期化要求メッセージを,ミドルウェア装置2に対して送信することで,ICタグ4内の基本領域4031のデータが最新のデータに更新され,追記領域4032には識別符号c0だけが格納されることとなる。
【0163】
ここで,追記領域4032のクリーニングを行うまでは,それまでにICタグ4に対して行われた全ての更新内容が,追記領域内のデータという形で残されているため,当該領域内の以前のデータを参照し,最新のデータとして再度書き込みを行うことで,処理のやり直し(アンドゥ操作)を実現することが可能である。
【実施例2】
【0164】
以上の実施形態に基づき,ICタグを乗車券として利用した場合を例に取って,ICタグ(乗車券)へのデータの書込が行われる過程をより具体的に説明する。
【0165】
図13は,本実施例のシステム構成の概略図である。
【0166】
図示するように,本実施例では,業務アプリケーション装置として,発券装置1−1と,入場管理装置1−2と,出場管理装置1−3と,精算装置1−4と,の4つを備える。当該装置はそれぞれミドルウェア装置2−1〜2−4と相互に通信を行い,各ミドルウェア装置はそれぞれリーダライタ装置3−1〜3−4と相互に通信を行う。ICタグ4は乗車券として利用される。
【0167】
また,図14は,本実施例において,各ミドルウェア装置2−1〜2−4に格納される対応管理テーブル207と符号管理テーブル208の一例を示した図である。例えば対応管理テーブル207においては,データ名として「乗車駅」を持つデータは,ICタグ4上の基本領域4031ではオフセット(k+2,10)で指定される箇所に書き込まれ,その長さは8であることが示されている。また,符号管理テーブル208においては,データ名として「乗車駅」を持つデータは,ICタグ4上の追記領域4032へ書き込まれる際には,識別符号c9と結合された状態で書き込まれることが示されている。
【0168】
乗車客が駅構内に設置された発券装置1−1(例えば券売機)に対して運賃の投入や行き先の範囲選択などを指示すると,発券装置1−1はミドルウェア装置2−1に対し,図7および図8で示したような初期化処理の実行要求を送信する。図7に示すシーケンスおよび図8に示すフローが滞りなく完了すると,ICタグ4のデータ記憶部403には図15のようにデータが書き込まれる。
【0169】
図15は,発券装置1−1による発券処理が完了した後の,ICタグ4(乗車券)内のデータ記憶部403の一例を示した図である。発券駅,種別,改札通過日時,有効期間,有効区間,入出場情報(図15では「入出」と記載),発券日時,乗車駅,といったデータが基本領域4031に書き込まれる。追記領域4032には,先頭に識別符号c0のみが書き込まれる。
【0170】
続いて乗車客が,発券されたICタグ4を入場管理装置1−2(例えば自動改札機)へ挿入すると,当該入場管理装置1−2はミドルウェア装置2−2に対し,図9〜図12で示したような読込処理および更新処理の実行要求を送信する。
【0171】
まず,図9のS201〜S207までの処理が滞りなく完了すると,ICタグ4のデータ記憶部403から読み出されたデータがミドルウェア装置2−2内の業務データ読込バッファ2063へ格納される。当該データが格納された直後の業務データ読込バッファ2063の一例を図16の左上部へ示す。図示するように,各業務データ名(発券駅,改札通過日時など)に対応した値が読み取られ,バッファに格納される。
【0172】
入場管理装置1−2は,ミドルウェア装置2−2から,業務データ読込バッファ2063内のデータを受信すると,図9の業務処理S209に相当する処理として,例えば,発券駅や発券時刻,有効区間などを確認し,入場の可否を判定する。入場可能と判定した場合には,業務データを書き換えた後,図9のS210で示すような更新要求メッセージを送信する。このとき,書き換え後のデータは当該更新要求メッセージのパラメータとして渡され,当該パラメータは,図12のS211−1〜S211−4に従い,業務データ書込バッファ2062へ格納される。当該データが格納された直後の業務データ書込バッファ2062の一例を図16の右上部へ示す。
【0173】
続いて,ミドルウェア装置2−2は,図12のS211−5に従い,業務データ書込バッファ2062と業務データ読込バッファ2063の差分を計算し,業務データ差分バッファ2061へ格納する。当該差分データが格納された直後の,業務データ差分バッファ2061の一例を,図16の下部へ示す。
【0174】
以上に示したように,本実施例では,書き換え前の業務データと,書き換え後の業務データの差分を計算することにより,更新が必要なデータの範囲を特定し,後に実行する,ICタグに対するデータ書込処理の回数を削減し,書込速度の向上が実現されている。
【0175】
ミドルウェア装置2−2は,図12のS211−7〜S211−10に従い,業務データ差分バッファ2061内の各業務データを追記領域書込バッファ2066へ書き込んだ後,当該バッファの末尾へ識別符号c0を付加し,追記領域の末尾へ追記する。当該追記が完了した直後の,ICタグ4内データ記憶部403の一例を,図17に示す。
【0176】
更新処理においては,基本領域4031内のデータには変更を加えず,追記領域4032に,識別符号と当該識別符号に対応する更新後のデータとを連ねて追記する。図17では,追記領域4032内に改札通過日時,入出場情報,乗車駅情報を追記している。(図17中,*の記号は更新後のデータであることを示す)
以上に示したように,本実施例では,書き換え対象のデータが連続するように追記を行う。そのため,ISO18000−6TypeC仕様のBlockWriteコマンドに対応したICタグのように,メモリ上で連続したデータを1度のコマンドで書き込むことのできるICタグに対して,1度のコマンドで更新処理が済み,書込処理の高速化が実現されている。
【0177】
続いて乗車客が電車へ乗り,所望の駅に到着後,出場するために,入場管理装置1−2を通した後のICタグ4を,出場管理装置1−3(例えば自動改札機)へ挿入すると,当該出場管理装置1−3は,ミドルウェア装置2−3に対し,図9〜図12で示したような読込処理および更新処理の実行要求を送信する。
【0178】
ここで,出場管理装置1−3による読込処理は,追記領域4032内にデータが格納されている点で,先述した入場管理装置1−2による読込処理の場合と異なる。特に,図11のS207−14〜S207−19の処理が,追記領域4032に格納されているデータの分だけ実行される。例えばICタグ4内のデータ記憶部403が,図17に示したような状態を取る場合,図11の処理S207−13で追記領域読込バッファ先頭のデータがc0と比較されるが,当該バッファ先頭には識別符号c2が格納されているため,S207−14以降へ処理を進めることとなる。
【0179】
まず,Mの値を識別符号c2の長さだけ増加させた後(S207−14),図14に記載した符号管理テーブル208を参照し,識別符号としてc2を含む行を探し,当該行の「データ名」フィールドに含まれる「改札通過日時」を取得し,変数NAMEへ代入する(S207−15)。
【0180】
次に,対応管理テーブル207を参照し,データ名として変数NAMEすなわち「改札通過日時」を含む行を探し,当該行の「オフセット」フィールドと「データ長」フィールドの値をそれぞれ変数OFFSETおよび変数LENへ代入する。ここでは図14に記載の対応管理テーブル207に基づき,OFFSETには(k,10)が,LENには6が,それぞれ代入される(S207−16)。
【0181】
続いて,追記領域読込バッファ2067内,M番地(識別符号c2を読み込んだ直後の位置)から,長さLENだけの範囲に存在するデータを読み込み,変数DATAへ代入する。ここでは,ICタグ4内のデータ記憶部403が図17に示したような構造を取るため,改札通過日時の更新後の値が取得される(S207−17)。取得した値は,業務データ読込バッファ2063の「改札通過日時」行へ格納され,基本領域4031から読み込んだ値が追記領域4032から読み込んだ値で上書きされる。
【0182】
以上に示したような処理が,追記領域4032内の残りのデータに対しても行われ,最終的に業務データ読込バッファ2063内には,最新の追記データが古いデータを上書きした状態で,業務アプリケーション(ここでは出場管理装置1−3)へ提供される。
【0183】
本実施例では,ICタグ内でのデータ配置方法を識別符号のみで表現し,データ長やデータ名は各ミドルウェア装置に保存することで,ICタグ内のメモリを有効利用することを可能にしている。
【0184】
出場管理装置1−3は,ICタグ4の有効性を確認すると,業務データの改札通過日時を書き換え,ミドルウェア装置2−3へ更新を要求し,更新の完了後,乗車券を回収し,改札の扉を乗車客のために開放する。改札通過日時が書き換えられた直後のICタグ4について,データ記憶部403の一例を図18に示す。図示するように,追記領域4032の末尾には,識別符号c2と,改札通過日時の二度目の更新データ(「改札通過日時**」として表記)と,追記領域の末尾を示す識別符号c0と,が追記されている。
【0185】
精算装置1−4による精算時など,ICタグ4とミドルウェア装置2とが通信可能な時間が比較的長く確保されている場合には,追記領域4032の空き容量を拡大するために,以下のような処理を実行しても良い。まず,精算装置1−4は,ミドルウェア装置2−4に対して読込要求メッセージを送信し,ICタグ4から最新の業務データを取得する。続いて,当該取得したデータをパラメータとする初期化要求メッセージを,ミドルウェア装置2−4に対して送信することで,ICタグ4内の基本領域4031のデータが最新のデータに更新され,追記領域4032には識別符号c0だけが格納されることとなる。
【0186】
図19は,図18で示したICタグ4に対して,上記の処理を実行した結果,追記領域4032の空き容量が最大化された例を図示したものである。
【符号の説明】
【0187】
1−1〜1−n:業務アプリケーション装置,2−1〜2−n:ミドルウェア装置,3−1〜3−n:リーダライタ装置,4:ICタグ,9:コンピュータ,10:RFIDシステム

【特許請求の範囲】
【請求項1】
ICタグへのデータ書き込みシステムにおいて、
前記ICタグのデータ記憶部は、予め複数の種類のデータが格納された基本領域と追記領域とを有し、
ICタグへ書き込むデータと前記ICタグのデータ記憶部に格納されたデータとを比較し、変更が生じたデータを抽出するミドルウェア装置と、
前記抽出された変更が生じたデータを、当該データの種類に応じた識別符号と共に前記追記領域に格納するリーダライタ装置と、
を有することを特徴とするデータ書き込みシステム。
【請求項2】
請求項1に記載のデータ書き込みシステムにおいて、
前記リーダライタ装置は、前記追記領域に格納する複数のデータを連続して位置するように書き込むことを特徴とするデータ書き込みシステム。
【請求項3】
請求項1または2に記載のデータ書き込みシステムにおいて、
前記ミドルウェア装置は、
前記ICタグ内に格納する前記識別符号と、前記ミドルウェア装置間で共有する前記対応管理テーブルと前記符号管理テーブルの組み合わせと、を利用し識別符号を付加することを特徴とする、データ書き込みシステム。
【請求項4】
ICタグへのデータ書き込み方法において、
前記ICタグのデータ記憶部は、予め複数の種類のデータが格納された基本領域と追記領域とを有しており、
ミドルウェア装置により、ICタグへ書き込むデータと前記ICタグのデータ記憶部に格納されたデータとを比較し、変更が生じたデータを抽出するステップと、
リーダライタ装置により、前記抽出された変更が生じたデータを、当該データの種類に応じた識別符号と共に前記追記領域に格納するステップと、
を有することを特徴とするデータ書き込み方法。
【請求項5】
請求項4に記載のデータ書き込み方法において、
前記リーダライタ装置により前記追記領域に格納するステップは、前記追記領域に格納する複数のデータを書き込む場合、当該複数のデータを連続した位置に格納されるように書き込むことを特徴とするデータ書き込み方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2010−286935(P2010−286935A)
【公開日】平成22年12月24日(2010.12.24)
【国際特許分類】
【出願番号】特願2009−138776(P2009−138776)
【出願日】平成21年6月10日(2009.6.10)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】