标签编码和 EPC 存储器
掌握标签存储器架构和 GS1 编码,以实现供应链集成
4 个存储库
每个 EPC Gen2 标签都有 4 个存储库,每个存储库都有特定的用途。了解此结构对于编码、读取和保护您的标签至关重要。
库 00(保留):包含 32 位 Kill 密码和 32 位访问密码。默认值为 0x00000000。发送 Kill 密码后,会永久禁用标签. 不可逆。访问密码锁定存储库,以防止未经授权的写入。
库 01 (EPC):包含 StoredCRC(16 位,自动计算)、StoredPC/协议控制(16 位,指示 EPC 长度和标签功能)以及 EPC 值本身. 通常为 SGTIN-96 的 96 位(12 字节)。某些标签支持 128 位甚至 496 位 EPC。
库 10 (TID):出厂编程的标签标识符。包含芯片制造商代码、型号和唯一的序列号。此库是只读的,永远无法更改. 这使其在防伪和标签身份验证方面非常宝贵。
库 11 (User):可选的额外存储。大小因芯片而异:NXP UCODE 9 有 0 位(无用户存储器),Quanray QStar-7U 有 512 位(64 字节)。将其用于批号、检查日期、温度阈值或维护记录。写入前务必检查可用容量。
SGTIN-96 编码. 逐步操作
SGTIN-96 是应用最广泛的 EPC 方案。它将 GTIN-14(您的产品条形码)加上一个唯一的序列号编码成正好 96 位(12 字节)。这允许每个产品类型最多有 2740 亿个唯一的序列号。
96 位结构:标头(8 位,对于 SGTIN-96 始终为 0x30)→ 过滤器(3 位:0=全部,1=POS,2=整箱,3=保留,4=内包装,5=保留,6=单元负载,7=组件)→ 分区(3 位:定义公司前缀和项目参考之间的位数分配)→ 公司前缀(20–40 位)→ 项目参考(4–24 位)→ 序列号(38 位)。
分区值 (0–6) 决定了公司前缀的长度:P=0 → 40 位前缀(12 位数字),P=1 → 37 位(11 位数字),P=2 → 34 位(10 位数字),P=3 → 30 位(9 位数字),P=4 → 27 位(8 位数字),P=5 → 24 位(7 位数字),P=6 → 20 位(6 位数字)。您的 GS1 公司前缀长度决定了要使用的分区值。
使用 Nextwaves TDS RFID 转换器工具,网址为 /tools/tds-rfid-converter,以交互方式编码和解码 SGTIN-96 值。输入您的 GTIN-14 + 序列号,即可立即获得十六进制 EPC。
┌────────┬──────┬─────┬──────────────┬──────────────┬──────────────┐
│ Header │Filter│Part │Company Prefix│Item Reference│ Serial │
│ 8 bits │3 bits│3bits│ 20-40 bits │ 4-24 bits │ 38 bits │
│ 0x30 │ 0-7 │ 0-6 │ GS1 prefix │ product ref │ unique ID │
└────────┴──────┴─────┴──────────────┴──────────────┴──────────────┘
Partition table (defines prefix/item bit allocation):
P=0: 40-bit prefix (12 digits) P=4: 27-bit prefix (8 digits)
P=1: 37-bit prefix (11 digits) P=5: 24-bit prefix (7 digits)
P=2: 34-bit prefix (10 digits) P=6: 20-bit prefix (6 digits)
P=3: 30-bit prefix (9 digits)
Example: 3034257BF7194E4000001A85
Header=0x30 Filter=1 Part=5 Prefix=0614141
Item=812345 Serial=6789 → GTIN-14: 80614141123458其他 EPC 方案
除了 SGTIN-96 之外,GS1 还定义了其他几种 96 位 EPC 方案,用于不同的供应链标识符。每个方案都有自己的标头字节。
读取和写入标签存储器
在库存期间读取标签是被动的. 阅读器广播一个查询,标签从库 01 响应其 EPC。但您也可以通过发送带有库号、字偏移量和字数的 READ 命令来显式读取任何存储库。
写入标签需要更高的精度。必须对标签进行单选(只有一个标签响应),并且写入一次一个字(16 位)。完整的 96 位 EPC 写入需要 6 个连续的字写入。每次写入需要 10–20 毫秒,因此仅对 EPC 数据进行编码一个标签需要 60–120 毫秒。
常见的写入失败:标签离天线太远(写入需要比读取更强的信号. 将标签置于1米以内)。场内有多个标签(单标签识别失败. 隔离目标标签)。标签存储器已锁定(需要访问密码)。写入验证失败(重试,或者标签可能有缺陷. 典型缺陷率为万分之一到三)。
最佳实践:写入后务必通过读回数据并进行比较来验证。在极少数情况下,写入命令可能会成功,但会损坏相邻的位。读后写验证可以捕获这些问题。
TX → 5A 00 01 02 11 00 0C [EPC_12_BYTES] [CRC16]
Write per 16-bit word: 10-20ms
Full 96-bit EPC = 6 words = 60-120ms total
With access password:
TX → 5A 00 01 02 11 00 10 [PWD_4B] [EPC_12B] [CRC16]标签安全和密码
EPC Gen2 标签支持两个 32 位密码以确保安全。访问密码锁定特定的存储器库. 一旦设置,该库在任何读取或写入操作之前都需要密码。当传输时,Kill 密码会永久禁用标签. 这是一种不可逆的操作,主要用于零售业的消费者隐私(在结账后销毁标签)。
安全最佳实践:切勿在生产中使用默认的全零密码 (0x00000000). 它不提供任何安全性。为每个标签批次生成唯一的密码,或使用您的公司前缀作为种子。将密码存储在您的后端系统中,切勿存储在标签本身上(如果标签已解锁,则可以读取密码存储器)。在编程后锁定密码库。考虑使用不可追踪模式(在较新的芯片上可用),该模式隐藏 TID 并减少 EPC,从而在不销毁标签的情况下提供隐私。
Kill 命令是永久性的,不可逆转。无法撤消。一旦标签被销毁,它将永远无法再次响应任何阅读器。始终在您的软件中实施 kill 密码验证,并在执行 kill 命令之前需要经理授权。
GS1 数字链接
GS1 Digital Link 将物理 RFID 标签与可 web 访问的数字信息连接起来。它将 EPC 数据转换为标准 URI,该 URI 解析为产品信息、身份验证服务、召回通知或可持续性数据。
流程:标签 EPC(例如,3034257BF7194E4000001A85)→ 解码为 GTIN-14 (80614141123458) + 序列号 (6789) → 构建 URI:https://id.gs1.org/01/80614141123458/21/6789。此 URI 可以解析到您的产品页面、身份验证 API 或 GS1 Digital Link 解析器网络中注册的任何服务。
实际应用:在零售店扫描已标记的服装 → URI 解析为产品护理说明、尺码指南和可持续性认证。扫描已标记的药品 → URI 解析为身份验证(此产品是否为真品?)、有效期和召回状态。扫描已标记的资产 → URI 解析为维护历史记录和检查计划。
Nextwaves 工具在解码任何 SGTIN-96 EPC 时会自动生成 Digital Link URI。使用在线 TDS 转换器或 MCP decode_sgtin96 工具即时生成 Digital Link。
继续阅读
探索更多 RFID 指南,以加深您的知识。