基于SimEvents的智能排产验证仿真模型框架研究

基于SimEvents的智能排产验证仿真模型框架研究
张波;张岩
【摘 要】为实现对智能排产算法的验证仿真,提出基于MATLAB SimEvents的验证仿真模型框架,并实现和讨论其中主要的模块,为后续类似的工作奠定基础.与其他验证仿真智能算法的方法相比,基于SimEvents的模型有望大大缩短智能算法的开发周期,降低仿真验证的成本.
【期刊名称】《机电工程技术》
【年(卷),期】fsp2019(048)002
【总页数】4页(P42-45)
【关键词】智能排产;验证仿真;SimEvents
【作 者】气囊张波;张岩
【作者单位】中国航空规划设计研究总院有限公司,北京 100120;中国航空规划设计研究总院有限公司,北京 100120
常艳现状
【正文语种】中 文
【中图分类】TP29
0 引言
智能排产是驱动智能生产线高效运转的“大脑”,在智能制造中占据着重要的地位[1-2]。然而,在智能排产算法设计的过程中,由于简化或遗漏,不可能总是能够将生产现场的所有相关因素都纳入考虑,从而有可能存在缺陷和不足。要在系统实际部署之前提前发现这些缺陷和不足,就必须搭建高效的仿真验证平台,对智能排产算法进行检验。实际上,当前很多软件商都宣称具备智能排产软件的开发能力,但是正是由于缺少仿真验证这个重要的环节,导致最终实施的排产软件不能很好地满足客户的需求,以至于不少用户企业对智能排产软件都缺乏信心。
因此,利用仿真技术来验证智能排产算法的有效性是一个值得关注的问题,然而目前工业界似乎并没有到恰当的仿真平台。以德国西门子公司的Plant Simulation等软件为代表的生产过程仿真软件虽然可以模拟生产线上多种离散事件,并十分便捷地实现对设备使用率
等关键指标的统计分析,为生产线设计和管理提供重要的决策支持。然而,这些生产过程仿真软件自身却不具备良好的排产功能,往往只能根据十分简单的规则来模拟生产。尽管这些软件本身具备内嵌的编程环境,为引入排产模块创造一些基础条件,但是受到自身函数库有限的制约,在此环境下编写排产模块来验证其有效性的难度很大。因此,有时需要在生产线仿真软件外部部署一个排产软件,二者通过数据交换来实现完整的排产仿真验证[3]。另一种验证智能排产软件的环境就是借助于PLC等硬件的半物理平台。但是,这种方法往往需要大量的先期投入,成本较高;此外,需要对硬件系统做大量部署和调试工作,不利于提高工作的效率。
SimEvents是MATLAB软件自带的一款离散事件建模仿真工具。它不仅具备专业生产过程仿真软件所具备的绝大多数功能,而且还可以实现与MATLAB的无缝连接[4-5]。这使得在MATLAB这一个统一的平台上就可以实现智能排产算法的设计开和仿真验证,有利于大大提高工作效率。然而,到目前为止,国内外有关SimEvents应用的研究还主要局限于一般的生产过程仿真[6-9]和分布式网络的运行状态[10-11],对于如何验证智能排产算法尚未涉及。
预付账款
笔者基于一个简单的排产案例,通过搭建相应的SimEvents仿真模型,探讨此类仿真验证平台的通用框架及其主要的实现方法。
1 仿真模型的功能组成及其实现方法
为增强通用性,在针对具体的排产算法或问题搭建仿真验证模型之前,有必要先对其仿真验证模型的系统组成进行分析。通过梳理常见的排产问题,不难得出其仿真验证模型至少应当具备以下4种基本功能。
1.1 零件/工艺信息的生成和存储
SimEvents利用实体(Entities)和事件(Events)来驱动仿真[12]。零件作为订单和工艺信息的载体,以实体的形式在模型中流转。由于各零件加工的顺序及其采用的设备需要经过优化排产来确定,因此需要借助一些模块来生成并存储代表这些零件的实体,直到它们完成所有指定的加工,退出模型。
利用实体生成器(Entity Generator)可以非常方便地生成需要排产的所有零件实体,而各零件相关的工艺信息可以通过与其对应实体的属性值来记录和传递。在对这些零件实体的
各项属性值初始化时,可以考虑构建专门的Simulink Function,从外部文件中读取各个零件的相关信息。为了在排产模块运行之前便生成所有零件实体,需要将实体生成器的生成间隔时间(Intergeneration time,dt)设定为0。为此,可以考虑采用零序列的方法。所有的零件实体生成完毕后,实体生成器调用全局函数Schedule()来启动排产程序,由后者确定从哪个或哪些零件开始加工。
将“实体服务器”(Entity Server)的处理时间设为0,并将其处理能力设置为无穷大,便可以将其用于存储待加工的零件实体,从而实现对相关信息的动态存储。或者,如果使用的是最新版的MATLAB(2018a),也可以直接采用新增的“实体存储”(Entity Store)模块。
所有可以随时进入下一道工序的零件都被缓存在实体服务器中,当排产程序确定其中的某个零件要立刻进入下一道工序时,设置在该实体服务器后面的实体门(Entity Gate,图1中未显示)将会被打开,并在只允许该零件实体通过后立即关闭。
图1 零件/工艺信息生成和存储功能的系统结构Fig 1.System Architecture for Part/Process Information Generation and Storage
图1 展示了零件/工艺信息的生成和存储功能的系统结构。需要说明的是,除了以上提及的模块,其中还加入了一个实体输入端口(Inport)和一个实体输入开关(Entity Input Switch)。它们的作用分别是回收那些尚未完成全部加工任务的零件实体,将它们重新放到待加工零件实体的缓存中。
1.2 优化排产与调度
优化排产的算法和程序可以放在Simulink Function中来实现。对于面向事件的优化排产仿真验证而言,排产模块每次输出的结果主要是下一个需要加工的零件ID(next-PartID)以及该零件需要使用的下一台设备的ID(nextMachineID)。如图2所示,将上述两个输出结果分别用来控制选择零件的实体门(选择模式)和选择设备的实体输出开关(Entity Output Switch),便可以模拟实际生产过程中的调度。
图2 优化排产与调度功能的系统结构Fig 2.System Architecture for Scheduling and Dispatching
1.3 异常情况模拟
SimEvents作为离散事件仿真的通用工具为模拟生产过程中各种异常情况提供了良好的基础,很多随机事件都可以通过其内置的概率分布函数来模拟。这为模拟真实生产环境中各种异常情况的影响提供了便利。限于篇幅,在此只考虑如何模拟设备故障。
一般而言,可以通过在零件正常的处理时间(service-Time)之上叠加额外的时间来模拟设备是否发生了故障。例如,可以假设设备发生故障的概率为P,而故障发生后设备停机的时间为随机数T。每次调用设备时,先利用生成随机数R(0<R<1)的方法判断是否发生了故障,如果R<P,零件的处理时间保持不变;如果发生了故障,serviceTime=serviceTime+T。一般情况下,如果不用在需要模拟故障的实体服务器上修改实体的属性以记录某些信息,例如,该零件实体的开始加工时间和完成加工时间等,只需在实体服务器的主选项卡按照上述思路编写简单的语句,便可方便地实现对随机故障的模拟。
dcg如果需要利用实体的属性来记录上述信息时,可以考虑采用串联的两个实体服务器来模拟一台可能会发生故障的设备,如图3所示。其中第一个服务器的处理时间设为实体属性serviceTime,利用其事件动作(Event action)来计算故障时间,并将此时间用实体属性downTime来记录并传递给下一个服务器;第二个服务器的处理时间就设为downTime。
1.4 零件/设备状态更新与信息交换
随着生产过程的推进,零件和设备等生产元素的状态需要随时根据实际情况更新,并传递给模型中的排产模块,以便于其根据实际情况来做出下一步的工作任务安排。需要更新的设备/状态信息主要包括:各零件的下道工序编号以及最早就绪时间,各设备的最早就绪时间等。对于一般的排产程序而言,这些信息可以存放在计算机的内存中随时调用;然而对于SimEvents而言,由于其中的各个模块是相互独立的子程序,缺少统一的公共存储空间,通常需要通过文件读写的形式来实现信息在不同模块之间的交换。值得说明的是,虽然可以借助Simulink中的“数据存储”(Data Store)模块来提供跨模块的公共存储,“存储”模块对读写顺序的严格要求常常会降低仿真的速度。
2 案例模拟与讨论
为检验模型框架设计的合理性,笔者构建了一个简单的案例。假设有3台完全相同的设备加工11个零件(其中部分零件需要多次加工),希望合理安排零件的加工顺序,使得总工期最短。各零件的ID、加工次数和每次加工的时间如表1所示。搭建的模型如图3所示。在设备不发生故障的情况下,稍加计算便可发现,由于存在零件自身加工顺序的约束,这批零
件的最短工期等于9号零件的加工周期,Cmin=2.1×3=6.3。模型仿真的结果也是如此,如图4所示。
表1 零件信息零件ID 加工次数1 2 3 4 5 6 7 8 9 1 0 11(单次)加工时间 /h 0.2 0.4 0.6 0.3 0.5 1.2 0.3 0.7 2.1 0.3 0.5 3 2 1 3 1 3 1 1 3 2 1
图3 模型总图Fig 3.System Chart私家侦探合法吗
图4 无故障情况下的智能排产模拟仿真结果Fig4.The Result of Intelligent Scheduling without Machine Failure
图5 有故障情况下的智能排产模拟仿真结果Fig 5.The Result of Intelligent Scheduling with Machine Failure
假设设备在连续两次加工之间发生故障的概率分别为0.1,0.2和0.3,且故障持续的时间都满足指数分布利用搭建的仿真验证模型可以发现,优化排产模块在避让设备故障时间段的同时,尽力实现了加工任务之间的“零等待”——即除了故障停机造成的等待以外,再也没有其他时间的浪费,如图5所示。这样的排产结果有利于最大程度地缩短工期,因此它具备
合理性。
3 结论
SimEvents作为通用的离散事件仿真环境可以用于生产线仿真,其与MATLAB的无缝连接为嵌入智能排产算法并验证其有效性提供了极大的便利。但SimEvents本身也存在一些不足,给该仿真验证模型的开发带来一些麻烦。例如:模块之间的数据不能直接共享、实体服务器自身不能模拟故障停机、缺少批量实验功能等。希望这些不足能够得到SimEvents开发团队的重视,在未来的版本中给予改进和完善。该文仅仅初步探讨了利用SimEvents搭建智能排产算法仿真验证模型的框架,面对复杂多样的现实需求,还有许多研究工作需要深入展开。随着SimEvents自身功能的不断增强和使用经验的不断积累,相信基于SimEvents的智能排产算法仿真验证工作可以大幅度提高智能排产算法的开发效率,降低成本。

本文发布于:2024-09-24 17:11:01,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/251209.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:建模与仿真
下一篇:交通建模仿真
标签:排产   实体   智能   验证   加工   设备   模型   需要
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议