- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于CAN总线的PC与RFID读写器通信实现
制衣生产线和很多其他工业生产线一样,每条流水线上有几个、几十个甚至更多的加工站点。为了在这种多站点生产线上应用RFID技术,一般需要在每一个工作站点部署一到两个RFID读写器(Reader)用以控制各个工作站点的任务调度,实现各工作站点和工作人员的自动管理。然而,由于工作站点的个数较多,生产线监控管理上位机(Pc)还要实现各个工作站点的实时信息采集和监控,这就要求PC与各个工作站点的RFID读写器之间实现可靠的实时通信。为此,本文提出了用CAN总线实现PC与RFID读写器通信的方案。
1 CAN总线与RS485总线
RS485总线曾经在工业控制系统的发展过程中发挥了重要作用。但是,随着工业控制系统功能分散化、任务多元化、整体复杂化程度的提高,工业控制系统对于可靠性、实时性、灵活性的要求也越来越高,工业数据总线领域中原有的RS485总线通信标准已经不能满足工业过程控制和制造业自动化的需要。在这种情况下,现场总线(Field Bus)技术以其自身的高性价比而成为了工业数据领域中的一种新通信方式。控制局域网络(Control Area Network,CAN)总线是目前业界公认的最有前途的几种现场总线之一。
RS485总线的局限性主要表现在:(1)RS485总线可以互联的设备节点数一般不超过32个,这显然不能够满足多点工作站的需求和生产线的规模扩展的需要,比如每条制衣生产线的工作站点很多都在40个以上;(2)RS485总线多为查询工作方式,由上位机定时轮询各个工作站点,效率低,实时性差;(3)RS485总线构成的通信系统可靠性不好,当由于某种原因使得两个或更多从节点同时向总线发送数据时,将导致通信混乱甚至RS485驱动损坏;(4)RS485总线通信过程实现复杂,由于RS485仅仅是一种电气协议规定,并没有实现可靠的通信方法,这给通信软件开发与程序调度实现增加了额外负担。
CAN总线是20世纪80年代德国Bosch公司为了解决现代汽车中众多控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,其对应的国际标准ISO11898已经在1993年11月由ISO组织颁布。与RS485总线相比较,CAN总线的主要技术优势表现在:(1)CAN总线可同时互联的节点数目多,实际可连接1 10个节点;(2)CAN总线用数据块编码的方式替代了节点地址编码,各节点通过滤波的方式实现多地址帧传送;实现了面向数据而不是节点的通信,方便系统配置;(3)CAN 总线采用基于节点优先权设定的非破坏性总线仲裁技术,有效避免了总线上的数据传输冲突,使网络在高负载运行的情况下也不会出现网络瘫痪的情况,可靠性高;(4)CAN 总线有自己的用户层可靠通信协议和数据错误自诊断功能,采用循环冗余校验判断报文是否有传输错误,采用8B数据段区域,既满足了工业领域中控制命令、数据传输等的一般要求,又保证了通信的实时性。这不仅方便了上位机软件开发,还有利于系统的稳定可靠运行。
2通信实现的系统结构
图1显示了使用USB—CAN智能转换卡连接PC与RFID读写器的生产线控制系统结构。在这一系统中,USB—CAN智能转换卡是上位机PC 采集和发送信息的通道接13,USB—CAN 智能转换卡下端通过双绞线连接各个控制节点— — RFID读写器。RFID读写器通过延长线连接的天线读取电子标签信息,经过RFID读写器处理后再经过CAN总线传送到上位机处理,同时通过CAN总线接收上位机的各种控制命令和信息提示。上位机负责整个系统的监控和管理,其控制信息经过CAN总线而传送到RFID读写器。
图1应用CAN总线连接PC与RFID读写器的系统结构
2.1 CAN总线通信中应该注意的问题
(1)USB—CAN 智能转换卡所支持的最扩展帧转换率为5000帧/s,如果是标准帧或者请求帧,其速率会更快。在使用USB—CAN智能转换卡实现CAN总线与上位机的连接时要充分考虑节点的规模和应用中的最大的瞬间数据传输总量,以保证系统的实时性和可靠性。
(2)上位机PC中USB—CAN设备的驱动程序安装,不同于RS485总线和CAN/RS232接13卡,USB接13需要安装USB—CAN设备自带的设备驱动程序才能正常工作。
(3)CAN总线终端匹配电阻的连接,为了增强CAN总线通信的可靠性,CAN总线网络的两个断电通常要连接两个终端匹配电阻。匹配电阻值的大小根据CAN总线网络使用的传输介质的阻抗特性而定。系统中采用的是阻抗特性为120欧姆的双绞线,连接方式如图2所示。
图2用双绞线连接的CAN总线网络
2.2通信协议说明
CAN总线的ISO标准中规定了自己的通信协议格式,在这个应用中为使用方便并满足更多节点扩展的需要,信息帧统一采用符合CAN2.0B协议(表1)实现系统中的信息传输。与RFID读写器通信的协议帧的意义表示(表2)以及与CAN总线协议扩展帧的对应解释如下,其中表1中x表示CAN协议中的保留位。
表1 CAN总线CAN2.0B协议奠结构
表2 RFID通信协议奠的规定
在RFID通信协议帧的规定中,信息被分为4个域(表1),其中,信号类型域用来表示信息的传输方向,即是上位机发送到RFID读写器还是相反, 占用CAN2.0协议扩展帧数据域的第1个字节(字节6)。站点域,即报文识别码区域,总共有4个字节(29位二进制数+3位保留位,字节2~5),此处采用报文识别码的前两个字节作为目的地址字节,作为识别符参与滤波的有效部分,以达到表示每个工作站的目的地址的作用;采用后两个字节的13位二进制数表示信息的来源地址,它们不参与滤波;通信中采用的是数据帧,而非远程帧,所以数据域的长度为1-8个字节,由CAN2.0协议扩展帧中的DLC区域表示;规定中的数据域实际上只剩下7个字节(字节7—13),用以表示通信中的命令或信息内容。这里的信息对应内容即是CAN 总线通信协议帧解析时,程序要做的工作。
2.3 USB-CAN智能转换卡与上位机PC通信的软件实现
以中科院自动化所开发的手操器式RFID读写器作为终端通信节点,以某公司生产的USBCAN—I型USB—CAN转换接13卡作为连接PC 与CAN 总线的硬件设备,基于Microsoft.NET 2003的MFC开发环境,本文实现了基于CAN总线的PC与多RFID读写器之间的通信。在上位机PC要实现的功能中,首先是要配置CAN总线通信的相关参数,如定时器设置、滤波方式、工作模式等,并初始化USB—CAN智能转换卡,然后才可以启动USB—CAN设备。图3显示了上位机PC与RFID读写器通信过程操作的主要流程。
图3上位机PC与USB-CAN通信主要流程
该流程中,信息的读取解析与发送过程是通信的核心部分,其相应的USB 13监听线程程序的说明如下:
该段程序中协议规定的命令类型解析部分和数据内容处理部分是PC实现与RFID读写器通信的核心。程序实现时应特别注意协议帧中保留位的处理方法。在接收到一帧信息时报文识别码区域共占用4个字节,但是字节5低三位作为保留位而没有使用,因此解析字节2~字节5时应首先将这4个字节的内容右移3位去掉保留位的内容,然后处理报文识别码的真正内容,否则就会解析出错。
该段程序在确认相应的命令类型的基础之上,对接收到的各种数据信息作出进一步解析和响应(在ProcessData(、、、 )函数中实现)。ProcessData(⋯ )函数所完成的任务,要根据不同工程中规定的协议意义做出解析和响应。比如,在本文的通信中把十六进制的“AABB”放入扩展帧中的字节7-13中表示上位机的握手查询命令,而如果接收到的帧中7~13字节的内容是十六进制的“BB AA+站点当前接入的设备ID”,则表示RFID读写器的握手应答信息。
3结论
在介绍了RFID技术的一些应用后,针对生产线上几十个RFID读写器的应用情况,对RS485总线和CAN总线的关键技术特性作出了详细的对比,给出了一种基于CAN总线的PC与多RFID读写器通信的硬件结构和软件实现的关键部分说明。在RFID技术广泛应用的今天,这样一种基于CAN总线的PC与多RFID读写器的连接通信方式对于促进RFID技术在工业自动化领域中的应用具有积极意义。