闲人闲谈PS之五十三——离散制造中的魔鬼--物料套裁
惯例闲话:最近和老婆大人商议买车事宜,闲人以为会陷入买油车还是电车的纠结,没想到老婆大人无比坚定,买电车。在买车这方面,老婆的想法居然比闲人超前。闲人对车定位在代步工具,2年前,对车还是印象还是停留在油车靠谱,电池能源密度低、充电时间长。如今再深入了解一下,特别是这次去广汽埃安参观超级工厂之后,发现这个汽车世界完全变样了。所以还是支持了老婆大人的买电车想法。小小感叹下这个瞬息万变的时代——意料之外,情理之中。前三次工业革命,关键的特征是对能源使用方式,电力能源虽说兴起于第二次工业革命,但是真正大规模应用还是当下在民用领域,真正被人类玩出了花样。电力的二次升级带来的,是国产车真正能在世界舞台上和其他列强一较高下了。今年中国汽车出口额一跃到首位也可以看出些端倪…好像越说越远了,就是买辆车嘛,嗯,好好工作,多挣钱,过年给老婆买辆车。
闲话到此为止,这次聊聊离散制造企业中魔鬼问题——物料套裁
关于套裁的一些背景知识
套裁,有些场合称之为套料,这是离散制造行业的一个专用名词,可以说,只要对生产过程涉及对材料形状的改变,大部分会涉及到套裁。举个例子,钢结构企业要给客户建造一个将结构雨棚,雨棚的主体结构是由工字钢焊接构成,如下图,最终结构形状。

一般市场某牌号的工字钢是有标准长度的,有6米,7米等常规的标准长度,企业采购某种型号的钢材也会按照标准长度采购,这种标准长度的我们称之为原材料。

设计师根据客户需求完成设计后,EBOM组成如下,成品CP-001,有3中规格的加工件组成,编号、数量、加工长度、料头长度等加工过程所需要的BOM关键信息已输出。
详细清单如下,并指定用18#工字钢来加工

对于供应链来讲,市场上的材料可选长度是有限的,必须要制定采购哪种长度以及数量。
下面是套裁的计算过程:
1、将加工长度和料头拼接成一线
算出来总长度为30+2515+60X4+2380X3+2400+30 = 12355MM

这里只是用简单的长短中顺序排列,实际还有短中长等顺序,会对套裁结果产生影响。
2、假定市场上只有6000MM长度的材料,经过套裁计算,就需要采购3支,方能满足。
购买3支6米的原材料,最终材料的利用率 = 加工长度之和 / 原材料总长度 = 12355 / 18000 = 68.7%
显然买6米长的材料浪费将近33%的材料。

3、假定市场还有其他长度选择,5米的,经过套裁计算,需要采购3支,最终利用率 = 12355 / 15000 = 82.3%
和上面相比,明显利用率增加了
4、再假定极端情况,直接购买12293mm的长度材料,1支,最终利用率将达到 98%。但几乎不可能,钢铁厂不会根据个性化需求来定制尺寸,而且这种长度的材料,运输几乎不可能。
所以最终,企业会根据市场的原材料可选范围、材料利用率,来确定购买什么规格的材料。套裁的最终目的,是提高材料利用率,降低成本。

采购部门拿到上述清单后,要做CP-001成品一个,采购18号H型钢,规格5000长度的3支,下发采购订单执行采购任务。
以上是对于线材的套裁,我们可以称之为一维套裁。还有二维平面套裁,板材加工企业、服装企业较为常见,相比线材,二维套裁的计算复杂,还有三维立体套裁,这种就更加复杂了。
目前金属加工、工程、装备制造等企业,对以上套裁计算过程,有专业套裁软件来执行,如百科、西飞等,这里就不详细展开了。下图为某套裁软件的操作界面

套裁引发的BOM复用问题
上面简单科普了一下套裁基本业务概念。对于离散制造业而言,带来一个十分复杂的问题,由于存在套裁,使得原材料的用量和成品数量之间,并不是线性关系。如下表:

这就带来了一个问题,CP-001是某公司标准产品,但是每次生产数量不一样,那么最底层的原材料用量不等于线性配比。


很多上SAP的企业,没有对BOM采用版本管理,一个物料编码的BOM只能存在一个有效BOM,这就无法解决精准领料的问题。所以,很多聪明的顾问,想到了多种办法来解决这个问题。
解决方案
方案1:一物多码。简单粗暴,每次下生产计划,用同一张图,每次都新建一套成品和半成品编码。这个办法的优势在于简单高效,对于没有系统集成,比如PLM等外围系统的,SAP自己玩自己的,完全可以,S4 HANA 物料编码长度扩展到了40位,所以可以完全不考虑标准化和物料编码的容量。但是现在越来越多的企业设计业务采用PLM来管理,图纸和物料编码一物一码关系,所以这个方案在后续不是主流,而且也不利于企业标准化推行。
方案2:套裁用料不在BOM管理。这是一个从管理手段上解决的方案,半成品之下原材料层,不进BOM结构管理。设计师出图——>SAP生成BOM—>计划部门转工单—>生产部门根据套裁结果手动挂接原材料到工单上——>领料生产。这种方法也很有效,可以和套裁软件做接口,自动和工单挂接等,在一些定制程度高的工程类企业用的比较多,需要管理制度配合落地。

方案3:启用BOM版本管理。BOM版本管理,在SAP里体现为备选物料清单字段

如上图,90040900000000190A成品有4个BOM版本。我们通过BOM展开可以看到这种关系


启用版本之后,可将版本用于每次不同批量的下单,N个批量对应N个BOM版本。

方案4:WBS-BOM,每次下单增加一个WBS,创建WBS-BOM,物料+WBS的维度确定BOM,WBS充当版本的作用,对于项目制企业,如果出现套裁业务,建议走WBS-BOM方式,可以很好融合项目计划。关于WBSBOM的内容,本篇就不详细展开了,在往期的文章、团子、钢柱老师的文章,均有详细内容,大家翻看之前文章即可。

这里分享一个很有意思的地方,WBS-BOM主表PRST,PRST表中也有STLAL BOM版本字段存在,但是你会发现同一个物料号,不同WBSbom,版本号都是01。

在WBSBOM这里版本号,闲人最初的理解是没什么用。用CSP2展开后,有个小发现

2000000000000半成品是个标准BOM,但是WBSbom依然可以展开,展开的版本默认是01。

那我们在建一个02的标准BOM,然后删除01版本,再看测试展开结果。


结果在预料之中,没有被展开。闲人之前的文章混合制BOM展开中有写过WBS-BOM和标准BOM混合结构展开,这个测试结果表明:要实现混合制BOM展开,标准BOM的版本必须为01。PRST-STLAL = 01的作用就是这个功能准备的,但是前提条件版本必须为01。请各位重点标记
结论
BOM多版本使用注意事项
介绍下方案3中的一些使用注意事项。
1、下单的批量和BOM版本务必对一对一关系。
2、从BOM的成品到最后一层半成品,BOM版本号务必保持一致;

3、使用BOM展开函数CS_BOM_EXPL_MAT_V2展开控制。 ALTVO = ‘X’ 务必要赋值,这样展开的BOM才是精准的。否则下层的展开会跑到版本01去。
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'EXPORTINGALTVO = 'X'CAPID = 'PP01'DATUV = SY-DATUMEMENG = '1'MTNRV = LS_MAST-MATNR "物料STLAN = '1'STLAL = LS_MAST-STLALMKTLS = 'X'MEHRS = 'X'WERKS = LS_MAST-WERKS "工厂IMPORTINGTOPMAT = LS_TOPMATTABLESSTB = LT_STBMATCAT = LT_MATCATEXCEPTIONSALT_NOT_FOUND = 1CALL_INVALID = 2MATERIAL_NOT_FOUND = 3MISSING_AUTHORIZATION = 4NO_BOM_FOUND = 5NO_PLANT_DATA = 6NO_SUITABLE_BOM_FOUND = 7OTHERS = 8.
闲人在这里连续用了3个务必,表明在这些年应用中碰到的雷有多大!
小结
回到开始,闲人为何把套裁问题称之为魔鬼问题,BOM不准的后果,大家想必是清楚的,买料、领料、标准成本估算都是错误
小结以上方案,可以看出一个共同的特点,那就通过增加BOM的方式来解决。选取什么样的方案,取决于企业标准化程度,闲人推荐的方案是3,4。项目型制造业务,推荐用WBS-BOM。方案4的标准成本估算可以基于物料+WBS,而方案3通常情况下对01版本BOM做标准成本估算,只有增强才能做可选。所以想要成本估算准确,也是推荐用方案4。
相关文章:
闲人闲谈PS之五十三——离散制造中的魔鬼--物料套裁
惯例闲话:最近和老婆大人商议买车事宜,闲人以为会陷入买油车还是电车的纠结,没想到老婆大人无比坚定,买电车。在买车这方面,老婆的想法居然比闲人超前。闲人对车定位在代步工具,2年前,对车还是印…...
Dell服务器iDRAC9忘记密码, 通过RACADM工具不重启 重置密码
系列文章目录 文章目录 系列文章目录前言一、RACADM工具二、linux环境1.解压安装RACADM工具测试RACADM工具重置iDRAC密码 Windows环境 前言 一、RACADM工具 RACADM工具 官网参考信息 https://www.dell.com/support/kbdoc/zh-cn/000126703/%E5%A6%82%E4%BD%95-%E9%87%8D%E7%BD…...
2024年Java架构篇之数据结构与算法面试题
2024年Java实战面试题_java 5 年 面试-CSDN博客 2024年Java架构篇之数据结构与算法面试题 1、判断一个数是否是2的N次方,比如2、4、8、16是6、10不是 1:01、2:10、3:011、4:100、7:0111、8:1000、15:01111、16:10000 if(n&(n-1) 0) 那么n就是2的次方 n > 1...
蓝桥杯刷题day06——平均
1、题目描述 有一个长度为n 的数组(n 是 10 的倍数),每个数ai都是区间 [0,9] 中的整数。 小明发现数组里每种数出现的次数不太平均,而更改第i 个数的代价为bi, 他想更改若干个数的值使得这10 种数出现的次数相等&…...
MySQL分区的优缺点
前言 数据库中的分区技术为处理大规模数据提供了一种有效的手段,通过将数据划分成更小的可管理单元,我们能够提高查询性能、简化数据维护并更灵活地管理存储空间。然而,在采用分区时,我们必须认真考虑分区键的选择和实施细节&…...
2023年度总结
目录 工作读书生活展望 用一百分总结这一年,给自己打80分。 这一年中中常常,坚持踏踏实实走好每一步。 工作 项目上,先后经历了「从库恢复后自动上线」、「主动切换RTO优化」、「MGR高可用统一」,以及高可用稳定性建设等。另外&…...
aspose-words在linux上安装字体
大多数情况下,使用 Aspose.Words 将 DOC 或 DOCX 文档转换为 PDF 格式。如果需要在 Linux 计算机上执行此操作,确保 Aspose.Words 以最佳准确性渲染文档。 最常见的是,需要转换的 DOC 和 DOCX 文档是在 Windows 或 Mac OS 操作系统上使用 Microsoft Word 创建的。因此,DOC…...
SpringBoot实战项目第一天
环境搭建 后端部分需要准备: sql数据库 创建SpringBoot工程,引入对应的依赖(web\mybatis\mysql驱动) 配置文件application.yml中引入mybatis的配置信息 创建包结构,并准备实体类 完成今日开发后项目部分内容如下图示 用户注册于登录部分…...
C# 信号量(Semaphore)详细使用案例
文章目录 简介信号量的工作原理使用场景使用示例其他使用实例1. 数据库连接池管理2. 文件读写同步3. 生产者消费者问题4. 打印任务队列同步5. Web服务器并发请求限制 简介 在C#中,信号量(Semaphore)是.NET框架提供的一个同步类,位…...
《Docker极简教程》--Docker基础--Docker的基本概念
在这篇文章中我们先大致的了解以下Docker的基本概念,在后续的文章中我们会详细的讲解这些概念以及使用。 一、容器(Container) 1.1 容器的定义和特点 容器的定义 容器是一种轻量级、可移植的软件打包技术,用于打包应用及其依赖项和运行环境,…...
【AIGC核心技术剖析】DreamCraft3D一种层次化的3D内容生成方法
DreamCraft3D是一种用于生成高保真、连贯3D对象的层次化3D内容生成方法。它利用2D参考图像引导几何塑造和纹理增强阶段,通过视角相关扩散模型执行得分蒸馏采样,解决了现有方法中存在的一致性问题。使用Bootstrapped Score Distillation来提高纹理&#x…...
新版MQL语言程序设计:外观模式的原理、应用及代码实现
文章目录 一、什么是外观模式二、外观模式的实现原理三、外观模式的应用范围四、外观模式应用实例银行系统的设计量化交易系统的设计 五、外观模式的代码实现 一、什么是外观模式 外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个…...
Docker 搭建mysql 集群(二)
PXC方案 很明显 PXC方案在任何一个节点写入的数据都会同步到其他节点,数据双向同步的(在任何节点上都可以同时读写) 创建MySQL PXC集群 1 安装PXC镜像 docker pull percona/percona-xtradb-cluster:5.7.21 2 为PXC镜像改名 docker tag pe…...
L1-018 大笨钟-java
输入样例1: 19:05输出样例1: DangDangDangDangDangDangDangDang输入样例2: 07:05输出样例2: Only 07:05. Too early to Dang. java import java.awt.desktop.SystemEventListener; import java.util.Scanner;public class M…...
monaco-editor布局篇(二)-自动换行
monaco-editor的换行方式,主要分为3种情况: 不换行按照编辑器宽度换行按照制定列数换行 主要受wordwrap和wordwrapcolumn控制,具体如下: 取值含义off不换行,会一直滚动on换行,文本将在视区宽度内自动换行…...
08-常用集合(容器)
上一篇: 07-使用Package、Crates、Modules管理项目 Rust 的标准库包含许多非常有用的数据结构,称为集合。大多数其他数据类型表示一个特定值,但集合可以包含多个值。与内置的数组和元组类型不同,这些集合指向的数据存储在堆上&…...
CentOS 中文乱码
CentOS 中文乱码 1、 查看自己系统有没有安装中文语言包,可使用 locale -a 命令列出所有可用的语言环境 如果有中文,则不用安装,如果没有,需要重新安装,使用 yum install kde-l10n-Chinese 2、 修改 i18n 和 locale…...
Java List中对象根据id去重,并处理重复对象的某个字段
List中对象根据id去重 一、需求二、解决 一、需求 参考文章:https://blog.csdn.net/A_Gui_Code/article/details/106978867 对在list集合中对象根据主键id去重,同时需要对重复对象的某个字段进行单独处理。 例如,对象包含字段如下, 当某个对象重复时&a…...
小周学JAVA—八股六
自动装箱和拆箱 Java中基础数据类型与它们对应的包装类见下表: 原始类型包装类型booleanBooleanbyteBytecharCharacterfloatFloatintIntegerlongLongshortShortdoubleDouble 装箱:将基础类型转化为包装类型。 拆箱:将包装类型转化为基础类…...
【深度学习】从0完整讲透深度学习第2篇:TensorFlow介绍和基本操作(代码文档已分享)
本系列文章md笔记(已分享)主要讨论深度学习相关知识。可以让大家熟练掌握机器学习基础,如分类、回归(含代码),熟练掌握numpy,pandas,sklearn等框架使用。在算法上,掌握神经网络的数学原理,手动实…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
