胡明明,杨根科,潘常春
随着钢铁工业的发展,在产品的二次生产中获得更多的效益,已经成为各大钢厂重要的效益增长点。为此,国内各大钢厂纷纷在全国范围内建立钢材加工配送中心,对各加工中心的管理要求也逐步提高,原来利用管理和生产经验对加工中心进行资源配置以及生产安排已不符合精细化管理要求[1]。现有的解决办法一般是采用一些商业仿真软件,如Arena、Witness及Extend等[2,3]。这些软件虽然功能强大,但设计复杂,价格昂贵,在应用到特定场合时的效果不理想[4],尤其是对生产线仿真的二次开发困难。一些仿真软件如AutoMod和Extend等都是基于业务流(Transaction-Flow World View)的建模思想[5],这种思想侧重于动态实体在系统中的流动处理过程,与用户感知最为接近,但底层类库结构设计复杂,在需要定制或者拓展功能时困难;另一种基于(Resource View)的建模思想[6],侧重于对资源实体的属性和行为描述以及资源实体与动态实体的关系定义,虽然在仿真软件如QNAP2和DESP-C++中很好的体现,但是对于串并混合型的加工作业线的流程控制比较复杂,应用灵活性不够。
本文以国内某钢铁企业典型串并混合加工中心为背景进行了研究,将加工车间的仿真系统抽象为基于事件业务流和资源实体的整体。结合面向对象和模块化思想,通过对对象属性、对象行为和对象之间的交互关系的直观描述,对一类系统进行功能和行为上的仿真建模,开发了加工中心作业线仿真平台软件,通过该平台,用户可以对此类加工作业线进行快速建模,快速的仿真速率将会给用户带来极大的方便。
生产线系统和系统的运行受随机因素的影响,表现出离散、随机、并发和递归的特点,是一种典型的离散事件系统[7]。组织、调度和处理离散事件以及仿真时钟的推进和更新是离散事件仿真的核心。本文采用调度灵活的事件调度法,但采用了双事件队列表,在当前仿真时刻,将传统意义上的事件表中满足发生条件的事件一次性的读取到另一个新建的事件表中进行统一处理,避免了循环扫描事件表,在一定程度上提高仿真效率。
生产线仿真平台在系统建模设计思想上分析了业务流和资源实体的思路,对基于业务流和基于资源实体这两种设计思想进行抽象整合,充分利用了业务流思想在仿真运行过程中主体对象驱动推进的简单直观性,以及利用资源实体思想以对象类别划分的面向对象的机制。将整个生产线仿真系统的对象类型分为仿真模型结构对象和仿真模型支持对象。其中,仿真模型结构对象又可分为动态实体、资源实体(主动资源实体如加工机器,被动资源实体如人)和逻辑连接实体;仿真支持对象没有对应的实际系统对象,例如生产过程监视器、加工规则解析器、随机数生成器以及仿真数据的采集器等。由于被动资源实体不能直接对动态实体进行处理,主动资源实体在被动资源实体的协助下对动态实体进行处理,故仿真平台将主动资源实体作为研究的主体对象,彼此通过逻辑连接接口形成串并混合的实体结构模型。针对以往仿真模型的控制逻辑常隐含、分散于整个程序代码里的情形,仿真中涉及的不同控制功能不能明确区别开,仿真平台将控制结构分为仿真逻辑控制和主动资源实体局部控制两个部分。
仿真逻辑控制负责仿真的主控制流程,也称为业务流逻辑控制器;主动资源实体局部控制包括主动资源实体对事件产生和响应以及信息或动态实体传递路由决策控制。仿真平台的仿真模型结构,如图1所示:
图1 系统仿真模型结构图
动态实体产生进入系统,在业务流逻辑管理器的控制下,在系统中流动,竞争各种资源的使用,主动资源实体在被动资源实体的协作下处理事件,处理完毕后,新产生的动态实体离开系统。
基于业务流和资源实体整合框架的建模思想将模型的建模结构与逻辑控制完全分离开。
软件架构,如图2所示:
图2 软件架构示意图
对于图2中仿真模型的模型元素的设计,本仿真平台充分利用了面向对象的方法,结合仿真模型重用的思想[8]以及在对实体对象进行共性特征抽象的基础上[9],采用了完全模块化的设计,并将对象分为三维结构,即物性面、信息面和控制面。对实际对象的抽象主要决定于仿真系统对具体对象的关重点,由此可以将对象分为物理对象、信息对象和决策控制对象3类,考虑到平台类库设计的通用性和可扩展性,为模型结构对象保留了以上三维结构的类属性。再根据具体的模型结构对象侧重点的不同进行模块构造,例如主动资源实体是系统研究的主体对象,对应于实际的物理对象,包含物性属性,同时又具有容纳被加工对象的能力和对条件路径判断的决策过程,应包含信息面和控制面,故为三维结构;又如逻辑连接实体如网络图中的方向弧,没有对应的实际物理对象,侧重于信息面。
通过将对象3个方面的分离,大大提高了仿真模型的重用性,一个对象某一方面属性的变化不会影响到其他方面的变化。这种思想,不仅使模型的重用性大大提高,而且使仿真模型更加简单,易于后期维护。同时利用窗口界面技术,基于可视化模型元素建立网络图模型界面的思想[10],将仿真模型以图形的形式进行拖曳建模,不仅增强了仿真模型的直观性,而且用户可以很容易发现逻辑上的错误。
生产线仿真平台库的总体UML类图,如图3所示:
充分利用高级语言C#提供的基础控件库,利用图形界面技术,将生产线模型模块控件化,将仿真模型以可视化方式显示出来。图形界面主要分为主窗口和子窗口两种。分别由类MainCanvas和类ChildCanvas实现,这两个类分别继承于接口 View,该接口包含有各个模型元素的图形接口IChartObject,而该接口被表示资源实体图形的类ChartResource和表示逻辑连接关系图形的类ChartLinkLine所继承。这两个图形类可以通过引入图形用户接口 GUI定义模型元素的图形显示,包括图形形状、图片表示和连接位置等。
将仿真输入数据和仿真结果统计输出数据的分析处理模块独立出来,只提供与生产线仿真模型的接口。数据采集采用多种数据源获取方式以提高仿真软件的适用性。仿真实验输入数据与仿真运行结果均存储于数据库中。其中类DataLoader获取数据,定义了处理类InDataProcess对获取的数据进行相应的处理,最后生成仿真模型中动态实体对象类SteelItem。而输出则由专门的统计分析类Statistic进行处理。
类ChartResEntity作为模型元素三维结构中的物性维类;类 InfoResEntity作为模型元素三维结构中的信息维类,封装了模型元素的基本属性,如:名称、ID、编号、逻辑关系管理等;类ContrResEntity作为模型元素中三维结构中的控制维类,封装了模型元素事件条件判断机制函数EventJudgeCondition()、事件处理与调度机制函数EventsHandler()、动态实体传递路径决策机制函数DecisionRoute()、占有资源释放函数 ReleaseResource()等。平台类库提供对象接口Entity继承于以上三维接口。
资源实体类 BaseResEntity和逻辑连接关系类 LinkLine均继承于接口Entity。BaseResEntity作为资源实体对象的模块基类,主动资源实体类ActiveResEntity、被动资源实体类InActiveResEntity都是继承于BaseResEntity,并且由于被动资源实体包括小车等设备资源和人力资源,故EquimentResource类和HumanResource类继承于InActiveResEntity。
这里值得注意的是,在类关系设计时,将缓存区类CacheModel也继承于BaseResEntity类,主要是考虑到设计的统一性并且实际情况中,缓存区只是作为一个缓存中间加工品的容量的实体,与被动资源实体有某些相似之处。
根据以上设计思想,平台库中模型元素的主要类关系图,如图4所示:
图4 平台库中模型元素类关系图
Simulation类作为平台库仿真引擎的核心类,对整个仿真运行过程进行控制和管理。主要包括系统的初始化(模型中资源实体到对象管理器 ModelMannager的注册以及所有模型元素的消息响应机制的初始化EventLogger)、时钟的管理(Timer)、时间表的调度和管理(EventSchedule)、仿真终止条件以及运行次数设置以及对运行结果的统计(Statistic)控制等。该类提供了平台库的主要用户接口,函数SetPriority()负责设置主动资源实体竞争被动资源实体时的优先级。
该类在平台软件的入口主函数处进行了初始化,用户只要在软件操作界面上启动相应的命令,系统会自动调用Simulation类中封装好的仿真主要控制逻辑成员函数Run(),即可触发仿真过程的启动程序。
软件需要作为钢材加工中心混合作业线流程控制的仿真平台。平台库预定义了一些加工中心最常使用的功能对象模块,这使得仿真建模方便且灵活,通用性好,而且还内嵌了仿真策略算法、仿真核心计算引擎等框架以及通用特性和底层代码,具备代码重用性和扩展性强等特点。
应用本软件操作的主要步骤如下:
1)、对实际系统进行逻辑分析建模,根据仿真研究目的抽象出系统的逻辑结构。在采用网络图式的方式描述资源实体间的逻辑关系;
2)、搭建仿真模型。根据上述逻辑关系图,从软件提供的预定义模块库中,采用拖曳的方式连接各模块,采用连线的方式连接各个模块;
3)、设定各个资源实体的属性,包括加工时间、对象名称、加工规则等参数;
4)、从工厂MES系统中导出计划单并导入到指定的数据库中,设定仿真软件与数据库连接设置;
5)、运行仿真模型,得出最终仿真结果并分析统计数据。
利用该仿真软件对宝钢国际某钢材加工中心作业线进行仿真建模并进行仿真实验。该加工中心目前共有1条开卷落料线,5条剪切线,以及6条激光拼焊线,根据以上操作步骤,建立的仿真模型,如图5所示:
图5 作业线仿真模型
加工中心提出的仿真指标主要如下:
1)以一个班次的标准时间450min(7h30m)为基准,仿真时长与现场统计时长误差限制在5%以内,即±22m30s;
2)提供资源的利用率情况;
3)提供各条作业线中各个作业点的等待时间。
从数据库中导入某一班次的计划,通过本软件进行仿真实验,得出各作业线仿真时长以及实际现场统计时长的对比结果,如表1所示:
表1 作业线仿真结果表
加工中心资源的利用率情况,如图6所示:
图6 繁忙率统计
各作业线作业点的等待时间,如图7所示:
图7 各作业线中作业点等待时长统计
(仿真模型中,椭圆包围范围内为一条独立的作业线。共有12条并行作业线。)
从表1中可看出,仿真时长与实际现场数据的比较结果均在误差之内。
繁忙率统计主要是包括人力资源和设备资源的工作时间统计。
仿真结果给出的资源利用率情况以及作业点的等待时长数据,对于加工中心进行资源的合理配置和分析生产过程中生产瓶颈以及确定关键资源均有着重要的意义。由于计算机仿真运行速度快,计划人员可根据仿真结果调整工单,并再次仿真,从而还可以获得满意的计划。
该仿真平台软件已经应用于该加工中心,并且取得了很好的应用效果。
本文设计了一类面向钢材加工中心作业线的离散事件仿真平台软件。软件使用方便,底层代码重用性和扩展性强,可用于二次开发,便于维护,仿真效率高。该平台软件已经应用于宝钢某加工中心,取得较好的仿真效果。
[1]王军强,孙树栋,等.组件化和集成化车间生产管理系统的研究与实现[J].计算机集成制造系统,2006,12(2):231-239.
[2]Uliana Corazza,Roberto Filippini,etc.Discrete event simulation of a proton therapy facility: A case study[J].Compute Methods and Programs in Biomedicine,2011,102(3):305-316.
[3]Swain.J.J.Discrete Event simulation Software: New Frontiers in Simulation[J].OR/MS Today,2007,34(5):32-43.
[4]Hlupic.V.Discrete-Event Simulation Software:What the User Want[J].Simulation,1999,73(6):362-370.
[5]Thomas J.Schriber,Daniel T.Brunner.“Inside Discrete-Event Simulation Software: How It Works and Why It Matters”,Proceedings of the 2007 Winter Simulation Conference,2007(C):113-123.
[6]Jermome Darmont.DESP-C++:a discrete-event simulation package for C++[J].Software-Practice and Experience,2000,30(1):37-60.
[7]彭旺明,张晓川.Em-plant在生产线作业仿真中的应用研究[J].武汉理工大学学报(交通科学与工程版),2004,28(4):597-599.
[8]Stewart Robinson,Richard E.Nance,Ray J.Paul,etc.Simulation model reuse: definitions,benefits and obstacles[J].Simulation Modelling Practice and Theory,2004,12(7):479-494.
[9]Wolfgang Heider,Roman Froschauer,etc.Simulating evolution in model-based product line engineering[J].Information and Software Technology,2010,52(7):758-769.
[10]Pierre Caserta,Olivier Zendra.Visualization of the static Aspect of So0ftware:A survey[J].IEEE Transaction on Visualization and Computer Graphics,2011,17(7):913-933.