3. 产线建模要素拆解
离散事件仿真的本质,是把一条真实产线翻译成一组“可被仿真引擎推进的对象”。翻译质量决定了仿真结论是否可信。本节不讨论某个软件的操作按钮,而是聚焦一个更基础的问题:产线上看得见的工件、设备、人员、班次,以及看不见的故障、换型、等待,究竟应该被表达成什么数据结构,才能让仿真时钟一步步推进时,系统状态变化与真实产线一致。
先建立一个统一视角:仿真模型由实体(Entity)、资源(Resource)、流程(Process)和状态变量(State Variable)四类元素构成。工件是典型的流动实体,设备、人员、缓冲区容量是资源,工序是实体占用与释放资源的流程节点,而故障、换型、班次则是对资源可用性和流程节拍的状态扰动。下面按对象逐一拆解其数据化表达。
工件:带属性的流动实体
工件不是“一个零件”这么简单。它至少需要携带:工件类型(决定工艺路线)、到达时间、当前工序序号、已加工时间、优先级、批次号。若产线存在混流,工件类型字段直接决定它走哪条路径。例如某装配线同时生产A、B两种型号,A型需经过工序1→2→4,B型需经过1→3→4,此时工件类型就是路径选择的分支条件。
工件到达方式也需数据化。常见两种:按固定间隔到达(确定性)和按指数分布到达(随机性)。若已知某工位平均每90秒来一个工件,可用指数分布均值90秒表达;若节拍严格由上游输送带决定,则用固定间隔90秒。这个选择会显著影响排队长度和产能波动。
工序:实体与资源的交互契约
工序是仿真推进的核心节点,它描述“工件在某个设备上发生了什么”。一个工序至少包含:工序编号、前置工序、可用设备组、加工时间分布、所需人员技能、良率。加工时间不能只写一个平均值,工程上常用三角分布或正态分布表达波动。例如某焊接工序,标准工时120秒,实际在105~140秒之间波动,可用三角分布(105,120,140)表达。
良率字段常被忽略,但它直接影响有效产出。若某工序良率98%,意味着每100个工件中有2个在仿真中应被标记为废品并退出主流程,而不是继续占用下游设备。这一步若缺失,产能会被系统性高估。
设备与缓冲区:资源容量与阻塞逻辑
设备的数据化表达包括:设备编号、所属设备组、可用状态、当前加工工件、累计加工数、故障历史。设备组的概念用于表达“多台同类设备可替代”,例如3台CNC组成一个设备组,工件到达时选择空闲设备,若全忙则排队。
缓冲区是仿真中最容易被简化却最影响结果的对象。它需要表达:容量上限、当前库存、入队规则(FIFO/优先级)、阻塞行为。当缓冲区满时,上游设备是继续加工导致阻塞,还是停止取件?这两种逻辑对产能影响截然不同。例如某缓冲区容量为5,若设为“满则阻塞上游”,则上游设备在缓冲区满时无法释放工件,进而停止加工;若设为“满则丢弃”,则会产生额外废品。仿真前必须明确这一规则。
运输:被低估的时间消耗
运输在仿真中常被简化为“零时间”或“固定延迟”,但实际产线中,AGV、叉车、输送带的运输时间可能占整个周期的15%~30%。运输对象需要表达:运输方式、速度、装载量、路径长度、调度规则。例如某AGV从仓库到线边库距离80米,速度1.2米/秒,则单程约67秒;若AGV数量为2台,还需表达“等待AGV”的排队逻辑。若忽略这一层,仿真会低估在制品等待时间。
班次与人员:时间可用性的边界
班次不是简单的“每天8小时”。它需要表达:班次起止时间、休息时段、交接班时间、加班规则。例如两班制,早班8:00-16:00,晚班16:00-24:00,每班中间休息30分钟。仿真时钟推进到休息时段时,设备应暂停加工或由替班人员接管。若班次数据缺失,仿真会默认24小时连续运行,产能被高估约30%以上。
人员作为资源,需表达技能矩阵和数量。例如某工位需要“焊接技能L2”人员1名,若当前班次只有1名L2人员且已被占用,则工件必须等待。人员与设备的区别在于:设备通常固定位置,人员可在工位间移动,因此还需表达移动时间。
故障与换型:随机扰动与确定性切换
故障是随机扰动,常用MTBF(平均故障间隔)和MTTR(平均修复时间)表达。例如某设备MTBF=480分钟,MTTR=30分钟,则仿真中每运行480分钟(指数分布)触发一次故障,修复30分钟(可设为对数正态分布)。故障期间设备不可用,上游缓冲区可能被填满,下游设备可能饥饿,这些连锁反应正是仿真要捕捉的。
换型是确定性切换,需表达:换型触发条件(如工件类型变化)、换型时间、换型期间设备状态。例如从A型切换到B型需25分钟,期间设备不加工任何工件。若换型频繁,换型损失会显著拉低有效产能。仿真中应记录换型次数和累计换型时间,作为改善依据。
数据化表达的落地检查
完成上述对象定义后,建议用一张参数表做一致性检查。以下为某装配线示例参数(数值为教学假设,非实测):
| 对象 | 关键字段 | 示例值 | 分布/规则 |
|---|---|---|---|
| 工件 | 类型/到达间隔 | A型/B型 | 指数分布均值90s |
| 工序 | 加工时间/良率 | 120s / 98% | 三角分布(105,120,140) |
| 设备 | 设备组/数量 | CNC组 / 3台 | 空闲则占用,全忙则排队 |
| 缓冲区 | 容量/阻塞规则 | 5 / 满则阻塞上游 | FIFO |
| 运输 | 速度/距离 | 1.2m/s / 80m | AGV 2台,等待排队 |
| 班次 | 班次表/休息 | 两班制 / 30min | 休息时设备暂停 |
| 故障 | MTBF/MTTR | 480min / 30min | 指数分布/对数正态 |
| 换型 | 换型时间/触发 | 25min / 类型变化 | 确定性切换 |
最后强调一个原则:仿真模型不是越细越好,而是“刚好能回答当前问题”。若目标是评估产能瓶颈,故障和换型必须表达;若目标是评估AGV数量,运输调度必须表达;若目标是评估班次安排,班次和人员必须表达。对象的数据化深度,应由仿真目标反向决定,而不是一次性把所有细节都塞进模型。