译者:陈广
日期:2021-1-13
本节讲述如何将EPC Tag URI和EPC Raw URI转化为Gen 2标签的EPC内存区的二进制内容,反之亦然。
本节讲述如何将EPC Tag URI和EPC Raw URI转化为Gen 2标签的EPC内存区的二进制内容。
给定:
urn:epc:tag:
。编码过程:
位 | 域 | 内容 |
---|---|---|
$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) |
非标提示:解释:XPC 位(bits $210_h-21F_h$)不包含在此过程中,因为在[UHFC1G2]中定义的XPC位是通过重新调试间接写入的位。这些位不打算由应用程序显式写入。
给定:
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
编码过程:
Length
字段)提取最左边的NonZeroComponent
。此组件紧跟在最右边的冒号(:
)字符之后。将其视为十进制整数 $N$。这是原始负载中的位个数。DecimalRawURIBody
或HexRawURIBody
匹配,切换位为 0。
b. 如果UDI主体与语法(上述第二个模板)所生成的AFIRawURIBody
匹配,切换位为 1。AFI是AFIRawURIBody
(上面模板中的AFI字段)中最左侧的HexComponent
的值,被认为是8位无符号十六进制整数。如果HexComponent
的值大于等于256,停止:此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不能被编码。位 | 域 | 内容 | |
---|---|---|---|
$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个额外的零)。 |
本节讲述如何将Gen 2标签中EPC内存区的二进制内容转换为EPC Tag URI和EPC Raw URI。
给定:
过程:
x
后跟作为2位十六进制数字的 $A$(仅使用数字和大写字母),后跟一个点(.
)。x
,后跟作为 $(N/4)$-bit十六进制数字的 $V$(仅使用数字和大写字母)。urn:epc:raw:
后跟第4步结果(如果不为空),后跟作为十六进制数字无前导零的 $N$,后跟一个点(.
),后跟第3步结果(如果不为空),后跟第5步结果。这就是最终的EPC Raw URI。如果内存包含一个合法的EPC,此过程将Gen 2 EPC内存区的内容解码为以urn:epc:tag:
开始的EPC Tag URI,或解码为一个以urn:epc:raw:
开始的EPC Raw URI,否则。
给定:
过程:
urn:epc:tag:
开始的EPC Tag URI。继续下一 步。urn:epc:tag:
前缀之后。(如果15.2.4节产生一个空字符串,这一结果与步骤4中得到的结果相同)。得到的结果就是最终的EPC Tag URI。如果内存中包含一个合法的EPC,此过程将Gen 2 EPC内存区的内容解码为以urn:epc:id:
开始的Pure Identity EPC URI,或转换为一个以urn:epc:raw:
开始的EPC Raw URI。
给定:
过程:
该过程被第15.2.1和15.2.2节中的解码过程用作子程序。它计算一个字符串,用于插入到紧跟着urn:epc:tag:
或urn:epc:raw:
前缀,包含所有非零控制信息域的值(除了过滤值)。如果所有这些域为零,此过程返回一个空字符串,这种情况下,urn:epc:tag:
或urn:epc:raw:
前缀之后没有插入额外内容。
给定:
过程:
[att=xAA]
追加到 CF 后(包括方括号),其中AA
为 $A$ 作为两位十六进制数字的值。[umi=1]
追加到 CF 后(包括方括号)。[xpc=xXXXX]
追加到 CF 后(包括方括号),其中XXXX
为$X$作为四位十六进制数字的值。注意在Gen 2空中接口,当位$16_h$为非零时,位$210_h-21F_h$被插入到反向询查数据紧跟着位$1F_h$中。参考[UHFC1G2]。为了符合本规范,标签标识内存区(bank 10)在$00_h$到$07_h$的内存位置处将包含一个$E2_h$的8位ISO/IEC 15693分配类标识符。位置$07_h$以上的TID内存应配置如下:
Authenticate
和/或Challenge
命令)FileOpen
命令)标签型号(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所描述的那样,如果它实际存在的话。
如果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] |
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-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不包含唯一系列号 |
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。 |
如果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。 |
如果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。 |
本节为XTID中编码的序列化指定URI形式,称为序列化标签标识(STID)。STID URI形式可由使用序列化的TID来唯一地标识已经EPC编程的标签的商业应用程序使用。STID URI旨在补充而不是取代EPC,以用于RFID标签序列化的应用程序,以及唯一标识标签所附着的物理对象的EPC。例如,在应用程序中,使用STID来帮助确保标签没有被伪造。
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系列号的值。第三个HexComponent
中UpperHexChars
的个数等于XTID系列号的位个数除以4。
以下过程指定发如何将Gen 2标签TID区的给定内容构造为STID URI。
给定:
得到:
过程:
urn:epc:stid:
,小写字母x
,第3步作为3字符十六进制数字的MDID值,一个点(.
)字符,小写字母x
,第4步作为3字符十六进制数的标签型号值,一个点(.
),小写字母x
,第5步作为$(l/4)$字符十六进制数字的系列号。仅大写字母A
到F
可用于构造十六进制数。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标签数据标准的各个部分,下面列举了这些组件。
Gen 2 RFID标签上的编程数据可能符合以下规定的EPC标签数据标准。可以分别评估每个内存区的内容的一致性。
每个内存区可能处于“未初始化”状态工“初始化”状态。未初始化状态表明内存区不包含数据,它通常在标签出厂和被应用程序使用并第一次编程之间使用。在适用的情况下,每个状态分别给出一致性要求。
Gen 2 标签的保留内存区(Bank 00)的内容不符合EPC标签数据标准。保留内存区的内容在[UHFC1G2]中指定。
Gen 2 标签的EPC内存区(Bank 01)的内容遵循如下EPC标签数据标准。
如果满足以下所有条件,则EPC内存区在未初始化状态下的内容符合EPC标签数据标准:
如果满足以下所有条件,则EPC内存区在初始化状态下的内容符合EPC标签数据标准:
非标提示:解释:上述要求的结果是,为了符合本规范,除了从第$20_h$位开始的EPC之外,不能将额外的应用程序数据(例如第二个EPC)放入EPC内存区。
Gen 2 标签的TID内存区(Bank 10)的内容符合第16节规定的EPC标签数据标准。
Gen 2 标签的用户内存区(Bank 11)的内容符合第17节规定的EPC标签数据标准。
硬件和软件组件可以处理从Gen 2 RFID标签读取或写入的数据。无论是否涉及RFID标签,硬件和软件组件也可以以各种形式操纵电子产品代码。所有此类使用可能符合以下规定的EPC标签数据标准。具体要求符合什么取决于硬件或软件组件的预期或声称的功能是什么。
本节规定了产生和消费Gen 2标签的内存区内容的硬件和软件组件的一致性。这包括通过Gen 2空中接口直接与标签交互的组件,以及操纵原始内存内容的软件表示的组件。
定义:
将标签内存区 X 的原始内容从一个外部接口“传递”到另一个外部接口的硬件或软件组件同时也是Bank X消费者和Bank X生产者。例如,一个读卡器设备,它通过其网络“有线协议”从应用程序接收一个写入EPC标签内存的命令作为输入,其中该命令包括应用程序希望写入的标签内存的十六进制格式映像,然后通过Gen 2空中接口将该映像写入标签。就其“有线协议”而言,该设备是Bank 01消费者,就Gen 2空中接口而言,是Bank 01生产者。下面的一致性要求确保此类设备能够从应用程序中接受并将根据本规范有效的任何EPC区内容写入标签。
以下一致性要求适用于上文定义的Bank X消费者和生产者:
本节描述了使用本文规定的URI作为输入或输出的硬件和软件组件的一致性。
定义:
给定的硬件或软件组件可能满足上述定义中的不止一个,在这种情况下,它要接受下面所有相关的一致性测试。
以下一致性需求适用于Pure Identity URI EPC消费者:
urn:epc:id:
开头的任何不满足第6节的语法的输入字符串视为无效而拒绝,包括对各个组件中字符数的所有限制。以下一致性需求适用于Pure Identity URI EPC生产者:
urn:epc:id:
开头的不满足第6章语法的字符串作为输出,包括各个组件中字符数的所有约束。以下一致性需求适用于EPC Tag/Raw URI消费者:
TagURI
的字符串作为输入,并且可以按照14.3节编码而不产生异常。RawURI
的字符串作为输入。urn:epc:tag:
开头的任何不满足第12.4节语法或导致第14.3节的编码过程引发异常的输入字符串视为无效而拒绝,urn:epc:raw:
开头的不满足12.4节语法的输入字符串视为无效而拒绝。以下一致性需求适用于EPC Tag/Raw URI生产者:
TagURI
或RawURI
作为输出字符串,前提是满足TagURI
的任何输出字符串必须根据第14.3节的编码程序进行编码,而不会引发异常。urn:epc:tag:
或urn:epc:raw:
开头的字符串作为输出,上一个项目中指定的除外。本节规定了在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节相关部分的约束。
本节规定了EPC的可读表示的一致性。可在打印标签、文件等上使用的人类可读的表示。本节未规定EPC或RFID标签内容的人类可读表示应或应打印在任何标签、包装或其他介质上的条件;它只指定了当需要包含一个一致的人类可读表示时,什么是一致的人类可读表示。