PLANT SIMULATION 16 · LEARNING NOTE
Lab 02:建立三工位自动线并识别瓶颈
本页目录
场景说明
客户计划建设一条电机壳体自动加工线:OP10 上料定位、OP20 精加工、OP30 清洗检测。三道工序节拍分别为 55、70、50 秒。客户希望知道为什么某些工位会等待、某些工位会阻塞,以及增加设备前能否先通过缓冲改善。
本课先建立无故障、固定时间的基线。只有基线通过验证,下一课才加入故障。
完成后的模型
Source_Part → OP10_Load → B10_20 → OP20_Machine → B20_30 → OP30_Wash → Drain_Good
EventController
参数:
| 对象 | 类型 | 时间/容量 |
|---|---|---|
| Source_Part | Source | 每 55 秒 1 件 |
| OP10_Load | SingleProc | 55 秒 |
| B10_20 | Buffer | 容量 5 |
| OP20_Machine | SingleProc | 70 秒 |
| B20_30 | Buffer | 容量 5 |
| OP30_Wash | SingleProc | 50 秒 |
| Drain_Good | Drain | 默认 |
| EventController | EventController | 8 小时 |
理论瓶颈是 OP20,理想上限约
8×3600/70 = 411.4 件/班。
真实系统视觉参考

官方示例显示了子 Frame 连接、长度型输送对象、机器人和尺寸标注。你的练习模型先使用简单对象;不要为了接近 3D 外观而过早增加复杂度。来源:Siemens Plant Simulation 16 发布说明。
步骤 1:从 Lab 01 另存为
- 打开
Lab01_FirstModel_v02_validated.spp。 - 选择 File → Save As。
- 新建目录
Lab02_ThreeStationLine。 - 保存为
Lab02_ThreeStationLine_v01.spp。 - Reset 模型,确认时钟为 0。
不要直接修改已经验证的 Lab 01 文件。
步骤 2:重命名现有对象
- 将
Source_RawPart改为Source_Part。 - 将
Drill_01改为OP10_Load。 - 保留
Drain_Good。 - 双击
Source_Part,把到达间隔改为 55 秒。 - 双击
OP10_Load,把 Processing time 改为 55 秒。
步骤 3:插入第一段 Buffer
最稳妥的做法是先删除
OP10_Load → Drain_Good 的
Connector,再放新对象。
- 选中该 Connector,按
Delete。 - 从 Material Flow 工具箱放置
Buffer。 - 放在 OP10 右侧,命名为
B10_20。 - 双击 Buffer。
- 将 Capacity 设置为
5。 - 保持 FIFO 行为。
- 关闭对话框。
步骤 4:增加 OP20
- 放置一个
SingleProc,命名为OP20_Machine。 - 打开 Times。
- 设置 Processing time 为 70 秒。
- Setup、Failure 暂时保持关闭或 0。
步骤 5:增加第二段 Buffer 和 OP30
- 放置
Buffer,命名为B20_30,Capacity = 5。 - 放置
SingleProc,命名为OP30_Wash。 - 设置 OP30 Processing time = 50 秒。
- 把 Drain 移到 OP30 右侧。
步骤 6:按顺序连接
用 Connector 建立:
Source_Part → OP10_LoadOP10_Load → B10_20B10_20 → OP20_MachineOP20_Machine → B20_30B20_30 → OP30_WashOP30_Wash → Drain_Good
连接后从左到右逐一念出对象名。这个简单动作能发现跳过工位、反向连接和重复连接。
步骤 7:先做单件贯通测试
长时间运行前,先只创建 1 件。
- 打开 Source,将创建数量限制为 1;如果当前 Source 配置没有直接数量字段,可暂时设置一个极长的第二件间隔,在第一件完成后暂停。
- Reset。
- 降低动画速度。
- Start。
- 观察该件依次经过 OP10、B10_20、OP20、B20_30、OP30、Drain。
- 记录第一件离开系统的时刻,理论无等待流动时间为
55+70+50=175秒,加上软件事件边界差异。
若第一件跳过任何对象,停止并修复 Connector。
步骤 8:恢复连续来料并运行 8 小时
- 恢复 Source 每 55 秒创建 1 件。
- 确认 B10_20/B20_30 容量均为 5。
- Reset。
- Start,先观察前 10 分钟。
- 加速运行至 8 小时。
预期动态
- OP20 比 OP10 慢,B10_20 将逐渐填满;
- B10_20 满后,OP10 会出现 Blocked;
- OP30 比 OP20 快,常因没有工件而 Waiting/Starved;
- OP20 长期接近满负荷;
- 最终良品约 410 件,边界值可能略有差异。
步骤 9:查看状态统计
逐一打开三个工位的 Statistics,记录:
| 工位 | Working | Waiting/Starved | Blocked | 解释 |
|---|---|---|---|---|
| OP10_Load | 受 OP20 限制,缓冲满后阻塞 | |||
| OP20_Machine | 理论瓶颈,应接近持续工作 | |||
| OP30_Wash | 能力大于供给,常等待 |
状态名称可能因对象和语言显示为 Waiting、Waiting for MU、Blocked 等。关键是理解机制,不是死记颜色。
步骤 10:做容量实验
保持所有时间不变,只修改 B10_20 与 B20_30 容量。
方案 A:容量 1/1
- Save As
Lab02_Buffer_1_1.spp。 - 两个 Buffer Capacity = 1。
- Reset 并运行 8 小时。
- 记录产量、OP10 Blocked、OP30 Waiting 和期末 WIP。
方案 B:容量 5/5
恢复基线,记录同样指标。
方案 C:容量 20/20
- 两个 Buffer Capacity = 20。
- 运行并记录。
- 注意产量可能没有显著增加,但期末 WIP 会增加。
结果表:
| 方案 | B10_20 | B20_30 | 良品 | 期末 WIP | OP10 Blocked | OP30 Waiting |
|---|---|---|---|---|---|---|
| A | 1 | 1 | ||||
| B | 5 | 5 | ||||
| C | 20 | 20 |
正确结论
在固定时间、无故障的串行线上,增加瓶颈前缓冲无法突破 OP20 的理论能力。它可能改变阻塞位置、期末 WIP 和短期启动行为,但不应神奇地把长期产能提高到超过 70 秒节拍的极限。
步骤 11:反证瓶颈
- 恢复 Buffer 5/5。
- 将 OP20 Processing time 从 70 秒降到 45 秒。
- 其他参数不变。
- Reset 并运行。
- 现在 Source/OP10 的 55 秒节拍将成为限制因素,产量应回到约 480–523 的边界范围,取决于 Source 创建规则。
这说明“瓶颈”是系统条件下的结果,不是设备永恒标签。
结果截图要求
保存:
L02-01-baseline-layout.png:完整模型和对象名;L02-02-buffer-full.png:B10_20 满载、OP10 阻塞时;L02-03-station-statistics.png:三个工位状态统计;L02-04-scenario-table.png:三个缓冲方案结果。
常见错误
| 现象 | 原因 | 修复 |
|---|---|---|
| Buffer 永远不满 | Source 间隔大于 OP20 节拍,或 OP20 不是 70 秒 | 检查时间单位 |
| OP30 一直工作 | 可能 Source 设置为 0 间隔且 OP20 多容量 | 检查 Source 和对象类型 |
| 增大 Buffer 后产量大幅翻倍 | 统计未 Reset 或方案时间不同 | 每方案先 Reset,统一 8 小时 |
| 对象显示有连接但 MU 不走 | Connector 端点错误或存在出口规则 | 删除后重新连接 |