首页  ·  知识 ·  
SOA技术下的制造执行系统建设
姚逵 梅中义  E-Works |     编辑:德仔   图片来源:网络
引言近十年以来,一些先进的制造企业,为了将计划经营层和制造过程统一起来而采用了一种新的生产管理方式,即制造执行系统(Manufacturing Execudon
引言近十年以来,一些先进的制造企业,为了将计划经营层和制造过程统一起来而采用了一种新的生产管理方式,即制造执行系统(Manufacturing Execudon System,MES)。MES位于企业的执行层,很自然地成为了计划层MRPII ERP和车间层操作控制系统——现场自动化系统(Shop Floor Control System,SFC)之间的桥梁。MES要真正体现企业的实际生产状况,就必须有良好的信息共享。传统MES系统的建设是某一技术平台绑定的(如.NET、J2EE),部署在不同的系统之上(如Windows、IBM—AIX等)。这种系统的成长方式在短期来看有着低投入、回报快的优势,但从长远的角度来看这不利于系统的集成和整合,这将影响到信息的共享,同时会加大整个企业的IT系统维护费用,这与IBM与ING合作研究有关“IT投资与收益”得出的结论“高效的企业应当在建设IT系统时投入更大的费用,而要设法在IT维护方面投入较少的费用”相抵触。因此如何更有效地复用IT资产,提高ROI(投资回报率),实现更高效可靠低成本的信息共享成为了制造执行系统(MES)研究的核心问题之一.

1 基于SOA的MES架构

    1.1 传统的MES架构
 
    传统的开发Web应用最典型的方式就是基于C/S或B/S的三层架构,即表示层、领域层和数据源层2。如图1所示。无论客户端是基于浏览器还是基于胖客户端应用,都需要通过业务层组件的业务接口进行逻辑调用,业务组件使用行/表数据接口或者ORM(Object Relation Mapping,对象关系映射)进行数据持久化操作。为了使系统灵活、富有弹性以及具有良好的可复用性,在设计系统时需要尽量遵守OCP(Open—Closed Principle,开放一封闭原则)、LSP(Liskov Substitution Principle,里氏替换原则)、DIP(Dependence Inversion Principle,依赖倒转原则)以及ISP(Interface Segregation Principle,接口隔离原则)来降低层之间、框架之间和组件之间的耦合程度,以便使系统达到一种良构的设计。对于一些非业务但必不可少的操作,例如日志操作、安全验证与授权等,MES系统设计时可以采用面向切面的方法让其透明地贯穿于整个系统之中。传统基于面向对象技术的MES架构很好地满足了面对现有需求时系统灵活性、可复用性的要求,并在建设MES时得到了广泛的应用。然而,它却没有较多地考虑未来的需求,也没有对于在不同机器间共享应用逻辑和应用数据给予足够的关注。

 

 

 

图1 传统的MES构架

    1.2 基于SOA的MES

    面向服务的开发方法并非什么新的概念,但随着对于利用现有系统的需求越来越多,它渐渐变得风行起来。服务与对象或过程不同,因为服务是由它与其他服务交换的消息来定义的。服务与应用之间是松耦合的,这令服务可以更容易的在整个部门、企业间共享数据。如果所有应用都使用公共的编程接口(Programming Interface)及互操作协议(Interoperability Protocol,例如在J2EE中,EJB组件之间通过RMI协议进行组件的分布式调用)的话,那么将有助于IT降低复杂性,已有功能也更容易被再次利用。SOA提供了这样一种编程接口,使我们能更轻松地完成对现行IT基础设施(ITInfrastructure,指机构中与IT相关的各种硬件、软件、服务以及数据通信设施等的总和)的替换和更新。

    SOA是一种设计方式,并非某一种具体的技术,它指导着业务服务(Business Services)在其生命周期(从构思开始,直至停止使用)中包括创建和使用的方方面面。SOA也可被看作是在一些IT技术基础之上的一种构建IT系统的方案。

    “服务”是SOA中的关键概念,成功实现SOA的关键,是为可重用库中的每个服务确定正确的设计与功能,成功的SOA项目要确保可重用的软件服务与实际的业务流程完全一致。在SOA中,一般有服务提供者、服务代理以及服务请求者三种角色,服务提供者对外发布自己的服务并对正确的外界请求给予相应;服务代理提供一个服务目录,提供分类搜索服务的功能;服务请求者即查找到服务,使用服务的对象。

    基于SOA的MES系统建设,应当着眼于一个企业所有的制造生产部门,而非针对于某一个车间等,SOA能够更灵活地实现各个制造部门间的信息共享,能够提供灵活的多渠道服务,以应对业务变化。从图2所示我们可以看到,我们在原有基础上引入了一个“MES服务层”,表示层不再直接调用业务组件,而是通过服务目录查找服务,并调用服务。MES服务层的引入,提供了公共的编程接口及互操作协议,这样其他的外部系统也可以通过服务接口实现跨平台的服务调用。在底层,业务组件被设计为更细颗粒度的接口,在其基础上提供一种较细颗粒度的服务,通过引入流程建模(可以使用WS—BPEL定义),将细颗粒度的服务组合为对外的业务流程服务。这样的一种架构方式,降低了系统层之间的耦合,上层服务不再关心下层组件的实现方式与技术,而只关心暴露的接口,同时,在系统开发过程中,有助于项目相关人员职责的划分,业务员面对晦涩难懂的领域模型、事物脚本、对象图等技术领域的概念的机率大大降低,这样能够增加开发效率,降低错误的发生,降低开发成本。

 

图2 基于SOA的MES构架

2 MES的多渠道服务与信息集成

    为了更好地使MES发挥作用,MES必须能够为上层ERP系统以及下层控制系统提供服务,有时还需要支持多样化的客户终端,这就要求MES能够提供多渠道、多样化的服务。在过去,机构常常需要为各个服务渠道开发新的单片式应用(monolithicapplications,泛指一类细颗粒度的应用,这与SOA所要求的粗颗粒度相反)。渠道服务以及用户终端种类的增加,增加了业务的自动化程度,但是也给信息系统的建设带来了更大的压力。

    一般来说,业务服务(Business Services)不如服务渠道变化频繁,因此我们应当尽可能地重用业务。SOA能够为多渠道服务提供抽象(为了处理不同的技术)与松耦合(为了重用业务服务)之间的最佳平衡。如图3所示,无论客户终端是企业上层系统、无线设备、条码系统、PC机,我们在它们和业务服务间加入一个渠道访问层,用以协调客户端应用与业务服务。例如:当一个零件下线入库时,条码机扫到一个条码,渠道访问层识别客户终端并调用一个服务并将相关信息持久化到数据库中,同样如果有特殊情况的零件入库,管理员可以使用PC终端将信息输入,它们的业务服务相同,不同的只是手段。

 

 

图3 基于SOA的信息共享与多渠道服务

    图3同样也在一定程度上反映了一种SOA构架下的信息集成模式,与传统系统开发EAI不同,SOA构架一开始就已经为集成提供了较好的解决方案。从图3我们可以看出下层应用可以是J2EE系统、CORBA系统或者是基于Websphere MQ的消息系统,只要它们通过统一的WSDL进行服务描述,并在ESB中注册服务,那么各系统间的服务可以轻松地相互调用。系统间的调用可以是请求/响应、请求/回调、单向存储转发的消息传递、订阅/发布等交互模式,而传统的分部式调用一般只能是同步的,即调用者与被调用者必须同时在线可用,而且不同技术平台问(J2EE、.NET之间)的调用很困难。例如:在J2EE中EJB组件提供远程接口,可以调用另一个进程内的会话Bean对象,这要求双方同时在线可用,而且跨物理地址同时又跨进程问的对象调用在速度上慢了数个数量级。图4补充图3说明了SOA的集成框架。如果使用SOA构架,使用统一的XML语言描述交换数据,这种设计方式有利于企业各个系统的集成。例如:A车间有一批零件在B车间生产,当B车间下线入库一个零件时使用条码系统将信息实时存入数据库,A车间在B车间的MES系统中订阅该服务,这样A车间也能够随时监控生产情况,以便更好地制定生产计划。

 

图4 基于Web服务的信息集成

3 应用实例

    基于SOA架构的MES已被用来开发多个应用,并在企业中得到推广和应用。图5是为某航空集团开发的车间MES系统的用户界面。该系统从上层ERP系统取每月的生产计划,依据月计划编制日生产计划时,可以调用库存的检验服务,以校验库存是否满足,从而确定该日计划是否能够正确下发。当计划下发时,依据物料清单,相应零件生产所需物料会被锁定,从而保证物料不会被重复使用,物料出库时,锁定物料就将被置为不可用。对于月生产计划的物料库存检验,我们也可以定义相应的服务,这样在上层的ERP系统可以订阅该服务,每当库存不足时,MES发布信息,ERP系统接受该信息并通知相关部门准备物料,车间物料管理人员可以直接去领料,以保证每月生产时物料库存的充足。而每个车间的MES系统之间,也可以相互调用对外发布的服务,实现高效的信息共享。

 

图5 用户界面示意图

    通过在业务服务层之上插入一个渠道服务层,用以检测请求的来源,从而确定客户端设备并依据相应的设备提供相应的服务。当渠道服务层判断请求来源于一台PC时,我们返回的数据是可以被人理解的数据,当请求来源于一台PDA时,由于被PDA性能所限,返回的数据应当简洁,并满足PDA较小屏幕显示的要求。在上述的情况之下,业务逻辑与服务是相同的、可复用的,仅仅通过渠道层提供不同的视图即可。下面我们通过一个具体的实例来说明一个服务的设计与实现。以我们以前描述过的在制定生产日计划时,根据要生产的零件校验库存物料是否足够以确定该零件能否生产。我们首先要使用WSDL对该服务进行描述,图6所示即为该服务的WSDL定义。WSDL包括三个部分:即Web服务的具体内容,将Web服务内容与通信协议进行绑定以及通过服务来指定Web服务的URI。在types标记中定义了服务接口的方法checkMat,在element中定义了输入的参数为零件号和参数类型为String字符串类型,同时还定义了返回结果的类型。在Message元素中定义了请求消息(checkMat—Request)和返回消息(checkMatReSPonse)。服务接口的定义在portType中,通过operation元素来和type关联,通过input来定义请求消息,output来定义返回消息。最后我们用binding元素和基于HTTP传输的SOAP协议进行绑定,并通过Port元素、Binding和PortType关联起来,再通过Adress指向一个具体的U砒。这样我们就定义了一个完整的服务,这是一个请求/响应同步调用模式的服务。通过传入的零件号,在服务调用完成后,将返回一个布尔值,为真表明该零件所需物料库存充足,为假反之。

 

图6 Web服务的WSDL定义

    同样的方法可以定义一系列的服务,这样可以快速准确地追踪物料信息、生产信息,同对通过Web服务可以被其他的外部系统方便地调用并提供多渠道服务,从而实现良好的信息集成。还可以将一系列的低层次的服务组合成一个服务流从而形成一个更高层的服务以供调用,从而实现良好的服务管理和复用,以及更加高效良好的信息集成。

4 总结

    基于SOA架构建设MES系统有着传统方法无法_比拟的优点,现在已有了基于SOA的MES实现。随着2007年SCA与SDO规范被提交给OSOA组织,基于SOA的设计与构架方法渐渐走向成熟。相信不久的将来,基于SOA技术的MES系统将成为企业信息化建设不可或缺的一部分,并为企业提供巨大的经济价值。

本文作者:姚逵 梅中义 来源:E-Works |
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读