第四章 工艺路线模型:工序定义、工艺路线设计、工时与参数配置

工艺路线,说白了就是产品怎么一步步做出来的“地图”。

我见过太多MES项目,上线后跑不起来,十有八九是工艺路线没搭好。你想想看,系统连“先做什么后做什么”都搞不清楚,后面的排产、报工、质量追溯,全得乱套。

这一章,咱们就聊聊工艺路线模型的核心三块:工序怎么定义、路线怎么设计、工时和参数怎么配。嗯,都是实战里天天要碰的东西。

4.1 工序定义:别小看这个“最小单元”

工序,是工艺路线里最小的执行单元。比如“焊接”、“组装”、“测试”,每个动作就是一个工序。

我个人习惯,在定义工序时,先想清楚三件事:

  • 工序编码:必须唯一,建议用“车间代码+流水号”,比如SMT001、ASSY002。别用中文,系统里查起来麻烦。
  • 工序名称:要让人一眼看懂。别写“工序A”、“工序B”,车间老师傅会骂人的。
  • 工序类型:是“生产”、“检验”、“搬运”还是“暂存”?类型不同,后续的报工逻辑、质检触发都不一样。

重要提醒:工序定义时,一定要预留“扩展属性”字段。我在项目中遇到过,客户突然说“每个工序要绑定一个SOP文件编号”。如果当初没留扩展字段,就得改数据库表结构,那叫一个折腾。

工序定义的数据模型,大致长这样:

-- 工序主表
CREATE TABLE t_operation (
  operation_id      VARCHAR(20) PRIMARY KEY,  -- 工序编码
  operation_name    VARCHAR(100),             -- 工序名称
  operation_type    VARCHAR(20),              -- 工序类型
  workshop_id       VARCHAR(20),              -- 所属车间
  is_active         CHAR(1),                  -- 是否启用
  ext_attr_json     TEXT                      -- 扩展属性(JSON格式)
);

你看,我特意加了个 ext_attr_json 字段。这就是实战经验——别把数据模型做死,要给未来留点余地。

4.2 工艺路线设计:把工序串起来

工序定义好了,接下来就是“排顺序”。

工艺路线,本质上是一个有向无环图。每个工序有前驱、有后继,还可能并行、有分支。

我建议用“版本号”来管理工艺路线。为什么?因为产品工艺会变。今天改个参数,明天换个物料,如果没有版本控制,现场用的到底是老工艺还是新工艺?根本说不清。

工艺路线模型的核心字段:

字段 说明 示例
route_id 工艺路线编号 ROUTE-1001
version 版本号 V1.0、V2.0
product_id 适用产品 PROD-A001
sequence_no 工序顺序号 10、20、30
operation_id 工序编码 SMT001
next_operation 下一工序 ASSY002
is_parallel 是否并行 Y/N

这里有个坑:顺序号别用1、2、3,要用10、20、30。为什么?因为后期要在中间插入工序。如果你用了1、2、3,插一个就得改一堆。用10、20、30,中间插个15就行了。嗯,这是老工程师的土办法,但特别好用。

小技巧:工艺路线设计时,建议画一张流程图。别光在Excel里写数据,画出来才能发现“哎,这个工序怎么跳过去了?”或者“这里是不是少了个检验点?”

下面是我用SVG画的一张工艺路线示意图,你可以感受一下:

来料检验 SMT贴片 回流焊接 AOI检测 开始 结束 图:典型SMT产线工艺路线(串行流程)

你看,这张图里每个工序都是串行的。但实际生产中,经常有并行工序。比如“组装A”和“组装B”可以同时做。这时候,数据模型里就要支持“多前驱、多后继”。

4.3 工时与参数配置:别让数据“打架”

工时和参数,是工艺路线里最容易出问题的两个地方。

先说工时。

工时分三种:

  • 标准工时:理论上的时间,比如“贴一个元件0.5秒”。
  • 实际工时:现场报工报上来的时间。
  • 额定工时:用来算工资、算成本的工时。

我曾经在一个项目里,客户把标准工时和额定工时混在一起用。结果排产系统算出来的计划,跟实际差了30%。后来我帮他们重新梳理,把三个工时分开存,问题才解决。

工时配置的数据模型:

-- 工序工时表
CREATE TABLE t_operation_time (
  operation_id  VARCHAR(20),
  time_type     VARCHAR(10),  -- 'STD'标准, 'ACT'实际, 'RATED'额定
  setup_time    DECIMAL(10,2), -- 准备时间(分钟)
  run_time      DECIMAL(10,2), -- 单件加工时间(分钟)
  unit          VARCHAR(10),   -- 单位:秒/分钟/小时
  effective_date DATE,         -- 生效日期
  PRIMARY KEY (operation_id, time_type, effective_date)
);

注意:工时一定要带“生效日期”。因为工艺会优化,工时也会变。如果没有日期,你根本不知道这个工时是今天的还是去年的。

再说参数配置。

每个工序都有参数。比如“焊接温度”、“压力值”、“转速”。这些参数,有的需要从设备自动采集,有的需要人工录入。

我建议把参数分成两类:

  1. 控制参数:设备必须按这个值运行,超差就报警。比如“炉温上限260℃”。
  2. 记录参数:只是记录一下,不参与控制。比如“环境湿度”。

为什么要分?因为控制参数要触发报警,记录参数不用。如果混在一起,报警逻辑会写得非常痛苦。

参数配置的示例:

-- 工序参数配置表
CREATE TABLE t_operation_param (
  operation_id  VARCHAR(20),
  param_code    VARCHAR(30),   -- 参数编码,如 TEMP_001
  param_name    VARCHAR(100),  -- 参数名称
  param_type    VARCHAR(10),   -- 'CONTROL'控制, 'RECORD'记录
  standard_val  VARCHAR(50),   -- 标准值
  upper_limit   VARCHAR(50),   -- 上限
  lower_limit   VARCHAR(50),   -- 下限
  unit          VARCHAR(20),   -- 单位
  source        VARCHAR(10)    -- 'AUTO'自动采集, 'MANUAL'人工录入
);

实战建议:参数的上限和下限,我建议用字符串存。为什么?因为有的参数是数值,有的是文本(比如“合格/不合格”)。用字符串,兼容性最好。取值的时候再转成对应类型就行。

4.4 避坑指南:我踩过的三个坑

做工艺路线模型,有几个坑我印象特别深,分享给你:

  • 坑一:工艺路线没有版本控制。 我曾经在一个项目里,客户说“工艺改过了”,结果一查数据库,旧数据被覆盖了。所有历史追溯全废了。从那以后,我做的每个工艺路线模型,必带版本号。
  • 坑二:工序编码用中文。 嗯,这个说起来都是泪。系统集成的时候,设备接口只认ASCII码,中文传过去全是乱码。后来全部改成英文编码,重做了一遍。
  • 坑三:工时和参数没有时间戳。 工艺是活的,数据是死的。没有时间戳,你永远不知道这个数据是什么时候生效的。做数据分析的时候,数据全是“打架”的。

好了,工艺路线模型的核心内容,差不多就这些。记住一句话:工艺路线是MES的骨架,骨架歪了,后面全白搭。

公众号:蓝海资料掘金营,微信deep3321