闲人闲谈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等框架使用。在算法上,掌握神经网络的数学原理,手动实…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
