您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 生产线嵌入式RFID终端读写器设计DesignofRF
生产线嵌入式RFID终端读写器设计姜兆宁丁香乾李谦(中国海洋大学,山东青岛,266071)摘要:RFID技术由于其可靠性高、适应环境广、总体成本低已经在制造业信息化和物流领域发挥了巨大作用,如何更有效,精确的读取RFID信息成为影响RFID在工业生产线上大量应用的关键,本文论述了借助于ARM体系平台和Linux操作系统,在硬件和软件上实现生产线RFID终端读写器的设计方案,样机已经在冰箱生产线上进行了实验,并取得较好的效果。关键词:ARM,嵌入式,射频识别,生产线中图分类号:TP335;TP274文献标识码:ADesignofRFIDterminalreaderforproductlinesJiangZhaoningDingXiangqianLiQian(OceanUniversityofChina,Qingdao,Shandong,China266071)Abstract:AsRFIDtechnologyacceptedworldwide,ItisrecognizedpromisinginReducingcostandimprovingautomationlevel.SohowtoreadRFIDTaganditsinformationmoreeffectivelyandpreciselybecameakeyfactorindeployingRFIDtechnologyinproductlines.BasedonEmbeddedSystemstechnologyandLinux,wedevelopedaterminaltoreadRFIDtagsandprocessinformationatfirsthand.theprototypehasbeentestedinrefrigeratorproductlineandpreformedwell.Keyword:ARM,EmbeddedSystem,Linux,RFIDChineseLibraryClassification:TP335;TP274Documentcode:A一、研究背景及设计方案RFID是射频识别技术(RadioFrequencyIdentification)的英文缩写,射频识别技术是一种非接触式的自动识别技术,它使用射频电磁波通过空间耦合(交变磁场或电磁场)在阅读器和要进行识别、分类和跟踪的移动物品(物品上附着有RFID标签)之间实现无接触信息传递并通过所传递的信息达到识别目的的技术。RFID是一种自动识别和数据捕获技术,可以提供无人看管的自动监视与报告作业。RFID阅读器的工作原理如下:阅读器通过天线发送出一定频率的射频信号,当标签进入磁场时产生感应电流从而获得能量,发送出自身编码和相关信息被读取器读取并解码后送回到计算机中进行有关处理,。识别工作无须人工干预,可工作于各种恶劣环境。高性能的RFID读写器可以同时识别多个物体[1]。在工业生产线RFID系统中,由于生产线现场的工作环境复杂,各类电磁干扰源非常多,采集点的数量多,而通常的RFID读写器,由于采用单片机为主控制器,运算能力弱,本地不具备数据分析和存储能力,不具备较强的抗干扰能力,对后台系统数据处理能力要求较高,而在工业生产线上,如果直接将所有采集点(通常多达数百点)所读取的信息直接传回服务器,由于要在服务器上进行繁重的数据分析和干扰排除,过大的数据量和计算量很容易造成服务器端的信息堵塞,进而影响系统的稳定性。所以现有的解决方案往往直接使用价格昂贵的工业PC机完成前端工作,但这样无疑大大增加了总体的部署成本。本系统的设计思路见图(1)通过功能强大的RFID嵌入式终端,直接在本地完成复杂的标签读取,数据纠错,干扰排除,信息提取和数据保存等工作,仅将有效信息通过网络传输给后台服务器,这样就大大降低网络通信的开销,降低了服务器的资源占用,从而提高了系统整体的运行效率,提高了稳定性,增加了业务的灵活性。二、系统的总体硬件设计为了达到设计功能和环境需求,本系统底板采用了PCB6层设计,机壳加装了电磁屏蔽网,另外专门配备了PCMCIA接口用来外接RFID读写模块,采用的主要元件如下:①微处理器(MPU):针对终端需要高速运算和数据库操作的需要,并考虑到系统外围设备的需求情况,本系统采用ARM9核的SAMSUNGS3C2410处理器。昀高主频可达203MHz[1]。②SDRAM存储部分采用两颗Hynix公司的HY57V561620CT内存,大小为32M。③FLASH存储器采用SAMSUNG公司的K9F1208UOMNandFlash,大小为64M。④RFID阅读器模块:采用了WJ公司的MPR6000系列产品,PCMCIA接口。⑤网络通信模块:采用了Realtek8039芯片,支持10M/100M网络通信。三、系统的软件系统介绍系统的软件部分主要由Linux基本系统、RFID标签识别解析模块、嵌入式数据库操作模块、网络通信等模组成,软件模块关系如图(2),下面简单介绍一下各模块的功能和主要函数。①Linux基本系统由于Linux成本低,代码开放,稳定性高,多线程,支持USB、Flash等多种外设,底层支持TCP/IP网络,故本系统将其移植到ARM9上作为操作系统,内核版本号为2.4.1。由于文件系统涉及数据库文档保存,故采用了YAFFS文件系统,另外就是针对本系统采用的外设和功能对Linux内核作了相应裁减,以降低其内存RFID读写模块图(1)RFID技术应用于生产线总体示意天线嵌入式终端后台数据服务器RFID读写模块天线嵌入式终端多个其他终端…PCMCIA总线100MLAN模数变换、标签信息读取排除干扰本地计算数据存储RFID标签数据包验证和解析数据本地存储数据网络传输UART-over-PCMCIA协议CRC计算比较,数据解包数据库SQL操作客户端Socket操作图(2)软件系统流程RFID数据包读入占用。提高速度。[2]②RFID标签识别解析模块在设计中采用了WJ公司PCMCIA接口的RFID读写器模块MPR6000,该模块通过UART-over-PCBUS总线与嵌入式主机进行数据通信,其通信的特点如下[3]:遵循命令-回复的通信模式,首先由系统向RFID读写模块发命令帧,读写模块在识别到通信包头的时候读取命令字,并进行CRC纠错,如果错误的话则忽略该帧,有效地话则执行相关指令,并将读取的标签信息及结果编成返回数据帧传给系统,系统收到通信帧时也同样进行包头识别和CRC纠错,如正确的话就进行解包并取得标签相关信息。命令包的格式如下开始位长度位命令字天线号功率过滤码CRC纠错位命令帧范例样本如下:01000D11001E011830182EB769CC通过解包后表示如下内容:从一号天线,以1E的功率,读取过滤码(即标签前几位的ID号)为30182EB7的RFIDEPCClass0标签,帧长度为0D,CRC纠错码为69CC。返回帧的格式如下开始位长度位状态字标签数标签1标签..N..CRC纠错位返回帧范例样本如下:010011010130182EB72000000000000074F6通过解包后表示如下内容:读取到一个96bit的EPC标签,标签ID为30182EB72000000000000000,读取操作完成,数据帧长度为11,CRC纠错码为74F6。针对通信帧的特点设计的Linux平台驱动软件由以下几个主要的子函数组成:1、unsignedshortCalculateBlockCRC16(intlen,unsignedchar*pBuf);进行CRC计算和验证2、intAppendCRC(void*pBuf,unsignedshortCRC);将算出的CRC值添加到请求包指定位置3、intUartSend(void*pBuf,intuart_num);将算出的CRC及命令字发送到指定串口4、intUartRead(unsignedchar*pBuf,intuart_num);从指定的串口读入返回的数据包5、intCRCcheck(unsignedchar*pBuf,unsignedshortCRC);比对得到的CRC与数据包是否正确6、intProcessTag(unsignedchar*pBuf,unsignedcharTags[]);处理得到的返回桢,分离出读取到的条码编号,并存入数组进行暂存,为下一步数据库存取做好准备除以上子函数外,还有其它相应的函数来进行剔除干扰数据包,处理异常等工作,经本模块处理后,已经可以确保可以过滤绝大多部分的干扰信息了,这样处理完的数据就可以直接进行数据库记录和通过网络传输给后台数据库了。③嵌入式数据库操作模块嵌入式数据库是整个系统的重要组成部分,在本系统中采用了开源的小型嵌入式数据库SQLite,支持SQL92标准数据库操作语句和事务,其工作流程如下:当读取到条码时,本模块将条码号、读取时间、条码内容、采集点编号,操作状态等信息写入本地数据库,从而实现采集数据的本地初步存储,数据库在此列举几个主要的子函数如下:1、intQuery_Init(string*p_command,struct*p_DB_Status,inttype);选择基本的SQL操作符符号和初始值设置,为执行数据库操作做好准备。2、intQuery_Exec(intdb,string*p_command,void(*p_fuction)(*str),(void*)&res);选择数据库,根据SQL操作符进行数据库操作,并将返回数据通过p_function函数处理。3、intQuery_CallBack(void*p_data,intnum,char**value,char**column);将数据库操作返回的数据列表暂存到数组中,以待下一步处理。除以上函数外,还预留了相应的接口用来完成前端数据库和后台数据库的同步,经测试,平均插入一条数据的时间=0.01秒,满足了系统的即时性上的需求。[4]④网络通信模块本系统的特色就是通过嵌入式Linux操作系统的网络底层支持,以多种网络传输途径,将数据和后台数据服务器进行数据传输。在本系统的网络部分设计中,在局域网内利用Linux系统的提供的TCP/IP协议支持,在编程中采用了动态与服务器建立连接的方法,在读取到RFID芯片并解码出有效信息的时候,向服务器相应端口发送相应的Socket请求信息,服务器端接受到请求后建立连接并新建Socket端口来和终端进行通信;只有在读取数据的时候数据库和终端间才产生数据传输和占用服务器端资源,从而降低了网络占有率和服务器端的负荷,通信部分终端客户端部分的主要子函数如下:1、intNet_Init(struct*p_net_Status,inttype);初始化通信,根据选择通信的类型建立和服务器端的网络连接,取得服务器基本信息,并建立Socket连接。2、intNet_Send(string*p_data,intlen,structsockaddr*p_addr);发送指定大小字符串到连结的服务器端口。3、intNet_Receive(string*p_buffer,intlen,structsockaddr*p_addr);从服务器接受数据(主要是接受指令)到指定缓冲区内。由于Linux底层提供了TCP支持,可以保证通信的可靠性,大大降低了编程复杂度,所以只要经过简单的对Socket函数进行了封装来实现数据网络传输,配合服务器端程序即可将标签信息保存到后台的主数据库中,并由后台服务器根据通信内容进行数据保存,发送控制命令等操作。[5]四、结论本文中描述的嵌入式RFID终端读取器,在冰箱生产线中进行了实用,基本满足了生产线RFID系统对前端RFID标签数据采集、处理、通信方面的要求,在功能上和稳定性方面已经能够替代现有的工业PC,因为采用了免费的开源Linux操作系统和开源数据库Sqlite,大大降低了总体成本,对在生产线上进行RFID读写终端的大量部署非常有利。本文作者创新点:通过设计使用功能强大的RFID嵌入式
本文标题:生产线嵌入式RFID终端读写器设计DesignofRF
链接地址:https://www.777doc.com/doc-1330493 .html