记一次大(la)型(ji)项(zuo)目(pin)比赛作品开发经历(ERP 和 MES 集成系统)

这是第一届西门子智能制造挑战赛 软件研发赛项 的比赛,不幸的是这也是最后一届。。。本来在比赛完后,应老师的要求草草的写了一篇。不过当时的总结也是很片面的,时隔一年才发现当时的自己是那么的“年轻”。不过今天再仔细看看当时写的解决方案和录制的作品视频,又感觉当时我们团队还是蛮厉害的!

这篇文章主要讲了讲经历,不是具体的解决方案

赛题要求

赛题分为两个方向,一个是工业安全(设计数字签名一类的)另一个是管理调度(设计实现一些ERP与MES系统整合应用的场景)。根据自身团队技术能力自由选择赛题方向。不过比较坑的是,这两种赛题的比赛方案最后是拿到一起评比划分名次的。

虽然当时我们对于这两个方向一点了解都没有,但是经过考虑最后还是选择了管理调度方向。分析后感觉工业安全是一个有深度的题目,鉴于我们的技术水平还是选择了一个有广度的赛题(管理调度)。

管理调度方向

ERP和MES整合系统开发

通过在ERP和MES之间共享数据,进而将计划和生产相关的业务流程进行梳理、衔接和优化,把ERP和MES的流程也整合到一起,设计和优化ERP和MES系统间的接口。MES自动接受来自ERP层的生产计划、订单信息、人力资源、物料清单(BOM)、库存及采购等信息,作为MES自动排产、物料和生产流程管理的基础数据。MES向上层ERP提交生产计划完成信息、生产能力、物料消耗、劳动力和生产线运行性能、实际定单执行等涉及生产运行的实时数据,向ERP采购、库存等模块提出产生采购订单或入库单的需求。

场景示例

“给了五个相关的场景”略

技术要求:

选择2-3个典型的ERP和MES系统整合场景(不限于以上例子),分析需求,设计软件架构并实现,测试并演示。
鼓励参赛队伍根据特定行业特定企业ERP和MES整合的真实需求,分析和抽象需求,设计并实现软件解决方案。
软件设计应考虑跨企业、跨行业的可复用性,支持工业数字化相关国际标准和行业标准。
可选用第三方的商用或免费的ERP和MES系统平台,需求分析和设计中需考虑适配不同厂商的ERP,MES。
软件架构需支持应用的灵活部署,如企业内部的分布式部署、基于公有云的部署,以及混合部署。可考虑使用面向服务的架构(SOA,SaaS等)。
考虑由于企业规模的增大、应用部署的复杂(见第5点)所带来的性能压力和可靠性风险,并以适当的设计和技术予以解决。
如有需要,可选用企业服务总线、工作流等平台,JEE、.NET等通用中间件,Oracle、MySQL等数据库,以及其它第三方软件平台。
支持异构的数据存储,以及不同第三方ERP和MES系统和不同部署所带来的数据存储形式的变化,为数据分析和挖掘提供方便接口。
用户界面简洁实用美观。
考虑最后交付的系统的可验证性,提供验证系统功能和性能的测试用例。

准备工作

在看完赛题后,还是一脸的懵B。各种名词迎面而来,刚开始时都不知道ERP、MES是个什么东西!!!更别提BOM了。虽然各种物料库存,订单这些名词知道什么意思,对于其流程也是一知半解。无奈只好跑到图书馆去借相关的书籍。在看了 两天后,对于这个东西就有了个大致的了解。

讨论方案

毕竟三个臭皮匠顶一个诸葛亮,我们刚开始的时候就两个人!应该可以顶半个诸葛亮吧。经过两个人的集思广益,我们决定采用最简单的一种集成方式——中间对象集成模式(听起来厉害吧!就是使用同一个数据库服务器… …)。因为我们当时在学C#,并且拖拉控件比较快。然后就决定使用C#来写PC端的ERP系统。
我们考虑的是,在ERP系统这里处理生产订单之前的所有事情,及其接到生产完成通知后的所有事情。

MES系统只负责接收生产单数据,查看原料是否充足,分解生产单自动生成一个一个的生成通知单。

【举个栗子:比如ERP下达生产50台电脑,那么根据BOM可以知道电脑是由主机、显示器等组成的。MES总不能直接显示这一条生产单的数据就完了啊,那么就需要根据库存数量计算出所需生产出多少台主机、显示器等。然后接着以此类推,主机是由哪些原料组成,需要多少数量!就是一个树结构的遍历,一直到要生产的东西在BOM中没有子件。最后统计所以的原料的数量,如果库存不够的话则无法进行生产,可以根据所需填写申购订单。这时ERP会接到消息,相关人员进行处理。当一切都做好之后,开始倒序生产,即从粒度最小的零件开始生产(我构建了一个表,生成生产通知单的时候按顺序存进去,生产的时候按ID来取单子的数据)。总不能主机还没生产的时候,直接生产电脑吧。(这块代码是我写的哟,在解决方案中还“不知羞耻”的注明了“智能算法“)】

任务分配

我负责产品定位与设计(哈哈哈!笑死我了)和“智能算法设计”+业务代码编程+解决方案的撰写,说的有点高大上了,我是一只菜菜鸟。
李同学负责实现ERP与MES通信和大部分MES业务代码+ERP业务代码编写。

后来加入了位周同学,他负责了一些ERP业务代码的编写和编写测试用例。

项目实施

大部分东西都定了下来,但是心里确实还没底。毕竟没有做过… …
因为在技术要求中说可以采用第三方商用或免费的ERP和MES系统平台。那我们想着找一个半成品的ERP系统接着开发会不会快的多。然后很巧,找到了一个“很烂”但是还有一些功能的源码。我们花了两天的时间看各自负责功能的代码,然后各自提出改进意见。接下来我们重构了这个软件。
(然后这个时候,由于技术能力不够只能限定一个MES系统负责一个生产车间的事务。现在看来,其实这里也是我们做的不好的地方。当时没有深刻的去理解MES发挥的作用和功能。为了实现两个应用场景,只能这么应付的做了。)
不同车间对应不同IP地址

图1-不同车间对应不同的IP地址

一次完成的业务流程图

图2-一次完整的业务流程图

项目展示

ERP采购

图3-ERP采购页面

MES生产通知单

图4-MES系统生成生产通知单

库存不足情况

图5-库存不足情况

执意生产的情况

图6-库存不足却执意生产的情况

比赛结果

开发的时间其实比较长,我们开始时候思路其实并没有准备工作中那么清楚。也是确定了大概之后一点点调整的。牺牲了接近两个半月的周六周末的时间,包括平常时间的晚上!也体会到了只写代码是多么幸福。

最后我们获得是初赛一等奖,说实话有点不甘心!因为最后大赛组委会临时改了初赛特等奖和一等奖全部进决赛的规定,只选取了前几名的一等奖。还有就是因为放在一起评比,工业安全方向占了大部分!其实这两个方向从具体方面来看没有可比性的,侧重点都不同。好了,总之各种原因吧,也导致了只办了一届就凉了。不过通过做这一个比赛,还是极大的提高了我的抗压能力和团队协作的能力。
另外吐槽一下我们的队名 IE … … 当初我是怎么同意使用这个名字的!!!这个名字是很可能会得罪某个痛恨IE浏览器的的老师的。
获奖队伍

图7-获奖名单

获奖证书

图8-获奖证书

项目演示

链接: https://pan.baidu.com/s/15vuzaGdgaucSTYMZuqUWWg 密码: 7vrm

阅读更多

扫码向博主提问

壹言

非学,无以致疑;非问,无以广识
去开通我的Chat快问
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vcx08/article/details/80963911
上一篇Python 实现微信防撤回功能
下一篇我的第一款(ban)产(cheng)品(pin)——铛铛打卡
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭