外观也过了?包装贴标、条码绑定与出货 MES 闸门 日期2026-10-02面向线束工艺、包装/贴标工位、质量与制造信息化人员写在前面上一篇2026-10-01把外观/AOI 写成了可审计的程序绑定、结构化缺陷码、图像 digest 与 MES 过站门禁并留了一句边界包装/标签应读上道电气 seal_ok aoi_ok。本稿不再复述 AOI 缺陷码表、密封 ΔP、IR 漏流或导通明细而是把镜头对准下一道常见放行闸门——包装 / 贴标与出货——以及它如何在 MES 里变成可审计的标签模板绑定、条码/SN 对齐、箱托聚合与出货门禁。公开工程方法讨论里电气回答完整性密封回答泄漏外观回答视觉缺陷包装/贴标回答的是第四类问题正确的身份是否印在正确的载体上并与已完成的质量闸门绑定后才允许离站/出货。四道题正交。软件上最常见的事故不是打印机“出不了纸”而是外观 PASS 后随手打标签——未校验电气 ∧ seal ∧ aoi ∧ pack或标签内容与harness_sn主数据不一致本地标签模板可改、无label_template_id/template_rev——事后无法证明当时印的是哪版文案/条码规则只有“已打印”布尔没有 SN↔条码/OCR 对齐记录——客户扫码对不上实物箱/托聚合靠 Excel——carton_id/pallet_id与 SN 列表无幂等绑定发错箱无法追溯补打无授权——同一 SN 被连打多张“合格签”旧签流入现场。本文把包装/贴标/出货写成智能制造里的工艺软件门禁harness_snlabel_template_id/template_rev绑定pack_ok与ship_ok分位出货要求电气 ∧ seal ∧ aoi ∧ packSN↔标签 OCR/扫码匹配箱托聚合可审计补打需授权。文中字段名与阈值均为示例占位一律标为「示例」不是行业标准硬限值。全文谈数据与闸门不写危险操作或绕过安全联锁的步骤。图1左侧仅 aoi_ok 仍缺包装绑定右侧出货闸门要求电气 OK ∧ seal_ok ∧ aoi_ok ∧ pack_ok且 SN↔标签匹配。一、为什么“外观也过了”还不够1.1 质量闸门与身份闸门是正交问题公开方法文通常把线束验收与放行拆成多层名称因设备而异本稿用通用说法测法 / 工位主要回答的问题与本稿关系导通 / IR / 耐压电气完整性上道闸门本稿只引用气密 / 密封泄漏是否在窗内上道闸门本稿不重写外观 / AOI视觉缺陷是否在窗内上道闸门见 10-01 稿本稿不重写包装 / 贴标 / 出货身份载体与聚合是否正确本稿焦点aoi_ok ≠ 可出货。外观 PASS 不能证明标签印对、条码与 SN 一致、箱托清单无串货反之标签漂亮也不证明电气/密封/外观曾合格。控制计划若要求分站MES 必须维护独立闸门位禁止用前道 PASS 冒充包装完成也禁止用“已打印”冒充出货放行。1.2 软件视角的五个共同缺口从制造信息化看包装/贴标最容易出现五种“看起来发过、其实不可审计”的状态结果未绑定harness_sn工位本地有打印日志MES 侧只有“本班打了多少张”无label_template_id/template_rev文案、条码规则、客户唛头可被现场改参而不升版无 SN↔标签对齐证据没有label_barcode/ocr_match/scan_match聚合靠线下表carton_id/pallet_id与 SN 列表无事件化绑定幂等键缺失导致重复装箱补打 / 重打无授权NG 或丢签后同一账号连打至“看起来齐套”。后面几节分别对应模板怎么绑、条码对齐与 pack_ok 怎么写、出货与箱托闸门怎么落。二、模板绑定没有template_rev打出来的签只是本地出纸2.1 最小身份链 模板链 打印事件链一次可追溯的包装/贴标过站至少要串起字段示例名含义工程纪律harness_sn线束唯一序列号扫码启动禁止无码贴标放行work_order生产工单与变体 / 客户唛头对齐label_template_id标签模板 ID与客户标签规范 / ECN 绑定template_rev模板批准版本已批准只读改文案/条码规则必须升版station_id/printer_id工位 / 打印机过站校验设备族与耗材状态示例策略operator_id操作者追溯与补打授权审计print_request_id幂等请求号同一请求不得静默打出第二张有效签label_barcode实际条码内容与主数据期望值比对作者建议非强制标准开打条件写成硬闸门——扫到harness_sn后由 MES或边缘网关校验上道闸门并下发/校验label_template_idtemplate_rev本地不得静默使用“上次残留模板”。若现场仍靠 U 盘拷模板至少也要把模板哈希回写 MES。打印本身应是可追溯业务事件带身份、模板版本、幂等请求号与状态回写而不是无状态按钮。2.2 模板窗本身也是数据示例占位# 示例 · 禁止直接当本厂标准 示例模板 LBL-SHIP-A / template_revR04 barcode_symbology CODE128 示例 expected_payload_fmt SN:{harness_sn} 示例 ocr_required true 示例·贴后 OCR ship_to_block_id CUST-SHIPTO-12 示例·唛头块 allow_reprint auth_only 示例正确说法是条码规则、文案块、是否贴后复核由客户规范与工艺验证共同给出软件负责按label_template_id/template_rev加载并拒绝无版本打印。2.3 联调负例三连信息化验收故意加载错误template_rev邻接客户唛头或已废止条码规则→ 应拒绝启动或强制双签上道缺aoi_ok或电气/密封未完成仍请求打印 → 拒绝pack_ok不得置真无reprint_auth直接补打 → 拒绝要求原因码与授权。这三连比只测 Happy Path 更能暴露接口字段是否真进了闸门。三、条码绑定与 pack_ok打印之外必须留下可复盘的对齐证据图3左为条码/聚合层示例字段右为身份 / 模板 / 闸门 / 补打分层。名称均为示例占位。3.1 SN↔标签对齐示例字段非标准字段示例名含义为何需要expected_barcode主数据期望条码载荷与变体/客户规则对齐label_barcode打印或扫回的实际载荷防止打错规则仍绿灯scan_match/ocr_match扫码或 OCR 是否一致贴后复核证据match_methodSCAN / OCR / BOTH示例复盘用了哪种核对pack_ok本工位综合闸门位供出货读取ts完成时间戳审计与节拍原则禁止只用一个“已打印”布尔。一次过站应留下模板版本、幂等请求号、期望/实际条码与匹配结果。OCR/扫码阈值与相机选型因工厂而异——本稿只要求有匹配证据落库不指定设备品牌。3.2 判定逻辑教学非标准# 示例判定 · 字段为占位 if not upstream_multi_ok(sn): # 电气 ∧ seal ∧ aoi上道引用 pack_ok false refuse(UPSTREAM_GATES) if template_rev mismatch: refuse(TEMPLATE_MISMATCH) print_event(print_request_id, template…) if recipe.ocr_required and not ocr_match(sn, label_barcode): pack_ok false defect_or_reason SN_LABEL_MISMATCH # 示例原因码 else: pack_ok (label_barcode expected_barcode) and scan_or_ocr_ok write pack_ok, label_barcode, match flags, ts人贴 扫码复核、半自动贴标、全自动打印贴附属工艺布置选择软件上只要保证模板版本与对齐证据一致以及出货站读的是pack_ok且上道闸门仍为真。3.3 轻量分析有对齐证据才能谈改进按变体聚合SN_LABEL_MISMATCH→ 看是主数据漂移还是模板升版遗漏按printer_id/station_id交叉 → 区分规则错误与设备/耗材问题补打率抬升 → 优先查丢签与现场流程再谈“多打一张”与上道联合看——例如某批次 aoi 全绿但贴标不匹配突增优先查换型点检与模板下发而非盲目补打。四、MES 过站闸门扫码 → 模板 → 打印/核对 → 箱托 → 出货图2扫码校验上道多闸门 → 下发模板 → 打印并 SN↔标签核对 → 箱托聚合 → ship 闸门。4.1 业务状态机教学UNPACKED → TEMPLATE_LOADED → PRINTING → VERIFYING → PACK PASS → pack_oktrue 仍需上道电气∧seal∧aoi 才可 ship → MISMATCH / PRINT_FAIL → ISOLATED → 需 reprint_auth reason → REPRINT → PASS/FAIL ABORT / TEMPLATE_MISMATCH / UPSTREAM_GATES / NO_AUTH_REPRINT / AGGREGATION_FAIL → 不进入 pack_ok不开放出货公开行业叙述中的纪律句——未过检验禁止打印合格标签——在本稿语境下应落实为贴标不读口头而读上道电气 密封 外观闸门出货再读本道pack_ok与箱托完整性。4.2 最小字段表可本地化命名分层字段示例名用途身份work_order,harness_sn,station_id,operator_id谁在何时贴了哪根模板label_template_id,template_rev, 条码规则快照用的哪版标签打印事件print_request_id,printer_id,print_status幂等与设备对齐expected_barcode,label_barcode,scan_match,ocr_match,pack_ok当时核对聚合carton_id,pallet_id,agg_seq,agg_closed箱托清单补打reprint_auth,reprint_reason,reprint_count授权与原因闸门pack_ok,ship_ok,ts放行位上道引用electrical_ok,seal_ok,aoi_ok多闸门字段名可按企业字典翻译不可省略的是序列号、模板版本、幂等打印请求、SN↔标签匹配、pack/ship 位、补打授权与箱托聚合键。4.3 闸门伪代码教学虚构function gate_pack_label(scan, printer): sn scan.harness_sn if not sn: return REFUSE(NO_SERIAL) # 上道按控制计划引用未完成则拒绝开包装示例策略 if not electrical_ok(sn): return REFUSE(ELECTRICAL_NOT_OK) if not seal_ok(sn): return REFUSE(SEAL_NOT_OK) if not aoi_ok(sn): return REFUSE(AOI_NOT_OK) tmpl resolve_label_template(scan.work_order, scan.variant_id) if tmpl is None: return REFUSE(NO_TEMPLATE) if scan.label_template_id ! tmpl.id \ or scan.template_rev ! tmpl.rev: return REFUSE(TEMPLATE_MISMATCH) if open_isolation(sn) and not scan.reprint_auth: return REFUSE(REPRINT_NEED_AUTH) req begin_print_event( print_request_idscan.print_request_id or new_idemp(), snsn, templatetmpl, printerprinter.id) # 设备回传打印结果与扫回/OCR 后 write_result(sn, label_template_idtmpl.id, template_revtmpl.rev, print_request_idreq.id, expected_barcodetmpl.expected_payload(sn), label_barcodemeas.label_barcode, scan_matchmeas.scan_match, ocr_matchmeas.ocr_match, printer_idprinter.id, tsnow()) matched meas.scan_match or meas.ocr_match # 示例策略 if meas.label_barcode ! tmpl.expected_payload(sn) or not matched: write_flags(sn, pack_okFalse, ship_okFalse) freeze_station(untildisposition) return REFUSE(SN_LABEL_MISMATCH) write_flags(sn, pack_okTrue, ship_okFalse, tsnow()) # ship 另闸 return ALLOW_AGGREGATION function gate_aggregate(sn, carton_id, pallet_idNone): if not pack_ok(sn): return REFUSE(PACK_BLOCKED) if sn_already_in_other_open_carton(sn): return REFUSE(DOUBLE_PACK) bind_agg(sn, carton_idcarton_id, pallet_idpallet_id, agg_seqnext_seq(carton_id), tsnow()) return ALLOW function gate_ship(carton_or_sn): sns expand_to_sns(carton_or_sn) for sn in sns: if not electrical_ok(sn): return REFUSE(ELECTRICAL_BLOCKED) if not seal_ok(sn): return REFUSE(SEAL_BLOCKED) if not aoi_ok(sn): return REFUSE(AOI_BLOCKED) if not pack_ok(sn): return REFUSE(PACK_BLOCKED) if open_rework(sn): return REFUSE(REWORK_OPEN) if not sn_label_matched(sn): return REFUSE(LABEL_MISMATCH) if not aggregation_closed(carton_or_sn): return REFUSE(AGG_OPEN) write_flags(carton_or_sn, ship_okTrue, tsnow()) return ALLOW_SHIP原则一句话出货放行条件 已绑定harness_sn∧ 上道电气 OK ∧ seal_ok ∧ aoi_ok ∧ 本道模板版本匹配 ∧ SN↔标签匹配 ∧ pack_ok ∧ 箱托聚合闭合 ∧ 无未关闭返修/隔离 ∧ ship_ok。缺任一字段MES 应视为未完成而不是“人说包装过了就过”。4.4 补打授权与箱托纪律打印失败 / 丢签 / 错签 → 实物隔离 系统记录旧签作废策略现场回收需有原因码补打必须reprint_authreprint_reason——禁止同一未授权账号连打补打仍使用同一label_template_id/template_rev除非工程正式升版新有效签应绑定新的print_request_id并作废或标记旧请求箱托carton_id/pallet_id与 SN 列表事件化重复装箱、未闭合出货应硬拒出货单据/ASN若有只读ship_ok与闭合聚合不读口头齐套。4.5 与相邻工位的衔接上道导通 / IR / hipot / 密封 / 外观本稿只引用electrical_ok、seal_ok、aoi_ok明细见 09-2810-01 系列此处不重复本道包装/贴标独立身份闸门模板、对齐证据与 pack_ok 必须可追溯出货读多闸门 聚合闭合而不是只读“已打印”其他客户特殊唛头、危险品标识等若在控制计划中各自独立字段——pack_ok不自动覆盖。五、落地清单工艺 软件各半盘点现有贴标/包装工位哪些只出纸、哪些已回写 MES、是否绑定harness_sn主数据补齐label_template_id↔template_rev↔ 条码规则 ↔ 客户唛头/ECN结果层至少落print_request_id、expected_barcode、label_barcode、匹配标志、pack_ok出货改为读电气 OK ∧ seal_ok ∧ aoi_ok ∧ pack_ok ∧ 聚合闭合补打强制reprint_auth 原因码箱托聚合事件化禁止双箱绑定负例三连错模板、上道未齐、无授权补打纳入联调验收周会看不匹配率与补打率而不是“今天打了多少张签”。安全、标准与适用性说明包装/贴标工位涉及机械、热转印/热敏设备与产线联锁必须遵循本厂设备安规、联锁、防护与人员资质本文只讨论数据字段与 MES 闸门不提供任何绕过联锁或不安全操作步骤。文中闸门说明参考公开的质量追溯 MES 与标签打印事件化讨论不是某团体标准条款摘抄也不构成对特定打印机、贴标机或 MES 品牌的选型建议。正文统一使用通用名打印机 / 贴标工位 / MES / 边缘网关 / OPC UA / MQTT。条码符号体系、OCR 是否强制、箱托容量、补打次数上限等均为示例占位量产必须以客户规范与工艺验证批准值为准。伪代码与字段名为教学虚构集成时按本厂 MES / 打印服务 / 边缘网关接口映射。包装/贴标不替代导通、IR/hipot、气密、外观等验证手段上道细节见同系列 09-2810-01 稿本稿不重复。配图均为本地原创 SVG→PNG 技术示意图无品牌标识。