集团今年在推进各个子公司的数字化建设,在搞定一个 CRM 系统之后,下周又要迎来 MES 系统的调研开发。
我原本想借鉴 CRM 的实施方案,即,找一个成熟的开源系统,然后根据部门实际需求,在上面做二次开发即可。但是找了一下午,都没有找到一个真实的开源 MES。全都是知乎上的软文,以及 gitee 和 github 上的吸引流量的零代码 txt 项目。
不得已,记录一下这个无比痛苦的调研过程。否则这堆垃圾信息塞进脑子里,极度影响心情。
什么是 MES
MES 即,Manufacturing Execution System 的缩写,中文翻译为制造执行系统。
其是一种用于管理制造过程的信息系统。主要用于制造业,帮助企业监控和控制生产过程,实现生产计划的执行,并提供实时数据和分析,以支持决策和优化生产效率。
但是由于,不同的制造业企业,其产品差异巨大,自动化程度不一,所以生产过程也千差万别。并没有一个统一的解决方案,可以看到市面上的 MES 系统大都是针对一个行业领域,比如玩具制造,储能设备制造,汽车零件制造,矿山设备制造等。
技术栈选型
由于没找到开源的 MES 系统,不得不做一下技术选型。
为了偷懒,我翻看了 BOSS 直聘和智联招聘上的上百条 MES 相关的招聘信息。这也是我周六头晕脑胀的根源吧。。。 得出的结论是,基本都是 Java 和 C#。其中,C# 还要兼做 Windows 上位机,估计数据采集和设备控制,C# 是不二之选。但是,招聘中除了一家上海的公司提及了所用的德国 MES 系统名称,另一家说是金蝶、用友、管家婆合作开发,其他而且均没有提及,说明还是外购定制化居多。
虽然我想继续沿用现有的 golang 的架构,甚至想冒险性地引入 rust 的架构。 但是,担心一旦这个系统要交接,或者卖给三方企业,不太方便找到合适的人接手。 毕竟 MES 看起来是个需要经常变动、优化的系统。从招聘信息看,就能看出来。 以烟台本地为例,基本上了规模的制造类企业,都在招聘 MES 开发程序员,以及产品经理。 工作内容也是在现有的 MES 系统上做二次开发,以及对接 ERP,CRM,WMS,QMS 之类的上下游系统。
我一开始决定使用 java Spring Boot 作为技术栈。我主要是担心 C# ASP.NET 不能在 linux 系统上使用所有的功能,其宣传的支持 linux 看起来是阉割了很多的功能,不知道是否能经得起实战考验。而且我也没有 Windows Server 及 SQL Server 的实际运维经验,连授权费用都不了解,之前的 linux 运维经验完全排不上用场,都得从头学。所以,稳妥起见还是选择 java 比较合适。(还是有用 ASP.NET Core in .NET 8 的冲动)
在微信公众号上遇到一个搞 mes 的前辈,推荐使用 mes。一方面是自动化设备好多只提供 .net 的库支持,再就是 .net core (.net 8)运行在 linux 上也非常稳定了。另外还给我推荐了 zradmin 这个框架,看起来非常的方便,能自动创建表单等。我还看了一下对 mysql 8 的支持,是 mysql 官方在维护的库,也比较放心。看来是时候尝试一波 .net core 了。
不能说干不了
如果要从头研发一个完整的 MES 系统,看起来工作量巨大。我在 V2EX 上看到几个失败的案例,据说十几个人干个两年最终失败,比比皆是。
而我们公司的数字化部门只有 3 个人,一个领导,两个干活的。干活的里面还有一个只能写前端。我感觉压力巨大,工作量滔天。
但是直接说干不了,那肯定会导致龙颜大怒。而且这也不是一个负责任的态度。还是有一些策略来规避失败的风险的。
- 从最急切的痛点入手。比如,现有的生产计划管理,都是通过一个本地离线的 Excel 表格统计的,那么可以优先把这个功能,做成在线版。(其实用腾讯文档,金山文档在线表格就能解决,但是开不了口。。。)
- 在满足最基本的项目进度管理之后,再咨询是否有继续开发功能的需求。毕竟,目前的生产过程也比较原始,跟自动化完全关联,还是以管理人员为主。其实很类似于软件项目的研发管理,也是记录需求,排期,报告 bug,修 bug,记录投诉,解决的这一系列流程。
制造业是程序员的归宿
随着人力成本的攀升,以及企业对生产效率的追求,我感觉未来制造业还是朝着无人化,或者少人化发展。那么这种信息化系统,及控制系统,必然是无人化方案的核心。相关的开发需求,和定制需求也会越来越多,对领域知识也有一定的门槛要求,确实是一个不错的可以深入的方向。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式