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