【RFID】第五章 EPCglobal Class 1 Generation 2 标准

这章主要理解这个标准下,RFID阅读器是如何和tag通信的。

先简要描述下这个过程,reader会通过select命令来修改tag上的一些标志,来为后续筛选做准备,然后会用query指令来通知接下来要识别的tag,然后开始一帧一帧的通信,因为这个标准在防碰撞上是采用的动态调整帧长的基于帧的时隙ALOHA。

一、reader的指令

要理解这个通信的过程,首先要看reader发的四个指令

1、Select

首先是select命令,这个命令听起来叫选择,但实际上是修改,他是通过修改tag们的SL标记位和会话标记位,来选择接下来要通信的tag。

Preamble就是preamble

Command这里是1010,代表是select这个指令。

Target是3比特,是指这个select指令要修改的session号。


Action是3比特,表示要怎么修改

MemBank,Pointer,Length和mask是用来筛选tag的。

首先是mask,是一串字符串,长度由length定义,可以是0-255byte。这串字符用来和tag内存中某部分区域做对比。MemBank和Pointer指定了要对比的内存的地方,MemBank两位,EPC C1G2把标签的内存空间分为了4个块,

00

保留的内存区,包含了与标签相关的密码

01

EPC码

10

TID内存区,包含了标签和厂商设定的信息

11

用户内存区,包含了用户定义的数据

MemBank指定了是那块,而pointer指定了从哪里开始比

Truncate域只有在memBank指向EPC码时才会生效,他只有1位,表示tag回复readerEPC码时是否要截断,如果截断,就只回复mask码后的内容,如果不截断,那就全回。要理解这个域的作用,要先看EPC码的格式

就跟ip地址很像,head是这个EPC码的版本,Domain manager是EPC给各个企业、组织分配的,然后各个企业组织拿到前两部分的码,后面object class和serial number都是这个企业组织可以自己分配的。

那假如我要扫蒙牛的某一类奶,书里举的这个例子,

这些奶的EPC号,head和Domain manager肯定是一样的,因为这两个区域是EPC分给蒙牛的,这个例子这些奶明显都是一类,所以Object class也是一样的,那么这些个tag的EPC码前三个部分都是一样的,我在select指令里就可以直接mask写到object class,这样就把所有的这个奶都匹配上,然后truncate写1,就说明要截断,这样tag在给reader返回EPC码的时候,就只用返回mask之后的了,就只剩这个序列号了,这样可以大幅减少需要传输的比特。

2、Query

这个就是开始了一轮新的识别过程,注意这个不是帧的开始也不是时隙的开始,是识别过程,一个识别过程可能会包含多个帧。

DR:data rate,标签到阅读器的数据速率

M:编码方式

Trext:是否在序文中包含导频信号

Sel,session,target相当于是筛选了标签,只有sel符合,且对应的session的标记位为对应的target的时候标签才会参与这一帧。

Q就是上一篇文章提到的DFSA的Q值,用来决定这一帧的帧长。

3、QueryRep

这个就是告诉标签进入下一时隙,标签收到这个之后,就会把自己的slot计数器-1,如果是0那就轮到他发了。

4、QueryAdjust

这个就是调整Q值的指令,在一轮识别过程中,调整Q值就用这个调整。

二、通信过程

了解了主要的这四条指令之后,就可以尝试理解阅读器和tag的通信过程了,我们把下面三张图结合着看一下,主要看这个状态转换图。

  1. 阅读器接到上层指令,要识别tag,这时候阅读器要发信号给tag供电,然后发select指令。Tag收到电后,收到select信号,所有符合select要求的会根据select指令修改自己的flag,以配合query指令。进入就绪态。

  2. 接着阅读器发送Query指令查询tag,所有tag(包括刚才没被修改的)对比自己的flag是否和要求的符合,flag匹配的tag根据Query指令里的帧长,选择一个slot号作为自己要发包的slot,进入仲裁态。

  3. 所有slot号为0的tag进入回复态,向阅读器发送一个16bit的随机数RN16。阅读器收到之后看有无碰撞,没有的话就算成了,就会给tag回一个带有相同RN16的ACK。如果有碰撞,或者是空时隙,reader就会发送QueryAdjust指令来调整Q值,这也意味着下一时隙的开始,所有参与了这一轮查询的、还没有被查询的tag将自己的slot计数器-1,重新回到回复态。

  4. 刚才如果tag成功收到了带有正确RN16的ACK,那么就会给阅读器发他的{PC+EPC+CRC},PC(Protocol Control)描述标签的物理属性,EPC就是EPC,CRC是校验和。然后进入确认态,等待阅读器给他发带有正确RN16的Req_RN。如果没有收到带有正确RN16的ACK,或者收到了带有正确RN16的ACK,也发了{PC+EPC+CRC},但是没有收到正确的Req_RN,就会回到仲裁态(这里图不太明白,左边直接回仲裁态了,右边又说重发{PC+EPC+CRC})。

  5. 刚才如果一切顺利,也收到了带有正确RN16的Req_RN,这时候进入开放态,开放态是等待密码的状态,这时候又分两种情况,一种情况是没有密码,也就是tag的密码设置为0,那就会直接进入安全态,这时候阅读器就可以对tag做各种各样的操作了。另一种情况是有密码,这样的话,带有正确RN16的Req_RN就也还需要包含正确的密码,来供tag检验,如果不正确,就跟上面一样,回到仲裁态,如果正确就进入安全态。

  6. 然后如果要进行读写访问和别的操作的话,阅读器就可以对安全态的tag进行了,进行完之后,阅读器会发送QueryRep来表示进入下一时隙,所有参与了这轮查询的、还没有被查询的tag将自己的slot计数器-1,重新回到回复态。已经被查询了的就可以休眠了。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值