4. 一维码与二维码基础
在工业读码与追溯系统中,码制选择不是“能扫出来就行”的问题,而是直接决定识读率、数据容量、纠错能力和长期稳定性的基础决策。VisionPro 的读码工具(如 IDMax、IDQuick、Barcode)虽然对主流码制都有支持,但不同码制的编码结构、模块尺寸、纠错机制差异很大,理解这些差异才能在现场正确选型、调参和排障。
一、一维码:Code128、Code39 与 EAN
一维码的本质是用条(bar)和空(space)的宽度组合表示字符,信息只沿水平方向编码,垂直方向仅提供冗余高度。因此一维码的数据容量小、对横向分辨率要求高,但印刷成本低、兼容性好。
Code39 是最容易理解的一维码:每个字符由 9 个元素(5 条 4 空)组成,其中 3 个为宽元素,其余为窄元素,字符之间用窄空分隔。它只支持数字、大写字母和少量符号(-、.、空格、$、/、+、%),必须用起始符“*”和终止符“*”包裹。Code39 的优点是结构简单、可读性好、允许较大印刷误差;缺点是密度低,同样长度下占用空间明显大于 Code128。它适合字符数少、内容固定的场合,例如工装编号、资产标签。
Code128 是工业场景最常用的一维码。它有三种字符集:A(控制字符+大写)、B(大小写+数字+符号)、C(纯数字双位压缩)。Code128 通过起始符选择字符集,并可在码内用切换符(CODE A/B/C)动态切换。例如内容“12345678”用 Code C 编码时,每两个数字占一个符号,密度比 Code B 高一倍。Code128 还包含校验符(模 103),校验失败时读码器会直接拒读,因此误读率极低。它的缺点是编码规则复杂,对条空宽度精度要求高,印刷质量差时容易出现校验失败。
EAN 是零售商品码,常见 EAN-13(13 位)和 EAN-8(8 位)。EAN-13 由左侧 6 位、右侧 6 位和 1 位校验位组成,左侧字符用 A/B 两种奇偶模式编码,通过奇偶组合隐含表示第一位数字。EAN 的条空宽度只有 4 种(1、2、3、4 模块),结构规整,但对印刷位置和静区要求严格。工业追溯中 EAN 较少用于内部管理,更多出现在成品出库环节。
二、二维码:QR 与 DataMatrix
二维码在水平和垂直两个方向同时编码,容量大、纠错强,适合承载批次、序列号、URL 等结构化数据。
QR Code 由日本 Denso Wave 发明,特征是三个角上的“回”字形定位图案(Finder Pattern)和右下角的校正图案。QR 有 40 个版本(Version 1~40),版本越高矩阵越大(21×21 到 177×177 模块)。它支持四种纠错等级:L(约 7%)、M(15%)、Q(25%)、H(30%),纠错等级越高,同样数据需要的模块越多。QR 的编码模式包括数字、字母数字、字节和汉字,读码器会自动识别模式。QR 的优点是定位图案明显、倾斜和部分遮挡下仍可识读;缺点是同样容量下模块数较多,小尺寸打印时对分辨率要求高。
DataMatrix 的特征是左侧和下方的“L”形实线定位边(Solid Finder)以及右侧和上方的交替黑白模块时钟边(Clock Track)。它有两种主要形态:ECC 200 方形(10×10 到 144×144)和矩形(8×18 到 16×48)。DataMatrix 在同样数据量下通常比 QR 更紧凑,且支持更小的模块尺寸,因此在电子元件、PCB、医疗器械等微小标记场景中占主导。它的纠错采用 Reed-Solomon 算法,ECC 200 可恢复约 25% 的受损码字。DataMatrix 的缺点是定位边为实线,在低对比度或金属反光表面容易丢失定位信息。
三、印刷质量要求与常见识读难点
码制选对只是第一步,印刷质量决定读码器能否稳定解码。工业读码对印刷质量的核心指标包括:模块尺寸(最小单元宽度)、条空对比度(PCS 值)、边缘粗糙度、静区宽度和印刷位置偏差。
以 DataMatrix 为例,若模块尺寸为 0.25 mm,读码器视场需要至少覆盖 5×5 个模块才能可靠定位,即最小视场约 1.25 mm。实际选型时通常要求模块尺寸不小于相机单像素对应物理尺寸的 2 倍,否则边缘模糊会导致解码失败。对比度方面,ISO/IEC 15415 规定 PCS 值应大于 0.5,工业场景建议大于 0.7。金属表面直接打印时,PCS 往往只有 0.2~0.4,需要改用激光雕刻或增加白色底涂层。
常见识读难点可以归纳为四类:
- 低对比度:黑色码印在深色塑料或金属上,反射光差异小。解决方式是改用同轴光或低角度暗场光,或更换码制为激光雕刻的 DataMatrix。
- 反光与镜面反射:曲面金属上的 QR 码,定位图案被高光淹没。解决方式是使用偏振片或调整光源角度,使高光移出读码区域。
- 模块尺寸过小或镜头分辨率不足:码本身合格,但相机像素不够,模块边缘混叠。判断依据是模块在图像中至少占 3~5 个像素,低于 3 像素时解码率急剧下降。
- 静区不足或码被裁切:一维码两端静区不足会导致起始符无法识别;二维码定位图案被遮挡或裁切会直接导致定位失败。印刷排版时必须预留足够静区,通常要求一维码静区不小于 10 倍模块宽度,二维码不小于 2 个模块宽度。
四、编码规则对读码参数的影响
不同码制的编码规则会直接影响读码器的参数设置。例如 Code128 的字符集切换符(CODE A/B/C)在图像中表现为特定的条空组合,若读码器未启用“自动字符集”或错误锁定了某一字符集,就会解码失败或输出乱码。QR 的纠错等级在码内以格式信息存储,读码器通常自动识别,但若图像质量差导致格式信息误读,可能按错误等级解码,此时需要手动指定纠错等级或提高图像质量。
DataMatrix 的 ECC 200 在码内包含码字数量和纠错码字,读码器需要先正确识别 L 形定位边和时钟边,才能建立模块网格。若定位边部分缺失,读码器可能尝试用时钟边反推,但成功率取决于缺失比例。实际调试时,可以通过 VisionPro 的“码质量评分”输出(如 ISO 15415 等级)判断是印刷问题还是参数问题:等级低于 C(2.0)时,优先改善照明和对比度;等级高于 C 但解码仍不稳定,则检查镜头分辨率和模块像素数。
总结来说,一维码和二维码的选择应围绕数据量、标记尺寸、表面材质和识读环境四个维度展开。Code128 适合短数据高密度工业标签,Code39 适合简单固定内容,EAN 用于零售流通,QR 适合大容量和倾斜场景,DataMatrix 适合微小标记和高密度追溯。理解每种码制的编码结构和印刷质量边界,才能在 VisionPro 中正确配置读码工具,并在出现识读问题时快速定位是码制、印刷、照明还是镜头的责任。