第四章 工艺路线模型:工序定义、工艺路线设计、工时与参数配置
工艺路线,说白了就是产品怎么一步步做出来的“地图”。
我见过太多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画的一张工艺路线示意图,你可以感受一下:
你看,这张图里每个工序都是串行的。但实际生产中,经常有并行工序。比如“组装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)
);
注意:工时一定要带“生效日期”。因为工艺会优化,工时也会变。如果没有日期,你根本不知道这个工时是今天的还是去年的。
再说参数配置。
每个工序都有参数。比如“焊接温度”、“压力值”、“转速”。这些参数,有的需要从设备自动采集,有的需要人工录入。
我建议把参数分成两类:
- 控制参数:设备必须按这个值运行,超差就报警。比如“炉温上限260℃”。
- 记录参数:只是记录一下,不参与控制。比如“环境湿度”。
为什么要分?因为控制参数要触发报警,记录参数不用。如果混在一起,报警逻辑会写得非常痛苦。
参数配置的示例:
-- 工序参数配置表
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