一、研究背景及設計
RFID 是射頻識別技術(Radio Frequency Identification)的英文縮寫, 射頻識別技術是一種非接觸式的自動識別技術, 它使用射頻電磁波通過空間耦合(交變磁場或電磁場)在閱讀器和要進行識別、分類和跟蹤的移動物品( 物品上附著有RFID 標簽)之間實現(xiàn)無接觸信息傳遞并通過所傳遞的信息達到識別目的的技術。RFID 是一種自動識別和數(shù)據捕獲技術, 可以提供無人看管的自動監(jiān)視與報告作業(yè)。
RFID 閱讀器的工作原理如下: 閱讀器通過天線發(fā)送出一定頻率的射頻信號, 當標簽進入磁場時產生感應電流從而獲得能量, 發(fā)送出自身編碼和相關信息被讀取器讀取并解碼后送回到計算機中進行有關處理。識別工作無須人工干預, 可工作于各種惡劣環(huán)境。高性能的RFID 讀寫器可以同時識別多個物體[1]。在農業(yè)生產中, 目前RFID 的使用范圍也逐漸擴大, 隨著世界上發(fā)達國家的食品檢驗檢疫制度日益嚴格, 目前國外對動物的管理中已經開始廣泛使用RFID 技術, 而在國內的某些超市中, 也對顧客提供了對凈菜等高檔農業(yè)產品使用RFID 標簽查詢產地和日期等基本的附加功能, 可以預見, 在未來RFID 必然在產品回溯, 質量監(jiān)察等方面發(fā)揮更多的作用。在本系統(tǒng)的設計思路見圖1 使用了高性能的遵循RFIDGEN2 協(xié)議的讀寫模塊和RFID 標簽, 直接在本地完成復雜的標簽讀取, 標簽反碰撞計算, 信息提取和數(shù)據保存等工作, 僅將有效信息通過網絡傳輸給后臺服務器, 這樣就大大降低了網絡通信的開銷, 降低了服務器的資源占用, 從而提高了系統(tǒng)整體的運行效率, 提高了穩(wěn)定性, 增加了業(yè)務的靈活性。
圖1 RFID 技術應用于農業(yè)產品包裝線總體示意圖
二、系統(tǒng)的硬件設計
圖2 射頻模塊與CPU 接口
基于高可靠性和低成本的考慮, 本系統(tǒng)使用了基于S344B0 的嵌入式CPU 和WJ 6000 射頻模塊為基礎, 配合USB、Realtek 網卡、SDRAM 等芯片組成了核心系統(tǒng), 其中關鍵的射頻模塊與CPU 接口如圖2。
三、系統(tǒng)的軟件系統(tǒng)設計
系統(tǒng)的整個軟件系統(tǒng)模塊關系如圖3 所示:
圖3 系統(tǒng)總體軟件模塊示意圖
操作系統(tǒng)采用uClinux 系統(tǒng)作為操作系統(tǒng), 用來管理各類硬件和提供軟件運行平臺。由驅動層提供各類設備諸如以太網, 串口, USB 存儲器, 狀態(tài)燈等設備的驅動。網絡通信模塊負責將處理得來的標簽信息回傳到后臺服務器, 同時也可以根據后臺服務器的命令來控制主控模塊參數(shù)從而改變工作模式。嵌入式數(shù)據庫控制模塊負責將系統(tǒng)保存系統(tǒng)的工作日志, 并將讀取到的標簽和相關數(shù)據保存到本地數(shù)據庫, 以備以后的查詢。協(xié)議解析模塊負責對受到數(shù)據通信包進行協(xié)議解析, 取出有效的標簽數(shù)據, 并進行標簽反碰撞操作, 處理各類干擾問題, 保證受到標簽數(shù)據的完整性, 也是整個軟件體系的核心部分。RFID 讀取系統(tǒng)軟件工作流程:
圖4 軟件系統(tǒng)工作流程
1、嵌入式數(shù)據庫操作模塊
在本項目中使用了Sqlite3 作為系統(tǒng)的嵌入式數(shù)據庫。嵌入式數(shù)據庫是整個系統(tǒng)的重要組成部分, 主要負擔了采集基本數(shù)據的本地存儲, 條碼閱讀信息的初步存儲和快速查詢, 工作日志的保存, 還能和網絡通信模塊配合實現(xiàn)網絡主/ 從數(shù)據庫的同步, 在主服務器崩潰的情況下, 依然可以通過整理所有嵌入式數(shù)據庫的數(shù)據進行大部分數(shù)據的恢復, 增加了系統(tǒng)的可靠性, 此數(shù)據庫采用了單數(shù)據文件設計, 能夠支持大部分SQL 92標準的數(shù)據庫操作語句, 支持事務功能, 通過擴展網絡操作接口函數(shù), 達到了和后臺數(shù)據庫進行通信和交換數(shù)據的目的。
2、網絡通信模塊
本系統(tǒng)的特色就是通過嵌入式Linux 操作系統(tǒng)的網絡底層支持, 以多種網絡傳輸途徑, 將數(shù)據和后臺數(shù)據服務器進行數(shù)據傳輸。在本系統(tǒng)的網絡部分設計中, 在局域網內利用Linux 系統(tǒng)的提供的TCP/IP 協(xié)議支持, 在編程中采用了動態(tài)與服務器建立連接的方法, 在讀取到標簽信息并解碼出有效信息的時候, 向服務器相應端口發(fā)送相應的Socket 請求信息, 服務器端接受到請求后建立連接并新建Socket 端口來和終端進行通信; 只有在讀取數(shù)據的時候數(shù)據庫和終端間才產生數(shù)據傳輸和占用服務器端資源, 從而降低了網絡占有率和服務器端的負荷, 提高了網絡通信的效率。
3、RFID 協(xié)議解析模塊
協(xié)議解析模塊負責將發(fā)送的命令參數(shù)加入包頭等信息,并將收到的標簽回傳的信息進行解包, 通過對信息的解包, 能夠得到盤存或讀寫的相關信息。MPR6000 支持的RFID Gen2命令包括Read, Write, Kill , Erase, Lock。命令都由一個字符串構成, 其結構如下:
分別由開始幀、節(jié)點、總長度、狀態(tài)、標簽信息、CRC 這幾部分組成。
舉例來說, Gen2 盤點命令的操作碼為01h, 操作會返回在讀寫域內全部的符合讀取條件的Gen2 標簽, 而經過反碰撞模塊處理后, 得到的數(shù)據幀由標簽信息和盤存總結兩部分組成:
即< 回復信息>= [< 標簽回復>]< 盤存總結>
可能讀寫模塊會收到這樣一個包, 完整內容如下:
< 標簽1 回復> = < 標簽1 ID 長度> < 協(xié)議控制字> <標簽1 ID>
< 標簽1 ID 長度> = <06> = 6- word = 96 Bit 標簽ID
而又有< 盤存總結>=< 標簽數(shù)>< 時隙數(shù)>
在提取標簽信息后, 則可以將所獲得的標簽信息送到嵌入式數(shù)據庫模塊進行本地暫存, 同時通過網絡模塊上傳至后臺服務器做記錄, 中間的接口函數(shù)部分就不詳細給出了。
四、總結與展望
本文中描述的嵌入式RFID 終端讀取器, 在農業(yè)產品包裝生產線中進行了實用, 基本滿足了生產線RFID 系統(tǒng)對前端RFID 標簽數(shù)據采集、處理、通信方面的要求, 在功能上和穩(wěn)定性方面已經能夠替代專用RF 讀寫器, 因為采用了免費的開源Linux 操作系統(tǒng)和開源數(shù)據庫Sqlite , 大大降低了總體成本, 特別適合在成本敏感系數(shù)高的農產品生產和監(jiān)控中使用。
< 標簽回復> =
舉例, 當使用天線B 并且RF 的功率為22 時, 讀取所有SL 為NOT SET, S3 flag 為A 的Gen2 標簽, 此時的起始Q 為1( 即2 個時隙) 。
60 01 01 16 02 03 00 01
如果當前射頻范圍內的標簽有一個64 位的Gen2 標簽1的ID 為“ 0102 0304 0506 0708”。
而且有一個96 位Gen2 標簽2 的ID 為“ 1211 1009 08070605 0403 0201”。
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)在對這個包進行解析, 根據協(xié)議規(guī)定< 接受包> = [<標簽回復>] < 盤存總結>
= [<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>
< 標簽1 ID 長度> = <04> = 4- word = 64 Bit 標簽ID
< 協(xié)議控制字> = <28 00>, 從而得出< 標簽1 ID> =<0102 0304 0506 0708>
< 標簽2 回復> = < 標簽2 ID 長度> < 協(xié)議控制字> <標簽2 ID>
< 協(xié)議控制字> = <30 00>, 得出< 標簽2 ID> = <1211 1009 0807 0605 0403 0201>
所以得到< 標簽數(shù)> = 2, < 時隙數(shù)> = 22,