《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 一種嵌入式RFID讀寫器的內(nèi)部數(shù)據(jù)管理研究
一種嵌入式RFID讀寫器的內(nèi)部數(shù)據(jù)管理研究
來源:電子技術(shù)應(yīng)用2012年第6期
葛志軍,郝永生
軍械工程學(xué)院 導(dǎo)彈工程系,河北 石家莊050003
摘要: 為了適應(yīng)軍械保障信息化需求,運(yùn)用RFID技術(shù)作為裝備信息的采集方式,結(jié)合裝備信息的特點(diǎn)及RFID數(shù)據(jù)特點(diǎn),設(shè)計(jì)了合適的數(shù)據(jù)結(jié)構(gòu),并建立相應(yīng)數(shù)據(jù)模型。研究了支持多頻段嵌入式讀寫器內(nèi)部數(shù)據(jù)處理流程,根據(jù)相應(yīng)過濾規(guī)則過濾數(shù)據(jù),并使用SQLite數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)以方便管理。同時(shí)還研究了在嵌入式WebServer中的實(shí)現(xiàn)方案,使得客戶端的查詢操作等數(shù)據(jù)交互更為容易。
中圖分類號(hào): TP392
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)06-0034-03
Research on the internal data management of an embedded RFID reader
Ge Zhijun,Hao Yongsheng
Department of Missile Engineering, Ordnance Engineering College, Shijiazhuang 050003,China
Abstract: In order to meet needs of ordnance protections dependent on information, use RFID technology as a way to collect the information of equipment, contact with equipment information and the characteristics of RFID data, design a suitable data structure and a corresponding data model. Research on the reader internal data processing which embedded supporting multi-band, filtering data based on the corresponding filter rules, and easy manage store data by using the SQLite database, study the establishment of an embedded WebServer, so that the client's queries and other data exchange will be much easier.
Key words : data model;SQLite database;data management;embedded WebServer

    在保障軍械裝備時(shí),訓(xùn)練使用、檢修、加裝改造等記錄用傳統(tǒng)手工操作,管理人員必須對(duì)進(jìn)裝備名稱、隨裝配套武器類型及數(shù)量、出廠單位、出廠日期以及其他眾多屬性進(jìn)行逐一登記,不但工作效率低、而且容易出差錯(cuò),成為制約工作進(jìn)度的瓶頸。如果裝備信息管理運(yùn)用RFID標(biāo)簽取代紙質(zhì)履歷表,記錄裝備從出廠、配備、動(dòng)用、維修、保管、事故、加裝改造、退役報(bào)廢等全生命周期的履歷信息,手持讀寫器讀取射頻標(biāo)簽及信息記錄裝置每日信息,可以幫助操作人員及時(shí)掌握裝備工作情況,為維修保障人員提供信息支持。

    但不同于普通物流領(lǐng)域,由于裝備信息較為復(fù)雜,單一普通標(biāo)簽難以勝任承載所需全部信息??紤]經(jīng)濟(jì)和實(shí)用性,采用不同頻率多標(biāo)簽方式才能較好滿足要求。因此,本文針對(duì)裝備信息的RFID數(shù)據(jù)結(jié)構(gòu)重點(diǎn)進(jìn)行了分析,并詳細(xì)研究了嵌入式讀寫器內(nèi)部數(shù)據(jù)的存儲(chǔ)和管理,以滿足軍械保障信息化需求。
1 RFID數(shù)據(jù)模型研究
1.1 RFID數(shù)據(jù)特性

    RFID數(shù)據(jù)模型是管理RFID數(shù)據(jù)的基礎(chǔ)。從總體上RFID應(yīng)用有著共同的需求特點(diǎn):
    (1)識(shí)別:RFID標(biāo)簽唯一地標(biāo)識(shí)該物體。
    (2)位置:一個(gè)位置可以是一個(gè)地理位置,也可以是有背景含義的特殊位置,如倉(cāng)庫(kù)、靶場(chǎng)等。
    (3)關(guān)系:RFID應(yīng)用的另一個(gè)關(guān)鍵概念是聚合,即對(duì)象之間形成的關(guān)系。一種常見聚合情況是包含關(guān)系,即在物體運(yùn)動(dòng)過程中,被包含的物體與外包裝物體有相同的運(yùn)動(dòng)路徑等特性。另一個(gè)集合情況是協(xié)作,即貼有標(biāo)簽的物體之間有一定的關(guān)系[1],如某型導(dǎo)彈射擊訓(xùn)練由發(fā)射車與檢測(cè)車共同完成,則發(fā)射車與檢測(cè)車之間有協(xié)作關(guān)系。
1.2 數(shù)據(jù)模型
    本文重點(diǎn)是利用數(shù)據(jù)庫(kù)技術(shù)實(shí)現(xiàn)裝備數(shù)據(jù)信息的層次化管理。系統(tǒng)中涉及的數(shù)據(jù)主要有靜態(tài)數(shù)據(jù)和動(dòng)態(tài)數(shù)據(jù)兩種類型。
1.2.1 靜態(tài)數(shù)據(jù)
    靜態(tài)數(shù)據(jù)是有關(guān)固定信息、業(yè)務(wù)規(guī)則以及系統(tǒng)設(shè)置的數(shù)據(jù),不輕易隨時(shí)間變更[2]。在本系統(tǒng)中,靜態(tài)數(shù)據(jù)主要包括:
    (1)Objects:所有使用射頻標(biāo)簽進(jìn)行標(biāo)識(shí)的武器系統(tǒng),包括武器系統(tǒng)及隨裝配件的名稱、型號(hào)、出廠單位、出產(chǎn)年份等信息。
    (2)Organizations:裝備在生命周期(出廠到退役報(bào)廢之間的時(shí)間)內(nèi)裝配變動(dòng)信息,包括裝配單位、裝配時(shí)間、戰(zhàn)斗序列等信息。
    (3)Actions:事務(wù)處理類型。包括重大活動(dòng)記錄、技術(shù)檢查、維修、加裝改裝等信息。
1.2.2 動(dòng)態(tài)數(shù)據(jù)
    動(dòng)態(tài)數(shù)據(jù)反映了武器系統(tǒng)運(yùn)作中的事務(wù)過程,與時(shí)間、空間密切相關(guān)。動(dòng)態(tài)數(shù)據(jù)主要包括:Arrangement,用于描述裝備實(shí)體(Objects)與狀態(tài)的層次關(guān)系;ObjectOrganization,用于描述裝備實(shí)體(Objects)在某時(shí)間內(nèi)的調(diào)撥、調(diào)整;ActionItem,用于描述裝備處理情況。
1.2.3 數(shù)據(jù)模型的建立
    如果有靜態(tài)關(guān)系,則根據(jù)ER模型的映射關(guān)系,映射成表即可[3]。對(duì)于兩個(gè)實(shí)體之間的基于狀態(tài)的關(guān)系,則在兩個(gè)實(shí)體表的主鍵之間加上時(shí)間間隔(stime,etime)組成,其中時(shí)間間隔代表了關(guān)系或者狀態(tài)存在的生命周期?;谑录膭?dòng)態(tài)關(guān)系,由映射在兩個(gè)表的主鍵加上時(shí)間戳屬性timestamp組成,這個(gè)時(shí)間戳代表了時(shí)間發(fā)生的時(shí)間點(diǎn)。

 


2 基于嵌入式的RFID讀寫器數(shù)據(jù)管理
2.1 系統(tǒng)的設(shè)計(jì)思路

    根據(jù)以上分析,數(shù)據(jù)來源主要分為兩類:一類是固定的裝備身份信息,這些信息是一般不會(huì)隨時(shí)間變化,數(shù)據(jù)量比較?。涣硪活愂莿?dòng)態(tài)的裝備壽命信息,通常是記錄日常操作的起始時(shí)間和裝備調(diào)撥、調(diào)整,數(shù)據(jù)量稍大且需要重復(fù)讀寫。
    為此,以某型車輛裝備為例,采用一種13.56 MHz的無源標(biāo)簽存儲(chǔ)裝備身份信息,采用頻率為2.4 GHz的有源標(biāo)簽存儲(chǔ)動(dòng)態(tài)壽命信息。本設(shè)計(jì)采用Windows CE作為操作系統(tǒng),通過RFID射頻收發(fā)模塊讀取所需求的數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行解析、提取、存儲(chǔ),并構(gòu)建嵌入式SQLite數(shù)據(jù)庫(kù),實(shí)現(xiàn)對(duì)數(shù)據(jù)的管理。而用戶對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行查詢修改等操作,最方便的方法就是在Web頁(yè)面里實(shí)現(xiàn),因此需要搭建一個(gè)Web服務(wù)器,使用戶可以通過Web頁(yè)面來控制這些工作的完成并實(shí)現(xiàn)對(duì)數(shù)據(jù)的操作訪問??傮w設(shè)計(jì)思路如圖1所示。

    圖中,設(shè)備管理提供了統(tǒng)一的讀寫器接口程序,可兼容性地控制多種類型讀寫器的工作;數(shù)據(jù)管理完成了數(shù)據(jù)的過濾、存儲(chǔ),并利用嵌入式Web服務(wù)器對(duì)數(shù)據(jù)進(jìn)行查詢和修改;嵌入式Web服務(wù)器是嵌入式技術(shù)和網(wǎng)絡(luò)技術(shù)結(jié)合的產(chǎn)物,把Internet中的Web服務(wù)器進(jìn)行一定的裁剪,嵌入到設(shè)備中,從而可以利用嵌入式Web服務(wù)器對(duì)設(shè)備進(jìn)行操作、管理。本文擬使用GoAhead WebServer,它是一個(gè)源碼免費(fèi)、可以運(yùn)行在多個(gè)平臺(tái)的嵌入式Web服務(wù)器,并支持ASP、嵌入式JavaScript和標(biāo)準(zhǔn)的CGI執(zhí)行,能較好地滿足需求。
2.2 數(shù)據(jù)的解析和過濾
    讀寫器從標(biāo)簽讀取大量的未經(jīng)處理的數(shù)據(jù),一般來說讀取到的數(shù)據(jù)并非完全有用的標(biāo)簽數(shù)據(jù),需要對(duì)其進(jìn)行提取、解析,以得到有用的信息。數(shù)據(jù)在傳輸過程中不可避免地會(huì)受到外界的干擾而發(fā)生錯(cuò)誤,因此數(shù)據(jù)必須進(jìn)行過濾,將過濾后的數(shù)據(jù)再進(jìn)行存儲(chǔ)[4]。
    標(biāo)簽數(shù)據(jù)一般都是二進(jìn)制編碼,讀取后需要將二進(jìn)制編碼數(shù)據(jù)轉(zhuǎn)換成unicode數(shù)據(jù)。標(biāo)簽數(shù)據(jù)的解析和過濾流程如圖2所示。


    在標(biāo)簽讀取過程中實(shí)現(xiàn)標(biāo)簽的二進(jìn)制位編碼到unicode編碼的轉(zhuǎn)換,在標(biāo)簽數(shù)據(jù)處理環(huán)節(jié)則根據(jù)轉(zhuǎn)換獲得的標(biāo)簽unicode編碼以及過濾條件對(duì)標(biāo)簽進(jìn)行過濾,為信息應(yīng)用層提供有意義的標(biāo)簽信息。
    過濾規(guī)則可以通過Web頁(yè)面進(jìn)行設(shè)置,設(shè)置信息存儲(chǔ)到過濾規(guī)則配置文件中。進(jìn)行過濾時(shí),過濾器讀取配置文件并應(yīng)用于過濾規(guī)則。
3 數(shù)據(jù)存儲(chǔ)與管理的實(shí)現(xiàn)
3.1 構(gòu)建嵌入式數(shù)據(jù)庫(kù)

    SQLite3是輕型、免費(fèi)和開源的嵌入式數(shù)據(jù)庫(kù),支持絕大多數(shù)標(biāo)準(zhǔn)的SQL92語(yǔ)句,工作速度快,可以滿足中間件數(shù)據(jù)處理的實(shí)時(shí)要求。因此選用SQLite3數(shù)據(jù)庫(kù)在大小和功能方面是一個(gè)理想的折中。
    SQLite3嵌入式數(shù)據(jù)庫(kù)提供了源碼,在硬件平臺(tái)上對(duì)源碼進(jìn)行交叉編譯即可實(shí)現(xiàn)移植。編譯后,生成了大小為93 KB的sqlite3可執(zhí)行文件和大小為991 KB的sqlite3動(dòng)態(tài)鏈接庫(kù)libsqlite3.so。
3.2 數(shù)據(jù)模型在數(shù)據(jù)庫(kù)中的實(shí)現(xiàn)
    嵌入式數(shù)據(jù)庫(kù)中以單個(gè)庫(kù)文件形式進(jìn)行數(shù)據(jù)存儲(chǔ),數(shù)據(jù)庫(kù)文件可以在不同的操作系統(tǒng)平臺(tái)下使用而無需轉(zhuǎn)換。數(shù)據(jù)庫(kù)文件內(nèi)部采用表數(shù)據(jù)頁(yè)和索引數(shù)據(jù)頁(yè)兩種存儲(chǔ)結(jié)構(gòu)進(jìn)行組織。用戶定義的臨時(shí)表和系統(tǒng)中的臨時(shí)表(用于排序、分組等操作)以臨時(shí)數(shù)據(jù)庫(kù)文件形式進(jìn)行管理。
    SQLite數(shù)據(jù)庫(kù)應(yīng)用體系結(jié)構(gòu)如圖3所示。

    在開發(fā)板上,使用上一步生成的sqlite3可執(zhí)行文件來生成本系統(tǒng)所需要的數(shù)據(jù)庫(kù)表。Sqlite3的數(shù)據(jù)庫(kù)與Access數(shù)據(jù)庫(kù)類似都采用了單文件的模式,為此生成了一個(gè)名為rfid的數(shù)據(jù)庫(kù)文件,根據(jù)項(xiàng)目需求規(guī)劃必須的數(shù)據(jù)表。
    直接在命令行下敲入“sqlite3 rfid;”即可生成rfid數(shù)據(jù)庫(kù),并得到提示符“sqlite3〉”,通過輸入SQL語(yǔ)句即可建立所需的表:
    create table rfid(Number integer primary key, Objects varchar(),Organizations varchar(),Actions varchar(),ActionItem varchar(),ObjectOrganization varchar(),Arrangement varchar());
    .quit;
    這里只考慮了基本屬性,可以為數(shù)據(jù)表做擴(kuò)展表格實(shí)現(xiàn)其額外的屬性。
    參照SQL DML的語(yǔ)法,該模型的邏輯結(jié)構(gòu)主要元素描述如下:
    (1)Objects: Objects(EPC Primary Key, name, deseription),記錄武器系統(tǒng)及隨裝信息。
    (2)Organizations: Organizations(organizationID Primary Key,organization),標(biāo)識(shí)裝備在生命周期內(nèi)裝配單位及編制序列。
    (3)Actions: Actions(actionID Primary Key,actType),標(biāo)識(shí)業(yè)務(wù)流程中的事務(wù)類型。其中,actionID為事務(wù)類型標(biāo)識(shí)碼;actType表示事務(wù)類型的名稱。
    (4)Arrangement:Arrangement(ID Primary Key,EPC,parentEPC,QtyOfChild,organizationID,stime,etime),Arran-
gement關(guān)系是本數(shù)據(jù)模型的關(guān)鍵,反映了物品的物理層次關(guān)系。其中,parentEPC標(biāo)識(shí)關(guān)于該EPC的上一層次的EPC編碼;QtyOfChild記錄了由該EPC標(biāo)識(shí)的下一層次的物品數(shù)量;stime和etime分別標(biāo)識(shí)該層次關(guān)系的發(fā)生和結(jié)束時(shí)間。
    (5)ActionItem:ActionItem(ID Primary Key,actionID,EPC references Objects,timestamp):ID標(biāo)識(shí)每個(gè)發(fā)生的事務(wù);timestamp為該事務(wù)發(fā)生的時(shí)間。
    (6)ObjectOrganization(ID Primary Key,EPC refferenees Objects, organizationID, timestamp):ID標(biāo)識(shí)裝備的調(diào)撥、調(diào)整及編制戰(zhàn)斗序列的變化。
    SQLite數(shù)據(jù)庫(kù)提供了豐富的C語(yǔ)言API接口函數(shù),使得對(duì)數(shù)據(jù)庫(kù)的操作十分方便。本系統(tǒng)只需要以下3個(gè)核心函數(shù)就可以實(shí)現(xiàn)連接數(shù)據(jù)庫(kù)、處理查詢等操作:
    int sqlite3_open(const char*db,int mode,char* *errmsg);
    int sqlite3_close(sqlite*db);
    int sqlite3_exec(sqlite*db,char*sql,int(*callback) (void*,
int,char**,char**),void*parg,char**errmsg);
其中,前2個(gè)函數(shù)用于打開與關(guān)閉數(shù)據(jù)庫(kù),第3個(gè)函數(shù)sqlite3_exec()用來處理SQL查詢,此函數(shù)的第2個(gè)參數(shù)用來處理一條或多條SQL語(yǔ)句,如果是查詢(SELECT)語(yǔ)句,則查詢結(jié)果的每一條記錄都必須調(diào)用第3個(gè)參數(shù)的Callback函數(shù),第4個(gè)參數(shù)則為Callback函數(shù)的第一個(gè)參數(shù)指針;如果不是查詢語(yǔ)句,則第3、4個(gè)參數(shù)為NULL。所有SQL執(zhí)行完畢后返回0,否則返回錯(cuò)誤代碼,可通過第5個(gè)參數(shù)值來查看詳細(xì)錯(cuò)誤信息。
    使用sqlite3_mprintf函數(shù)將數(shù)據(jù)段的值添加到SQL語(yǔ)句中,然后通過sqlite3_exec函數(shù)執(zhí)行該SQL語(yǔ)句把標(biāo)簽數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中。
3.3 數(shù)據(jù)的訪問操作
    GoAhead WebServer是一款面向嵌入式系統(tǒng)的Web服務(wù)器,作為系統(tǒng)中數(shù)據(jù)轉(zhuǎn)發(fā)和模塊承載平臺(tái)。向Wince系統(tǒng)中移植比較簡(jiǎn)單,在Visual C++ 6.0打開CE子目錄下的工作空間webs.dsw,將生成的webs.exe和所需的Web頁(yè)面導(dǎo)入WinCE系統(tǒng)中相應(yīng)位置即可。需要注意的是:要設(shè)置計(jì)算機(jī)系統(tǒng)環(huán)境變量Path,使其包含include和lib,確保包含CE、UEMF、webs和UNICODE的特征值被定義在內(nèi)。
    在使用GoAhead WebServer前,需要對(duì)GoAhead WebServer進(jìn)行配置:
    (1)在瀏覽器輸入地址時(shí),服務(wù)器返回某一頁(yè)面,該頁(yè)面通過在main.c文件中的initWebs函數(shù)進(jìn)行設(shè)定,設(shè)定語(yǔ)句為:
    websRedirec(wp,T("index.htm"));
    (2)當(dāng)瀏覽器訪問某一地址下的目錄時(shí),服務(wù)器將返回該目錄下的缺省頁(yè)面,通過main.c文件中的websHomePageHandler函數(shù)進(jìn)行設(shè)定,設(shè)定語(yǔ)句為:
    websSetDefaultPage(T("default.asp"));
    用戶在頁(yè)面對(duì)過濾規(guī)則進(jìn)行配置后,CGI程序?qū)⑴渲媒Y(jié)果寫入配置文件filter.conf中。在進(jìn)行數(shù)據(jù)過濾時(shí),過濾器將會(huì)讀取此配置文件得到相應(yīng)的過濾規(guī)則對(duì)數(shù)據(jù)進(jìn)行過濾。
    首先使用C語(yǔ)言API調(diào)用sqlite3_open()打開數(shù)據(jù)庫(kù),然后調(diào)用sqlite3_exec()函數(shù)來執(zhí)行SQL語(yǔ)句完成對(duì)數(shù)據(jù)庫(kù)的讀寫更新等操作,最后執(zhí)行sqlite3_close()關(guān)閉數(shù)據(jù)庫(kù)。
    通常,CGI應(yīng)用程序?qū)?zhí)行結(jié)果輸出到標(biāo)準(zhǔn)輸出(stdout),WebServer從CGI應(yīng)用程序中的標(biāo)準(zhǔn)輸出中讀取信息,并將這些信息返回給客戶端[5]。因此,在程序中如果要將SQL查詢結(jié)果輸出給客戶。CGI應(yīng)用程序中可以使用prinf()函數(shù)將查詢結(jié)果以HTML的形式輸出到標(biāo)準(zhǔn)輸出,進(jìn)而Web服務(wù)器向客戶端返回動(dòng)態(tài)頁(yè)面,這樣就實(shí)現(xiàn)了用戶、WebServer與SQLite3嵌入式數(shù)據(jù)的交互。
    通過編譯,webs.ere最后將以操作系統(tǒng)的一個(gè)子進(jìn)程運(yùn)行,可與操作系統(tǒng)內(nèi)的其他進(jìn)程進(jìn)行通信及數(shù)據(jù)傳輸,從而實(shí)現(xiàn)操作系統(tǒng)內(nèi)部程序間的相互交互作用。
    本文研究了針對(duì)裝備信息的RFID數(shù)據(jù)結(jié)構(gòu)模型,使用SQLite數(shù)據(jù)庫(kù)實(shí)現(xiàn)標(biāo)簽數(shù)據(jù)的存儲(chǔ)、過濾,并設(shè)計(jì)了簡(jiǎn)單易用的Web界面,只需通過瀏覽器進(jìn)行簡(jiǎn)單的操作,就可完成對(duì)過濾規(guī)則的設(shè)置以及與數(shù)據(jù)的交互等功能。今后的工作是進(jìn)行更多的頁(yè)面優(yōu)化設(shè)計(jì),將使其更加有實(shí)際應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] ALFONSI B J.Privacy debat centers on radio frequency   identification[J].Security & Privacy Magazine,IEEE,2004,2(2):12.
[2] 王霞.RFID數(shù)據(jù)存儲(chǔ)和管理技術(shù)綜述[J].計(jì)算機(jī)應(yīng)用與軟件,2008,25(12):173-176.
[3] PLATTNER H.A common database approach for oltp and olap using an in-memory column database[C]. In Proceedings of the 35th SIGMOD International Conference on  Management of Data,SIGMOD,09,NewYork,NY,USA,ACM.2009:1-2.
[4] 喻劍.RFID中間件關(guān)鍵技術(shù)研究[D].廣州:華南理工大學(xué),2009.
[5] 張曦瑛,柴志雷.嵌入式Web服務(wù)器中CGI的特點(diǎn)及實(shí)現(xiàn)[J].小型微型計(jì)算機(jī)系統(tǒng),2003,24(11):47-48.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。