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:创建新项目
- 新建空白 2D 模型。
- 保存为
Lab04_FMS_Routing_v01.spp。 - 在 Class Library 的 Models 下新建 Frame,命名
FMS_Main。 - 在该 Frame 中放置对象,避免都堆在根目录。
步骤 2:创建基础对象
依次放置并命名:
Source_Mix:Source;B_Input:Buffer,Capacity = 20;CNC_Turn_01、CNC_Turn_02:两个 SingleProc;B_AfterTurn:Buffer,Capacity = 10;CNC_Mill_01、CNC_Mill_02:两个 SingleProc;B_AfterMill:Buffer,Capacity = 10;CMM_Inspect:SingleProc;Drain_Good:Drain;EventController。
先不要连接,先把对象按车削区、铣削区、检测区分组摆放。
步骤 3:建立 MU 类型
方法 A:三个 MU 类(初学推荐)
- 在 Class Library 找到 MUs/Entity 基类。
- 复制或派生三个 Entity 类。
- 命名
Part_A、Part_B、Part_C。 - 为每类设置容易区分的 2D 图标颜色。
方法 B:一个 MU 类加属性
建立 Part,增加字符串属性
ProductType。此方法适合后续用订单表驱动,但需要更多
Method 逻辑。
本课可先用方法 A,确保视觉上能识别路径。
步骤 4:配置 Source 产品组合
- 双击
Source_Mix。 - 找到 MU selection/creation table 或对象创建设置。
- 选择按序列/表创建不同 MU 类型。
- 为确定性验证先输入循环序列:
A,A,A,A,A,B,B,B,C,C。 - 到达间隔设为 90 秒,避免第一遍大量拥堵。
- 若 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:完成物理连接
建立可能发生的路径,而不是给每件产品单独画线:
Source_Mix → B_InputB_Input → CNC_Turn_01B_Input → CNC_Turn_02B_Input → CNC_Mill_01B_Input → CNC_Mill_02- 两台 Turn →
B_AfterTurn B_AfterTurn → CNC_Mill_01/02B_AfterTurn → CMM_Inspect- 两台 Mill →
B_AfterMill B_AfterMill → CMM_InspectCMM_Inspect → Drain_Good
连接只表示“可能的后继”。实际选择必须由产品路线规则限制。
步骤 7:先用标准出口策略分配并行机
对于同一资源组的两台机器:
- 打开上游 Buffer 的 Exit/Flow Control 设置。
- 查看 Successor selection/Exit strategy。
- 选择 First available、Cyclic 或 Shortest queue 中当前版本提供的标准策略。
- 第一遍选 First available,便于理解。
- 确认两台机器都在有效后继列表中。

图中可以看到 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 件做路径验证
- Source 使用
AAAAABBBCC。 - 关闭故障、换型和返修。
- 降低动画速度。
- 为每种颜色的 MU 记录路径。
- 检查: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 和处理件数。平均分配不是唯一目标;产品资格、换型和预计完工更重要。
结果截图要求
L04-01-layout.png:资源组与所有可能连接;L04-02-source-sequence.png:Source 的 A/B/C 创建序列;L04-03-routing-table.png:t_Routing;L04-04-ten-part-trace.png:10 件验证结果;L04-05-100-part-balance.png:100 件守恒表。