51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

FactorySimulation的资源建模仿真功能

1、概述

资源(Resource)是复杂生产系统重要的组成部分,常见的资源类型包括工具、工装、工人等等,如果关键资源比较稀缺,并且资源分时被多台设备共享使用,则资源的分配与调度策略对生产效率必然有较大影响,在生产系统建模时就不能忽略资源因素,必须对资源使用全过程(需求定义-呼叫资源-分配资源-运输资源-使用资源-释放资源-再分配资源)进行建模。

基于FactorySimulation软件,对资源子系统进行建模分析,可以科学评估资源利用效率与瓶颈,结合仿真试验和优化算法,综合优化"生产任务-工人-资源"的分配与调度规则,进而提高生产效率。

需要说明的一点:工人也是一类资源,如果不太关注工人的使用细节,比如工人工作日历、行驶距离和速度等等,可以直接用资源建模功能来对工人进行建模,但如果关注工人使用细节,则建议使用FactorySimulation的工人建模仿真功能。详见公众号文章:工人系统的建模仿真与效率分析2、基于FactorySimulation的资源建模仿真

(1)资源定义

首先创建资源池对象(ResourcePool),并定义关键资源,资源池对象的物理意义是资源仓库。如下图,定义了三类资源R1、R2和R3,数量均为1。一个模型中可以定义多个资源池。

然后创建资源站点对象(ResourcePlace),资源站点的物理意义是线边资源库,可以为每台设备单独定义一个资源站点,也可以多台设备共用一个资源站点。

仿真开始时,所有资源都位于资源池(ResourcePool)中,接到服务呼叫后进入资源站点(ResourcePlace),任务结束后,返回资源池,等待下次任务分配。

可以为不同类型的资源定义不同的显示图标,如下图,"刀具"和"焊枪"两类资源有不同的显示形状。

(2)定义设备的资源需求

通常情况下,不同设备加工不同零件需用到不同的资源。在设备的"资源"Tab页面,首先选中"需要资源"checkbox,然后编辑资源需求,如下图。该设备加工零件时,需从资源池中呼叫资源,只有当资源进入资源站点RP1后,设备才具备开工的资源条件。资源需求:加工零件P6需要用到资源R1,数量1,不考虑运输时长,使用时长=工序时间;加工零件P15需要用到资源R3,数量1,不考虑运输时长,使用时长=工序时间,等等。FS允许为一个加工任务定义多个资源需求,但这些资源须来自同一资源池。 点击"新增"按钮,新增资源需求的界面如下。注意,如果资源需求与零件类型无关,零件类型可选为*。

(3)资源调度规则

系统定义了三种调度规则,默认为先来先服务(FIFS),即哪台设备最先呼叫某资源,则它优先获得该资源的使用;另一种为后来先服务(LIFS);第三种为高优先级优先:为每台设备定义不同的呼叫资源优先级,当发生多台设备都需要某资源的情况时,优先级高的设备先服务。

如果资源调度规则更为复杂灵活,可以通过脚本来实现,见第三节。

(4)资源的调度过程

FS的仿真引擎自动完成资源呼叫、调度、服务、释放等操作,无需用户介入。

(5)资源使用统计

仿真运行时,仿真引擎自动记录资源全部使用数据,仿真结束后,点击"资源池"对象右键菜单"仿真运行数据浏览",可查看资源使用历史数据,如下图。 点击"甘特图"页,浏览资源使用的甘特图,包括资源甘特图和设备甘特图两种类型,可通过右键菜单进行甘特图类型切换。 下面是资源利用率数据。

3、通过脚本更为灵活的使用资源

上一节直接为设备定义资源需求的方式操作简单,但有时不够灵活,比如某设备可加工不同零件,每类零件需要的资源类型、数量均不同,这时候通过自定义控制方法来呼叫资源就更为方便了。注意:一旦定义了"开工前呼叫资源" 控制方法,则设备所定义的资源需求就不再起作用了。

如下图,在设备的控制方法页面,新增"开工前呼叫资源"控制方法,该方法有三个输入参数和一个输出参数ResourceCallProxy。

如上图,在控制方法中,创建ResourceCallProxy对象,并返回该对象。

ResourceCallProxy有两个构造方法,分别用于单资源需求和多资源需求。

(1)构造方法1

/**

* 构造方法1,只需要一类资源

* @param unit 当前制造单元

* @param resourcePool 当前资源池

* @param resourcePlace 当前资源场所

* @param resourceReq 资源需求,String数组,5列:零件类型、资源类型、数量、运输时长、使用时长

* @param priority 优先级,0-999,数值越大优先级越高

*/

public ResourceCallProxy(WorkUnit unit, ResourcePoolInstance resourcePool, ResourcePlaceInstance resourcePlace,

String[] resourceReq, int priority); (2)构造方法2

/**

* 构造方法2,需要多类资源

* @param unit 当前制造单元

* @param resourcePool 当前资源池

* @param resourcePlace 当前资源场所

* @param resourceReqList 多类资源需求,List<String[]>,每个元素5列String数组:零件类型、资源类型、数量、运输时长、使用时长

* @param priority 优先级,0-999,数值越大优先级越高

*/

public ResourceCallProxy(WorkUnit unit, ResourcePoolInstance resourcePool, ResourcePlaceInstance resourcePlace,

List<String[]> resourceReqList, intpriority)

通过上述方法,可以非常灵活地定义资源需求,一旦控制方法创建后,仿真引擎将自动完成资源分配与调度工作。


赞(4)
未经允许不得转载:工具盒子 » FactorySimulation的资源建模仿真功能