首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >SMT换料绑定表怎么建模?PCB码、料盘码、飞达位字段与校验接口

SMT换料绑定表怎么建模?PCB码、料盘码、飞达位字段与校验接口

原创
作者头像
智能制造MES笔记
发布于 2026-11-03 12:07:50
发布于 2026-11-03 12:07:50
1170
举报
文章被收录于专栏:工业与物联网工业与物联网

SMT 换料绑定是 PCB 装配制程里把「哪块板用了哪盘料、上了哪个飞达位」落到系统的动作。很多工厂的 MES 只在贴片机端记了 Program 和站位,换料时只扫一下料盘条码就过,出了问题再反查往往发现 PCB 码、料盘码和飞达位之间根本对不上。把换料绑定做成一张独立表,并配合一组校验接口,可以把追溯链路从「贴片机日志+人工对」变成「系统可验证的绑定记录」。下面按字段与接口的顺序展开。

一、绑定表的职责边界

换料绑定表记录一次换料动作的完整上下文:哪一块(或哪一批)PCB、哪一盘物料、在贴片机上的哪个飞达位、谁在什么时间做了绑定、绑定前的校验结果。它不是 BOM 的副本,也不替代上料防错;它的核心产出是「绑定行」,供后续首件、SPI/AOI 绑定、工序流转与质量追溯引用。

建模前先把范围划清:

  • 绑定发生在换料确认时,而不是在贴片机开始贴片时。
  • 一行绑定只对应一个飞达位的一盘料,不拆不合并。
  • PCB 侧可能是单板码,也可能是批次/卷盘码,字段要能同时容纳两种粒度。
  • 绑定成功后,上游(BOM/工单/站位表)不再被改写,绑定表只新增。

二、核心字段设计

主键与索引

  • id:自增主键。
  • bind_no:绑定流水号,由系统按日期+设备+序列号生成,供扫码枪和看板引用,走唯一索引。
  • version:乐观锁版本号,防止同一绑定被重复提交。

PCB 相关

  • pcb_code:PCB 码,VARCHAR,允许单板序列号或批次号。长度建议 50,建普通索引。
  • pcb_code_type:码的粒度,字典字段,值如 SINGLE(单板码)、BATCH(批次/卷盘码)。追溯反查时按粒度走不同聚合。
  • batch_no:当 pcb_code_type 为 BATCH 时的生产批次号,可与 pcb_code 相同,语义更清晰。
  • board_revision:PCB 版本号,与 BOM 版本号一起参与一致性校验。

物料与料盘

  • reel_code:料盘码,VARCHAR,通常来自供应商卷盘条码或 IQC 转换的厂内盘码,唯一索引。
  • material_no:物料编码,与 ERP/BOM 对齐。
  • material_rev:物料版本号,与 board_revision 配合做「版次一致性」校验。
  • supplier_lot:供应商批次号,选填,质量追溯时常用。
  • reel_qty:料盘数量(片/颗),绑定校验时用。
  • expire_date:物料有效期/烘烤后有效期,超期直接拒绑。

飞达位与设备

  • feeder_pos:飞达位,贴片机上的站位编号,如 F01、F32。与 equipment_no 联合建唯一索引:同一飞达位在同一设备上同一时间只能绑一盘。
  • equipment_no:贴片机编号,如 Yamaha YVR2320-03。
  • program_no:贴片程序号,换料时由贴片机或 MES 下发,用来做「站位-物料」的一致性核对。
  • position_in_program:程序中的逻辑站位,和 feeder_pos 一起可覆盖「物理站位 vs 逻辑站位」两套现场。

动作与上下文

  • operator:操作人账号,非手工姓名,便于权限审计。
  • bind_time:绑定时间,精度到秒,时区统一用系统时区。
  • shift_no:班次号,车间排班追溯常用。
  • work_order_no:工单号,关联到当前在产工单。
  • result_code:校验结果码,PASS / FAIL_REEL / FAIL_QTY / FAIL_EXPIRE / FAIL_PROGRAM 等。
  • result_msg:校验失败原因,定长 200,便于日志检索。
  • ref_check_no:引用上游校验流水号,把绑定和校验接口调用一一对应。

状态与生命周期

  • status:绑定状态,DRAFT(扫码中)、CONFIRMED(已绑定)、VOID(作废)、OVERRIDE(越权放行)。
  • void_reason:作废原因,status=VOID 时必填。
  • override_reason:越权原因,status=OVERRIDE 时必填且需二级审批。

附件与扩展

  • scan_image_url:扫码现场拍照或贴标照片 URL,质量争议时引用。
  • extra_json:预留 JSON 字段,放贴片机厂商扩展属性(如温度补偿标记、飞达类型),不污染核心列。

三、字段校验规则(落在接口层)

建模只是骨架,真正决定追溯能不能用的是接口校验。换料绑定至少需要三组校验:

料盘合法性校验

  • 按 reel_code 查 IQC/入库表:料盘是否存在、是否已消耗完、是否已被另一条绑定占用。
  • 查有效期与 MSD/烘烤时钟:超过 expire_date 或烘烤后超时直接拒。
  • 返回 result_code=FAIL_EXPIRE 或 FAIL_REEL,并带上剩余可用数量。

BOM 与站位一致性校验

  • 用 work_order_no + program_no + feeder_pos 查出该站位当前应该贴什么 material_no 和 material_rev。
  • 与扫码到的料盘物料对比,不一致返回 FAIL_PROGRAM。
  • 同时核对 board_revision 与工单 BOM 版次,版次不匹配同样拒。
  • 这一步不要跨表去改 BOM,只做只读比对。

数量与防呆校验

  • 对比 reel_qty 与工单该站位需求数量,不足给出 FAIL_QTY 并提示是否允许跨盘续绑。
  • 同设备同飞达位若已存在 CONFIRMED 记录,拒绝重复绑定,要求先换料确认或作废旧绑定。
  • 连续两次 FAIL 时,接口可要求二次扫码确认,避免错扫。

四、接口设计

1) 预校验接口(不产生绑定行)

  • 路径示例:POST /smt/rebind/precheck
  • 入参:equipment_no、feeder_pos、pcb_code、pcb_code_type、reel_code、program_no、work_order_no、operator。
  • 出参:allowed(布尔)、result_code、result_msg、expected_material_no、expected_material_rev、remain_qty。
  • 作用:扫码枪扫完 PCB 码和料盘码后立即调用,绿/红提示操作人,避免白绑定。

2) 确认绑定接口(产生绑定行)

  • 路径示例:POST /smt/rebind/confirm
  • 入参:在预校验基础上增加 reel_qty、supplier_lot(可选)、scan_image_url。
  • 幂等键:bind_no + reel_code + feeder_pos,重复提交返回已存在行的 bind_no 与 status,不新增。
  • 出参:bind_no、id、status、result_code、ref_check_no。
  • 事务:预校验结果不跨调用传递,confirm 内部重新校验一遍,保证网络重试不产生脏数据。

3) 作废与越权放行

  • POST /smt/rebind/void:传 bind_no + void_reason,仅 CONFIRMED 行可作废,作废后 feeder_pos 释放。
  • POST /smt/rebind/override:传 bind_no + override_reason + approver,记录审批人,状态翻为 OVERRIDE。
  • 两个接口都返回变更后的行快照,便于客户端刷新。

4) 追溯查询接口

  • GET /smt/rebind/by-pcb?pcb_code=&pcb_code_type=&page=&size=
  • GET /smt/rebind/by-reel?reel_code=&page=&size=
  • GET /smt/rebind/by-position?equipment_no=&feeder_pos=&from_time=&to_time=
  • 统一返回结构:total、page、size、items[],items 里包含 bind_no、pcb_code、reel_code、feeder_pos、program_no、status、bind_time、result_code。
  • 当 pcb_code_type=SINGLE 时按行返回;=BATCH 时返回该批次下全部绑定并按 reel_code 去重汇总数量。

五、常见坑

  • 用飞达位做主键:飞达位会复用,必须和 reel_code 或 bind_no 组合。
  • 只记 material_no 不记 material_rev:来料改版后追溯会指向旧版,排查成死循环。
  • 预校验和确认分开但预校验结果被客户端缓存:网络抖动后拿旧结论白绑,confirm 必须重校。
  • 把换料绑定和首件/SPI/AOI 结果混在一张表:职责不同,绑定表只管「绑了什么」,质量结果走引用。
  • 扫码枪直接写库:绕过接口感知不到防呆规则,所有扫码必须进接口。

六、FAQ

  • 换料绑定表要不要存贴片机的 feed 数据?不要。贴片机数据走设备采集,绑定表通过 program_no + feeder_pos 关联即可,避免两份真相。
  • reel_code 一定要唯一吗?在同一工厂生命周期内唯一。跨厂来料如果盘码可能重复,需要在 IQC 入口加上厂内前缀或转为厂内盘码。
  • 批量换料怎么建?一行一飞达位,批量是客户端循环调用 confirm,不要把多站位塞进一个入参。
  • pcb_code 扫不到怎么办?绑定表允许 pcb_code 为空(DRAFT),但 CONFIRMED 前必须补上,否则追溯断链。
  • 作废后能不能恢复?不能。作废是审计留痕,恢复等价于重新绑定,产生新 bind_no。

七、结语

把 PCB 码、料盘码和飞达位放在同一张绑定表里,只是让问题从「找不到」变成「看得到」。真正决定这条链能不能跑起来的,是预校验把不合法拦截在绑定之前、确认接口对重复和重试负责、以及追溯查询能按三种维度各跑一遍。字段多一个版本号、接口多一次重校,产线上少一次停线对账。

(本文属技术分享,由 AI 辅助撰写,如有疏漏欢迎在评论区指正。)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档