生產(chǎn)線(xiàn)嵌入式RFID終端讀寫(xiě)器設計
文章出處:http://psychicreadingswithdeb.com 作者:姜兆寧 丁香乾 李 謙 人氣: 發(fā)表時(shí)間:2011年10月22日
一、研究背景及設計方案
RFID 是射頻識別技術(shù)(Radio Frequency Identification)的英文縮寫(xiě),射頻識別技術(shù)是一種非接觸式的自動(dòng)識別技術(shù),它使用射頻電磁波通過(guò)空間耦合(交變磁場(chǎng)或電磁場(chǎng))在閱讀器和要進(jìn)行識別、分類(lèi)和跟蹤的移動(dòng)物品(物品上附著(zhù)有RFID 標簽)之間實(shí)現無(wú)接觸信息傳遞并通過(guò)所傳遞的信息達到識別目的的技術(shù)。RFID 是一種自動(dòng)識別和數據捕獲技術(shù),可以提供無(wú)人看管的自動(dòng)監視與報告作業(yè)。
RFID 閱讀器的工作原理如下:閱讀器通過(guò)天線(xiàn)發(fā)送出一定頻率的射頻信號,當標簽進(jìn)入磁場(chǎng)時(shí)產(chǎn)生感應電流從而獲得能量,發(fā)送出自身編碼和相關(guān)信息被讀取器讀取并解碼后送回到計算機中進(jìn)行有關(guān)處理,。識別工作無(wú)須人工干預,可工作于各種惡劣環(huán)境。高性能的RFID 讀寫(xiě)器可以同時(shí)識別多個(gè)物體。
在工業(yè)生產(chǎn)線(xiàn)RFID 系統中,由于生產(chǎn)線(xiàn)現場(chǎng)的工作環(huán)境復雜,各類(lèi)電磁干擾源非常多,采集點(diǎn)的數量多,而通常的RFID 讀寫(xiě)器,由于采用單片機為主控制器,運算能力弱,本地不具備數據分析和存儲能力,不具備較強的抗干擾能力,對后臺系統數據處理能力要求較高,而在工業(yè)生產(chǎn)線(xiàn)上,如果直接將所有采集點(diǎn)(通常多達數百點(diǎn))所讀取的信息直接傳回服務(wù)器,由于要在服務(wù)器上進(jìn)行繁重的數據分析和干擾排除,過(guò)大的數據量和計算量很容易造成服務(wù)器端的信息堵塞,進(jìn)而影響系統的穩定性。所以現有的解決方案往往直接使用價(jià)格昂貴的工業(yè)PC 機完成前端工作,但這樣無(wú)疑大大增加了總體的部署成本。本系統的設計思路見(jiàn)圖(1)通過(guò)功能強大的RFID 嵌入式終端,直接在本地完成復雜的標簽讀取,數據糾錯,干擾排除,信息提取和數據保存等工作,僅將有效信息通過(guò)網(wǎng)絡(luò )傳輸給后臺服務(wù)器,這樣就大大降低網(wǎng)絡(luò )通信的開(kāi)銷(xiāo),降低了服務(wù)器的資源占用,從而提高了系統整體的運行效率,提高了穩定性,增加了業(yè)務(wù)的靈活性。
圖(1) RFID 技術(shù)應用于生產(chǎn)線(xiàn)總體示意
二、系統的總體硬件設計
為了達到設計功能和環(huán)境需求,本系統底板采用了PCB 6 層設計,機殼加裝了電磁屏蔽網(wǎng),另外專(zhuān)門(mén)配備了PCMCIA 接口用來(lái)外接RFID 讀寫(xiě)模塊,采用的主要元件如下:
① 微處理器(MPU):針對終端需要高速運算和數據庫操作的需要,并考慮到系統外圍設備的需求情況,本系統采用ARM9 核的SAMSUNG S3C2410 處理器。最高主頻可達203MHz。
② SDRAM 存儲部分采用兩顆Hynix 公司的HY57V561620CT 內存,大小為32M。
③ FLASH 存儲器采用SAMSUNG 公司的K9F1208UOM Nand Flash,大小為64M。
④ RFID 閱讀器模塊:采用了WJ 公司的MPR6000 系列產(chǎn)品,PCMCIA 接口。
⑤ 網(wǎng)絡(luò )通信模塊:采用了Realtek 8039 芯片,支持10M/100M 網(wǎng)絡(luò )通信。
三、系統的軟件系統介紹
系統的軟件部分主要由Linux 基本系統、RFID 標簽識別解析模塊、嵌入式數據庫操作模塊、網(wǎng)絡(luò )通信等模組成,軟件模塊關(guān)系如圖(2),下面簡(jiǎn)單介紹一下各模塊的功能和主要函數。
圖(2)軟件系統流程
① Linux 基本系統
由于Linux 成本低,代碼開(kāi)放,穩定性高,多線(xiàn)程,支持USB、Flash 等多種外設,底層支持TCP/IP 網(wǎng)絡(luò ),故本系統將其移植到ARM9 上作為操作系統,內核版本號為2.4.1。由于文件系統涉及數據庫文檔保存,故采用了YAFFS 文件系統,另外就是針對本系統采用的外設和功能對Linux 內核作了相應裁減,以降低其內存占用。提高速度。
② RFID 標簽識別解析模塊
在設計中采用了WJ 公司PCMCIA 接口的RFID 讀寫(xiě)器模塊MPR6000,該模塊通過(guò)UART-over-PC BUS 總線(xiàn)與嵌入式主機進(jìn)行數據通信,其通信的特點(diǎn)如下:遵循命令-回復的通信模式,首先由系統向RFID 讀寫(xiě)模塊發(fā)命令幀,讀寫(xiě)模塊在識別到通信包頭的時(shí)候讀取命令字,并進(jìn)行CRC 糾錯,如果錯誤的話(huà)則忽略該幀,有效地話(huà)則執行相關(guān)指令,并將讀取的標簽信息及結果編成返回數據幀傳給系統,系統收到通信幀時(shí)也同樣進(jìn)行包頭識別和CRC 糾錯,如正確的話(huà)就進(jìn)行解包并取得標簽相關(guān)信息。
命令包的格式如下
命令幀范例樣本如下:01 00 0D 11 00 1E 01 18 30 18 2E B7 69 CC通過(guò)解包后表示如下內容:從一號天線(xiàn),以1E 的功率,讀取過(guò)濾碼(即標簽前幾位的ID 號)為30 18 2E B7 的RFID EPC Class0 標簽,幀長(cháng)度為0D,CRC 糾錯碼為69CC。
返回幀的格式如下
返回幀范例樣本如下:01 00 11 01 01 30 18 2E B7 20 00 00 00 00 00 00 74 F6
通過(guò)解包后表示如下內容:讀取到一個(gè)96bit 的EPC 標簽,標簽ID 為 30 18 2E B7 20 00 00 00 00 00 00 00 ,讀取操作完成,數據幀長(cháng)度為11,CRC 糾錯碼為74F6。
針對通信幀的特點(diǎn)設計的Linux 平臺驅動(dòng)軟件由以下幾個(gè)主要的子函數組成:
1、 unsigned short CalculateBlockCRC16(int len, unsigned char *pBuf);進(jìn)行CRC計算和驗證
2、 int AppendCRC(void *pBuf, unsigned short CRC);將算出的CRC 值添加到請求包指定位置
3、 int UartSend(void *pBuf,int uart_num);將算出的CRC 及命令字發(fā)送到指定串口
4、 int UartRead(unsigned char *pBuf, int uart_num);從指定的串口讀入返回的數據包
5、 int CRCcheck(unsigned char *pBuf, unsigned short CRC);比對得到的CRC與數據包是否正確
6、 int ProcessTag(unsigned char *pBuf, unsigned char Tags[ ]);處理得到的返回楨,分離出讀取到的條碼編號,并存入數組進(jìn)行暫存,為下一步數據庫存取做好準備除以上子函數外,還有其它相應的函數來(lái)進(jìn)行剔除干擾數據包,處理異常等工作,經(jīng)本模塊處理后,已經(jīng)可以確??梢赃^(guò)濾絕大多部分的干擾信息了,這樣處理完的數據就可以直接進(jìn)行數據庫記錄和通過(guò)網(wǎng)絡(luò )傳輸給后臺數據庫了。
③ 嵌入式數據庫操作模塊
嵌入式數據庫是整個(gè)系統的重要組成部分,在本系統中采用了開(kāi)源的小型嵌入式數據庫SQLite,支持SQL 92 標準數據庫操作語(yǔ)句和事務(wù),其工作流程如下:當讀取到條碼時(shí),本模塊將條碼號、讀取時(shí)間、條碼內容、采集點(diǎn)編號,操作狀態(tài)等信息寫(xiě)入本地數據庫,從而實(shí)現采集數據的本地初步存儲,數據庫在此列舉幾個(gè)主要的子函數如下:
1、int Query_Init(string *p_command, struct *p_DB_Status, int type);選擇基本的SQL 操作符符號和初始值設置,為執行數據庫操作做好準備。
2、int Query_Exec(int db,string *p_command,void (* p_fuction) (*str),(void *)&res);選擇數據庫,根據SQL 操作符進(jìn)行數據庫操作,并將返回數據通過(guò)p_function 函數處理。
3、int Query_CallBack(void *p_data, int num, char **value, char **column);將數據庫操作返回的數據列表暫存到數組中,以待下一步處理。
除以上函數外,還預留了相應的接口用來(lái)完成前端數據庫和后臺數據庫的同步,經(jīng)測試,平均插入一條數據的時(shí)間<=0.01 秒,滿(mǎn)足了系統的即時(shí)性上的需求。
④ 網(wǎng)絡(luò )通信模塊
本系統的特色就是通過(guò)嵌入式Linux 操作系統的網(wǎng)絡(luò )底層支持,以多種網(wǎng)絡(luò )傳輸途徑,將數據和后臺數據服務(wù)器進(jìn)行數據傳輸。在本系統的網(wǎng)絡(luò )部分設計中,在局域網(wǎng)內利用Linux系統的提供的TCP/IP 協(xié)議支持,在編程中采用了動(dòng)態(tài)與服務(wù)器建立連接的方法,在讀取到RFID 芯片并解碼出有效信息的時(shí)候,向服務(wù)器相應端口發(fā)送相應的Socket 請求信息,服務(wù)器端接受到請求后建立連接并新建Socket 端口來(lái)和終端進(jìn)行通信;只有在讀取數據的時(shí)候數據庫和終端間才產(chǎn)生數據傳輸和占用服務(wù)器端資源,從而降低了網(wǎng)絡(luò )占有率和服務(wù)器端的負荷,通信部分終端客戶(hù)端部分的主要子函數如下:
1、int Net_Init(struct *p_net_Status,int type);初始化通信,根據選擇通信的類(lèi)型建立和服務(wù)器端的網(wǎng)絡(luò )連接,取得服務(wù)器基本信息,并建立Socket 連接。
2、int Net_Send(string *p_data, int len, struct sockaddr *p_addr);發(fā)送指定大小字符串到連結的服務(wù)器端口。
3、int Net_Receive(string *p_buffer, int len, struct sockaddr *p_addr);從服務(wù)器接受數據(主要是接受指令)到指定緩沖區內。
由于Linux 底層提供了TCP 支持,可以保證通信的可靠性,大大降低了編程復雜度,所以只要經(jīng)過(guò)簡(jiǎn)單的對Socket 函數進(jìn)行了封裝來(lái)實(shí)現數據網(wǎng)絡(luò )傳輸,配合服務(wù)器端程序即可將標簽信息保存到后臺的主數據庫中,并由后臺服務(wù)器根據通信內容進(jìn)行數據保存,發(fā)送控制命令等操作。
四、結論
本文中描述的嵌入式RFID 終端讀取器,在冰箱生產(chǎn)線(xiàn)中進(jìn)行了實(shí)用,基本滿(mǎn)足了生產(chǎn)線(xiàn)RFID 系統對前端RFID 標簽數據采集、處理、通信方面的要求,在功能上和穩定性方面已經(jīng)能夠替代現有的工業(yè)PC,因為采用了免費的開(kāi)源Linux 操作系統和開(kāi)源數據庫Sqlite,大大降低了總體成本,對在生產(chǎn)線(xiàn)上進(jìn)行RFID 讀寫(xiě)終端的大量部署非常有利。
本文作者創(chuàng )新點(diǎn):通過(guò)設計使用功能強大的RFID 嵌入式讀寫(xiě)終端,將抗干擾、信息提取、日志保存等功能在終端進(jìn)行本地處理,從而大大降低了網(wǎng)絡(luò )通訊負擔和后臺服務(wù)器占用,滿(mǎn)足了生產(chǎn)線(xiàn)上的工作環(huán)境和需求。
參考文獻:
[1] 德 Klaus Finkenzeller 著(zhù),射頻識別(RFID)技術(shù) –無(wú)線(xiàn)電感應的應答器和非接觸IC卡的原理與應用. 陳大才 編譯,王卓人 審校,電子工業(yè)出版社,2001
[2]《構建嵌入式Linux 系統》,Karim Yaghmour 著(zhù),中國電力出版社
[3] www.wj.com MPR_API_3_0 page 6-13.
[4] www.SQLite.org C/C++ Interface For SQLite Version 3.
[5]《網(wǎng)絡(luò )程序設計》郭學(xué)理,張 建等著(zhù),武漢大學(xué)出版社
[6] 包乃蘭,寧立革,林濤,郭計策.一種嵌入式控制系統方案的研究.[J]. 微計算機信息(嵌入式與SOC),2005 年第21 卷第9-2 期,62-64.中圖分類(lèi)號:TP302.文獻標示碼:A.
作者簡(jiǎn)介:
1、 姜兆寧(1981—),男,碩士生,主要研究方向:嵌入式技術(shù),數據庫技術(shù)Jiang Zhaoning,male,Master candidate,research interest:Embedded technique, Database.
2、 丁香乾(1963—),男,博士生導師,教授,主要研究方向:制造業(yè)信息化技術(shù),計算智能,物流技術(shù)
Ding Xiangqian,male,Doctor tutor,professor,research interest:Manufacturer Information
Systems, Compute Intelligence, Logistics.
3、 李 謙 (1981—),男,碩士生,主要研究方向:嵌入式技術(shù),RFID 技術(shù)。
Li Qian,male,Master candidate,research interest:Embedded technique.
通信地址:青島市香港東路23 號,中國海洋大學(xué)海大新星計算機工程中心(郵編:266071),
項目介紹:本項目得到國家863 基金資助 編號為 2003AA414016
作者E-mail:jiangzhaoning@gmail.com