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(灭活)七种状态之一.

  1. Ready状态: 未被灭活的标签上电以后, 开始所处的状态, 准备响应命令
  2. Arbitrate状态: 等待响应Query等命令
  3. 响应Query后, 进入Reply状态, 进一步将响应ACK命令就可以发回EPC号码
  4. 发回EPC号码后, 进入Acknowledged状态, 进一步可以响应Req_RN命令
  5. Access Password不为0才可以进入Open状态, 在此进行读、写操作
  6. 已知Access Password才可能进入Secured状态, 进行读、写、锁定等操作
  7. 进入到Killed状态的标签将保持状态不变, 永远不会产生调制信号以激活射频场, 从而永久失效。被灭活的标签在所有环境中均应保持Killed状态, 上电即进入灭活状态, 灭活操作不可逆转.

要使标签进入某一状态一般需要适当次序的一组合法命令, 反过来各命令也只能当标签在适当的状态下才能有效, 标签响应命令后也会转到其他状态.

命令分类

从命令体系架构和扩展性角度, 分为Mandatory(必备的), Optional(可选的), Proprietary(专有的)和Custom(定制的)四类

从使用功能上看, 分为标签Select(选取), Inventory(盘点)和Access(存取)命令三类, 此外还为了以后命令扩展, 预留了长短不同的编码待用.

必备的(Mandatory)命令

符合G2协议的标签和读写器, 应该支持必备的命令有十一条

  1. Select(选择)
  2. Query(查询)
  3. QueryAdjust(调节查询)
  4. QueryRep(重复查询)
  5. ACK(EPC答复)
  6. NAK(转向裁断)
  7. Req_RN(随机数请求)
  8. Read(读)
  9. Write(写)
  10. Kill(灭活)
  11. Lock(锁定)

可选的(Optional)命令

符合G2协议的标签和读写器, 可选的命令有三条

  1. Access(访问)
  2. BlockWrite(块写)
  3. BlockErase(块擦除)

专有的(Proprietary)命令

专有的命令一般用于制造目的, 如标签内部测试等, 标签出厂后这样的命令应该永久失效

定制的(Custom)命令

可以是制造商自己定义而开放给用户使用的命令, 如Philips公司提供有: BlockLock(块锁定), ChangeEAS(改EAS状态), EASAlarm(EAS报警)等命令(EAS是商品电子防盗窃系统Electronic Article Surveillance的缩写).

从功能角度: 选取(Select)类命令

仅有一条:Select, 是必备的. 标签有多种属性, 基于用户设定的标准和策略, 使用Select命令, 改变某些属性和标志人为选择或圈定了一个特定的标签群, 可以只对它们进行盘点识别或存取操作, 这样有利于减少冲突和重复识别, 加快识别速度.

从功能角度: 盘点(Inventory)类命令

有五条:Query, QueryAdjust, QueryRep, ACK, NAK, 都是必备的

  1. 标签收到有效Query命令后, 符合设定标准被选择的每个标签产生一个随机数(类似掷骰子), 而随机数为零的每个标签, 都将产生回响(发回临时口令RN16, 一个16-bit随机数), 并转移到Reply状态; 符合另一些条件的标签会改变某些属性和标志, 从而退出上述标签群, 有利于减少重复识别.
  2. 标签收到有效QueryAdjust命令后, 各标签分别新产生一个随机数(象重掷骰子), 其他同Query
  3. 标签收到有效QueryRep命令后, 只对标签群中的每个标签原有的随机数减一, 其他同Query
  4. 仅单一化的标签才能收到有效ACK命令(使用上述RN16, 或句柄Handle, 一个临时代表标签身份的16-bit随机数, 此为一种安全机制), 收到后发回EPC区中的内容, EPC协议最基本的功能.
  5. 标签收到有效NAK命令后, 除了处于Ready、 Killed的保持原状态外, 其它情况都转到Arbitrate状态

从功能角度: 存取(Access)类命令

有五条必备的: Req_RN, Read, Write, Kill, Lock, 和三条可选的: Access, BlockWrite, BlockErase

  1. 标签收到有效Req_RN(with RN16 or Handle)命令后, 发回句柄, 或新的RN16, 视状态而不同。
  2. 标签收到有效Read(with Handle)命令后, 发回出错类型代码,或所要求区块的内容和句柄。
  3. 标签收到有效Write(with RN16 & Handle)命令后, 发回出错类型代码,或写成功就发回句柄。
  4. 标签收到有效Kill(with Kill Password, RN16 & Handle)命令后, 发回出错类型代码,或灭活成功就发回句柄。
  5. 标签收到有效Lock(with Handle)命令后, 发回出错类型代码,或锁定成功就发回句柄。
  6. 标签收到有效Access(with Access Password, RN16 & Handle)命令后, 发回句柄。
  7. 标签收到有效BlockWrite(with Handle)命令后, 发回出错类型代码,或块写成功就发回句柄。
  8. 标签收到有效BlockErase(with Handle)命令后, 发回出错类型代码,或块擦除成功就发回句柄。

G2用什么机制避免冲突

上述解答中提到, 当不止一个随机数为零的标签各发回不同的RN16时, 它们在接收天线上会出现不同RN16的波形迭加, 也即所谓冲突(collisions), 从而不能正确解码。有多种抗冲突机制可以避免波形迭加变形, 例如设法(时分)使某时刻只有一个标签“发言”, 接着再单一化处理, 就能识别读写多张标签中的每一张标签.

上述三条Q字头的命令体现了G2的抗冲突机制:

  1. 随机数为零的标签才能发回RN16
  2. 若同时有多个标签随机数为零, 而不能正确解码, 就策略性地重发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电子标签笔记的更多相关文章

  1. RFID UHF(EPC)标签使用常识

    文章复制来的,原作者原文点击这里 现在做UHF应用的越来越多了,如何根据实际应用设计系统以达到更佳的使用效果,其中对UHF标签相关内容的了解至关重要,很多朋友对标签的了解不多,在此不才,整理了一些资料 ...

  2. 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 ...

  3. 超高频RFID模块

    1.应用开发有两种方法:串口和USB 2.从逻辑上将标签存储器分为四个存储区,每个存储区可以由一个或一个以上的存储器字组成.这四个存储区是: 00 保留区(Password):前两个字是销毁(kill ...

  4. RFID电子标签天线的印刷

    RFID 电子标签技术又称RFID(Radio FrequencyIdentification)射频识别技术,是一种非接触式的自动识别技术,通过相距几厘米到几米距离内传感器发射的无线电波,可以读取RF ...

  5. RFID电子标签的二次注塑封装

    生活当中,RFID电子标签具有明显的优势,随着RFID电子标签成本的降低.读写距离的提高.标签存储容量增大及处理时间缩短的发展趋势,R F I D电子标签的应用将会越来越广泛. RFID电子标签的应用 ...

  6. 电子标签(RFID)天线的印制技术

    电子标签是射频识别(RFID)的俗称,RFID是射频识别技术的英文(RadioFrequencyIdentification)缩写,射频识别技术是一项利用射频信号通过空间耦合(交变磁场或电磁场)实现无 ...

  7. 浅谈RFID电子标签封装技术

    1RFID技术概述 1.1RFID技术概念 RFID是RadioFrequencyIdentification的缩写,即射频识别技术,俗称电子标签.RFID射频识别是一种非接触式的自动识别技术,它通过 ...

  8. RFID电子标签制造封装工艺和可靠性研究

    一.目的和意义 电子标签已经成为RFID工业的主要焦点 实现低成本.大批量.高可靠性地制造电子标签是推广RFID产品应用的关键技术之一 针对RFID标签制造中核心的封装工艺开展研究,以各向异性导 ...

  9. RFID开发笔记 Alien阅读器文档

    1. 开机使用serial connect,完成boot后使用TCP/IP协议与主机通信 2.TagList,是一个活跃标签的列表,这里活跃的含义是在一个间隔里被监听到.如果一个标签之前没有被监听到, ...

  10. RFID电子标签加工的倒装工艺

    倒装对于半导体封装领域的人员而言,是再熟悉不过的了.一般我们看到的集成电路多数以塑封为主,半导体芯片和外界进行信息沟通的通道,靠的就是集成电路的管脚.如果把集成电路外面的封装去掉,会发现每个集成电路内 ...

随机推荐

  1. SV 字符串类型

    概述 常见使用方式 string b; string b=""; // 拼接字符串 string a = {"hi",b}; // 将字符串a赋值给[15:0] ...

  2. Spring Boot对接Oracle数据库

    Spring Boot对接Oracle数据库 最近学习了Oracle数据库,那么如何使用Spring Boot和MyBatis Plus对接Oracle数据库呢? 这就有了这篇随记,具体流程如下 1. ...

  3. [转帖]带你重走 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 ...

  4. [转帖]INTEL MLC(Memory Latency Checker)介绍

    https://zhuanlan.zhihu.com/p/359823092 在定位机器性能问题的时候,有时会觉得机器莫名其妙地跑的慢,怎么也看不出来问题.CPU频率也正常,程序热点也没问题,可就是慢 ...

  5. [转帖]关于 AREX

    https://arextest.github.io/website/zh-Hans/docs/intro/ AREX 介绍​ 背景​ 对于一个初上线的简单服务,只需通过常规的自动化测试加上人工即可解 ...

  6. Linux无头模式使用mat分析dump的方法

    摘要 mat可以很好的进行jvm的内存dump的分析. 但是大部分服务器是没有GUI界面的. 而且就算是有GUI界面也很难直接使用. 但是随着jvm堆区越来越大. WindowsPC机器已经很难进行分 ...

  7. CentOS确认网口是否插入网线的办法

    最近公司的机器存在网络问题, 部分网络总是不通, 比较奇怪. 最近一直想处理好. 第一步: 先查看网口的设备信息 可以使用 ip link show 可以讲网口信息都展示出来. 一般情况下  NO-C ...

  8. 从好玩到好用:程序员用AI提效的那些事儿

    本片内容是[AI思维空间]ChatGPT纵横编程世界,点亮智慧火花的续作,主要记录组内开发小伙伴儿们在开发过程中的实际应用案例,记录典型案例,尽量不要和其他人重复,以解决开发过程中的实际问题为主,设计 ...

  9. 2023年了,做SEO还有必要吗?

    作者:京东科技 吴磊 搜索引擎工作原理 在搜索引擎网站的后台会有一个非常庞大的数据库,里面存储了海量的关键词,而每个关键词又对应着很多网址,这些网址是被称之为"搜索引擎蜘蛛"或&q ...

  10. 你不知道的Linux shell操作

    Linux Shell 脚本入门教程 Linux Shell 脚本是一种强大的工具,它允许您自动化日常任务和复杂操作.在本教程中,我们将逐步介绍几个实用的 Shell 脚本示例.每个示例都将详细说明, ...