基于LabVIEW的RFID阅读器设计
0 引言
射频识别(Radio Frequency Identification,RFID)是利用射频信号的空间耦合及反向散射特性对目标对象进行自动识别以及数据交换的技术.因此识别过程不需要人工干预,具有高精度.长寿命.易操作等特点.
超高频射频识别(UHF RFID)由于识别距离远(最大可达10 m)的特点,已经被越来越多地应用于物流管理.交通运输管理.工厂生产控制等领域.目前RFID标准繁杂,没有一个较为通用的应用标准,所以对于标签种类众多的应用场合及RFID技术研究开发院所,开发一个能够支持多种RFID 标签标准的阅读器就显得很有必要.利用软件无线电的特性,将不同的RFID标准用软件代码来实现,通过加载不同软件代码的方法实现对符合不同标准的RFID标签进行读写操作,可以方便地解决需要购买不同的阅读器才可以对不同类型的RFID标签进行读写的问题.
软件无线电是20世纪90年代以后逐渐兴起的一种全新的设计思想,其核心是在通用的模块化.可编程的硬件平台上通过加载不同的通信软件,以实现不同通信方式间的转换.这种设计思想使通信中的无线电台可以适应不同的通信方式,软件无线电良好的兼容性和可编程性使得通信系统的开发主要成为数字信号处理软件的研究.基于这一思想,可以试图将RFID的各种标准以软件代码的形式实现,从而实现通过加载不同软件来完成符合各种不同标准的RFID阅读器的功能.
本文使用NI公司开发的LabVIEW软件来编写软件无线电的代码,LabVIEW 是目前国际上应用最广的数据采集和控制开发环境之一,其在通信仿真领域有着重要的作用.它使用图形化的编程语言(又称“G”语言)编写程序,产生的程序是框图的形式.LabVIEW 也是通用的编程系统,有一个完成任何编程任务的庞大函数库,包括数据采集.GPIB.串口控制.数据分析.数据显示及数据存储等.可以增强研究和开发人员构建自己科学和工程系统的能力,并提供实现仪器编程和数据采集系统的便捷途径.
1 基于软件无线电的RFID阅读器模型
RFID 标签要反射回自身所携带的信息,需要首先获得激励信号,然后经过电压调节器将阅读器传送过来的射频信号转换为直流稳压电源.所以需要软件无线电(仿真阅读器)首先发射激励波,在一些较为安全的RFID 应用协议中,还包括了安全认证以及对标签进行操作的过程,这就需要在激励波中增加一些操作指令代码,来从标签中获取相应的信息.标签的反射信号携带了自身的信息,在反射信号的接收过程中,信道的衰落.多径效应,加上接收器本身也会引进噪声.因此,在信息解析之前需要滤掉这些影响.仿真阅读器采用与激励波频率相同的载波进行相干解调.整个RFID仿真阅读器的框架如图1所示.
2 标签信息的解析
本文对符合AAR S-918标准的RFID标签进行了读取.该标准对RFID系统的工作频率.发送/接收带宽.调制方式.发射机功率以及编码方案等做了详细的规定.
其编码方案如图2所示,从图2中可以看出,每1位用户数据位用8 个子位来代替,即用户数据“1”用“10101100”来代替,用户数据“0”用“11001010”来代替.数据帧标识头为“1010101010101100”.在对标签反射信号进行滤波.解调等信号处理之后,还原出基带原始信号.接下来对标签携带信息进行还原.AAR S-918标准中采用特有6 b ASCII编码,编码的对应关系如表1所示.
3 阅读器性能测试
根据RFID系统的工作原理及AAR S-918标准中对工作的频率的规定,首先使用LabVIEW 软件编写发射激励波的程序,设置载波频率为915 MHz,采样率为800 kHz,发射增益为30 dB.程序前面板与系统框图分别如图3,图4所示.
当标签进入阅读器的识别区域后,就会将自身所携带的信息通过电磁反射回传给阅读器,仿真阅读器根据AAR S-918 标准规范,将反射回来的ASK 信号进行解调,并根据AAR S-918标准的编码规则对其所携带的信息进行解码,阅读器的信号处理及解码程序如图5,图6所示.
从图6 中可以看出,经过解析,标签所携带的信息为“$1(B,S1$”,用标准商用阅读器读到的数据如图7所示.从图7中可以看出,商用阅读器读出的数据与仿真阅读器读出的数据完全一致.仿真阅读器成功读取到了标签自身所携带的信息,实现了标准阅读器的功能.
4 结语
本文通过对软件无线电和RFID 系统的学习研究,采用LabVIEW图形化编程语言设计了一个基于软件无线电的RFID仿真阅读器.通过与标准阅读器的读取结果进行比对,这一设计能够实现标准阅读器的读取功能.从而实现了通过加载不同软件来读写符合不同标准的RFID标签的功能,适合于多种不同标准的标签同时应用的场合.
本文所针对的AAR S-918标准因其不具有复杂的协议认证过程,可以较为简单地实现.在以后的工作中,将会对其他协议的标准进行研究,将其加入到代码库中,以方便地实现用加载代码的方式来完成对RFID标签的读写操作.