草庐IT

什么是MES(Manufacturing Execution System)

王振耀 2023-03-28 原文

“本文仅代表个人观点”

本文档将提供一个高层次的概述,以帮助阐明什么是MES,并触及通常被归为MES的周边领域。

整体情况

制造执行系统或MES软件是旨在帮助公司管理其制造过程的工具。如今,制造业太复杂了,不能没有一个系统来定义如何安排客户订单并在生产车间进行制造。如果你在制造业,而且你有MES,那么它可能只是以电子表格、电子邮件和发布的时间表的形式实现。现代MES软件有助于用一个连接的系统取代这些电子表格,在需要时为需要的人提供实时操作信息,并允许数据从工厂车间设备和设备直接流向ERP和库存管理系统。

制造公司必须对物料、货物、资金和人员等进行管理,诸如此类。这些公司要求从财务、采购、销售等部门建立系统。一直到工厂车间,在那里机器操作员以正确的质量标准生产正确的产品。

在工厂内部,这些系统可以通过计算机和软件、记事本、口头交流来处理,也可以通过一个有多年经验的人来处理。无论系统是什么,它都是正确的,否则制造商将因错过出货、处理不当的财务、糟糕的产品质量等而倒闭。

在上层,系统通常被称为企业资源计划(ERP)、制造资源计划(MRP)或高级计划系统(APS)。这些系统处理来自客户的订单,将订单分组为生产订单,确保手头有足够的原材料,安排设备运行生产订单,等等。

在底层,有适当的系统来控制机器。这些系统包括传感器、按钮、控制机器的专用计算机、人机界面(HMIs)等。操作者可以启动、停止和控制机器运行的其他方面。这些系统本身不了解正在生产的产品、正在消耗的原材料等,无需操作员手动输入,也不需要这些系统来运行机器。

通常,人机界面(HMIs)是一台机器或流程的本地部件,不会跨越整个设备。这就是监控和数据采集(SCADA)发挥作用的地方,通常(但并不总是)与人机界面(HMIs)是同一个系统。SCADA系统在本地或远程控制过程,提供高级监控,实时收集过程数据,维护历史数据,记录事件和告警等。

在上层和下层之间,每个制造公司都有一个通常被称为MES的层。该系统用于实时控制、跟踪和记录原材料到成品的转化过程。

MES系统提供的主要功能包括:

•详细的资源调度和状态

•负责生产任务的调度和排序

•可追溯性和谱系

•在制品和库存

•确保质量

•详细的维护管理

•工作指导书和其他文件控制

•性能分析

上面这些项目中的一些类似于ERP或MRP系统所提供的,但工厂需要的详细程度远远大于上层所需要的。例如,ERP系统不需要更换一台机器以运行特定产品所需的细节,也不需要在生产特定产品之前某个流程的步骤。

ERP系统不是实时的,也不是设计来以MES、SCADA和HMIs系统必须的速度收集数据量的。通常,当生产完成时,ERP系统会记录有关成品、消耗的原材料等的详细信息。MES系统可以以秒为单位跟踪生产情况,在某些情况下甚至不到一秒。

这意味着时间表、在制品、性能指标、质量等等都是实时更新的,而不是在业务结束时更新。

ISA-95 定义

ISA-95标准的创建是因为企业管理系统与制造系统的集成是困难和成本昂贵的。

它提供了一个通用的术语和模型来描述控制、跟踪和记录原材料到成品的转换。

ISA-95使用术语制造运营管理(MOM)来描述上层和下层之间的空间。

ISA-95标准的一部分具体规定了内容领域为:生产运营管理、维护运营管理、质量运营管理和库存运营管理。

ISA-95标准提供了一致的操作模型和术语,这是在ERPMESSCADA系统之间提供通信流的基础。

PCS系统旨在控制流程和机器,但不太适合处理大量生产数据。它们可以在 5ms 到 200ms 范围内做出控制决策,但历史存储和数据库功能有限。ERP系统往往更多地基于事务,非常适合处理财务,库存,应收账款等。他们处理客户订单,检查是否应该订购额外的原材料,向供应商付款,财务报告,这些报告可以在一天,一周,一个月,季度甚至一年中的任何时间更新。

在PCS系统和ERP之间是制造执行系统(MES),也称为制造运营管理(MOM)。在这个制造业时代,大多数生产数据仍然存储在不易访问或共享的专有系统中。运营往往依赖于各种文件(word、为excel、微信等),但真正需要推动持续改进的是以数据为中心的制造信息系统,该系统可以提供实时的可操作信息。

生产任务和段

ISA-95提供了段的概念,以定义在制造过程中完成的任何任务。所有任务都需要材料、设备和人员方面的资源。例如一个酒水装瓶的基本任务(段),该任务具有三个输入资源(酒、装瓶线 1 和装瓶操作员)和一个输出瓶装

如果需要批次可追溯性和/或生产控制方面的更多详细信息,则可以将更多资源添加到瓶装酒细分任务。瓶子瓶盖标签,所有这些都是以物料的形式,被添加到该细分任务。此外,还增加了一名检查员作为人员。可以添加到分段的资源数量没有限制。

生产可能涉及不止一个任务或段。这是通过在操作中包含多个段来实现的。请记住,分段是基本任务。现在,我们可以将多个段链接到一个操作中,以执行、跟踪和安排更复杂的任务。

操作段如何使用流程段以及操作定义如何引用操作段,这些可以参考ISA的模型图。总的来说,这些都在进行基本的定义。仅当用户定义其生产流程时,才会创建或修改它们。

在生产端,操作响应和响应段是在操作员开始生产时创建的。因此,每个生产运行都会有一组操作响应和响应段。

设备资源

任何自动化生产或加工都需要设备。为每个特定设备定义生产任务非常繁琐。更好的方法是使用ISA-95术语将设备组织成类别或类别。例如:考虑包装区域中的五条包装线,其中三条可以包装混合坚果,其余两条不能。创建一个混合坚果设备类,其中包含三个行,允许定义一个任务,指定需要混合坚果设备资源。

人力资源

任何生产或加工都可能涉及到人。人员可以被跟踪和谁可以开始一个生产控制操作是支持的。这个人可以系统规则自动选择,也可以通过其他方式选择。

MES Person对象是从定义了名字系统用户自动生成的。这可以防止在MES系统中创建默认的“admin”用户并显示在选择列表中。当系统首次启动时,MES Person对象将同步,此后将每小时同步一次。它们也可以按需同步。

为每个特定的人定义生产任务是非常乏味的。更好的方法是按照ISA-95的规定将这些人分类。例如:考虑在卸载泵站卸载醋。如果有10个有资格卸载醋的操作员,那么创建一个包含这10个合格操作员的醋卸载操作员类将只需要一个卸载醋任务定义。添加第11个操作员很简单,只需将该人添加到醋卸载操作员类。

MES 定义

MES一词被广泛的受众所使用,这使得我们很难就一个单一的定义达成一致。

根据ISA的描述,在有些状态下MES是MOM的子集。

然而,术语MES的一般用法实际上包括了ISA在MOM中定义的更多内容。

更多的人倾向于承认MES这个术语而不是MOM,因为MES是在ISA起草ISA-95标准之前很多年建立的,因此,ISA创造并定义了MOM这个术语。

鉴于这种情况,许多供应商在其产品名称中声明MES或使用它来描述他们的产品,因为这对他们来说可能是更有效的营销方式。

在一些研究MES的公司,他们的MES定义中包括不同类型的功能。有些产品将批处理系统等功能纳入MES,而ISA则将其排除在MOM之外。

这给我们留下了很多关于“什么是MES”的困惑。

最安全的方法是将MES定义为MOM,因为可以我们可以对其进行扩展,以包括额外的功能,以支持实时控制、跟踪和记录原材料到成品的转化。

MES系统不是车间系统,也不是ERP系统。制造执行系统或制造运营管理(MOM)软件是根据ISA-95标准建模的,旨在架起工厂车间和管理层之间执行级别的沟通桥梁。大多数公司在MES层的所有数据标准化方面都取得了一些成功。问问你自己,你的公司目前是如何处理MES数据的。是否有独立的SPC系统,在纸面上进行记录和跟踪,在本地操作界面上进行设置,使用Excel?来自不同来源的数据会造成混乱,系统不能一起工作会造成很多挫折。其结果是金钱、时间和质量的损失。那么这里缺少什么呢?答案是一个完全集成的统一MES解决方案,使我们可以在一个地方,在一个屏幕上获得所有MES数据。

MES跨多个功能领域运行,例如,跨产品生命周期的产品定义管理、资源调度、订单执行和调度、总体设备有效性(OEE)的生产分析和停机管理、产品质量、记录和跟踪。

MES创建“出厂”记录,捕获制造过程的数据、过程和结果,并维护记录系统。这在受监管的行业中尤其重要,如食品和饮料或制药,这些行业可能需要过程、事件和行动的文件和证明。

MES的概念可能被视为企业资源计划(ERP)系统与监控和数据采集(SCADA)或过程控制系统之间的中间步骤,尽管从历史上看,确切的边界是波动的。我们的MES解决方案针对制造系统中的工厂运营层,提供与ERP系统和工厂设备交互的灵活方法。根据ISA-95模型,工厂运营包括生产运营、库存运营、质量运营和维护(或工程)运营。

MES是工厂车间执行系统。在这一层中,操作人员直接交互,逐步执行生产或修理产品的工作流程。要执行的工作清单、执行工作的具体指示、要收集的数据点、工作的质量检查、表示工作完成的签字,都在这一层中执行。

MES提供了确保制造满足企业信息需求所需的工作流、可见性和事件通知。同时MES减少了非增值活动,提高了数据准确性,并为ERP系统提供了最大化企业处理、计划和调度活动所需的实时数据。

MES系统充当工厂车间、企业工程(PLM)和企业计划/调度(ERP)之间的信使。当操作员需要ERP或PLM的数据时:在MES内发起请求;MES系统然后连接到适当的系统检索和显示信息。

有关什么是MES(Manufacturing Execution System)的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  3. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  6. ruby - ruby 中的 TOPLEVEL_BINDING 是什么? - 2

    它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput

  7. ruby - Infinity 和 NaN 的类型是什么? - 2

    我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串

  8. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  9. ruby - 为什么 SecureRandom.uuid 创建一个唯一的字符串? - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?

  10. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

    我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

随机推荐