2.2 电子产品编码(EPC)
2.2.1 EPC体系及其特点
全球电子产品编码(EPC)体系是新一代的与 EAN · UCC(European Article Numbering,欧洲商品编码;UCC,美国统一代码委员会)编码兼容的新编码标准,是全球统一标识系统的延伸和拓展,是全球统一标识系统的重要组成部分,也是物联网的核心与关键。在物联网中 EPC 编码与现行的全球贸易项目代码(Global Trade Item Number, GTIN)相结合,由现行的条码标准逐渐过渡到EPC标准,或者在未来的供应链中EPC和EAN·UCC系统共存。EPC是存储在射频标签中的主要信息(对于某些 EPC标签来说是唯一信息)且得到UCC和EAN 两个国际标准的主要监督机构的支持。EPC 与当前广泛使用的EAN·UCC代码不同,其目标是提供对物理世界对象的唯一标识,一个EPC编码分配给一个且仅一个物品使用,其首要作用是作为网络信息的参考,其本质上是在线数据的“指针”。Internet中使用的基准是统一资源标识符(Uniform Resource Identifier, URI),包括统一资源定位符(Uniform Resource Locator, URL)和统一资源名称(Uniform Resource Name, URN),由域名服务(Domain Name Service, DNS)翻译为相关的网络协议(IP)地址,即网络信息的地址。同样,AUTO-ID中心提供的对象名称解析服务(ONS)直接将 EPC编码翻译成IP地址,IP地址对应的主机储存相关的产品信息。
为了实现上述功能,EPC 编码需要满足如下几个特殊的规定和要求。首先,必须有足够多的EPC 编码来满足过去、现在和将来对物品标识的需要,即必须考虑所有物理对象的数量,具体字节的分配情况如表2.2所示。从世界人口总数(大约60亿)到大米总粒数(粗略估计1亿亿粒), EPC必须有足够大的地址空间来标识所有这些对象。现在 EPC标签的编码应用较多的主要有64位、96位及256位三种,具体结构如表2.3所示。其次,必须保证 EPC 编码分配的唯一性并寻求解决编码冲突的方法。这就产生了由谁或什么组织负责EPC 编码的分配问题。除了组织管理和立法机关的管理,EPC 命名空间的创建和管理可以借助于自动化软件。最后,还有一个关于 EPC 码的使用期限和再利用问题。某些组织可能需要不定期地跟踪某一产品,就不能对该产品重新分配 EPC 码。至少希望在可预见的将来,对特殊的产品,将有一个唯一永久标识。
表2.2 具体字节的分配情况
表2.3 EPC96/256位编码结构
另外,EPC 编码还需要具有如下几个鲜明的特点,以便实现物联网的统一和应用实施。
科学性:结构明确,易于使用、维护;
兼容性:EPC 编码标准与目前广泛应用的EAN·UCC 编码标准是兼容的,GTIN 是 EPC 编码结构中的重要组成部分,目前广泛使用的GTIN, SSCC和GLN等都可以顺利转换到EPC中去;
全面性:可在生产、流通、存储、结算、跟踪、召回等供应链的各环节全面应用;
合理性:由 EPC Global、各国 EPC 管理机构(中国管理机构为 EPC Global China)和被标识物品的管理者分段管理、共同维护、统一应用,具有合理性;
国际性:不以具体国家、企业为核心,编码标准全球协商一致,具有国际性;
无歧视性:编码采用全数字形式,不受地方色彩、语言、经济水平、政治观点的限制,是无歧视性的编码。
2.2.2 EPC编码策略
货品、集装箱和托盘都要按照不同的编码结构进行编码。例如在 EPC 结构中,企业可以沿袭原有的系列货运包装箱编码(Serial Shipping Container Code, SSCC),将其转换为相应格式的EPC 编码 SSCC-32或SSCC-64。容器内的货品记录和货运数据存储在计算机网络中并自动与容器建立联系。更进一步,运输集装箱的卡车、货车车厢、船舶或仓库也可使用相应的EPC编码。
图2.2所示为物品货运的EPC 层级图,这个层级图会随着时间的推移而改变。通过记录 EPC 结构以及转换次数,就可以记录产品的出货情况。当一个满载贴有 EPC标签的货物的集装箱(集装箱上也有自己的EPC标签)通过装有读写器的门时,读写器会读到大量 EPC标签。为了高效地读取信息,读写器必须了解EPC编码所表示的物品层次。基于以上考虑,EPC编码中设置了分区值这一可选字段,用于标识物品在物流货运上的层次。通过 EPC的结构,物品货运的过程就可以利用不同EPC编码的组合记录下来。
EPC 除了标识单个对象,还可以标识组合装置等,AUTO-ID中心建议用EPC标识装配件和组合装置及单个货品。组合装置可采用描述货运数据的方式来进行描述,组合装置通常连接着很多元器件,被认为是复杂的。但是,组合装置和集装箱两者之间非常类似,都有如图2.2所示的层级结构。除了组合装置和集装箱外,对于那些没有物理联系的实体组成的组合体,如拥有不同 EPC码的相同物体的集合也要分配一个EPC码。如此一来,EPC码的总数量会超出物理实体的数目,也使冗余码的出现成为可能。
图2.2 EPC层级结构图
EPC 编码包括使用协议的版本号、物品的生产厂商代码、物品的分类代码及单个物品的序列编号4部分数据字段。当前的条码标准,如 EAN·UCC-128应用标识符(Application Identifier, AI)的结构中就包含信息,如货品重量、尺寸、有效期、目的地等。而 AUTO-ID中心建议消除或最小化 EPC 编码中嵌入的信息量,其基本思想是利用现有的计算机网络和当前的信息资源来存储数据,使EPC成为一个信息引用者,拥有最小的信息量。无论EPC中是否存储信息,EPC 编码的目标都是用来标识物理对象。事实上,在已出台的标签规范中,Class 0~Class 4不仅只含有EPC编码,还允许用户编程进行读写自有信息。
2.2.3 EPC标签的通用标识符
EPC标签编码的通用结构是一个二进制比特串,由一个分层次、可变长度的标头以及一系列数字字段组成(如图2.3所示),码的总长、结构和功能完全由标头的值决定。标头具有可变长度,如2位和8位,2位的标头有3个可能的值(01,10和11),8位标头有63个可能的值(标头前两位必须是00,而00000000保留,以允许使用长度大于8位的标头)。标签长度可以通过检查标头最左(或称为“引导头”)的几位进行识别,而引导头的理想值为1位(最好不要超过2位或者3位),使RFID读写器可以很容易确定标签长度。
图2.3 EPC标签编码的通用结构
EPC标签数据标准定义的编码方案标头如表2.4所示。若当前已分配的标头前两位非00或前5位为00001,则可以推断该标签是64位;否则标头指示此标签为96位。某些引导头目前不与特定的标签长度绑定在一起,这样为规范之外的其他标签长度选择留下余地,尤其是对那些能够包含更长的编码方案的长标签。
表2.4 电子产品编码
EPC标签数据标准定义了一种通用的标识类型,即 GID-96(General Identifier,通用标识符),它不依赖任何已知的现有规范或标识方案。此标识由4个字段组成:通用管理者代码、对象分类代码、序列代码以及标头,标头保证EPC命名空间的唯一性,如表2.5所示。
表2.5 通用标识符(GID-96)
通用管理者代码标识一个组织实体(本质上一个公司管理者或其他管理者),负责维持后继字段的编号、对象分类代码和序列代码。EPC Global分配通用管理者代码给实体,确保每一个通用管理者代码是唯一的。对象分类代码用于识别一个物品的种类或“类型”,且在每一个通用管理者代码之下必须是唯一的。例如,消费性包装品(Consumer Packaged Goods, CPG)的库存单元(Stock Keeping Unit, SKU)或高速公路系统的不同结构,比如交通标志、灯具和桥梁等,这些产品的管理实体为一个国家。最后,序列代码在每一个对象分类代码之下是唯一的。换句话说,管理实体负责为每一个对象分类代码分配唯一的、不重复的序列代码。
2.2.4 系列化全球贸易标识代码(SGTIN)
SGTIN(Serialized Global Trade Identification Number)是一种新的标识类型,它基于 EAN·UCC通用规范中的全球贸易项目代码(GTIN), GTIN标识一个特定的对象类,为了给单个对象创建一个唯一的标志符,管理实体在GTIN 基础上增加了一个序列代码,GTIN和唯一序列代码的结合,称为序列化GTIN(SGTIN)。
图2.4为由十进制SGTIN部分抽取、重整、扩展字段进行编码的示意图。SGTIN 由厂商识别代码、项目代码以及序列代码等元素组成。厂商识别代码由EAN或UCC分配给管理实体,在一个EAN·UCC GTIN十进制编码内同厂商识别代码相同;项目代码由管理实体分配给一个特定对象分类,EPC 编码中的项目代码从 GTIN中获得,并连接 GTIN的指示位和项目代码位为一个单一整数;序列代码由管理实体分配给单个对象,是SGTIN的重要组成部分。
图2.4 由十进制SGTIN部分抽取、重整、扩展字段进行编码
SGTIN的EPC编码方案允许EAN·UCC系统GTIN和序列代码直接嵌入EPC标签,校验位不进行编码。SGTIN 有两个编码方案:SGTIN-64(64位)和SGTIN-96 C(96位),下面将详细说明。
1.SGTIN-64
SGTIN-64包括5个字段——标头、滤值、厂商识别代码索引、贸易项代码以及序列代码,详见表2.6。
表2.6 SGTIN-64的结构、标头和各字段的十进制容量
标头为2位,二进制值为10。
滤值不是SGTIN纯标识的一部分,而是用于快速过滤和预选基本物流类型的附加数据,例如单一货品、内包装、箱子和托盘等。64位和96位SGTIN的滤值相同,但尚未出台关于滤值的标准规范,表2.7列出了一些例子。
表2.7 SGTIN的滤值
厂商识别代码索引是EAN·UCC厂商识别代码的编码索引,不是厂商识别代码本身,而是一个表的索引,该表提供厂商识别代码的同时指明厂商识别代码长度。在《厂商识别代码索引编码的64位标签转化为 EAN·UCC 厂商识别代码》中有关于这一内容的详细说明。
贸易项代码字段是对 GTIN 贸易项代码和指示位的编码。指示位同贸易项代码字段按照以下方式结合:贸易项代码字段以零开头,指示位置于该字段最左边位置上。例如,00235同235是不同的,若指示位为1,则与00235结合变为100235,该整数编码为二进制作为贸易项代码值。序列代码由一个连续的数字组成,25位容量限制连续数字最大为33、554、431,比在 EAN·UCC系统规范中的序列代码小,且只能由数字组成。
2.SGTIN-96
除了标头之外,SGTIN-96由滤值、分区、厂商识别代码、贸易项代码以及序列代码5个字段组成,如表2.8所示。
表2.8 SGTIN-96的结构、标头和各字段的十进制容量
标头为8位,二进制值为00110000。分区指示随后的厂商识别代码和贸易项代码的分开位置,该结构与 EAN·UCC GTIN中的结构相匹配。分区的可用值以及厂商识别代码和贸易项代码字段的相关大小在表2.8中给出。
厂商识别代码包含EAN·UCC厂商识别代码的一个逐位编码。
贸易项代码包含 GTIN 贸易项代码的一个逐位编码。指示位同贸易项代码字段的结合与SGTIN-64相同。
序列代码包含一个连续的数字。这个连续的数字的容量小于EAN·UCC系统规范序列代码的最大值,而且在这个连续的数字中只包含数字。