标签编码与 EPC 内存
掌握标签内存架构和 GS1 编码,实现供应链集成
4 个内存库
每个 EPC Gen2 标签都有且仅有 4 个内存库,每个库都有特定用途。了解这一结构对于标签的编码、读取和安全保护至关重要。
Bank 00 (Reserved): 包含 32 位销毁密码 (Kill Password) 和 32 位访问密码 (Access Password)。默认值为 0x00000000。发送销毁密码会永久禁用标签,且不可逆。访问密码用于锁定内存库,防止未经授权的写入。
Bank 01 (EPC): 包含 StoredCRC(16 位,自动计算)、StoredPC/协议控制(16 位,指示 EPC 长度和标签功能)以及 EPC 值本身 — 对于 SGTIN-96,通常为 96 位(12 字节)。某些标签支持 128 位甚至 496 位的 EPC。
Bank 10 (TID): 出厂固化的标签标识符。包含芯片制造商代码、型号和唯一的序列号。该库是只读的,永远无法更改,因此在防伪和标签认证方面具有极高价值。
Bank 11 (User): 可选的额外存储空间。容量因芯片而异:NXP UCODE 9 为 0 位(无用户内存),Quanray QStar-7U 为 512 位(64 字节)。可用于存储批次号、检查日期、温度阈值或维护记录。写入前请务必检查可用容量。
SGTIN-96 编码 — 分步指南
SGTIN-96 是应用最广泛的 EPC 方案。它将 GTIN-14(您的产品条形码)加上一个唯一的序列号编码为 96 位(12 字节)。这使得每种产品类型可拥有多达 2740 亿个唯一的序列号。
96 位结构:Header(8 位,SGTIN-96 始终为 0x30)→ Filter(3 位:0=全部,1=POS,2=整箱,3=保留,4=内包装,5=保留,6=单元负载,7=组件)→ Partition(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 公司前缀长度决定了应使用哪个分区值。
使用位于 /tools/tds-rfid-converter 的 Nextwaves TDS RFID 转换器工具,以交互方式对 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 方案。每种方案都有自己的标头字节。
读写标签内存
在盘点期间读取标签是被动的——阅读器广播查询,标签从 Bank 01 返回其 EPC。但您也可以通过发送包含 Bank 编号、字偏移量和字数的 READ 命令,显式读取任何内存 Bank。
向标签写入数据需要更高的精度。标签必须经过单化(singulated,即只有一个标签响应),且写入操作一次只能进行一个字(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 位密码以确保安全性。访问密码(Access Password)用于锁定特定的内存库——一旦设置,该库在进行任何读写操作前都需要密码。销毁密码(Kill Password)在传输时会永久禁用标签——这是一种不可逆的操作,主要用于零售业中的消费者隐私保护(在结账后销毁标签)。
安全最佳实践:切勿在生产环境中使用默认的全零密码 (0x00000000)——它不提供任何安全性。为每个标签批次生成唯一的密码,或使用公司前缀作为种子。将密码存储在后端系统中,绝不要存储在标签本身(如果标签未锁定,密码内存是可以被读取的)。在编程后锁定密码库。考虑使用不可追踪(Untraceable)模式(适用于较新的芯片),该模式可以隐藏 TID 并减少 EPC,在不销毁标签的情况下提供隐私保护。
销毁(Kill)命令是永久且不可逆的。无法撤销。一旦标签被销毁,它将永远无法再响应任何读取器。请务必在软件中实现销毁密码验证,并在执行销毁命令前要求管理员授权。
GS1 Digital Link
GS1 Digital Link 将物理 RFID 标签与可通过网络访问的数字信息连接起来。它将 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 指南以深化您的知识。