PS16 制造系统仿真实战 ← 返回学习门户

PLANT SIMULATION 16 · LEARNING NOTE

Lab 04:建立多品种 FMS 路由

本页目录

场景说明

客户有三种零件 A、B、C,共用两类加工资源:车削和铣削。A 只车削,B 只铣削,C 先车削再铣削。所有零件最终检测。过去用固定设备分配导致一台机器排队,另一台空闲;本课先建立正确的多路线模型,再比较分流策略。

目标模型

                     ┌→ CNC_Turn_01 ─┐
Source_Mix → B_Input ┤               ├→ B_AfterTurn ─┐
                     └→ CNC_Turn_02 ─┘               │
                                                      ├→ CMM_Inspect → Drain_Good
                     ┌→ CNC_Mill_01 ─┐               │
             ────────┤               ├→ B_AfterMill ─┘
                     └→ CNC_Mill_02 ─┘

产品路线:

产品 比例 路线
A 50% TURN → INSPECT
B 30% MILL → INSPECT
C 20% TURN → MILL → INSPECT

学习目标

  • 创建 A/B/C 三类 MU 或一个带产品属性的 MU;
  • 用表格集中保存路线和时间;
  • 使用标准出口策略完成简单分流;
  • 在标准策略不够时,再使用 Method;
  • 用 100 件确定性样本证明路线数量完全正确。

步骤 1:创建新项目

  1. 新建空白 2D 模型。
  2. 保存为 Lab04_FMS_Routing_v01.spp
  3. 在 Class Library 的 Models 下新建 Frame,命名 FMS_Main
  4. 在该 Frame 中放置对象,避免都堆在根目录。

步骤 2:创建基础对象

依次放置并命名:

  • Source_Mix:Source;
  • B_Input:Buffer,Capacity = 20;
  • CNC_Turn_01CNC_Turn_02:两个 SingleProc;
  • B_AfterTurn:Buffer,Capacity = 10;
  • CNC_Mill_01CNC_Mill_02:两个 SingleProc;
  • B_AfterMill:Buffer,Capacity = 10;
  • CMM_Inspect:SingleProc;
  • Drain_Good:Drain;
  • EventController

先不要连接,先把对象按车削区、铣削区、检测区分组摆放。

步骤 3:建立 MU 类型

方法 A:三个 MU 类(初学推荐)

  1. 在 Class Library 找到 MUs/Entity 基类。
  2. 复制或派生三个 Entity 类。
  3. 命名 Part_APart_BPart_C
  4. 为每类设置容易区分的 2D 图标颜色。

方法 B:一个 MU 类加属性

建立 Part,增加字符串属性 ProductType。此方法适合后续用订单表驱动,但需要更多 Method 逻辑。

本课可先用方法 A,确保视觉上能识别路径。

步骤 4:配置 Source 产品组合

  1. 双击 Source_Mix
  2. 找到 MU selection/creation table 或对象创建设置。
  3. 选择按序列/表创建不同 MU 类型。
  4. 为确定性验证先输入循环序列:A,A,A,A,A,B,B,B,C,C
  5. 到达间隔设为 90 秒,避免第一遍大量拥堵。
  6. 若 Source 支持创建数量,设为 100;否则设置结束时间并在计数达到 100 后停止。

固定 10 件循环比随机 50/30/20 更适合验证,因为 100 件必然得到 50/30/20。

步骤 5:设置加工时间

先用固定时间:

设备组 A B C
TURN 150 秒 不可加工 180 秒
MILL 不可加工 210 秒 240 秒
INSPECT 30 秒 35 秒 45 秒

第一遍可把同一设备的时间统一为组内最大值,以先验证路线;第二遍再按 MU 类型读取不同加工时间。

步骤 6:完成物理连接

建立可能发生的路径,而不是给每件产品单独画线:

  1. Source_Mix → B_Input
  2. B_Input → CNC_Turn_01
  3. B_Input → CNC_Turn_02
  4. B_Input → CNC_Mill_01
  5. B_Input → CNC_Mill_02
  6. 两台 Turn → B_AfterTurn
  7. B_AfterTurn → CNC_Mill_01/02
  8. B_AfterTurn → CMM_Inspect
  9. 两台 Mill → B_AfterMill
  10. B_AfterMill → CMM_Inspect
  11. CMM_Inspect → Drain_Good

连接只表示“可能的后继”。实际选择必须由产品路线规则限制。

步骤 7:先用标准出口策略分配并行机

对于同一资源组的两台机器:

  1. 打开上游 Buffer 的 Exit/Flow Control 设置。
  2. 查看 Successor selection/Exit strategy。
  3. 选择 First availableCyclicShortest queue 中当前版本提供的标准策略。
  4. 第一遍选 First available,便于理解。
  5. 确认两台机器都在有效后继列表中。

Siemens 官方视频中的 SingleProc Exit strategy 对话框

图中可以看到 SingleProc 的 Exit 页签和 Cyclic、Random、Least Recent Demand、Min. Contents 等标准策略。视频画面为 Plant Simulation 14;版本 16 的可用策略和字段以本机对象帮助为准。来源:Siemens 官方 Using an Exit Strategy 视频

西门子官方入门视频专门演示标准出口策略:

来源:Siemens 官方 Plant Simulation 入门视频合集

步骤 8:建立路由控制逻辑

标准策略只能在候选后继之间分配,不能自动知道 A/B/C 的工艺路线。建议建立集中表 t_Routing

Product CurrentOp NextGroup NextOp
A 0 TURN 10
A 10 INSPECT 90
B 0 MILL 20
B 20 INSPECT 90
C 0 TURN 10
C 10 MILL 20
C 20 INSPECT 90

为 MU 增加整数属性 OperationNo,初值 0。

创建 Method m_SelectNextGroup。请由 Plant Simulation 编辑器生成入口/出口控制的正确参数签名,再实现下列逻辑;不要直接猜回调参数:

读取当前 MU 的产品类型和 OperationNo
在 t_Routing 查找匹配行
得到 NextGroup 和 NextOp
只允许转移到该资源组
成功转移后更新 OperationNo
如果查不到路线,停止并报告错误,不要随机放行

为什么这里不提供“直接粘贴代码”

Plant Simulation 16 的控制方法签名取决于入口控制、出口控制、对象设置及 SimTalk 版本。错误签名会让初学者陷入无意义的语法问题。正确做法是:在目标对象的 Control 设置中创建 Method,让软件生成模板,再填入业务逻辑。

步骤 9:只跑 10 件做路径验证

  1. Source 使用 AAAAABBBCC
  2. 关闭故障、换型和返修。
  3. 降低动画速度。
  4. 为每种颜色的 MU 记录路径。
  5. 检查:A 经过 Turn 不经过 Mill;B 经过 Mill 不经过 Turn;C 两者都经过。

验证表:

产品 投入 Turn 处理 Mill 处理 Inspect Good
A 5 5 0 5 5
B 3 0 3 3 3
C 2 2 2 2 2

任何一格不一致都必须修复。

步骤 10:跑 100 件守恒验证

恢复 100 件固定序列:

检查项 预期
总投入 100
A/B/C 50/30/20
Turn 总加工次数 70
Mill 总加工次数 50
Inspect 次数 100
Good 100
期末 WIP 0(让系统排空后)

不要在第 100 件刚创建时立即结束;要停止创建后继续运行直到系统排空。

步骤 11:比较并行机策略

在路线正确后比较:

  • S0:First available;
  • S1:Cyclic;
  • S2:Shortest queue(若标准策略提供);
  • S3:预计最早完工,自定义 Method。

每个方案记录两台 Turn、两台 Mill 的 Working、Waiting 和处理件数。平均分配不是唯一目标;产品资格、换型和预计完工更重要。

结果截图要求

  1. L04-01-layout.png:资源组与所有可能连接;
  2. L04-02-source-sequence.png:Source 的 A/B/C 创建序列;
  3. L04-03-routing-table.png:t_Routing;
  4. L04-04-ten-part-trace.png:10 件验证结果;
  5. L04-05-100-part-balance.png:100 件守恒表。

本课通过标准