MES系统 线程
由于目前制造执行系统(MES系统软件)平台的性能不能够达到实际应用的标准,本文通过分析 MES系统 软件平台的架构、关键技术以及影响平台性能的原因,通过多种方案的对比,最终采用并发处理机制,并确定了并发线程数,针对MES系统软件平台的关键技术进行了优化。通过测试证明,按照优化方案进行改进后的MES系统软件平台,性能已经达到装配生产线实际使用的要求,并能够投入到实际生产应用中。
引言
在CIMS体系的三层结构中,MES系统软件作为联系制造行业管理层与过程控制层之间的纽带,在提高企业生产效率和管理水平、改善产品质量、降低生产损耗和节能减排等方面起着至关重要的作用。在最近十几年,MES系统软件在国外的大中小企业中得到了很快的推广和应用,特别是一些大型的跨国企业,已经有了非常成熟的产品和应用经验。国内在MES系统软件的研究与应用方面起步较晚,但受到ERP等思想广泛推广的影响,很多企业已经注意到了它对生产的重大影响力,所以目前在国内发展迅速,特别在流程等行业已经有了突破性的发展。
MES系统软件平台是以装配生产线为背景而开发的MES系统软件通用软件,以现有的MES系统软件平台的经验及我们在装配制造系统开发方面的经验,实现装配车间的数字化管理。平台的核心是基于事件的处理机制,所有的生产过程、生产环节、操作都被描述成事件,通过对事件的处理来实现车间生产过程的管理。目前平台已经基本开发完成,但是性能尚不能满足企业的实际需要,需要对平台优化,达到进行实际应用的目的。因此,本文针对MES系统软件平台性能问题,引入并发处理机制对平台的核心功能进行优化,为MES系统软件的实际应用打下基础。
平台架构以及关键服务
MES系统软件平台由基础服务、模型创建、生产管理套件、质量分析套件、效率分析套件、报表统计套件等模块构成。MES系统软件体系结构中所有的功能都是以平台服务为基础运行的,实现生产事件到客户端的发布。平台服务是整个平台的核心,是平台设计与开发的重点。车间生产过程中的事件按照类型被分成四大类:计划类、生产类、报警类、废品类,具体包括上线事件、下线事件、缺料事件、废料事件、废品事件、异常事件。MES系统软件平台系统构成如图1所示。
信息网关服务(Gate Way)、服务事件监控服务(Event Man.ager)、数据采集服务(Data Reader)为平台的关键服务,其它服务都是构建在这三个服务之上进行扩展后得到的,这三个关键服务间的通信均采用消息总线进行信息交换。整个服务的运行机制是以事件触发机制为基础的,并通过实时监测特定数据源的标签值的变化来感知事件的发生,并利用信息网关服务将事件发布到事件的订阅方。其中服务事件监控服务为事件处理的关键服务。事件管理服务通过事件模型的配置信息,获得相关的事件触发条件及事件发生时调用的业务处理过程,并通过数据读取服务采用多线程技术动态监测相关标签的变化,当满足事件触发条件后,触发相应的业务处理过程。业务处理过程根据生产的状态及业务规则进行业务处理,同时为了通知MES系统软件的客户端,将信息发布到消息队列中,然后等待其它处理过程。
平台优化的实现
目前MES系统软件平台的处理机制
在MES系统软件平台的关键服务中,事件的处理机制为顺序处理,所有事件排队,遵循FIFO原则。在平台建立企业的产品模型、工厂模型及生产事件模型后,进行生产计划接收、生产指令下达,这个过程的完成触发了相应的生产事件,接下来就由服务事件监控服务进行处理。如果一个生产事件被触发,服务事件监控服务将会通过数据采集服务获得这一事件。经过判断,如果满足某些事件触发条件,则进入事件处理流程。
在事件处理流程中,事件相关数据首先将进入一个列表中,和其它事件一起按顺序被取出,事件的排列顺序完全遵守平台的配置顺序。在接下来的处理过程中,这些事件被逐一取出,按照不同的事件类型分类,进行不同的处理,而所有的处理过程全部由主线程来完成,处理完成后,平台继续监测生产事件的发生,重复整个处理过程。因为只有一个线程在处理数据,所以数据等待的时间很长,这就是影响平台性能的主要问题。如果引入多线程并发处理机制,一定能够大幅度提高平台性能。
性能优化方案
并发的概念很早就已经出现(尤其是多任务操作系统的出现),并发在提高系统资源的有效利用率和改进软件的性能方面具有较大的优势。相对于顺序结构,并发结构可以同时进行多项工作,加快处理速度,在更短的时间内或在相同的时间内解决更多的问题。而且并发结构节省投入,可以以较低的投入完成顺序计算的任务。在某些情况下,也只有采用并发结构才能达到目标要求。但是并发结构的执行必须要考虑同步、冲突等问题,因此,如何实现进程间相互作用控制,例如对共享资源存取的同步控制及通讯控制便成为一个关键问题。
目前并发处理系统的构架主要采用基于线程的并发控制技术,其中包括同步多线程技术和异步多线程技术。基于同步多线程的并发结构主要有主/从(Boss/WoOer)、对等(Peer)和流水线(Pipene)三种。多线程也带来了线程同步、上下文切换等开销,基于事件的并发控制,即异步多线程技术,可以省去这些开销,它利用操作的异步执行来提高系统并发性。然而,大多数操作系统都没有很好的异步L/0支持,而且异步操作会使得程序难于编写和维护。
对于MES系统软件平台的事件处理,因为处理时采用相同的方法,所以比较适合采用对等结构的并发处理方法,同时根据平台的实际处理情况加入一定的规则,如图3所示。例如,对现在的平台可以根据事件的类型分别建立对应的线程:计划事件、生产事件、废品事件、报警事件。各类事件可以定义优先级来避免冲突,如报警事件应该最先处理,所以定义为最高优先级,生产事件数量最大,可以定义为一般优先级,等等。在生产的过程中也有一些生产规则需要遵守,例如,车间实际生产时,首先要建立生产计划,然后才能进行生产操作。所以,首先出发的应该是计划事件,计划事件进程应该拥有最高的优先级。在生产过程中,出现废品和报警事件时需要及时处理,降低对生产的影响。所以,废品和报警事件的线程优先级要高于生产事件的线程。
优化方案应用
根据以上制订的优化策略,将原来平台的事件处理主线程分为几个线程,分别处理不同工位产生的事件。事件隶属的工位可以在事件初始化时获得。实际上相当于首先获取工位数,以结构为驱动,中心词的作用不太明显。然后进行分组。有需要处理的数据时,根据产生数据的工位确定调用哪一个线程进行处理。同时建立一个线程池,保证只有一个线程读写数据库核心数据,防止产生冲突和错误。在平台优化的过程中,只有事件处理的部分进行了修改,保证了平台其他部分的稳定性,在系统调试的过程中减少了很大的工作量,也防止出现修改错误,提高了工作效率。
尽管采用线程池并增加线程的个数可以提高系统的性能。但是线程的数量并不是说越多越好,因为如果线程数量过多,会造成CPU不停地中断,反而影响速度。已有研究给出了并发用户数为N时,线程池性能达到最大值时的线程数n满足下列公式:
其中,设定每一个用户具有同等的概率去发送同样多的请求数,C1为创建一个线程的开销,C:为单个线程的管理开销。考虑到一个线程能够使用的最大虚拟内存空间以及线程占用的栈空间大小和其他资源,很多时候是不会使线程数达到最大线程数n,而且系统支持的线程数是有限的。
通过上面的公式,考虑到平台性能测试的数据,以及实施的环境,得出线程数不需要超过10个。因为平台首先要保证运行稳定,性能只要能够达到用户实际生产要求就可以,所以选择线程数为5。这时平台的性能既有很大的提高,同时也能稳定运行。
平台应用
MES系统软件平台是以装配生产线为背景而开发的 MES系统软件 通用软件,按照装配线的生产节拍为3分钟,150个工位,每个工位同时产生lO个生产事件计算,优化前平台勉强能够满足企业的生产需要,但是在实际的生产中,这样的性能是无法满足企业要求的。现在将事件处理机制改为多线程并发处理机制后,性能有了明显提高。在相同的测试环境下,平台的响应时间有了明显的缩短,能够达到实际生产的需要。
原文来源于杭州匠兴科技
更多回帖