博尔杰PTS - 工业标签标识打印整体解决方案
首页 > 技术支持 > 二维码与DataMatrix容量超限与纠错设置排查

二维码与DataMatrix容量超限与纠错设置排查

在标签设计软件里把二维码或 Data Matrix 拖进模板、数据源也填对了,打印出来却要么装不下、要么扫不出——这类问题里真正属于“码本身坏了”的只占少数,多数是三处参数没配平:数据容量超过了当前符号版本能装下的上限、编码模式被一个中文或小写字母整体降级、模块尺寸小于打印分辨率能稳定还原的下限。本文按这三个维度给出可照做的排查顺序:先算容量是否超限,再看编码模式是否选对,然后核对模块尺寸与打印分辨率的匹配关系,最后核算静区与标签裁切边界。

本文处理的是软件侧的符号参数设置问题。相邻但不同源的四类问题不在这里展开:条码对象本身不出图、变成空白或字体缺失,见 Brady Workstation 模板偏移与字体丢失排查;打印质量分级参数(符号反差、调制度、未使用纠错等)怎么判级,见 条码等级验证不达标的排查与校准指南;用 SATO SBPL 指令直接调整 Data Matrix 符号尺寸,见 SATO CL412E SBPL 打印 Data Matrix 条码尺寸精确调整指南;微信扫不出 Data Matrix 属于识读端的解码兼容问题,见 微信无法识别斑马打印机打印的 Data Matrix 码的原因与解决方法。本文不比较不同码制的适用场景,只讲眼前这一个码为什么装不下、为什么扫不出、参数该怎么改。

TSC TX210 桌面条码打印机

TSC TX210 系列桌面条码打印机(203 dpi),现场最常见的标签输出设备之一

一、先分清三类现象:装不下、扫不出、改小就扫不出

排查前先把现象归到下面三类中去,能省掉一半的无效操作。

  1. 装不下:软件直接报错,提示数据过长、超出符号容量,或者不报错但打印出来的码与预期内容不一致。这一类属于容量超限,根因在版本、编码模式、纠错等级三个变量。
  2. 扫不出:打印看着清楚,扫描枪却读不出,或者要贴到很近、要换角度才读得出。这一类多数与模块尺寸、打印分辨率、打印增益、静区有关,与容量无关。
  3. 改小就扫不出:为了塞进小标签把符号整体拉小,拉到某个尺寸以下就再也读不出。这一类是版本模块数与模块尺寸之间的取舍问题,本质还是分辨率够不够。
  4. 加了中文就超限:原本好好的字符串,加进一两个中文或小写字母后立刻超限。这一类是编码模式被整体降级,是容量问题里最容易被忽略的一种。

二、容量从哪里来:版本、编码模式、纠错等级三个变量

QR 码的容量不是固定值,它由 ISO/IEC 18004 定义的版本、编码模式与纠错等级共同决定。

  • 版本:版本 1 到版本 40,版本 n 的符号每边模块数为 17 + 4n,也就是版本 1 为 21×21,版本 40 为 177×177。版本越高,模块越多,能装的数据也越多。
  • 功能图形占用:定位图形、校正图形、定时图形、格式信息与版本信息都要占模块,剩下的才叫数据模块。所以版本提升带来的容量增长不是线性的。
  • 纠错等级:标准定义了 L、M、Q、H 四级,大致可分别恢复约 7%、15%、25%、30% 的码字。等级越高,留给纠错码字的比例越大,能装的数据就越少。
  • 编码模式:数字模式、字母数字模式、字节模式与汉字模式,同一串内容用不同模式编码,占用的位数可以相差一倍以上。

常用的两个参照点:版本 40 配 L 级,数字最多 7089 位、字母数字 4296 位、字节 2953 个、汉字 1817 个;版本 1 配 L 级,数字只有 41 位、字母数字 25 位、字节 17 个、汉字 10 个。中间每一版本每一等级的完整容量表很长,以所用软件弹出的实际提示与 ISO/IEC 18004 的附表为准,不要凭印象估算。

Honeywell PX940A 工业条码打印机 300dpi

Honeywell PX940A 工业条码打印机(300 dpi),打印点更细,能稳定还原更小的模块

三、编码模式:容量凭空少一半的常见原因

同一串内容,走哪种编码模式决定了它占多少位。这是“看起来没改什么却突然超限”的第一原因。

  • 数字模式:每 3 位数字压成 10 个比特,是密度最高的模式。
  • 字母数字模式:每 2 个字符压成 11 个比特,字符集只含数字、大写字母 A 到 Z,以及空格与少量符号。注意小写字母不在这个字符集里。
  • 字节模式:每字节 8 个比特,中文在 QR 里若走字节模式(常见为 UTF-8),一个汉字要 3 个字节。
  • 汉字模式:GB/T 18284-2000《快速响应矩阵码》规定了汉字模式,一个汉字占 13 个比特,比字节模式省得多,但需要软件与识读端都支持。

两个高频坑:一是 URL 里出现小写字母,整串从字母数字模式降到字节模式,容量掉一大截;二是数据源里混进一个中文或全角符号,原本按数字模式编码的序列号被整体降级。判断方法是把数据源复制出来逐字符看一遍,重点看有没有中文、小写、空格、换行与全角标点。

四、Data Matrix 的容量与固定纠错

Data Matrix 由 ISO/IEC 16022 定义,工业上普遍用的是 ECC 200 版本,它的规则与 QR 有两点关键差别。

  • 纠错不可手选:ECC 200 用 Reed-Solomon 纠错,纠错码字的比例由符号尺寸本身决定,用户不能像 QR 那样在 L、M、Q、H 之间切换。所以 Data Matrix 装不下时,只能从版本尺寸、编码模式、数据量三个方向想办法。
  • 尺寸规格是离散的:方形符号每边模块数只取偶数,从 10×10 到 144×144;矩形符号有 8×18、8×32、12×26、12×36、16×36、16×48 这几种固定规格。
  • 容量上限:最大规格下数字约 3116 位、字母数字约 2335 位、字节约 1556 个。
  • 静区更省地方:Data Matrix 的静区不小于 1 个模块宽(实际留 2 个模块更稳妥),而 QR 要求 4 个模块宽的静区,这是小标签上 Data Matrix 更容易放得下的主要原因。
  • 中文走字节模式:Data Matrix 没有专用的汉字模式,中文一般按字节模式编码,一个汉字 3 个字节,容量消耗比 QR 的汉字模式快得多。

五、模块尺寸与打印分辨率的匹配:核心计算

这是“扫不出”类问题里最硬的一条。先把打印分辨率换成打印点尺寸:

  • 203 dpi:25.4 ÷ 203,约 0.125 毫米每个打印点。
  • 300 dpi:25.4 ÷ 300,约 0.085 毫米每个打印点。
  • 600 dpi:25.4 ÷ 600,约 0.042 毫米每个打印点。

经验做法是按每个模块不少于 3×3 个打印点来倒推最小模块尺寸,并在此基础上再留 10% 到 20% 的余量,因为墨点扩散(ISO/IEC 15415 里叫打印增益)会让模块比设定值偏大,模块偏大时相邻模块容易粘连。按这个口径:

  • 203 dpi:最小模块约 0.38 毫米,留余量后按 0.42 毫米以上把握。
  • 300 dpi:最小模块约 0.25 毫米,留余量后按 0.28 毫米以上把握。
  • 600 dpi:最小模块约 0.13 毫米,留余量后按 0.15 毫米以上把握。

再反算符号宽度:符号宽度 = 每边模块数 × 模块尺寸。举一个直观的例子,版本 40 的 QR 每边 177 个模块,在 203 dpi 上按 0.38 毫米算,符号就要约 67 毫米宽。这就是为什么标签只有二三十毫米宽时,必须降低版本、改用 Data Matrix,或者换更高分辨率的机器,硬把高版本 QR 缩小到标签里,结果一定是扫不出。

打印增益的判级口径与调整方法属于打印质量分级范畴,参见 条码等级验证不达标的排查与校准指南,本文不展开。

Honeywell PC42D 桌面热敏不干胶打印机

Honeywell PC42D 桌面热敏不干胶打印机,小标签场景常用

六、静区与标签边界的核算

静区被吃掉是“打印很清楚但就是扫不出”的高频原因,而且很容易被忽略,因为它发生在符号之外。

  1. QR 的静区为 4 个模块宽(ISO/IEC 18004 的规定),Data Matrix 的静区不小于 1 个模块,实际留 2 个模块更稳。
  2. 符号外沿到标签裁切边至少留 2 毫米,或者按静区要求的模块数折算后取两者中的大值。
  3. 检查二维码是否被放到标签边缘、被模切或圆角切掉一部分、被覆膜压边盖住、被穿孔或挂绳孔压到。
  4. 检查标签贴在实物上之后,符号是否落在弧面、折边或螺丝孔附近,这些位置会让识读角度变差。
  5. 把标签扫描或拍照放大,逐边量静区宽度,别只凭肉眼判断“看着还有空白”。

七、软件属性页里的具体修改步骤

下面是在主流标签设计软件里都通用的操作路径,具体菜单名称以各自界面实际显示为准。

  1. 双击条码对象,进入属性或符号体系页,先确认符号类型确实是 QR Code 或 Data Matrix ECC 200,不要停留在默认的 Code 128 或其他一维码上。
  2. 把尺寸从“自动”改成手工设定,直接给出模块宽度(有的软件叫 X 尺寸、Module width 或单元宽度)。自动模式下软件会按容量挑版本,常常挑出一个小到打不出来的模块尺寸。
  3. 设定纠错等级:QR 通常从 M 级起步,兼顾容量与容错;表面易脏污、会被摩擦或贴在曲面上的,提到 Q 或 H;反过来,容量吃紧且贴装环境干净的,可以降到 L。
  4. 强制编码模式:内容确定只有数字就锁数字模式,只有大写字母与数字就锁字母数字模式,不要长期挂在“自动”上,自动模式遇到一个例外字符就会整体降级。
  5. 清理数据源:去掉首尾空格、换行、制表符与不可见字符;URL 中的路径部分尽量用大写,能留在字母数字模式里。
  6. 核对打印首选项里的分辨率与实机一致,不要用 203 dpi 下排好的模板直接发到 300 dpi 的机器上,也不要反过来,两者算出来的模块尺寸完全不同。
  7. 改完先打一张,用扫描枪在实际贴装位置、实际材质上读一次,通过后再批量。
  8. 把最终参数(符号类型、版本或尺寸、纠错等级、模块宽度、编码模式)截图或抄录留档,下次改模板或换机器时有据可依。

八、指令层的核对:ZPL 与其它打印机指令

如果标签是直接由指令生成的,参数要在指令里核对,软件属性页改了并不影响指令输出。

  • ZPL 里用 ^BQ 生成 QR、用 ^BX 生成 Data Matrix,符号的放大倍率与纠错等级都在指令参数里指定,要确认与软件模板里设的一致。
  • 放大倍率是整数倍,模块尺寸只能是打印点尺寸的整数倍。也就是说在 203 dpi 上,模块尺寸只能取 0.125、0.250、0.375 毫米这一档一档的值,想精确做出 0.30 毫米的模块是做不到的,只能在 0.25 与 0.375 之间取舍,这一点与软件里可以自由填写毫米值不同。
  • 内容里若含 GS1 应用标识符结构,需要在数据前加 FNC1 前缀,这个前缀本身也占容量,算容量时要一起算进去。
  • Datamatrix 的方形与矩形规格在指令里也是枚举值,不能任意指定每边模块数。

九、改完之后怎么验证:三级验证

  1. 第一级,能读:用现场实际使用的扫描枪或手机在正常使用距离上读一次。能读只是入门线,不代表合格。
  2. 第二级,稳定:换角度、换距离、贴到实际材质与曲面上再读,连读十次不失败才算稳。再打二十张连续样张,看前后是否一致。
  3. 第三级,判级:客户有等级要求的,用二维验证器按 ISO/IEC 15415 出等级报告,重点看符号反差、调制度、打印增益与未使用纠错几项。未使用纠错这项的判级口径见 条码等级验证不达标的排查与校准指南。

十、预防:把容量与尺寸的边界固化下来

  • 在模板或数据源里给内容长度设一个上限校验,超过就报警,不要把风险留给打印环节。
  • 数据源字段结构变更(比如序列号从纯数字改成含字母、加前缀、加校验位)后,必须重新核算容量并复验。
  • 更换标签材料、碳带或打印机后要复验,材料涂层与打印分辨率的变化都会影响最小可用模块。
  • 每批留样,把首张、中间张、末张各留一张贴在留档本上,出现争议时可回溯。
  • 把确认可用的参数组合写成一页纸挂在工位上,避免不同人反复试错。

常见问题

1. 软件提示数据过长,最简单的处理顺序是什么?

按四步走:第一步把纠错等级从 H 或 Q 降到 M 或 L,这一步释放的容量最多也最省事;第二步检查编码模式,把内容里的中文、小写字母、空格清理掉或强制为数字、字母数字模式,这一步常常能再省出一半;第三步确认有没有被自动加上 GS1 的 FNC1 前缀或多余分隔符;第四步才考虑放大符号版本或换用 Data Matrix。不要一上来就把符号放大,标签上往往没有那么多余量。

2. 内容里加了一个中文,容量立刻就超了,为什么?

因为整串内容只能按一种模式编码,一个中文字符会把整串从数字模式或字母数字模式整体降到字节模式。在字节模式下,一个汉字按 UTF-8 通常占 3 个字节,而如果软件支持 GB/T 18284-2000 的汉字模式,一个汉字只占 13 个比特,差别很明显。处理办法是先确认软件能否开启汉字模式;如果必须走字节模式,就把中文尽量缩短或改成固定代码,把变量部分留在数字或大写字母范围内。

3. 纠错等级是不是越高越好?

不是。等级越高,留给纠错的码字越多,能装的数据越少,同时模块数会随版本上升,在标签尺寸固定的前提下模块就会变小,反而更难扫。通常从 M 级起步;符号会被磨损、会被覆膜压过、贴在曲面或户外环境时提到 Q 或 H;贴装平整、环境干净且容量吃紧时用 L。改完一定要按三级验证复验,不要只看能不能读出来。

4. 203 dpi 的机器能打多小的二维码?

按每个模块不少于 3×3 个打印点、并留 10% 到 20% 余量的口径,203 dpi 上模块尺寸建议不低于 0.42 毫米。版本 1 的 QR 是 21×21 个模块,算上 4 个模块的静区,符号加静区约 12 毫米;版本 3 是 29×29,约 16 毫米。若标签宽度只有 15 毫米左右且内容较长,在 203 dpi 上基本没有可行解,要么缩短内容,要么换 300 dpi 或 600 dpi 的设备。这里的尺寸是按标准换算与实际经验给出的估算,具体以实机打样测量为准。

5. 把二维码整体拉小,为什么就扫不出了?

因为模块数没变,模块尺寸变小了,单个模块占的打印点变少。当每个模块不足 3×3 个打印点时,打印增益造成的墨点扩散会让相邻模块粘连,识读端分不清黑白边界。另外静区也会按模块数同比缩小,静区不够时识读端找不到符号边界,会直接判为没有码。正确做法不是拉小,而是降低版本、缩短内容或提高打印分辨率。

6. 小标签上从 QR 换成 Data Matrix 后就能扫出了,起作用的是什么?

主要是两点:一是静区要求不同,QR 要 4 个模块宽的静区,Data Matrix 只要 1 个模块(实际留 2 个),同样的标签面积里 Data Matrix 的符号本体可以更大;二是 Data Matrix 在同样数据量下往往可以用更少的模块数表达,模块能做得更大。要注意的是 Data Matrix 的中文只能走字节模式,内容含中文时这个优势会被抵消一部分。

7. 静区被模切切掉一点要紧吗?

要紧。静区的作用是让识读端判断符号边界,边界判不出来就会直接读不出,这与模块本身清不清楚无关。QR 的静区是 4 个模块宽,切掉一个模块就不满足标准了。处理办法是把符号往标签中心移,保证四边静区完整,或者缩小符号版本腾出静区空间;已经切掉的那一批只能重打,贴上去补救没有意义。

8. 打印出来看着很清楚,为什么还是扫不出?

按四个方向查:一是静区,被裁切、被覆膜压边或被贴在折边上;二是模块尺寸,肉眼看清楚不代表打印点数量够,放大到屏幕上数一数每个模块有几个点;三是编码模式与内容,用另一个识读设备交叉验证,排除识读端不支持该码制的情况(例如部分手机扫码只解 QR);四是打印增益过大导致黑模块粘连,这项需要按 ISO/IEC 15415 判级才能确认,方法见 条码等级验证不达标的排查与校准指南。

9. 换了一台 300 dpi 的机器,原来的模板要不要改?

要重新核算。原来在 203 dpi 上按 0.42 毫米设的模块尺寸,到了 300 dpi 上仍然可用,但打印点从 3 点变成了约 5 点,模块会更清晰;反过来,若直接沿用旧模板的毫米值而软件按点换算,符号可能被整体缩小。稳妥做法是打开属性页核对模块宽度的实际数值与单位,打一张样张量一下符号实际宽度,再按三级验证复验一次。

10. 批量打印时前几百张能扫,后面的扫不出,是容量问题吗?

容量问题是全局的,不会只影响后半段。前半好、后半差的情况通常指向耗材或设备状态:打印头积碳、碳带走偏、标签卷外层受潮、打印头温度上升后打印增益变大导致模块粘连。处理顺序是先清洁打印头并检查碳带与标签走纸,再打一张与前半段对比符号尺寸,若后半段符号明显变粗,就是打印增益在起作用,需要调低浓度或降低打印速度后复验。

相关阅读:软件类支持文章|MROer 支持中心|博尔杰PTS MROer 首页

« 返回列表
博尔杰PTS|博尔杰标识商城|博盾安全标识|博锐迪生物标签