《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 一種嵌入式RFID讀寫器的內部數據管理研究
一種嵌入式RFID讀寫器的內部數據管理研究
來源:電子技術應用2012年第6期
葛志軍,郝永生
軍械工程學院 導彈工程系,河北 石家莊050003
摘要: 為了適應軍械保障信息化需求,運用RFID技術作為裝備信息的采集方式,結合裝備信息的特點及RFID數據特點,設計了合適的數據結構,并建立相應數據模型。研究了支持多頻段嵌入式讀寫器內部數據處理流程,根據相應過濾規則過濾數據,并使用SQLite數據庫存儲數據以方便管理。同時還研究了在嵌入式WebServer中的實現方案,使得客戶端的查詢操作等數據交互更為容易。
中圖分類號: TP392
文獻標識碼: A
文章編號: 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

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

    但不同于普通物流領域,由于裝備信息較為復雜,單一普通標簽難以勝任承載所需全部信息。考慮經濟和實用性,采用不同頻率多標簽方式才能較好滿足要求。因此,本文針對裝備信息的RFID數據結構重點進行了分析,并詳細研究了嵌入式讀寫器內部數據的存儲和管理,以滿足軍械保障信息化需求。
1 RFID數據模型研究
1.1 RFID數據特性

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

 


2 基于嵌入式的RFID讀寫器數據管理
2.1 系統的設計思路

    根據以上分析,數據來源主要分為兩類:一類是固定的裝備身份信息,這些信息是一般不會隨時間變化,數據量比較小;另一類是動態的裝備壽命信息,通常是記錄日常操作的起始時間和裝備調撥、調整,數據量稍大且需要重復讀寫。
    為此,以某型車輛裝備為例,采用一種13.56 MHz的無源標簽存儲裝備身份信息,采用頻率為2.4 GHz的有源標簽存儲動態壽命信息。本設計采用Windows CE作為操作系統,通過RFID射頻收發模塊讀取所需求的數據,對數據進行解析、提取、存儲,并構建嵌入式SQLite數據庫,實現對數據的管理。而用戶對存儲的數據進行查詢修改等操作,最方便的方法就是在Web頁面里實現,因此需要搭建一個Web服務器,使用戶可以通過Web頁面來控制這些工作的完成并實現對數據的操作訪問。總體設計思路如圖1所示。

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


    在標簽讀取過程中實現標簽的二進制位編碼到unicode編碼的轉換,在標簽數據處理環節則根據轉換獲得的標簽unicode編碼以及過濾條件對標簽進行過濾,為信息應用層提供有意義的標簽信息。
    過濾規則可以通過Web頁面進行設置,設置信息存儲到過濾規則配置文件中。進行過濾時,過濾器讀取配置文件并應用于過濾規則。
3 數據存儲與管理的實現
3.1 構建嵌入式數據庫

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

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

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 一级片小视频 | 偷偷狠狠的日日日日 | 欧美一区二区久久精品 | 天天操天天看 | 国产亚洲欧美日韩综合另类 | 欧美高清国产 | 欧美日本综合一区二区三区 | 久久88色综合色鬼 | 中文毛片无遮挡高清免费 | 欧美 日韩 亚洲另类专区 | 78m成人视屏 | 亚洲图片欧洲图片aⅴ | 成年人黄视频在线观看 | tk视频丨vk | 日本精品中文字幕在线播放 | 欧美精品日韩一区二区三区 | 国产综合久久久久 | 日日草视频 | 性色在线观看 | 欧美精品xxx | 国产成人午夜视频 | 韩国一级黄色大片 | 日本肥老妇色xxxxx日本老妇 | 精品国产一二三区 | 一级视频在线免费观看 | 亚洲国产一区二区三区最新 | 久久久国产精品免费 | 国产黄色大片在线观看 | 日本三级免费网站 | 曰皮全部过程视频免费高清 | 精品久久久久久中文字幕202o | 2022精品福利在线小视频 | 久久综合网址 | 成人一级毛片 | 蝌蚪网在线观看 | 欧美狠狠干 | 五月综合色 | 亚洲成人动漫在线 | 色婷婷激情五月综合 | 妞干网最新视频 | 国产偷国产偷在线高清 |