RFID的全称是Radio Frequency Identification,即射频识别,它利用无线电射频实现可编程控制器(PLC)或微机(PC)与标识间的数据传输, 从而实现非接触式目标识别与跟踪。
一个典型的RFID射频识别系统包括四部分:标识、天线、控制器和主机(PLC或PC),系统结构图见图1。
图1 RFID射频识别系统结构图
标识一般固定在跟踪识别对象上,如托盘、货架、小车、集装箱,在标识中可以存储一定字节的数据,用于记录识别对象的重要信息。当标识随识别对象移动时,标识就成为一个移动的数据载体。以RFID在计算机组装线上的应用为例,标识中可以记录机箱的类型(立式还是卧式)、所需配件及型号(主板、硬盘、CD-ROM等)、需要完成的工序等。又如在邮包的自动分拣和跟踪应用中,可以在标识中存储邮包的始发地、目的地、路由等信息。
天线的作用是通过无线电磁波从标识中读数据或写数据到标识中。天线形状大小各异,大的可以做成货仓出口的门或通道,小的可以小到1mm。
控制器用于控制天线与PLC或PC间的数据通信,有的控制器还带有数字量输入输出,可以直接用于控制。控制器与天线合称读写器。
PLC或PC根据读写器捕捉到的标识中的数据完成相应的过程控制,或进行数据分析、显示和存储。
本文即以具有代表性的美国EMS(Escort Memory Systems)公司的13.56MHz无源RFID射频识别读写器LRP830为例,介绍了PLC及PC与RFID读写器进行串行通讯,从而获取标识数据,用于控制或数据处理的具体实现方法。
2 RFID射频识别读写器的命令集及串行通讯协议
以LRP830读写器为例,LRP830是EMS 13.56MHz无源系列射频读写器中的一种,它的标识和天线可以在水下或高温腐蚀环境中正常工作,可以一次读写99个标识,最大读写距离63.5cm。它带有两个串口,一个DeviceNet接口,4个DI隔离输入,4个DI隔离输出,保护等级IP66,NEMA4封装,非常适合于在工业自动化中应用。
LRP830读写器上的串口是合在一起的,通过专用电缆可以分接出COM1和COM2两个串口,两个串口作用不同,COM1用作通讯口,从PLC或PC接收命令并返回响应数据, 可以配置为RS232、RS422或DeviceNet接口。COM2用于配置系统参数(如读写模式、波特率等)或下载系统升级程序。
LRP830可以与所有EMS的FastTrackTM系列无源标识结合使用,每个标识中可以存储48个字节的数据,另外还有8个字节用于存储只读的唯一的序列号(出厂前由厂方设定)。
LRP830提供了单标识读写命令集(见表1),多标识读写命令与此类似。
表1 单标识命令集
每种命令可以有三种通讯协议:ABxS 、ABxF 、ABx ASCII。表2 是ABxS通讯协议持续读单标识命令的一个例子,其它命令与此类似。
表2 ABxS协议持续读单标识命令举例
3 RFID读写器与PLC串行通讯
以EMS RFID读写器LRP830 与GE Fanuc VersaMax PLC的串行通讯为例。VersaMax PLC的RS232串口与LRP830的COM1接线对应关系见表3。
表3 VersaMax与LRP830读写器的串口接线对应关系
通过PLC控制RFID读写器读写标识数据的实现流程如图2所示。
图2 PLC读写RFID标识数据的程序结构框图
以下是具体实现时要注意的技术细节:
1) LRP830与VersaMax PLC的串口相连时,信号线要错线,即VersaMax RS232口的TXD/RXD要接LRP830 的COM1的RXD/TXD,LRP830与PC连接时则是直通的。
2) PLC使用串行I/O通讯协议与RFID读写器通讯。串口初始化、设置缓冲区、清除缓冲区、写串口、读串口状态等操作都是先通过一组BLKMOV WORD指令给COMMREQ的数据块赋值,然后执行COMMREQ指令完成的。例如,以下语句(见图3)通过RFID读写器写10个FF(46H)到标识中,从第一个字节写起。
图3 PLC与RFID读写器串行通讯例程
3) 要注意PLC写标识数据只需要执行写串口命令就可以了,而PLC读标识数据的过程则包含两步:一是PLC执行写串口命令, 即写读标识命令到RFID读写器;二是PLC执行读串口命令,捕捉RFID读写器返回的数据。这是由于RFID读写器在接到读标识命令后,会返回读命令的响应信息到串口缓冲区,其中包含了读到的标识数据。
4)使用ABxS协议时,要注意命令字的MSB和LSB的顺序问题。RFID读写器与PLC通讯时,要将读写器指令的MSB和LSB颠倒一下,即LSB在前,MSB在后。例如图3中,第二个BLKMOV WORD指令的第三个输入IN3应为16#4AA,而非16#AA04。
5)利用读写器指示灯的变化辅助PLC程序调试。LRP830读写器的面板上有两排LED指示灯,其中,当“ANT”亮时,表示天线在执行读写操作;“COM1”亮时,表示串口1执行了写命令,“RF”亮时,表示有标识被读写且仍在读写范围内。
4 RFID读写器与PC串行通讯
仍以EMS RFID读写器LRP830为例。与PC机相连时,LRP830的COM1/COM2与PC机的9针串口COM1/COM2的连接对应关系见表4。
表4 LRP830的串口与PC串口连接对应关系
在PC机上开发串口通讯程序,可以使用现有的通讯控件(如VB的Mscomm),也可以使用高级编程语言结合Windows API实现。本文用Delphi 6在Windows2000环境中,应用多线程技术实现了PC与RFID读写器间的串行通信。使用Delphi的优点是,Delphi对许多Windows底层API函数作了封装,简化了程序代码。使用多线程的优点是,程序编写比较灵活,而且串口监听线程不影响主线程其它任务的执行。程序结构框图见图4。
RFID
在具体实现上述思路时,要注意以下技术细节:
1)根据RFID读写器通讯协议的特点,读写器每执行一个主机发来的指令,无论是读标识还是写标识,都会返回一定字节的响应数据,用以确认命令已执行或返回标识中存储的数据。因此,主机读或写标识数据都需要先写(串口命令)后读(返回的串口数据)。
2)为了使程序体现模块化的设计思想,易于调试和维护,可以把各种RFID命令预先存入命令数组中,而把主机对RFID串口的命令和捕捉RFID读写器命令响应编制成单独的子程序,在调用它之前,先调用命令字赋值子程序。
3)对主线程的说明:在主线程中用CreateFile函数建立串口事件,设置缓冲区和通信参数,创建串口监听线程。用WriteFile写串口函数完成通过RFID读写器写数据到标识中。部分程序如下:
……
hcom := CreateFile(pchar(Whichcom), GENERIC_WRITE or GENERIC_READ,
0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); //产生串口事件
setupcomm(hcom,TOTALBYTES,TOTALBYTES); //设置缓冲区
getcommstate(hcom,lpdcb);
lpdcb.BaudRate:=BAUDRATE; //波特率
lpdcb.StopBits := STOPBIT; //停止位
lpdcb.ByteSize := BYTESIZE; //每字节有几位
lpdcb.Parity :=PARITY; //奇偶校验
setcommstate(hcom,lpdcb); //设置串口
Mycomm := Tcomm2.Create(False); //创建串口监听线程
WriteFile(hcom, WriteBuffer,sizeof(WriteBuffer),lpBytesSent, 0);//写标识命令
……
4) 对串口监听线程的说明:
程序中用到的方法主要有Synchronize和Terminate。Synchronize是Delphi提供的一种安全调用线程的方法,它把线程的调用权交给了主线程,从而避免了线程间的冲突,这是一种最简单的线程间同步的方法,可以省去用其它语言编程时需要调用的多个Windows API 函数,例如createEvent(创建同步事件),Waitforsingleobject(等待同步事件置位),resetevent(同步事件复位),PostMessage(向主线程发送消息)等。用Delphi编写多线程通讯程序的优点是显而易见的。例如以下语句即可实现串口监听线程:
……
While (not Terminated) do //如果终止属性不为真
Begin
dwEvtM
ask:=0;
Wait := WaitCommEvent(hcom,dwevtmask,lpol); //等待串口事件
if Wait Then
begin
Synchronize(DataProcessing); //同步串口事件
end;
end;
上述程序一旦检测到串口事件,就调用DataProcessing方法读串口数据,并写入数组,供程序其它部分调用,另外还要检测何时退出线程,程序如下:
procedure Tmainform.DataProcessing
begin
clear := CLEARCOMMERROR(hcom,lperrors,@comms); //清除串口错误
if Clear Then
Begin //处理接收数据
ReadFile(hcom,ReadBuffer,Comms.cbInQue,LPReadNumber,0);
ReceBytes[I+ArrayOffset] := ReadBuffer[I];
//读串口缓冲区数据并写入数组
gameover := (ReceBytes[I+ArrayOffset-1]=Byte($FF))
and (ReceBytes[I+ArrayOffset]=Byte($FF)); //终止条件
if gameover then terminate; //退出线程
……
End;
End;
其中,Terminate将线程的Terminated属性设置为True。线程一旦检测到Terminated属性为True,就会结束线程,去执行Onterminate事件,在Onterminate事件中对采集到的RFID标识数据进行处理。由于RFID读写器的ABxS协议的命令响应的最后两个字节都是FF,所以可以将收到连续的两个FF作为终止线程的条件之一。
程序应用举例:
以持续读标识中所有48字节数据命令为例,在程序中用WriteBuffer数组保存该命令,对WriteBuffer数组的各个元素赋值如下:
WriteBuffer[0] := Byte($AA); WriteBuffer[1] := Byte($0D); //连续读标识命令字头
WriteBuffer[2] := Byte($00); WriteBuffer[3] := Byte($00); //从第一个字节开始读
WriteBuffer[4] := Byte($00); WriteBuffer[5] := Byte($30); //读48个字节数据
WriteBuffer[6] := Byte($00); WriteBuffer[7] := Byte($02); //延时2秒
WriteBuffer[8] := Byte($ff); WriteBuffer[9] := Byte($ff); //连续读标识命令字
执行持续读标识命令后,程序以WriteBuffer数组写串口,RFID读写器执行此命令,并返回响应数据(见图5)。
图5 持续读标识命令执行结果
从图5窗口中可以看到,前4个字节AA OD FF FF就是LRP830读写器对持续读命令的确认信息,然后是数据报文头AA OD和标识中48个字节的数据(每字节数据前加00),最后是数据报文尾FF FF。
5 结束语
本文介绍了可编程控制器及微机与RFID射频识别读写器进行串行通讯,从而获取标识中的数据的具体实现方法:PLC通过串行I/O通讯协议与RFID读写器实现串行通讯,PC通过Windows多线程技术与RFID读写器实现串行通讯。本文所述方法具有通用性,对于其它厂家的PLC和RFID系统也有一定的参考价值。RFID射频识别技术在我国工业自动化等领域的应用才刚刚开始,前景非常广阔。本文对于促进该技术的推广应用具有一定的积极意义。
上一篇:RFID在无线电基站设备管理中的应用
下一篇:RFID技术在军民一体化物流中的应用研究
推荐阅读最新更新时间:2024-05-07 16:14
基于双工方式的PC机与单片机之间的串行通信实现
单片微型计算机简称单片机,它是将中央处理器(CPU)、存储器(RAM,ROM)、定时/计数器和各种接口电路都集成到一块集成电路芯片上的微型计算机。随着计算机技术尤其是单片机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、湿度等参数进行检测和控制。PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS 232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。因此如何实现PC机与单片机之间的通信具有非常重要的现实意义。针对一些远距离控制或者是危险性比较高的数据采集和控制的应用情况,本文主要介绍一种用双工方式实现PC机与单片机之间的串行通信。 1 设计方案
[单片机]
基于S3C2440A芯片实现RFID读写器系统的设计
随着现代信息技术和超大规模集成电路的发展,RFID技术在服务领域、货物销售与后勤分配、商业部门、生产企业和材料流通领域得到了越来越广泛的应用。射频识别技术的基本原理是利用射频信号和空间耦合(电感耦合或电磁耦合)或雷达反射的传输特性,实现对被识别物体的自动识别。 RFID系统不局限于视线,识别距离远。射频识别卡具有可读写能力,可携带大量数据,可工作在潮湿、干燥等恶劣环境下,同时具有难以伪造和智能性较高等优点。与此同时,不同的射频标签编码规则、不同的空中接口协议、大量而复杂的RFID数据如何处理等问题严重阻碍了RFID技术发挥其巨大作用。基于这种现状,本文结合防碰撞算法提出了嵌入式平台下的RFID读写器设计方案。 1 、RFI
[单片机]
RFID防伪防串货系统解决方案
一、需求分析 目前由于市场上很多电器经销商或其它三寨厂商通过贴牌的手段以次充好和跨区域调货,以及条码本身难以做到从根本上防伪,还容易发生串货等一系列因素。这严重影响了企业的声誉和售后服务。一个名牌的产品如果不采用有效的防伪手段,可能会受到大量伪造产品的冲击,大大破坏产品的形象。随着企业经营从粗放型向集约型的转变,在分销渠道管理方面,由于技术和手段的限制,大多数企业沿用的一维条码标示管理仍是经营初期传统的模式和管理方式,这些方式在效率、成本以及可控性等方面的劣势日益突出。因此,市场环境的变化对企业的渠道管理方式提出了新的要求。RDID产品防伪管理可帮助企业对关键商品在分销网络中的有序流动实现严格的监督和控制,提高企业的渠道
[网络通信]
用Modbus协议实现DCS与PLC之间的串行通讯
1 引言 万立氧空分装置是2008年辽化公司20万吨环氧乙烷/乙二醇改造的配套项目,该装置仪控系统采用了先进的Honeywell PKS集散控制系统来实现对整个装置的各系统及主要设备的工艺参数的监控,并实现各主要操作阀门、切换阀门的自动控制或遥控操作,以及必要 的联锁保护措施。氮压机选用Ingersoll—rand的CENTAC 3C70MX5N2型压缩机,该压缩机配置独立的控制系统CM C控制器,为了有效的监控氮压机的运行参数,我们利用Modbus协议实现了Honeywell PKS集散系统与Ingersoll—rand CM C可编程序控制器之间串行通讯。 2 Modbus协议简介 Modbus是
[嵌入式]
Intel公布最新45/32nm工艺,为服务器和PC提供更小尺寸芯片
Intel近日推出了两款采用45nm和32nm级工艺技术生产的硅晶圆,这两款晶圆有望为下一代服务器和PC生产尺寸更小、效率更高的芯片。Intel首席执行官Paul Otellini预计这些创新会为Intel公司推进微处理器、内存和图形芯片的性能创造机会。 Intel表示,将根据其计划在11月12日推出15个代号为Penryn的新45nm处理器,并将在2008年第一季度推出另外20个代号为Nehalem的处理器。其32nm工艺技术将在2009年开始投产。 为了明确其观点,Otellini以包含19亿多个晶体管的32nm晶圆SRAM内存处理器为例。随后他举出了包含7.31亿个晶体管的45nm晶圆的例子。“该技术开始向我们提供打造今
[焦点新闻]
详解PLC的组成及原理
典型的可编程控制器组成框图如图6-17所示。 图6-17 典型的可编程控制器组成框图 电路构成 可编程控制器通常由输入单元、输出单元、中央处理器、输入/输出(I/O)接口、外设接口以及电源等组成。 输入单元 输入单元的作用是将输入信号处理成中央处理器所能接收的信号。PLC常用开关量作为输入单元的信号要素。输入单元有直流输入型和交流输入型之分。每台 PLC 都有若干个电路结构相同的输入单元,它们有一个公共端子 COM。PLC 直流输入单元的典型电路如图 6-18 (a)所示。 图6-18 直流输入单元由控制电源(如24V)、电平转换电路(R1、R2分压)、滤波电路(R2、C)、开关状态指示灯LED、光电耦合器
[嵌入式]
labview实现单PC双串口通信
今天尝试了一下单PC双串口通信,实验前需要一个虚拟串口驱动软件,还可以用一个串口调试助手测试串口性能。但是系统运行时要把串口调试助手关了,否则会报错。 实验的前面板程序框图分别是
[测试测量]
基于Modbus协议和PLC器件实现分布式系统通信网络的兼容性设计
一、引 言 现代工业的迅速发展,不断促进着自控技术及设备创新的日新月异。当前,DCS、IPC、PLC及智能仪表已广泛应用到工厂现场生产控制系统当中,并发展到由上述设备相互协同、共同面向整个生产过程的分布式工业自动控制系统。在此系统中,现场通信技术堪称关键。但由于开始没有统一的通信协议标准,各厂商自控产品通信协议各自为政,通信网络各成体系,造成不同厂家的自控设备网络连接困难甚至不能连接,给分布式控制系统的灵活应用造成了不便。一些公司为适应市场,纷纷将各自的协议标准公开化,可无偿使用。经过多年发展,一些通信协议如Modicon公司的Modbus通信协议因其兼容性、易用性的优势,在工业领域得到了广泛应用,已成为一种通用的工业通信
[嵌入式]