尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

EPC与RFID:从条码到单品级唯一标识的落地实践

EPC与RFID:从条码到单品级唯一标识的落地实践 同一款矿泉水一箱24瓶条码扫一万次也只会得到同一个号码。这句话听着像废话但它恰恰暴露了传统商品条码的天花板它标识的是这一款商品而不是这一瓶水。仓库丢了3瓶、货架上少了2瓶、退货箱里混进了别家门店的货条码系统一概不知道因为它从一开始就没打算回答这类问题。而电子产品代码EPCElectronic Product Code就是为了回答这些问题被设计出来的——它要做的不是识别品类而是区分个体。这篇文章我会把EPC从编码位、标签物理层、系统中间层一路讲到零售、制造、医疗的落地形态再聊聊我在实际验证和估算时踩过的那几个坑。不管你是刚接触物联网的学生还是正在评估RFID方案的工程师读完应该能对EPC到底是个什么东西、能干什么、哪里会出问题有一套自己的判断。1. 一条条码扫一万次也是同一个号码这就是EPC要解决的问题1.1 从这一款到这一件识别粒度上那道真实的坎要理解EPC得先理解它在哪一层做了加法。EAN-13条码大概13位数字UPC-A是12位它们编码的核心是厂商识别码加商品项目码指向的是一个SKUStock Keeping Unit最小库存单位。SKU的意思就是同一款、同一规格的所有商品共用同一个号码。二十四瓶同批次的矿泉水共用一个条码同一个型号的十台笔记本也共用一个条码。这种设计在POS收银场景下够用因为收银只需要知道这是什么、多少钱。但一旦需求变成这一台具体是哪一台、它从哪个厂出来、现在在哪个环节、什么时候被谁动过SKU级别的标识就彻底不够用了。你需要的是单品级唯一标识Unique Item Identification也就是给每一件实物分配一个在全局范围内不重复的号并且这个号能贴在物体上、能被非接触地批量读出来。EPC就是这套思路的产物。它最早由麻省理工学院主导的Auto-ID Center在1999年前后提出目标是给全球供应链里的每一个物理对象建立唯一的身份后来这套体系由EPCglobal接管再往后并入GS1标准体系。所以说EPC有两个层面的含义一层是那串比特级的编码规则另一层是围绕这串编码建立起来的整套识别与信息交换体系。很多人只记住了前者结果在设计系统时才发现真正难的是后者。我个人的理解是EPC最本质的贡献不是发明了一套新编号而是把标识和数据做了分离。编码本身只承载最精简的信息——谁生产的、哪一类、第几件剩下的生产日期、批次、质检结果、物流轨迹通通不写在标签里而是存在后端数据库靠编码去查。这样标签可以做得足够便宜、足够小而信息容量又不受物理限制。1.2 拆开看EPC解决的是身份连带解决的是批量和非接触单品级唯一标识这件事其实二维码也能做——给每瓶水打印一个不同的二维码理论上同样实现了唯一标识。那EPC为什么还要走RFID这条路关键在于读取方式和批量能力。二维码是光学识别必须看见才能读一次读一个被遮挡、被压在箱底就读不到而且需要人工对准、逐个扫描。RFID走的是射频标签在天线场范围内就能被激发并回传一次可以读几十到几百个标签不需要视线不需要对准甚至不需要人参与。这两个特性叠加起来才让整托盘货物过一下门就完成盘点这件事成为可能。所以更准确的说法是EPC定义了标识什么RFID尤其是UHF频段的EPC Gen2标签提供了怎么把标识批量、快速、非接触地读出来而EPCIS这类标准定义了读出来之后怎么组织成有意义的事件。这三者缺一不可。只做编码不做读出方案那就是纸上谈兵只做硬件不做数据模型读出来的就是一串没人能看懂的十六进制。1.3 同一个托盘两种识别方式下的差别举个具体场景说清楚这个差别在哪儿。假设一个出库口一托盘上码了40箱货每箱12件。用条码出库操作员推着托盘到门口用手持枪逐箱扫描每箱扫一次40次扫描按每次1.5秒算大概一分钟还得保证每张面单都朝外、没破损、没被胶带盖住。扫码完成后系统只知道40箱货出库了箱内12件具体是哪12件看条码是看不出来的——除非把箱子拆开逐件扫那就是480次扫描。用EPC标签出库托盘上装一个托盘级标签每箱一个箱级标签每件一个单品标签如果做聚合关系的话系统里记录着这个托盘包含这40箱每箱包含这12件。托盘经过通道门式的读写器几百毫秒内读完全部标签系统一次性拿到完整的层级关系不需要拆箱不需要对准。差异不只体现在速度上更体现在数据的完备性和可信度上——前者的数据是人工扫描的抽样结果后者是自动采集的全量结果。当然现实里没有这么理想。金属、液体、标签密度、读写器功率、天线角度任何一项没调好读取率就可能从接近满值掉到七八成而剩下那两三成恰恰是需要人工补录的部分。这也是后面我要专门讲的一块内容。2. 把96位拆开看EPC编码里到底装了什么2.1 头部、过滤值、分区、公司前缀、物品参考、序列号EPC有好几种长度规格工程上最常打交道的还是96位版本原因很实际位数够用、标签存储代价低、空中接口传输快。96位的EPC里最常用的一种编码方案叫SGTIN-96也就是序列化全球贸易项目代码Serialized Global Trade Item Number。把这96位拆开大致是六个部分。最前面8位是头部Header用来告诉读写器这是一张SGTIN-96的标签别的方案比如SSCC-96、GRAI-96、GIAI-96、SGLN-96都各有自己的头部值读写器先读头再决定怎么解析后面88位。接着3位是过滤值Filter Value它的作用是在大规模读取时做一个粗略的预筛——比如区分这个是单品、是内包装、是箱、还是托盘让应用层不必把几万个标签全当一类处理。再往后3位是分区值Partition这是整套编码里比较费解但很关键的一个设计。公司前缀Company Prefix和物品参考Item Reference这两段的长度是可变的分区值告诉解析器这两段各占多少位。公司前缀就是GS1给你的厂商识别码位数从6位到12位不等位数短的厂商能容纳的商品种类多、位数长的少物品参考对应GTIN里标识具体商品的那几位。在SGTIN-96里公司前缀加物品参考合计固定44位分区值决定这44位怎么切。最后38位是序列号Serial Number38位意味着每款商品可以区分大约2748亿件实际使用中远用不到这个上限。提示序列号用完之后不能循环使用。这是设计EPC方案时必须提前规划的一件事后面第5节我会展开讲为什么。2.2 拿一个真实的GTIN走一遍转换流程光看定义容易糊走一遍流程就清楚了。假设某厂商有一个GTIN-14是由13位的GTIN加上包装指示符组成的。转换的思路是把GTIN里公司前缀物品参考的部分原封不动搬进EPC去掉校验位再补上一个自己生成的序列号。具体步骤大致是这样先确定自己的公司前缀是几位比如7位那么在公司前缀加物品参考的44位里公司前缀占20位、物品参考占24位然后把GTIN中的商品项目参考部分按位填充接着选分区值这个组合对应某个特定的分区编号写入头部和过滤值最后为每一件实物分配一个不重复的序列号填进最后38位。这个过程听起来机械但工程上有两个地方特别容易出问题。一是校验位处理GTIN最后一位是校验位EPC里不保存它转换时要明确丢弃读取后再还原成GTIN时必须重新计算校验位不能直接拼接否则对接GS1体系的系统会报格式错误。二是序列号生成策略如果由多条产线、多个工厂各自生成序列号就必须保证全局不冲突常见做法是引入产线/工厂的标识位或者由中心服务统一发号绝不能各自用自增数。组成部分96位方案中的大致位置作用常见坑头部前8位标识编码方案类型自定义方案未注册读写器无法识别过滤值3位粗筛层级单品/箱/托盘全填同一值失去预筛意义分区值3位决定公司前缀与物品参考的切分与公司前缀实际位数不匹配公司前缀随分区变化标识厂商位数记错导致解析错位物品参考随分区变化标识具体商品与GTIN映射关系没建立文档序列号38位区分个体生成规则冲突或提前耗尽2.3 96位不是唯一答案64位、198位、256位的取舍在哪说96位最常用不代表它适合所有场景。64位方案省空间但公司前缀和序列号都被压缩得很厉害序列号只剩三十几位甚至更少适合那种自己体系内部用、不需要全球唯一、也不打算跨组织交换的封闭场景。现实里确实有人用64位的短编码做门禁卡、资产卡图的就是便宜。反过来还有198位和256位的方案。位数多了能塞进去的信息就多比如可以带上批次、日期、甚至是加密的签名信息。但代价也很直接标签芯片要存更多位、空中接口传输时间更长、同样的读取窗口内能读到的标签数量更少。而且位数一旦超出标准方案范围跨组织互操作性就成了问题——别人家的读写器可能压根不认。我的建议是除非有明确的合规或安全需求比如某些防伪场景需要标签内嵌签名否则默认选96位。全球化供应链上的设备、中间件、EPCIS服务对96位的支持是最成熟的踩坑概率最低。用非常规位数之前一定先确认你的读写器固件、中间件版本、后端解析库这三层都支持。3. 编码之外标签、读写器和那层总被忽略的中间件3.1 一颗标签芯片里真正决定成败的是哪几个指标标签看着就是一片薄薄的贴纸里面的门道比想象中多。一颗UHF RFID标签通常由芯片和天线两部分构成芯片负责存储和逻辑天线负责把读写器发来的射频能量收集起来给芯片供电再把芯片的回应反射回去。这就是所谓的无源反向散射机制——标签自己不带电池全靠读写器的电磁场养活。选标签时我会重点看四个指标。读取灵敏度单位通常是dBm数值越小越好比如-22dBm的标签在同样功率下比-18dBm的能读得更远。写入灵敏度通常比读取灵敏度差几个dB因为写操作需要的能量更高这个指标在做现场初始化时特别关键很多标签读得到但写不进去就是卡在这里。芯片内存除了EPC区还有用户区User Memory要存额外数据就得看用户区够不够。封装形式干嵌标签是裸的、成本低但脆弱湿嵌标签带不干胶可以直接贴抗金属标签加了隔离层柔性标签能贴合曲面。还有个容易被忽略的点同一批标签的一致性。有些低价标签个体差异很大实测时抽10张读取距离都在4米量产用起来就会发现有5%的标签怎么调都读不到2米。所以做实验千万别只测几张样品至少抽几十张看分布而不是看平均值。3.2 Gen2协议与那个让人又爱又恨的Q参数UHF RFID的空中接口协议里工程上最常见的是Class-1 Generation-2通常简称为Gen2对应国际标准ISO/IEC 18000-6C。这套协议解决的核心问题是很多标签同时回应时怎么不打架。它的机制是时隙ALOHA读写器发一个盘存命令同时告诉标签这一轮有N个时隙每个标签随机挑一个时隙回应。N的大小由Q参数控制可选范围通常是0到15时隙数等于2的Q次方。标签少的时候Q调小读取快标签多的时候Q调大减少碰撞。但Q调太大也有代价——时隙太多一轮盘存时间变长盘点速度反而下降。实际调优时你会看到一个很有意思的现象标签数量从10个增加到100个读取率可能先降后升因为读写器会自动调整Q值但如果现场标签数量波动特别大比如一会儿5个一会儿200个自适应算法就容易被带偏。这种情况下手动设定Q值往往比自动更稳。另外标签密度高的时候把读写器功率适当调低反而可能提升读取率因为功率太高会让边缘标签也一起抢答碰撞概率上升。这个反直觉的操作我在现场验证过不止一次。3.3 ALE、EPCIS、ONS这三个名字别再混为一谈标签读出来了数据往哪儿走这里有三层经常被混为一谈的东西。中间件这一层负责把读写器吐出来的原始读取记录做过滤、去重、聚合。同一张标签在一秒钟内可能被读到几十次中间件要把它压成一条有意义的事件。早期的概念叫Savant后来演进成标准化的ALEApplication Level Events定义了怎么按时间窗口和条件过滤、怎么把读取分组成报告。EPCISEPC Information Services是更上层的东西管的是事件而不是读取。它的核心是四个维度什么对象What、什么时间When、什么地点Where、什么业务背景Why。围绕这四维它定义了五种事件类型对象事件ObjectEvent某个对象发生了什么、聚合事件AggregationEvent装进了哪个容器、拆分事件TransformationEvent原料变成了成品、事务事件TransactionEvent和哪个业务单据关联、以及后来补充的关联事件AssociationEvent。ONSObject Naming Service则更像互联网里的DNS作用是把一个EPC映射到一个可以查询信息的网络地址。设计初衷很宏大——扫到任何一个EPC都能顺着ONS找到它的权威信息来源。但现实中因为涉及数据主权和商业机密ONS的落地远不如DNS普及多数企业更倾向于在自己的私有系统里做映射。我用一个生活类比来串一下中间件相当于门口的保安负责把来来往往的人流整理成今天有多少人进出EPCIS相当于登记簿记录张三几点几分从哪个门进来、去办什么事ONS相当于查号台输入一个人的编号能查到他在哪个单位。三者职责完全不同做方案时如果把它们混着设计后期扩展会非常痛苦。4. 真的有人在用EPC在几个行业里的实际形态4.1 服装零售单品级标签跑得最通的一块试验田服装零售是单品级EPC标签落地最成熟的领域原因很朴素衣服不怕金属、不怕液体单价足够高能覆盖标签成本而且SKU高度碎片化——同一款衣服有尺码和颜色的组合天然需要更细的粒度管理。另外服装的流转环节多工厂、仓库、门店、退货每个环节都有降本空间。它解决的核心问题是库存准确率。传统门店靠人工盘点账实不符是常态系统里显示有货、货架上找不到的情况非常普遍这直接导致缺货和过度补货并存。打上单品级标签之后盘点的频率和准确度都上了一个台阶试衣间也能做实时捕捉哪些衣服被试了但没买数据能回流到补货决策里。我在看这类项目时会关注一个细节标签是缝在吊牌里还是直接缝在衣服上。吊牌方式成本低、容易部署但顾客买走之后标签就离开了门店退货时如果吊牌被剪掉这件衣服在系统里就消失了。缝在衣服上的方式更彻底但要在生产环节就完成对供应商的配合度要求高而且涉及顾客隐私的讨论更多。这两种方案的选择往往决定了整个项目的商业模式不只是技术选型。4.2 制造业与航空把在制品和工装管起来制造业的诉求和零售不太一样。零售要的是准确的库存快照制造要的是过程可见性。一个典型的场景是在制品追踪工件在几十道工序之间流转哪一批卡在哪个工位、停留了多久、有没有跳过某道工序靠纸质流转单和人工录入很难保证准确。航空制造业对这块的要求尤其严因为很多部件需要全生命周期追溯出了问题要能定位到具体批次、具体工序、甚至具体操作记录。给关键部件绑定EPC标签每个工位装读写器工件经过时自动记录事件这套方案在技术上已经相当成熟真正的难点在环境适配——车间里金属件多、电磁干扰强、油污高温标签很容易失效。工装夹具和模具的管理也是一个被低估的场景。这些东西单价高、数量大、经常被借来借去丢了就是直接损失。用标签加通道门做进出管理比人工台账可靠得多。这块我见过最实用的做法不是全厂铺开而是只对高频流转、高价值的工装做管控把投入产出比拉回来。4.3 医疗与药品序列化合规在推着走的那一类需求医疗领域有一个明显特点需求很大程度上不是想不想做的问题而是法规要求。药品序列化在多个国家和地区都有明确的时间表和规则要求到单品级别可追溯医疗器械的UDI唯一器械标识体系也在持续推进。这类场景下EPC或者类似的唯一标识方案不是可选项而是入场门槛。医院内部的资产管理是另一个方向。高值耗材、移动设备、手术器械包管理难点在于流转频繁、盘点耗时、账实经常对不上。给器械包加标签消毒、发放、回收每个环节自动记录能省下大量人工盘点时间。但医疗场景对标签有额外约束比如要能耐受高温高压灭菌、不能影响器械功能、材质要符合相关要求选型时必须先看这些硬约束再看读取性能。4.4 图书馆、档案、IT资产那些小而稳的落地场景这类场景的特点是规模不大、环境可控、需求明确反而是最容易做成功的。图书馆用标签做借还和盘点已经相当普及一本书一张标签读者自助借还工作人员用推车式读写器一排排扫过去比原来逐本翻条码快得多。IT资产管理也是类似的逻辑。服务器、笔记本、网络设备每次盘点都要人工记录序列号费时还容易错。贴标签之后过一下门或者用手持设备走一圈就完成。档案管理则更进一步因为档案盒里可能有很多份文件还要做盒内清单的关联涉及聚合关系的记录——这个盒子包含哪些文件文件取出来之后聚合关系怎么更新这些都要在系统里设计清楚。我见过一些项目把标签贴上就完事了结果档案被取走之后系统里还显示在盒子里反而比不做还糟。5. 落地时才暴露的问题几个被低估的细节5.1 金属和液体面前读距会掉得很难看这是UHF RFID最经典的物理限制。金属会反射电磁波同时还会改变标签天线的阻抗特性导致标签失谐液体尤其是含水多的物品会吸收射频能量标签拿不到足够的电自然回不来。这两类环境里标签读取距离从五六米掉到几十厘米甚至完全读不到都很常见。应对手段主要有几个方向。用抗金属标签这类标签在背面加了隔离层常见的是泡棉或陶瓷介质把标签天线和金属表面隔开一定距离恢复阻抗匹配。调整标签与金属的间距即使不用专用标签让标签离金属表面有大约几毫米到一厘米的空隙效果也会明显改善。改用HF频段13.56MHz的HF标签在金属环境下的表现通常比UHF稳定代价是读取距离短、批量读取能力弱所以更适合近距离定点读取的场景。改变部署位置比如不贴在金属件本体上而是贴在包装箱、托盘或者挂绳上从源头绕开问题。注意评估阶段一定要在真实环境里测不要只拿几张样品在办公桌上测。桌上的读取距离和仓库里的读取距离经常差一倍以上。5.2 一次读几百个标签有时候反而要主动限制它很多人对RFID的期待是读得越多越好、越快越好。但实际系统里读取范围和读取数量是需要被约束的。如果读写器功率开满可能会读到隔壁通道、隔壁货架甚至楼上仓库的标签数据里混进不属于本次业务的对象后端逻辑就要花大量精力去过滤还可能出错。常见的约束手段包括降低功率把读取范围收窄到刚好覆盖目标区域调整天线角度和位置用方向性更好的天线把场型塑造成需要的形状设置过滤值让读写器只上报特定层级比如只读单品、不读箱标在中间件层做空间过滤结合业务规则排除明显不合理的读取。还有一个实操经验通道门的宽度和天线布置对读取率影响非常大。太宽了边缘读不到太窄了货物通过时容易碰撞。一般通道门宽度控制在合理范围内配合两侧和顶部的天线才能保证托盘通过时各个方位都被覆盖到。这个尺寸不是拍脑袋定的需要按货物形态实测。5.3 数据量比标签数量可怕得多假设一个仓库有5万件带标签的货物每天进出各一次每次经过通道门被读到再加上库内盘点和货位读取一天产生的原始读取记录很容易到百万级。如果不做过滤和聚合直接把这些原始记录写进数据库用不了多久查询就会变慢存储成本也会失控。所以数据管道的设计比标签选型更需要提前想清楚。读取层面要靠中间件做去重和聚合把一秒钟几十次的重复读取压成一条事件事件层面要明确哪些事件需要长期保存、哪些只需要保留一段时间业务层面要避免把原始读取记录直接暴露给前端系统而是提供聚合后的状态查询接口。我见过一些项目因为跳过了这层设计上线三个月后数据库就撑不住了。另外一个常被忽略的问题是时间同步。多个读写器分布在不同位置如果设备时钟不一致同一个物体在两处的读取事件顺序就会错乱做轨迹还原时会得到荒谬的结论。部署前一定要把NTP同步做起来这件事做起来不难但漏了就很难补。5.4 搜索EPC时撞见的那些同名缩写最后一个提醒是关于命名混淆的。EPC这三个字母在不同的语境里指向完全不同的东西。除了本文讲的电子产品代码工程建设领域里它指工程总承包模式在项目管理里它指挣值管理中的完工估算在汽车行业它指电子动力控制系统在某些校园语境里它也是一些机构名称的缩写比如工程实践中心、电子实验中心之类你在搜索时可能会撞见一堆这样的结果它们跟本文讲的电子产品代码完全是两回事只是字母撞车。所以在做资料检索和团队沟通时最好把全称写清楚。跟供应商沟通时说EPC对方可能理解成完全不同的东西浪费一轮沟通成本。我在第一次接触这个领域时就因为没写全称被回复了一堆工程总承包的资料白白绕了一圈。6. 从零验证一个EPC方案我会怎么排第一轮实验6.1 先定物理层再谈应用层如果现在要我从零验证一个方案我会严格按物理层优先的顺序来。原因很简单应用层的架构可以改代码可以重写但物理层的选型一旦定错后面所有工作都是白费。第一步确定频段。需要远距离、批量、快速读取的场景选UHF需要近距离、抗金属液体、和手机交互的场景选HF或者NFC两者都要的场景就得做双频方案成本和复杂度都会上去。第二步确定标签形态贴纸、卡片、抗金属、柔性、耐高温按被标识物的材质和使用环境来定。第三步确定读写器类型固定式、手持式、还是通道门式取决于读取点在业务流里的位置。这三步定完之后再做现场测试测试内容不是能不能读到而是在什么条件下读得到、什么条件下读不到。我会设计几组变量距离、角度、标签朝向、目标数量、环境干扰每一组测几十次取统计值而不是测一次觉得可以就往下走。6.2 第一轮实验的目标不是读得到而是读得稳这是我最想强调的一点。实验室里把标签贴在桌面上读写器摆在半米外读取率100%这种结果毫无参考价值。真正有价值的实验是回答在最差的条件下读取率是多少具体怎么设计我会准备一批真实货物按真实摆放方式堆叠把读写器放在实际会安装的位置然后统计多轮读取的结果。重点看三个数平均读取率、最低读取率、读取率不达标的那些标签有什么共同点。第三个数据最有价值它往往能直接指出问题所在——是某个位置的标签被遮挡了还是某类材质的货物导致的还是标签批次本身有问题。还有一个实操技巧把测试过程录下来。因为高速读取时肉眼根本看不清哪些标签被读到了事后对照视频和日志定位问题的效率会高很多。这个习惯是我在做密集读取测试时养成的一开始觉得麻烦后来发现省下的时间远超录像的成本。6.3 从验证走向规模化我会看的几个信号小范围跑通不等于可以铺开。从验证到规模化之间我会重点看这几个信号。读取率的稳定性。如果实验里读取率在不同轮次之间波动超过一定幅度说明系统还不够健壮先别急着扩大范围。异常处理的闭环。读取不到的时候现场作业流程里有没有补录机制这个机制会不会成为常态而不是例外如果补录变成常态说明方案本身有问题。数据结构能否支撑扩展。标签数量翻十倍、事件数量翻百倍之后后端还跑得动吗这需要在验证阶段就做压力测试不能等到上线才发现。成本结构是否成立。标签是消耗品单件成本乘以数量才是真实投入。有些场景标签成本占比很低怎么用都划算有些场景标签成本比商品利润还高那就必须重新考虑粒度也许做到箱级就够不必下沉到单品级。这一步的判断没有统一答案得把账算清楚再决定。组织配合度。这一条最容易被技术人员忽略。EPC项目往往横跨生产、仓储、物流、门店多个环节任何一环不配合数据链条就断了。我见过技术方案做得很漂亮但最后搁置的项目原因基本都是流程侧没人愿意改。所以在验证阶段就要把业务方拉进来让他们看到实际效果而不是等项目结束再交付。最后分享一个小技巧验证阶段就去联系标签供应商要样品说明你的使用场景多数供应商愿意提供不同型号的样品做对比测试。同一批货物用三四种标签分别测一遍得出的结论会扎实得多。这个环节多花一周后面的返工可能省下几个月。
返回列表