RFID EPC Class1 Gen2电子标签笔记
RFID EPC Class1 Gen2
符合EPC Class1 Gen2(简称G2)协议V109版的电子标签(Tag)和读写器(Reader)应该具有下述的特性
标签存储器分区
Tag memory分为Reserved(保留), EPC(电子产品代码), TID(标签识别号)和User(用户)四个独立的Bank(存储区块)
- Reserved: 存储Kill Password(灭活口令)和Access Password(访问口令)
- EPC: 存储EPC号码等
- TID: 存储标签识别号码, 每个TID号码应该是唯一的
- User: 存储用户定义的数据
此外还有各区块的Lock(锁定)状态位等用到的也是存储性质的单元
标签的状态
收到连续波(CW)照射上电(Power-up)以后, 标签可处于Ready(准备), Arbitrate(裁断), Reply(回令), Acknowledged(应答), Open(公开), Secured(保护), Killed(灭活)七种状态之一.
- Ready状态: 未被灭活的标签上电以后, 开始所处的状态, 准备响应命令
- Arbitrate状态: 等待响应Query等命令
- 响应Query后, 进入Reply状态, 进一步将响应ACK命令就可以发回EPC号码
- 发回EPC号码后, 进入Acknowledged状态, 进一步可以响应Req_RN命令
- Access Password不为0才可以进入Open状态, 在此进行读、写操作
- 已知Access Password才可能进入Secured状态, 进行读、写、锁定等操作
- 进入到Killed状态的标签将保持状态不变, 永远不会产生调制信号以激活射频场, 从而永久失效。被灭活的标签在所有环境中均应保持Killed状态, 上电即进入灭活状态, 灭活操作不可逆转.
要使标签进入某一状态一般需要适当次序的一组合法命令, 反过来各命令也只能当标签在适当的状态下才能有效, 标签响应命令后也会转到其他状态.
命令分类
从命令体系架构和扩展性角度, 分为Mandatory(必备的), Optional(可选的), Proprietary(专有的)和Custom(定制的)四类
从使用功能上看, 分为标签Select(选取), Inventory(盘点)和Access(存取)命令三类, 此外还为了以后命令扩展, 预留了长短不同的编码待用.
必备的(Mandatory)命令
符合G2协议的标签和读写器, 应该支持必备的命令有十一条
- Select(选择)
- Query(查询)
- QueryAdjust(调节查询)
- QueryRep(重复查询)
- ACK(EPC答复)
- NAK(转向裁断)
- Req_RN(随机数请求)
- Read(读)
- Write(写)
- Kill(灭活)
- Lock(锁定)
可选的(Optional)命令
符合G2协议的标签和读写器, 可选的命令有三条
- Access(访问)
- BlockWrite(块写)
- BlockErase(块擦除)
专有的(Proprietary)命令
专有的命令一般用于制造目的, 如标签内部测试等, 标签出厂后这样的命令应该永久失效
定制的(Custom)命令
可以是制造商自己定义而开放给用户使用的命令, 如Philips公司提供有: BlockLock(块锁定), ChangeEAS(改EAS状态), EASAlarm(EAS报警)等命令(EAS是商品电子防盗窃系统Electronic Article Surveillance的缩写).
从功能角度: 选取(Select)类命令
仅有一条:Select, 是必备的. 标签有多种属性, 基于用户设定的标准和策略, 使用Select命令, 改变某些属性和标志人为选择或圈定了一个特定的标签群, 可以只对它们进行盘点识别或存取操作, 这样有利于减少冲突和重复识别, 加快识别速度.
从功能角度: 盘点(Inventory)类命令
有五条:Query, QueryAdjust, QueryRep, ACK, NAK, 都是必备的
- 标签收到有效Query命令后, 符合设定标准被选择的每个标签产生一个随机数(类似掷骰子), 而随机数为零的每个标签, 都将产生回响(发回临时口令RN16, 一个16-bit随机数), 并转移到Reply状态; 符合另一些条件的标签会改变某些属性和标志, 从而退出上述标签群, 有利于减少重复识别.
- 标签收到有效QueryAdjust命令后, 各标签分别新产生一个随机数(象重掷骰子), 其他同Query
- 标签收到有效QueryRep命令后, 只对标签群中的每个标签原有的随机数减一, 其他同Query
- 仅单一化的标签才能收到有效ACK命令(使用上述RN16, 或句柄Handle, 一个临时代表标签身份的16-bit随机数, 此为一种安全机制), 收到后发回EPC区中的内容, EPC协议最基本的功能.
- 标签收到有效NAK命令后, 除了处于Ready、 Killed的保持原状态外, 其它情况都转到Arbitrate状态
从功能角度: 存取(Access)类命令
有五条必备的: Req_RN, Read, Write, Kill, Lock, 和三条可选的: Access, BlockWrite, BlockErase
- 标签收到有效Req_RN(with RN16 or Handle)命令后, 发回句柄, 或新的RN16, 视状态而不同。
- 标签收到有效Read(with Handle)命令后, 发回出错类型代码,或所要求区块的内容和句柄。
- 标签收到有效Write(with RN16 & Handle)命令后, 发回出错类型代码,或写成功就发回句柄。
- 标签收到有效Kill(with Kill Password, RN16 & Handle)命令后, 发回出错类型代码,或灭活成功就发回句柄。
- 标签收到有效Lock(with Handle)命令后, 发回出错类型代码,或锁定成功就发回句柄。
- 标签收到有效Access(with Access Password, RN16 & Handle)命令后, 发回句柄。
- 标签收到有效BlockWrite(with Handle)命令后, 发回出错类型代码,或块写成功就发回句柄。
- 标签收到有效BlockErase(with Handle)命令后, 发回出错类型代码,或块擦除成功就发回句柄。
G2用什么机制避免冲突
上述解答中提到, 当不止一个随机数为零的标签各发回不同的RN16时, 它们在接收天线上会出现不同RN16的波形迭加, 也即所谓冲突(collisions), 从而不能正确解码。有多种抗冲突机制可以避免波形迭加变形, 例如设法(时分)使某时刻只有一个标签“发言”, 接着再单一化处理, 就能识别读写多张标签中的每一张标签.
上述三条Q字头的命令体现了G2的抗冲突机制:
- 随机数为零的标签才能发回RN16
- 若同时有多个标签随机数为零, 而不能正确解码, 就策略性地重发Q字头的命令或组合给被选择的标签群, 直到能正确解码
标签识别号(TID)唯一性如何达成
标签识别号TID(Tag identifier)是标签之间身份区别的标志(可以类比于钞票的编号). 从安全和防伪角度考虑, 任何两张G2标签不应该完全相同, 标签应该具有唯一性. 标签四个存储区块各有用处, 出厂后有的还能随时改写, 只有TID应该也可以担当此任, 所以标签的TID应该具有唯一性.
出厂前G2芯片的生产厂家应使用Lock命令或其他手段作用于TID, 使之永久锁定, 并且生产厂家或有关组织应该保证每个G2芯片适当长度的TID是唯一的, 任何情况下不会有第二个同样的TID, 即使某G2标签处于Killed状态不会被激活再使用, 它的TID(仍在此标签中)也不会出现在另一张G2标签中.
这样由于TID是唯一的, 虽然标签上的EPC码等可以被复制到另一张标签上去, 也能通过标签上的TID加以区分, 从而正本清源. 此种架构和方法简单可行, 但要注意保证唯一性的逻辑链.
V109版的G2协议对TID的规定, 必须的仅有32-bit(包括8-bit allocation class identifier, 12-bit tag mask-designer identifier, 12-bit tag model number), 对更多位的bit, 如SNR(serial number序列号)是Tags may contain
而非should
. 但由于EPC号码被设计成会用到区分单件商品上, 32-bit大概是不够用的, 应该具有SNR.
G2协议中的灭活(Kill)命令
G2协议设置了Kill命令, 并且用32-bit的密码来控制, 有效使用Kill命令后标签永远不会产生调制信号以激活射频场, 从而永久失效. 但原来的数据可能还在标签中, 若想读取它们并非完全不可能, 可以考虑改善Kill命令的含义--附带擦除这些数据.
此外在一定时期内, 由于G2标签使用的成本或其他原因, 会考虑到兼顾标签能回收重复使用的情况(如用户要周转使用带标签的托盘、箱子, 内容物更换后相应的EPC号码、User区内容要改写; 更换或重新贴装标签所费不菲、不方便等等), 需要即使被永久锁定了的标签内容也能被改写的命令, 因为不同锁定状态的影响, 仅用Write或BlockWrite, BlockErase命令, 不一定能改写EPC号码、User内容或者Password(如标签的EPC号码被锁定从而不能被改写, 或未被锁定但忘了这个标签的Access Password而不能去改写EPC号码). 这样就产生了一个需求, 需要一个简单明了的Erase命令--除了TID区及其Lock状态位(标签出厂后TID不能被改写), 其他EPC号码、Reserved区、User区的内容和其它的Lock状态位, 即使是永久锁定了的, 也将全部被擦除以备重写.
比较起来, 改善的Kill命令和增加的Erase命令功能基本相同(包括应该都使用Kill Password), 区别仅在于前者Kill命令使不产生调制信号, 这样也可以统一归到由Kill命令所带参数RFU的不同值来考虑.
RFID EPC Class1 Gen2电子标签笔记的更多相关文章
- RFID UHF(EPC)标签使用常识
文章复制来的,原作者原文点击这里 现在做UHF应用的越来越多了,如何根据实际应用设计系统以达到更佳的使用效果,其中对UHF标签相关内容的了解至关重要,很多朋友对标签的了解不多,在此不才,整理了一些资料 ...
- UHF RFID,高频RFID开发参考资料
ISO18000-6C电子标签百科 http://baike.baidu.com/item/ISO18000-6C%E7%94%B5%E5%AD%90%E6%A0%87%E7%AD%BE/80500 ...
- 超高频RFID模块
1.应用开发有两种方法:串口和USB 2.从逻辑上将标签存储器分为四个存储区,每个存储区可以由一个或一个以上的存储器字组成.这四个存储区是: 00 保留区(Password):前两个字是销毁(kill ...
- RFID电子标签天线的印刷
RFID 电子标签技术又称RFID(Radio FrequencyIdentification)射频识别技术,是一种非接触式的自动识别技术,通过相距几厘米到几米距离内传感器发射的无线电波,可以读取RF ...
- RFID电子标签的二次注塑封装
生活当中,RFID电子标签具有明显的优势,随着RFID电子标签成本的降低.读写距离的提高.标签存储容量增大及处理时间缩短的发展趋势,R F I D电子标签的应用将会越来越广泛. RFID电子标签的应用 ...
- 电子标签(RFID)天线的印制技术
电子标签是射频识别(RFID)的俗称,RFID是射频识别技术的英文(RadioFrequencyIdentification)缩写,射频识别技术是一项利用射频信号通过空间耦合(交变磁场或电磁场)实现无 ...
- 浅谈RFID电子标签封装技术
1RFID技术概述 1.1RFID技术概念 RFID是RadioFrequencyIdentification的缩写,即射频识别技术,俗称电子标签.RFID射频识别是一种非接触式的自动识别技术,它通过 ...
- RFID电子标签制造封装工艺和可靠性研究
一.目的和意义 电子标签已经成为RFID工业的主要焦点 实现低成本.大批量.高可靠性地制造电子标签是推广RFID产品应用的关键技术之一 针对RFID标签制造中核心的封装工艺开展研究,以各向异性导 ...
- RFID开发笔记 Alien阅读器文档
1. 开机使用serial connect,完成boot后使用TCP/IP协议与主机通信 2.TagList,是一个活跃标签的列表,这里活跃的含义是在一个间隔里被监听到.如果一个标签之前没有被监听到, ...
- RFID电子标签加工的倒装工艺
倒装对于半导体封装领域的人员而言,是再熟悉不过的了.一般我们看到的集成电路多数以塑封为主,半导体芯片和外界进行信息沟通的通道,靠的就是集成电路的管脚.如果把集成电路外面的封装去掉,会发现每个集成电路内 ...
随机推荐
- SV 字符串类型
概述 常见使用方式 string b; string b=""; // 拼接字符串 string a = {"hi",b}; // 将字符串a赋值给[15:0] ...
- Spring Boot对接Oracle数据库
Spring Boot对接Oracle数据库 最近学习了Oracle数据库,那么如何使用Spring Boot和MyBatis Plus对接Oracle数据库呢? 这就有了这篇随记,具体流程如下 1. ...
- [转帖]带你重走 TiDB TPS 提升 1000 倍的性能优化之旅
https://tidb.net/blog/29074d86#TiDB%20%E6%80%A7%E8%83%BD%E5%92%8C%E7%A8%B3%E5%AE%9A%E6%80%A7%E7%9A%8 ...
- [转帖]INTEL MLC(Memory Latency Checker)介绍
https://zhuanlan.zhihu.com/p/359823092 在定位机器性能问题的时候,有时会觉得机器莫名其妙地跑的慢,怎么也看不出来问题.CPU频率也正常,程序热点也没问题,可就是慢 ...
- [转帖]关于 AREX
https://arextest.github.io/website/zh-Hans/docs/intro/ AREX 介绍 背景 对于一个初上线的简单服务,只需通过常规的自动化测试加上人工即可解 ...
- Linux无头模式使用mat分析dump的方法
摘要 mat可以很好的进行jvm的内存dump的分析. 但是大部分服务器是没有GUI界面的. 而且就算是有GUI界面也很难直接使用. 但是随着jvm堆区越来越大. WindowsPC机器已经很难进行分 ...
- CentOS确认网口是否插入网线的办法
最近公司的机器存在网络问题, 部分网络总是不通, 比较奇怪. 最近一直想处理好. 第一步: 先查看网口的设备信息 可以使用 ip link show 可以讲网口信息都展示出来. 一般情况下 NO-C ...
- 从好玩到好用:程序员用AI提效的那些事儿
本片内容是[AI思维空间]ChatGPT纵横编程世界,点亮智慧火花的续作,主要记录组内开发小伙伴儿们在开发过程中的实际应用案例,记录典型案例,尽量不要和其他人重复,以解决开发过程中的实际问题为主,设计 ...
- 2023年了,做SEO还有必要吗?
作者:京东科技 吴磊 搜索引擎工作原理 在搜索引擎网站的后台会有一个非常庞大的数据库,里面存储了海量的关键词,而每个关键词又对应着很多网址,这些网址是被称之为"搜索引擎蜘蛛"或&q ...
- 你不知道的Linux shell操作
Linux Shell 脚本入门教程 Linux Shell 脚本是一种强大的工具,它允许您自动化日常任务和复杂操作.在本教程中,我们将逐步介绍几个实用的 Shell 脚本示例.每个示例都将详细说明, ...