本文分享自华为云社区《数字工厂深入浅出系列(七): MRP物料需求计划的逻辑原理与配置方法》,作者:云起MAE。

MRP是生产制造企业“管好”物料的核心工具方法,基本思想是根据客户对最终产品的需求数量和需求时间,按产品的结构精确地算出所有零件和部件的数量,并按各种零件和部件的生产周期或采购周期(Lead time,提前期),反推出它们的生产计划和采购计划。本期介绍MRP的基本逻辑原理和相关概念,并详细介绍如何在华为云数字工厂平台通过可视化建模配置实现自动计算生成MRP物料需求计划。

(一)什么是MRP物料需求计划

MRP是物料需求计划“Material Requirements Planning”的英文缩写,是20世纪60年代发展起来的一种计算物料需求量和需求时间的物料计划管理方法。

在产品生产过程中,不论产品的类型、生产规模、工艺情况如何,它必须回答4个问题,即:

1.我们要生产什么?根据最终成品的主生产计划(MPS);

2.生产这些产品需要什么物料?根据产品的物料清单BOM;

3.我们已经有了什么?根据产品/物料的现有库存量(包含安全库存);

4.我们还缺什么?何时购买多少?何时生产多少?由MRP计算。

MRP的基本思想是根据客户对最终产品的需求数量和需求时间,按产品的结构精确地算出所有零件和部件的数量,并按各种零件和部件的生产周期或采购周期(Lead time,提前期),反推出它们的生产计划和采购计划。

1)关键概念

  • 独立需求与相关需求

我们收到客户的下发P产成品的订单,生产P产品需要用到若干个部件或零件物料:A/B/C/D/E,其中生产A/C部件物料涉及零件物料B/D/E的采购。假设P产品收到1000个需求数量的订单,那么我们将P产成品的需求称为独立需求(independent demand),根据P产品的BOM结构产生的A/B/C/D/E物料需求都是相关需求(dependent demand)。

独立需求的需求来源是对客户需求的预测和客户订单,需求物料类型是产成品,独立需求计划的输出结果是主生产计划MPS(即成品计划)。相关需求依赖于独立需求,它的需求来源是MPS,需求物料类型是半成品与原材料,主生产计划MPS确定了,相关需求基于BOM与库存记录计算也就自动生成了。

  • 提前期(Lead time)

MRP计算物料需求计划时,是采用倒排的方式进行计划的,即从需求日期(交货日期或完工日期)开始向前倒推出工作的开始日期,这个时间跨度称为提前期。比如原材料的采购提前期即是采购订单下达到物料采购入库的全部时间,半成品/成品的生产提前期则是从开始投料生产到生产完工入库的全部时间。

从图上可看出,以产品的计划完工日期或者交付日期为起点,按产品的BOM结构一层层递推进行倒排计划,可以相应推算出每个零部件最晚开始加工生产的时间或者采购订单发出的时间。

  • 订货方法

订货方法是指物料需求产生计划订单的订货批量规则,用来确定物料生产量或者采购量的大小。

常用的订货方法有以下四种:

序号

订货方式

说明

相关配置参数

MRP计算逻辑说明

MRP计算计划订单量公式

MRP计算提前期公式

举例

1

批对批(LFL, Lot For Lot,即直接批量法)

是一种按需定量的订货方法,也是保持库存量最小的订货方法。

对大多数没有特殊要求的物料,可以采用这种方法进行设置。

1)最小订货量

2)批量增量

3)固定提前期

4)变动提前期

5)变动提前期批量

每一次的净需求都产生计划订单。

if 净需求<=最小订货量 then

计划订单量=最小订货量

else

计划订单量=最小定货量+向上取整[(净需求-最小订货量)/批量增量]*批量增量。

end if

MRP提前期=固定提前期+向上取整[(建议计划量/变动提前期批量)*变动提前期],以注意最小订货量的影响。

建议计划量将会受最小订货量和批量增量的影响:如X代表建议计划量,M代表最小订货量,N代表批量增量。当X<M时,取M值,当X》M时,建议计划量=[(X-M)/N]*N+M。

2

期间订货量(POQ,Period Order Quantity)

物料隔一段时间订一次货。

期间订货的物料(如供应商有良好的信誉,且需求相对稳定,采用周期订货对双方都便利的话,可以采用该类设置),同时要设定订货间隔期。

1)订货间隔期

订货批量的大小等于期间内总净需求量加上安全库存量减去期间开始前的可用库存量:依据订货间隔期设定的天数,先计算该期间各天的净需求,然后将期间内各天的净需求进行汇总后进行批量调整,并且在各期间的第一天生成计划订单。

首先汇总订货间隔期内的所有净需求。然后按以下公式计算。

if 净需求<=最小订货量 then

计划订单量=最小订货量

else

计划订单量=最小订货量+向上取整[(净需求-最小订货量)/批量增量]*批量增量

end if

1)计划开始日期:放在每个间隔期的第1天。

2)MRP提前期=固定提前期+向上取整(建议计划量/变动提前期批量]*变动提前期

例如,物料是一个礼拜定一次货。

订货间隔期设置为5,表示5个工作日。

3

固定批量(FOQ,Fixed Order Quantity)

由于生产或者运输条件的限制,不管需求量多少都必须按照固定的数量进行订货。

1)固定经济批量

2)最小订货量

3)批量增量

4)固定提前期

5)变动提前期

6)变动提前期批量

与批对批(LFL)相同,但是,也是每一次净需求都产生计划订单,但是计划订单量的计算公式不同。

计划订单量=向上取整[净需求/(固定/经济批量)]*固定/经济批量。

   

4

再订货点(ROP,ReOrder Point)

对于不太重要的物料,因其金额低,可以设置成这种订货方式。其前提是需求固定。同时要设置再订货点。

1)再订货点

2)安全库存

3)日消耗量

4)固定提前期

1)计算当天,如果物料的库存<=再订货点,系统将在计算当天产生净需求,计划订单量为固定/经济批量指定的数量。

2)计算当天,如果即时库存>再订货点,则用(即时库存 —再订货点)/ 日消耗量的最小整数,算出库存还可继续维持的天数,并且在该日期后再产生计划订单。

3)与实际的需求日期没有关系。

1)计划订单量=固定/经济批量指定的数量。

2)与实际的需求数量和需求日期没有关系。

MRP提前期=固定提前期

其中建议将固定提前期按如下公式进行设置:

固定提前期=(再订货点-安全库存)/日消耗量。

 

2)MRP运算逻辑

  • 输入

a.主生产计划MPS:回答最终生产交付什么,生产多少,什么时候生产完成可以交付?

MPS即成品的计划订单,此计划订单中有相应的成品需求数量、交付时间、以及基于提前期计算反推出来的计划订单发出日期release date,是MRP计算的主要输入信息,主生产计划MPS驱动生成物料需求计划MRP,再由MRP生成加工件的生产计划和外购件的采购计划。

b.物料清单BOM:回答生产成品需要采购/生产哪些零部件物料、多少量、需要什么时间交付?

物料清单BOM是最终成品的结构描述,表明组成最终成品的部件、零件以及原材料之间的结构关系和数量关系,是由MPS展开推算MRP物料需求的关键依据。

c.库存状况Inventory:回答零部件物料目前库存水位有多少,是否设有安全库存,在途订单有多少,交付周期有多久?

MPS按物料清单BOM展开后计算获得物料的粗需求量(gross requirements),需要冲减掉现有库存量(包括安全库存量、在途库存量),才能获得物料的净需求量。

d.订购方法:基于物料的净需求量,再根据零部件物料的订购方法(直接批量法/固定批量法等),确定计划订单的生产/采购批量大小。

e.提前期Lead time: MPS的需求时间减去零部件物料的生产/采购提前期,获得物料的需求时间(计划订单发出时间)。

  • 计算逻辑

1)计算需求总量:根据最终产品MPS主生产计划,基于产品BOM的物料清单结构层层展开,自动计算汇总出各个零部件物料的需求总量,即生成粗物料需求计划(gross material requirements)。

2)计算净需求量:第一步产生的物料需求没有考虑物料的库存情况,需要对总需求量冲减掉现有库存(包括安全库存、在途/在制库存量),然后生成净物料需求计划(net material requirements)。

净需求量=总需求量+安全库存量-现有库存量-在途量(预计到货量)

3)计算计划订单数量:在经过上述的MPS、BOM、库存三大维度的综合计算后,获得物料净需求量,再根据物料的订货方法来确定每次生产或者采购的批量大小,即计算需要生成多少数量的计划订单来满足物料需求。

4)计算物料需求时间:最后根据MPS最终成品的需求时间,减去物料的生产/采购提前期,计算得出物料的需求时间,最终生成以及锁定物料需求计划。

  • 输出

根据物料的制造模式是自制加工件还是外购件,生成需求计划类型为“生产计划”或者“采购订单”(Planned production/Purchase orders)的物料需求计划,后续由PMC角色基于库存情况、交付情况转换生成相应的生产订单或采购订单,分别输出给生产部门和采购部门做执行动作。

(二)总体配置流程

下面介绍在华为云数字工厂平台,如何配置实现MRP计算生成物料需求计划,总体配置流程如下:

本期为了简化配置步骤说明,案例中做了以下适当简化:1)物料的订货方法固定采用“直接批量法”,2)仅使用 “提前期”、“最小订货量”和“安全库存量” 3个MRP计算相关配置参数。

(三)详细配置步骤

1)MRP相关信息模型配置

  • 扩展“物料”产品模型,增加相关字段

使用华为云数字工厂企业平台的“建模工作台>产品模型”系统功能,我们对预置的“物料”产品模型进行扩展字段,补充MRP计算参数所对应的物料主数据字段。

在扩展“物料”信息模型之前,需要先停用模型,然后点击信息模型的“编辑器”图标,进入“信息模型配置器”:

新增“MRP计算参数”的相关信息组及信息字段:“订货方法”、“提前期”、“最小订货量”和“安全库存量”:

以下是新增“MRP计算参数”字段的业务含义:

信息字段

业务含义

订货方法

用来根据物料的净需求量,确定物料每次订货的批量规则。常用订货方法有:直接批量法、固定批量、期间订货量和再订货点。

提前期

用来设置物料的前置准备时间,比如对于外购件,用来设置采购提前期;对于自制件,用来设置生产提前期。本期为了简化案例,采用固定提前期,不考虑变动提前期。

最小订货量

用来设置物料起步最小订货量(即计划订单的最小需求量)。

安全库存量

用来设置物料的最小安全库存量。在计算净需求量时,需要考虑物料的安全库存。

“物料”产品模型的字段扩展调整完成后,点击“发布”按钮来使最新模型生效。

  • 新增事务模型,对MRP相关输入输出的动态数据建模

使用华为云数字工厂企业平台的“建模工作台>事务模型”系统功能,我们对MRP相关输入输出所需的动态数据进行建模:MPS主生产计划和MRP物料需求计划。

在“事务模型构建器”中,选择“仓储”领域页签下,新建一个业务场景“MRP管理”,然后在业务场景下:

  • 新增事务模型“MPS主生产计划”

点击信息模型后面的“编辑”图标,配置“MPS主生产计划”模型的信息字段:

  • 新增事务模型“MRP物料需求计划”

新建并配置“MRP物料需求计划”模型的信息字段如下:

“MRP物料需求计划”模型的信息字段除了“物料”等基础字段,主要有:

  1. 需求数量相关:粗需求量、净需求量、计划订货量以及计算冲减库存量所需的中间数量字段:现有库存量、安全库存量、已采购下单数量、已到货入库数量、在途库存量等。
  2. 需求时间相关:需求交付日期、计划订单发出(生产开工)日期。
  3. 状态:MRP需求计划的数据处理状态,“Draft 草稿”:需求计划数据初始创建状态,是MRP计算中间结果数据;“PlanOrder 待发放”:MRP计算输出的最终结果数据,待发放为采购/生产订单;“Released 已发放” :MRP需求计划已转换为采购/生产订单发放到采购/生产部门执行。

这里不再针对每个字段的具体业务含义展开说明。

注:读者想进一步了解华为云数字工厂平台信息模型配置器的详细使用方法,请参考阅读文章:https://bbs.huaweicloud.com/blogs/399084

2)MRP逻辑流程编排

下面我们对“MPS主生产计划”事务模型,扩展新增MRP计算所需的逻辑流程模型,然后使用“逻辑编排器”来编排MRP计算逻辑,完成“MRP计算”所需的业务逻辑建模配置。

  • 新增操作“运行MRP”

在“MPS主生产计划”事务模型“操作”页签下,新增操作“运行MRP”,即在“MPS主生产计划”的前端页面生成一个用户按钮,用来手工触发执行“MRP计算”流程:

  • 新增逻辑流程“MRP计算”

在新增“操作”窗口可选择“保存并配置逻辑流”,自动触发为新增的“运行MRP”操作创建一个的逻辑流程,输入新建逻辑流页面所需信息后,点击确定后进入“逻辑编排器”进行“MRP计算”的逻辑流程编排:

(1)触发器配置

“触发器类型”自动默认选择“事务操作”,“触发对象”自动默认选择上一步新增的“运行MRP”操作,“触发器名称”可使用默认名称或者按业务含义修改。

(2)添加动作节点“计算需求总量”

动态节点的“输出类型”选“更新数据”并勾选“无匹配则创建数据”,“输出模型”选择 “MRP物料需求计划”,“动作节点名称”输入有业务含义的内容“计算需求总量”:

点击“计算需求总量”动作节点,进入“动作配置器”,编排动作节点的数据转换逻辑:

a.依据输入的MPS主生产计划的产品信息,按产品的BOM结构展开零部件物料清单,然后计算物料需求总量=BOM物料的装配数量*MPS主计划数量。

b.基于BOM关联获取物料主数据信息(制造方式和现有库存量等),获取MRP计算相关参数值:订货方法、最小订货量、安全库存量和提前期等,并且按物料的制造方式(外购件/自制件)过滤BOM物料数据。

c.最后按相同的物料和需求日期聚合汇总需求量获得物料粗需求计划后,配置输出目标模型“物料需求计划”字段的“数据映射逻辑”,实现将物料粗需求计划数据输出到“物料需求计划”中暂存:

输出模型配置中,将“来源主计划”和“物料”两个字段勾选为过滤字段,实现在每次运行“MRP计算”时,根据这两个字段值来判断是创建还是更新相应的物料需求计划数据。

(3)添加动作节点“计算中间数量”

动态节点的“输出类型”选“更新数据”,“输出模型”选“物料需求计划”,进入动作节点配置器,我们在输出模型的字段配置内引用标准函数来计算需求物料的在途库存量(预计到货量)所需的相关中间数量:“已采购下单数量”和“已到货入库数量”,以及根据物料提前期计算需求时间(订单发出日期)。

比如“已采购下单数量”,通过拖动引用标准函数“子/被关联数据统计”,来汇总物料关联的“采购订单”事务模型实例数据中的“采购数量”,函数参数配置如下:

物料需求时间“计划订单发出时间”,通过拖动引用标准函数“值自减”来实现:订单发出时间=需求交付日期-物料提前期,函数参数配置如下:

(4)添加动作节点“计算净需求量”

动态节点的“输出类型”选“管道缓存”,进入动作节点配置器,添加以下计算转换节点,根据前面节点计算输出的中间数量来计算:“在途库存量”和“净需求量”。

在途库存量=已采购下单数量-已到货入库数量

净需求量=粗需求量+安全库存量-现有库存量-在途库存量

(5)添加规则节点,对比净需求量与最小订货量,获得并更新“计划订货量”

本期采用“直接批量法”来计算“计划订货量”,判断物料净需求量和最小订货量的相对大小,当物料净需求量>最小订货量,计划订货量=净需求量;当0<物料净需求量<=最小订货量,计划订货量=最小订货量。

根据规则分支判断来获得计划订货量,然后在规则分支后面新增动作节点来输出更新“物料需求计划”的“计划订货量”和“状态”为“待发放”。

注:想进一步了解华为云数字工厂平台逻辑模型编排器的详细使用方法,请参考阅读文章:https://bbs.huaweicloud.com/blogs/399228

至此我们完成了手工运行“MRP计算”的逻辑建模配置工作,MRP计算的最终逻辑流如下:

逻辑流配置完成后,需要启用逻辑流,以及发布“MPS主生产计划”事务模型。

3)定时运行MRP

在实际业务中,通常需要定时每天自动运行MRP计算生成物料需求计划,下面我们介绍 “定时运行”MRP计算的配置方法。

复制已创建的“运行MRP”逻辑流:

然后点击复制生成的逻辑流右侧的“编辑”操作,修改逻辑流的名称为“定时运行MRP”,最后点击“配置”操作进入逻辑流编排器,修改逻辑流的触发器:

 “触发器类型”选择“定时触发”;“触发对象”选择逻辑流的输入数据来源模型“MPS主生产计划”,根据实际需求可配置“过滤规则”来约束逻辑流程的输入数据范围(比如限定MPS主生产计划的数据状态为“未发放”);“任务周期”可选择“每天”;“计划开始日期”配置第一次运行MRP的时间,“计划终止日期”用来配置什么时间终止运行MRP,可留空;“触发器名称”可修改有业务含义的名称,比如“每天XX时间运行MRP”。

(四)配置效果验证

1)准备数据

  • 产品和物料主数据

我们在“数据工作台”可以找到与使用“产品”、“物料”的功能实例,来准备验证MRP计算所需的相关产品/物料主数据。

先使用“制造资源>物料”功能,准备一些零部件物料主数据,并配置物料的“MRP计算参数”相关字段值:

然后使用“产品”功能,准备一条产成品数据,并组合使用以上物料,来维护产品BOM结构数据:

  • MPS主生产计划数据

我们在“协同工作台”可以找到与使用已发布的业务场景应用“MRP管理”,以及事务模型“MPS主生产计划”和“MRP物料需求计划”生成的功能实例。

MPS主生产计划数据与MRP物料需求计划数据来源相似,通常是根据产成品的销售预测数据、客户订单数据和产成品的库存状况来自动运算生成。

本期为了简化案例演示,手工创建一条产品的主生产计划数据,录入“产品”、“需求数量”和“需求日期”等字段信息,然后保存数据。

2)手工运行MRP

进入新创建的MPS主生产计划数据的详情页面,点击“运行MRP”操作按钮,触发运行“MRP计算”:

3)验证数据

运行完成后,在“MPS主生产计划”页面或者前往“MRP物料需求计划”功能,可以查看生成的MRP物料需求计划数据,验证“计划订货量”、“需求交付日期”、“订单发出日期”等需求数量和时间是否符合业务预期。

华为云数字工厂平台,以轻量级一体式制造应用生成引擎和IT/OT全域统一数据底座为核心,打造开放式的数字工厂aPaaS平台,帮助中小制造企业构建敏捷型的统一制造协同应用平台。企业用户使用华为云数字工平台提供的强大易用的信息数据模型和逻辑流程模型配置器来自主开发迭代数字化应用,灵活满足企业各类个性化需求、持续优化企业的生产业务与运营流程。

点击关注,第一时间了解华为云新鲜技术~

建设数字工厂:MRP物料需求计划的逻辑原理与配置方法的更多相关文章

  1. css划隔横线的两种方法

    css划隔横线的两种方法  方法一:用DIV,代码如下:(推荐此方法)    <div style="width:800px;height:1px;margin:0px auto;pa ...

  2. Excel 逻辑函数if使用方法

    Excel 逻辑函数if使用方法

  3. java算法:统计数字-将数字转换成字符串,然后使用字符串String.valueOf()方法进行判断

    题目: 计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值. 样例 样例 1: 输入: k = 1, n = 1 输出: 1 解释: 在 [0, 1] 中,我们发现 1 出现了 ...

  4. mysqldump 逻辑备份的正确方法【转】

    1. 利用mysqldump进行逻辑备份 1)全逻辑备份: mysqldump -uxxx -p --flush-logs --delete-master-logs --all-databases & ...

  5. 1.2.1LVM逻辑卷镜像实现方法

    LVM逻辑卷镜像实现方法 本文演示了在CentOS5系统中实现LVM逻辑卷镜像的方法.LVM的镜像功能,有点儿类似于Raid1,即多块儿磁盘互相同步,确保资料不会丢失. 创建物理卷,卷组的步骤这里就先 ...

  6. JS中 逻辑或 || 逻辑与 && 的使用方法总结

    JS中 逻辑或 || 逻辑与 && 的使用方法总结 //1.在if判断中 //if(1==1 || 2==3){}//->两个条件中只要有一个条件为真,整体就为真 "或 ...

  7. 【黑马JavaSE】1.2.算术\赋值\比较\逻辑\三元运算符、方法入门、JShell编译器

    文章目录 1_1_6_05_算术运算符_四则与取模运算 1_1_6_06_算术运算符_加号的多种 1_1_6_07_算术运算符_自增自减运算 1_1_6_08_赋值运算符 这里挺关键的,为什么一个by ...

  8. 加快MySQL逻辑恢复速度的方法和参数总结

    日常工作中经常会有需要从mysqldump导出的备份文件恢复数据库的情况,相比物理备份恢复这种方式在恢复时间上往往显得力不从心. 本文就总结了几个对于逻辑备份恢复有加速作用的参数和操作 注意:我们的大 ...

  9. js关于对象键值为数字型时输出的对象自动排序问题的解决方法

    一.对象键值为数字型时输出的对象自动排序问题如: var objs = {    "1603":{id:"1603"},    "1702" ...

  10. python数字图像处理(1):环境安装与配置

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

随机推荐

  1. 快速上手Linux核心命令(十):Linux安装软件

    目录 前言 rpm rpm包管理器 yum 自动化RPM包管理工具 前言 这期呢主要说一说Linux中包软件管理相关命令,这一期的命令虽然只有两个.但 软件包的安装和卸载都是我们平常最常用的,需要熟练 ...

  2. java镜子之反射篇

    文章目录 注解 内置注解 元注解 反射 类的初始化 类加载器 双亲委派机制 反射方法的使用 调用类的方法.成员变量.构造器等 总结 注解和反射是Java中非常重要的知识,一些优秀开源的框架都是大量运用 ...

  3. 2021-08-22:定义什么是可整合数组:一个数组排完序之后,除了最左侧的数外,有arr[i] = arr[i-1]+1,则称这个数组为可整合数组,比如{5,1,2,4,3}、{6,2,3,1,5,

    2021-08-22:定义什么是可整合数组:一个数组排完序之后,除了最左侧的数外,有arr[i] = arr[i-1]+1,则称这个数组为可整合数组,比如{5,1,2,4,3}.{6,2,3,1,5, ...

  4. C语言之环形队列

    一.环形队列的优势 环形队列是一种特殊的队列,它可以解决普通队列在使用时空间利用不充分的问题.在环形队列中,当队列满时,队列的尾指针指向队列的起始位置,而不是指向队列的最后一个元素.这样可以在不浪费空 ...

  5. vue工程内下载路由

    一.路由Router Vue Router 是Vue.js官方的路由管理器.它和Vue.js的核心深度集成,加速构建单页面应用.包含功能有: 1 嵌套的路由/视图表 2 模块化的.基于组件的路由配置 ...

  6. 在开发过程中使用git rebase还是git merge,优缺点分别是什么?

    前言 在开发过程中,git rebase 和 git merge 都是常见的代码版本管理工具.它们都能够将分支合并到主分支,并且都有各自的优缺点. git merge git merge 是一种将两个 ...

  7. < Python全景系列-5 > 解锁Python并发编程:多线程和多进程的神秘面纱揭晓

    欢迎来到我们的系列博客<Python全景系列>!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法.无论你是编程新手,还是有一 ...

  8. CF1583H Omkar and Tours 题解

    题意: 给定一个 \(n\) 个点的树,每条边有权值 \(t\) 和 \(c\).一条路径的权值为所经过节点的 \(\max(c)\). 每个点有权值 \(e\). 给出 \(q\) 个询问,每次询问 ...

  9. 发现了阿里云 APP 的一个小 BUG

    由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. 前几天在华为手机上使用阿里云 APP,从 oss bucket 中下载了一张图片,想要通过微信 ...

  10. Hello Welcome to my blog!

    Hello Welcome to my blog!