王向東 ,袁金云,宋大雷,王冬青
(1.中國海洋大學 工程學院,青島266100;2.青島大學 自動化工程學院,青島 266071)
在電子支付領域,為了實現自動支付管理,射頻卡讀寫器與各種控制器相結合的技術應用不斷增加。隨著可編程邏輯控制器PLC(programmable logic controller)技術在工業上的應用越來越廣泛,PLC與射頻卡讀寫器相結合進行數據通信進入自動化控制裝置領域可減少人工參與,提高自動化程度及工作效率。近年來,國內外許多學者對此作了相關研究。文獻[1-2]對Mifare系列射頻卡讀寫器進行了研制;文獻[3]對基于RFID技術的鐵路客票系統做了深入研究;文獻[4-5]對射頻技術的讀寫器設計及其安全性進行了研究。以上研究內容主要是針對射頻識別技術和相應的讀寫器的研究。文獻[6]利用協議宏實現了歐姆龍PLC與V600系列RFID讀寫器之間的通信;文獻[7]研究了三菱FX3u PLC與Siemens RF260讀寫器的通信;文獻[8]進行了基于Siemens PLC與IC卡讀寫器的干混奶粉配送控制系統的設計;文獻[9]對射頻識別技術作了分析,將Siemens PLC與射頻識別裝置的串行通訊應用在焦爐爐號識別中。可見,多數文獻介紹了Siemens PLC控制器與射頻卡讀寫器的通信。而在工業過程中ABB PLC占有不可或缺的地位,本文研究ABB公司PLC與射頻卡讀寫器的通信。選用ABB公司的PM564-TP-ETH型PLC與廣州思騰公司的ST-RF04系列桌面型射頻卡讀寫器通過ASCII通訊協議實現通信。ASCII串行通訊協議硬件連接簡單,協議簡單可靠,易于實現。
射頻卡讀寫器與PLC的通信系統由射頻卡、射頻卡讀寫器、PLC控制器組成,通信系統結構如圖1所示。其中射頻卡存放卡號、數據等,射頻卡讀寫器直接與PLC控制器上的RS485串行通信端口相連,完成射頻卡讀寫器與PLC控制器之間的數據交換。由PLC控制器根據控制的需求,通過讀寫器對射頻卡片內的信息進行讀或者寫操作。下文對系統的主要部分進行介紹。

圖1 通信系統結構Fig.1 Structure diagram of communication system
非接觸式 IC(integrated circuit card)卡通過射頻感應從讀寫器獲取能量,交換數據,故非接觸式IC卡又叫射頻卡。目前我國主要應用的射頻卡有PHILIPS公司的Mifare卡和ATMEL公司的Temic卡[10]。Mifare 1 S50卡是Mifare卡經典的型號,也是市面上的主流產品。Mifare 1 S50卡的容量為1 KB的 E2PROM,共有 16個扇區(0~15),每個扇區有 4塊(塊0~塊3),每一塊有16個字節,S50卡片以塊為存取單位,每個扇區都具有獨立的一組密碼及訪問控制。
射頻卡讀寫器模塊一般是由PHILIPS公司的MCM200和MCM500兩種核心芯片制成。本系統中的射頻卡讀寫器選用廣州思騰公司的ST-RF04系列桌面型射頻卡讀寫器,它是以MCM500為基礎來設計的,同時支持S50、S70非接觸IC卡,具有485通信接口,操作距離可達100 mm。射頻讀寫器通過RS485串行通信將接收到的數據傳送至PLC控制器。
AC500-eCo是ABB公司推出的一款高性能的緊湊型PLC,可擴展性強、安裝方便、應用靈活,是小型工業控制系統和機械設備中的不二選擇,可以完美地滿足客戶需求。AC500-eCo的CPU模塊有PM554和PM564兩種型號,本文PLC控制器選用PM564-TP-ETH CPU,集成有COM1接口、12路數字輸入/輸出、4路模擬量輸入/輸出,擁有128 KB程序內存。
ST-RF04讀寫器指令系統相當豐富,可以應用于多種工業控制場合。在與PLC通訊過程中常用到的通信命令代碼及其功能如表1所示。

表1 射頻卡讀寫器部分命令表Tab.1 Part command of the RFID card reader
ST-RF04讀寫器的內部含有微處理器芯片,能夠完成對射頻卡的讀取、寫入、通訊的任務。它的通訊端口為RS485串行接口,可以方便地與PLC的COM2串行端口進行數據通信,ST-RF04讀寫器的具體通訊參數設置如下:
*波特率:9600 b/s
*奇偶校驗:無
*數據位:8
*停止位:1
射頻卡讀寫器與PLC之間以ASCII(美國標準信息交換代碼)模式的報文格式傳送數據。數據以字節為單位進行傳送,每一報文最大允許傳送的數據大小為256個字節。因此,當通信傳送的數據超過256個字節時,可以將數據分多次進行傳送。當一次通信過程中傳送的數據少于256個字節時,通信格式如表2所示。ST-RF04射頻卡讀寫器發送報文的第一個字節通常是起始符A7,發送報文還包括報文的數據長度、命令字和異或校驗,每條發送報文以異或校驗字節結束。

表2 發送報文通訊格式Tab.2 Send message communication format
當發送報文發送完所有數據后,射頻卡讀寫器返回接收報文至PLC。接收報文以起始符A7開頭,包括數據長度、狀態字、命令字、接收數據和異或校驗,其通訊格式如表3所示。接收報文一次性最多可以接收256個字節的有效數據。

表3 接收報文通訊格式Tab.3 Receive message communication format
PM564-TP-ETH PLC集成有COM1和COM2(可選)2個串行通信接口[11],且均支持ASCII通訊協議。本系統選用COM2口使用RS485屏蔽雙絞線與射頻卡讀寫器相連接。PM564-TP-ETH CPU模塊的COM2接口內部集成了1個上拉電阻和1個下拉電阻,需通過短接COM2的端子1-2和3-4將其激活。射頻卡讀寫器與PLC控制器通信時采用ASCII通訊方式,傳輸速率為9600 b/s。本文所設計的射頻卡讀寫器與PLC通訊端口接線如圖2所示。

圖2 射頻卡讀寫器與PLC接線Fig.2 Connection between RFID card reader and PLC
在充電樁收費管理系統中,管理人員首先通過射頻卡讀寫器將空白射頻卡升級為充電卡,然后對充電卡進行充值后才可應用到充電樁收費管理系統中。當用戶通過裝有射頻卡讀寫器的充電樁消費時,PLC控制器在最后會扣除相應費用并寫入到用戶相應的射頻卡卡片中。用戶刷卡消費過程的程序流程如圖3所示。

圖3 用戶刷卡消費程序流程Fig.3 Flow chart of user payment management
程序的編寫包括通訊參數設置和編寫梯形圖程序兩部分,下面具體介紹通訊參數的設置和程序流程中的扣款部分程序的編寫。
硬件連接好后,要實現射頻卡讀寫器與PLC之間的通信,雙方必須采用統一的通訊參數,如相同的波特率、數據位、停止位和校驗方式等。PLC的通訊方式和基本通訊參數在PLC的編程軟件的組態中設定[12]。
在編程軟件設備界面下雙擊設備樹中COM2-ASCII,右側出現ASCII參數設置界面,對于RS485通信方式,RTS控制器必須設置為 “報文”(Telegram);報文尾綴選擇設置為字符超時;檢查和設置為XOR。其他與通訊有關的參數如波特率、奇偶性、數據位、停止位與射頻卡讀寫器的通訊參數一致,分別設置為 9600 b/s、無、8、1,具體的通訊參數配置如圖4所示。

圖4 系統通訊參數配置Fig.4 System communication parameter configuration
根據上述通信連接的硬件選擇,在基于串口的ASCII通訊過程中,需要編制數據發送和接收程序。AC500為用戶提供了2個ASCII通訊功能庫ASCII_AC500_V10.LIB:COM_SEND和COM_REC,功能塊COM_SEND用于通過串行口發送數據,功能塊COM_REC用于通過串行口接收數據。
在充電樁收費管理系統中,為了保證能夠正常順利地發送數據,一次所發數據功能塊的長度不超過256個字節。報文較長的數據,使用了多個COM_SEND功能塊逐個發送,而不考慮各自的DONE輸出狀態。由于使用了多個COM_REC功能塊,為了避免數據信息的丟失、錯誤處理或者無法處理,只能讓一個COM_REC功能塊在同一時間接收完報文,并且發出接收過程結束的信號之后下一個COM_REC功能塊才能被啟用,而且在一個COM_REC功能塊工作的時候,其余所有功能塊應處于非激活狀態。COM_REC功能塊能接收的數據長度最多為256個字節。
在充電樁收費管理系統中,軟件程序采用梯形圖語言進行編寫。PLC根據COM_SEND功能塊控制字,由EN上升沿觸發串口通訊,向射頻卡讀寫器發送數據讀取請求報文。當發送數據完全結束后,EN上升沿觸發串口通訊,對射頻卡讀寫器發出回傳數據的接收命令,COM_REC功能塊工作,將接收數據存放在相應數組中。當PLC接收到從系統傳來的扣款金額數據時,PLC控制器執行向射頻卡讀寫器發送扣款指令并按照程序流程向下一步步執行。如果電子錢包扣款并寫入射頻卡E2PROM成功,則表明系統從射頻卡中扣款成功,否則扣款不成功,扣款部分程序結束。若想再一次扣款,需重新刷卡并對卡片進行驗證。
射頻卡讀寫器與PLC通信的過程實際上是多組收發功能塊問答的過程,射頻卡與讀寫器的問答必須在每步執行成功后才能執行下一步。發送終止卡操作命令后,想再次對該卡進行讀寫,必須先將該卡移出感應區后再放入感應區。在同一扇區內,可多次對該扇區內的數據進行讀寫,若在完成對一個扇區的讀寫后,想再對另一個扇區進行操作,必須重新對該卡進行認證。
本文通過分析Mifare 1 S50卡的電氣特點及特性和射頻卡讀寫器的指令集和通訊協議,設計了一種基于射頻卡讀寫器與PLC控制器的充電樁收費管理通信系統,根據PLC控制器的特點及射頻卡讀寫器的通訊方式,采用RS485異步半雙工通信模式,運用ASCII通訊協議,實現了基于射頻卡讀寫器與PLC的通信。測試結果表明本文所提出的通信方法可以實現PLC控制器通過射頻卡讀寫器讀取射頻卡中的卡號、余額、數據等信息,并能把電子金額加款或減款到射頻卡中。該通信方法對以后ABB PLC與射頻卡讀寫器的通信控制程序的編寫有一定的參考價值,且在PLC的實際應用中具有一定的指導意義。
[1]李建軍,周曉中,桂衛華.Mifare系列射頻卡讀寫器的研制[J].電氣應用,2006(1):117-121.
[2]曾孝平,任家峪,熊東.基于RFID的非接觸式IC卡讀寫器設計[J].計算機測量與控制,2010,18(10):2357-2359.
[3]沈騫.基于RFID技術的鐵路客票系統研究[D].北京:北京交通大學,2008.
[4]高麗霞,包勇.基于射頻技術的讀寫器設計及其安全性研究[J].自動化與儀器儀表,2008(2):23-26.
[5]王戰林,孫波,謝亞南,等.東北師大校園身份識別卡系統的設計與實踐[J].現代圖書情報技術,2004(4):21-23.
[6]王偉,王鳳杰.使用協議宏實現PLC與RFID之間的通信[J].電氣時代,2008(3):13-15.
[7]雷翔霄,唐小梅.三菱FX3u PLC與Siemens RF260通信的實現[J].長沙民政職業學院學報,2014,21(3):136.
[8]韓金枝,張勇,李方濤,等.基于PLC和IC卡的干混奶粉配送控制系統[J].寧波職業技術學院學報,2010,14(5):5-7.
[9]鄧志輝,呂洋,汪琴芳,等.射頻識別裝置與PLC之間的串行通訊在焦爐爐號識別中的應用[J].安徽工業大學學報,2006,23(4):433-436.
[10]陽春華,闕秋根.非接觸式e5551讀寫器的開發[J].電子技術應用,2003,29(8):15-18.
[11]北京ABB電氣傳動系統有限公司.AC500-eCo使用手冊[M].北京:ABB(中國)電氣傳動系統有限公司,2011.
[12]Matthias Seitz.可編程序控制器應用教程[M].2版.北京:機械工業出版社,2009.