物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊(cè)

農(nóng)產(chǎn)品生產(chǎn)線嵌入式RFID讀寫器設(shè)計(jì)

作者:劉君 孫桂萍
來源:RFID世界網(wǎng)
日期:2011-08-15 09:33:57
摘要:RFID 技術(shù)由于其可靠性高、適應(yīng)環(huán)境廣、總體成本低已經(jīng)在軍事、農(nóng)業(yè)、制造業(yè)和物流等領(lǐng)域發(fā)揮了巨大作用, 如何更低成本的有效, 精確的讀取RFID 信息成為影響RFID 在農(nóng)產(chǎn)品生產(chǎn)上應(yīng)用的關(guān)鍵, 本文論述了借助于嵌入式技術(shù)和Linux 操作系統(tǒng), 在硬件和軟件上實(shí)現(xiàn)農(nóng)業(yè)用低成本RFID 終端讀寫器的設(shè)計(jì)方案, 本設(shè)計(jì)已經(jīng)在農(nóng)產(chǎn)品生產(chǎn)中進(jìn)行了讀取實(shí)驗(yàn), 并取得較好的效果。

    一、研究背景及設(shè)計(jì)

    RFID 是射頻識(shí)別技術(shù)(Radio Frequency Identification)的英文縮寫, 射頻識(shí)別技術(shù)是一種非接觸式的自動(dòng)識(shí)別技術(shù), 它使用射頻電磁波通過空間耦合(交變磁場(chǎng)或電磁場(chǎng))在閱讀器和要進(jìn)行識(shí)別、分類和跟蹤的移動(dòng)物品( 物品上附著有RFID 標(biāo)簽)之間實(shí)現(xiàn)無接觸信息傳遞并通過所傳遞的信息達(dá)到識(shí)別目的的技術(shù)。RFID 是一種自動(dòng)識(shí)別和數(shù)據(jù)捕獲技術(shù), 可以提供無人看管的自動(dòng)監(jiān)視與報(bào)告作業(yè)。

    RFID 閱讀器的工作原理如下: 閱讀器通過天線發(fā)送出一定頻率的射頻信號(hào), 當(dāng)標(biāo)簽進(jìn)入磁場(chǎng)時(shí)產(chǎn)生感應(yīng)電流從而獲得能量, 發(fā)送出自身編碼和相關(guān)信息被讀取器讀取并解碼后送回到計(jì)算機(jī)中進(jìn)行有關(guān)處理。識(shí)別工作無須人工干預(yù), 可工作于各種惡劣環(huán)境。高性能的RFID 讀寫器可以同時(shí)識(shí)別多個(gè)物體[1]。在農(nóng)業(yè)生產(chǎn)中, 目前RFID 的使用范圍也逐漸擴(kuò)大, 隨著世界上發(fā)達(dá)國(guó)家的食品檢驗(yàn)檢疫制度日益嚴(yán)格, 目前國(guó)外對(duì)動(dòng)物的管理中已經(jīng)開始廣泛使用RFID 技術(shù), 而在國(guó)內(nèi)的某些超市中, 也對(duì)顧客提供了對(duì)凈菜等高檔農(nóng)業(yè)產(chǎn)品使用RFID 標(biāo)簽查詢產(chǎn)地和日期等基本的附加功能, 可以預(yù)見, 在未來RFID 必然在產(chǎn)品回溯, 質(zhì)量監(jiān)察等方面發(fā)揮更多的作用。在本系統(tǒng)的設(shè)計(jì)思路見圖1 使用了高性能的遵循RFIDGEN2 協(xié)議的讀寫模塊和RFID 標(biāo)簽, 直接在本地完成復(fù)雜的標(biāo)簽讀取, 標(biāo)簽反碰撞計(jì)算, 信息提取和數(shù)據(jù)保存等工作, 僅將有效信息通過網(wǎng)絡(luò)傳輸給后臺(tái)服務(wù)器, 這樣就大大降低了網(wǎng)絡(luò)通信的開銷, 降低了服務(wù)器的資源占用, 從而提高了系統(tǒng)整體的運(yùn)行效率, 提高了穩(wěn)定性, 增加了業(yè)務(wù)的靈活性。


圖1 RFID 技術(shù)應(yīng)用于農(nóng)業(yè)產(chǎn)品包裝線總體示意圖

    二、系統(tǒng)的硬件設(shè)計(jì)


圖2 射頻模塊與CPU 接口

    基于高可靠性和低成本的考慮, 本系統(tǒng)使用了基于S344B0 的嵌入式CPU 和WJ 6000 射頻模塊為基礎(chǔ), 配合USB、Realtek 網(wǎng)卡、SDRAM 等芯片組成了核心系統(tǒng), 其中關(guān)鍵的射頻模塊與CPU 接口如圖2。

    三、系統(tǒng)的軟件系統(tǒng)設(shè)計(jì)

    系統(tǒng)的整個(gè)軟件系統(tǒng)模塊關(guān)系如圖3 所示:


圖3 系統(tǒng)總體軟件模塊示意圖

    操作系統(tǒng)采用uClinux 系統(tǒng)作為操作系統(tǒng), 用來管理各類硬件和提供軟件運(yùn)行平臺(tái)。由驅(qū)動(dòng)層提供各類設(shè)備諸如以太網(wǎng), 串口, USB 存儲(chǔ)器, 狀態(tài)燈等設(shè)備的驅(qū)動(dòng)。網(wǎng)絡(luò)通信模塊負(fù)責(zé)將處理得來的標(biāo)簽信息回傳到后臺(tái)服務(wù)器, 同時(shí)也可以根據(jù)后臺(tái)服務(wù)器的命令來控制主控模塊參數(shù)從而改變工作模式。嵌入式數(shù)據(jù)庫控制模塊負(fù)責(zé)將系統(tǒng)保存系統(tǒng)的工作日志, 并將讀取到的標(biāo)簽和相關(guān)數(shù)據(jù)保存到本地?cái)?shù)據(jù)庫, 以備以后的查詢。協(xié)議解析模塊負(fù)責(zé)對(duì)受到數(shù)據(jù)通信包進(jìn)行協(xié)議解析, 取出有效的標(biāo)簽數(shù)據(jù), 并進(jìn)行標(biāo)簽反碰撞操作, 處理各類干擾問題, 保證受到標(biāo)簽數(shù)據(jù)的完整性, 也是整個(gè)軟件體系的核心部分。

    RFID 讀取系統(tǒng)軟件工作流程:

 

圖4 軟件系統(tǒng)工作流程

    1、嵌入式數(shù)據(jù)庫操作模塊

    在本項(xiàng)目中使用了Sqlite3 作為系統(tǒng)的嵌入式數(shù)據(jù)庫。嵌入式數(shù)據(jù)庫是整個(gè)系統(tǒng)的重要組成部分, 主要負(fù)擔(dān)了采集基本數(shù)據(jù)的本地存儲(chǔ), 條碼閱讀信息的初步存儲(chǔ)和快速查詢, 工作日志的保存, 還能和網(wǎng)絡(luò)通信模塊配合實(shí)現(xiàn)網(wǎng)絡(luò)主/ 從數(shù)據(jù)庫的同步, 在主服務(wù)器崩潰的情況下, 依然可以通過整理所有嵌入式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行大部分?jǐn)?shù)據(jù)的恢復(fù), 增加了系統(tǒng)的可靠性, 此數(shù)據(jù)庫采用了單數(shù)據(jù)文件設(shè)計(jì), 能夠支持大部分SQL 92標(biāo)準(zhǔn)的數(shù)據(jù)庫操作語句, 支持事務(wù)功能, 通過擴(kuò)展網(wǎng)絡(luò)操作接口函數(shù), 達(dá)到了和后臺(tái)數(shù)據(jù)庫進(jìn)行通信和交換數(shù)據(jù)的目的。

    2、網(wǎng)絡(luò)通信模塊

    本系統(tǒng)的特色就是通過嵌入式Linux 操作系統(tǒng)的網(wǎng)絡(luò)底層支持, 以多種網(wǎng)絡(luò)傳輸途徑, 將數(shù)據(jù)和后臺(tái)數(shù)據(jù)服務(wù)器進(jìn)行數(shù)據(jù)傳輸。在本系統(tǒng)的網(wǎng)絡(luò)部分設(shè)計(jì)中, 在局域網(wǎng)內(nèi)利用Linux 系統(tǒng)的提供的TCP/IP 協(xié)議支持, 在編程中采用了動(dòng)態(tài)與服務(wù)器建立連接的方法, 在讀取到標(biāo)簽信息并解碼出有效信息的時(shí)候, 向服務(wù)器相應(yīng)端口發(fā)送相應(yīng)的Socket 請(qǐng)求信息, 服務(wù)器端接受到請(qǐng)求后建立連接并新建Socket 端口來和終端進(jìn)行通信; 只有在讀取數(shù)據(jù)的時(shí)候數(shù)據(jù)庫和終端間才產(chǎn)生數(shù)據(jù)傳輸和占用服務(wù)器端資源, 從而降低了網(wǎng)絡(luò)占有率和服務(wù)器端的負(fù)荷, 提高了網(wǎng)絡(luò)通信的效率。

    3、RFID 協(xié)議解析模塊

    協(xié)議解析模塊負(fù)責(zé)將發(fā)送的命令參數(shù)加入包頭等信息,并將收到的標(biāo)簽回傳的信息進(jìn)行解包, 通過對(duì)信息的解包, 能夠得到盤存或讀寫的相關(guān)信息。MPR6000 支持的RFID Gen2命令包括Read, Write, Kill , Erase, Lock。命令都由一個(gè)字符串構(gòu)成, 其結(jié)構(gòu)如下:
    <SOF> <Node> <Length> <Status> <Payload> <CRC>
    分別由開始幀、節(jié)點(diǎn)、總長(zhǎng)度、狀態(tài)、標(biāo)簽信息、CRC 這幾部分組成。

    舉例來說, Gen2 盤點(diǎn)命令的操作碼為01h, 操作會(huì)返回在讀寫域內(nèi)全部的符合讀取條件的Gen2 標(biāo)簽, 而經(jīng)過反碰撞模塊處理后, 得到的數(shù)據(jù)幀由標(biāo)簽信息和盤存總結(jié)兩部分組成:

    即< 回復(fù)信息>= [< 標(biāo)簽回復(fù)>]< 盤存總結(jié)>
    < 標(biāo)簽回復(fù)> = <EPC>< 訪問回復(fù)>
    <EPC> = < 標(biāo)簽ID 長(zhǎng)度>< 協(xié)議控制字>< 標(biāo)簽ID>
    舉例, 當(dāng)使用天線B 并且RF 的功率為22 時(shí), 讀取所有SL 為NOT SET, S3 flag 為A 的Gen2 標(biāo)簽, 此時(shí)的起始Q 為1( 即2 個(gè)時(shí)隙) 。
    60 01 01 16 02 03 00 01
    如果當(dāng)前射頻范圍內(nèi)的標(biāo)簽有一個(gè)64 位的Gen2 標(biāo)簽1的ID 為“ 0102 0304 0506 0708”。
    而且有一個(gè)96 位Gen2 標(biāo)簽2 的ID 為“ 1211 1009 08070605 0403 0201”。

    可能讀寫模塊會(huì)收到這樣一個(gè)包, 完整內(nèi)容如下:
    04 28 00 01 02 03 04 05 06 07 08 07 08 30 00 12 11 10 09 08 07 06 05 04 03 02 01 00 02 00 16 00 01 00 00 00 02 00 09
    現(xiàn)在對(duì)這個(gè)包進(jìn)行解析, 根據(jù)協(xié)議規(guī)定< 接受包> = [<標(biāo)簽回復(fù)>] < 盤存總結(jié)>
    = [<04 28 00 01 02 03 04 05 06 07 08> <07 08 30 00 12 11 10 09 08 07 06 05 04 03 02 01>] < 00 02 00 16 00 01 00 00 00 02 00 09>

    < 標(biāo)簽1 回復(fù)> = < 標(biāo)簽1 ID 長(zhǎng)度> < 協(xié)議控制字> <標(biāo)簽1 ID>
    < 標(biāo)簽1 ID 長(zhǎng)度> = <04> = 4- word = 64 Bit 標(biāo)簽ID
    < 協(xié)議控制字> = <28 00>, 從而得出< 標(biāo)簽1 ID> =<0102 0304 0506 0708>
    < 標(biāo)簽2 回復(fù)> = < 標(biāo)簽2 ID 長(zhǎng)度> < 協(xié)議控制字> <標(biāo)簽2 ID>

    < 標(biāo)簽1 ID 長(zhǎng)度> = <06> = 6- word = 96 Bit 標(biāo)簽ID
    < 協(xié)議控制字> = <30 00>, 得出< 標(biāo)簽2 ID> = <1211 1009 0807 0605 0403 0201>

    而又有< 盤存總結(jié)>=< 標(biāo)簽數(shù)>< 時(shí)隙數(shù)><EPC CRC 錯(cuò)誤>< 回復(fù)CRC 錯(cuò)誤>< 沖突次數(shù)>< 通信輪數(shù)>
    所以得到< 標(biāo)簽數(shù)> = 2, < 時(shí)隙數(shù)> = 22, <EPC CRC 錯(cuò)誤> = 1, < 回復(fù)CRC 錯(cuò)誤> = 0, < 沖突次數(shù)> = 2, < 通信輪數(shù)> = 9

    在提取標(biāo)簽信息后, 則可以將所獲得的標(biāo)簽信息送到嵌入式數(shù)據(jù)庫模塊進(jìn)行本地暫存, 同時(shí)通過網(wǎng)絡(luò)模塊上傳至后臺(tái)服務(wù)器做記錄, 中間的接口函數(shù)部分就不詳細(xì)給出了。

    四、總結(jié)與展望

    本文中描述的嵌入式RFID 終端讀取器, 在農(nóng)業(yè)產(chǎn)品包裝生產(chǎn)線中進(jìn)行了實(shí)用, 基本滿足了生產(chǎn)線RFID 系統(tǒng)對(duì)前端RFID 標(biāo)簽數(shù)據(jù)采集、處理、通信方面的要求, 在功能上和穩(wěn)定性方面已經(jīng)能夠替代專用RF 讀寫器, 因?yàn)椴捎昧嗣赓M(fèi)的開源Linux 操作系統(tǒng)和開源數(shù)據(jù)庫Sqlite , 大大降低了總體成本, 特別適合在成本敏感系數(shù)高的農(nóng)產(chǎn)品生產(chǎn)和監(jiān)控中使用。