本人从2000年开始接触MES系统,先后使用过UGS Tecnomatrix,Apriso FlexNet,Rockwell FTPC等产品,对MES应用的情况有一定了解。
除了灵敏制造等老生常谈的优点之外,我对MES有两个深刻的印象:一是没有一个被广泛应用的明星产品(就象ERP领域的SAP/ORACLE一样);二是几乎每个工厂在实施MES时都有大量的定制,并且涉及到大量的代码编写,因此实施周期漫长,管理较为困难。
基于多年MES实施和开发经验,笔者尝试思考如何将MES的一些常用模块做通用性设计,以便让同一产品适用更多的行业,并且尽量减少客制化。
本文即系列文章的第一篇,讨论数据传输通道的设计。
众所周知,相较于ERP产品,MES的一个特殊之处是其不仅仅与外围IT系统通讯,它还需要与下游的控制设备通讯,从而在计划层与控制层之间起到承上启下的桥梁作用。
对于MES与ERP、PLM之间的数据交换,可以通过WEB SERVICE或者消息队列服务很方便地实现,并且可以将各种不同的数据格式方便地转换为XML格式,从而在应用的底层实现数据的一致性,这样就可以用同一套机制实现各种不同来源数据的逻辑处理。
比如对于输入数据,可以依据以下步骤处理:
1、将原始数据转换成固定格式的XML。
2、XML通过消息队列服务输入。
3、将XML数据映射到数据库中的原始数据表,附加对应业务功能的标记。
4、根据标记将原始数据映射到对应的业务数据表。
5、执行对应的业务处理存储过程进行数据处理。
6、将处理后的数据展现给客户端。
而对于MES,通常通过PLC与控制层的设备通讯。而PLC并不能直接与应用系统通讯,通常使用OPC进行协议的转换。
逻辑上我们可以将OPC对PLC的读写操作理解成某种特殊格式数据的输入、输出。因此一旦通过OPC转换之后,我们仍然可以通过某种机制将PLC数据串接到消息队列服务中,比如ILS公司 的deviceWISE产品,就可以很方便地将PLC数据转换成XML之后输送到JAVA消息队列中。
因此相对于前面所说的6个步骤,对于PLC数据的处理,只要前置增加以下2个步骤:
1、通过OPC读取PLC。
2、将OPC读取到的数据转换成XML格式。
经过以上处理之后,来自PLC的数据,就在形式上实现了和其它IT系统数据的一致性。
当然出于实时监控的需求,我们仍然需要通过OPC客户端来实时查看PLC数据。这两种方式都能够实现远程数据读取,方便维护。
下图展示了如何将控制层PLC数据与计划层IT数据统一输送到MES数据库中: