電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 1805|回復(fù): 0
收起左側(cè)

嵌入式底層工程師需要學(xué)什么意思_嵌入式FIRD讀寫器內(nèi)部數(shù)據(jù)的存儲和管理

[復(fù)制鏈接]

2607

主題

2607

帖子

7472

積分

高級會員

Rank: 5Rank: 5

積分
7472
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-8-3 11:17:20 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
嵌入式底層工程師需要學(xué)什么意思_嵌入式FIRD讀寫器內(nèi)部數(shù)據(jù)的存儲和管理,   

為了適應(yīng)軍械保障信息化需求,運用RFID技術(shù)作為裝備信息的采集方式,結(jié)合裝備信息的特點及RFID數(shù)據(jù)特點,設(shè)計了合適的數(shù)據(jù)結(jié)構(gòu),并建立相應(yīng)數(shù)據(jù)模型。研究了支持多頻段嵌入式讀寫器內(nèi)部數(shù)據(jù)處理流程,根據(jù)相應(yīng)過濾規(guī)則過濾數(shù)據(jù),并使用SQLite數(shù)據(jù)庫存儲數(shù)據(jù)以方便管理。

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

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

  
  


  

1 RFID數(shù)據(jù)模型研究

1.1 RFID數(shù)據(jù)特性

RFID數(shù)據(jù)模型是管理RFID數(shù)據(jù)的基礎(chǔ)。從總體上RFID應(yīng)用有著共同的需求特點:

(1)識別:RFID標(biāo)簽唯一地標(biāo)識該物體。

(2)位置:一個位置可以是一個地理位置,也可以是有背景含義的特殊位置,如倉庫、靶場等。

(3)關(guān)系:RFID應(yīng)用的另一個關(guān)鍵概念是聚合,即對象之間形成的關(guān)系。一種常見聚合情況是包含關(guān)系,即在物體運動過程中,被包含的物體與外包裝物體有相同的運動路徑等特性。另一個集合情況是協(xié)作,即貼有標(biāo)簽的物體之間有一定的關(guān)系[1],如某型導(dǎo)彈射擊訓(xùn)練由發(fā)射車與檢測車共同完成,則發(fā)射車與檢測車之間有協(xié)作關(guān)系。

1.2 數(shù)據(jù)模型

本文重點是利用數(shù)據(jù)庫技術(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ù),不輕易隨時間變更[2]。在本系統(tǒng)中,靜態(tài)數(shù)據(jù)主要包括:

(1)Objects:所有使用射頻標(biāo)簽進行標(biāo)識系統(tǒng),包括系統(tǒng)及隨裝配件的名稱、型號、出廠單位、出產(chǎn)年份等信息。

(2)Organizations:裝備在生命周期(出廠到退役報廢之間的時間)內(nèi)裝配變動信息,包括裝配單位、裝配時間、戰(zhàn)斗序列等信息。

(3)AcTIons:事務(wù)處理類型。包括重大活動記錄、技術(shù)檢查、維修、加裝改裝等信息。

1.2.2 動態(tài)數(shù)據(jù)

動態(tài)數(shù)據(jù)反映了系統(tǒng)運作中的事務(wù)過程,與時間、空間密切相關(guān)。動態(tài)數(shù)據(jù)主要包括:Arrangement,用于描述裝備實體(Objects) 與狀態(tài)的層次關(guān)系;ObjectOrganizaTIon,用于描述裝備實體(Objects)在某時間內(nèi)的調(diào)撥、調(diào)整;AcTIonItem,用于描述裝備處理情況。

1.2.3 數(shù)據(jù)模型的建立

如果有靜態(tài)關(guān)系,則根據(jù)ER模型的映射關(guān)系,映射成表即可[3]。對于兩個實體之間的基于狀態(tài)的關(guān)系,則在兩個實體表的主鍵之間加上時間間隔 (sTIme,etime)組成,其中時間間隔代表了關(guān)系或者狀態(tài)存在的生命周期;谑录膭討B(tài)關(guān)系,由映射在兩個表的主鍵加上時間戳屬性 timestamp組成,這個時間戳代表了時間發(fā)生的時間點。

2 基于嵌入式的RFID讀寫器數(shù)據(jù)管理

2.1 系統(tǒng)的設(shè)計思路

根據(jù)以上分析,數(shù)據(jù)主要分為兩類:一類是固定的裝備身份信息,這些信息是一般不會隨時間變化,數(shù)據(jù)量比較小;另一類是動態(tài)的裝備壽命信息,通常是記錄日常操作的起始時間和裝備調(diào)撥、調(diào)整,數(shù)據(jù)量稍大且需要重復(fù)讀寫。

為此,以某型車輛裝備為例,采用一種13.56 MHz的無源標(biāo)簽存儲裝備身份信息,采用頻率為2.4 GHz的有源標(biāo)簽存儲動態(tài)壽命信息。本設(shè)計采用Windows CE作為操作系統(tǒng),通過RFID射頻收發(fā)模塊讀取所需求的數(shù)據(jù),對數(shù)據(jù)進行解析、提取、存儲,并構(gòu)建嵌入式SQLite數(shù)據(jù)庫,實現(xiàn)對數(shù)據(jù)的管理。而用戶對存儲的數(shù)據(jù)進行查詢修改等操作,最方便的方法就是在Web頁面里實現(xiàn),因此需要搭建一個Web服務(wù)器,使用戶可以通過Web頁面來控制這些工作的完成并實現(xiàn)對數(shù)據(jù)的操作訪問。

設(shè)備管理提供了統(tǒng)一的讀寫器接口程序,可兼容性地控制多種類型讀寫器的工作;數(shù)據(jù)管理完成了數(shù)據(jù)的過濾、存儲,并利用嵌入式Web服務(wù)器對數(shù)據(jù)進行查詢和修改;嵌入式Web服務(wù)器是嵌入式技術(shù)和網(wǎng)絡(luò)技術(shù)結(jié)合的產(chǎn)物,把Internet中的Web服務(wù)器進行一定的裁剪,嵌入到設(shè)備中,從而可以利用嵌入式Web服務(wù)器對設(shè)備進行操作、管理。本文擬使用GoAhead WebServer,它是一個源碼免費、可以運行在多個平臺的嵌入式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ù),需要對其進行提取、解析,以得到有用的信息。數(shù)據(jù)在傳輸過程中不可避免地會受到外界的干擾而發(fā)生錯誤,因此數(shù)據(jù)必須進行過濾,將過濾后的數(shù)據(jù)再進行存儲[4]。

標(biāo)簽數(shù)據(jù)一般都是二進制編碼,讀取后需要將二進制編碼數(shù)據(jù)轉(zhuǎn)換成unicode數(shù)據(jù)。

在標(biāo)簽讀取過程中實現(xiàn)標(biāo)簽的二進制位編碼到unicode編碼的轉(zhuǎn)換,在標(biāo)簽數(shù)據(jù)處理環(huán)節(jié)則根據(jù)轉(zhuǎn)換獲得的標(biāo)簽unicode編碼以及過濾條件對標(biāo)簽進行過濾,為信息應(yīng)用層提供有意義的標(biāo)簽信息。

過濾規(guī)則可以通過Web頁面進行設(shè)置,設(shè)置信息存儲到過濾規(guī)則配置文件中。進行過濾時,過濾器讀取配置文件并應(yīng)用于過濾規(guī)則。

3 數(shù)據(jù)存儲與管理的實現(xiàn)

3.1 構(gòu)建嵌入式數(shù)據(jù)庫

SQLite3是輕型、免費和開源的嵌入式數(shù)據(jù)庫,支持絕大多數(shù)標(biāo)準(zhǔn)的SQL92語句,工作速度快,可以滿足中間件數(shù)據(jù)處理的實時要求。因此選用SQLite3數(shù)據(jù)庫在大小和功能方面是一個理想的折中。

SQLite3嵌入式數(shù)據(jù)庫提供了源碼,在硬件平臺上對源碼進行交叉編譯即可實現(xiàn)移植。編譯后,生成了大小為93 KB的sqlite3可執(zhí)行文件和大小為991 KB的sqlite3動態(tài)鏈接庫libsqlite3.so。

3.2 數(shù)據(jù)模型在數(shù)據(jù)庫中的實現(xiàn)

嵌入式數(shù)據(jù)庫中以單個庫文件形式進行數(shù)據(jù)存儲,數(shù)據(jù)庫文件可以在不同的操作系統(tǒng)平臺下使用而無需轉(zhuǎn)換。數(shù)據(jù)庫文件內(nèi)部采用表數(shù)據(jù)頁和索引數(shù)據(jù)頁兩種存儲結(jié)構(gòu)進行組織。用戶定義的臨時表和系統(tǒng)中的臨時表(用于排序、分組等操作)以臨時數(shù)據(jù)庫文件形式進行管理。

在開發(fā)板上,使用上一步生成的sqlite3可執(zhí)行文件來生成本系統(tǒng)所需要的數(shù)據(jù)庫表。Sqlite3的數(shù)據(jù)庫與Access數(shù)據(jù)庫類似都采用了單文件的模式,為此生成了一個名為rfid的數(shù)據(jù)庫文件,根據(jù)項目需求規(guī)劃必須的數(shù)據(jù)表。

直接在命令行下敲入“sqlite3 rfid;”即可生成rfid數(shù)據(jù)庫,并得到提示符“sqlite3〉”,通過輸入SQL語句即可建立所需的表:

create table rfid(Number integer primary key, Objects varchar(),Organizations varchar(),Actions varchar(),ActionItem varchar(),ObjectOrganization varchar(),Arrangement varchar());

.quit;

這里只考慮了基本屬性,可以為數(shù)據(jù)表做擴展表格實現(xiàn)其額外的屬性。

參照SQL DML的語法,該模型的邏輯結(jié)構(gòu)主要元素描述如下:

(1)Objects: Objects(EPC Primary Key, name, deseription),記錄系統(tǒng)及隨裝信息。

(2)Organizations: Organizations(organizationID Primary Key,organization),標(biāo)識裝備在生命周期內(nèi)裝配單位及編制序列。

(3)Actions: Actions(actionID Primary Key,actType),標(biāo)識業(yè)務(wù)流程中的事務(wù)類型。其中,actionID為事務(wù)類型標(biāo)識碼;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)識關(guān)于該EPC的上一層次的EPC編碼;QtyOfChild記錄了由該EPC標(biāo)識的下一層次的物品數(shù)量;stime和etime分別標(biāo)識該層次關(guān)系的發(fā)生和結(jié)束時間。

(5)ActionItem:ActionItem(ID Primary Key,actionID,EPC references Objects,timestamp):ID標(biāo)識每個發(fā)生的事務(wù);timestamp為該事務(wù)發(fā)生的時間。

(6)ObjectOrganization(ID Primary Key,EPC refferenees Objects, organizationID, timestamp):ID標(biāo)識裝備的調(diào)撥、調(diào)整及編制戰(zhàn)斗序列的變化。

SQLite數(shù)據(jù)庫提供了豐富的C語言API接口函數(shù),使得對數(shù)據(jù)庫的操作十分方便。本系統(tǒng)只需要以下3個核心函數(shù)就可以實現(xiàn)連接數(shù)據(jù)庫、處理查詢等操作:

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個函數(shù)用于打開與關(guān)閉數(shù)據(jù)庫,第3個函數(shù)sqlite3_exec()用來處理SQL查詢,此函數(shù)的第2個參數(shù)用來處理一條或多條 SQL語句,如果是查詢(SELECT)語句,則查詢結(jié)果的每一條記錄都必須調(diào)用第3個參數(shù)的Callback函數(shù),第4個參數(shù)則為Callback函數(shù)的第一個參數(shù)指針;如果不是查詢語句,則第3、4個參數(shù)為NULL。所有SQL執(zhí)行完畢后返回0,否則返回錯誤代碼,可通過第5個參數(shù)值來查看詳細錯誤信息。

使用sqlite3_mprintf函數(shù)將數(shù)據(jù)段的值添加到SQL語句中,然后通過sqlite3_exec函數(shù)執(zhí)行該SQL語句把標(biāo)簽數(shù)據(jù)插入到數(shù)據(jù)庫中。

3.3 數(shù)據(jù)的訪問操作

GoAhead WebServer是一款面向嵌入式系統(tǒng)的Web服務(wù)器,作為系統(tǒng)中數(shù)據(jù)轉(zhuǎn)發(fā)和模塊承載平臺。向Wince系統(tǒng)中移植比較簡單,在Visual C++ 6.0打開CE子目錄下的工作空間webs.dsw,將生成的webs.exe和所需的Web頁面導(dǎo)入WinCE系統(tǒng)中相應(yīng)位置即可。需要注意的是:要設(shè)置計算機系統(tǒng)環(huán)境變量Path,使其包含include和lib,確保包含CE、UEMF、webs和UNICODE的特征值被定義在內(nèi)。

在使用GoAhead WebServer前,需要對GoAhead WebServer進行配置:

(1)在瀏覽器輸入地址時,服務(wù)器返回某一頁面,該頁面通過在main.c文件中的initWebs函數(shù)進行設(shè)定,設(shè)定語句為:

websRedirec(wp,T(“index.htm“));

(2)當(dāng)瀏覽器訪問某一地址下的目錄時,服務(wù)器將返回該目錄下的缺省頁面,通過main.c文件中的websHomePageHandler函數(shù)進行設(shè)定,設(shè)定語句為:

websSetDefaultPage(T(“default.asp“));

用戶在頁面對過濾規(guī)則進行配置后,CGI程序?qū)⑴渲媒Y(jié)果寫入配置文件filter.conf中。在進行數(shù)據(jù)過濾時,過濾器將會讀取此配置文件得到相應(yīng)的過濾規(guī)則對數(shù)據(jù)進行過濾。

首先使用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)輸出,進而Web服務(wù)器向客戶端返回動態(tài)頁面,這樣就實現(xiàn)了用戶、WebServer與SQLite3嵌入式數(shù)據(jù)的交互。

通過編譯,webs.ere最后將以操作系統(tǒng)的一個子進程運行,可與操作系統(tǒng)內(nèi)的其他進程進行通信及數(shù)據(jù)傳輸,從而實現(xiàn)操作系統(tǒng)內(nèi)部程序間的相互交互作用。

本文研究了針對裝備信息的RFID數(shù)據(jù)結(jié)構(gòu)模型,使用SQLite數(shù)據(jù)庫實現(xiàn)標(biāo)簽數(shù)據(jù)的存儲、過濾,并設(shè)計了簡單易用的Web界面,只需通過瀏覽器進行簡單的操作,就可完成對過濾規(guī)則的設(shè)置以及與數(shù)據(jù)的交互等功能。今后的工作是進行更多的頁面優(yōu)化設(shè)計,將使其更加有實際應(yīng)用價值。
回復(fù)

使用道具 舉報

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表