針對傳統基于RS-485 總線(xiàn)的射頻識別技術(shù)(RFID)收費系統具有實(shí)時(shí)性差和通訊效率低的缺點(diǎn),提出了一種基于CAN 總線(xiàn)和2.4G 無(wú)線(xiàn)網(wǎng)絡(luò )的新型RFID 收費系統。該系統采用2.4G 無(wú)線(xiàn)網(wǎng)絡(luò )環(huán)境,使一個(gè)CAN 節點(diǎn)能夠控制六個(gè)RFID 收費終端的數據傳輸。應用溫度模塊獲取的數據的無(wú)線(xiàn)傳輸對該系統進(jìn)行測試,測試結果表明該方案設計的正確性。
1 引言
RFID(Radio Frequency IDentification)技術(shù),即射頻識別技術(shù),是一種通信技術(shù),目前廣泛應用于各種收費場(chǎng)合,例如:公共交通收費系統,停車(chē)場(chǎng)收費系統等等。目前使用RFID 技術(shù)的系統通常使用RS-485 和PC 端進(jìn)行數據交互,但是RS-485 使用單主節點(diǎn),采用輪詢(xún)方式,因此存在實(shí)時(shí)性較低和通訊效率低的問(wèn)題。
隨著(zhù)計算機科學(xué)水平的不斷飛躍和工業(yè)發(fā)展的需要,工業(yè)控制系統經(jīng)歷了基地式儀表控制系統、集中式數字控制系統、集散控制系統到現在廣泛使用的現場(chǎng)總線(xiàn)控制系統的轉變。CAN(Controller Area Net)總線(xiàn)是一種基于串行通信網(wǎng)絡(luò )的現場(chǎng)總線(xiàn)。CAN 總線(xiàn)采用多主工作方式,網(wǎng)絡(luò )上的任意節點(diǎn)可以在任意時(shí)刻向網(wǎng)絡(luò )上的其他節點(diǎn)發(fā)送信息。同時(shí),CAN 總線(xiàn)采用非破壞性仲裁技術(shù),當兩個(gè)或者更多的節點(diǎn)同時(shí)向網(wǎng)絡(luò )上傳送數據,優(yōu)先級低的節點(diǎn)將停止發(fā)送,直到優(yōu)先級高的節點(diǎn)發(fā)送完數據后再發(fā)送,這樣有效地避免了總線(xiàn)競爭。CAN 通信距離最遠可達10km/5kbps,通信速率最高可大1Mbps.CAN 的每幀數據都有CRC校驗或者其它檢測方式,保證了數據通信的可靠性。
當一個(gè)CAN 節點(diǎn)發(fā)生嚴重錯誤時(shí),該節點(diǎn)會(huì )自動(dòng)關(guān)閉,從而不影響其它節點(diǎn)的正常工作。因此,CAN 總線(xiàn)具有可靠性強,實(shí)時(shí)性高和效率高等優(yōu)勢,完全能夠取代RS 485 總線(xiàn)。
考慮到在實(shí)際應用環(huán)境中,為了減少大量的布線(xiàn)工作,使用2.4G 無(wú)線(xiàn)網(wǎng)絡(luò )作為數據從RFID 到CAN總線(xiàn)之間傳輸的中轉站。無(wú)線(xiàn)技術(shù)具有成本低、靈活性高、可靠性高和安裝時(shí)間短等特點(diǎn)。本次設計使用選用nRF24L01 組建無(wú)線(xiàn)通信網(wǎng)絡(luò ),該芯片支持多點(diǎn)通信,在接受模式下可以接收6 路不同通道的數據。也就是無(wú)線(xiàn)網(wǎng)絡(luò )的接收端可以接收6 個(gè)不同發(fā)送端的數據,發(fā)送端的數據是通過(guò)RFID 模塊獲得。
基于以上的討論,本文將給出一種基于CAN 總線(xiàn)和2.4G 無(wú)線(xiàn)網(wǎng)絡(luò )的新型RFID 收費系統。
2 硬件系統設計
2.1 系統拓撲結構和系統組成
2.1.1 系統拓撲結構
如圖1 所示,RFID設備的相關(guān)數據將通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò )傳送至CAN收發(fā)器,后者再將數據通過(guò)CAN總線(xiàn)傳送至PC機,PC 機采用帶有CAN接口的PCI-E擴展卡。此外,無(wú)線(xiàn)通訊芯片nRF24L01在接受模式下可以接收6路不同通道的數據,以此來(lái)實(shí)現一個(gè)CAN節點(diǎn)最多控制6 個(gè)RFID終端設備的數據傳送。在6個(gè)RFID收費終端不能滿(mǎn)足需求的情況下,可以添加更多的節點(diǎn),所有節點(diǎn)掛載在CAN總線(xiàn)上,通過(guò)CAN總線(xiàn),每個(gè)節點(diǎn)將數據傳送至PC端。

圖1:系統拓撲結構圖
本系統(CAN 節點(diǎn))有兩個(gè)子系統組成。B 子系統由單片機、RFID 模塊、無(wú)線(xiàn)模塊、看門(mén)狗、液晶屏、時(shí)鐘模塊、按鍵和EEPROM 組成。微控制器(MCU)控制RFID 模塊對Mifare 1 卡進(jìn)行讀寫(xiě)操作,無(wú)線(xiàn)模塊將有關(guān)的數據發(fā)送給A 子系統。A 子系統由單片機、無(wú)線(xiàn)模塊、看門(mén)狗和CAN 模塊組成。MCU 將經(jīng)由無(wú)線(xiàn)模塊接收到的數據通過(guò)CAN 模塊發(fā)送至PC 端。由于一個(gè)節點(diǎn)最多可以控制6 個(gè)RFID 設備終端,因此在一個(gè)完整的系統里,A 子系統只有1 個(gè),而B(niǎo) 子系統最多可以有6 個(gè)。

圖2:子系統A 組成框圖

圖3:子系統B 組成框圖。
微控制器選用STC89LE58RD+,它具有4 個(gè)8 位并行I/O 端口P0~P3,1 個(gè)4 位并行端口P4,32KB FLASHROM,1280 字節RAM,3 個(gè)定時(shí)器,8 個(gè)中斷源和4個(gè)中斷優(yōu)先級的中斷系統。其性能完全滿(mǎn)足設計所需。
[page]
2.3 CAN 模塊
CAN 總線(xiàn)的硬件實(shí)現選用飛利浦公司的SJA1000和PCA82C250。
2.3.1 SJA1000 芯片介紹
SJA1000 是一個(gè)獨立的 CAN 控制器。它支持PeliCAN 模式擴展功能(采用CAN2.0B 協(xié)議),具有11 位或 29 位標識符,64 字節的接收FIFO,具有仲裁機制和強大的檢錯能力等。
2.3.2 PCA82C250 芯片介紹
PCA82C250 是CAN 總線(xiàn)收發(fā)器,它主要是為汽車(chē)中高速通訊(高達 1Mbps)應用而設計。它可以抗寬范圍的工模干擾和電磁干擾(EMI),降低射頻干擾(RFI),具有熱保護功能。最多可以連接110 個(gè)節點(diǎn)。
2.3.3 硬件接口連接
如圖4,P1口作為復用的地址/數據總線(xiàn)連接SJA1000的AD口,P2.0和SJA1000的片選段CS相連,使得SJA1000作為單片機外圍存儲器映射的I/O器件。此外,SJA1000的RX0、TX0和PCA82C250的RXD、TXD相連。

圖4:SJA1000 和PCA82C250 接口連接示意圖
2.4.1 nRF24L01 芯片介紹
無(wú)線(xiàn)芯片選用nRF24L01.它是2.4GHz 無(wú)線(xiàn)射頻收發(fā)芯片,傳送速率高達2Mbps,支持125 個(gè)可選工作頻率,具有地址和CRC 校驗功能,提供SPI 接口。
有專(zhuān)用的中斷管腳,支持3 個(gè)中斷源,可向MCU 發(fā)出中斷信號。具有自動(dòng)應答功能,在確認收到數據后記錄地址,并以此地址為目標地址發(fā)送應答信號。支持ShockBurstTM 模式,在此模式下,nRF24L01 可以與低速MCU 相連。nRF24L01 在接收模式下可以接收6 路不同通道的數據。
2.4.2 nRF24L01 硬件接口連接
如圖5 所示,單片機通過(guò)模擬SPI 總線(xiàn)時(shí)序和nRF24L01 進(jìn)行通信。其外部中斷管腳IRQ 和單片機的P3.2(外部中斷0)相連。

圖5:nRF24L01 接口連接示意圖
2.5 RFID 模塊
2.5.1 MF RC500 芯片介紹。
2.5.2 MF RC500 硬件接口連接。
由圖6 所示, MCU 將MF RC500 中的寄存器作為外部RAM進(jìn)行訪(fǎng)問(wèn)。INT 管腳懸空,不使用中斷功能。

圖6:MF RC500 接口連接示意圖
3 軟件系統設計
在初始化單片機程序中,子系統A 外部中斷設置為低電平觸發(fā),子系統A 的中斷信號源由nRF24L01提供,當nRF24L01 收到數據后產(chǎn)生中斷信號,通知MCU 來(lái)讀取數據。子系統B 不使用中斷功能。
[page]
在初始化nRF24L01 程序中,子系統B 配置為發(fā)送模式,使用16 位CRC 校驗。使用自動(dòng)應答功能,數據通道0 被設置為接收應答信號,其數據通道0 的接收地址必須與發(fā)送端的地址相等,以此來(lái)保證能正確的收到應答信號。一個(gè)系統最多可以有六個(gè)子系統A 組成,這6 個(gè)子系統的發(fā)送地址不能重復。子系統A 配置為接收模式,使用16 位CRC 校驗,最多接收6 個(gè)通道的數據。這6 個(gè)接收地址和各子系統B 中的發(fā)送地址相等。
在初試化SJA1000 中,使用PliCAN 模式,波特率125Kbps,禁止接受和發(fā)送中斷;輸出控制寄存器配置如下:正常模式,TX 下拉,輸出控制極性。此外,需正確配置驗收代碼寄存器和驗收屏蔽寄存器,此配置用于CAN 總線(xiàn)仲裁功能的實(shí)現。
在初始化MF RC500 中,其主要設置如下:TX1和TX2 的輸出配置為13.56MHz 能量載波;解碼器的輸入源為內部解調器;使用Q 時(shí)鐘作為接收器時(shí)鐘;禁止發(fā)送和接收中斷;設置RxThreshold 寄存器值為0xFF,BitPhase 寄存器值為0xAD 等。
復位請求函數將在天線(xiàn)的有效范圍內搜索Mifare1 卡,如果有卡存在,將建立通信連接并讀取卡上的卡片類(lèi)型號TAGTYPE.防碰撞函數使MF RC500 在多張Mifare 1 卡選擇其中的一張??ㄟx擇函數能夠和已知序列號的卡進(jìn)行通信。認證函數將Mifare 1 卡上的密碼和MF RC500 的EEPROM 中的密鑰進(jìn)行匹配。
只有匹配正確后,才能進(jìn)行對卡的讀寫(xiě)操作。發(fā)送停機指令設置Mifare 1 卡為HALT MODE.CAN 函數用于將有關(guān)數據發(fā)送至PC 機。本次設計采用查詢(xún)方式以確保數據已經(jīng)發(fā)送。通過(guò)查詢(xún)狀態(tài)寄存器中的標志位TBS、TCS 和TS 即可確認是否數據發(fā)送完畢。類(lèi)似的,在無(wú)線(xiàn)函數中為確保數據已經(jīng)發(fā)送,通過(guò)查詢(xún)狀態(tài)寄存器中的TX_DS 即可。

圖7:子系統A 軟件流程

圖8:子系統B 軟件流程圖
首先,對RFID 模塊進(jìn)行了測試。將MIFARE 1卡放入天線(xiàn)有效范圍內,對該卡進(jìn)行讀寫(xiě)操作,并將相關(guān)數據顯示在液晶屏上。經(jīng)過(guò)該測試,RFID 模塊讀寫(xiě)正常。 隨后,測試該系統傳輸網(wǎng)絡(luò )的實(shí)時(shí)性,本文以溫度數據的無(wú)線(xiàn)傳輸進(jìn)行測試。測量溫度的裝置為DS18B20 單線(xiàn)溫度傳感器。將該溫度傳感器連接至子系統B 中,溫度傳感器每隔一秒對室內溫度采樣一次,微控制器讀取溫度數據并通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò )發(fā)送給A 子系統,A 子系統接收數據并通過(guò)CAN 總線(xiàn)發(fā)送至PC 端。
PC 端使用Visual Basic 6.0 編寫(xiě)上位機程序,上位機將溫度數據繪制成曲線(xiàn)并寫(xiě)入文本。溫度曲線(xiàn)如圖8 所示,其中溫度值的精度為1 攝氏度。通過(guò)對溫度曲線(xiàn)圖和文本數據的對比觀(guān)察,發(fā)現溫度數據無(wú)異常, 數據沒(méi)有出現丟失情況。

圖9:溫度曲線(xiàn)圖
本文利用了CAN 總線(xiàn)取代RS-485 總線(xiàn),克服了后者存在的缺點(diǎn)。同時(shí)還使用了無(wú)線(xiàn)技術(shù),在減少大量布線(xiàn)工作的同時(shí),充分利用了nRF24L01 多點(diǎn)通訊的功能。在系統搭建完成后,筆者對系統進(jìn)行了長(cháng)時(shí)間測試。測試結果表明:數據傳輸穩定,可靠,實(shí)時(shí)性高,克服了傳統基于RS485 總線(xiàn)設計的RFID 收費系統的缺陷,具有較強的使用價(jià)值。
相關(guān)閱讀:
RFID技術(shù)原理及其射頻天線(xiàn)設計
http://zzmyjiv.cn/rf-art/80005888
設計RFID系統需選擇合適的頻率
http://zzmyjiv.cn/emc-art/80019199
射頻識別技術(shù)原理分析
http://zzmyjiv.cn/rf-art/80013359