干了八年工厂数字化集成,最头疼的活儿不是上新系统,是把设备管理系统、ERP、MES三套东西打通。每家厂子上这三套的时间都不一样,背后的厂商至少两三个,数据模型对不上、字段口径不统一、推送频率打架,分分钟把项目搞成烂尾。最近刚帮一家做家电的客户把这三套系统整合完,把过程中的关键决策点拆开讲讲。

接口形式选哪种取决于实时性需求
设备管理系统跟ERP之间,最常见的是备件主数据和采购单同步。这种场景对实时性要求不高,每天定时跑一次就够,用RESTful API做拉取或者数据库视图直连都行。我们这次项目里ERP是用友U9,给设备管理系统开了三个视图:物料主数据、库存余量、采购订单状态,每天凌晨2点跑一次同步,数据量5万条左右十分钟搞完。但跟MES的对接就完全不一样了,工单状态、生产节拍、设备故障停机这些得做到秒级同步,必须走消息队列。我们用Kafka搭的中间层,MES发布topic,设备管理系统订阅消费,延迟控制在200毫秒以内。这事儿千万别图省事用文件交换或者定时SQL,到现场你就知道有多坑。
字段口径必须事先掰扯清楚
三套系统里"设备"这个对象的定义都不一样,ERP里叫资产卡片,固定资产编号是一串FA开头的;MES里叫工位,编号按车间产线编;设备管理系统里有自己的设备台账编号。光这一个对象就得做映射表,更别提还有"故障"、"工单"、"工时"这些概念。我们项目里光是字段映射梳理就开了7次会,最后定下来一份《主数据对照表》,38个核心字段一个不落全列清楚。比如设备停机时间,MES按生产计划口径算,扣掉计划停机;设备管理系统按设备启停信号算,全口径都要。两边数据对不上不是bug,是定义问题。这种事儿不在项目早期掰扯清楚,上线之后吵架都没地方说理。
中间件这层不要省
直接点对点对接看着简单,三个系统两两连就是三条线,再多上一个WMS或者SCADA就是六条线,组合爆炸。靠谱的做法是搭一个数据中台或者集成总线,所有系统都对接到中间件,中间件负责协议转换、数据清洗、路由分发。我们这次用的是开源的Apache Camel加自研的映射规则引擎,部署在两台4核8G的虚拟机上做主备,一年下来稳定性99.9%以上。设备管理系统输出的设备故障事件,中间件接收后同时分发给MES(用来调整排产)、ERP(用来生成维修费用单)、BI(用来做报表),一份数据三处用,再来新系统直接挂上来就行。
双向同步要设清楚主数据归属
哪个系统是主数据源,这个问题不定下来后面全是麻烦。备件主数据通常以ERP为主,因为采购、财务都在ERP里跑;设备台账以设备管理系统为主,因为这是日常操作的主战场;生产工单以MES为主。定好之后,其他系统只能读不能改,改只能在主系统里改完同步过去。某个汽配项目早期没规定清楚,备件信息ERP和设备管理系统都能改,结果同一个轴承在两边的型号差了一个字母,仓库发了三个月错货才发现问题。设备管理系统跟其他系统协同,主数据归属和写入权限一定要在第一版接口文档里就钉死。
上线前的压测和回滚预案
接口跑起来之后,至少要做三轮压测:常规负载、双倍峰值、异常恢复。我们项目上线前模拟了MES半小时内推送5万条工单状态变更的极端场景,发现Kafka消费端处理不过来出现积压,临时把消费者从2个扩到6个才扛住。还有一个常被忽视的点:每个接口都要有回滚机制,万一某天MES发了脏数据把设备管理系统的状态搞乱了,得能快速回到前一个版本的快照。我们的做法是每天凌晨打一次状态快照存48小时,真出事30分钟内能恢复。
设备管理系统跟ERP、MES打通这事儿,技术只占四成,剩下六成是流程梳理和组织协调。前期把映射、归属、中间件、压测这几块做扎实,上线之后就是个无感的过程;前期偷懒,后面填坑能填一年。
根据不同行业需求,提供专属解决方案
立即申请,我们提供免费的系统演示!
作者:小编|本文由柯力云鲸原创(www.kelicloud.cn),转载请标明出处,若商业转载请主动联系我们。