【深入探討】嵌入式RFID讀寫器的內(nèi)部數(shù)據(jù)管理
發(fā)布時(shí)間:2014-07-09 責(zé)任編輯:echotang
【導(dǎo)讀】不同于普通物流領(lǐng)域,由于裝備信息較為復(fù)雜,單一普通標(biāo)簽難以勝任承載所需全部信息。考慮經(jīng)濟(jì)和實(shí)用性,采用不同頻率多標(biāo)簽方式才能較好滿足要求。因此,本文針對裝備信息的RFID數(shù)據(jù)結(jié)構(gòu)重點(diǎn)進(jìn)行了分析,并詳細(xì)研究了嵌入式讀寫器內(nèi)部數(shù)據(jù)的存儲和管理,以滿足裝備保障信息化需求。
在保障裝備裝備時(shí),訓(xùn)練使用、檢修、加裝改造等記錄用傳統(tǒng)手工操作,管理人員必須對進(jìn)裝備名稱、隨裝配套類型及數(shù)量、出廠單位、出廠日期以及其他眾多屬性進(jìn)行逐一登記,不但工作效率低、而且容易出差錯,成為制約工作進(jìn)度的瓶頸。如果裝備信息管理運(yùn)用RFID標(biāo)簽取代紙質(zhì)履歷表,記錄裝備從出廠、配備、動用、維修、保管、事故、加裝改造、退役報(bào)廢等全生命周期的履歷信息,手持讀寫器讀取射頻標(biāo)簽及信息記錄裝置每日信息,可以幫助操作人員及時(shí)掌握裝備工作情況,為維修保障人員提供信息支持。
1RFID數(shù)據(jù)模型研究
1.1RFID數(shù)據(jù)特性
RFID數(shù)據(jù)模型是管理RFID數(shù)據(jù)的基礎(chǔ)。從總體上RFID應(yīng)用有著共同的需求特點(diǎn):
(1)識別:RFID標(biāo)簽唯一地標(biāo)識該物體。
(2)位置:一個(gè)位置可以是一個(gè)地理位置,也可以是有背景含義的特殊位置,如倉庫、靶場等。
(3)關(guān)系:RFID應(yīng)用的另一個(gè)關(guān)鍵概念是聚合,即對象之間形成的關(guān)系。一種常見聚合情況是包含關(guān)系,即在物體運(yùn)動過程中,被包含的物體與外包裝物體有相同的運(yùn)動路徑等特性。另一個(gè)集合情況是協(xié)作,即貼有標(biāo)簽的物體之間有一定的關(guān)系[1],如某型導(dǎo)彈射擊訓(xùn)練由發(fā)射車與檢測車共同完成,則發(fā)射車與檢測車之間有協(xié)作關(guān)系。
1.2數(shù)據(jù)模型
本文重點(diǎn)是利用數(shù)據(jù)庫技術(shù)實(shí)現(xiàn)裝備數(shù)據(jù)信息的層次化管理。系統(tǒng)中涉及的數(shù)據(jù)主要有靜態(tài)數(shù)據(jù)和動態(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)識系統(tǒng),包括系統(tǒng)及隨裝配件的名稱、型號、出廠單位、出產(chǎn)年份等信息。
(2)Organizations:裝備在生命周期(出廠到退役報(bào)廢之間的時(shí)間)內(nèi)裝配變動信息,包括裝配單位、裝配時(shí)間、戰(zhàn)斗序列等信息。
(3)Actions:事務(wù)處理類型。包括重大活動記錄、技術(shù)檢查、維修、加裝改裝等信息。
1.2.2動態(tài)數(shù)據(jù)
動態(tài)數(shù)據(jù)反映了系統(tǒng)運(yùn)作中的事務(wù)過程,與時(shí)間、空間密切相關(guān)。動態(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]。對于兩個(gè)實(shí)體之間的基于狀態(tài)的關(guān)系,則在兩個(gè)實(shí)體表的主鍵之間加上時(shí)間間隔(stime,etime)組成,其中時(shí)間間隔代表了關(guān)系或者狀態(tài)存在的生命周期?;谑录膭討B(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ù)來源主要分為兩類:一類是固定的裝備身份信息,這些信息是一般不會隨時(shí)間變化,數(shù)據(jù)量比較小;另一類是動態(tài)的裝備壽命信息,通常是記錄日常操作的起始時(shí)間和裝備調(diào)撥、調(diào)整,數(shù)據(jù)量稍大且需要重復(fù)讀寫。
為此,以某型車輛裝備為例,采用一種13.56MHz的無源標(biāo)簽存儲裝備身份信息,采用頻率為2.4GHz的有源標(biāo)簽存儲動態(tài)壽命信息。本設(shè)計(jì)采用WindowsCE作為操作系統(tǒng),通過RFID射頻收發(fā)模塊讀取所需求的數(shù)據(jù),對數(shù)據(jù)進(jìn)行解析、提取、存儲,并構(gòu)建嵌入式SQLite數(shù)據(jù)庫,實(shí)現(xiàn)對數(shù)據(jù)的管理。而用戶對存儲的數(shù)據(jù)進(jìn)行查詢修改等操作,最方便的方法就是在Web頁面里實(shí)現(xiàn),因此需要搭建一個(gè)Web服務(wù)器,使用戶可以通過Web頁面來控制這些工作的完成并實(shí)現(xiàn)對數(shù)據(jù)的操作訪問。
設(shè)備管理提供了統(tǒng)一的讀寫器接口程序,可兼容性地控制多種類型讀寫器的工作;數(shù)據(jù)管理完成了數(shù)據(jù)的過濾、存儲,并利用嵌入式Web服務(wù)器對數(shù)據(jù)進(jìn)行查詢和修改;嵌入式Web服務(wù)器是嵌入式技術(shù)和網(wǎng)絡(luò)技術(shù)結(jié)合的產(chǎn)物,把Internet中的Web服務(wù)器進(jìn)行一定的裁剪,嵌入到設(shè)備中,從而可以利用嵌入式Web服務(wù)器對設(shè)備進(jìn)行操作、管理。本文擬使用GoAheadWebServer,它是一個(gè)源碼免費(fèi)、可以運(yùn)行在多個(gè)平臺的嵌入式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ù),需要對其進(jìn)行提取、解析,以得到有用的信息。數(shù)據(jù)在傳輸過程中不可避免地會受到外界的干擾而發(fā)生錯誤,因此數(shù)據(jù)必須進(jìn)行過濾,將過濾后的數(shù)據(jù)再進(jìn)行存儲[4]。
標(biāo)簽數(shù)據(jù)一般都是二進(jìn)制編碼,讀取后需要將二進(jìn)制編碼數(shù)據(jù)轉(zhuǎn)換成unicode數(shù)據(jù)。
在標(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編碼以及過濾條件對標(biāo)簽進(jìn)行過濾,為信息應(yīng)用層提供有意義的標(biāo)簽信息。
過濾規(guī)則可以通過Web頁面進(jìn)行設(shè)置,設(shè)置信息存儲到過濾規(guī)則配置文件中。進(jìn)行過濾時(shí),過濾器讀取配置文件并應(yīng)用于過濾規(guī)則。
3數(shù)據(jù)存儲與管理的實(shí)現(xiàn)
3.1構(gòu)建嵌入式數(shù)據(jù)庫
SQLite3是輕型、免費(fèi)和開源的嵌入式數(shù)據(jù)庫,支持絕大多數(shù)標(biāo)準(zhǔn)的SQL92語句,工作速度快,可以滿足中間件數(shù)據(jù)處理的實(shí)時(shí)要求。因此選用SQLite3數(shù)據(jù)庫在大小和功能方面是一個(gè)理想的折中。
SQLite3嵌入式數(shù)據(jù)庫提供了源碼,在硬件平臺上對源碼進(jìn)行交叉編譯即可實(shí)現(xiàn)移植。編譯后,生成了大小為93KB的sqlite3可執(zhí)行文件和大小為991KB的sqlite3動態(tài)鏈接庫libsqlite3.so。
3.2數(shù)據(jù)模型在數(shù)據(jù)庫中的實(shí)現(xiàn)
嵌入式數(shù)據(jù)庫中以單個(gè)庫文件形式進(jìn)行數(shù)據(jù)存儲,數(shù)據(jù)庫文件可以在不同的操作系統(tǒng)平臺下使用而無需轉(zhuǎn)換。數(shù)據(jù)庫文件內(nèi)部采用表數(shù)據(jù)頁和索引數(shù)據(jù)頁兩種存儲結(jié)構(gòu)進(jìn)行組織。用戶定義的臨時(shí)表和系統(tǒng)中的臨時(shí)表(用于排序、分組等操作)以臨時(shí)數(shù)據(jù)庫文件形式進(jìn)行管理。
在開發(fā)板上,使用上一步生成的sqlite3可執(zhí)行文件來生成本系統(tǒng)所需要的數(shù)據(jù)庫表。Sqlite3的數(shù)據(jù)庫與Access數(shù)據(jù)庫類似都采用了單文件的模式,為此生成了一個(gè)名為rfid的數(shù)據(jù)庫文件,根據(jù)項(xiàng)目需求規(guī)劃必須的數(shù)據(jù)表。
直接在命令行下敲入“sqlite3rfid;”即可生成rfid數(shù)據(jù)庫,并得到提示符“sqlite3〉”,通過輸入SQL語句即可建立所需的表:
createtablerfid(Numberintegerprimarykey,Objectsvarchar(),Organizationsvarchar(),Actionsvarchar(),ActionItemvarchar(),ObjectOrganizationvarchar(),Arrangementvarchar());
.quit;
這里只考慮了基本屬性,可以為數(shù)據(jù)表做擴(kuò)展表格實(shí)現(xiàn)其額外的屬性。
參照SQLDML的語法,該模型的邏輯結(jié)構(gòu)主要元素描述如下:
(1)Objects:Objects(EPCPrimaryKey,name,deseription),記錄系統(tǒng)及隨裝信息。
(2)Organizations:Organizations(organizationIDPrimaryKey,organization),標(biāo)識裝備在生命周期內(nèi)裝配單位及編制序列。
(3)Actions:Actions(actionIDPrimaryKey,actType),標(biāo)識業(yè)務(wù)流程中的事務(wù)類型。其中,actionID為事務(wù)類型標(biāo)識碼;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)識關(guān)于該EPC的上一層次的EPC編碼;QtyOfChild記錄了由該EPC標(biāo)識的下一層次的物品數(shù)量;stime和etime分別標(biāo)識該層次關(guān)系的發(fā)生和結(jié)束時(shí)間。
(5)ActionItem:ActionItem(IDPrimaryKey,actionID,EPCreferencesObjects,timestamp):ID標(biāo)識每個(gè)發(fā)生的事務(wù);timestamp為該事務(wù)發(fā)生的時(shí)間。
(6)ObjectOrganization(IDPrimaryKey,EPCreffereneesObjects,organizationID,timestamp):ID標(biāo)識裝備的調(diào)撥、調(diào)整及編制戰(zhàn)斗序列的變化。
SQLite數(shù)據(jù)庫提供了豐富的C語言API接口函數(shù),使得對數(shù)據(jù)庫的操作十分方便。本系統(tǒng)只需要以下3個(gè)核心函數(shù)就可以實(shí)現(xiàn)連接數(shù)據(jù)庫、處理查詢等操作:
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ù)用于打開與關(guān)閉數(shù)據(jù)庫,第3個(gè)函數(shù)sqlite3_exec()用來處理SQL查詢,此函數(shù)的第2個(gè)參數(shù)用來處理一條或多條SQL語句,如果是查詢(SELECT)語句,則查詢結(jié)果的每一條記錄都必須調(diào)用第3個(gè)參數(shù)的Callback函數(shù),第4個(gè)參數(shù)則為Callback函數(shù)的第一個(gè)參數(shù)指針;如果不是查詢語句,則第3、4個(gè)參數(shù)為NULL。所有SQL執(zhí)行完畢后返回0,否則返回錯誤代碼,可通過第5個(gè)參數(shù)值來查看詳細(xì)錯誤信息。
使用sqlite3_mprintf函數(shù)將數(shù)據(jù)段的值添加到SQL語句中,然后通過sqlite3_exec函數(shù)執(zhí)行該SQL語句把標(biāo)簽數(shù)據(jù)插入到數(shù)據(jù)庫中。
3.3數(shù)據(jù)的訪問操作
GoAheadWebServer是一款面向嵌入式系統(tǒng)的Web服務(wù)器,作為系統(tǒng)中數(shù)據(jù)轉(zhuǎn)發(fā)和模塊承載平臺。向Wince系統(tǒng)中移植比較簡單,在VisualC++6.0打開CE子目錄下的工作空間webs.dsw,將生成的webs.exe和所需的Web頁面導(dǎo)入WinCE系統(tǒng)中相應(yīng)位置即可。需要注意的是:要設(shè)置計(jì)算機(jī)系統(tǒng)環(huán)境變量Path,使其包含include和lib,確保包含CE、UEMF、webs和UNICODE的特征值被定義在內(nèi)。
在使用GoAheadWebServer前,需要對GoAheadWebServer進(jìn)行配置:
(1)在瀏覽器輸入地址時(shí),服務(wù)器返回某一頁面,該頁面通過在main.c文件中的initWebs函數(shù)進(jìn)行設(shè)定,設(shè)定語句為:
websRedirec(wp,T("index.htm"));
(2)當(dāng)瀏覽器訪問某一地址下的目錄時(shí),服務(wù)器將返回該目錄下的缺省頁面,通過main.c文件中的websHomePageHandler函數(shù)進(jìn)行設(shè)定,設(shè)定語句為:
websSetDefaultPage(T("default.asp"));
用戶在頁面對過濾規(guī)則進(jìn)行配置后,CGI程序?qū)⑴渲媒Y(jié)果寫入配置文件filter.conf中。在進(jìn)行數(shù)據(jù)過濾時(shí),過濾器將會讀取此配置文件得到相應(yīng)的過濾規(guī)則對數(shù)據(jù)進(jìn)行過濾。
首先使用C語言API調(diào)用sqlite3_open()打開數(shù)據(jù)庫,然后調(diào)用sqlite3_exec()函數(shù)來執(zhí)行SQL語句完成對數(shù)據(jù)庫的讀寫更新等操作,最后執(zhí)行sqlite3_close()關(guān)閉數(shù)據(jù)庫。
通常,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ù)器向客戶端返回動態(tài)頁面,這樣就實(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)部程序間的相互交互作用。
本文研究了針對裝備信息的RFID數(shù)據(jù)結(jié)構(gòu)模型,使用SQLite數(shù)據(jù)庫實(shí)現(xiàn)標(biāo)簽數(shù)據(jù)的存儲、過濾,并設(shè)計(jì)了簡單易用的Web界面,只需通過瀏覽器進(jìn)行簡單的操作,就可完成對過濾規(guī)則的設(shè)置以及與數(shù)據(jù)的交互等功能。今后的工作是進(jìn)行更多的頁面優(yōu)化設(shè)計(jì),將使其更加有實(shí)際應(yīng)用價(jià)值。
特別推薦
- 兆易創(chuàng)新GD32F30x STL軟件測試庫獲得德國萊茵TüV IEC 61508功能安全認(rèn)證
- 芯科科技第三代無線開發(fā)平臺引領(lǐng)物聯(lián)網(wǎng)發(fā)展
- MSO 4B 示波器為工程師帶來更多臺式功率分析工具
- 艾為電子推出新一代高線性度GNSS低噪聲放大器——AW15745DNR
- 瑞薩發(fā)布四通道主站IC和傳感器信號調(diào)節(jié)器, 以推動不斷增長的IO-Link市場
- e絡(luò)盟現(xiàn)貨供應(yīng) Abracon 新推出的 AOTA 系列微型鑄型電感器
- 加賀富儀艾電子推出支持Wi-Fi 6和藍(lán)牙的無線局域網(wǎng)/藍(lán)牙組合模塊
技術(shù)文章更多>>
- 一文掌握UV LED在空凈消殺領(lǐng)域的主要應(yīng)用
- 聚焦汽車智能化與電動化︱AUTO TECH 2025 華南展11月,已全面啟動,邀您共精彩!
- 【“源”察秋毫系列】 Keithley在碳納米管森林涂層纖維復(fù)合材料的應(yīng)用
- 數(shù)字驅(qū)動工業(yè),智能賦能制造 AMTS & AHTE SOUTH CHINA 2024同期會議全公開!
- 團(tuán)體觀展招募!104CEF開啟組團(tuán)觀眾通道,解鎖更多禮遇
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
電阻觸控屏
電阻器
電阻作用
調(diào)速開關(guān)
調(diào)諧器
鼎智
動力電池
動力控制
獨(dú)石電容
端子機(jī)
斷路器
斷路器型號
多層PCB
多諧振蕩器
扼流線圈
耳機(jī)
二極管
二極管符號
發(fā)光二極管
防靜電產(chǎn)品
防雷
防水連接器
仿真工具
放大器
分立器件
分頻器
風(fēng)力渦輪機(jī)
風(fēng)能
風(fēng)扇
風(fēng)速風(fēng)向儀