【深入探討】嵌入式RFID讀寫(xiě)器的內(nèi)部數(shù)據(jù)管理
發(fā)布時(shí)間:2014-07-09 責(zé)任編輯:echotang
【導(dǎo)讀】不同于普通物流領(lǐng)域,由于裝備信息較為復(fù)雜,單一普通標(biāo)簽難以勝任承載所需全部信息??紤]經(jīng)濟(jì)和實(shí)用性,采用不同頻率多標(biāo)簽方式才能較好滿足要求。因此,本文針對(duì)裝備信息的RFID數(shù)據(jù)結(jié)構(gòu)重點(diǎn)進(jìn)行了分析,并詳細(xì)研究了嵌入式讀寫(xiě)器內(nèi)部數(shù)據(jù)的存儲(chǔ)和管理,以滿足裝備保障信息化需求。
在保障裝備裝備時(shí),訓(xùn)練使用、檢修、加裝改造等記錄用傳統(tǒng)手工操作,管理人員必須對(duì)進(jìn)裝備名稱、隨裝配套類型及數(shù)量、出廠單位、出廠日期以及其他眾多屬性進(jìn)行逐一登記,不但工作效率低、而且容易出差錯(cuò),成為制約工作進(jìn)度的瓶頸。如果裝備信息管理運(yùn)用RFID標(biāo)簽取代紙質(zhì)履歷表,記錄裝備從出廠、配備、動(dòng)用、維修、保管、事故、加裝改造、退役報(bào)廢等全生命周期的履歷信息,手持讀寫(xiě)器讀取射頻標(biāo)簽及信息記錄裝置每日信息,可以幫助操作人員及時(shí)掌握裝備工作情況,為維修保障人員提供信息支持。
1RFID數(shù)據(jù)模型研究
1.1RFID數(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)系。一種常見(jiàn)聚合情況是包含關(guān)系,即在物體運(yùn)動(dòng)過(guò)程中,被包含的物體與外包裝物體有相同的運(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ù)過(guò)程,與時(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讀寫(xiě)器數(shù)據(jù)管理
2.1系統(tǒng)的設(shè)計(jì)思路
根據(jù)以上分析,數(shù)據(jù)來(lái)源主要分為兩類:一類是固定的裝備身份信息,這些信息是一般不會(huì)隨時(shí)間變化,數(shù)據(jù)量比較小;另一類是動(dòng)態(tài)的裝備壽命信息,通常是記錄日常操作的起始時(shí)間和裝備調(diào)撥、調(diào)整,數(shù)據(jù)量稍大且需要重復(fù)讀寫(xiě)。
為此,以某型車輛裝備為例,采用一種13.56MHz的無(wú)源標(biāo)簽存儲(chǔ)裝備身份信息,采用頻率為2.4GHz的有源標(biāo)簽存儲(chǔ)動(dòng)態(tài)壽命信息。本設(shè)計(jì)采用WindowsCE作為操作系統(tǒng),通過(guò)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ù)器,使用戶可以通過(guò)Web頁(yè)面來(lái)控制這些工作的完成并實(shí)現(xiàn)對(duì)數(shù)據(jù)的操作訪問(wèn)。
設(shè)備管理提供了統(tǒng)一的讀寫(xiě)器接口程序,可兼容性地控制多種類型讀寫(xiě)器的工作;數(shù)據(jù)管理完成了數(shù)據(jù)的過(guò)濾、存儲(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)行操作、管理。本文擬使用GoAheadWebServer,它是一個(gè)源碼免費(fèi)、可以運(yùn)行在多個(gè)平臺(tái)的嵌入式Web服務(wù)器,并支持ASP、嵌入式JavaScript和標(biāo)準(zhǔn)的CGI執(zhí)行,能較好地滿足需求。
2.2數(shù)據(jù)的解析和過(guò)濾
讀寫(xiě)器從標(biāo)簽讀取大量的未經(jīng)處理的數(shù)據(jù),一般來(lái)說(shuō)讀取到的數(shù)據(jù)并非完全有用的標(biāo)簽數(shù)據(jù),需要對(duì)其進(jìn)行提取、解析,以得到有用的信息。數(shù)據(jù)在傳輸過(guò)程中不可避免地會(huì)受到外界的干擾而發(fā)生錯(cuò)誤,因此數(shù)據(jù)必須進(jìn)行過(guò)濾,將過(guò)濾后的數(shù)據(jù)再進(jìn)行存儲(chǔ)[4]。
標(biāo)簽數(shù)據(jù)一般都是二進(jìn)制編碼,讀取后需要將二進(jìn)制編碼數(shù)據(jù)轉(zhuǎn)換成unicode數(shù)據(jù)。
在標(biāo)簽讀取過(guò)程中實(shí)現(xiàn)標(biāo)簽的二進(jìn)制位編碼到unicode編碼的轉(zhuǎn)換,在標(biāo)簽數(shù)據(jù)處理環(huán)節(jié)則根據(jù)轉(zhuǎn)換獲得的標(biāo)簽unicode編碼以及過(guò)濾條件對(duì)標(biāo)簽進(jìn)行過(guò)濾,為信息應(yīng)用層提供有意義的標(biāo)簽信息。
過(guò)濾規(guī)則可以通過(guò)Web頁(yè)面進(jìn)行設(shè)置,設(shè)置信息存儲(chǔ)到過(guò)濾規(guī)則配置文件中。進(jìn)行過(guò)濾時(shí),過(guò)濾器讀取配置文件并應(yīng)用于過(guò)濾規(guī)則。
3數(shù)據(jù)存儲(chǔ)與管理的實(shí)現(xiàn)
3.1構(gòu)建嵌入式數(shù)據(jù)庫(kù)
SQLite3是輕型、免費(fèi)和開(kā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)移植。編譯后,生成了大小為93KB的sqlite3可執(zhí)行文件和大小為991KB的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)下使用而無(wú)需轉(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)行管理。
在開(kāi)發(fā)板上,使用上一步生成的sqlite3可執(zhí)行文件來(lái)生成本系統(tǒng)所需要的數(shù)據(jù)庫(kù)表。Sqlite3的數(shù)據(jù)庫(kù)與Access數(shù)據(jù)庫(kù)類似都采用了單文件的模式,為此生成了一個(gè)名為rfid的數(shù)據(jù)庫(kù)文件,根據(jù)項(xiàng)目需求規(guī)劃必須的數(shù)據(jù)表。
直接在命令行下敲入“sqlite3rfid;”即可生成rfid數(shù)據(jù)庫(kù),并得到提示符“sqlite3〉”,通過(guò)輸入SQL語(yǔ)句即可建立所需的表:
createtablerfid(Numberintegerprimarykey,Objectsvarchar(),Organizationsvarchar(),Actionsvarchar(),ActionItemvarchar(),ObjectOrganizationvarchar(),Arrangementvarchar());
.quit;
這里只考慮了基本屬性,可以為數(shù)據(jù)表做擴(kuò)展表格實(shí)現(xiàn)其額外的屬性。
參照SQLDML的語(yǔ)法,該模型的邏輯結(jié)構(gòu)主要元素描述如下:
(1)Objects:Objects(EPCPrimaryKey,name,deseription),記錄系統(tǒng)及隨裝信息。
(2)Organizations:Organizations(organizationIDPrimaryKey,organization),標(biāo)識(shí)裝備在生命周期內(nèi)裝配單位及編制序列。
(3)Actions:Actions(actionIDPrimaryKey,actType),標(biāo)識(shí)業(yè)務(wù)流程中的事務(wù)類型。其中,actionID為事務(wù)類型標(biāo)識(shí)碼;actType表示事務(wù)類型的名稱。
(4)Arrangement:Arrangement(IDPrimaryKey,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(IDPrimaryKey,actionID,EPCreferencesObjects,timestamp):ID標(biāo)識(shí)每個(gè)發(fā)生的事務(wù);timestamp為該事務(wù)發(fā)生的時(shí)間。
(6)ObjectOrganization(IDPrimaryKey,EPCreffereneesObjects,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ù)、處理查詢等操作:
intsqlite3_open(constchar*db,intmode,char**errmsg);
intsqlite3_close(sqlite*db);
intsqlite3_exec(sqlite*db,char*sql,int(*callback)(void*,
int,char**,char**),void*parg,char**errmsg);
其中,前2個(gè)函數(shù)用于打開(kāi)與關(guān)閉數(shù)據(jù)庫(kù),第3個(gè)函數(shù)sqlite3_exec()用來(lái)處理SQL查詢,此函數(shù)的第2個(gè)參數(shù)用來(lái)處理一條或多條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ò)誤代碼,可通過(guò)第5個(gè)參數(shù)值來(lái)查看詳細(xì)錯(cuò)誤信息。
使用sqlite3_mprintf函數(shù)將數(shù)據(jù)段的值添加到SQL語(yǔ)句中,然后通過(guò)sqlite3_exec函數(shù)執(zhí)行該SQL語(yǔ)句把標(biāo)簽數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中。
3.3數(shù)據(jù)的訪問(wèn)操作
GoAheadWebServer是一款面向嵌入式系統(tǒng)的Web服務(wù)器,作為系統(tǒng)中數(shù)據(jù)轉(zhuǎn)發(fā)和模塊承載平臺(tái)。向Wince系統(tǒng)中移植比較簡(jiǎn)單,在VisualC++6.0打開(kāi)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)。
在使用GoAheadWebServer前,需要對(duì)GoAheadWebServer進(jìn)行配置:
(1)在瀏覽器輸入地址時(shí),服務(wù)器返回某一頁(yè)面,該頁(yè)面通過(guò)在main.c文件中的initWebs函數(shù)進(jìn)行設(shè)定,設(shè)定語(yǔ)句為:
websRedirec(wp,T("index.htm"));
(2)當(dāng)瀏覽器訪問(wèn)某一地址下的目錄時(shí),服務(wù)器將返回該目錄下的缺省頁(yè)面,通過(guò)main.c文件中的websHomePageHandler函數(shù)進(jìn)行設(shè)定,設(shè)定語(yǔ)句為:
websSetDefaultPage(T("default.asp"));
用戶在頁(yè)面對(duì)過(guò)濾規(guī)則進(jìn)行配置后,CGI程序?qū)⑴渲媒Y(jié)果寫(xiě)入配置文件filter.conf中。在進(jìn)行數(shù)據(jù)過(guò)濾時(shí),過(guò)濾器將會(huì)讀取此配置文件得到相應(yīng)的過(guò)濾規(guī)則對(duì)數(shù)據(jù)進(jìn)行過(guò)濾。
首先使用C語(yǔ)言API調(diào)用sqlite3_open()打開(kāi)數(shù)據(jù)庫(kù),然后調(diào)用sqlite3_exec()函數(shù)來(lái)執(zhí)行SQL語(yǔ)句完成對(duì)數(shù)據(jù)庫(kù)的讀寫(xiě)更新等操作,最后執(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ù)的交互。
通過(guò)編譯,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ǔ)、過(guò)濾,并設(shè)計(jì)了簡(jiǎn)單易用的Web界面,只需通過(guò)瀏覽器進(jìn)行簡(jiǎn)單的操作,就可完成對(duì)過(guò)濾規(guī)則的設(shè)置以及與數(shù)據(jù)的交互等功能。今后的工作是進(jìn)行更多的頁(yè)面優(yōu)化設(shè)計(jì),將使其更加有實(shí)際應(yīng)用價(jià)值。
特別推薦
- 利用自動(dòng)化技術(shù)賦能中國(guó)基礎(chǔ)設(shè)施現(xiàn)代化
- 三極管電路輸入電壓阻抗
- 晶振怎么用,你真的知道嗎?
- 康佳特推出搭載AMD 銳龍嵌入式 8000系列的COM Express緊湊型模塊
- 村田推出3225尺寸車載PoC電感器LQW32FT_8H系列
- 思特威推出超星光級(jí)系列4MP圖像傳感器SC485SL
- HOLTEK新推出HT32F59045脈搏血氧儀MCU
技術(shù)文章更多>>
- 貿(mào)澤推出針對(duì)基礎(chǔ)設(shè)施和智慧城市的工程技術(shù)資源中心
- “扒開(kāi)”超級(jí)電容的“外衣”,看看超級(jí)電容“超級(jí)”在哪兒
- DigiKey 誠(chéng)邀各位參會(huì)者蒞臨SPS 2024?展會(huì)參觀交流,體驗(yàn)最新自動(dòng)化產(chǎn)品
- 提前圍觀第104屆中國(guó)電子展高端元器件展區(qū)
- 高性能碳化硅隔離柵極驅(qū)動(dòng)器如何選型,一文告訴您
技術(shù)白皮書(shū)下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
濾波電感
濾波器
路由器設(shè)置
鋁電解電容
鋁殼電阻
邏輯IC
馬達(dá)控制
麥克風(fēng)
脈沖變壓器
鉚接設(shè)備
夢(mèng)想電子
模擬鎖相環(huán)
耐壓測(cè)試儀
逆變器
逆導(dǎo)可控硅
鎳鎘電池
鎳氫電池
紐扣電池
歐勝
耦合技術(shù)
排電阻
排母連接器
排針連接器
片狀電感
偏光片
偏轉(zhuǎn)線圈
頻率測(cè)量?jī)x
頻率器件
頻譜測(cè)試儀
平板電腦