王向东 ,袁金云,宋大雷,王冬青
(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.