APP下载

基于code 128码质量、评价标准的研究及其在汽车制造中的应用

2022-05-27王良涛杨斌石飞飞李锦涛

汽车工艺师 2022年5期
关键词:字符集条形码字符

王良涛,杨斌,石飞飞,李锦涛

联合汽车电子有限公司 陕西西安 710117

条形码技术是一种较为新式的自动识别技术,自20世纪被发明沿用至今,由于其有很强的优势,在世界各国各行各业都得到大力推广,同时也开发出了多种码制的条形码,目前世界上存在的条形码近百种。由于码制的种类繁杂,打印和识别过程就变得非常复杂。

目前全世界现存的条形码按码制分类,大约有一百多种,常用的条形码类型十多种,在世界一些发达国家和地区使用,例如EAN-13码、UPC-A码、Code-128码、Code-39码、ITF-14码及其衍生码等。而不常用的条形码可能只是在某些国家和地区,或者在某一个行业使用。

条形码的印刷是一项专业性很强的综合技术,尤其是工业化大批量的印制,由于其存在变化因子较多,很长时间的维度里,要得到质量稳定的条形码比较困难。同时条形码的问世就是解放人的双眼,需要通过设备来自动识别。因此条形码的印刷,除了满足普通印刷的要求外,还必须满足设备自动识别的其他要求以及特殊的光学特性指标[1]。

为了实现读码设备准确快速的识别条形码,考虑到汽车制造实际过程存在各种不确定因素和使用工况,满足在任何环境下,读码设备都能够读取条形码的信息,还需要继续完成一些理论结合实际大规模生产的研究。

背景

公司产品在主机厂总装上线前,客户会使用读码设备识别并记录零部件的型号及生产日期等信息,如何实现客户快速识别的需求,条形码技术就是较好的选择之一,因此很多产品表面都增加了条形码。

为了保证产品的条形码在客户端能正确识别,UAES公司内部对于条形码的产品,使用读码设备100%自动读码并存储后,然后下线流到客户端,但每年仍然会发生个别客户因读码困难而产生投诉。由于目前国内也没有专门的条形码评价机构和设备,经查阅国际条形码标准协会定义了关于条形码的评价标准,但是其实施可操作性比较差。为了提高客户满意度,本文结合实际当前实际情况,对条形码的生成,印刷和识别进行了一些研究,以便于针对性的提高条形码的印刷质量和读码效率。

Code-128条形码的编码规则

1.Code128码的细分种类

Code128码因能表达128个字符而得名,包含数字、字母和符号。可分为3种字符集,分别是Code A、Code B和Code C,在不同的应用条件下选择不同的字符集,同一个码也可以互相调用两种或两种以上的字符集。Code 128码在应用的过程也出现一些衍生码如EAN/UCC-128码,这种码是经过128码转加上特殊字符FNC1形成的两种细分码制,但都遵循128码的基本准则,主要被用于标识物流单元,同一张条形码含一个或多个应用标识符AI,中国、欧洲以及北美应用比较广泛。

2.Code-128码的结构

Code-128码部分构成如图1所示,条形码结构从左到右依次为:左侧空白区A,起始字符B,表示数据和特殊符号的字符C,符号校验字符D,终止字符E,右侧空白区F。除了左右侧空白区外,其他所有组成条形码的部分都要表达相应含义,叫做符号字符。

图1 条形码结构

在Code-128码制中一共由128个符号字符,可以分为以下几类字符:3个起始字符,3个数据集选择字符,1个切换字符,1个符号校验字符,4个非数据功能字符,1个终止字符,剩余的是可转译的字符。

(1)起始字符和终止字符 Code-128码有特殊的字符表示条形码信息的开始和终止,起始字符是指该条形码按照一种特定的编码和解码规则开始标识一段字符,字符分别是SartA、SartB和StartC。终止字符标识编码和解码的终止,字符是Stop。在解码过程这三个字符指参加译码,不传送,即不转化成人们可以读取的符号信息。

(2)数据集选择字符 同一个条形码中根据需要,从一种字符集切换成另外一种字符集,切换字符一共有三种,分别是Code A、Code B和Code C,对应三个不同的切换符。切换字符后的所有字符都沿用此字符的字符集解码,直到遇到新的切换字符或者转换字符。

(3)切换字符 转换字符是将该字符后面的第一个字符转换成另外一种字符集,然后从第二个字符后,恢复到原来的字符集,转换字符是SHIFT,转换字符不能转换本身或切换字符,且只能由字符集A转为B,或由字符集B转为A,字符集C不参与转换。

(4)符号校验字符 为了确保编码结果的正确性,在结束字符前,code-128码会生成一个校验字符,来校验前面所有字符的正确性,此字符就是校验字符。

(5)功能字符 Code-128码种一共有4个功能字符,分别是FNC1、FNC2、FNC3及FNC4,其作用各不相同。

1)FNC1用于生成新的码制,用于特殊的考虑,生成EAN/UCC-128码。

2)FNC2为信息添加字符,其作用是读码器读码时,临时存储包含FNC2本身以及工人识别的字符或字符串,并将该字符串作为下一个符号的数据前缀来传输[2]。

3)FNC3为初始化字符,指示读码器将包含FNC3本身的字符初始化或者重新编程,符号里的字符读码器传送。

4)FNC4用于表示ASCII值在128~255的字符集,在该字符后的第一个数据字符的ASCII值要加上128。

3.Code-128码的编码结构

(1)起始字符 每个字符由相应的不同组合的空和条组成的字符段来表示,每个字符段由固定数量的模块组成,如图2所示(B表示条,S表示空,字母前面的数字表示对应模块的数量),起始字符Start C就是由11个模块组成的字符段构成,每个模块就是条或空则最小组成单元,除终止字符是由13个模块组成外,其他所有字符均是由11个模块组成,每个字符段需要由偶数个条模块,基数个空模块构成。

如起始字符标识如图2所示,中间编码字符的构成与起始字符类似,只是起始字符识别后不转译,即解码后不在解码信息中显示供人识读。

图2 条形码起始字符模块结构

(2)终止字符 在字段结束时会生成结束标识符,该字符由13个模块构成,所有Code-128码结束字符唯一。当读码设备遇见这个字符,则停止读码,将之前读到的信息开始译码,终止标识符结构如图3所示。

图3 条形码终止字符模块结构

(3)校验码 校验码是一种特殊的码,也是一种字符串。不像前面所述的普通字符,有特定的条形码结构与之对应,特定的字符值在特定的字符集下,条形码结构唯一。校验码需要根据字符集类型和每个字符值,按照每个字符值的位置信息计算得到,其计算见表1。再从字符集中查47字符值,对应的字符值即为校验字符,该字符值对应的条形码字段即为校验字符段。但是条形码有个规则,要求形成的条形码的符号字符最短,一般选择Code-C作为校验字符的字符集,因此在校验字符前需要将字符集转为Code-C字符集。

表1 校验码字符集计算

条形码识别原理

1.条形码的检测范围

条形码检测并不是整面都要检测,而是检测底部10%~90%高度的区域,每隔10%扫描一道,即一个条形码扫描10道,如图4所示。

图4 条形码扫描范围

这10次扫描为等距扫描,扫描结果存储在设备中并进行一定的纠错,例如某个条中部出现断带或者原本空的位置出现异常点,如果扫描的位置恰好经过这个断带或者异常点,则扫描后读出来的结果会出现校验错误,这一道扫描会读码失败,此时,这一道读码信息会被读码设备自动剔除掉,不会影响最终的译码结果,在条形码识别中称之为拒读。

2.条形码读码基本原理

条形码读码一般是使用扫码枪或这读码头等设备,扫描使用的波长为(660±10)nm光波,设备发出的光波在遇到条形码后会因为条形码的条与空的反射率不同,接收到不同的反射信号,设备的接收信号以上升沿和下降沿的形式记录反射信号,得到相应的反射率曲线如图5所示。设备接收的反射信号为弱电信号,一般在10mV左右,属于极其微弱的信号,很难直接使用,需要经过特定的放大电路,将信号放大整形,转化成可以控制电路的模拟信号。

图5 反射率曲线特征

为了让设备准确识别条形码中条和空的位置和长度,必须保证条和空的构成单元宽度一致,还要保证条和空的反射率有足够的差异,这样设备接收的信号才能显著的区分开来不至于导致条形码拒读,因此对条形码打印设备和条形码纸的选择尤为重要。打印机的分辨率对条形码的条和空宽度的精确度影响很大,打印机的分辨率越高,则在单位面积内打印的点越小、点数越多,故打印条形码的边缘更整齐准确,一般200psi、300psi和600psi打印机比较常见。

条形码纸的背景色选择也有讲究,必须与条形码条的颜色的反射率有非常大的差异,条形码的读码才能分辨出条和空的差异,条形码打印纸的颜色和条色匹配选择可参考表2进行选择。

表2 条形码纸背景色与条色匹配选择表

为了使设备准确区分条和空单元,设备扫描条形码需要确认条和空的区分标准,这个标准值称之为阈值。一般采用整体阈值法,通过整体阈值GT(general threshold),将条和空单元区分开来。整体阈值等于条形码最大反射率Rmax与最低反射率Rmin之和的一半,即GT=(Rmax+Rmin)/2。反射率≥GT的设备都判断为空,反射率<GT的设备都判断为条单元。为了确保读码设备能准确识别条与空,对条形码的条与空的最大反射率就有了要求,这个参数就是符号反差SC(symbol contrast)。反射率曲线上,相邻单元的空反射率Rs和条反射率Rb的中间值即为条和空单元的边缘位置。因此条形码对相邻条与空的反射率差值也是有要求的,这个值叫做边缘反差EC(edge contrast),条形码评级系统认为EC≥15%为OK,EC<15%则NOK。

设备在读取条形码时为了区分条和空,首先将条形码进行二值化,将条形码信息的图像的R、G、B值中一个值设置为255,另外两个参数设置为0,即图片会变成两种颜色,RGB三种基色任何一种基色值被设为255时,其颜色呈现给人类眼睛的色泽就是单色,而另外两个基色值为零,就是没有另外两种颜色,显示出来的就是条形码纸的背景色,如此图像信息变得更为简单,设备的处理时间会更短。

条形码的图形可能会因为打印、环境或者条形码纸自带的杂色,呈现出异常点,这些异常点一般以孤点形式存在,称之为噪声点。此时需要对条形码进行降噪处理。否则条形码识别过程,会因为噪声点导致拒读的情况。目前比较常见的降噪方法是步进中值滤波降噪法,其降噪原理是每个条和空的字段的每个模块逐步渐进的取灰度值的中值,将<中值的模块判断为空,≥中值的模块判断为条,依次计算到条形码的结束码,以此实现对噪声点的消除。其计算公式为:

式中Yi——滤波的中值;

Xi——相邻模块的灰度值。

条形码质量影响因素及其评价

条形码的质量是一个系统的工程,包括打印设备、条形码本身和读码设备三个部分组成。条形码质量由这三个系统决定,因此要提升条形码的质量也需要系统整体考虑,任何一个子系统的失效或与其他系统不匹配均会导致条形码质量不高,各个子系统应该相互匹配方可达到比较好的效果。结合条形码的识别原理和条形码码制标准,针对性的对条形码识别的要素进行研究,采取针对性对应的措施是提高条形码质量的有效途径。

1.条形码的印刷尺寸控制

Code 128码标准要求,条形码开始和结束位置的空白区尺寸长度L>10X,其中X为条形码模块的宽度,因此在条形码设计时需要考虑前后空白区与条形码和条形码纸的尺寸关系,如图6所示,在条形码纸上事先预留空白区。

图6 条形码设计预留空白区

在打印条形码时图形单元宽度的调整也需要考虑到整体布局的要求。目前UAES使用的工业打印机主要是斑马和DataMax,打印机都可以对条形码的模块尺寸进行调整,不同精度的打印机,最小模块宽度不一样,精度越高的打印机最小模块宽度越小,可调的空间越大。由于打印机的精度是不连续的,因此条形码的最小模块宽度也是不连续的,最终导致打印出来的条形码长度也是非连续的。常见的打印机精度为203dpi、300dpi和600dpi,其打印出来的条形码长度也不相同,精细度也不相同。打印机中调整条形码最小模块宽度的参数存在每个标签中,即存在type data中,也因此大大的提高了条形码的调整灵活性,如图7所示。

图7 最小模块宽度设置界面

生产实际中只需要在建立新标签模板时将最小模块宽度设置好,在不变更打印机的条件下,条形码的打印长度是不会变化的。如果更改了最小模块宽度打印出来条形码的长度会非连续性变化,如图8所示,300dpi打印机使用最小模块宽度分别为0.13mm和0.21mm条件下条形码尺寸的对比。

图8 不同最小模块宽度下条形码尺寸

根据条形码读取的原理,不难想到条形码的条和空的宽度是影响其信息读取的关键因素,因此Code 128码对条形码的条空宽度公差必须也有规定,这与打印机的品质有着直接的关系。另一方面,不同精度的打印机打印出来的条形码,条四周的粗糙度也会影响条和空的读取,精度越高打印出来的条的周围的粗糙度越低,则条形码读取准确度越高。根据ISO/IEC 15416:2016国际标准的要求条形码条和空的尺寸公差分别记为∆s和∆b,需要满足|∆s,∆b|<0.45X-0.0254,其中X为最小模块宽度。

2.条形码的印刷污点和漏空

实际条形码的印制过程中,由于纸张、碳带、打印参数和打印机的影响,打印出的条形码经常存在污点、空隙甚至局部大面积信息丢失的情况。信息大面积丢失一般是由于机械机构导致卷纸不均,信息未及时转印而丢失,这类条形码一般无法使用直接报废。由于打印环境复杂性难以避免,经常会出现污点和漏空的缺陷,条形码的读码是分10段读码,还会自动校验条形码的信息,并且随着读码设备的不断智能化,能有效对条形码进行异常点剔除处理。因此在实际生产中允许出现噪声点,但必须控制这些噪声点的尺寸大小,否则可能会导致整个条形码拒读。与其他码制的条形码一样,Code 128码也采用了美国的国家标准协会的要求:污点或漏空面积S<25%π(0.4X)2,其中X为条或空的宽度。

污点常见的原因如下:

1)打印温度过高可调整温度解决,有的打印机是将温度和浓度集成在一起,可以通过调整浓度来解决。

2)打印头故障或异物导致异常位置过热出现污点。

漏空的常见的原因如下:

1)碳带羽化,有的碳带由于质量不过关,或存储时间太久,出现羽化现象,热转印时会出现有的位置没有转印的漏空现象。

2)打印速度过快,碳带还来不及转印就打印纸就过去了导致漏空。

3)异物粉尘掉在碳带或者条形码纸上,条形码出来后粉尘掉落导致出现漏空。

当然条形码的印刷过程也可能还有其他的缺陷,如褶皱、灼穿、笑纹边角损失等,这些缺陷是不被允许的,打印时发现这类的条形码就必须报废处理。

3.条形码的光学特性

条形码的出发点是让读码设备快速地自动读取可用信息,以辨别目标的身份或者价格等。而条形码读码设备通过识别条形码的条与空的反射信息对比计算得到条和空的长度,然后译码得到数字信息。因此条形码的光学特性是非常关键的参数。

(1)反射率和对比度 读码设备在扫描条形码后,无论扫描到条还是空都必须收到相应的反射信号,才能判断条和空的长短,因此为了保证读码设备能获得反射信号,对条形码的反射率必须有一定的要求。一般要求条形码空的最低反射率>32%。为了保证设备能区分空和条的信息,两者的反射率必须有一定的差异,是个差异就是对比度PCS,一般要求PCS≥0.49。PCS定义如下:

式中RL——空的反射率;

RB——条的反射率。

(2)符号反差 反射率曲线上最大反射率和最小反射率的差值称为符号反差SC(Symbol Contrast),表征了条形码解码的难易程度,SC越大表明条与空的反射率差值越大,一般分为四个等级见表3(缺陷度d=ERNmax/SC)。

表3 条形码光学特性等级评价

(3)调制比MOD 也叫轴向反差,是条形码扫描反射率曲线上最小边缘反差与符号反差的比值,反应了条形码中模块反射率一致性高低。按如下公式计算:

式中R——某单元的反射率;

GT——整体阈值;

SC——符号反差。

扫码设备扫描同一颜色模块反射率曲线的各单元中最高峰与最低谷的差值为反射率非均匀度ERN,最大非均匀度与符号反差的比值即为缺陷度,表征了条形码同一种颜色模块反射率的一致性,要求越低越好。

4.条形码的其他要求

条形码除了对以上主要质量属性有要求外,还有其他一些要求,如条宽比、空宽比、条高、边缘变形量及边缘相似度等。一般保证了条形码的上述要求,条形码质量就得到了有效保证。

生产实际设计情况

目前UAES实际打印条形码的设备是ZEBRA,每个条形码建立后码制以及格式不会变化,该打印参数也会自动赋值在打印的模板中,不同条形码模板可以赋值不同的打印参数。因此项目前期建立模板时就根据图纸,设置一个最优的参数,将该参数赋值在模板中就可以保证打印质量的稳定性。

生产使用过程中,员工每班根据需要直接选中模板打印,一般只要碳带和打印纸状态不变,打印出来的条形码质量比较稳定。当碳带或打印纸对的状态或打印机机械状态发生了变化,则需要在打印参数上微调,一般允许调整打印浓度,为了保证打印出来的条形码能被识别,开始打印时对首件条形码使用扫码枪识别,如果可以识别,说明这一批的原材料满足要求。为了确保打印设备、打印纸、碳带和打印参数相匹配,生产中制作了一个左侧最容易粘连,右侧最容易断带的条形码,作为校验条形码,如此,最难打印的条形码都可以正常打印,其他内容的码理论上均可以打印,如图9所示。

图9 校验条形码

为了确保客户端100%可以识别,生产线上设计读码头,读码头100%识别产品的条形码,并将识别的信息存储在测试台里,并将该逻辑与测试台的测试逻辑绑定,只有正确识别的条形码信息的产品,设备才自动进行下一个工序,否则设备报警无法动作。从防法生和防流出端都做检测,确保的流到客户端的产品条形码都可以100%识别。

结语

结合条形码的编码规则、字符结构以及条形码的生成方式,从条形码的识别原理入手,介绍了影响条形码识别的常见因素,根据生产大批量实际生产效果,总结出比较有效的条形码质量控制措施。

1)条形码的尺寸需要满足相应码制的规则要求,一般条形码要求前后空白区长度>10倍最小模块长度;条形码的条和空的分辨率与打印机的精度和最小模块宽度选择有关,精度越高的打印机,单位面积内打印的点数越多,条和空分辨越明显。

2)条形码解码的原理是光的反射原理,对条形码的光学特性要求比较多,常见的光学特性要求:符号反差,最小边缘反差,调制比和缺陷度。

3)条形码打印对条形码背景色和条的颜色匹配有一定的要求,一般要求背景色和条的颜色基色反射率差异>50%,文章给出了调选背景色的建议表。

4)条形码打印由于该工艺的特殊性,存在漏空和污点,但需要控制其大小,在一定的范围内,设备可以自动剔除噪声点,不影响条形码的解码。

5)生产中设备和参数以及条形码纸要相匹配,为了确保设备和参数与原材料匹配,可以选用最复杂的码作为校验条形码,打印前进行匹配性验证。

猜你喜欢

字符集条形码字符
寻找更强的字符映射管理器
创意条形码
MySQL数据库字符集的问题研究
字符代表几
一种USB接口字符液晶控制器设计
ORACLE字符集问题的分析
从条形码到二维码
从条形码到二维码
消失的殖民村庄和神秘字符
条形码大变身