基于CAN總線的PC與RFID讀寫器通信實(shí)現(xiàn)
射頻識別(Radio Frequency Identification,RFID)是一種非接觸的無線自動識別技術(shù),其基本原理是利用射頻信號和空間耦合(電感耦合或電磁耦合)傳輸特性實(shí)現(xiàn)對被識別物體的自動識別⋯。近年來,RFID技術(shù)迅速發(fā)展,被廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)、體育休閑、交通管理和防偽防盜等眾多領(lǐng)域。根據(jù)RFID應(yīng)用的具體特點(diǎn),本文以制衣流程過程為基礎(chǔ),提出了一種RFID技術(shù)在制造業(yè)生產(chǎn)流水線上的應(yīng)用通信方案及其詳細(xì)實(shí)現(xiàn)。
制衣生產(chǎn)線和很多其他工業(yè)生產(chǎn)線一樣,每條流水線上有幾個、幾十個甚至更多的加工站點(diǎn)。為了在這種多站點(diǎn)生產(chǎn)線上應(yīng)用RFID技術(shù),一般需要在每一個工作站點(diǎn)部署一到兩個RFID讀寫器(Reader)用以控制各個工作站點(diǎn)的任務(wù)調(diào)度,實(shí)現(xiàn)各工作站點(diǎn)和工作人員的自動管理。然而,由于工作站點(diǎn)的個數(shù)較多,生產(chǎn)線監(jiān)控管理上位機(jī)(Pc)還要實(shí)現(xiàn)各個工作站點(diǎn)的實(shí)時信息采集和監(jiān)控,這就要求PC與各個工作站點(diǎn)的RFID讀寫器之間實(shí)現(xiàn)可靠的實(shí)時通信。為此,本文提出了用CAN總線實(shí)現(xiàn)PC與RFID讀寫器通信的方案。
1 CAN總線與RS485總線
RS485總線曾經(jīng)在工業(yè)控制系統(tǒng)的發(fā)展過程中發(fā)揮了重要作用。但是,隨著工業(yè)控制系統(tǒng)功能分散化、任務(wù)多元化、整體復(fù)雜化程度的提高,工業(yè)控制系統(tǒng)對于可靠性、實(shí)時性、靈活性的要求也越來越高,工業(yè)數(shù)據(jù)總線領(lǐng)域中原有的RS485總線通信標(biāo)準(zhǔn)已經(jīng)不能滿足工業(yè)過程控制和制造業(yè)自動化的需要。在這種情況下,現(xiàn)場總線(Field Bus)技術(shù)以其自身的高性價(jià)比而成為了工業(yè)數(shù)據(jù)領(lǐng)域中的一種新通信方式。控制局域網(wǎng)絡(luò)(Control Area Network,CAN)總線是目前業(yè)界公認(rèn)的最有前途的幾種現(xiàn)場總線之一。
RS485總線的局限性主要表現(xiàn)在:(1)RS485總線可以互聯(lián)的設(shè)備節(jié)點(diǎn)數(shù)一般不超過32個,這顯然不能夠滿足多點(diǎn)工作站的需求和生產(chǎn)線的規(guī)模擴(kuò)展的需要,比如每條制衣生產(chǎn)線的工作站點(diǎn)很多都在40個以上;(2)RS485總線多為查詢工作方式,由上位機(jī)定時輪詢各個工作站點(diǎn),效率低,實(shí)時性差;(3)RS485總線構(gòu)成的通信系統(tǒng)可靠性不好,當(dāng)由于某種原因使得兩個或更多從節(jié)點(diǎn)同時向總線發(fā)送數(shù)據(jù)時,將導(dǎo)致通信混亂甚至RS485驅(qū)動損壞;(4)RS485總線通信過程實(shí)現(xiàn)復(fù)雜,由于RS485僅僅是一種電氣協(xié)議規(guī)定,并沒有實(shí)現(xiàn)可靠的通信方法,這給通信軟件開發(fā)與程序調(diào)度實(shí)現(xiàn)增加了額外負(fù)擔(dān)。
CAN總線是20世紀(jì)80年代德國Bosch公司為了解決現(xiàn)代汽車中眾多控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,其對應(yīng)的國際標(biāo)準(zhǔn)ISO11898已經(jīng)在1993年11月由ISO組織頒布。與RS485總線相比較,CAN總線的主要技術(shù)優(yōu)勢表現(xiàn)在:(1)CAN總線可同時互聯(lián)的節(jié)點(diǎn)數(shù)目多,實(shí)際可連接1 10個節(jié)點(diǎn);(2)CAN總線用數(shù)據(jù)塊編碼的方式替代了節(jié)點(diǎn)地址編碼,各節(jié)點(diǎn)通過濾波的方式實(shí)現(xiàn)多地址幀傳送;實(shí)現(xiàn)了面向數(shù)據(jù)而不是節(jié)點(diǎn)的通信,方便系統(tǒng)配置;(3)CAN 總線采用基于節(jié)點(diǎn)優(yōu)先權(quán)設(shè)定的非破壞性總線仲裁技術(shù),有效避免了總線上的數(shù)據(jù)傳輸沖突,使網(wǎng)絡(luò)在高負(fù)載運(yùn)行的情況下也不會出現(xiàn)網(wǎng)絡(luò)癱瘓的情況,可靠性高;(4)CAN 總線有自己的用戶層可靠通信協(xié)議和數(shù)據(jù)錯誤自診斷功能,采用循環(huán)冗余校驗(yàn)判斷報(bào)文是否有傳輸錯誤,采用8B數(shù)據(jù)段區(qū)域,既滿足了工業(yè)領(lǐng)域中控制命令、數(shù)據(jù)傳輸?shù)鹊囊话阋?,又保證了通信的實(shí)時性。這不僅方便了上位機(jī)軟件開發(fā),還有利于系統(tǒng)的穩(wěn)定可靠運(yùn)行。
2通信實(shí)現(xiàn)的系統(tǒng)結(jié)構(gòu)
圖1顯示了使用USB—CAN智能轉(zhuǎn)換卡連接PC與RFID讀寫器的生產(chǎn)線控制系統(tǒng)結(jié)構(gòu)。在這一系統(tǒng)中,USB—CAN智能轉(zhuǎn)換卡是上位機(jī)PC 采集和發(fā)送信息的通道接13,USB—CAN 智能轉(zhuǎn)換卡下端通過雙絞線連接各個控制節(jié)點(diǎn)— — RFID讀寫器。RFID讀寫器通過延長線連接的天線讀取電子標(biāo)簽信息,經(jīng)過RFID讀寫器處理后再經(jīng)過CAN總線傳送到上位機(jī)處理,同時通過CAN總線接收上位機(jī)的各種控制命令和信息提示。上位機(jī)負(fù)責(zé)整個系統(tǒng)的監(jiān)控和管理,其控制信息經(jīng)過CAN總線而傳送到RFID讀寫器。
圖1應(yīng)用CAN總線連接PC與RFID讀寫器的系統(tǒng)結(jié)構(gòu)
2.1 CAN總線通信中應(yīng)該注意的問題
(1)USB—CAN 智能轉(zhuǎn)換卡所支持的最擴(kuò)展幀轉(zhuǎn)換率為5000幀/s,如果是標(biāo)準(zhǔn)幀或者請求幀,其速率會更快。在使用USB—CAN智能轉(zhuǎn)換卡實(shí)現(xiàn)CAN總線與上位機(jī)的連接時要充分考慮節(jié)點(diǎn)的規(guī)模和應(yīng)用中的最大的瞬間數(shù)據(jù)傳輸總量,以保證系統(tǒng)的實(shí)時性和可靠性。
(2)上位機(jī)PC中USB—CAN設(shè)備的驅(qū)動程序安裝,不同于RS485總線和CAN/RS232接13卡,USB接13需要安裝USB—CAN設(shè)備自帶的設(shè)備驅(qū)動程序才能正常工作。
(3)CAN總線終端匹配電阻的連接,為了增強(qiáng)CAN總線通信的可靠性,CAN總線網(wǎng)絡(luò)的兩個斷電通常要連接兩個終端匹配電阻。匹配電阻值的大小根據(jù)CAN總線網(wǎng)絡(luò)使用的傳輸介質(zhì)的阻抗特性而定。系統(tǒng)中采用的是阻抗特性為120歐姆的雙絞線,連接方式如圖2所示。
圖2用雙絞線連接的CAN總線網(wǎng)絡(luò)
2.2通信協(xié)議說明
CAN總線的ISO標(biāo)準(zhǔn)中規(guī)定了自己的通信協(xié)議格式,在這個應(yīng)用中為使用方便并滿足更多節(jié)點(diǎn)擴(kuò)展的需要,信息幀統(tǒng)一采用符合CAN2.0B協(xié)議(表1)實(shí)現(xiàn)系統(tǒng)中的信息傳輸。與RFID讀寫器通信的協(xié)議幀的意義表示(表2)以及與CAN總線協(xié)議擴(kuò)展幀的對應(yīng)解釋如下,其中表1中x表示CAN協(xié)議中的保留位。
表1 CAN總線CAN2.0B協(xié)議奠結(jié)構(gòu)
表2 RFID通信協(xié)議奠的規(guī)定
在RFID通信協(xié)議幀的規(guī)定中,信息被分為4個域(表1),其中,信號類型域用來表示信息的傳輸方向,即是上位機(jī)發(fā)送到RFID讀寫器還是相反, 占用CAN2.0協(xié)議擴(kuò)展幀數(shù)據(jù)域的第1個字節(jié)(字節(jié)6)。站點(diǎn)域,即報(bào)文識別碼區(qū)域,總共有4個字節(jié)(29位二進(jìn)制數(shù)+3位保留位,字節(jié)2~5),此處采用報(bào)文識別碼的前兩個字節(jié)作為目的地址字節(jié),作為識別符參與濾波的有效部分,以達(dá)到表示每個工作站的目的地址的作用;采用后兩個字節(jié)的13位二進(jìn)制數(shù)表示信息的來源地址,它們不參與濾波;通信中采用的是數(shù)據(jù)幀,而非遠(yuǎn)程幀,所以數(shù)據(jù)域的長度為1-8個字節(jié),由CAN2.0協(xié)議擴(kuò)展幀中的DLC區(qū)域表示;規(guī)定中的數(shù)據(jù)域?qū)嶋H上只剩下7個字節(jié)(字節(jié)7—13),用以表示通信中的命令或信息內(nèi)容。這里的信息對應(yīng)內(nèi)容即是CAN 總線通信協(xié)議幀解析時,程序要做的工作。
2.3 USB-CAN智能轉(zhuǎn)換卡與上位機(jī)PC通信的軟件實(shí)現(xiàn)
以中科院自動化所開發(fā)的手操器式RFID讀寫器作為終端通信節(jié)點(diǎn),以某公司生產(chǎn)的USBCAN—I型USB—CAN轉(zhuǎn)換接13卡作為連接PC 與CAN 總線的硬件設(shè)備,基于Microsoft.NET 2003的MFC開發(fā)環(huán)境,本文實(shí)現(xiàn)了基于CAN總線的PC與多RFID讀寫器之間的通信。在上位機(jī)PC要實(shí)現(xiàn)的功能中,首先是要配置CAN總線通信的相關(guān)參數(shù),如定時器設(shè)置、濾波方式、工作模式等,并初始化USB—CAN智能轉(zhuǎn)換卡,然后才可以啟動USB—CAN設(shè)備。圖3顯示了上位機(jī)PC與RFID讀寫器通信過程操作的主要流程。
圖3上位機(jī)PC與USB-CAN通信主要流程
該流程中,信息的讀取解析與發(fā)送過程是通信的核心部分,其相應(yīng)的USB 13監(jiān)聽線程程序的說明如下:
該段程序中協(xié)議規(guī)定的命令類型解析部分和數(shù)據(jù)內(nèi)容處理部分是PC實(shí)現(xiàn)與RFID讀寫器通信的核心。程序?qū)崿F(xiàn)時應(yīng)特別注意協(xié)議幀中保留位的處理方法。在接收到一幀信息時報(bào)文識別碼區(qū)域共占用4個字節(jié),但是字節(jié)5低三位作為保留位而沒有使用,因此解析字節(jié)2~字節(jié)5時應(yīng)首先將這4個字節(jié)的內(nèi)容右移3位去掉保留位的內(nèi)容,然后處理報(bào)文識別碼的真正內(nèi)容,否則就會解析出錯。
該段程序在確認(rèn)相應(yīng)的命令類型的基礎(chǔ)之上,對接收到的各種數(shù)據(jù)信息作出進(jìn)一步解析和響應(yīng)(在ProcessData(、、、 )函數(shù)中實(shí)現(xiàn))。ProcessData(⋯ )函數(shù)所完成的任務(wù),要根據(jù)不同工程中規(guī)定的協(xié)議意義做出解析和響應(yīng)。比如,在本文的通信中把十六進(jìn)制的“AABB”放入擴(kuò)展幀中的字節(jié)7-13中表示上位機(jī)的握手查詢命令,而如果接收到的幀中7~13字節(jié)的內(nèi)容是十六進(jìn)制的“BB AA+站點(diǎn)當(dāng)前接入的設(shè)備ID”,則表示RFID讀寫器的握手應(yīng)答信息。
3結(jié)論
在介紹了RFID技術(shù)的一些應(yīng)用后,針對生產(chǎn)線上幾十個RFID讀寫器的應(yīng)用情況,對RS485總線和CAN總線的關(guān)鍵技術(shù)特性作出了詳細(xì)的對比,給出了一種基于CAN總線的PC與多RFID讀寫器通信的硬件結(jié)構(gòu)和軟件實(shí)現(xiàn)的關(guān)鍵部分說明。在RFID技術(shù)廣泛應(yīng)用的今天,這樣一種基于CAN總線的PC與多RFID讀寫器的連接通信方式對于促進(jìn)RFID技術(shù)在工業(yè)自動化領(lǐng)域中的應(yīng)用具有積極意義。