plant simulation物流系统仿真案例

简介: plant simulation物流系统仿真案例


GitHub链接:https://github.com/zcongfly/Plant_Simulation_Case

蓝奏云链接:https://wwu.lanzoub.com/b032kpy3i

密码:awnr

友情提示:plant笔记由于文件过大上传不到蓝奏云,需要的伙伴请前往GitHub获取

我学习的plant视频课程网址:https://www.51zxw.net/List.aspx?cid=846

想要免费试学的小伙伴,关注“拾烩”公众号,后台留言“plant”获取账号和密码。

解释一下不放源模型的原因:

一方面,这是我们的结课大作业,而且该课程的任课老师每一届布置的大作业万年不变,我不想给某些人投机取巧的机会;另一方面,平心而论,这并不是一个很复杂的模型,但毕竟是我从零开始一点一点搭建出来的模型(我拿到手的资料就只有那个CAD图和那个不明所以的BOM表,花了两三个礼拜恶补基础知识,又花了两个礼拜做这个大作业),我也不想把整个过程最后的成果随随便便共享出来。

如果确实需要源模型,公众号后台私信给我一个非要不可的理由。


1.问题描述

考虑一个生产车间,该车间简化后的平面布局图如下(完整布局图见附件)。车间共分为生产区、预装配区、原材料库、AGV充电站、产品上线区共5个区域,生产开始前,AGV从车间的右上角发车,需前往原材料库将生产所需原材料运送至生产区进行生产,生产完成后的成品需经检查站检验后,再由AGV其运送至产品上线区进行上线。

车间中,有部分原材料无法直接参与成品加工,需进行预装配,此时需由AGV将原材料先运至预装配区进行加工,待加工成预装配件之后,再将该预装配件从预装配区运送至生产区的相应工位进行生产。车间还设有AGV自助充电桩,当小车电量低于设定的保留电量值时,小车可自行前往AGV充电桩进行充电。

本报告拟对该车间整体的作业流程进行仿真,以确定所需AGV小车的最佳数量,并进一步改进生产流程。

图 1车间平面布局简图

2.实体对象与参数设计

该生产车间及其相关作业需要用到的实体设备均可在plant simulation的实体库中找到对应的仿真对象,主要设备的相关对应关系如下表:

表 1 实体设备及其对应的对象

实体设备 plant simulation实体库对象
AGV Transporter
AGV行驶轨道 Track、TwoLaneTrack
生产线 Converter
立体货架 Store
充电桩、检查站 Station
装配工位 AssemblyStation
大、小料箱 Container

相关参数设计:

除下文提到的参数外,本报告涉及的其余参数均为系统默认值。

(1). AGV电量。AGV的初始电量设置为2~50mA之间服从均匀分布的随机值(z_uniform(2,50)),保留电量设置为10,即当小车电量低于10mA时,小车需前往充电桩进行充电。

(2). 生产区加工作业时间。该车间所有类种类间均设置为180s,预装配区的装配工位加工时间维持默认值。

(3). 各装配工位加工所需的各类原材料的数目根据所给的excel表格设定,表格中未给出具体数值的零件均设置为1。

(4). 大、小料箱中装有的原材料类型和数目根据所给的excel表格设定,表格中缺失具体数目的零件一律设置为1,预装配件单独装了一个料箱,数目设置为每种280件。

(5). 车间现有布局一共有3个预装配工位、6个充电桩,2条相同的生产线,每条生产线上有6个不同的加工工位,用于生产不同类型的产品。实际生产时,可自行设定实际使用多少个充电桩、生产线等。

3.仿真模块设计

3.1整体模块设计

根据所给的车间平面布局图,搭建出本次仿真模型的2D布局图如下:


图 2仿真模型布局图

在该模型中,小车从右上角的source中产生,同时设置其目的地为预装配区与原材料区中间的轨道Track9,Track9的合适位置设有已传感器,当小车触发传感器时,首先判断成品暂存区有无待上线的成品,若有,先将成品上线;接着判断预装配区有无待取的预装配件,若有,则将待取零件运至对应的装配工位,若无,预装配区向小车发出供货指令;最后,判断生产区装配工位有无可供装配的原材料,若无,生产区向小车发出供货指令。小车接收指令后,前往原材料库中取货,运往预装配区或生产区进行生产加工若小车暂无任务可供指派,则设置其目的地仍为Track9,让其绕着轨道空跑。


图 3 Track9传感器控件方法(部分)

Track9之前的Track8也设有一个传感器,当小车触发该传感器时,会判断小车的剩余电量是否低于保留电量,若低于,小车前往充电站充电。当经过一段时间,成品暂存区出现待上线的成品时,暂存区向小车发出指令,小车接收指令后,将成品运至上线区。


图 4 Track8传感器控件方法

模型设计了取货和供货两个任务表,当任意区域的暂存区需要AGV前来取货或者供货时,该暂存区将会在对应的任务表中写入取货或供货需求,当小车行驶至Track9并触发传感器时,传感器控件方法会挨个扫描任务表,并根据任务表给小车指派对应的任务,当某一任务指派给小车后,会删除任务表中对应的任务。

在模型生产区附近,每一个靠近装配工位的Track均设置有一个传感器,用于控制触发该传感器的AGV小车将料箱卸入各个工位。除D工位处的Track外,其余Track均调用m_in方法,TrackD001则调用其内部创建的OnSensor1方法。


图 5 m_in方法

同理,在靠近成品上线区的Track56,以及靠近成品暂存区的Track561处,也设有传感器,分别用于控制成品的上线和装车。

3.2初始化和重置模块设计

模型中插入的reset方法可以对模型进行初始化,当点击重置按钮时,该方法执行一次。本模型中,reset方法的目的是初始化任务表并往表中写入初始任务。


图 6 reset方法(部分)

模型将启用的充电桩数目、预装配工位数目、生产线数目、装配工位数目以及各装配工位配备的大、小料箱数目均定义为全局变量,通过修改这些全局变量,可以模拟该车间启用不同数量的物流资源时车间可能发生的各类情况,更方便地方便进行瓶颈分析和优化。

表 2 全局变量及其含义说明


全局变量名 含义
n_chargestation 启用的充电桩数目
n_preassemble 启用的预装配工位数目
n_produce 启用的生产线数目
n_part 生产线上启用的装配工位数目
n_bigbox(A/B/C/D/E/F) 装配工位配备的大料箱数目
n_smallbox(A/B/C/D/E/F) 装配工位配备的小料箱数目
n_afterbox(A/B/C/D/E/F) 装配工位配备的预装配件料箱数目


综合上述整体模块及初始化和重置模块的设计,结合该车间生产作业的全流程分析,模型整体框架已初步搭建完成,可绘制出具体的仿真逻辑流程图如下:


图 7 车间仿真模型逻辑流程图

3.3原材料区模块设计

现实中的原材料库的所有原材料零件均以箱为单位装载,有大料箱和小料箱两种。AGV取货时将整个箱子一并取走,送至目的地再将所需的具体零件取出进行加工。对于需要进行预装配才能参与正式生产加工的零件,需将其按比例统一装入一个料箱中,由AGV一并送至预装配区。

为更好的区分大小料箱,本报告将原材料库拆成两个store,分别存储大料箱、小料箱,大小料箱中的零件种类和数目根据excel表格设定。另外再设置一个store,用于存储存放需要进行预装配的零件的料箱,每一个料箱中存储每种预装配件各280个。


图 8 原材料库模型布局

仿真开始时,执行设定的creatParts方法,利用create方法将每个store装满料箱,然后在每个料箱上根据设置好的DataTable装载零件。由于creatParts方法只在仿真开始时执行一次,在模型中加入了Generator,每隔1小时调用一次creatParts方法,以持续地生成原材料零件,保证原材料库能够及时供应。


图 9 createParts方法(部分)

3.3预装配区模块设计

同原材料库一样,该车间的预装配区通过TwoLaneTrack与Track相连,该预装配区共有3个完全相同的预装配工位,可通过修改全局变量n_preassemble的值设定启用预装配工位的数目。预装配区的模型布局图如下所示。


图 10预装配区模型布局图

预装配工位被设置成一个frame框架,3个预装配工位完全相同,其布局图如上图所示。预装配工位前的TwoLaneTrack的A、B两个方向均设有传感器控件,当小车行驶至相应位置时,触发传感器的控制方法,完成供货(A侧传感器)和取货(B侧传感器)操作。

装有预装配件的料箱从原材料库被运送至预装配区后,先由一个dismantleStation工位对送来的料箱进行拆箱,将拆下来的原材料零件送至AssemblyStation工位进行预装配。装配完成后,对预装配件进行装箱,装箱完成后,在“任务表-取货”中写入一条取货指令,让AGV前来将预装配件送入生产区对应的装配工位。


图 11预装配工位模型布局图

3.4生产区模块设计

该车间共有2条完全相同的生产线,每条生产吸纳上有6个不同的工位,负责装配和加工不同种类的产品。每个工位配备的大、小料箱数目根据所给的excel表格设定,并以全局变量的形式在模型中进行定义,如n_bigboxA、n_smallboxA分别表示A工位配备的大、小料箱数目,其余工位的料箱数依据该命名形式类推。


图 12生产区模型平面布局图

对大部分工位,仅需配备一定数目的大、小料箱即可,而根据excel表,D工位装配加工所需的零件由一部分来自于预装配区,即需要预装配区先对原材料进行一个预装配,才能送至D工位备用。因此,D工位额外设置了一个全局变量n_afterboxD,表示D工位需要配置的装有预装配件的料箱数目。

对于A、E、F工位,除大、小料箱中的原材料零件外,还需要部分工位常备件参与装配加工,工位常备件默认数量无限,现取现用。故在模型中,对E、F工位额外增加了一个source,source生成的MU直接送至AssemblyStation,代表工位常备件的使用与消耗。


图 13 A工位框架平面布局图

以A工位为例,本模型中各个工位的frame所包含的对象元素及其布局大致如上图所示。A工位中的两个DismantleStation模拟从料箱中取出所需零件的过程。如A工位装配需要大料箱中的600个脚轮和50个内饰皮革,DismantleStation则分别将600和50个part拆至后续的两个暂存区参与后续AssemblyStation的装配和加工,而大料箱中的其余零件连同箱子均被Drain接收,表示这些零件未在A工位使用。

A工位中Buffer和Buffer1分别代表大、小料箱的暂存区,当其上边的料箱向后续节点移动时,触发暂存区定义的OnExit方法,开始扫描暂存区剩余的料箱数,若料箱少于规定数目,则向“任务表-供货”中写入一条指令,呼叫AGV小车前来供货。

3.5AGV充电站模块设计

根据该车间的平面布局图,AGV充电站设有6个并联的充电桩,可同时容纳最多6辆AGV小车充电,可通过修改全局变量n_chargestation的值设定投入使用的chargestation数目。DataTable记录了充电桩的占用情况,以及给小车充电的开始、结束以及持续时间。


图 14充电站记录表

小车经由Track8进入Track39时,会触发Track39的OnEntrance控件,判断小车是否需要充电,若需要充电,则为小车寻找空闲的充电桩,小车行驶至对应的充电桩进行充电。小车进入和离开充电桩时,每一个充电桩均会触发一次OnEntrance和OnExit控件,分别记录小车进入和离开的时间,以计算小车的充电时间。

4.仿真结果与分析

启用1个预装配区、1条生产线、6个工位,分别设置AGV小车数目为4、6、8辆,根据前文设定的参数进行仿真,每次仿真时长设置为10小时,统计并分析仿真结果如下:

(1).当AGV数量为6辆时,E、F工位迟迟未开始生产,只有当其余工位结束一轮生产,重新要求供货时,E、F工位才得到原材料并开始运作。分析AGV的调度逻辑,由于原材料的供应和成品的取货共用的是同一套调度系统,即并未设置某辆小车只能提供供货或者取货的专线服务,且取货较之供货有更高的优先权,当取货列表中有取货指令时,小车必须暂停对未完成供货的工位供货,先执行取货指令,导致E、F工位缺少原材料而无法启动生产。增加AGV小车数量或适当减少A~D工位所要求配备的大、小料箱数可一定程度上解决该问题。

(2).当AGV数量为4、6、8时,AGV的工作率均达到99%,说明AGV几乎一直处于满负荷工作的状态。分析原因,每个工位都配备至少1个以上的大、小料箱,每个料箱里边有成百上千可供生产加工的零件,当工位启动生产时,成品几乎是不间断地被生产出来,其生产的速度远大于AGV小车将成品运输至上线区的速度,造成对工位供货暂停。当一轮生产暂停时,AGV又得立即对生产区工位进行供货,几乎没有空闲时间。

(3).部分工位的大、小料箱数目配备不合理。以A工位为例,A工位配备了2个大料箱和1个小料箱,而在BOM表中,A工位装配所需的原材料零件“内饰皮革喷胶”仅在小料箱中存有8个,当这8个材料使用完成后,A工位则需要再次发出小料箱的补货需求并等待补货,小料箱的其余原材料零件则没有被使用。换句话说,A工位小料箱中的零件只取用了其中的8个。解决这一问题需要重新调整料箱中装在的零件的种类和数目,或调整A工位配备的小料箱数目。

5.存在问题与不足

本模型在最终运行时取得了较为合理的结果,但仍存在逻辑上的一些问题和不足,具体阐述如下:

(1).未设置当待充电的AGV数目大于充电桩数目时,AGV排队等待充电的区域。针对此问题,可在进入每个充电桩前与主干道的分支处添加传感器,设置AGV的充电等待区,以避免对主干道造成堵塞。

(2).仿真后期取货指令超出供货指令时,可能出现所有AGV均忙着取成品上线而不向装配工位供货,导致某个工位由于缺少原材料而暂停生产。针对此问题可以考虑三个解决方式。一是可以考虑专线运输,一部分AGV只负责供货,另一部分只负责取货,分别对应供货和取货两个任务表;二是将成品在上线前进行装箱,以“料箱”作为最小单元,以减少AGV来回取货的次数;三是根据每个工位所需的零件,合理配备各个工位的所需料箱数,尽量使各个工位生产一个成品所需的时间大致相等,并在生产作业开始前的一段时间内设置只允许AGV进行供货而不进行取货,以保证生产线上各个工位的原材料供应充足。

目录
相关文章
|
JSON 移动开发 Java
氚云丨开发课— 09平台 API 的调用及自定义 API 的编写与调用| 学习笔记
快速学习氚云丨开发课— 09平台 API 的调用及自定义 API 的编写与调用。
|
算法 调度 Python
【调度算法】并行机调度问题遗传算法
【调度算法】并行机调度问题遗传算法
187 2
|
10月前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
255 2
|
容器
【ERROR】Plant Simulation 主零件的负载容量不足的解决
【ERROR】Plant Simulation 主零件的负载容量不足的解决
248 0
|
11月前
|
存储 物联网 数据安全/隐私保护
Docker安装Mosquitto
这篇文章详细介绍了如何在Docker中安装和配置Mosquitto消息代理服务,包括拉取镜像、创建容器以及配置持久化存储等步骤。
983 0
Docker安装Mosquitto
|
11月前
|
机器学习/深度学习 人工智能 算法
打造你的超级Agent智能体——在虚拟迷宫中智斗未知,解锁AI进化之谜的惊心动魄之旅!
【10月更文挑战第5天】本文介绍了一个基于强化学习的Agent智能体项目实战,通过控制Agent在迷宫环境中找到出口来完成特定任务。文章详细描述了环境定义、Agent行为及Q-learning算法的实现。使用Python和OpenAI Gym框架搭建迷宫环境,并通过训练得到的Q-table测试Agent表现。此项目展示了构建智能体的基本要素,适合初学者理解Agent概念及其实现方法。
390 9
|
人工智能 数据可视化 定位技术
DataV AI助手小技巧-如何制作PPT数据地图
“数据地图”是PPT汇报地区业务数据的最佳形式之一;以往制作数据地图需要用户有一定的编程和数据处理基础,制作门槛较高;随着DataV整合通义千问大模型能力之后,不懂编程和设计的用户也可以借助AI助手“零代码”制作数据地图,真正实现了人人可用的地图数据可视化。 进入大模型AI时代,人人可以变成职场跨界多面手!
11814 3
DataV AI助手小技巧-如何制作PPT数据地图
|
11月前
|
数据可视化 数据挖掘 定位技术
MATLAB数据可视化
【10月更文挑战第8天】本文详细介绍了MATLAB中的数据可视化功能,涵盖基本绘图、特定绘图类型(如三维绘图、极坐标图)、高级图形功能(如自定义图形属性、子图、交互式图形、动画与动态可视化)以及地理数据可视化工具箱等内容。同时,文章还提供了性能优化建议,帮助用户在处理大型数据集时提升绘图效率。
|
Prometheus 数据可视化 Cloud Native
构建交互式的 Grafana 仪表盘
【8月更文第29天】Grafana 是一个功能强大的数据可视化工具,它支持多种数据源并能够创建高度定制化的仪表盘。通过使用交互式面板,用户可以更直观地探索数据并进行数据分析。本文将介绍如何设计和实现用户友好的交互式面板,以提高数据分析效率,并提供具体的代码示例。
802 2
|
开发者 UED
图形用户界面(GUI)设计:使用Visual Basic创建直观的界面
【4月更文挑战第27天】本文探讨了使用Visual Basic设计直观GUI的方法,强调GUI设计对用户体验的重要性。通过Visual Basic的窗体设计器、属性窗口和工具箱,开发者可轻松构建界面。标准控件、布局工具和交互性设计是关键要素,遵循简洁性、一致性和可访问性的原则。进行可用性测试并根据反馈优化是提升GUI质量的有效途径。案例研究、最佳实践和技巧分享有助于开发者创造美观、易用的界面。随着技术发展,未来GUI设计将更加注重用户体验和交互性。
501 1