射频识别(RFID)技术

EPC标签数据标准-5

译者:陈广
日期:2021-1-13

EPC内存区内容

本节讲述如何将EPC Tag URI和EPC Raw URI转化为Gen 2标签的EPC内存区的二进制内容,反之亦然。

编码过程

本节讲述如何将EPC Tag URI和EPC Raw URI转化为Gen 2标签的EPC内存区的二进制内容。

EPC Tag URI放入EPC内存区

给定:

  • EPC Tag URI开始于:urn:epc:tag:

编码过程:

  1. 如果依照12.4节,URI在句法上无效,停止:此URI无法编码。
  2. 对URI应用第14.3节的编码过程,结果是一个由 $N$-bit组成的二进制字符串。如果编码过程失败,则停止:引URI无法编码。
  3. 按下表填充Gen2 EPC内存区。
内容
$00_h-0F_h$ CRC 通过内存区的剩余部分计算CRC码。(通常这是由读卡器自动计算,所以实现此过程的软件不需要与之相关)
$10_h-14_h$ 长度 使用上述步骤2确定EPC二进制编码中的位数 $N$,除以16,如果 $N$ 不是16的倍数,则舍入到下一个更高的整数。
$15_h$ 用户内存指示符 如果EPC Tag URI包含一个控制域[umi=1],则为 1。
如果EPC Tag URI包含一个控制域[umi=0]或不包含umi控制域,则为 0。
注意,某些Gen 2标签可能忽略写入此位的值,而是从用户内存计算此位的值。参考[UHFC1G2]。
$16_h$ XPC指示符 此位由标签计算,在写入标签时被标签忽略,因此被此编码过程忽略。
$17_h$ 切换 0,指示EPC区包含一个EPC
$18_h-1F_h$ 属性位 如果EPC Tag URI包含一个控制域[att=xNN],值NN被认为是一个8-bit十六进制数。
如果EPC Tag URI不包含这样的控制域,则为0。
$20_h - ?$ EPC/UII 从上述步骤2的EPC二进制编码过程获得的 $N$ 个位,后跟足够的0 bit,使位数达到16的倍数(0-15个额外的0-bit)
表 15-1:从EPC Tag URI填充Gen 2 EPC内存区的方法

非标提示:解释:XPC 位(bits $210_h-21F_h$)不包含在此过程中,因为在[UHFC1G2]中定义的XPC位是通过重新调试间接写入的位。这些位不打算由应用程序显式写入。

EPC Raw URI放入Gen 2 EPC内存区

给定:

  • 一个以urn:epc:raw:开始的EPC Raw URI。这种URI为以下三种方式之一:
urn:epc:raw:OptionalControlFields:Length.xHexPayload
urn:epc:raw:OptionalControlFields:Length.xAFI.xHexPayload
urn:epc:raw:OptionalControlFields:Length.DecimalPayload

编码过程:

  1. 如果按照12.4节的语法,URI在句法上无效,停止:此URI不能被编码。
  2. 根据语法(上面模板中的Length字段)提取最左边的NonZeroComponent。此组件紧跟在最右边的冒号(:)字符之后。将其视为十进制整数 $N$。这是原始负载中的位个数。
  3. 确定切换位和AFI(如果存在) a. 如果URI主体与语法(上述第一和第三个模板)所生成的DecimalRawURIBodyHexRawURIBody匹配,切换位为 0。 b. 如果UDI主体与语法(上述第二个模板)所生成的AFIRawURIBody匹配,切换位为 1。AFI是AFIRawURIBody(上面模板中的AFI字段)中最左侧的HexComponent的值,被认为是8位无符号十六进制整数。如果HexComponent的值大于等于256,停止:此URI无法被编码。
  4. 确定 EPC/UII 载荷: c. 如果URI主体匹配语法(上述第一个模板)生成的HexRawURIBody或语法(上述第二个模板)生成的AFIRawURIBody,载荷是主体(上述模板中的HexPayload域)中最右侧的HexComponent,被认为是一个 $N$-bit无符号十六进制整数,其中 $N$ 由上述第2个步骤决定。如果HexComponent大于等于 $2^N$,停止:此URI不能被编码。 d. 如果URI的主体匹配语法(上述第三个模板)生成的DecimalRawURIBody,载荷是主体(上述模板中的DecimalPayload域)中最右侧的NumericComponent,被认为是一个 $N$-bit无符号十进制整数,其中 $N$ 由上述第二个步骤决定。如果NumericComponent的值大于等于$2^N$,停止:此URI不能被编码。
  5. 根据下表填充Gen 2 EPC内存区:
内容
$00_h-0F_h$ CRC CRC码由内存区剩余部分计算而来。(通常由读写器自动计算,实现此过程的软件无需关心它。)
$10_h-14_h$ 长度 EPC二进制编码中的位个数 $N$ 由上述第2个步骤决定,将其除以16,如果 $N$ 不是16的倍数,则舍入至下一个更高的整数。
$15_h$ 用户内存指示符 此位由标签计算,当标签在写入时忽略此值,因此被此编码过程忽略。
$16_h$ XPC指示符 用户内存指示符 此位由标签计算,当标签在写入时忽略此值,因此被此编码过程忽略。
$17_h$ 切换 此值由上述第3个步骤决定
$18_h-1F_h$ AFI/属性位 如果步骤3决定切换位为 1,则AFI值由步骤3.2决定,否则:如果URI包含一个控制域[att=xNN],值NN被认为是一个8-bit十六进制。如果URI不包含这样的控制域,AFI值为0
$20_h-?$ EPC/UII $N$ 在第4步决定,后跟足够的零以使位总数为16的倍数(0-15个额外的零)。
表 15-2:从EPC Raw URI填充Gen 2 EPC内存区的方法

解码过程

本节讲述如何将Gen 2标签中EPC内存区的二进制内容转换为EPC Tag URI和EPC Raw URI。

Gen 2 EPC内存区转换为EPC Raw URI

给定:

  • Gen 2标签的EPC内存区的内容。

过程:

  1. 提取长度位,位 $10_h-14_h$。将这些位视为无符号号数 $L$。
  2. 计算 $N=16L$。
  3. 如果 $17_h$ 设置为 1,提取位 $18_h-1F_h$,并将其视作一个无符号整数 $A$。构建一个字符串:字母x后跟作为2位十六进制数字的 $A$(仅使用数字和大写字母),后跟一个点(.)。
  4. 使用15.2.4节的解码过程对控制域进行解码。
  5. 从 $20_h$位开始提取 $N$ 个位,并将其视作一个无符号整数 $V$。构造一个字符串:字母x,后跟作为 $(N/4)$-bit十六进制数字的 $V$(仅使用数字和大写字母)。
  6. 构造一个字符串:urn:epc:raw:后跟第4步结果(如果不为空),后跟作为十六进制数字无前导零的 $N$,后跟一个点(.),后跟第3步结果(如果不为空),后跟第5步结果。这就是最终的EPC Raw URI。

Gen 2 EPC内存区转换为EPC Tag URI

如果内存包含一个合法的EPC,此过程将Gen 2 EPC内存区的内容解码为以urn:epc:tag:开始的EPC Tag URI,或解码为一个以urn:epc:raw:开始的EPC Raw URI,否则。

给定:

  • Gen 2 标签的EPC内存区的内容。

过程:

  1. 提取长度位,位 $10_h-14_h$。将这些位视为一个无符号整数 $L$。
  2. 计算 $N=16L$。
  3. 从 $20_h$ 位开始提取 $N$ 位。使用14.3.9节的解码过程,将 $N$ 位作为输入传递给此过程。
  4. 如果14.3.9节的解码过程失败,继续用15.2.1节的解码过程计算一个EPC Raw URI。否则第14.3.9节的解码过程产生一个以urn:epc:tag:开始的EPC Tag URI。继续下一 步。
  5. 应用15.2.4节的解码过程来解码控制域。
  6. 将15.2.4节的结果(包括所有尾部冒号)插入到在第4步获取的EPC Tag URI中的urn:epc:tag:前缀之后。(如果15.2.4节产生一个空字符串,这一结果与步骤4中得到的结果相同)。得到的结果就是最终的EPC Tag URI。

Gen 2 EPC内存区转换为Pure Identity EPC URI

如果内存中包含一个合法的EPC,此过程将Gen 2 EPC内存区的内容解码为以urn:epc:id:开始的Pure Identity EPC URI,或转换为一个以urn:epc:raw:开始的EPC Raw URI。

给定:

  • Gen 2标签的EPC内存区的内容。

过程:

  1. 使用15.2.2节的解码过程获取一个EPC Tag URI或一个EPC Raw URI。如果得到的是EPC Raw URI,则这是最终的结果。
  2. 否则,将12.3.3节的过程应用到第1步得到的EPC Tag URI,以获取一个Pure Identity EPC URI。这就是最终的结果。

控制信息的解码

该过程被第15.2.1和15.2.2节中的解码过程用作子程序。它计算一个字符串,用于插入到紧跟着urn:epc:tag:urn:epc:raw:前缀,包含所有非零控制信息域的值(除了过滤值)。如果所有这些域为零,此过程返回一个空字符串,这种情况下,urn:epc:tag:urn:epc:raw:前缀之后没有插入额外内容。

给定:

  • Gen 2标签EPC内存区的内容。

过程:

  1. 如果位 $17_h$ 为0,提取位 $18_h-1F_h$的值并当成一个无符号整数 $A$。如果 $A$ 为非零,将字符串[att=xAA]追加到 CF 后(包括方括号),其中AA为 $A$ 作为两位十六进制数字的值。
  2. 如果位 $15_h$为非零,将字符串[umi=1]追加到 CF 后(包括方括号)。
  3. 如果位$16_h$为非零,提取位$210_h-21F_h$的值并当成一个无符号整数$X$。如果$X$为非零,将字符串[xpc=xXXXX]追加到 CF 后(包括方括号),其中XXXX为$X$作为四位十六进制数字的值。注意在Gen 2空中接口,当位$16_h$为非零时,位$210_h-21F_h$被插入到反向询查数据紧跟着位$1F_h$中。参考[UHFC1G2]。
  4. 返回结果字符串(可能为空)。

标签标识(TID)内存区内容

为了符合本规范,标签标识内存区(bank 10)在$00_h$到$07_h$的内存位置处将包含一个$E2_h$的8位ISO/IEC 15693分配类标识符。位置$07_h$以上的TID内存应配置如下:

  • $08_h$:XTID(X)指示符(标签是否实现扩展标签标识,XTID)
  • $09_h$:安全(S)指示符(标签是否支持Authenticate和/或Challenge命令)
  • $0A_h$:文件(F)指示符(标签是否支持FileOpen命令)
  • $0B_h$到$13_h$:9-bit掩码设计标识符(MDID),可从GS1获取
  • $14_h$到$1F_h$:12-bit,由标签制造商定义的标签型号(TMN
  • $1F_h$以上:之后在16.2节中定义

标签型号(TMN)可以由给定MDID的持有者分配任何值。然而,[UHFC1G2]指出,“$07_h$以上的TID存储器位置应根据该类标识符值定义的注册机构来定义,并且至少应包含足够的识别信息,以便询查者唯一地识别标签支持的自定义命令和/或可选特性”。对于$E2_h$的分配类标识符,不管扩展TID是否存在,此信息是MDID和TMN。如果两个标签在自定义命令和/或可选功能上不同,则必须为它们分配不同的MDID/TMN组合。特别是,如果两个标签都包含扩展TID,并且它们各自的扩展TID中的值在除系列号值以外的任何值上不同,则必须为它们分配不同的MDID/TMN组合。(根据定义,具有相同MDID和TMN的任何两个标签的序列号必须不同,以便第16.3节中规定的系列化标签标识具有全球唯一性。)对于不包含扩展TID的标签,原则上应该可以使用MDID和TMN来查找扩展TID中编码的相同信息,前提是这些信息实际存在于标签上,因此,如果两个标签在功能上不同,那么必须使用不同的MDID/TMN组合,正如扩展TID所描述的那样,如果它实际存在的话。

短标签标识(TID)

如果XTID指示符(“X”是TID区的$08_h$位),TID区只包含如上所述的分配类标识符、XTID(“X”)、安全(“X”)、文件(“F”)指示符、掩码设计标识符(MDID)和标签类型(TMN)。未配置为处理扩展TID的读写器和应用程序将所有TID视为短标签标识,而不管XTID指示符是0还是1。

注意: 本文档中描述的内存映射与[UHFC1G2]中描述的内存映射相同。最低的字地址从映射的底部开始,并随着映射的上升而增加。位地址是由0位开始从左到右读取,以位15结束。文档中描述的域(MDID、TMN等)将其最高有效位(最高位号)放入内存中的最低位地址,将最低有效位(0位)放入内存中的最高位地址。以ISO/IEC 15963分配类标识符 $E2_h=11100010_2$ 为例。此域的最高有效位是1,它位于TID内存区地址$00_h$处。最低有效位地址是0,它位于TID内存区地址$07_h$处。当标签返回数据以响应读取命令时,它们从位地址0开始发送每个字,以位地址15结束。

TID内存区位地址 字中的位地址(十六进制)
0 1 2 3 4 5 6 7 8 9 A B C D E F
10h-1Fh MDID[3:0] 标签型号[11:0]
00h-0Fh E2h X S F MDID[8:4]
表 16-1:短TID格式

扩展标签标识(XTID)

XTID旨在向终端用户提供更多关于在其RFID应用程序中观察到的标签功能的信息。XTID通过添加对系列化的支持和标签实现的关键功能的信息来扩展格式。

如果XTID位(TID区的位$08_h$)设置为1,TID区将包含之前描述分配类标识符、掩码标识符(MDID)以及标签型号(TMN),还将包含本节所描述的附加信息。

如果上述定义的XTID为1,TID内存$20_h$到$2F_h$将包含一个16.2.1节描述的16-bit的XTID首部。XTID首部的值指定内存位置$30_h$及以上保存的是哪些附加信息。在扩展的TID中,TID内存位置$00_h$到$2F_h$是唯一固定的位置域;XTID首部后面的所有域在内存中的位置都可以根据XTDI首部中的值而变化。

XTID首部后面的XTID中的信息应由零个或多个多字的“段”组成,每个段被分为一个或多个“域”,每个域提供有关标签的特定信息,如下所示。XTID首部指示标签掩码设计者选择包含的XTID段中的哪一个。TID区中XTID段的顺序应遵循其在XTID首部中从最高有效位到最低有效位的顺序。如果不存在XTID段,则XTID首部中较低有效位的段应移到较低的TID内存地址,以保持XTID内存结构的连续。以这种方式,使用最小的内存量来提供系列号和/或描述标签的特征。下表显示了完全填充的XTID。

非标提示:对应此内存映射的XTID首部应当为$0011110000000000_2$。如果标签仅包含一个48-bit系列号,XTID首部应当为$0010000000000000_2$。系列号应当位地址$30_h$开始,位地址$5F_h$结束。如果标签仅包含BlockWrite和BlockErase段以及User Memory和BlockPermaLock段,XTID首部应当为$0000110000000000_2$。BlockWrite和BlockErase段将以位地址$30_H$开始,$6F_h$结束。用户User Memory和BlockPermaLock段将从位地址$70_h$开始,$8F_h$结束。

TDS所在小节 TID内存位地址 字中的位地址(十六进制)
0 1 2 3 4 5 6 7 8 9 A B C D E F
16.2.5 C0h-CFh User Memory和BlockPermaLock段[15:0]
B0h-BFh User Memory和BlockPermaLock段[31:16]
16.2.4 A0h-AFh BlockWrite和BlockErase段[15:0]
90h-9Fh BlockWrite和BlockErase段[31:16]
80h-8Fh BlockWrite和BlockErase段[47:32]
70h-7Fh BlockWrite和BlockErase段[63:48]
16.2.3 60h-6Fh 可选命令支持段[15:0]
16.2.2 50h-5Fh 系列号段[15:0]
40h-4Fh 系列号段[31:16]
30h-3Fh 系列号段[47:32]
16.2.1 20h-2Fh XTID首部段[15:0]
16.1 10h-1Fh 见表16-1的短TID格式
00h-0Fh
表 16-2:TID内存区的扩展标签标识(XTID)格式。请注意,上表已完全填写,实际使用的内存量、段的存在和段的地址位置取决于XTID首部。

XTID首部

表16-3显示了XTID首部。它包含了保留为将来使用的RFU位。扩展首部位和RFU位(位9-0)应当设置为0,以遵循本版本规范。XTID首部字的位15到13指示标签上系列化的存在和大小。如果它们设置为0,则XTID没有系列化。如果它们的值不为0,那么首部后面紧跟着标签系列号。当前位12到10中的可选功能处理方式不同。0表示读写器需要执行数据库查找,或者标签不支持可选功能。1表示标签支持可选功能,并且XTID包含描述此功能的段。

请注意,XTID首部的内容唯一地确定XTID的总长度以及每个包含XTID段的起始地址。

在字中的位置 描述
0 扩展首部是否存在 如果为非零,则表示在这里指定的16个XTID首部位之外存在额外的XTID首部位。它提供了一种在将来版本的EPC标签数据标准中扩展XTID的机制。此位应设置为零,以符合本次版本的EPC标签数据标准。
9-1 RFU 保留将来使用。此位应当设置为零,以符合本次版本的EPC标签数据标准。
10 User Memory和Block Perma Lock段是否存在 如果为非零,表明XTID包含16.2.5节中指定的User Memory和Block PermaLock段。
如果为0,表明XTID不包含User Memory和Block PermaLock字。
11 BlockWrite和BlockErase段是否存在 如果为非零,表明XTID包含16.2.4节中指定的BlockWrite和BlockErase段。
如果为零,表明XTID不包含BlockWrite和BlockErase字。
12 可选命令支持段是否存在 如果为非零,表明XTID包含16.2.3节中描述的可选命令支持段
如果为零,表明XTID不包含可选命令支持字
13-15 Serialisation 如果为非零,表明XTID包含一个唯一的系列号,其长度为 $48+16(N-1)$个位,其中$N$为此域的值。
如果为零,表明XTID不包含唯一系列号
表 16-3:XTID首部

XTID Serialisation

XTID serialisation的长度由XTID首部指定。标签掩码设计者ID指定的管理实体负责为每个标签型号分配唯一的序列号。系列号长度由以下算法得出:

0:表明没有serialisation 1-7:长度(位)=48 + (Value-1) * 6

可选命令支持段

如果在XTID首部中设置了位12,则将以下字添加到XTID中。保留为零的位域表示标签不支持该功能。功能的描述如下。

在段中的位置 描述
4-0 最大EPC尺寸 这5个bit的域应指示可编程到PC的前五位的最大尺寸。
5 重新调试支持 如果此位设置为1,则标签支持[UHFC1G2]中规定的重新调试。
6 访问 如果此位设置为1,则表明标签支持访问命令
7 单独锁位 如果此位设置为1,则表明标签支持对于每个内存区锁位,而不是简单地对整个标签实现一个单独的锁位。
8 自动UMI支持 如果此位设置为1,表明标签标签将自动设置其在PC字中的用户内存指示位。
9 PJM支持 如果此位设置为1,表明标签支持相位抖动调制。这是一个可选的调制模式,仅在Gen 2 HF标签中支持。
10 BlockErase支持 如果设置为1,表明标签支持BlockErase命令。标签是如何支持BlockErase命令的在16.2.4节中有描述。制造商可选择设置此位,但如果如何使用命令需要通过数据库查找进一步解释,则不包含BlockWrite和BlockErase域。
11 BlockWrite支持 如果设置为1,表明标签支持BlockWrite命令。标签是如何支持BlockWrite命令的在16.2.4节中有描述。制造商可选择设置此位,但如果如何使用命令需要通过数据库查找进一步解释,则不包含BlockWrite和BlockErase域。
12 BlockPermaLock支持 如果设置为1,表明标签支持BlockPermaLock命令。如何支持BlockPermaLock命令在16.2.5节中描述。制造商可以选择设置此位,但如果如何使用命令需要通过数据库查找进一步解释,则不包含BlockPermaLock和User Memory域。
15-13 [RFU] 此位保留,应当设置为0。
表 16-4:XTID字的可选命令支持

BlockWrite和BlockErase段

如果XTID首部的位11设置为1,那么XTID将包含四字BlockWrite和BlockErase段。为了指示不支持的命令,标签应将与该命令相关的所有域设置为零。当存在可选命令支持段(第16.2.3节,Optional Command Support Segment)时,情况总是如此,并且它表示不支持BlockWrite或BlockErase。域描述如下。

段中的位置 描述
7-0 块写入尺寸 BlockWrite命令所支持的最大块尺寸。如果在此域中描述了BlockWrite命令,此值应在1-255之间。
8 可变长块写入 此位用于指示标签是否支持可变长块的BlockWrite命令
16-9 块写入EPC地址偏移 这表示可以在EPC内存区中使用BlockWrite写入的第一个完整块的起始字地址。
17 无块写入EPC地址对齐 此位用于指示标签内存体系结构在EPC内存区中是否具有硬块边界。
如果此值为0,则标签EPC内存区存在硬块边界。标签将不接受从一个块开始到另一个块结束的BlockWrite命令。这些块边界由最大块尺寸和第一个完整块的起始地址决定。所有块具有相同的最大尺寸。
如果此值为1,则标签EPC内存区没有块边界。它将接受内存区中的所有BlockWrite命令。
25-18 块写入用户地址偏移 它表示可以在用户内存使用BlockWrite写入的第一个完整块的起始地址。
26 无块写入用户地址对齐 此位用于指示内存体系结构在用户内存区中是否具有硬块边界。
如果此值为0,则标签有用户内存区中存在硬块边界。标签将不接受从一个块开始到另一个块结束的BlockWrite命令。这些块边界由最大块尺寸和第一个完整块的起始地址决定。所有块具有相同的最大尺寸。
如果此值为1,则标签在用户内存区中不存在块边界。它将接受内存区中的所有BlockWrite命令。
31-27 [RFU] 此位保留,应当设置为0
39-32 块擦除尺寸 标签支持BlockErase命令的最大块尺寸。如果BlockErase命令在此域中描述,此值应为1-255之间。
40 可变长块擦除 此位用于指示标签是否支持可变长BlockErase命令。
如果此值为0,则标签仅支持在位[39-32]中指示的最大块尺寸的块擦除。
如果此值为1,则标签支持的大于[39-32]中指示的最大块尺寸的块擦除。
48-41 块擦除EPC地址偏移 它指示了EPC内存区中可以被擦除的第一个完整块的起始地址。
49 无块擦除EPC地址对齐 此位用于指示标签内存体系结构在EPC内存区中是否具有硬块边界。
如果此值为0,则标签的EPC内存区中具有硬块边界。标签将不接受从一个块开始到另一个块结束的BlockErase命令。这些块边界由最大块尺寸和第一个完整块的起始地址决定。所有块具有相同的最大尺寸。
如果此值为1,则标签的EPC内存区中不存在块边界。它将接受内存区中的所有BlockErase命令。
57-50 块擦除用户地址偏移 它指示了在用户内存区中可被擦除的第一个完整块的起始地址。
58 无块擦除用户地址对齐 位58用于指示标签内存体系结构在用户内存区中是否具有硬块边界。
如果此值为0,则标签的用户内存区中存在硬块边界。标签将不接受从一个块开始到另一个块结束的BlockErase命令。这些块边界由最大块尺寸和第一个完整块的起始地址决定。所有块具有相同的最大尺寸。
如果此值为1,则标签在用户内存区中无块边界。它将接受内存区中的所有BlockErase命令
63-59 [RFU] 这些位保留将来使用,应当被设置为0。
表 16-5:XTID块写入和块擦除信息

用户内存和BlockPermaLock段

如果XTID首部的位10设置为1,则存在此长度为两个字的段。位15-0指示以字为单位的用户内存尺寸。位31-16将指示在用户内存区中以字为单位的用于BlockPermaLock命令的块的尺寸。注意:这些块尺寸仅适用于BlockPermaLock命令,并独立于BlockWrite和BlockErase命令。

段中的位置 描述
15-0 用户内存尺寸 用户内存中16-bit字的个数
31-16 BlockPermaLock块尺寸 如果为非零,则表示可被永久锁定的每个块的以字为单位的尺寸。也就是块永久锁定功能允许可以被锁定的$N*16$-bit的块,其中$N$为此域的值。
如果为0,则XTID将不描述用于BlockPermaLock功能的块的尺寸。标签可能支持或不支持块的永久锁定。
如果存在Optional Command Support段(16.2.3节)并且它的BlockPermaLockSupported位为0,此域应当为0。
表 16-6:XTID 块的永久锁定和用户内存信息

序列化标签标识(STID)

本节为XTID中编码的序列化指定URI形式,称为序列化标签标识(STID)。STID URI形式可由使用序列化的TID来唯一地标识已经EPC编程的标签的商业应用程序使用。STID URI旨在补充而不是取代EPC,以用于RFID标签序列化的应用程序,以及唯一标识标签所附着的物理对象的EPC。例如,在应用程序中,使用STID来帮助确保标签没有被伪造。

STID URI语法

STID URI句法由以下语法指定:

STID-URI ::= "urn:epc:stid:" 2*( "x" HexComponent "." ) "x" HexComponent

其中第一和第二个HexComponents应当由三个UpperHexChars组成,并且第三个HexComponent应当由12、16、20、24、28、32或36个UpperHexChars组成。

第一个HexComponent为16.1节中指定的掩码设计者ID(MDID)的值。第二个HexComponent为16.1节指定的标签型号的值。第三个HexComponent为16.2.1和16.2.2节中指定的XTID系列号的值。第三个HexComponentUpperHexChars的个数等于XTID系列号的位个数除以4。

解码过程:TID区内容转化为STID URI

以下过程指定发如何将Gen 2标签TID区的给定内容构造为STID URI。

给定:

  • Gen 2标签的TID内存区的内容:位串$b_0 b_1 ... b_{N-1}$,其中,$N$大于等于48.

得到:

  • STID-URI

过程:

  1. 位$b_0 ... b_7$应匹配值$11100010$,如果不是,停止:TID区内容不包含此处指定的XTID。
  2. 位$b_8$应为1。如果不是,停止:TID区内容不包含此处指定的XTID。
  3. 将$b_8 ... b_{19}$当成一个12位无符号整数。它是标签掩码设计者ID(MDID)。
  4. 将$b_{20} ... b_{31}$当成一个12位无符号整数。这是标签型号。
  5. 将$b_{32} ... b_{34}$当成一个3位无符号整数$V$。如果$V$为0,停止:此TID区内容不包含一个系列号。否则,计算系列号长度:$L=48+16(V-1)$。将位$b_{48} b_{49} ... b_{48+L-1}$作为一个$L$-bit无符号整数,这是系列号。
  6. 连接以下字符串构造STID-URI:前缀urn:epc:stid:,小写字母x,第3步作为3字符十六进制数字的MDID值,一个点(.)字符,小写字母x,第4步作为3字符十六进制数的标签型号值,一个点(.),小写字母x,第5步作为$(l/4)$字符十六进制数字的系列号。仅大写字母AF可用于构造十六进制数。

用户内存区内容

EPCglobal用户内存区提供一个可变尺寸内存来存储有关标签EPC内存区对象标识的附加数据属性。

用户内存可能存在或不存在于给定标签上。当存在用户内存,EPC内存区的位$15_h$将设置为0。当存在用户内存且未初始化时,位EPC内存区的位$15_h$将被设置为0,并且用户内存区的位$03_h$到$07_h$将被设置为0。当用户内存存在并已经初始化,EPC内存中协议控制字的位$15_h$应当设置为1,以指示用户内存中编码数据的存在,并且用户内存区应当按此处规定编程。

为符合本规范,用户内存区的第一个八位应当包含一个[ISO15962]中规定的数据存储格式标识符(DSFID)。这与其他标准保持兼容性。DSFID由三个逻辑域组成:访问方法、扩展语法指示符和数据格式。访问方法在DSFID的最高两位指定,并且如果使用“Packed Object”访问方法,则使用值“10”编码以指定本文附录 I 中指定的“Packed Object”访问方法;如果采用“No-Directory”访问方法,则用值“00”编码并指定[ISO15962]中规定的“No-Directory”访问方法。如果第二个DSFID字节存在,则下一个位设置为1。低5位指定数据格式,它指示内存内容中什么数据系统占主导地位。如果GS1应用标识符(AI)占主导地位,值01001指定向ISO注册的GS1数据格式09,这为AI数据元素的使用提供了最有效的支持。要规范的附录 I 到附录 M 包含了完整的“Packed Objects”访问方法规范;预计该内容将分别作为ISO/IEC 15962第2版[ISO15962]的附录I至M出现,当后者可用时,完整的DSFID定义将在ISO/IEC 15962[ISO15962]中指定。GS1规定了管理应用标识符(AIs)打包对象编码的表格的完整定义,并根据ISO/IEC 15961的过程在ISO注册,并在E.3中重现。此表的格式类似于L中的表L-1所示的假设示例,但其条目可容纳所有有效应用程序标识符的编码。

当一个标签的用户内存区编程符合本规范时,应使用Packed Objects访问方法或No-Directory访问方法进行编码,前提是如果使用No-Directory访问方法,则不应使用[ISO15962]中规定的“application-defined”压缩模式。当标签的用户存储区编程符合本规范时,可以使用包括数据格式09的任何注册数据格式。

如果附录 I 中的Packed Objects规范引用Extensible Bit Vectors(EBVs),则应使用附录D中规定的格式。

符合本规范的用户内存区读写硬件或软件组件应完全实现本规范附录 I 至 M 中规定的Packed Object访问方法(意味着支持所有注册数据格式),应执行[ISO15962]中规定的No-Directory访问方法,并可执行[ISO15962]和该标准后续版本中规定的其他访问方法。然而,硬件或软件组件不需要实现[ISO15962]中规定的无No-Directory访问方法的“application-define”压缩模式。其预期功能仅用于初始化标签的硬件或软件组件(例如打印机)可以通过实现Packed Object或No_Directory访问方法来符合本规范的子集,但在这种情况下不需要实现两者。

非标提示: 解释:本规范允许两种方法对用户内存中的数据进行编码。由于ISO/IEC 15962“No-Directory”访问方法的历史较长,并且在某些最终用户群体中得到认可,因此该方法具有一定的安装基础。Packed Object访问方法的发展提供了更有效的读写标签,并减少标签内存消耗。
不允许使用No-Directory访问方法的“应用程序定义”压缩模式,因为接收系统无法理解它,除非双方对压缩工作方式有相同的定义。

请注意,Packed Objects访问方法支持对数据进行编码,无论是否使用类似目录的结构进行随机访问。在[ISO15962]中,另一个访问方法被命名为“No Directory”,这一事实不应被认为意味着Packed Objects访问方法总是包含一个目录。

一致性

EPC标签数据标准的性质对EPCglobal结构框架的许多部分产生了影响。与其它标准的定义一个硬件或软件接口不一样,标签数据标准定义数据格式,以及在等效格式之间转换的过程。数据格式和转换过程都被任何给定系统中的各种硬件、软件和数据组件所使用。

本节定义了符合EPC标签数据标准的含义。如上所述,有许多类型的系统组件有可能符合EPC标签数据标准的各个部分,下面列举了这些组件。

RFID标签数据的一致性

Gen 2 RFID标签上的编程数据可能符合以下规定的EPC标签数据标准。可以分别评估每个内存区的内容的一致性。

每个内存区可能处于“未初始化”状态工“初始化”状态。未初始化状态表明内存区不包含数据,它通常在标签出厂和被应用程序使用并第一次编程之间使用。在适用的情况下,每个状态分别给出一致性要求。

保留内存区(Bank 00)的一致性

Gen 2 标签的保留内存区(Bank 00)的内容不符合EPC标签数据标准。保留内存区的内容在[UHFC1G2]中指定。

EPC内存区的一致性(Bank 01)

Gen 2 标签的EPC内存区(Bank 01)的内容遵循如下EPC标签数据标准。

如果满足以下所有条件,则EPC内存区在未初始化状态下的内容符合EPC标签数据标准:

  • 位 $17_h$ 应当设置为0。
  • 位 $18_h$ 到 $1F_h$(包含)的属性位应当设置为0。
  • 位 $20_h$ 到 $27_h$(包含)应当设置为0,指示一个未初始化的EPC内存区。
  • EPC内存区的所有其他位应符合第9节和/或[UHFC1G2]的规定(如适用)。

如果满足以下所有条件,则EPC内存区在初始化状态下的内容符合EPC标签数据标准:

  • 位 $17_h$ 应当设置为0。
  • 位 $18_h$ 到 $1F_h$(包含)的属性位应当遵循11节中的规定。
  • 位 $20_h$ 到 $27_h$(包含)应当设置为一个表14-1规定的有效的EPC首部值,即表中未标记为“保留”或“未编程标签”的首部值。
  • 设$N$为表14-1中对应于首部值行的“编码长度”列的值,让$M$等于 $20_h + N - 1$。位$20_h$至$M$应为有效的EPC二进制编码;也就是说,第14.3.7节的解码过程应用于这些位时,不应引起异常。
  • 从EPC内存区的位$M+1$到结尾或位$20F_h$(以先发生的为准)应设置为零。
  • EPC内存区的所有其它位都应当遵循第9章和/或[UHFC1G2]的规定(如果适用)。

非标提示:解释:上述要求的结果是,为了符合本规范,除了从第$20_h$位开始的EPC之外,不能将额外的应用程序数据(例如第二个EPC)放入EPC内存区。

TID内存区(Bank 10)一致性

Gen 2 标签的TID内存区(Bank 10)的内容符合第16节规定的EPC标签数据标准。

用户内存区(Bank 11)一致性

Gen 2 标签的用户内存区(Bank 11)的内容符合第17节规定的EPC标签数据标准。

软件和硬件组件的一致性

硬件和软件组件可以处理从Gen 2 RFID标签读取或写入的数据。无论是否涉及RFID标签,硬件和软件组件也可以以各种形式操纵电子产品代码。所有此类使用可能符合以下规定的EPC标签数据标准。具体要求符合什么取决于硬件或软件组件的预期或声称的功能是什么。

产生或消费Gen 2 内存区内容的硬件和软件组件的一致性

本节规定了产生和消费Gen 2标签的内存区内容的硬件和软件组件的一致性。这包括通过Gen 2空中接口直接与标签交互的组件,以及操纵原始内存内容的软件表示的组件。

定义:

  • Bank X 消费者(其中 X 是Gen 2 标签的特定内存区):一种硬件或软件组件,通过某些外部接口接收Gen 2 标签的第 X 区的内容作为输入。这包括通过Gen 2空中接口读取标签的组件(即,读卡器),以及操纵原始存储器内容的软件表示的组件(例如,从询问器接收十六进制格式的标签内存映像作为输入的“中间件”软件)。
  • Bank X 生产者(其中 X 是Gen 2 标签的特定内存区):一种硬件或软件组件,通过某些外部接口输出Gen 2 标签的第 X 区的内容。这包括通过Gen 2空中接口直接与标签交互的组件(即,可写的询问器和打印机 - 传送到标签的内存内容是通过空中接口输出的),以及操纵原始内存内容的软件表示的组件(例如,输出“写”的软件)命令传递给询问器,作为命令的一部分,传递十六进制格式的标签内存映像)。

将标签内存区 X 的原始内容从一个外部接口“传递”到另一个外部接口的硬件或软件组件同时也是Bank X消费者和Bank X生产者。例如,一个读卡器设备,它通过其网络“有线协议”从应用程序接收一个写入EPC标签内存的命令作为输入,其中该命令包括应用程序希望写入的标签内存的十六进制格式映像,然后通过Gen 2空中接口将该映像写入标签。就其“有线协议”而言,该设备是Bank 01消费者,就Gen 2空中接口而言,是Bank 01生产者。下面的一致性要求确保此类设备能够从应用程序中接受并将根据本规范有效的任何EPC区内容写入标签。

以下一致性要求适用于上文定义的Bank X消费者和生产者:

  • Bank 01(EPC区)消费者应接受符合本规范的任何内存内容作为输入,如第18.1.2节所述。
  • 如果Bank 01消费者将接收到的EPC内存区的内容解释为输入,则其解释方式应与本规范中EPC内存区内容的定义一致。
  • 当硬件或软件组件为包含EPC的Bank 01生成输出时,Bank 01(EPC区)生产者应按照第18.1.2节的规定生成符合本规范的输出内存内容。如果将位$17_h$设置为1,则Bank 01生产者可以生成包含非EPC的输出。
  • 如果 Bank 01生产者从组件构建EPC内存区的内容,则应以与此一致的方式进行。
  • Bank 10(TID区)消费者应接受符合本规范的任何内存内容作为输入,如第18.1.3节所述。
  • 如果Bank 10消费者将接收到的TID内存区内容作为输入,它应以符合本规范中TID内存区内容定义的方式进行。
  • Bank 10(TID区)生产者应当以符合本规范的内存内容产生输出,如18.1.3节所规定的一致性。
  • 如果Bank 10生产者从组件构建TID内存区的内容,它应当以符合本规范的方式进行。
  • 读取或写入用户内存区(Bank 11)的硬件或软件组件的一致性应符合第17节的规定。

产生或消费EPC的URI形式的硬件和软件组件的一致性

本节描述了使用本文规定的URI作为输入或输出的硬件和软件组件的一致性。

定义:

  • EPC URI消费者: 通过外部接口接收EPC URI作为输入的硬件或软件组件。EPC URI消费者如果接受EPC Pure Identity URI作为输入,则可以进一步分类为Pure Identity URI EPC消费者;如果接受EPC Tag URI或EPC Raw URI作为输入,则可以进一步分类为EPC Tag/Raw URI消费者。
  • EPC URI生产者: 通过外部接口接收EPC URI作为输出的硬件或软件组件。EPC URI生产者如果产生EPC Pure Identity URI输出,则可以进一步分类为Pure Identity URI EPC生产者,如果产生EPC Tag URI或EPC Raw URI输出,则可以进一步分类为EPC Tag/Raw URI生产者。

给定的硬件或软件组件可能满足上述定义中的不止一个,在这种情况下,它要接受下面所有相关的一致性测试。

以下一致性需求适用于Pure Identity URI EPC消费者:

  • Pure Identity URI EPC消费者应当接收任何满足第6章语法的字符串作为输入,包括各种组件中字符数的所有约束。
  • Pure Identity URI EPC消费者应将以字符urn:epc:id:开头的任何不满足第6节的语法的输入字符串视为无效而拒绝,包括对各个组件中字符数的所有限制。
  • 如果Pure Identity URI EPC消费者解释Pure Identity URI的内容,其应以与本规范和本文引用的规范(包括GS1通用规范)中的Pure Identity EPC URI定义一致的方式进行。

以下一致性需求适用于Pure Identity URI EPC生产者:

  • Pure Identity EPC URI生产者应当产生满足第6章语法的字符串作为输出,包括各个组件中字符数的所有约束。
  • Pure Identity EPC URI生产者不应当以字符urn:epc:id:开头的不满足第6章语法的字符串作为输出,包括各个组件中字符数的所有约束。
  • 如果Pure Identity EPC URI生产者从组件构建Pure Identity EPC URI,它应以符合本规范的方式进行。

以下一致性需求适用于EPC Tag/Raw URI消费者:

  • EPC Tag/Raw URI消费者应当接受任何满足2.4章语法产生的TagURI的字符串作为输入,并且可以按照14.3节编码而不产生异常。
  • EPC Tag/Raw URI消费者接受任何满足12.4节语法产生的RawURI的字符串作为输入。
  • EPC Tag/Raw URI消费者应当将以字符urn:epc:tag:开头的任何不满足第12.4节语法或导致第14.3节的编码过程引发异常的输入字符串视为无效而拒绝,
  • 接受EPC Raw URI作为输入的EPC Tag/Raw URI消费者应当将所有以字符urn:epc:raw:开头的不满足12.4节语法的输入字符串视为无效而拒绝。
  • 在EPC Tag/Raw URI消费者解释EPC Tag URI或EPC Raw URI的内容的范围内,其应以与本规范和本文引用的规范(包括GS1通用规范)中的EPC Tag URI和EPC Raw URI的定义一致的方式进行。

以下一致性需求适用于EPC Tag/Raw URI生产者:

  • EPC Tag/Raw URI生产者应当将满足12.4节语法所产生的TagURIRawURI作为输出字符串,前提是满足TagURI的任何输出字符串必须根据第14.3节的编码程序进行编码,而不会引发异常。
  • EPC Tag/Raw URI生产者不应当将以字符urn:epc:tag:urn:epc:raw:开头的字符串作为输出,上一个项目中指定的除外。
  • 如果EPC Tag/Raw URI生产者从组件构建EPC Tag URI或EPC Raw URI,它应当以符合本规范的方式进行。

在EPC形式之间转换的硬件和软件组件的一致性

本节规定了在EPC形式之间转换的硬件和软件组件的一致性,例如将EPC二进制编码转换为EPC Tag URI、将EPC Tag URI转换为Pure Identity EPC URI、将Pure Identity EPC URI转换为EPC Tag URI或将EPC Tag URI转换为Gen 2标签的EPC内存工的内容。根据定义,任何接受这些形式作为输入或输出的组件也因此接受第18.2.1节和第18.2.2节相关部分的约束。

  • 将Gen 2标签的EPC内存区的内容作为输入,并产生相应的EPC Tag URI或EPC Raw URI作为输出的硬件或软件组件应产生相当于将第15.2.2节的解码程序应用于输入的输出。
  • 将Gen 2标签的EPC内存区的内容作为输入并产生相应的EPC Tag URI或EPC Raw URI作为输出的硬件或软件组件应产生相当于将第15.2.3节的解码程序应用于输入的输出。
  • 采用EPC Tag URI作为输入并产生相应Pure Identity EPC URI作为输出的硬件或软件组件应产生相当于对输入应用第12.3.3节程序的输出。
  • 采用EPC Tag URI作为输入并产生Gen 2标签EPC内存区内容作为输出(无论是通过实际写入标签还是通过产生原始内存内容的软件表示作为输出)的硬件或软件组件应产生相当于对输入应用第15.1.1节程序的输出。

人类可读形式的EPC和EPC内存区内容的一致性

本节规定了EPC的可读表示的一致性。可在打印标签、文件等上使用的人类可读的表示。本节未规定EPC或RFID标签内容的人类可读表示应或应打印在任何标签、包装或其他介质上的条件;它只指定了当需要包含一个一致的人类可读表示时,什么是一致的人类可读表示。

  • 为符合本规范,电子产品代码的可读表示应为第6节中规定的Pure Identity EPC URI。
  • 为符合本规范,Gen 2标签的EPC内存区的全部内容的可读表示应为第12节中规定的EPC Tag URI或EPC Raw URI。当可以这样做时(即,当内存区内容包含有效的EPC时),应该使用EPC Tag URI。
;

© 2018 - IOT小分队文章发布系统 v0.3